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-String in Objekte schreiben

NEWS

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    22
    1
    1.2k

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

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    14
    1
    2.5k

Json-String in Objekte schreiben

Geplant Angeheftet Gesperrt Verschoben JavaScript
23 Beiträge 4 Kommentatoren 3.5k Aufrufe 1 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.
  • Ralla66R Ralla66

    @chrischros sagte in Json-String in Objekte schreiben:

    Hichi Wifi IR Smartmeter

    ist der Hichi am Tasmota ESP dran ?

    C Offline
    C Offline
    ChrisChros
    schrieb am zuletzt editiert von ChrisChros
    #4

    @ralla66 ja ist er.
    Ich weiß ich kann dann auch den Sonof Adapter nutzen, das habe ich auch funktioniert soweit auch alles bestens.
    Da ich aber noch mehr Sensoren habe die per MQTT senden wollte ich das alles zentral haben.

    1 Antwort Letzte Antwort
    0
    • C ChrisChros

      Hallo,
      ich versuche aktuell meinen Json-String den ich von einem Hichi Wifi IR Smartmeter bekomme auf entsprechende Objekte zu schreiben. Aktuell verusche ich aus verschiedenen Beiträgen mir ein funktionierendes Skript zusammenzustellen, leider ohne wirklichen Erfolg.
      Kann mir jemand von euch bitte dabei weiterhelfen.

      hier der ursprüngliche String den ich per MQTT erhalte:

      {"sn":{"Time":"2023-12-10T08:19:18","SM":{"1_8_0":2374.95355910,"2_8_0":23592.80211428,"16_7_0":487.01,"36_7_0":260.22,"56_7_0":107.08,"76_7_0":119.71,"32_7_0":231.6,"52_7_0":235.0,"72_7_0":231.6,"96_1_0":"***********"}},"ver":1}
      

      Hier etwas leserlicher:

      {
         "sn":{
            "Time":"2023-12-10T08:19:18",
            "SM":{
               "1_8_0":2374.95355910,
               "2_8_0":23592.80211428,
               "16_7_0":487.01,
               "36_7_0":260.22,
               "56_7_0":107.08,
               "76_7_0":119.71,
               "32_7_0":231.6,
               "52_7_0":235.0,
               "72_7_0":231.6,
               "96_1_0":"***********"
            }
         },
      

      Mein Skript sieht aktuell wie folgt aus:

      on({id: 'mqtt.0.tasmota/discovery/3494548E85FC/sensors', change: "any"}, function (obj) {
       
          var 1_8_0;
          var 2_8_0;
          var 16_7_0;
          var 36_7_0;
          var 56_7_0;
          var 76_7_0;
          var 32_7_0;
          var 52_7_0;
          var 72_7_0;
          var 96_1_0;
          
         //der try ist wichtig das der adapter nicht abschmiert bei einem fehler, hiermit pasen wird die json in ein object
         try {obj = JSON.parse(getState('mqtt.0.tasmota/discovery/3494548E85FC/sensors').val);
         } catch (e) {
             console.error('Cannot parse: ' + getState('mqtt.0.tasmota/discovery/3494548E85FC/sensors').val);
             return;
          }
         
         1_8_0 = obj.Bezung;
         2_8_0 = obj.Export;
         16_7_0 = obj.Leistung_aktuell;
         36_7_0 = obj.Leistung_L1;
         56_7_0 = obj.Leistung_L2;
         76_7_0 = obj.Leistung_L3;
         32_7_0 = obj.Spannung_L1;
         52_7_0 = obj.Spannung_L2;
         72_7_0 = obj.Spannung_L3;
         96_1_0 = obj.Seriennummer;
        
        setState('javascript.0.Hichi_Wifi_IR.Bezug', obj[''].Bezug, true);
        setState('javascript.0.Hichi_Wifi_IR.Export', obj[''].Export, true);
        setState('javascript.0.Hichi_Wifi_IR.Leistung_aktuell', obj[''].Leistung_aktuell, true);
        setState('javascript.0.Hichi_Wifi_IR.Leistung_L1', obj[''].Leistung_L1, true);
        setState('javascript.0.Hichi_Wifi_IR.Leistung_L2', obj[''].Leistung_L2, true);
        setState('javascript.0.Hichi_Wifi_IR.Leistung_L3', obj[''].Leistung_L3, true);
        setState('javascript.0.Hichi_Wifi_IR.Spannung_L1', obj[''].Spannung_L1, true);
        setState('javascript.0.Hichi_Wifi_IR.Spannung_L2', obj[''].Spannung_L2, true);
        setState('javascript.0.Hichi_Wifi_IR.Spannung_L3', obj[''].Spannung_L3, true);
        setState('javascript.0.Hichi_Wifi_IR.Seriennummer', obj[''].Seriennummer, true);
         
      });
      

      Als Fehlermeldung erhalte ich aktuell folgendes:

      15:15:21.913	error	javascript.0 (17262) script.js.common.Hichi_Wifi_IR.MQTT_Parsen compile failed: at script.js.common.Hichi_Wifi_IR.MQTT_Parsen:3
      

      Worin liegt aktuell das Problem?

      paul53P Offline
      paul53P Offline
      paul53
      schrieb am zuletzt editiert von
      #5

      @chrischros sagte: Worin liegt aktuell das Problem?

      (Variablen-)Bezeichner dürfen nicht mit einer Ziffer beginnen. Außerdem:

      Bezug = obj.sn.SM['1_8_0'];
      

      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

      1 Antwort Letzte Antwort
      1
      • C ChrisChros

        Hallo,
        ich versuche aktuell meinen Json-String den ich von einem Hichi Wifi IR Smartmeter bekomme auf entsprechende Objekte zu schreiben. Aktuell verusche ich aus verschiedenen Beiträgen mir ein funktionierendes Skript zusammenzustellen, leider ohne wirklichen Erfolg.
        Kann mir jemand von euch bitte dabei weiterhelfen.

        hier der ursprüngliche String den ich per MQTT erhalte:

        {"sn":{"Time":"2023-12-10T08:19:18","SM":{"1_8_0":2374.95355910,"2_8_0":23592.80211428,"16_7_0":487.01,"36_7_0":260.22,"56_7_0":107.08,"76_7_0":119.71,"32_7_0":231.6,"52_7_0":235.0,"72_7_0":231.6,"96_1_0":"***********"}},"ver":1}
        

        Hier etwas leserlicher:

        {
           "sn":{
              "Time":"2023-12-10T08:19:18",
              "SM":{
                 "1_8_0":2374.95355910,
                 "2_8_0":23592.80211428,
                 "16_7_0":487.01,
                 "36_7_0":260.22,
                 "56_7_0":107.08,
                 "76_7_0":119.71,
                 "32_7_0":231.6,
                 "52_7_0":235.0,
                 "72_7_0":231.6,
                 "96_1_0":"***********"
              }
           },
        

        Mein Skript sieht aktuell wie folgt aus:

        on({id: 'mqtt.0.tasmota/discovery/3494548E85FC/sensors', change: "any"}, function (obj) {
         
            var 1_8_0;
            var 2_8_0;
            var 16_7_0;
            var 36_7_0;
            var 56_7_0;
            var 76_7_0;
            var 32_7_0;
            var 52_7_0;
            var 72_7_0;
            var 96_1_0;
            
           //der try ist wichtig das der adapter nicht abschmiert bei einem fehler, hiermit pasen wird die json in ein object
           try {obj = JSON.parse(getState('mqtt.0.tasmota/discovery/3494548E85FC/sensors').val);
           } catch (e) {
               console.error('Cannot parse: ' + getState('mqtt.0.tasmota/discovery/3494548E85FC/sensors').val);
               return;
            }
           
           1_8_0 = obj.Bezung;
           2_8_0 = obj.Export;
           16_7_0 = obj.Leistung_aktuell;
           36_7_0 = obj.Leistung_L1;
           56_7_0 = obj.Leistung_L2;
           76_7_0 = obj.Leistung_L3;
           32_7_0 = obj.Spannung_L1;
           52_7_0 = obj.Spannung_L2;
           72_7_0 = obj.Spannung_L3;
           96_1_0 = obj.Seriennummer;
          
          setState('javascript.0.Hichi_Wifi_IR.Bezug', obj[''].Bezug, true);
          setState('javascript.0.Hichi_Wifi_IR.Export', obj[''].Export, true);
          setState('javascript.0.Hichi_Wifi_IR.Leistung_aktuell', obj[''].Leistung_aktuell, true);
          setState('javascript.0.Hichi_Wifi_IR.Leistung_L1', obj[''].Leistung_L1, true);
          setState('javascript.0.Hichi_Wifi_IR.Leistung_L2', obj[''].Leistung_L2, true);
          setState('javascript.0.Hichi_Wifi_IR.Leistung_L3', obj[''].Leistung_L3, true);
          setState('javascript.0.Hichi_Wifi_IR.Spannung_L1', obj[''].Spannung_L1, true);
          setState('javascript.0.Hichi_Wifi_IR.Spannung_L2', obj[''].Spannung_L2, true);
          setState('javascript.0.Hichi_Wifi_IR.Spannung_L3', obj[''].Spannung_L3, true);
          setState('javascript.0.Hichi_Wifi_IR.Seriennummer', obj[''].Seriennummer, true);
           
        });
        

        Als Fehlermeldung erhalte ich aktuell folgendes:

        15:15:21.913	error	javascript.0 (17262) script.js.common.Hichi_Wifi_IR.MQTT_Parsen compile failed: at script.js.common.Hichi_Wifi_IR.MQTT_Parsen:3
        

        Worin liegt aktuell das Problem?

        paul53P Offline
        paul53P Offline
        paul53
        schrieb am zuletzt editiert von
        #6

        @chrischros sagt: Mein Skript sieht aktuell wie folgt aus:

        Vorschlag:

        on('mqtt.0.tasmota/discovery/3494548E85FC/sensors', function (dp) {
            let obj = {};
            //der try ist wichtig das der adapter nicht abschmiert bei einem fehler, hiermit pasen wird die json in ein object
            try {obj = JSON.parse(dp.state.val).sn.SM;
            } catch (e) {
               console.error('Cannot parse: ' + dp.state.val);
               return;
            }
           
            setState('javascript.0.Hichi_Wifi_IR.Bezug', obj['1_8_0'], true);
            setState('javascript.0.Hichi_Wifi_IR.Export', obj['2_8_0'], true);
            setState('javascript.0.Hichi_Wifi_IR.Leistung_aktuell', obj['16_7_0'], true);
            setState('javascript.0.Hichi_Wifi_IR.Leistung_L1', obj['36_7_0'], true);
            setState('javascript.0.Hichi_Wifi_IR.Leistung_L2', obj['56_7_0'], true);
            setState('javascript.0.Hichi_Wifi_IR.Leistung_L3', obj['76_7_0'], true);
            setState('javascript.0.Hichi_Wifi_IR.Spannung_L1', obj['32_7_0'], true);
            setState('javascript.0.Hichi_Wifi_IR.Spannung_L2', obj['52_7_0'], true);
            setState('javascript.0.Hichi_Wifi_IR.Spannung_L3', obj['72_7_0'], 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

        C 1 Antwort Letzte Antwort
        0
        • paul53P paul53

          @chrischros sagt: Mein Skript sieht aktuell wie folgt aus:

          Vorschlag:

          on('mqtt.0.tasmota/discovery/3494548E85FC/sensors', function (dp) {
              let obj = {};
              //der try ist wichtig das der adapter nicht abschmiert bei einem fehler, hiermit pasen wird die json in ein object
              try {obj = JSON.parse(dp.state.val).sn.SM;
              } catch (e) {
                 console.error('Cannot parse: ' + dp.state.val);
                 return;
              }
             
              setState('javascript.0.Hichi_Wifi_IR.Bezug', obj['1_8_0'], true);
              setState('javascript.0.Hichi_Wifi_IR.Export', obj['2_8_0'], true);
              setState('javascript.0.Hichi_Wifi_IR.Leistung_aktuell', obj['16_7_0'], true);
              setState('javascript.0.Hichi_Wifi_IR.Leistung_L1', obj['36_7_0'], true);
              setState('javascript.0.Hichi_Wifi_IR.Leistung_L2', obj['56_7_0'], true);
              setState('javascript.0.Hichi_Wifi_IR.Leistung_L3', obj['76_7_0'], true);
              setState('javascript.0.Hichi_Wifi_IR.Spannung_L1', obj['32_7_0'], true);
              setState('javascript.0.Hichi_Wifi_IR.Spannung_L2', obj['52_7_0'], true);
              setState('javascript.0.Hichi_Wifi_IR.Spannung_L3', obj['72_7_0'], true);
          });
          
          C Offline
          C Offline
          ChrisChros
          schrieb am zuletzt editiert von
          #7

          @paul53 vielen Dank, sieht etwas schlanker aus als bei mir.
          Eine Frage noch, wird bei setState auch ein Object angelegt oder nur der Wert aktualisiert?

          paul53P 1 Antwort Letzte Antwort
          0
          • C ChrisChros

            @paul53 vielen Dank, sieht etwas schlanker aus als bei mir.
            Eine Frage noch, wird bei setState auch ein Object angelegt oder nur der Wert aktualisiert?

            paul53P Offline
            paul53P Offline
            paul53
            schrieb am zuletzt editiert von paul53
            #8

            @chrischros sagte: wird bei setState auch ein Object angelegt oder nur der Wert aktualisiert?

            Es wird nur der Zustand aktualisiert. Der Datenpunkt muss bereits existieren.
            Erstelle eigene Datenpunkte besser unter "0_userdata.0".

            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

            C 1 Antwort Letzte Antwort
            0
            • paul53P paul53

              @chrischros sagte: wird bei setState auch ein Object angelegt oder nur der Wert aktualisiert?

              Es wird nur der Zustand aktualisiert. Der Datenpunkt muss bereits existieren.
              Erstelle eigene Datenpunkte besser unter "0_userdata.0".

              C Offline
              C Offline
              ChrisChros
              schrieb am zuletzt editiert von
              #9

              @paul53 ok, danke für den Hinweis.
              werde dann mal alles in "0_userdate.0" schreiben.

              setState('0_userdate.0.Hichi_Wifi_IR.Bezug', (kWh));
              

              Wenn ich einen eigenen Datenpunkt erstellen möchte, würde das so klappen?

              createState('0_userdate.0.Hichi_Wifi_IR.Bezug'', 0,{type: 'nummer',name: 'Bezug kWh Zahl', read: true,write: true,role: 'value.watt'})
              

              Diese Zeilen müssten dann auch ganz an den Anfang des Skrips, noch vor

              on('mqtt.0.tasmota/discovery/3494548E85FC/sensors', function (dp) {
              

              oder?

              paul53P 1 Antwort Letzte Antwort
              0
              • C ChrisChros

                @paul53 ok, danke für den Hinweis.
                werde dann mal alles in "0_userdate.0" schreiben.

                setState('0_userdate.0.Hichi_Wifi_IR.Bezug', (kWh));
                

                Wenn ich einen eigenen Datenpunkt erstellen möchte, würde das so klappen?

                createState('0_userdate.0.Hichi_Wifi_IR.Bezug'', 0,{type: 'nummer',name: 'Bezug kWh Zahl', read: true,write: true,role: 'value.watt'})
                

                Diese Zeilen müssten dann auch ganz an den Anfang des Skrips, noch vor

                on('mqtt.0.tasmota/discovery/3494548E85FC/sensors', function (dp) {
                

                oder?

                paul53P Offline
                paul53P Offline
                paul53
                schrieb am zuletzt editiert von paul53
                #10

                @chrischros sagte: würde das so klappen?

                Nein, so:

                createState('0_userdata.0.Hichi_Wifi_IR.Bezug', 0, {type: 'number', name: 'Bezug', unit: 'kWh', read: true, write: false, role: 'value.energy'})
                

                @chrischros sagte in Json-String in Objekte schreiben:

                Diese Zeilen müssten dann auch ganz an den Anfang des Skrips, noch vor on

                Ja, oder in einem zusätzlichen Skript, das anschließend gelöscht werden kann.
                Erstelle manuell im Tab "Objekte" ein Objekt (Typ "folder" oder "device") unter "0_userdata.0" mit dem Namen "Hichi_Wifi_IR".

                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

                C 1 Antwort Letzte Antwort
                0
                • paul53P paul53

                  @chrischros sagte: würde das so klappen?

                  Nein, so:

                  createState('0_userdata.0.Hichi_Wifi_IR.Bezug', 0, {type: 'number', name: 'Bezug', unit: 'kWh', read: true, write: false, role: 'value.energy'})
                  

                  @chrischros sagte in Json-String in Objekte schreiben:

                  Diese Zeilen müssten dann auch ganz an den Anfang des Skrips, noch vor on

                  Ja, oder in einem zusätzlichen Skript, das anschließend gelöscht werden kann.
                  Erstelle manuell im Tab "Objekte" ein Objekt (Typ "folder" oder "device") unter "0_userdata.0" mit dem Namen "Hichi_Wifi_IR".

                  C Offline
                  C Offline
                  ChrisChros
                  schrieb am zuletzt editiert von
                  #11

                  @paul53 sagte in Json-String in Objekte schreiben:

                  Hichi_Wifi_IR

                  Super danke, wie sieht das dann bei z.B. der Seriennummer aus, die sowohl aus Zahlen und Buchstaben besteht?

                  createState('0_userdata.0.Hichi_Wifi_IR.Seriennummer', 0, {type: 'mixed', name: 'Seriennummer', read: true, write: false, role: 'state'})
                  
                  paul53P T 2 Antworten Letzte Antwort
                  0
                  • C ChrisChros

                    @paul53 sagte in Json-String in Objekte schreiben:

                    Hichi_Wifi_IR

                    Super danke, wie sieht das dann bei z.B. der Seriennummer aus, die sowohl aus Zahlen und Buchstaben besteht?

                    createState('0_userdata.0.Hichi_Wifi_IR.Seriennummer', 0, {type: 'mixed', name: 'Seriennummer', read: true, write: false, role: 'state'})
                    
                    paul53P Offline
                    paul53P Offline
                    paul53
                    schrieb am zuletzt editiert von paul53
                    #12

                    @chrischros sagte: Seriennummer

                    type: 'string'
                    

                    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

                    1 Antwort Letzte Antwort
                    1
                    • C ChrisChros

                      @paul53 sagte in Json-String in Objekte schreiben:

                      Hichi_Wifi_IR

                      Super danke, wie sieht das dann bei z.B. der Seriennummer aus, die sowohl aus Zahlen und Buchstaben besteht?

                      createState('0_userdata.0.Hichi_Wifi_IR.Seriennummer', 0, {type: 'mixed', name: 'Seriennummer', read: true, write: false, role: 'state'})
                      
                      T Offline
                      T Offline
                      ticaki
                      schrieb am zuletzt editiert von
                      #13

                      @chrischros

                      eine Zeichenkette die keine nummer ist ist ein string.

                      Weather-Warnings Espresense NSPanel-Lovelace-ui Tagesschau

                      Spenden

                      1 Antwort Letzte Antwort
                      1
                      • C Offline
                        C Offline
                        ChrisChros
                        schrieb am zuletzt editiert von ChrisChros
                        #14

                        Vielen Dank für die Unterstützung.
                        Habe das jetzt noch etwas angepasst, sieht nun so aus:

                        createState('0_userdata.0.Hichi_Wifi_IR.Bezug', 0, {type: 'number', name: 'Bezug', unit: 'kWh', read: true, write: false, role: 'value.energy'})
                        createState('0_userdata.0.Hichi_Wifi_IR.Export', 0, {type: 'number', name: 'Export', unit: 'kWh', read: true, write: false, role: 'value.energy'})
                        createState('0_userdata.0.Hichi_Wifi_IR.Leistung_aktuell', 0, {type: 'number', name: 'Leistung_aktuell', unit: 'W', read: true, write: false, role: 'value.energy'})
                        createState('0_userdata.0.Hichi_Wifi_IR.Leistung_L1', 0, {type: 'number', name: 'Leistung_L1', unit: 'W', read: true, write: false, role: 'value.energy'})
                        createState('0_userdata.0.Hichi_Wifi_IR.Leistung_L2', 0, {type: 'number', name: 'Leistung_L2', unit: 'W', read: true, write: false, role: 'value.energy'})
                        createState('0_userdata.0.Hichi_Wifi_IR.Leistung_L3', 0, {type: 'number', name: 'Leistung_L3', unit: 'W', read: true, write: false, role: 'value.energy'})
                        createState('0_userdata.0.Hichi_Wifi_IR.Spannung_L1', 0, {type: 'number', name: 'Spannung_L1', unit: 'V', read: true, write: false, role: 'value.energy'})
                        createState('0_userdata.0.Hichi_Wifi_IR.Spannung_L2', 0, {type: 'number', name: 'Spannung_L2', unit: 'V', read: true, write: false, role: 'value.energy'})
                        createState('0_userdata.0.Hichi_Wifi_IR.Spannung_L3', 0, {type: 'number', name: 'Spannung_L3', unit: 'V', read: true, write: false, role: 'value.energy'})
                        createState('0_userdata.0.Hichi_Wifi_IR.Seriennummer', 0, {type: 'string', name: 'Seriennummer', read: true, write: false, role: 'state'})
                        
                        on('mqtt.0.tasmota/discovery/3494548E85FC/sensors', function (dp) {
                            let obj = {};
                            //der try ist wichtig das der adapter nicht abschmiert bei einem fehler, hiermit pasen wird die json in ein object
                            try {obj = JSON.parse(dp.state.val).sn.SM;
                            } catch (e) {
                               console.error('Cannot parse: ' + dp.state.val);
                               return;
                            }
                           
                            setState('0_userdata.0.Hichi_Wifi_IR.Bezug', obj['1_8_0'], true);
                            setState('0_userdata.0.Hichi_Wifi_IR.Export', obj['2_8_0'], true);
                            setState('0_userdata.0.Hichi_Wifi_IR.Leistung_aktuell', obj['16_7_0'], true);
                            setState('0_userdata.0.Hichi_Wifi_IR.Leistung_L1', obj['36_7_0'], true);
                            setState('0_userdata.0.Hichi_Wifi_IR.Leistung_L2', obj['56_7_0'], true);
                            setState('0_userdata.0.Hichi_Wifi_IR.Leistung_L3', obj['76_7_0'], true);
                            setState('0_userdata.0.Hichi_Wifi_IR.Spannung_L1', obj['32_7_0'], true);
                            setState('0_userdata.0.Hichi_Wifi_IR.Spannung_L2', obj['52_7_0'], true);
                            setState('0_userdata.0.Hichi_Wifi_IR.Spannung_L3', obj['72_7_0'], true);
                            setState('0_userdata.0.Hichi_Wifi_IR.Seriennummer', obj['96_1_0'], true);
                        });
                        

                        Würde das soweit passen oder gibt es noch Fehler darin?

                        T paul53P 2 Antworten Letzte Antwort
                        0
                        • C ChrisChros

                          Vielen Dank für die Unterstützung.
                          Habe das jetzt noch etwas angepasst, sieht nun so aus:

                          createState('0_userdata.0.Hichi_Wifi_IR.Bezug', 0, {type: 'number', name: 'Bezug', unit: 'kWh', read: true, write: false, role: 'value.energy'})
                          createState('0_userdata.0.Hichi_Wifi_IR.Export', 0, {type: 'number', name: 'Export', unit: 'kWh', read: true, write: false, role: 'value.energy'})
                          createState('0_userdata.0.Hichi_Wifi_IR.Leistung_aktuell', 0, {type: 'number', name: 'Leistung_aktuell', unit: 'W', read: true, write: false, role: 'value.energy'})
                          createState('0_userdata.0.Hichi_Wifi_IR.Leistung_L1', 0, {type: 'number', name: 'Leistung_L1', unit: 'W', read: true, write: false, role: 'value.energy'})
                          createState('0_userdata.0.Hichi_Wifi_IR.Leistung_L2', 0, {type: 'number', name: 'Leistung_L2', unit: 'W', read: true, write: false, role: 'value.energy'})
                          createState('0_userdata.0.Hichi_Wifi_IR.Leistung_L3', 0, {type: 'number', name: 'Leistung_L3', unit: 'W', read: true, write: false, role: 'value.energy'})
                          createState('0_userdata.0.Hichi_Wifi_IR.Spannung_L1', 0, {type: 'number', name: 'Spannung_L1', unit: 'V', read: true, write: false, role: 'value.energy'})
                          createState('0_userdata.0.Hichi_Wifi_IR.Spannung_L2', 0, {type: 'number', name: 'Spannung_L2', unit: 'V', read: true, write: false, role: 'value.energy'})
                          createState('0_userdata.0.Hichi_Wifi_IR.Spannung_L3', 0, {type: 'number', name: 'Spannung_L3', unit: 'V', read: true, write: false, role: 'value.energy'})
                          createState('0_userdata.0.Hichi_Wifi_IR.Seriennummer', 0, {type: 'string', name: 'Seriennummer', read: true, write: false, role: 'state'})
                          
                          on('mqtt.0.tasmota/discovery/3494548E85FC/sensors', function (dp) {
                              let obj = {};
                              //der try ist wichtig das der adapter nicht abschmiert bei einem fehler, hiermit pasen wird die json in ein object
                              try {obj = JSON.parse(dp.state.val).sn.SM;
                              } catch (e) {
                                 console.error('Cannot parse: ' + dp.state.val);
                                 return;
                              }
                             
                              setState('0_userdata.0.Hichi_Wifi_IR.Bezug', obj['1_8_0'], true);
                              setState('0_userdata.0.Hichi_Wifi_IR.Export', obj['2_8_0'], true);
                              setState('0_userdata.0.Hichi_Wifi_IR.Leistung_aktuell', obj['16_7_0'], true);
                              setState('0_userdata.0.Hichi_Wifi_IR.Leistung_L1', obj['36_7_0'], true);
                              setState('0_userdata.0.Hichi_Wifi_IR.Leistung_L2', obj['56_7_0'], true);
                              setState('0_userdata.0.Hichi_Wifi_IR.Leistung_L3', obj['76_7_0'], true);
                              setState('0_userdata.0.Hichi_Wifi_IR.Spannung_L1', obj['32_7_0'], true);
                              setState('0_userdata.0.Hichi_Wifi_IR.Spannung_L2', obj['52_7_0'], true);
                              setState('0_userdata.0.Hichi_Wifi_IR.Spannung_L3', obj['72_7_0'], true);
                              setState('0_userdata.0.Hichi_Wifi_IR.Seriennummer', obj['96_1_0'], true);
                          });
                          

                          Würde das soweit passen oder gibt es noch Fehler darin?

                          T Offline
                          T Offline
                          ticaki
                          schrieb am zuletzt editiert von
                          #15

                          @chrischros

                          ich weiß gerade nicht ob obj im Fehlerfall {} oder undefinied enthält. Das solltest du checken in dem du einen absichtlich Fehler erzeugst. Ansonsten siehts gut aus.

                          Noch was kleinkarriertes, wenn du rolen benutzten willst, hier findest du die richtigen: https://github.com/ioBroker/ioBroker.docs/blob/master/docs/en/dev/stateroles.md

                          Weather-Warnings Espresense NSPanel-Lovelace-ui Tagesschau

                          Spenden

                          paul53P 1 Antwort Letzte Antwort
                          0
                          • C ChrisChros

                            Vielen Dank für die Unterstützung.
                            Habe das jetzt noch etwas angepasst, sieht nun so aus:

                            createState('0_userdata.0.Hichi_Wifi_IR.Bezug', 0, {type: 'number', name: 'Bezug', unit: 'kWh', read: true, write: false, role: 'value.energy'})
                            createState('0_userdata.0.Hichi_Wifi_IR.Export', 0, {type: 'number', name: 'Export', unit: 'kWh', read: true, write: false, role: 'value.energy'})
                            createState('0_userdata.0.Hichi_Wifi_IR.Leistung_aktuell', 0, {type: 'number', name: 'Leistung_aktuell', unit: 'W', read: true, write: false, role: 'value.energy'})
                            createState('0_userdata.0.Hichi_Wifi_IR.Leistung_L1', 0, {type: 'number', name: 'Leistung_L1', unit: 'W', read: true, write: false, role: 'value.energy'})
                            createState('0_userdata.0.Hichi_Wifi_IR.Leistung_L2', 0, {type: 'number', name: 'Leistung_L2', unit: 'W', read: true, write: false, role: 'value.energy'})
                            createState('0_userdata.0.Hichi_Wifi_IR.Leistung_L3', 0, {type: 'number', name: 'Leistung_L3', unit: 'W', read: true, write: false, role: 'value.energy'})
                            createState('0_userdata.0.Hichi_Wifi_IR.Spannung_L1', 0, {type: 'number', name: 'Spannung_L1', unit: 'V', read: true, write: false, role: 'value.energy'})
                            createState('0_userdata.0.Hichi_Wifi_IR.Spannung_L2', 0, {type: 'number', name: 'Spannung_L2', unit: 'V', read: true, write: false, role: 'value.energy'})
                            createState('0_userdata.0.Hichi_Wifi_IR.Spannung_L3', 0, {type: 'number', name: 'Spannung_L3', unit: 'V', read: true, write: false, role: 'value.energy'})
                            createState('0_userdata.0.Hichi_Wifi_IR.Seriennummer', 0, {type: 'string', name: 'Seriennummer', read: true, write: false, role: 'state'})
                            
                            on('mqtt.0.tasmota/discovery/3494548E85FC/sensors', function (dp) {
                                let obj = {};
                                //der try ist wichtig das der adapter nicht abschmiert bei einem fehler, hiermit pasen wird die json in ein object
                                try {obj = JSON.parse(dp.state.val).sn.SM;
                                } catch (e) {
                                   console.error('Cannot parse: ' + dp.state.val);
                                   return;
                                }
                               
                                setState('0_userdata.0.Hichi_Wifi_IR.Bezug', obj['1_8_0'], true);
                                setState('0_userdata.0.Hichi_Wifi_IR.Export', obj['2_8_0'], true);
                                setState('0_userdata.0.Hichi_Wifi_IR.Leistung_aktuell', obj['16_7_0'], true);
                                setState('0_userdata.0.Hichi_Wifi_IR.Leistung_L1', obj['36_7_0'], true);
                                setState('0_userdata.0.Hichi_Wifi_IR.Leistung_L2', obj['56_7_0'], true);
                                setState('0_userdata.0.Hichi_Wifi_IR.Leistung_L3', obj['76_7_0'], true);
                                setState('0_userdata.0.Hichi_Wifi_IR.Spannung_L1', obj['32_7_0'], true);
                                setState('0_userdata.0.Hichi_Wifi_IR.Spannung_L2', obj['52_7_0'], true);
                                setState('0_userdata.0.Hichi_Wifi_IR.Spannung_L3', obj['72_7_0'], true);
                                setState('0_userdata.0.Hichi_Wifi_IR.Seriennummer', obj['96_1_0'], true);
                            });
                            

                            Würde das soweit passen oder gibt es noch Fehler darin?

                            paul53P Offline
                            paul53P Offline
                            paul53
                            schrieb am zuletzt editiert von
                            #16

                            @chrischros sagte: gibt es noch Fehler darin?

                            Der Initialisierungswert für die Seriennummer sollte ein Leerstring sein - keine 0.
                            Die Rollen passen nicht. Leistung: "value.power", Spannung: "value.voltage".

                            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

                            1 Antwort Letzte Antwort
                            0
                            • C Offline
                              C Offline
                              ChrisChros
                              schrieb am zuletzt editiert von
                              #17

                              habe das Skript angepasst:

                              createState('0_userdata.0.Hichi_Wifi_IR.Bezug', 0, {type: 'number', name: 'Bezug', unit: 'kWh', read: true, write: false, role: 'value.energy'})
                              createState('0_userdata.0.Hichi_Wifi_IR.Export', 0, {type: 'number', name: 'Export', unit: 'kWh', read: true, write: false, role: 'value.energy'})
                              createState('0_userdata.0.Hichi_Wifi_IR.Leistung_aktuell', 0, {type: 'number', name: 'Leistung_aktuell', unit: 'W', read: true, write: false, role: 'value.power'})
                              createState('0_userdata.0.Hichi_Wifi_IR.Leistung_L1', 0, {type: 'number', name: 'Leistung_L1', unit: 'W', read: true, write: false, role: 'value.power'})
                              createState('0_userdata.0.Hichi_Wifi_IR.Leistung_L2', 0, {type: 'number', name: 'Leistung_L2', unit: 'W', read: true, write: false, role: 'value.power'})
                              createState('0_userdata.0.Hichi_Wifi_IR.Leistung_L3', 0, {type: 'number', name: 'Leistung_L3', unit: 'W', read: true, write: false, role: 'value.power'})
                              createState('0_userdata.0.Hichi_Wifi_IR.Spannung_L1', 0, {type: 'number', name: 'Spannung_L1', unit: 'V', read: true, write: false, role: 'value.voltage'})
                              createState('0_userdata.0.Hichi_Wifi_IR.Spannung_L2', 0, {type: 'number', name: 'Spannung_L2', unit: 'V', read: true, write: false, role: 'value.voltage'})
                              createState('0_userdata.0.Hichi_Wifi_IR.Spannung_L3', 0, {type: 'number', name: 'Spannung_L3', unit: 'V', read: true, write: false, role: 'value.voltage'})
                              createState('0_userdata.0.Hichi_Wifi_IR.Seriennummer', ' ', {type: 'string', name: 'Seriennummer', read: true, write: false, role: 'state'})
                              
                              on('mqtt.0.tasmota/discovery/3494548E85FC/sensors', function (dp) {
                                  let obj = {};
                                  //der try ist wichtig das der adapter nicht abschmiert bei einem fehler, hiermit pasen wird die json in ein object
                                  try {obj = JSON.parse(dp.state.val).sn.SM;
                                  } catch (e) {
                                     console.error('Cannot parse: ' + dp.state.val);
                                     return;
                                  }
                                 
                                  setState('0_userdata.0.Hichi_Wifi_IR.Bezug', obj['1_8_0'], true);
                                  setState('0_userdata.0.Hichi_Wifi_IR.Export', obj['2_8_0'], true);
                                  setState('0_userdata.0.Hichi_Wifi_IR.Leistung_aktuell', obj['16_7_0'], true);
                                  setState('0_userdata.0.Hichi_Wifi_IR.Leistung_L1', obj['36_7_0'], true);
                                  setState('0_userdata.0.Hichi_Wifi_IR.Leistung_L2', obj['56_7_0'], true);
                                  setState('0_userdata.0.Hichi_Wifi_IR.Leistung_L3', obj['76_7_0'], true);
                                  setState('0_userdata.0.Hichi_Wifi_IR.Spannung_L1', obj['32_7_0'], true);
                                  setState('0_userdata.0.Hichi_Wifi_IR.Spannung_L2', obj['52_7_0'], true);
                                  setState('0_userdata.0.Hichi_Wifi_IR.Spannung_L3', obj['72_7_0'], true);
                                  setState('0_userdata.0.Hichi_Wifi_IR.Seriennummer', obj['96_1_0'], true);
                              });
                              

                              Ist der Leerstring so richtig eingepflegt?

                              paul53P 1 Antwort Letzte Antwort
                              0
                              • C ChrisChros

                                habe das Skript angepasst:

                                createState('0_userdata.0.Hichi_Wifi_IR.Bezug', 0, {type: 'number', name: 'Bezug', unit: 'kWh', read: true, write: false, role: 'value.energy'})
                                createState('0_userdata.0.Hichi_Wifi_IR.Export', 0, {type: 'number', name: 'Export', unit: 'kWh', read: true, write: false, role: 'value.energy'})
                                createState('0_userdata.0.Hichi_Wifi_IR.Leistung_aktuell', 0, {type: 'number', name: 'Leistung_aktuell', unit: 'W', read: true, write: false, role: 'value.power'})
                                createState('0_userdata.0.Hichi_Wifi_IR.Leistung_L1', 0, {type: 'number', name: 'Leistung_L1', unit: 'W', read: true, write: false, role: 'value.power'})
                                createState('0_userdata.0.Hichi_Wifi_IR.Leistung_L2', 0, {type: 'number', name: 'Leistung_L2', unit: 'W', read: true, write: false, role: 'value.power'})
                                createState('0_userdata.0.Hichi_Wifi_IR.Leistung_L3', 0, {type: 'number', name: 'Leistung_L3', unit: 'W', read: true, write: false, role: 'value.power'})
                                createState('0_userdata.0.Hichi_Wifi_IR.Spannung_L1', 0, {type: 'number', name: 'Spannung_L1', unit: 'V', read: true, write: false, role: 'value.voltage'})
                                createState('0_userdata.0.Hichi_Wifi_IR.Spannung_L2', 0, {type: 'number', name: 'Spannung_L2', unit: 'V', read: true, write: false, role: 'value.voltage'})
                                createState('0_userdata.0.Hichi_Wifi_IR.Spannung_L3', 0, {type: 'number', name: 'Spannung_L3', unit: 'V', read: true, write: false, role: 'value.voltage'})
                                createState('0_userdata.0.Hichi_Wifi_IR.Seriennummer', ' ', {type: 'string', name: 'Seriennummer', read: true, write: false, role: 'state'})
                                
                                on('mqtt.0.tasmota/discovery/3494548E85FC/sensors', function (dp) {
                                    let obj = {};
                                    //der try ist wichtig das der adapter nicht abschmiert bei einem fehler, hiermit pasen wird die json in ein object
                                    try {obj = JSON.parse(dp.state.val).sn.SM;
                                    } catch (e) {
                                       console.error('Cannot parse: ' + dp.state.val);
                                       return;
                                    }
                                   
                                    setState('0_userdata.0.Hichi_Wifi_IR.Bezug', obj['1_8_0'], true);
                                    setState('0_userdata.0.Hichi_Wifi_IR.Export', obj['2_8_0'], true);
                                    setState('0_userdata.0.Hichi_Wifi_IR.Leistung_aktuell', obj['16_7_0'], true);
                                    setState('0_userdata.0.Hichi_Wifi_IR.Leistung_L1', obj['36_7_0'], true);
                                    setState('0_userdata.0.Hichi_Wifi_IR.Leistung_L2', obj['56_7_0'], true);
                                    setState('0_userdata.0.Hichi_Wifi_IR.Leistung_L3', obj['76_7_0'], true);
                                    setState('0_userdata.0.Hichi_Wifi_IR.Spannung_L1', obj['32_7_0'], true);
                                    setState('0_userdata.0.Hichi_Wifi_IR.Spannung_L2', obj['52_7_0'], true);
                                    setState('0_userdata.0.Hichi_Wifi_IR.Spannung_L3', obj['72_7_0'], true);
                                    setState('0_userdata.0.Hichi_Wifi_IR.Seriennummer', obj['96_1_0'], true);
                                });
                                

                                Ist der Leerstring so richtig eingepflegt?

                                paul53P Offline
                                paul53P Offline
                                paul53
                                schrieb am zuletzt editiert von
                                #18

                                @chrischros sagte: Ist der Leerstring so richtig eingepflegt?

                                Das ist zwar ein String mit einem Leerzeichen, ist aber auch in Ordnung.

                                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

                                1 Antwort Letzte Antwort
                                0
                                • T ticaki

                                  @chrischros

                                  ich weiß gerade nicht ob obj im Fehlerfall {} oder undefinied enthält. Das solltest du checken in dem du einen absichtlich Fehler erzeugst. Ansonsten siehts gut aus.

                                  Noch was kleinkarriertes, wenn du rolen benutzten willst, hier findest du die richtigen: https://github.com/ioBroker/ioBroker.docs/blob/master/docs/en/dev/stateroles.md

                                  paul53P Offline
                                  paul53P Offline
                                  paul53
                                  schrieb am zuletzt editiert von
                                  #19

                                  @ticaki sagte: ob obj im Fehlerfall {} oder undefinied enthält.

                                  Das spielt keine Rolle, da obj im Fehlerfall nicht ausgewertet wird.

                                  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

                                  T 1 Antwort Letzte Antwort
                                  0
                                  • paul53P paul53

                                    @ticaki sagte: ob obj im Fehlerfall {} oder undefinied enthält.

                                    Das spielt keine Rolle, da obj im Fehlerfall nicht ausgewertet wird.

                                    T Offline
                                    T Offline
                                    ticaki
                                    schrieb am zuletzt editiert von
                                    #20

                                    @paul53
                                    Recht hast du, hab das return übersehen.

                                    Weather-Warnings Espresense NSPanel-Lovelace-ui Tagesschau

                                    Spenden

                                    1 Antwort Letzte Antwort
                                    0
                                    • C Offline
                                      C Offline
                                      ChrisChros
                                      schrieb am zuletzt editiert von
                                      #21

                                      Habe nun das Skript mal aktiviert, die neuen Objekte werden erstellt aber es sind nur "0" Werte hinterlegt.

                                      paul53P 1 Antwort Letzte Antwort
                                      0
                                      • C ChrisChros

                                        Habe nun das Skript mal aktiviert, die neuen Objekte werden erstellt aber es sind nur "0" Werte hinterlegt.

                                        paul53P Offline
                                        paul53P Offline
                                        paul53
                                        schrieb am zuletzt editiert von
                                        #22

                                        @chrischros sagte: es sind nur "0" Werte hinterlegt.

                                        Nur bis zum ersten Trigger, wenn das JSON so stimmt, wie angegeben.

                                        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

                                        C 1 Antwort Letzte Antwort
                                        0
                                        • paul53P paul53

                                          @chrischros sagte: es sind nur "0" Werte hinterlegt.

                                          Nur bis zum ersten Trigger, wenn das JSON so stimmt, wie angegeben.

                                          C Offline
                                          C Offline
                                          ChrisChros
                                          schrieb am zuletzt editiert von
                                          #23

                                          @paul53
                                          ok, habe festgestellt, dass das Json nicht wirklich aktualisiert wird. Muss ich mal schauen woran das liegt.

                                          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

                                          765

                                          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