Skip to content
  • 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
Logo
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. JavaScript
  5. Erster Versuch ein JSON zu erzeugen

NEWS

  • Wartung am 15.11. – Forum ab 22:00 Uhr nicht erreichbar
    BluefoxB
    Bluefox
    11
    2
    209

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

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

Erster Versuch ein JSON zu erzeugen

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.
  • Chris76eC Offline
    Chris76eC Offline
    Chris76e
    wrote on last edited by
    #1

    Hi,

    Möchte gerne ein JSON erstellen. Im JSON soll ein log erstellt werden, wann und mit welchem Programm meine Spülmaschiene gelaufen ist. Das 10mal.

    Komme da aber noch nicht sehr weit.

    Bis jetzt habe ich nur das:

    const idTable = '0_userdata.0.JSON.Spülmaschiene'; // ID JSON-Tabelle
    
    const ids = ['homeconnect.0.011040388898000963.programs.active.BSH_Common_Root_ActiveProgram','0_userdata.0.SPEnde', ]; 
    
    
    
     
    
    var table = [];
    
    for(let i = 0; i < ids.length; i++) {
    
        table[i] = {};
    
        table[i].Name = getObject(ids[i]).common.name;
    
        table[i].Wert = getState(ids[i]).val;
    
    }
    
    setState(idTable, JSON.stringify(table), true);
    
    
    
     
    
    on(ids, function(dp) {
    
        let idx = ids.indexOf(dp.id);
    
        table[idx].Wert = dp.state.val;
    
        setState(idTable, JSON.stringify(table), true);
    
    });
    
    

    So soll der JSON ausehen:

    [
      {
        "Start": 0,  //Aktuelles Datum TT.MM.YY HH.mm
        "Programm": 0, //DP homeconnect.0.011040388898000963.programs.active.BSH_Common_Root_ActiveProgram
        "Ende": 0 //DP 0_userdata.0.SPEnde   
      },
      {
        "Start": 0,  //Aktuelles Datum TT.MM.YY HH.mm
        "Programm": 0, //DP homeconnect.0.011040388898000963.programs.active.BSH_Common_Root_ActiveProgram
        "Ende": 0 //DP 0_userdata.0.SPEnde     
      }
    ] 
    

    JSON soll immer dann erstellt werden wenn der DP "homeconnect.0.011040388898000963.status.BSH_Common_Status_OperationState" auf Run steht.

    {
      "type": "state",
      "common": {
        "name": "Betriebsstatus",
        "type": "mixed",
        "role": "indicator",
        "write": true,
        "read": true,
        "unit": "",
        "states": {
          "BSH.Common.EnumType.OperationState.Ready": "Ready",
          "BSH.Common.EnumType.OperationState.Inactive": "Inactive",
          "BSH.Common.EnumType.OperationState.Run": "Run",
          "BSH.Common.EnumType.OperationState.Finished": "Finished"
        }
      },
      "native": {},
      "from": "system.adapter.homeconnect.0",
      "user": "system.user.admin",
      "ts": 1662324016545,
      "_id": "homeconnect.0.011040388898000963.status.BSH_Common_Status_OperationState",
      "acl": {
        "object": 1636,
        "state": 1636,
        "owner": "system.user.admin",
        "ownerGroup": "system.group.administrator"
      }
    }
    

    Kann mir da jemand Helfen wie ich das am besten umsetze kann?

    Vielen Dank

    paul53P 1 Reply Last reply
    0
    • Chris76eC Chris76e

      Hi,

      Möchte gerne ein JSON erstellen. Im JSON soll ein log erstellt werden, wann und mit welchem Programm meine Spülmaschiene gelaufen ist. Das 10mal.

      Komme da aber noch nicht sehr weit.

      Bis jetzt habe ich nur das:

      const idTable = '0_userdata.0.JSON.Spülmaschiene'; // ID JSON-Tabelle
      
      const ids = ['homeconnect.0.011040388898000963.programs.active.BSH_Common_Root_ActiveProgram','0_userdata.0.SPEnde', ]; 
      
      
      
       
      
      var table = [];
      
      for(let i = 0; i < ids.length; i++) {
      
          table[i] = {};
      
          table[i].Name = getObject(ids[i]).common.name;
      
          table[i].Wert = getState(ids[i]).val;
      
      }
      
      setState(idTable, JSON.stringify(table), true);
      
      
      
       
      
      on(ids, function(dp) {
      
          let idx = ids.indexOf(dp.id);
      
          table[idx].Wert = dp.state.val;
      
          setState(idTable, JSON.stringify(table), true);
      
      });
      
      

      So soll der JSON ausehen:

      [
        {
          "Start": 0,  //Aktuelles Datum TT.MM.YY HH.mm
          "Programm": 0, //DP homeconnect.0.011040388898000963.programs.active.BSH_Common_Root_ActiveProgram
          "Ende": 0 //DP 0_userdata.0.SPEnde   
        },
        {
          "Start": 0,  //Aktuelles Datum TT.MM.YY HH.mm
          "Programm": 0, //DP homeconnect.0.011040388898000963.programs.active.BSH_Common_Root_ActiveProgram
          "Ende": 0 //DP 0_userdata.0.SPEnde     
        }
      ] 
      

      JSON soll immer dann erstellt werden wenn der DP "homeconnect.0.011040388898000963.status.BSH_Common_Status_OperationState" auf Run steht.

      {
        "type": "state",
        "common": {
          "name": "Betriebsstatus",
          "type": "mixed",
          "role": "indicator",
          "write": true,
          "read": true,
          "unit": "",
          "states": {
            "BSH.Common.EnumType.OperationState.Ready": "Ready",
            "BSH.Common.EnumType.OperationState.Inactive": "Inactive",
            "BSH.Common.EnumType.OperationState.Run": "Run",
            "BSH.Common.EnumType.OperationState.Finished": "Finished"
          }
        },
        "native": {},
        "from": "system.adapter.homeconnect.0",
        "user": "system.user.admin",
        "ts": 1662324016545,
        "_id": "homeconnect.0.011040388898000963.status.BSH_Common_Status_OperationState",
        "acl": {
          "object": 1636,
          "state": 1636,
          "owner": "system.user.admin",
          "ownerGroup": "system.group.administrator"
        }
      }
      

      Kann mir da jemand Helfen wie ich das am besten umsetze kann?

      Vielen Dank

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

      @chris76e sagte: JSON soll immer dann erstellt werden wenn der DP "homeconnect.0.011040388898000963.status.BSH_Common_Status_OperationState" auf Run steht.

      Nicht, wenn "Run" beendet wird?
      Vorschlag;

      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);
       
      on(idStatus, function(dp) {
          if(dp.state.val == 'BSH.Common.EnumType.OperationState.Run') {
              var obj = {};
              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 2 Replies Last reply
      0
      • paul53P paul53

        @chris76e sagte: JSON soll immer dann erstellt werden wenn der DP "homeconnect.0.011040388898000963.status.BSH_Common_Status_OperationState" auf Run steht.

        Nicht, wenn "Run" beendet wird?
        Vorschlag;

        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);
         
        on(idStatus, function(dp) {
            if(dp.state.val == 'BSH.Common.EnumType.OperationState.Run') {
                var obj = {};
                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 Offline
        Chris76eC Offline
        Chris76e
        wrote on last edited by
        #3

        @paul53

        Danke, werde ich testen.

        1 Reply Last reply
        0
        • paul53P paul53

          @chris76e sagte: JSON soll immer dann erstellt werden wenn der DP "homeconnect.0.011040388898000963.status.BSH_Common_Status_OperationState" auf Run steht.

          Nicht, wenn "Run" beendet wird?
          Vorschlag;

          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);
           
          on(idStatus, function(dp) {
              if(dp.state.val == 'BSH.Common.EnumType.OperationState.Run') {
                  var obj = {};
                  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 Offline
          Chris76eC Offline
          Chris76e
          wrote on last edited by Chris76e
          #4

          @paul53

          Script funktioniert leider nicht. Es wird kein JSON erzeugt.

          Programm ist gerade fertig und im Script fenster kommt folgende Meldung

          22:34:34.168	error	javascript.0 (649) at Object.<anonymous> (script.js.common.JSON.JASONSP:29:18)
          

          Und das im Javascript Log

          javascript.0
          	2022-09-05 23:17:09.968	error	at processImmediate (node:internal/timers:466:21)
          javascript.0
          	2022-09-05 23:17:09.967	error	at Immediate._onImmediate (/opt/iobroker/node_modules/@iobroker/js-controller-adapter/src/lib/adapter/adapter.js:5909:56)
          javascript.0
          	2022-09-05 23:17:09.967	error	at Object.stateChange (/opt/iobroker/node_modules/iobroker.javascript/main.js:596:29)
          javascript.0
          	2022-09-05 23:17:09.967	error	at Object.callback (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1212:38)
          javascript.0
          	2022-09-05 23:17:09.967	error	at Object.<anonymous> (script.js.common.JSON.JASONSP:29:18)
          javascript.0
          	2022-09-05 23:17:09.967	error	Error in callback: TypeError: Cannot set properties of undefined (setting 'Ende')
          

          Im Javascript Log konnte ich sehen wie die Endzeit immer neu geschrieben wurden ist

          javascript.0
          	2022-09-05 22:30:23.361	info	script.js.common.EndzeitGeschirr: 1662410063361
          javascript.0
          	2022-09-05 22:29:23.365	info	script.js.common.EndzeitGeschirr: 1662410063365
          

          Wenn ich den Wert aus dem Im DP homeconnect.0.011040388898000963.status.BSH_Common_Status_OperationState herrauskopiere steht da nur "Run" als es lief und jetzt "Inactive"

          paul53P 1 Reply Last reply
          0
          • Chris76eC Chris76e

            @paul53

            Script funktioniert leider nicht. Es wird kein JSON erzeugt.

            Programm ist gerade fertig und im Script fenster kommt folgende Meldung

            22:34:34.168	error	javascript.0 (649) at Object.<anonymous> (script.js.common.JSON.JASONSP:29:18)
            

            Und das im Javascript Log

            javascript.0
            	2022-09-05 23:17:09.968	error	at processImmediate (node:internal/timers:466:21)
            javascript.0
            	2022-09-05 23:17:09.967	error	at Immediate._onImmediate (/opt/iobroker/node_modules/@iobroker/js-controller-adapter/src/lib/adapter/adapter.js:5909:56)
            javascript.0
            	2022-09-05 23:17:09.967	error	at Object.stateChange (/opt/iobroker/node_modules/iobroker.javascript/main.js:596:29)
            javascript.0
            	2022-09-05 23:17:09.967	error	at Object.callback (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1212:38)
            javascript.0
            	2022-09-05 23:17:09.967	error	at Object.<anonymous> (script.js.common.JSON.JASONSP:29:18)
            javascript.0
            	2022-09-05 23:17:09.967	error	Error in callback: TypeError: Cannot set properties of undefined (setting 'Ende')
            

            Im Javascript Log konnte ich sehen wie die Endzeit immer neu geschrieben wurden ist

            javascript.0
            	2022-09-05 22:30:23.361	info	script.js.common.EndzeitGeschirr: 1662410063361
            javascript.0
            	2022-09-05 22:29:23.365	info	script.js.common.EndzeitGeschirr: 1662410063365
            

            Wenn ich den Wert aus dem Im DP homeconnect.0.011040388898000963.status.BSH_Common_Status_OperationState herrauskopiere steht da nur "Run" als es lief und jetzt "Inactive"

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

            @chris76e sagte: Cannot set properties of undefined (setting 'Ende')

            Ist Zeile 14 in meinem Vorschlag jetzt Zeile 29?
            Schiebe mal die Deklaration von obj (Zeile 10) vor den Trigger.

            @chris76e sagte in Erster Versuch ein JSON zu erzeugen:

            wie die Endzeit immer neu geschrieben wurden ist

            Das ist ein anderes Skript.

            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
            -1
            • paul53P paul53

              @chris76e sagte: Cannot set properties of undefined (setting 'Ende')

              Ist Zeile 14 in meinem Vorschlag jetzt Zeile 29?
              Schiebe mal die Deklaration von obj (Zeile 10) vor den Trigger.

              @chris76e sagte in Erster Versuch ein JSON zu erzeugen:

              wie die Endzeit immer neu geschrieben wurden ist

              Das ist ein anderes Skript.

              Chris76eC Offline
              Chris76eC Offline
              Chris76e
              wrote on last edited by Chris76e
              #6

              @paul53

              Habe das Script jetzt so geändert:

              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');
                      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);
                  }
              });
              

              Dann wird das in JSON geschrieben, fehlt also noch das Programm

              [
                {
                  "Start": "05.09.22 23:37",
                  "Ende": "05.09.22 23:38"
                }
              ]
              
              
              

              Die Zeilen hatten sich beim Kopieren vom Script geändert, wurde immer eine leerzeile eingefügt, ist jetzt geändert.

              paul53P 1 Reply Last reply
              0
              • Chris76eC Chris76e

                @paul53

                Habe das Script jetzt so geändert:

                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');
                        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);
                    }
                });
                

                Dann wird das in JSON geschrieben, fehlt also noch das Programm

                [
                  {
                    "Start": "05.09.22 23:37",
                    "Ende": "05.09.22 23:38"
                  }
                ]
                
                
                

                Die Zeilen hatten sich beim Kopieren vom Script geändert, wurde immer eine leerzeile eingefügt, ist jetzt geändert.

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

                @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]);
                

                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: 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 Offline
                  Chris76eC Offline
                  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 Offline
                      Chris76eC Offline
                      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 Offline
                        Chris76eC Offline
                        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 Offline
                          Chris76eC Offline
                          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 Offline
                            Chris76eC Offline
                            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 Offline
                              Chris76eC Offline
                              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 Offline
                                  Chris76eC Offline
                                  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 Offline
                                      Chris76eC Offline
                                      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 Offline
                                          Chris76eC Offline
                                          Chris76e
                                          wrote on last edited by
                                          #20

                                          @paul53

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

                                          paul53P 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

                                          101

                                          Online

                                          32.4k

                                          Users

                                          81.3k

                                          Topics

                                          1.3m

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

                                          • Don't have an account? Register

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