Skip to content
  • Home
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. JavaScript
  5. Erster Versuch ein JSON zu erzeugen

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.7k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    2.2k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    16
    1
    3.1k

Erster Versuch ein JSON zu erzeugen

Scheduled Pinned Locked Moved JavaScript
35 Posts 2 Posters 2.2k Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • paul53P paul53

    @chris76e sagte: fehlt also noch das Programm

    Ohne Error- oder Warn-Log?
    Füge mal Logs ein (hinter Zeile 11):

            log(getState(idProg).val);
            log(getObject(idProg).common.states[getState(idProg).val]);
    
    Chris76eC Online
    Chris76eC Online
    Chris76e
    wrote on last edited by
    #8

    @paul53

    Wenn Spülmaschiene Startet kommt das im Log

    00:23:34.096	info	javascript.0 (649) script.js.common.JSON.JASONSP: null
    00:23:34.097	info	javascript.0 (649) script.js.common.JSON.JASONSP: undefined
    
    paul53P 1 Reply Last reply
    0
    • Chris76eC Chris76e

      @paul53

      Wenn Spülmaschiene Startet kommt das im Log

      00:23:34.096	info	javascript.0 (649) script.js.common.JSON.JASONSP: null
      00:23:34.097	info	javascript.0 (649) script.js.common.JSON.JASONSP: undefined
      
      paul53P Offline
      paul53P Offline
      paul53
      wrote on last edited by
      #9

      @chris76e sagte: kommt das im Log

      Dann verschiebe mal Zeile 11 unter Zeile 12 (else if).

      Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
      Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

      Chris76eC 2 Replies Last reply
      0
      • paul53P paul53

        @chris76e sagte: kommt das im Log

        Dann verschiebe mal Zeile 11 unter Zeile 12 (else if).

        Chris76eC Online
        Chris76eC Online
        Chris76e
        wrote on last edited by
        #10

        @paul53

        Da ist das selbe....

        00:43:45.727	info	javascript.0 (649) script.js.common.JSON.JASONSP: null
        00:43:45.728	info	javascript.0 (649) script.js.common.JSON.JASONSP: undefined
        
        const idTable = '0_userdata.0.JSON.Spülmaschiene'; // ID JSON-Tabelle
        const idStatus = 'homeconnect.0.011040388898000963.status.BSH_Common_Status_OperationState';
        const idProg = 'homeconnect.0.011040388898000963.programs.active.BSH_Common_Root_ActiveProgram';
        
        var table = [];
        if(getState(idTable).val) table = JSON.parse(getState(idTable).val);
        var obj = {};
        on(idStatus, function(dp) {
            if(dp.state.val == 'BSH.Common.EnumType.OperationState.Run') {
                obj.Start = formatDate(new Date(), 'DD.MM.YY hh:mm');   
            } else if(dp.oldState.val == 'BSH.Common.EnumType.OperationState.Run') {
                obj.Programm = getObject(idProg).common.states[getState(idProg).val];
                obj.Ende = formatDate(new Date(), 'DD.MM.YY hh:mm');
                table.push(obj);
                if(table.length > 10) table.shift();
                setState(idTable, JSON.stringify(table), true);
        
                log(getState(idProg).val);
                log(getObject(idProg).common.states[getState(idProg).val]);
            }
        });
        
        1 Reply Last reply
        0
        • Chris76eC Online
          Chris76eC Online
          Chris76e
          wrote on last edited by
          #11

          Vieleicht hilft das dir noch weiter, die Objektdaten von

          {
            "type": "state",
            "common": {
              "name": "BSH_Common_Root_ActiveProgram",
              "type": "string",
              "role": "indicator",
              "write": true,
              "read": true,
              "states": {
                "Dishcare.Dishwasher.Program.Intensiv70": "Intensiv 70°",
                "Dishcare.Dishwasher.Program.Auto2": "Auto 45-65°",
                "Dishcare.Dishwasher.Program.Eco50": "Eco 50°",
                "Dishcare.Dishwasher.Program.Quick45": "Speed 45°",
                "Dishcare.Dishwasher.Program.PreRinse": "Vorspülen",
                "Dishcare.Dishwasher.Program.Quick65": "Speed 65°",
                "Dishcare.Dishwasher.Program.MachineCare": "Maschinenpflege"
              },
              "custom": {
                "history.0": {
                  "enabled": true,
                  "aliasId": "",
                  "debounceTime": 0,
                  "blockTime": 0,
                  "changesOnly": false,
                  "changesRelogInterval": 0,
                  "changesMinDelta": 0,
                  "ignoreBelowNumber": "",
                  "disableSkippedValueLogging": false,
                  "retention": 31536000,
                  "customRetentionDuration": 365,
                  "maxLength": 10,
                  "enableDebugLogs": false,
                  "debounce": 0
                }
              }
            },
            "native": {},
            "_id": "homeconnect.0.011040388898000963.programs.active.BSH_Common_Root_ActiveProgram",
            "acl": {
              "object": 1636,
              "state": 1636,
              "owner": "system.user.admin",
              "ownerGroup": "system.group.administrator"
            },
            "from": "system.adapter.homeconnect.0",
            "user": "system.user.admin",
            "ts": 1662416101983
          }
          
          1 Reply Last reply
          0
          • paul53P paul53

            @chris76e sagte: kommt das im Log

            Dann verschiebe mal Zeile 11 unter Zeile 12 (else if).

            Chris76eC Online
            Chris76eC Online
            Chris76e
            wrote on last edited by Chris76e
            #12

            @paul53

            Bin jetzt einwenig weiter gekommen, wenn ich den DP

            homeconnect.0.011040388898000963.programs.selected.BSH_Common_Root_SelectedProgram
            

            nehme, dann wird der erkannt.

            Aber mit der Schleife ist nochwas nicht richtig. Hier werden Daten überschrieben

            [
              {
                "Start": "06.09.22 00:42",
                "Ende": "06.09.22 00:43"
              },
              {
                "Start": "06.09.22 09:25",
                "Ende": "06.09.22 09:25",
                "Programm": "Eco 50°"
              },
              {
                "Start": "06.09.22 09:25",
                "Ende": "06.09.22 09:25",
                "Programm": "Eco 50°"
              }
            ]
            
            [
                {
                "Start": "06.09.22 00:42",
                "Ende": "06.09.22 00:43"
              },
              {
                "Start": "06.09.22 09:28",
                "Ende": "06.09.22 09:28",
                "Programm": "Speed 45°"
              },
              {
                "Start": "06.09.22 09:28",
                "Ende": "06.09.22 09:28",
                "Programm": "Speed 45°"
              },
              {
                "Start": "06.09.22 09:28",
                "Ende": "06.09.22 09:28",
                "Programm": "Speed 45°"
              }
            ]
            
            const idTable = '0_userdata.0.JSON.Spülmaschiene'; // ID JSON-Tabelle
            const idStatus = 'homeconnect.0.011040388898000963.status.BSH_Common_Status_OperationState';
            const idProg = 'homeconnect.0.011040388898000963.programs.selected.BSH_Common_Root_SelectedProgram';
            
            var table = [];
            if(getState(idTable).val) table = JSON.parse(getState(idTable).val);
            var obj = {};
            on(idStatus, function(dp) {
                if(dp.state.val == 'BSH.Common.EnumType.OperationState.Run') {
                    obj.Start = formatDate(new Date(), 'DD.MM.YY hh:mm'); 
                    obj.Programm = getObject(idProg).common.states[getState(idProg).val];
                 
            
                    log(getState(idProg).val);
                    log(getObject(idProg).common.states[getState(idProg).val]);
                } else if(dp.oldState.val == 'BSH.Common.EnumType.OperationState.Run') {
                    obj.Ende = formatDate(new Date(), 'DD.MM.YY hh:mm');
                    table.push(obj);
                    if(table.length > 10) table.shift();
                    setState(idTable, JSON.stringify(table), true);
            
                }
            });
            
            Chris76eC 1 Reply Last reply
            0
            • Chris76eC Chris76e

              @paul53

              Bin jetzt einwenig weiter gekommen, wenn ich den DP

              homeconnect.0.011040388898000963.programs.selected.BSH_Common_Root_SelectedProgram
              

              nehme, dann wird der erkannt.

              Aber mit der Schleife ist nochwas nicht richtig. Hier werden Daten überschrieben

              [
                {
                  "Start": "06.09.22 00:42",
                  "Ende": "06.09.22 00:43"
                },
                {
                  "Start": "06.09.22 09:25",
                  "Ende": "06.09.22 09:25",
                  "Programm": "Eco 50°"
                },
                {
                  "Start": "06.09.22 09:25",
                  "Ende": "06.09.22 09:25",
                  "Programm": "Eco 50°"
                }
              ]
              
              [
                  {
                  "Start": "06.09.22 00:42",
                  "Ende": "06.09.22 00:43"
                },
                {
                  "Start": "06.09.22 09:28",
                  "Ende": "06.09.22 09:28",
                  "Programm": "Speed 45°"
                },
                {
                  "Start": "06.09.22 09:28",
                  "Ende": "06.09.22 09:28",
                  "Programm": "Speed 45°"
                },
                {
                  "Start": "06.09.22 09:28",
                  "Ende": "06.09.22 09:28",
                  "Programm": "Speed 45°"
                }
              ]
              
              const idTable = '0_userdata.0.JSON.Spülmaschiene'; // ID JSON-Tabelle
              const idStatus = 'homeconnect.0.011040388898000963.status.BSH_Common_Status_OperationState';
              const idProg = 'homeconnect.0.011040388898000963.programs.selected.BSH_Common_Root_SelectedProgram';
              
              var table = [];
              if(getState(idTable).val) table = JSON.parse(getState(idTable).val);
              var obj = {};
              on(idStatus, function(dp) {
                  if(dp.state.val == 'BSH.Common.EnumType.OperationState.Run') {
                      obj.Start = formatDate(new Date(), 'DD.MM.YY hh:mm'); 
                      obj.Programm = getObject(idProg).common.states[getState(idProg).val];
                   
              
                      log(getState(idProg).val);
                      log(getObject(idProg).common.states[getState(idProg).val]);
                  } else if(dp.oldState.val == 'BSH.Common.EnumType.OperationState.Run') {
                      obj.Ende = formatDate(new Date(), 'DD.MM.YY hh:mm');
                      table.push(obj);
                      if(table.length > 10) table.shift();
                      setState(idTable, JSON.stringify(table), true);
              
                  }
              });
              
              Chris76eC Online
              Chris76eC Online
              Chris76e
              wrote on last edited by Chris76e
              #13

              Habe vermutlich zuschnell das Programm am GS gestoppt.

              Habe es jetzt einwenig länger laufen lassen und dann wird richtig geschrieben.

                {
                  "Start": "06.09.22 10:09",
                  "Programm": "Auto 45-65°",
                  "Ende": "06.09.22 10:11"
                },
                {
                  "Start": "06.09.22 10:09",
                  "Programm": "Auto 45-65°",
                  "Ende": "06.09.22 10:11"
                },
                {
                  "Start": "06.09.22 10:09",
                  "Programm": "Auto 45-65°",
                  "Ende": "06.09.22 10:11"
                },
                {
                  "Start": "06.09.22 10:09",
                  "Programm": "Auto 45-65°",
                  "Ende": "06.09.22 10:11"
                },
                {
                  "Start": "06.09.22 10:13",
                  "Programm": "Eco 50°",
                  "Ende": "06.09.22 10:20"
                }
              ]
              
              1 Reply Last reply
              0
              • paul53P paul53

                @chris76e sagte: fehlt also noch das Programm

                Ohne Error- oder Warn-Log?
                Füge mal Logs ein (hinter Zeile 11):

                        log(getState(idProg).val);
                        log(getObject(idProg).common.states[getState(idProg).val]);
                
                Chris76eC Online
                Chris76eC Online
                Chris76e
                wrote on last edited by
                #14

                @paul53

                Kannst du dir nochmal bitte die schleife anschauen? Irgendwas stimmt da doch nicht.

                Es werden weiter Dopelte Einträge gemacht, bzw. alte Einträge überschrieben.

                [
                  {
                    "Start": "06.09.22 09:28",
                    "Ende": "06.09.22 09:28",
                    "Programm": "Speed 45°"
                  },
                  {
                    "Start": "06.09.22 09:28",
                    "Ende": "06.09.22 09:28",
                    "Programm": "Speed 45°"
                  },
                  {
                    "Start": "06.09.22 09:49",
                    "Programm": "Intensiv 70°",
                    "Ende": "06.09.22 09:49"
                  },
                  {
                    "Start": "06.09.22 09:49",
                    "Programm": "Intensiv 70°",
                    "Ende": "06.09.22 09:49"
                  },
                  {
                    "Start": "06.09.22 10:09",
                    "Programm": "Auto 45-65°",
                    "Ende": "06.09.22 10:11"
                  },
                  {
                    "Start": "06.09.22 10:09",
                    "Programm": "Auto 45-65°",
                    "Ende": "06.09.22 10:11"
                  },
                  {
                    "Start": "06.09.22 10:09",
                    "Programm": "Auto 45-65°",
                    "Ende": "06.09.22 10:11"
                  },
                  {
                    "Start": "06.09.22 10:09",
                    "Programm": "Auto 45-65°",
                    "Ende": "06.09.22 10:11"
                  },
                  {
                    "Start": "06.09.22 10:31",
                    "Programm": "Eco 50°",
                    "Ende": "06.09.22 15:08"
                  },
                  {
                    "Start": "06.09.22 10:31",
                    "Programm": "Eco 50°",
                    "Ende": "06.09.22 15:08"
                  }
                ]
                
                paul53P 1 Reply Last reply
                0
                • Chris76eC Chris76e

                  @paul53

                  Kannst du dir nochmal bitte die schleife anschauen? Irgendwas stimmt da doch nicht.

                  Es werden weiter Dopelte Einträge gemacht, bzw. alte Einträge überschrieben.

                  [
                    {
                      "Start": "06.09.22 09:28",
                      "Ende": "06.09.22 09:28",
                      "Programm": "Speed 45°"
                    },
                    {
                      "Start": "06.09.22 09:28",
                      "Ende": "06.09.22 09:28",
                      "Programm": "Speed 45°"
                    },
                    {
                      "Start": "06.09.22 09:49",
                      "Programm": "Intensiv 70°",
                      "Ende": "06.09.22 09:49"
                    },
                    {
                      "Start": "06.09.22 09:49",
                      "Programm": "Intensiv 70°",
                      "Ende": "06.09.22 09:49"
                    },
                    {
                      "Start": "06.09.22 10:09",
                      "Programm": "Auto 45-65°",
                      "Ende": "06.09.22 10:11"
                    },
                    {
                      "Start": "06.09.22 10:09",
                      "Programm": "Auto 45-65°",
                      "Ende": "06.09.22 10:11"
                    },
                    {
                      "Start": "06.09.22 10:09",
                      "Programm": "Auto 45-65°",
                      "Ende": "06.09.22 10:11"
                    },
                    {
                      "Start": "06.09.22 10:09",
                      "Programm": "Auto 45-65°",
                      "Ende": "06.09.22 10:11"
                    },
                    {
                      "Start": "06.09.22 10:31",
                      "Programm": "Eco 50°",
                      "Ende": "06.09.22 15:08"
                    },
                    {
                      "Start": "06.09.22 10:31",
                      "Programm": "Eco 50°",
                      "Ende": "06.09.22 15:08"
                    }
                  ]
                  
                  paul53P Offline
                  paul53P Offline
                  paul53
                  wrote on last edited by
                  #15

                  @chris76e sagte: Es werden weiter Dopelte Einträge gemacht

                  Das kann nur am Verhalten des Datenpunktes "homeconnect.0.011040388898000963.status.BSH_Common_Status_OperationState" liegen". Logge mal den Wert bei jedem Trigger-Ereignis.

                  Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                  Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                  Chris76eC 1 Reply Last reply
                  0
                  • paul53P paul53

                    @chris76e sagte: Es werden weiter Dopelte Einträge gemacht

                    Das kann nur am Verhalten des Datenpunktes "homeconnect.0.011040388898000963.status.BSH_Common_Status_OperationState" liegen". Logge mal den Wert bei jedem Trigger-Ereignis.

                    Chris76eC Online
                    Chris76eC Online
                    Chris76e
                    wrote on last edited by
                    #16

                    @paul53

                    Hier der Eintrag aus dem Log

                    1. Start war noch ohne log vom Ende
                    20:19:34.230	info	javascript.0 (649) script.js.common.JSON.JASONSP: BSH.Common.EnumType.OperationState.Run
                    20:19:34.231	info	javascript.0 (649) script.js.common.JSON.JASONSP: Run
                    20:19:34.231	info	javascript.0 (649) script.js.common.JSON.JASONSP: Dishcare.Dishwasher.Program.MachineCare
                    20:19:34.231	info	javascript.0 (649) script.js.common.JSON.JASONSP: Maschinenpflege
                    20:27:19.463	info	javascript.0 (649) Stop script script.js.common.JSON.JASONSP
                    20:27:19.466	info	javascript.0 (649) Start javascript script.js.common.JSON.JASONSP
                    20:27:19.479	info	javascript.0 (649) script.js.common.JSON.JASONSP: registered 1 subscription, 0 schedules, 0 messages, 0 logs and 0 file subscriptions
                    20:28:02.079	info	javascript.0 (649) script.js.common.JSON.JASONSP: BSH.Common.EnumType.OperationState.Run
                    20:28:02.081	info	javascript.0 (649) script.js.common.JSON.JASONSP: Run
                    20:28:02.082	info	javascript.0 (649) script.js.common.JSON.JASONSP: Dishcare.Dishwasher.Program.Quick45
                    20:28:02.082	info	javascript.0 (649) script.js.common.JSON.JASONSP: Speed 45°
                    20:30:16.619	info	javascript.0 (649) script.js.common.JSON.JASONSP: BSH.Common.EnumType.OperationState.Aborting
                    20:30:16.619	info	javascript.0 (649) script.js.common.JSON.JASONSP: Aborting
                    20:32:02.233	info	javascript.0 (649) script.js.common.JSON.JASONSP: BSH.Common.EnumType.OperationState.Run
                    20:32:02.234	info	javascript.0 (649) script.js.common.JSON.JASONSP: Run
                    20:32:02.234	info	javascript.0 (649) script.js.common.JSON.JASONSP: Dishcare.Dishwasher.Program.MachineCare
                    20:32:02.234	info	javascript.0 (649) script.js.common.JSON.JASONSP: Maschinenpflege
                    20:33:17.902	info	javascript.0 (649) script.js.common.JSON.JASONSP: BSH.Common.EnumType.OperationState.Aborting
                    20:33:17.902	info	javascript.0 (649) script.js.common.JSON.JASONSP: Aborting
                    
                    

                    Und so sieht die JSON aus

                     {
                        "Start": "06.09.22 20:19",
                        "Programm": "Maschinenpflege",
                        "Ende": "06.09.22 20:25"
                      },
                      {
                        "Start": "06.09.22 20:32",
                        "Programm": "Maschinenpflege",
                        "Ende": "06.09.22 20:33"
                      },
                      {
                        "Start": "06.09.22 20:32",
                        "Programm": "Maschinenpflege",
                        "Ende": "06.09.22 20:33"
                      }
                    

                    Hier stand auch mal zwischenzeitlich der Eintrag von 20:28 mit Speed 45°

                    paul53P 1 Reply Last reply
                    0
                    • Chris76eC Chris76e

                      @paul53

                      Hier der Eintrag aus dem Log

                      1. Start war noch ohne log vom Ende
                      20:19:34.230	info	javascript.0 (649) script.js.common.JSON.JASONSP: BSH.Common.EnumType.OperationState.Run
                      20:19:34.231	info	javascript.0 (649) script.js.common.JSON.JASONSP: Run
                      20:19:34.231	info	javascript.0 (649) script.js.common.JSON.JASONSP: Dishcare.Dishwasher.Program.MachineCare
                      20:19:34.231	info	javascript.0 (649) script.js.common.JSON.JASONSP: Maschinenpflege
                      20:27:19.463	info	javascript.0 (649) Stop script script.js.common.JSON.JASONSP
                      20:27:19.466	info	javascript.0 (649) Start javascript script.js.common.JSON.JASONSP
                      20:27:19.479	info	javascript.0 (649) script.js.common.JSON.JASONSP: registered 1 subscription, 0 schedules, 0 messages, 0 logs and 0 file subscriptions
                      20:28:02.079	info	javascript.0 (649) script.js.common.JSON.JASONSP: BSH.Common.EnumType.OperationState.Run
                      20:28:02.081	info	javascript.0 (649) script.js.common.JSON.JASONSP: Run
                      20:28:02.082	info	javascript.0 (649) script.js.common.JSON.JASONSP: Dishcare.Dishwasher.Program.Quick45
                      20:28:02.082	info	javascript.0 (649) script.js.common.JSON.JASONSP: Speed 45°
                      20:30:16.619	info	javascript.0 (649) script.js.common.JSON.JASONSP: BSH.Common.EnumType.OperationState.Aborting
                      20:30:16.619	info	javascript.0 (649) script.js.common.JSON.JASONSP: Aborting
                      20:32:02.233	info	javascript.0 (649) script.js.common.JSON.JASONSP: BSH.Common.EnumType.OperationState.Run
                      20:32:02.234	info	javascript.0 (649) script.js.common.JSON.JASONSP: Run
                      20:32:02.234	info	javascript.0 (649) script.js.common.JSON.JASONSP: Dishcare.Dishwasher.Program.MachineCare
                      20:32:02.234	info	javascript.0 (649) script.js.common.JSON.JASONSP: Maschinenpflege
                      20:33:17.902	info	javascript.0 (649) script.js.common.JSON.JASONSP: BSH.Common.EnumType.OperationState.Aborting
                      20:33:17.902	info	javascript.0 (649) script.js.common.JSON.JASONSP: Aborting
                      
                      

                      Und so sieht die JSON aus

                       {
                          "Start": "06.09.22 20:19",
                          "Programm": "Maschinenpflege",
                          "Ende": "06.09.22 20:25"
                        },
                        {
                          "Start": "06.09.22 20:32",
                          "Programm": "Maschinenpflege",
                          "Ende": "06.09.22 20:33"
                        },
                        {
                          "Start": "06.09.22 20:32",
                          "Programm": "Maschinenpflege",
                          "Ende": "06.09.22 20:33"
                        }
                      

                      Hier stand auch mal zwischenzeitlich der Eintrag von 20:28 mit Speed 45°

                      paul53P Offline
                      paul53P Offline
                      paul53
                      wrote on last edited by paul53
                      #17

                      @chris76e
                      Aus dem Log sehe ich, dass "Run" nur als kurzer Impuls gemeldet wird und danach das Programm, beendet durch "Aborting". Dann versuche es mal so:

                      const idTable = '0_userdata.0.JSON.Spülmaschiene'; // ID JSON-Tabelle
                      const idStatus = 'homeconnect.0.011040388898000963.status.BSH_Common_Status_OperationState';
                      // const idProg = 'homeconnect.0.011040388898000963.programs.active.BSH_Common_Root_ActiveProgram';
                       
                      var table = [];
                      if(getState(idTable).val) table = JSON.parse(getState(idTable).val);
                      var obj = {};
                       
                      on(idStatus, function(dp) {
                          if(dp.oldState.val == 'BSH.Common.EnumType.OperationState.Run') {
                              obj.Start = formatDate(new Date(), 'DD.MM.YY hh:mm');
                              obj.Programm = dp.common.states[dp.state.val];
                          } else if (dp.state.val == 'BSH.Common.EnumType.OperationState.Aborting') {
                              obj.Ende = formatDate(new Date(), 'DD.MM.YY hh:mm');
                              table.push(obj);
                              if(table.length > 10) table.shift();
                              setState(idTable, JSON.stringify(table), true);
                          }
                      });
                      

                      Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                      Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                      Chris76eC 1 Reply Last reply
                      0
                      • paul53P paul53

                        @chris76e
                        Aus dem Log sehe ich, dass "Run" nur als kurzer Impuls gemeldet wird und danach das Programm, beendet durch "Aborting". Dann versuche es mal so:

                        const idTable = '0_userdata.0.JSON.Spülmaschiene'; // ID JSON-Tabelle
                        const idStatus = 'homeconnect.0.011040388898000963.status.BSH_Common_Status_OperationState';
                        // const idProg = 'homeconnect.0.011040388898000963.programs.active.BSH_Common_Root_ActiveProgram';
                         
                        var table = [];
                        if(getState(idTable).val) table = JSON.parse(getState(idTable).val);
                        var obj = {};
                         
                        on(idStatus, function(dp) {
                            if(dp.oldState.val == 'BSH.Common.EnumType.OperationState.Run') {
                                obj.Start = formatDate(new Date(), 'DD.MM.YY hh:mm');
                                obj.Programm = dp.common.states[dp.state.val];
                            } else if (dp.state.val == 'BSH.Common.EnumType.OperationState.Aborting') {
                                obj.Ende = formatDate(new Date(), 'DD.MM.YY hh:mm');
                                table.push(obj);
                                if(table.length > 10) table.shift();
                                setState(idTable, JSON.stringify(table), true);
                            }
                        });
                        
                        Chris76eC Online
                        Chris76eC Online
                        Chris76e
                        wrote on last edited by
                        #18

                        @paul53

                        obj.Programm = dp.common.states[dp.state.val];
                        

                        Wo kommt jetzt der DP herr? Fehlt da nicht was?

                        paul53P 1 Reply Last reply
                        0
                        • Chris76eC Chris76e

                          @paul53

                          obj.Programm = dp.common.states[dp.state.val];
                          

                          Wo kommt jetzt der DP herr? Fehlt da nicht was?

                          paul53P Offline
                          paul53P Offline
                          paul53
                          wrote on last edited by paul53
                          #19

                          @chris76e sagte: Wo kommt jetzt der DP herr?

                          Aus dem Trigger: Enthält den Zustand "laufendes Programm" nach "Run".

                          Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                          Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                          Chris76eC 1 Reply Last reply
                          0
                          • paul53P paul53

                            @chris76e sagte: Wo kommt jetzt der DP herr?

                            Aus dem Trigger: Enthält den Zustand "laufendes Programm" nach "Run".

                            Chris76eC Online
                            Chris76eC Online
                            Chris76e
                            wrote on last edited by
                            #20

                            @paul53

                            Mit der Version wird nichts geschrieben, bekomme auch keine Fehlermeldung.

                            paul53P 1 Reply Last reply
                            0
                            • Chris76eC Chris76e

                              @paul53

                              Mit der Version wird nichts geschrieben, bekomme auch keine Fehlermeldung.

                              paul53P Offline
                              paul53P Offline
                              paul53
                              wrote on last edited by
                              #21

                              @chris76e sagte: Mit der Version wird nichts geschrieben

                              Wurde obj außerhalb des Triggers deklariert? Habe ich oben korrigiert.

                              Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                              Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                              Chris76eC 1 Reply Last reply
                              0
                              • paul53P paul53

                                @chris76e sagte: Mit der Version wird nichts geschrieben

                                Wurde obj außerhalb des Triggers deklariert? Habe ich oben korrigiert.

                                Chris76eC Online
                                Chris76eC Online
                                Chris76e
                                wrote on last edited by
                                #22

                                @paul53
                                ist geändert, aber macht immer noch nichts.

                                paul53P 1 Reply Last reply
                                0
                                • Chris76eC Chris76e

                                  @paul53
                                  ist geändert, aber macht immer noch nichts.

                                  paul53P Offline
                                  paul53P Offline
                                  paul53
                                  wrote on last edited by
                                  #23

                                  @chris76e sagte: ist geändert, aber macht immer noch nichts.

                                  @chris76e sagte in Erster Versuch ein JSON zu erzeugen:

                                  Hier der Eintrag aus dem Log

                                  Das ist wirklich der Wert des Trigger-Datenpunktes. Es sind zumindest zwei Log-Ausgaben. Logge mal nur den Trigger-Wert:

                                  on(idStatus, function(dp) {
                                      log(dp.state.val);
                                  

                                  Alle anderen Logs kommentiere aus.

                                  Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                                  Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                                  Chris76eC 1 Reply Last reply
                                  0
                                  • paul53P paul53

                                    @chris76e sagte: ist geändert, aber macht immer noch nichts.

                                    @chris76e sagte in Erster Versuch ein JSON zu erzeugen:

                                    Hier der Eintrag aus dem Log

                                    Das ist wirklich der Wert des Trigger-Datenpunktes. Es sind zumindest zwei Log-Ausgaben. Logge mal nur den Trigger-Wert:

                                    on(idStatus, function(dp) {
                                        log(dp.state.val);
                                    

                                    Alle anderen Logs kommentiere aus.

                                    Chris76eC Online
                                    Chris76eC Online
                                    Chris76e
                                    wrote on last edited by
                                    #24

                                    @paul53

                                    log sieht so aus

                                    23:48:20.661	info	javascript.0 (649) script.js.common.JSON.JASONTest: BSH.Common.EnumType.OperationState.Ready
                                    23:48:25.593	info	javascript.0 (649) script.js.common.JSON.JASONTest: BSH.Common.EnumType.OperationState.Run
                                    23:49:37.318	info	javascript.0 (649) script.js.common.JSON.JASONTest: BSH.Common.EnumType.OperationState.Aborting
                                    23:50:02.051	info	javascript.0 (649) script.js.common.JSON.JASONTest: BSH.Common.EnumType.OperationState.Ready
                                    

                                    Wird aber nichts geschrieben

                                    paul53P 1 Reply Last reply
                                    0
                                    • Chris76eC Chris76e

                                      @paul53

                                      log sieht so aus

                                      23:48:20.661	info	javascript.0 (649) script.js.common.JSON.JASONTest: BSH.Common.EnumType.OperationState.Ready
                                      23:48:25.593	info	javascript.0 (649) script.js.common.JSON.JASONTest: BSH.Common.EnumType.OperationState.Run
                                      23:49:37.318	info	javascript.0 (649) script.js.common.JSON.JASONTest: BSH.Common.EnumType.OperationState.Aborting
                                      23:50:02.051	info	javascript.0 (649) script.js.common.JSON.JASONTest: BSH.Common.EnumType.OperationState.Ready
                                      

                                      Wird aber nichts geschrieben

                                      paul53P Offline
                                      paul53P Offline
                                      paul53
                                      wrote on last edited by paul53
                                      #25

                                      @chris76e
                                      Habe mich hier durch die weiteren Logs täuschen lassen, da sie nicht gekennzeichnet sind.
                                      Weshalb das Skript doppelte Einträge erzeugt, erschließt sich mir bisher nicht. Deshalb erzeuge bitte Logs mit Datenpunkt-Kennung:

                                      const idTable = '0_userdata.0.JSON.Spülmaschiene'; // ID JSON-Tabelle
                                      const idStatus = 'homeconnect.0.011040388898000963.status.BSH_Common_Status_OperationState';
                                      const idProg = 'homeconnect.0.011040388898000963.programs.selected.BSH_Common_Root_SelectedProgram';
                                      const idAktiv = 'homeconnect.0.011040388898000963.programs.active.BSH_Common_Root_ActiveProgram';
                                      
                                      var table = [];
                                      if(getState(idTable).val) table = JSON.parse(getState(idTable).val);
                                      var obj = {};
                                      
                                      on(idAktiv, function(dp) {
                                          log('Aktiv: ' + dp.state.val);
                                      });
                                      
                                      on(idStatus, function(dp) {
                                          log('gewählt: ' + getState(idProg).val);
                                          log('alter Status: ' + dp.oldState.val);
                                          log('neuer Status: ' + dp.state.val);
                                          
                                          if(dp.state.val == 'BSH.Common.EnumType.OperationState.Run') {
                                              obj.Start = formatDate(new Date(), 'DD.MM.YY hh:mm'); 
                                              obj.Programm = getObject(idProg).common.states[getState(idProg).val];
                                          } else if(dp.oldState.val == 'BSH.Common.EnumType.OperationState.Run') {
                                              obj.Ende = formatDate(new Date(), 'DD.MM.YY hh:mm');
                                              table.push(obj);
                                              if(table.length > 10) table.shift();
                                              setState(idTable, JSON.stringify(table), true);
                                          }
                                      });
                                      

                                      Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                                      Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                                      Chris76eC 1 Reply Last reply
                                      0
                                      • paul53P paul53

                                        @chris76e
                                        Habe mich hier durch die weiteren Logs täuschen lassen, da sie nicht gekennzeichnet sind.
                                        Weshalb das Skript doppelte Einträge erzeugt, erschließt sich mir bisher nicht. Deshalb erzeuge bitte Logs mit Datenpunkt-Kennung:

                                        const idTable = '0_userdata.0.JSON.Spülmaschiene'; // ID JSON-Tabelle
                                        const idStatus = 'homeconnect.0.011040388898000963.status.BSH_Common_Status_OperationState';
                                        const idProg = 'homeconnect.0.011040388898000963.programs.selected.BSH_Common_Root_SelectedProgram';
                                        const idAktiv = 'homeconnect.0.011040388898000963.programs.active.BSH_Common_Root_ActiveProgram';
                                        
                                        var table = [];
                                        if(getState(idTable).val) table = JSON.parse(getState(idTable).val);
                                        var obj = {};
                                        
                                        on(idAktiv, function(dp) {
                                            log('Aktiv: ' + dp.state.val);
                                        });
                                        
                                        on(idStatus, function(dp) {
                                            log('gewählt: ' + getState(idProg).val);
                                            log('alter Status: ' + dp.oldState.val);
                                            log('neuer Status: ' + dp.state.val);
                                            
                                            if(dp.state.val == 'BSH.Common.EnumType.OperationState.Run') {
                                                obj.Start = formatDate(new Date(), 'DD.MM.YY hh:mm'); 
                                                obj.Programm = getObject(idProg).common.states[getState(idProg).val];
                                            } else if(dp.oldState.val == 'BSH.Common.EnumType.OperationState.Run') {
                                                obj.Ende = formatDate(new Date(), 'DD.MM.YY hh:mm');
                                                table.push(obj);
                                                if(table.length > 10) table.shift();
                                                setState(idTable, JSON.stringify(table), true);
                                            }
                                        });
                                        
                                        Chris76eC Online
                                        Chris76eC Online
                                        Chris76e
                                        wrote on last edited by
                                        #26

                                        @paul53

                                        Hier der log von 2 Abgebrochenen Durchgänge:

                                        08:58:09.745	info	javascript.0 (3489476) script.js.common.JSON.JASONSP: gewählt: Dishcare.Dishwasher.Program.Eco50
                                        08:58:09.745	info	javascript.0 (3489476) script.js.common.JSON.JASONSP: alter Status: BSH.Common.EnumType.OperationState.Ready
                                        08:58:09.746	info	javascript.0 (3489476) script.js.common.JSON.JASONSP: neuer Status: BSH.Common.EnumType.OperationState.Run
                                        08:58:09.746	info	javascript.0 (3489476) script.js.common.JSON.JASONSP: Dishcare.Dishwasher.Program.Eco50
                                        08:58:09.746	info	javascript.0 (3489476) script.js.common.JSON.JASONSP: Eco 50°
                                        08:58:09.918	info	javascript.0 (3489476) script.js.common.JSON.JASONSP: aktiv: Dishcare.Dishwasher.Program.Eco50
                                        09:00:36.446	info	javascript.0 (3489476) script.js.common.JSON.JASONSP: aktiv: null
                                        09:00:36.847	info	javascript.0 (3489476) script.js.common.JSON.JASONSP: gewählt: Dishcare.Dishwasher.Program.Eco50
                                        09:00:36.847	info	javascript.0 (3489476) script.js.common.JSON.JASONSP: alter Status: BSH.Common.EnumType.OperationState.Run
                                        09:00:36.847	info	javascript.0 (3489476) script.js.common.JSON.JASONSP: neuer Status: BSH.Common.EnumType.OperationState.Aborting
                                        09:01:03.132	info	javascript.0 (3489476) script.js.common.JSON.JASONSP: gewählt: Dishcare.Dishwasher.Program.Eco50
                                        09:01:03.132	info	javascript.0 (3489476) script.js.common.JSON.JASONSP: alter Status: BSH.Common.EnumType.OperationState.Aborting
                                        09:01:03.133	info	javascript.0 (3489476) script.js.common.JSON.JASONSP: neuer Status: BSH.Common.EnumType.OperationState.Ready
                                        09:09:34.041	info	javascript.0 (3489476) script.js.common.JSON.JASONSP: gewählt: Dishcare.Dishwasher.Program.Quick65
                                        09:09:34.042	info	javascript.0 (3489476) script.js.common.JSON.JASONSP: alter Status: BSH.Common.EnumType.OperationState.Ready
                                        09:09:34.042	info	javascript.0 (3489476) script.js.common.JSON.JASONSP: neuer Status: BSH.Common.EnumType.OperationState.Run
                                        09:09:34.042	info	javascript.0 (3489476) script.js.common.JSON.JASONSP: Dishcare.Dishwasher.Program.Quick65
                                        09:09:34.042	info	javascript.0 (3489476) script.js.common.JSON.JASONSP: Speed 65°
                                        09:09:34.107	info	javascript.0 (3489476) script.js.common.JSON.JASONSP: aktiv: Dishcare.Dishwasher.Program.Quick65
                                        09:10:56.316	info	javascript.0 (3489476) script.js.common.JSON.JASONSP: aktiv: null
                                        09:10:56.480	info	javascript.0 (3489476) script.js.common.JSON.JASONSP: gewählt: Dishcare.Dishwasher.Program.Quick65
                                        09:10:56.480	info	javascript.0 (3489476) script.js.common.JSON.JASONSP: alter Status: BSH.Common.EnumType.OperationState.Run
                                        09:10:56.480	info	javascript.0 (3489476) script.js.common.JSON.JASONSP: neuer Status: BSH.Common.EnumType.OperationState.Aborting
                                        09:11:20.331	info	javascript.0 (3489476) script.js.common.JSON.JASONSP: gewählt: Dishcare.Dishwasher.Program.Quick65
                                        09:11:20.332	info	javascript.0 (3489476) script.js.common.JSON.JASONSP: alter Status: BSH.Common.EnumType.OperationState.Aborting
                                        09:11:20.332	info	javascript.0 (3489476) script.js.common.JSON.JASONSP: neuer Status: BSH.Common.EnumType.OperationState.Ready
                                        
                                        

                                        So sieht die JSON nach dem 1. aus:

                                        [
                                          {
                                            "Start": "06.09.22 23:48",
                                            "Programm": "Intensiv 70°",
                                            "Ende": "06.09.22 23:49"
                                          },
                                          {
                                            "Start": "07.09.22 08:58",
                                            "Programm": "Eco 50°",
                                            "Ende": "07.09.22 09:00"
                                          }
                                        ]
                                        

                                        und so nach dem 2.

                                        [
                                          {
                                            "Start": "06.09.22 23:48",
                                            "Programm": "Intensiv 70°",
                                            "Ende": "06.09.22 23:49"
                                          },
                                          {
                                            "Start": "07.09.22 09:09",
                                            "Programm": "Speed 65°",
                                            "Ende": "07.09.22 09:10"
                                          },
                                          {
                                            "Start": "07.09.22 09:09",
                                            "Programm": "Speed 65°",
                                            "Ende": "07.09.22 09:10"
                                          }
                                        ]
                                        
                                        paul53P 1 Reply Last reply
                                        0
                                        • Chris76eC Chris76e

                                          @paul53

                                          Hier der log von 2 Abgebrochenen Durchgänge:

                                          08:58:09.745	info	javascript.0 (3489476) script.js.common.JSON.JASONSP: gewählt: Dishcare.Dishwasher.Program.Eco50
                                          08:58:09.745	info	javascript.0 (3489476) script.js.common.JSON.JASONSP: alter Status: BSH.Common.EnumType.OperationState.Ready
                                          08:58:09.746	info	javascript.0 (3489476) script.js.common.JSON.JASONSP: neuer Status: BSH.Common.EnumType.OperationState.Run
                                          08:58:09.746	info	javascript.0 (3489476) script.js.common.JSON.JASONSP: Dishcare.Dishwasher.Program.Eco50
                                          08:58:09.746	info	javascript.0 (3489476) script.js.common.JSON.JASONSP: Eco 50°
                                          08:58:09.918	info	javascript.0 (3489476) script.js.common.JSON.JASONSP: aktiv: Dishcare.Dishwasher.Program.Eco50
                                          09:00:36.446	info	javascript.0 (3489476) script.js.common.JSON.JASONSP: aktiv: null
                                          09:00:36.847	info	javascript.0 (3489476) script.js.common.JSON.JASONSP: gewählt: Dishcare.Dishwasher.Program.Eco50
                                          09:00:36.847	info	javascript.0 (3489476) script.js.common.JSON.JASONSP: alter Status: BSH.Common.EnumType.OperationState.Run
                                          09:00:36.847	info	javascript.0 (3489476) script.js.common.JSON.JASONSP: neuer Status: BSH.Common.EnumType.OperationState.Aborting
                                          09:01:03.132	info	javascript.0 (3489476) script.js.common.JSON.JASONSP: gewählt: Dishcare.Dishwasher.Program.Eco50
                                          09:01:03.132	info	javascript.0 (3489476) script.js.common.JSON.JASONSP: alter Status: BSH.Common.EnumType.OperationState.Aborting
                                          09:01:03.133	info	javascript.0 (3489476) script.js.common.JSON.JASONSP: neuer Status: BSH.Common.EnumType.OperationState.Ready
                                          09:09:34.041	info	javascript.0 (3489476) script.js.common.JSON.JASONSP: gewählt: Dishcare.Dishwasher.Program.Quick65
                                          09:09:34.042	info	javascript.0 (3489476) script.js.common.JSON.JASONSP: alter Status: BSH.Common.EnumType.OperationState.Ready
                                          09:09:34.042	info	javascript.0 (3489476) script.js.common.JSON.JASONSP: neuer Status: BSH.Common.EnumType.OperationState.Run
                                          09:09:34.042	info	javascript.0 (3489476) script.js.common.JSON.JASONSP: Dishcare.Dishwasher.Program.Quick65
                                          09:09:34.042	info	javascript.0 (3489476) script.js.common.JSON.JASONSP: Speed 65°
                                          09:09:34.107	info	javascript.0 (3489476) script.js.common.JSON.JASONSP: aktiv: Dishcare.Dishwasher.Program.Quick65
                                          09:10:56.316	info	javascript.0 (3489476) script.js.common.JSON.JASONSP: aktiv: null
                                          09:10:56.480	info	javascript.0 (3489476) script.js.common.JSON.JASONSP: gewählt: Dishcare.Dishwasher.Program.Quick65
                                          09:10:56.480	info	javascript.0 (3489476) script.js.common.JSON.JASONSP: alter Status: BSH.Common.EnumType.OperationState.Run
                                          09:10:56.480	info	javascript.0 (3489476) script.js.common.JSON.JASONSP: neuer Status: BSH.Common.EnumType.OperationState.Aborting
                                          09:11:20.331	info	javascript.0 (3489476) script.js.common.JSON.JASONSP: gewählt: Dishcare.Dishwasher.Program.Quick65
                                          09:11:20.332	info	javascript.0 (3489476) script.js.common.JSON.JASONSP: alter Status: BSH.Common.EnumType.OperationState.Aborting
                                          09:11:20.332	info	javascript.0 (3489476) script.js.common.JSON.JASONSP: neuer Status: BSH.Common.EnumType.OperationState.Ready
                                          
                                          

                                          So sieht die JSON nach dem 1. aus:

                                          [
                                            {
                                              "Start": "06.09.22 23:48",
                                              "Programm": "Intensiv 70°",
                                              "Ende": "06.09.22 23:49"
                                            },
                                            {
                                              "Start": "07.09.22 08:58",
                                              "Programm": "Eco 50°",
                                              "Ende": "07.09.22 09:00"
                                            }
                                          ]
                                          

                                          und so nach dem 2.

                                          [
                                            {
                                              "Start": "06.09.22 23:48",
                                              "Programm": "Intensiv 70°",
                                              "Ende": "06.09.22 23:49"
                                            },
                                            {
                                              "Start": "07.09.22 09:09",
                                              "Programm": "Speed 65°",
                                              "Ende": "07.09.22 09:10"
                                            },
                                            {
                                              "Start": "07.09.22 09:09",
                                              "Programm": "Speed 65°",
                                              "Ende": "07.09.22 09:10"
                                            }
                                          ]
                                          
                                          paul53P Offline
                                          paul53P Offline
                                          paul53
                                          wrote on last edited by paul53
                                          #27

                                          @chris76e
                                          Aus dem Log erkennt man, dass "ActiveProgram" zu Beginn und zu Ende triggert - am Ende mit Wert null. Damit kann man das Programm vereinfachen:

                                          const idTable = '0_userdata.0.JSON.Spülmaschiene'; // ID JSON-Tabelle
                                          // const idStatus = 'homeconnect.0.011040388898000963.status.BSH_Common_Status_OperationState';
                                          // const idProg = 'homeconnect.0.011040388898000963.programs.selected.BSH_Common_Root_SelectedProgram';
                                          const idAktiv = 'homeconnect.0.011040388898000963.programs.active.BSH_Common_Root_ActiveProgram';
                                          
                                          var table = [];
                                          if(getState(idTable).val) table = JSON.parse(getState(idTable).val);
                                          var obj = {};
                                          
                                          on(idAktiv, function(dp) {
                                              if(dp.state.val) {
                                                  obj = {};
                                                  obj.Start = formatDate(new Date(), 'DD.MM.YY hh:mm'); 
                                                  obj.Programm = dp.common.states[dp.state.val];
                                              } else {
                                                  obj.Ende = formatDate(new Date(), 'DD.MM.YY hh:mm');
                                          //        log(table);
                                                  table.push(obj);
                                                  if(table.length > 10) table.shift();
                                                  setState(idTable, JSON.stringify(table), true);
                                          //        log(table);
                                              }
                                          });
                                          

                                          Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                                          Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                                          Chris76eC 1 Reply Last reply
                                          0
                                          Reply
                                          • Reply as topic
                                          Log in to reply
                                          • Oldest to Newest
                                          • Newest to Oldest
                                          • Most Votes


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          668

                                          Online

                                          32.4k

                                          Users

                                          81.5k

                                          Topics

                                          1.3m

                                          Posts
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                          ioBroker Community 2014-2025
                                          logo
                                          • Login

                                          • Don't have an account? Register

                                          • Login or register to search.
                                          • First post
                                            Last post
                                          0
                                          • Home
                                          • Recent
                                          • Tags
                                          • Unread 0
                                          • Categories
                                          • Unreplied
                                          • Popular
                                          • GitHub
                                          • Docu
                                          • Hilfe