Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly
    5. [Gelöst] Diverse Werte aus einem Objekt auslesen

    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

    [Gelöst] Diverse Werte aus einem Objekt auslesen

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

      @kratzsch sagte:

      Wie das mit den Code Tags geht weis ich leider nicht.

      Oben </> anklicken und dann den Text (Code, Logs) hinein kopieren.

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

        @paul53 Also ich bin schon sehr überrascht über eure hielfbereitschaft das ist einfach Klasse.
        Und hier noch die Daten die in Mqtt geschrieben werden als beispiel die Boiler Daten.```
        {"heatingActive":"off","tapwaterActive":"off","wWComfort":"Hot","wWSelTemp":60,"wWSetTemp":60,"wWDisinfectionTemp":70,"selFlowTemp":31,"selBurnPow":100,"curBurnPow":0,"pumpMod":100,"wWType":"buffer","wWChargeType":"charge pump","wWCircPump":"on","wWCircPumpMode":"continuous","wWCirc":"on","outdoorTemp":9.1,"wWCurTemp":58.2,"wWCurFlow":0,"curFlowTemp":31,"boilTemp":31,"wwStorageTemp1":58.2,"wWActivated":"on","wWOneTime":"off","wWDisinfecting":"off","wWCharging":"off","wWRecharging":"off","wWTempOK":"on","wWActive":"off","burnGas":"off","flameCurr":0,"heatPump":"on","fanWork":"off","ignWork":"off","wWHeat":"off","heatingActivated":"on","heatingTemp":48,"pumpModMax":100,"pumpModMin":100,"pumpDelay":7,"burnMinPeriod":10,"burnMinPower":0,"burnMaxPower":100,"boilHystOn":-6,"boilHystOff":6,"wWStarts":13087,"wWWorkM":65127,"UBAuptime":6548566,"burnStarts":112008,"burnWorkMin":389687,"heatWorkMin":324763,"serviceCode":"0Y","serviceCodeNumber":0}

        Hier mein versuchs Script
        

        var json = "mqtt.0.ems-esp.boiler_data"/BoilerDaten/;
        var OutTemp = "javascript.0.Heizung.OutTemp"/Aussentemperatur/;
        var BoilTemp = "javascript.0.Heizung.BoilTemp"/Boilertemperatur/
        var Vorl = "javacript.0.Heizung.Vorlauf"/Vorlauf/;
        var Activehet = "javacript.0.Heizung.activehet"/Activ/;

        on(json, function(dp) {
        var obj = JSON.parse(dp.state.val);
        setState(OutTemp, obj.outdoorTemp);

        });

        1 Reply Last reply Reply Quote 0
        • Chaot
          Chaot @kratzsch last edited by

          @kratzsch
          Du hast in der Zeile 2,3 und 4 die Position der Datenpunkte angegeben:

          'javascript.0.Heizung.OutTemp'
          

          Laut deinem Bild darüber mit den von dir angelegten Datenpunkten sind die aber bei

          '0_userdata.0.javascript.0.Heizung.OutTemp'
          

          Also entweder die Datenpunkte richtig anlegen und dann das Script an die richtige Stelle verweisen, oder das Script jetzt an die aktuellen Datenpunkte verweisen.
          Aber ich würde das ehrlich gesagt so machen das es dauerhaft so bleiben kann. Also den Ordner javascript.0 den du unter 0_userdata.0 angelegt hast wieder löschen und dort mit der richtigen oder sinnvollen Ordner und Datenstruktur anfangen.

          1. Unter 0_userdate.0 einen neuen Ordner anlegen - Heizung wäre eine gute Wahl.
          2. Unter dem neuen Ordner Heizung die benötigten Datenpunkte erstellen.
          3. im Script die Zeilen 2 bis 4 auf diese Datenpunkte verweisen
          '0_userdata.0.Heizung.******'
          

          Dann sollte das klappen.

          K 1 Reply Last reply Reply Quote 0
          • K
            kratzsch @Chaot last edited by

            @Chaot So ich habe es nochmal versucht leider ohner erfolg.Hier noch mal mein Script und der Datenpunkt.

            var json = "mqtt.0.ems-esp.boiler_data"/*BoilerDaten*/;
            var outdoorTemp = "0_userdata.0.Heizung.outdoorTemp"/*outdoorTemp*/;
            
            
            
            on(json, function(dp) {
               var obj = JSON.parse(dp.state.val);
            setState(outdoorTemp, obj.outdoorTemp);
            
            });```
            Objekt bearbeiten 0_userdata.0.Heizung.outdoorTemp
            Name
            Typ
            
                Allgemein
                Nativ
                Zugriffskontrolle
                Weitere (nur lesend)
                Raw (nur Experten)
            
            Rolle
            Art
            Beschreibung
            Maßeinheit
            minimaler Wert 
            
            paul53 2 Replies Last reply Reply Quote 0
            • paul53
              paul53 @kratzsch last edited by paul53

              @kratzsch sagte:

              on(json, function(dp) { 
                 var obj = JSON.parse(dp.state.val); 
                 setState(outdoorTemp, obj.outdoorTemp);
              });
              

              Es wird nur getriggert, wenn sich der Inhalt des JSON-Datenpunktes ändert. Vorher passiert nichts.

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

                @paul53 Ok Danke schön aber ich denke das ich auf denn richtigen weg bin dank deiner Grossen Hielfe,

                Chaot 1 Reply Last reply Reply Quote 0
                • Chaot
                  Chaot @kratzsch last edited by

                  @kratzsch Kleiner Tip: Den MQTT Adapter kurz anhalten und neu starten. Dann sollte der Datenpunkt neu geschrieben werden.

                  K 1 Reply Last reply Reply Quote 0
                  • K
                    kratzsch @Chaot last edited by

                    @Chaot Leider immer noch nicht geklappt.Muss für die Zeile 1 auch ein datenpunkt erstellt werden.

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

                      @kratzsch sagte:

                      var json = "mqtt.0.ems-esp.boiler_data"/BoilerDaten/;

                      Wenn ich das mit dem Bild oben vergleiche, ist die ID falsch. Laut Bild richtig:

                      var json = "mqtt.0.boiler_data";
                      
                      Chaot 1 Reply Last reply Reply Quote 0
                      • Chaot
                        Chaot @paul53 last edited by

                        @paul53 sagte in [Gelöst] Diverse Werte aus einem Objekt auslesen:

                        var json = "mqtt.0.boiler_data";

                        Verstehe ich jetzt auch nicht warum das ohne Ordnerstruktur da liegt, aber du hast Recht!

                        K 1 Reply Last reply Reply Quote 0
                        • K
                          kratzsch @Chaot last edited by

                          @Chaot Hallo
                          Einmal hat es geklappt und der Wert wurde geladen aber leider nur einmal.Hier der Log Eintrag.``
                          code_2020-11-23 20:05:23.744 - info: history.0 (799) enabled logging of 0_userdata.0.Heizung.outdoorTemp, Alias=false
                          text

                          K 1 Reply Last reply Reply Quote 0
                          • K
                            kratzsch @kratzsch last edited by

                            @kratzsch Möchte mich nochmal für die Hilfe bedanken.
                            Hatte noch einen Schrieb Fehler jetzt geht es.```

                            K 1 Reply Last reply Reply Quote 1
                            • K
                              kratzsch @kratzsch last edited by

                              @kratzsch ```

                              Hallo habe wieder einmal ein Problem die Boiler Daten und Solar Daten vom Mqtt Adapter werden einzeln ausgegeben.
                              Nur bei den Thermostat Daten klppt das nicht.
                              Hier mein Skript

                              var json = "mqtt.0.thermostat_data"/*thermostatData*/;
                              var currtemp = "0_userdata.0.Heizung.currtemp"/*currtemp*/;
                              
                              
                              
                              on(json, function(dp) {
                                 var obj = JSON.parse(dp.state.val);
                                 setState(currtemp, parseFloat(obj.currtemp));
                                 
                              });
                              
                              
                              

                              16:02:34.539 info javascript.0 (29772) Stop script script.js.thermostat_data
                              16:02:34.740 info javascript.0 (29772) Start javascript script.js.thermostat_data
                              16:02:34.746 info javascript.0 (29772) script.js.thermostat_data: subscribe: {"pattern":{"id":"mqtt.0.thermostat_data","change":"ne","q":0},"name":"script.js.thermostat_data"}
                              16:02:34.746 info javascript.0 (29772) script.js.thermostat_data: registered 1 subscription and 0 schedules

                              Vielicht kannst du meinen Fehler finden.
                              Vielen Dank im voraus.

                              Chaot 1 Reply Last reply Reply Quote 0
                              • Chaot
                                Chaot @kratzsch last edited by

                                @kratzsch
                                Welche Version vom EMS-ESP verwendest du?
                                Ich verwende die Version 2.2.0 und bei der liegt die "currtemp" unter

                                mqtt.0.thermostat_data_hc1
                                

                                Schau mal in deine Objekte. Vielleicht betrifft das dich ja auch.

                                K 1 Reply Last reply Reply Quote 0
                                • K
                                  kratzsch @Chaot last edited by

                                  @paul53
                                  Hallo habe wieder einmal ein Problem die Boiler Daten und Solar Daten vom Mqtt Adapter werden einzeln ausgegeben.
                                  Nur bei den Thermostat Daten klppt das nicht.
                                  Hier mein Skript```
                                  var json = "mqtt.0.thermostat_data"/thermostatData/;
                                  var currtemp = "0_userdata.0.Heizung.currtemp"/currtemp/;

                                  on(json, function(dp) {
                                  var obj = JSON.parse(dp.state.val);
                                  setState(currtemp, parseFloat(obj.currtemp));

                                  });

                                  1.1.2021, 19:36:30.167	[info ]: javascript.0 (29772) script.js.thermostat_data: setForeignState(id=0_userdata.0.Heizung.currtemp, state={"val":null,"ack":false,"c":"script.js.thermostat_data"})
                                  1.1.2021, 19:36:47.383	[info ]: javascript.0 (29772) Stop script script.js.thermostat_data
                                  1.1.2021, 19:36:47.443	[info ]: javascript.0 (29772) Start javascript script.js.thermostat_data
                                  1.1.2021, 19:36:47.467	[info ]: javascript.0 (29772) script.js.thermostat_data: subscribe: {"pattern":{"id":"mqtt.0.thermostat_data","change":"ne","q":0},"name":"script.js.thermostat_data"}
                                  1.1.2021, 19:36:47.469	[info ]: javascript.0 (29772) script.js.thermostat_data: registered 1 subscription and 0 schedules
                                  
                                  Vielleicht kannst du einen Fehler finden.
                                  Vielen Dank im voraus.
                                  
                                  so sieht das bei mir aus
                                  ```
                                  mqtt.0#13	
                                  						
                                  info#1	channel
                                  Information
                                  	channel					
                                  boiler_data	state
                                  ems-esp/boiler_data
                                  	state	variable			{"heatingActive":"off","tapwaterActive":"off","wWComfort":"Hot","wWSelTemp":60,"wWSetTemp":60,"wWDisinfectionTemp":70,"selFlowTemp":35,"selBurnPow":100,"curBurnPow":0,"pumpMod":100,"wWType":"buffer","wWChargeType":"charge pump","wWCircPump":"on","wWCircPumpMode":"continuous","wWCirc":"on","outdoorTemp":3.6,"wWCurTemp":58.4,"wWCurFlow":0,"curFlowTemp":32.9,"boilTemp":32.7,"wwStorageTemp1":58.4,"wWActivated":"on","wWOneTime":"off","wWDisinfecting":"off","wWCharging":"off","wWRecharging":"off","wWTempOK":"on","wWActive":"off","burnGas":"off","flameCurr":0,"heatPump":"on","fanWork":"off","ignWork":"off","wWHeat":"off","heatingActivated":"on","heatingTemp":49,"pumpModMax":100,"pumpModMin":100,"pumpDelay":7,"burnMinPeriod":10,"burnMinPower":0,"burnMaxPower":100,"boilHystOn":-6,"boilHystOff":6,"wWStarts":13321,"wWWorkM":66400,"UBAuptime":6606220,"burnStarts":114015,"burnWorkMin":397815,"heatWorkMin":331618,"serviceCode":"0Y","serviceCodeNumber":0}	
                                  heating_active	state
                                  ems-esp/heating_active
                                  	state	variable			off	
                                  hp_data	state
                                  ems-esp/hp_data
                                  	state	variable			 	
                                  mixing_data	state
                                  ems-esp/mixing_data
                                  	state	variable			 	
                                  sensor_data	state
                                  ems-esp/sensor_data
                                  	state	variable			 	
                                  solar_data	state
                                  ems-esp/solar_data
                                  	state	variable			{"collectorTemp":2.4,"tankBottomTemp":18.1,"solarPumpModulation":0,"solarPump":"off","pumpWorkMin":251591936}	
                                  status	state
                                  ems-esp/status
                                  	state	variable			online	
                                  tapwater_active	state
                                  ems-esp/tapwater_active
                                  	state	variable			off	
                                  thermostat	state
                                  ems-esp/thermostat
                                  	state	variable			{"cmd":"temp" ,"data":22.5, "hc":1}	
                                  thermostat_data	state
                                  ems-esp/thermostat_data
                                  	state	variable			{"time":"19:54:09 01/01/2021","errorcode":"(0)","display":"internal temperature","language":"German","offsetclock":0,"dampedtemp":3,"intoffset":0,"minexttemp":-10,"building":"medium","wwmode":"auto","wwcircmode":"auto","hc1":{"seltemp":23,"currtemp":24.2,"daytemp":23,"nighttemp":14.5,"holidaytemp":17,"nofrosttemp":248,"heatingtype":1,"targetflowtemp":35,"offsettemp":0,"designtemp":40,"roominfluence":1,"summertemp":18,"mode":"auto","modetype":"day"}}	
                                  ```
                                  {"time":"19:57:10 01/01/2021","errorcode":"(0)","display":"internal temperature","language":"German","offsetclock":0,"dampedtemp":3,"intoffset":0,"minexttemp":-10,"building":"medium","wwmode":"auto","wwcircmode":"auto","hc1":{"seltemp":23,"currtemp":24.2,"daytemp":23,"nighttemp":14.5,"holidaytemp":17,"nofrosttemp":248,"heatingtype":1,"targetflowtemp":35,"offsettemp":0,"designtemp":40,"roominfluence":1,"summertemp":18,"mode":"auto","modetype":"day"}}
                                  ```
                                  
                                  ```
                                  ```
                                  ```
                                  
                                  ```
                                  ```
                                  paul53 1 Reply Last reply Reply Quote 0
                                  • paul53
                                    paul53 @kratzsch last edited by

                                    @kratzsch sagte:

                                    setState(currtemp, parseFloat(obj.currtemp));

                                    Versuche es mal mit

                                       setState(currtemp, obj.hc1.currtemp, true);
                                    
                                    K 1 Reply Last reply Reply Quote 0
                                    • K
                                      kratzsch @paul53 last edited by

                                      @paul53 Vielen Dank hat sofort geklappt.

                                      Chaot 1 Reply Last reply Reply Quote 0
                                      • Chaot
                                        Chaot @kratzsch last edited by

                                        @kratzsch Ah, das ist der Datenpunkt der in der neuen Firmware separat herausgeführt wurde.
                                        Ich habe die Themostatdaten nie verwendet und auch nicht darauf geachtet wie deren json aussieht.

                                        Kannst du dir gleich vormerken das beim Update des ESP die Daten dann unter einem neuen Datenpunkt ( thermostat_data_hc1) liegen.

                                        1 Reply Last reply Reply Quote 0
                                        • First post
                                          Last post

                                        Support us

                                        ioBroker
                                        Community Adapters
                                        Donate

                                        523
                                        Online

                                        31.9k
                                        Users

                                        80.1k
                                        Topics

                                        1.3m
                                        Posts

                                        ventilation
                                        7
                                        57
                                        15269
                                        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