Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. Erster Versuch ein JSON zu erzeugen

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    Erster Versuch ein JSON zu erzeugen

    This topic has been deleted. Only users with topic management privileges can see it.
    • Chris76e
      Chris76e @paul53 last edited by

      @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"
        }
      ]
      
      paul53 1 Reply Last reply Reply Quote 0
      • paul53
        paul53 @Chris76e last edited by paul53

        @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);
            }
        });
        
        Chris76e 1 Reply Last reply Reply Quote 0
        • Chris76e
          Chris76e @paul53 last edited by

          @paul53

          Wird immer noch überschrieben....

          10:20:10.018	info	javascript.0 (3489476) script.js.common.JSON.JASONSP: [{'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'}]
          10:20:10.018	info	javascript.0 (3489476) script.js.common.JSON.JASONSP: [{'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'},{'Start':'07.09.22 10:16','Programm':'Eco 50°','Ende':'07.09.22 10:20'}]
          10:23:40.013	info	javascript.0 (3489476) script.js.common.JSON.JASONSP: [{'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'},{'Start':'07.09.22 10:21','Programm':'Eco 50°','Ende':'07.09.22 10:23'}]
          10:23:40.013	info	javascript.0 (3489476) script.js.common.JSON.JASONSP: [{'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'},{'Start':'07.09.22 10:21','Programm':'Eco 50°','Ende':'07.09.22 10:23'},{'Start':'07.09.22 10:21','Programm':'Eco 50°','Ende':'07.09.22 10:23'}]
          
          paul53 2 Replies Last reply Reply Quote 0
          • paul53
            paul53 @Chris76e last edited by paul53

            @chris76e sagte: Wird immer noch überschrieben....

            Muss ich noch mal schauen.

            Chris76e 1 Reply Last reply Reply Quote 0
            • Chris76e
              Chris76e @paul53 last edited by

              @paul53

              Okay, kann ich aber erst heute Abend weiter testen, muss gleich zur Arbeit....

              1 Reply Last reply Reply Quote 0
              • paul53
                paul53 @Chris76e last edited by paul53

                @chris76e sagte: Wird immer noch überschrieben....

                Habe hier Zeile 12 eingefügt:

                        obj = {};
                
                Chris76e 2 Replies Last reply Reply Quote 0
                • Chris76e
                  Chris76e @paul53 last edited by

                  @paul53

                  Vielen Dank, funktioniert jetzt.
                  Habe jetzt einiges lernen können hier.

                  👏 👏 👏 👍 👍 👍

                  1 Reply Last reply Reply Quote 0
                  • Chris76e
                    Chris76e @paul53 last edited by

                    @paul53

                    Brauche nochmal deine Hilfe. Möchte jetzt noch den Stromverbrauch anzeigen lassen. Habe den Wert bei Start und Ende. Wie kann ich jetzt damit rechnen?

                    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';
                    const idVerbrauch = 'sonoff.0.Spuehlmaschine.ENERGY_Total';
                    
                    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(), 'MM.DD.YY hh:mm');
                            obj.StartUhr = formatDate(new Date(), 'hh:mm'); 
                            obj.Programm = dp.common.states[dp.state.val];
                            obj.StartVerbrauch = getState(idVerbrauch).val;
                        } else {
                            obj.Ende = formatDate(new Date(), 'MM.DD.YY hh:mm');
                            obj.EndeUhr = formatDate(new Date(), 'hh:mm');
                            obj.EndVerbrauch = getState(idVerbrauch).val;
                            log(table);
                            table.push(obj);
                            if(table.length > 10) table.shift();
                            setState(idTable, JSON.stringify(table), true);
                            log(table);
                        }
                    });
                    
                     {
                        "Start": "10.12.22 20:00",
                        "StartUhr": "20:00",
                        "Programm": "Eco 50°",
                        "StartVerbrauch": 212.794,
                        "Ende": "10.12.22 20:08",
                        "EndeUhr": "20:08",
                        "EndVerbrauch": 212.796
                      }
                    
                    paul53 1 Reply Last reply Reply Quote 0
                    • paul53
                      paul53 @Chris76e last edited by paul53

                      @Chris76e

                      Du möchtest die Differenz Endverbrauch - Startverbrauch?

                      var obj = {};
                      var StartVerbrauch = getState(idVerbrauch).val;
                       
                      on(idAktiv, function(dp) {
                          if(dp.state.val) {
                              obj = {};
                              obj.Start = formatDate(new Date(), 'MM.DD.YY hh:mm');
                              obj.StartUhr = formatDate(new Date(), 'hh:mm'); 
                              obj.Programm = dp.common.states[dp.state.val];
                              StartVerbrauch = getState(idVerbrauch).val;
                          } else {
                              obj.Ende = formatDate(new Date(), 'MM.DD.YY hh:mm');
                              obj.EndeUhr = formatDate(new Date(), 'hh:mm');
                              obj.Verbrauch = getState(idVerbrauch).val - StartVerbrauch;
                              log(table);
                              table.push(obj);
                              if(table.length > 10) table.shift();
                              setState(idTable, JSON.stringify(table), true);
                              log(table);
                          }
                      });
                      
                      Chris76e 1 Reply Last reply Reply Quote 0
                      • Chris76e
                        Chris76e @paul53 last edited by

                        @paul53

                        Ja, das klappt auch. Danke

                        Jetzt habe ich noch versucht die Dauer zu berrechnen, bekomme auch einen Wert in ms. Wie kann ich das in hh:mm:ss umschreiben?

                        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';
                        const idVerbrauch = 'sonoff.0.Spuehlmaschine.ENERGY_Total';
                        
                        var table = [];
                        if(getState(idTable).val) table = JSON.parse(getState(idTable).val);
                        var obj = {};
                        var StartVerbrauch = getState(idVerbrauch).val;
                        var startDate = new Date();
                        var endDate   = new Date();
                        
                        
                        on(idAktiv, function(dp) {
                            if(dp.state.val) {
                                obj = {};
                                obj.Start = formatDate(new Date(), 'MM.DD.YY hh:mm');
                                obj.StartUhr = formatDate(new Date(), 'hh:mm'); 
                                obj.Programm = dp.common.states[dp.state.val];
                                StartVerbrauch = getState(idVerbrauch).val;
                                startDate = new Date();
                                
                            } else {
                                obj.Ende = formatDate(new Date(), 'MM.DD.YY hh:mm');
                                obj.EndeUhr = formatDate(new Date(), 'hh:mm');
                                obj.Verbrauch = getState(idVerbrauch).val - StartVerbrauch;
                                endDate   = new Date();
                                obj.Dauer = endDate - startDate, 'hh:mm:ss';
                                log(table);
                                table.push(obj);
                                if(table.length > 10) table.shift();
                                setState(idTable, JSON.stringify(table), true);
                                log(table);
                            }
                        });
                        
                        1 Reply Last reply Reply Quote 0
                        • First post
                          Last post

                        Support us

                        ioBroker
                        Community Adapters
                        Donate

                        823
                        Online

                        31.8k
                        Users

                        80.0k
                        Topics

                        1.3m
                        Posts

                        2
                        35
                        1170
                        Loading More Posts
                        • Oldest to Newest
                        • Newest to Oldest
                        • Most Votes
                        Reply
                        • Reply as topic
                        Log in to reply
                        Community
                        Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                        The ioBroker Community 2014-2023
                        logo