Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • 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

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. JavaScript
  5. JSON, Zigbee und ein undefined

NEWS

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    10
    1
    200

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    24
    1
    1.5k

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

JSON, Zigbee und ein undefined

Geplant Angeheftet Gesperrt Verschoben JavaScript
20 Beiträge 6 Kommentatoren 1.7k Aufrufe 4 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • paul53P paul53

    @mrzee sagte:

    steht dann was völlig anderes in dem String.

    Wenn ein beliebiger JSON-String enthalten sein kann, dann muss man alle Teile prüfen:

    var obj = JSON.parse(dp.state.val);
    if (obj && obj.ZbReceived && obj.ZbReceived.Vibration_Sensor) setState(Modus, obj.ZbReceived.Vibration_Sensor.AqaraVibrationMode, true);
    
    M Offline
    M Offline
    mrzee
    schrieb am zuletzt editiert von
    #11

    @paul53

    Danke dir, ich war die Tage unterwegs und bin noch nicht zum Testen gekommen. Ich hoffe, ich bekomme es die Tage hin.

    Z 1 Antwort Letzte Antwort
    0
    • M mrzee

      @paul53

      Danke dir, ich war die Tage unterwegs und bin noch nicht zum Testen gekommen. Ich hoffe, ich bekomme es die Tage hin.

      Z Offline
      Z Offline
      Zerosub
      schrieb am zuletzt editiert von
      #12

      @mrzee
      wie ist denn hier dein Stand?
      Ich bin ebenfalls seit geraumer Zeit mit der Tasmota ZbBridge unterwegs. Erstaunlich wie zuverlässig das mit der Sonoff Bridge funktioniert. Auch die Rechweite ist ziemlich gut.

      Leider habe ich das gleiche Problem:
      Die Werte im Sonoff Adapter sind nicht zuverlässig und werden auch bei einem KeepAlive verändert ...

      Konntest Du mit der MQTT Methode etwas erreichen?
      ich habe ziemlich nette Schalter gekauft (Aquara WXKG02LM) welche folgenden String per MQTT schicken:
      {"ZbReceived":{"0x282B":{"Device":"0x282B","MultiInValue":1,"Endpoint":3,"LinkQuality":105}}}

      Multivalue: ob kurz (0), lang(1) oder double(2) gedrückt wurde
      Endpoint: Schalter1 (1) , Schalter2 (2) oder beide (3)

      gibt es keine generelle Möglichkeit die MQTT Strings die rein kommen zu parsen?

      1 Antwort Letzte Antwort
      0
      • Z Offline
        Z Offline
        zweigelt99
        schrieb am zuletzt editiert von
        #13

        @zerosub @paul53

        Hallo, bin ebenfalls am zerlegen eines Json-String und bekomme es einfach nicht hin.

        Hier mein String:

        {"ZbReceived":{" Taster_allesaus":{"Device":"0x17EB","Name":" Taster_allesaus","0006!02":"","Power":2,"Endpoint":1,"LinkQuality":60}}}
        

        Hier mein Code:

        var json = "mqtt.0.Heurigen.zbbridge.tele.17EB.SENSOR"/*Mqtt_string vom tasmota zbbridge*/;
        
        var Taster = "0_userdata.0.Heurigen.zbbridge.Taster_allesaus"/*1 oder 2*/;
        
          on(json, function(dp) {
           var obj = JSON.parse(dp.state.val).ZbReceived.Taster_allesaus;
           setState(Taster, obj.Power);
        });
        

        Hier noch die Fehlermeldung aus dem Log:

        ~~javascript.0	2021-02-13 19:37:15.766	error	(1182) at processImmediate (internal/timers.js:461:21)
        javascript.0	2021-02-13 19:37:15.766	error	(1182) at Immediate._onImmediate (/opt/iobroker/node_modules/iobroker.js-controller/lib/adapter.js:5384:37)
        javascript.0	2021-02-13 19:37:15.766	error	(1182) at Object.stateChange (/opt/iobroker/node_modules/iobroker.javascript/main.js:472:25)
        javascript.0	2021-02-13 19:37:15.765	error	(1182) at Object.callback (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1055:38)
        javascript.0	2021-02-13 19:37:15.765	error	(1182) at Object.<anonymous> (script.js.Heurigen_zbbridge.Taster_allesausv3:15:25)
        javascript.0	2021-02-13 19:37:15.764	error	(1182) Error in callback: TypeError: Cannot read property 'Power' of undefined~~
        

        Kann mir bitte jemand sagen wo der Fehler liegt?

        Vielleicht hat auch jemand einen Link wie man an die Tasmota Zigbeebridge Befehle über den iobroker senden kann. Das ganze Thema scheint ja noch sehr jung zu sein.

        Vielen Dank

        F 1 Antwort Letzte Antwort
        0
        • Z zweigelt99

          @zerosub @paul53

          Hallo, bin ebenfalls am zerlegen eines Json-String und bekomme es einfach nicht hin.

          Hier mein String:

          {"ZbReceived":{" Taster_allesaus":{"Device":"0x17EB","Name":" Taster_allesaus","0006!02":"","Power":2,"Endpoint":1,"LinkQuality":60}}}
          

          Hier mein Code:

          var json = "mqtt.0.Heurigen.zbbridge.tele.17EB.SENSOR"/*Mqtt_string vom tasmota zbbridge*/;
          
          var Taster = "0_userdata.0.Heurigen.zbbridge.Taster_allesaus"/*1 oder 2*/;
          
            on(json, function(dp) {
             var obj = JSON.parse(dp.state.val).ZbReceived.Taster_allesaus;
             setState(Taster, obj.Power);
          });
          

          Hier noch die Fehlermeldung aus dem Log:

          ~~javascript.0	2021-02-13 19:37:15.766	error	(1182) at processImmediate (internal/timers.js:461:21)
          javascript.0	2021-02-13 19:37:15.766	error	(1182) at Immediate._onImmediate (/opt/iobroker/node_modules/iobroker.js-controller/lib/adapter.js:5384:37)
          javascript.0	2021-02-13 19:37:15.766	error	(1182) at Object.stateChange (/opt/iobroker/node_modules/iobroker.javascript/main.js:472:25)
          javascript.0	2021-02-13 19:37:15.765	error	(1182) at Object.callback (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1055:38)
          javascript.0	2021-02-13 19:37:15.765	error	(1182) at Object.<anonymous> (script.js.Heurigen_zbbridge.Taster_allesausv3:15:25)
          javascript.0	2021-02-13 19:37:15.764	error	(1182) Error in callback: TypeError: Cannot read property 'Power' of undefined~~
          

          Kann mir bitte jemand sagen wo der Fehler liegt?

          Vielleicht hat auch jemand einen Link wie man an die Tasmota Zigbeebridge Befehle über den iobroker senden kann. Das ganze Thema scheint ja noch sehr jung zu sein.

          Vielen Dank

          F Offline
          F Offline
          fastfoot
          schrieb am zuletzt editiert von
          #14

          @zweigelt99 sagte in JSON, Zigbee und ein undefined:

          ved":{" Tast

          Da ist ein Leerzeichen.
          var obj = JSON.parse(dp.state.val).ZbReceived.[" Taster_allesaus"];

          iobroker läuft unter Docker auf QNAP TS-451+
          SkriptRecovery: https://forum.iobroker.net/post/930558

          Z 1 Antwort Letzte Antwort
          0
          • F fastfoot

            @zweigelt99 sagte in JSON, Zigbee und ein undefined:

            ved":{" Tast

            Da ist ein Leerzeichen.
            var obj = JSON.parse(dp.state.val).ZbReceived.[" Taster_allesaus"];

            Z Offline
            Z Offline
            zweigelt99
            schrieb am zuletzt editiert von
            #15

            @fastfoot
            Danke das wars.

            1 Antwort Letzte Antwort
            0
            • Z Offline
              Z Offline
              zweigelt99
              schrieb am zuletzt editiert von
              #16

              Habe jetzt ein Heizkörperthermostat in iobroker eingebunden. Daten kommen auch am Datenpunkt richtig an.
              Allerdings kommt auch eine Fehlermeldung.

              javascript.0	2021-02-14 10:50:46.085	error	(1186) script.js.Heurigen_zbbridge.Therm_Tisch3: setForeignState: undefined is not a valid state value
              javascript.0	2021-02-14 10:50:46.085	warn	(1186) at processImmediate (internal/timers.js:461:21)
              javascript.0	2021-02-14 10:50:46.085	warn	(1186) at Immediate._onImmediate (/opt/iobroker/node_modules/iobroker.js-controller/lib/adapter.js:5384:37)
              javascript.0	2021-02-14 10:50:46.085	warn	(1186) at Object.stateChange (/opt/iobroker/node_modules/iobroker.javascript/main.js:472:25)
              javascript.0	2021-02-14 10:50:46.084	warn	(1186) at Object.callback (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1055:38)
              javascript.0	2021-02-14 10:50:46.084	warn	(1186) at Object.<anonymous> (script.js.Heurigen_zbbridge.Therm_Tisch3:19:5)
              javascript.0	2021-02-14 10:50:46.084	warn	(1186) at setState (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1358:20)
              javascript.0	2021-02-14 10:50:46.083	warn	(1186) You are assigning a undefined to the state "0_userdata.0.Heurigen.zbbridge.Thermostat.Tisch3_Ventilstellung" which expects a number. Please fix your code to use a number or change the state typ
              

              Kann ich diese Ignorieren?

              Code

              var json = "mqtt.0.Heurigen.zbbridge.tele.796D.SENSOR"/*Mqtt_string vom tasmota zbbridge*/;
              
              var TempIst = "0_userdata.0.Heurigen.zbbridge.Thermostat.Tisch3_Ist"/*Datenpunkt von0.0_userdata*/;
              var TempSoll = "0_userdata.0.Heurigen.zbbridge.Thermostat.Tisch3_Soll";
              var Motorstellung = "0_userdata.0.Heurigen.zbbridge.Thermostat.Tisch3_Ventilstellung";
              
                on(json, function(dp) {
                 var obj = JSON.parse(dp.state.val).ZbReceived.Therm_Tisch_3;/*Hier Name von ZigBee Gerät Eintregen*/
                 setState(TempIst, obj.LocalTemperature);
                  setState(TempSoll, obj.OccupiedHeatingSetpoint);
                  setState(Motorstellung, obj.PIHeatingDemand);
              });
              
              
              paul53P 1 Antwort Letzte Antwort
              0
              • Z zweigelt99

                Habe jetzt ein Heizkörperthermostat in iobroker eingebunden. Daten kommen auch am Datenpunkt richtig an.
                Allerdings kommt auch eine Fehlermeldung.

                javascript.0	2021-02-14 10:50:46.085	error	(1186) script.js.Heurigen_zbbridge.Therm_Tisch3: setForeignState: undefined is not a valid state value
                javascript.0	2021-02-14 10:50:46.085	warn	(1186) at processImmediate (internal/timers.js:461:21)
                javascript.0	2021-02-14 10:50:46.085	warn	(1186) at Immediate._onImmediate (/opt/iobroker/node_modules/iobroker.js-controller/lib/adapter.js:5384:37)
                javascript.0	2021-02-14 10:50:46.085	warn	(1186) at Object.stateChange (/opt/iobroker/node_modules/iobroker.javascript/main.js:472:25)
                javascript.0	2021-02-14 10:50:46.084	warn	(1186) at Object.callback (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1055:38)
                javascript.0	2021-02-14 10:50:46.084	warn	(1186) at Object.<anonymous> (script.js.Heurigen_zbbridge.Therm_Tisch3:19:5)
                javascript.0	2021-02-14 10:50:46.084	warn	(1186) at setState (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1358:20)
                javascript.0	2021-02-14 10:50:46.083	warn	(1186) You are assigning a undefined to the state "0_userdata.0.Heurigen.zbbridge.Thermostat.Tisch3_Ventilstellung" which expects a number. Please fix your code to use a number or change the state typ
                

                Kann ich diese Ignorieren?

                Code

                var json = "mqtt.0.Heurigen.zbbridge.tele.796D.SENSOR"/*Mqtt_string vom tasmota zbbridge*/;
                
                var TempIst = "0_userdata.0.Heurigen.zbbridge.Thermostat.Tisch3_Ist"/*Datenpunkt von0.0_userdata*/;
                var TempSoll = "0_userdata.0.Heurigen.zbbridge.Thermostat.Tisch3_Soll";
                var Motorstellung = "0_userdata.0.Heurigen.zbbridge.Thermostat.Tisch3_Ventilstellung";
                
                  on(json, function(dp) {
                   var obj = JSON.parse(dp.state.val).ZbReceived.Therm_Tisch_3;/*Hier Name von ZigBee Gerät Eintregen*/
                   setState(TempIst, obj.LocalTemperature);
                    setState(TempSoll, obj.OccupiedHeatingSetpoint);
                    setState(Motorstellung, obj.PIHeatingDemand);
                });
                
                
                paul53P Offline
                paul53P Offline
                paul53
                schrieb am zuletzt editiert von paul53
                #17

                @zweigelt99 sagte: You are assigning a undefined to the state "0_userdata.0.Heurigen.zbbridge.Thermostat.Tisch3_Ventilstellung" which expects a number.

                obj.PIHeatingDemand existiert offenbar nicht.

                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

                Z 1 Antwort Letzte Antwort
                0
                • paul53P paul53

                  @zweigelt99 sagte: You are assigning a undefined to the state "0_userdata.0.Heurigen.zbbridge.Thermostat.Tisch3_Ventilstellung" which expects a number.

                  obj.PIHeatingDemand existiert offenbar nicht.

                  Z Offline
                  Z Offline
                  zweigelt99
                  schrieb am zuletzt editiert von zweigelt99
                  #18

                  @paul53

                  Ok, offensichtlich schickt das Thermostat nicht immer die selbe Info, wie kann ich dann die Fehlemeldung vermeiden?
                  Weiter oben steht das Problem schon beschrieben aber irgendwie blicke ich nicht ganz durch.

                  Die Fehlermeldung kommt bei allen 3 Datenpunkten.

                  {"ZbReceived":{"Therm_Tisch_3":{"Device":"0x796D","Name":"Therm_Tisch_3","OccupiedHeatingSetpoint":20,"Endpoint":1,"LinkQuality":26}}}
                  
                  {"ZbReceived":{"Therm_Tisch_3":{"Device":"0x796D","Name":"Therm_Tisch_3","CurrentTemperatureSetPoint":20.5,"Endpoint":1,"LinkQuality":31}}}
                  
                  {"ZbReceived":{"Therm_Tisch_3":{"Device":"0x796D","Name":"Therm_Tisch_3","PIHeatingDemand":0,"Endpoint":1,"LinkQuality":31}}}
                  
                  paul53P 1 Antwort Letzte Antwort
                  0
                  • Z zweigelt99

                    @paul53

                    Ok, offensichtlich schickt das Thermostat nicht immer die selbe Info, wie kann ich dann die Fehlemeldung vermeiden?
                    Weiter oben steht das Problem schon beschrieben aber irgendwie blicke ich nicht ganz durch.

                    Die Fehlermeldung kommt bei allen 3 Datenpunkten.

                    {"ZbReceived":{"Therm_Tisch_3":{"Device":"0x796D","Name":"Therm_Tisch_3","OccupiedHeatingSetpoint":20,"Endpoint":1,"LinkQuality":26}}}
                    
                    {"ZbReceived":{"Therm_Tisch_3":{"Device":"0x796D","Name":"Therm_Tisch_3","CurrentTemperatureSetPoint":20.5,"Endpoint":1,"LinkQuality":31}}}
                    
                    {"ZbReceived":{"Therm_Tisch_3":{"Device":"0x796D","Name":"Therm_Tisch_3","PIHeatingDemand":0,"Endpoint":1,"LinkQuality":31}}}
                    
                    paul53P Offline
                    paul53P Offline
                    paul53
                    schrieb am zuletzt editiert von paul53
                    #19

                    @zweigelt99 sagte: wie kann ich dann die Fehlemeldung vermeiden?

                        if(obj.LocalTemperature) setState(TempIst, obj.LocalTemperature, true);
                        if(obj.CurrentTemperatureSetpoint) setState(TempSoll, obj.CurrentTemperatureSetPoint, true);
                        if(obj.PIHeatingDemand != undefined) setState(Motorstellung, obj.PIHeatingDemand, 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

                    Z 1 Antwort Letzte Antwort
                    0
                    • paul53P paul53

                      @zweigelt99 sagte: wie kann ich dann die Fehlemeldung vermeiden?

                          if(obj.LocalTemperature) setState(TempIst, obj.LocalTemperature, true);
                          if(obj.CurrentTemperatureSetpoint) setState(TempSoll, obj.CurrentTemperatureSetPoint, true);
                          if(obj.PIHeatingDemand != undefined) setState(Motorstellung, obj.PIHeatingDemand, true);
                      
                      Z Offline
                      Z Offline
                      zweigelt99
                      schrieb am zuletzt editiert von
                      #20

                      @paul53

                      Danke für die Hilfe, jetzt bin ich Fehlerfrei,

                      1 Antwort Letzte Antwort
                      0
                      Antworten
                      • In einem neuen Thema antworten
                      Anmelden zum Antworten
                      • Älteste zuerst
                      • Neuste zuerst
                      • Meiste Stimmen


                      Support us

                      ioBroker
                      Community Adapters
                      Donate

                      768

                      Online

                      32.5k

                      Benutzer

                      81.7k

                      Themen

                      1.3m

                      Beiträge
                      Community
                      Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                      ioBroker Community 2014-2025
                      logo
                      • Anmelden

                      • Du hast noch kein Konto? Registrieren

                      • Anmelden oder registrieren, um zu suchen
                      • Erster Beitrag
                        Letzter Beitrag
                      0
                      • Home
                      • Aktuell
                      • Tags
                      • Ungelesen 0
                      • Kategorien
                      • Unreplied
                      • Beliebt
                      • GitHub
                      • Docu
                      • Hilfe