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. Regex liefert falschen Wert

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    16
    1
    1.5k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    828

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.1k

Regex liefert falschen Wert

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
14 Beiträge 5 Kommentatoren 1.1k Aufrufe 3 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.
  • C Offline
    C Offline
    ck_coke
    schrieb am zuletzt editiert von
    #1

    Hallo zusammen,

    ich habe ein paar (Anfänger)-Schwierigkeiten mit einer Regex und könnte etwas Hilfe gebrauchen.

    Folgendes ist das Ergebnis:

    javascript.0	22:24:00.130	info	script.js.common.Balkonkraftwerk_Shelly_Cloud_API: Found match, group 0: "total_power":-43.36,
    javascript.0	22:24:00.130	info	script.js.common.Balkonkraftwerk_Shelly_Cloud_API: Found match, group 1: -43.36
    javascript.0	22:24:00.130	info	script.js.common.Balkonkraftwerk_Shelly_Cloud_API: Found match, group 2: .36
    javascript.0	22:24:00.130	info	script.js.common.Balkonkraftwerk_Shelly_Cloud_API: {"isok":true,"data":{"online":true,"device_status":{"has_update":false,"fs_free":155118,"unixtime":1725530007,"emeter_n":{"current":0,"ixsum":0.9,"mismatch":false,"is_valid":false},"wifi_sta":{"connected":true,"ssid":"....","ip":"192.168.178.52","rssi":-72},"total_power":-43.36,"ct_calst":0,"relays":[{"ison":true,"has_timer":false,"timer_started":0,"timer_duration":0,"timer_remaining":0,"overpower":false,"is_valid":true,"source":"cloud"}],"v_data":1,"uptime":885115,"fs_size":233681,"_updated":"2024-09-05 20:16:00","cloud":{"enabled":true,"connected":true},"fs_mounted":true,"ram_free":32500,"actions_stats":{"skipped":0},"emeters":[{"power":-9.73,"pf":-0.1,"current":0.44,"voltage":233.55,"is_valid":true,"total":0,"total_returned":7844.1},{"power":-33.63,"pf":-0.62,"current":0.23,"voltage":235.21,"is_valid":true,"total":2419,"total_returned":28747.5},{"power":0,"pf":0,"current":0.44,"voltage":234.18,"is_valid":true,"total":10489.3,"total_returned":0.1}],"mac":"483FDAC3902E","mqtt":{"connected":false},"cfg_changed_cnt":0,"serial":62007,"getinfo":{"fw_info":{"device":"shellyem3-483FDAC3902E","fw":"20230913-114244/v1.14.0-gcb84623"}},"time":"22:16","update":{"status":"idle","has_update":false,"new_version":"20230913-114244/v1.14.0-gcb84623","old_version":"20230913-114244/v1.14.0-gcb84623","beta_version":"20231107-165007/v1.14.1-rc1-g0617c15"},"ram_total":49920}}} - % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 100 1500 100 1383 100 117 15896 1344 --:--:-- --:--:-- --:--:-- 17441
    javascript.0	22:24:00.130	info	script.js.common.Balkonkraftwerk_Shelly_Cloud_API: Leistung: 3
    

    So habe ich mir das Ganze zusammengebastelt:

    schedule("*/1 * * * *", function () {
    
        exec('curl -X POST https://shelly-89-eu.shelly.cloud/device/status -d "id=483fdac3902e&auth_key=MjBjN2JjdWlkB12AE36D401E9C6EC6573933F664EA9B25923B90241D5720122CC428B8........."',
    
    		function (error, stdout, stderr) {
    
                const regex = /"total_power":(-?\d+(\.\d+)?),/gm;
    
                const str = stdout;
    
                let m;
    
                while ((m = regex.exec(str)) !== null) {
    
                    // This is necessary to avoid infinite loops with zero-width matches
    
                    if (m.index === regex.lastIndex) {
    
                        regex.lastIndex++;
    
                    }
    
                    // The result can be accessed through the `m`-variable.
    
                    m.forEach((match, groupIndex) => {
    
                        console.log(`Found match, group ${groupIndex}: ${match}`);
                            if (groupIndex=1) {
    
                P = match[1] // im match stehen die aktuelle parser ergebnisse ich brauch aber nur das der gruppe 1
    
                }               
    
                    });
    
                    
    
                }
    
                log(stdout + " - " + stderr);
                console.log('Leistung: ' + P);
            });
    
    });
    
    

    Die regex scheint wie man sieht zu funktionieren nur wird nicht das richtige verwendet.
    Ich hätte gerne group 1 als "Ergebnis". Wie bekomme ich das hin?

    HomoranH M haus-automatisierungH 3 Antworten Letzte Antwort
    0
    • C ck_coke

      Hallo zusammen,

      ich habe ein paar (Anfänger)-Schwierigkeiten mit einer Regex und könnte etwas Hilfe gebrauchen.

      Folgendes ist das Ergebnis:

      javascript.0	22:24:00.130	info	script.js.common.Balkonkraftwerk_Shelly_Cloud_API: Found match, group 0: "total_power":-43.36,
      javascript.0	22:24:00.130	info	script.js.common.Balkonkraftwerk_Shelly_Cloud_API: Found match, group 1: -43.36
      javascript.0	22:24:00.130	info	script.js.common.Balkonkraftwerk_Shelly_Cloud_API: Found match, group 2: .36
      javascript.0	22:24:00.130	info	script.js.common.Balkonkraftwerk_Shelly_Cloud_API: {"isok":true,"data":{"online":true,"device_status":{"has_update":false,"fs_free":155118,"unixtime":1725530007,"emeter_n":{"current":0,"ixsum":0.9,"mismatch":false,"is_valid":false},"wifi_sta":{"connected":true,"ssid":"....","ip":"192.168.178.52","rssi":-72},"total_power":-43.36,"ct_calst":0,"relays":[{"ison":true,"has_timer":false,"timer_started":0,"timer_duration":0,"timer_remaining":0,"overpower":false,"is_valid":true,"source":"cloud"}],"v_data":1,"uptime":885115,"fs_size":233681,"_updated":"2024-09-05 20:16:00","cloud":{"enabled":true,"connected":true},"fs_mounted":true,"ram_free":32500,"actions_stats":{"skipped":0},"emeters":[{"power":-9.73,"pf":-0.1,"current":0.44,"voltage":233.55,"is_valid":true,"total":0,"total_returned":7844.1},{"power":-33.63,"pf":-0.62,"current":0.23,"voltage":235.21,"is_valid":true,"total":2419,"total_returned":28747.5},{"power":0,"pf":0,"current":0.44,"voltage":234.18,"is_valid":true,"total":10489.3,"total_returned":0.1}],"mac":"483FDAC3902E","mqtt":{"connected":false},"cfg_changed_cnt":0,"serial":62007,"getinfo":{"fw_info":{"device":"shellyem3-483FDAC3902E","fw":"20230913-114244/v1.14.0-gcb84623"}},"time":"22:16","update":{"status":"idle","has_update":false,"new_version":"20230913-114244/v1.14.0-gcb84623","old_version":"20230913-114244/v1.14.0-gcb84623","beta_version":"20231107-165007/v1.14.1-rc1-g0617c15"},"ram_total":49920}}} - % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 100 1500 100 1383 100 117 15896 1344 --:--:-- --:--:-- --:--:-- 17441
      javascript.0	22:24:00.130	info	script.js.common.Balkonkraftwerk_Shelly_Cloud_API: Leistung: 3
      

      So habe ich mir das Ganze zusammengebastelt:

      schedule("*/1 * * * *", function () {
      
          exec('curl -X POST https://shelly-89-eu.shelly.cloud/device/status -d "id=483fdac3902e&auth_key=MjBjN2JjdWlkB12AE36D401E9C6EC6573933F664EA9B25923B90241D5720122CC428B8........."',
      
      		function (error, stdout, stderr) {
      
                  const regex = /"total_power":(-?\d+(\.\d+)?),/gm;
      
                  const str = stdout;
      
                  let m;
      
                  while ((m = regex.exec(str)) !== null) {
      
                      // This is necessary to avoid infinite loops with zero-width matches
      
                      if (m.index === regex.lastIndex) {
      
                          regex.lastIndex++;
      
                      }
      
                      // The result can be accessed through the `m`-variable.
      
                      m.forEach((match, groupIndex) => {
      
                          console.log(`Found match, group ${groupIndex}: ${match}`);
                              if (groupIndex=1) {
      
                  P = match[1] // im match stehen die aktuelle parser ergebnisse ich brauch aber nur das der gruppe 1
      
                  }               
      
                      });
      
                      
      
                  }
      
                  log(stdout + " - " + stderr);
                  console.log('Leistung: ' + P);
              });
      
      });
      
      

      Die regex scheint wie man sieht zu funktionieren nur wird nicht das richtige verwendet.
      Ich hätte gerne group 1 als "Ergebnis". Wie bekomme ich das hin?

      HomoranH Nicht stören
      HomoranH Nicht stören
      Homoran
      Global Moderator Administrators
      schrieb am zuletzt editiert von
      #2

      @ck_coke sagte in Regex liefert falschen Wert:

      Ich hätte gerne group 1 als "Ergebnis".

      ist das nicht [0]?

      kenne nich mit regex in js nicht aus

      kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

      Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

      der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

      1 Antwort Letzte Antwort
      0
      • C ck_coke

        Hallo zusammen,

        ich habe ein paar (Anfänger)-Schwierigkeiten mit einer Regex und könnte etwas Hilfe gebrauchen.

        Folgendes ist das Ergebnis:

        javascript.0	22:24:00.130	info	script.js.common.Balkonkraftwerk_Shelly_Cloud_API: Found match, group 0: "total_power":-43.36,
        javascript.0	22:24:00.130	info	script.js.common.Balkonkraftwerk_Shelly_Cloud_API: Found match, group 1: -43.36
        javascript.0	22:24:00.130	info	script.js.common.Balkonkraftwerk_Shelly_Cloud_API: Found match, group 2: .36
        javascript.0	22:24:00.130	info	script.js.common.Balkonkraftwerk_Shelly_Cloud_API: {"isok":true,"data":{"online":true,"device_status":{"has_update":false,"fs_free":155118,"unixtime":1725530007,"emeter_n":{"current":0,"ixsum":0.9,"mismatch":false,"is_valid":false},"wifi_sta":{"connected":true,"ssid":"....","ip":"192.168.178.52","rssi":-72},"total_power":-43.36,"ct_calst":0,"relays":[{"ison":true,"has_timer":false,"timer_started":0,"timer_duration":0,"timer_remaining":0,"overpower":false,"is_valid":true,"source":"cloud"}],"v_data":1,"uptime":885115,"fs_size":233681,"_updated":"2024-09-05 20:16:00","cloud":{"enabled":true,"connected":true},"fs_mounted":true,"ram_free":32500,"actions_stats":{"skipped":0},"emeters":[{"power":-9.73,"pf":-0.1,"current":0.44,"voltage":233.55,"is_valid":true,"total":0,"total_returned":7844.1},{"power":-33.63,"pf":-0.62,"current":0.23,"voltage":235.21,"is_valid":true,"total":2419,"total_returned":28747.5},{"power":0,"pf":0,"current":0.44,"voltage":234.18,"is_valid":true,"total":10489.3,"total_returned":0.1}],"mac":"483FDAC3902E","mqtt":{"connected":false},"cfg_changed_cnt":0,"serial":62007,"getinfo":{"fw_info":{"device":"shellyem3-483FDAC3902E","fw":"20230913-114244/v1.14.0-gcb84623"}},"time":"22:16","update":{"status":"idle","has_update":false,"new_version":"20230913-114244/v1.14.0-gcb84623","old_version":"20230913-114244/v1.14.0-gcb84623","beta_version":"20231107-165007/v1.14.1-rc1-g0617c15"},"ram_total":49920}}} - % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 100 1500 100 1383 100 117 15896 1344 --:--:-- --:--:-- --:--:-- 17441
        javascript.0	22:24:00.130	info	script.js.common.Balkonkraftwerk_Shelly_Cloud_API: Leistung: 3
        

        So habe ich mir das Ganze zusammengebastelt:

        schedule("*/1 * * * *", function () {
        
            exec('curl -X POST https://shelly-89-eu.shelly.cloud/device/status -d "id=483fdac3902e&auth_key=MjBjN2JjdWlkB12AE36D401E9C6EC6573933F664EA9B25923B90241D5720122CC428B8........."',
        
        		function (error, stdout, stderr) {
        
                    const regex = /"total_power":(-?\d+(\.\d+)?),/gm;
        
                    const str = stdout;
        
                    let m;
        
                    while ((m = regex.exec(str)) !== null) {
        
                        // This is necessary to avoid infinite loops with zero-width matches
        
                        if (m.index === regex.lastIndex) {
        
                            regex.lastIndex++;
        
                        }
        
                        // The result can be accessed through the `m`-variable.
        
                        m.forEach((match, groupIndex) => {
        
                            console.log(`Found match, group ${groupIndex}: ${match}`);
                                if (groupIndex=1) {
        
                    P = match[1] // im match stehen die aktuelle parser ergebnisse ich brauch aber nur das der gruppe 1
        
                    }               
        
                        });
        
                        
        
                    }
        
                    log(stdout + " - " + stderr);
                    console.log('Leistung: ' + P);
                });
        
        });
        
        

        Die regex scheint wie man sieht zu funktionieren nur wird nicht das richtige verwendet.
        Ich hätte gerne group 1 als "Ergebnis". Wie bekomme ich das hin?

        M Online
        M Online
        MCU
        schrieb am zuletzt editiert von
        #3

        @ck_coke

        const regex = /"total_power":(-?\d+(\.\d+)?)/gm;     /* , entfernt */
        ....
        let m;
        m = regex.exec(str)  /* m ist ja "total_power":-43.36 */
        P = m.split(':')[1]
        ....
        

        NUC i7 64GB mit Proxmox ---- Jarvis Infos Aktualisierungen der Doku auf Instagram verfolgen -> mcuiobroker Instagram
        Wenn Euch mein Vorschlag geholfen hat, bitte rechts "^" klicken.

        C 1 Antwort Letzte Antwort
        0
        • M MCU

          @ck_coke

          const regex = /"total_power":(-?\d+(\.\d+)?)/gm;     /* , entfernt */
          ....
          let m;
          m = regex.exec(str)  /* m ist ja "total_power":-43.36 */
          P = m.split(':')[1]
          ....
          
          C Offline
          C Offline
          ck_coke
          schrieb am zuletzt editiert von ck_coke
          #4

          @mcu

          Error in callback: TypeError: m.split is not a function
          
          M F 2 Antworten Letzte Antwort
          0
          • C ck_coke

            @mcu

            Error in callback: TypeError: m.split is not a function
            
            M Online
            M Online
            MCU
            schrieb am zuletzt editiert von
            #5

            @ck_coke Dann muss man vorher noch aus m einen String machen.

            m = String(m)
            P= m.split ......
            

            NUC i7 64GB mit Proxmox ---- Jarvis Infos Aktualisierungen der Doku auf Instagram verfolgen -> mcuiobroker Instagram
            Wenn Euch mein Vorschlag geholfen hat, bitte rechts "^" klicken.

            1 Antwort Letzte Antwort
            0
            • C ck_coke

              @mcu

              Error in callback: TypeError: m.split is not a function
              
              F Offline
              F Offline
              fastfoot
              schrieb am zuletzt editiert von
              #6

              @ck_coke

              let m;
              if ((m = regex.exec(str)) != null)
                  log('Leistung: ' + m[1])
              

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

              1 Antwort Letzte Antwort
              0
              • C ck_coke

                Hallo zusammen,

                ich habe ein paar (Anfänger)-Schwierigkeiten mit einer Regex und könnte etwas Hilfe gebrauchen.

                Folgendes ist das Ergebnis:

                javascript.0	22:24:00.130	info	script.js.common.Balkonkraftwerk_Shelly_Cloud_API: Found match, group 0: "total_power":-43.36,
                javascript.0	22:24:00.130	info	script.js.common.Balkonkraftwerk_Shelly_Cloud_API: Found match, group 1: -43.36
                javascript.0	22:24:00.130	info	script.js.common.Balkonkraftwerk_Shelly_Cloud_API: Found match, group 2: .36
                javascript.0	22:24:00.130	info	script.js.common.Balkonkraftwerk_Shelly_Cloud_API: {"isok":true,"data":{"online":true,"device_status":{"has_update":false,"fs_free":155118,"unixtime":1725530007,"emeter_n":{"current":0,"ixsum":0.9,"mismatch":false,"is_valid":false},"wifi_sta":{"connected":true,"ssid":"....","ip":"192.168.178.52","rssi":-72},"total_power":-43.36,"ct_calst":0,"relays":[{"ison":true,"has_timer":false,"timer_started":0,"timer_duration":0,"timer_remaining":0,"overpower":false,"is_valid":true,"source":"cloud"}],"v_data":1,"uptime":885115,"fs_size":233681,"_updated":"2024-09-05 20:16:00","cloud":{"enabled":true,"connected":true},"fs_mounted":true,"ram_free":32500,"actions_stats":{"skipped":0},"emeters":[{"power":-9.73,"pf":-0.1,"current":0.44,"voltage":233.55,"is_valid":true,"total":0,"total_returned":7844.1},{"power":-33.63,"pf":-0.62,"current":0.23,"voltage":235.21,"is_valid":true,"total":2419,"total_returned":28747.5},{"power":0,"pf":0,"current":0.44,"voltage":234.18,"is_valid":true,"total":10489.3,"total_returned":0.1}],"mac":"483FDAC3902E","mqtt":{"connected":false},"cfg_changed_cnt":0,"serial":62007,"getinfo":{"fw_info":{"device":"shellyem3-483FDAC3902E","fw":"20230913-114244/v1.14.0-gcb84623"}},"time":"22:16","update":{"status":"idle","has_update":false,"new_version":"20230913-114244/v1.14.0-gcb84623","old_version":"20230913-114244/v1.14.0-gcb84623","beta_version":"20231107-165007/v1.14.1-rc1-g0617c15"},"ram_total":49920}}} - % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 100 1500 100 1383 100 117 15896 1344 --:--:-- --:--:-- --:--:-- 17441
                javascript.0	22:24:00.130	info	script.js.common.Balkonkraftwerk_Shelly_Cloud_API: Leistung: 3
                

                So habe ich mir das Ganze zusammengebastelt:

                schedule("*/1 * * * *", function () {
                
                    exec('curl -X POST https://shelly-89-eu.shelly.cloud/device/status -d "id=483fdac3902e&auth_key=MjBjN2JjdWlkB12AE36D401E9C6EC6573933F664EA9B25923B90241D5720122CC428B8........."',
                
                		function (error, stdout, stderr) {
                
                            const regex = /"total_power":(-?\d+(\.\d+)?),/gm;
                
                            const str = stdout;
                
                            let m;
                
                            while ((m = regex.exec(str)) !== null) {
                
                                // This is necessary to avoid infinite loops with zero-width matches
                
                                if (m.index === regex.lastIndex) {
                
                                    regex.lastIndex++;
                
                                }
                
                                // The result can be accessed through the `m`-variable.
                
                                m.forEach((match, groupIndex) => {
                
                                    console.log(`Found match, group ${groupIndex}: ${match}`);
                                        if (groupIndex=1) {
                
                            P = match[1] // im match stehen die aktuelle parser ergebnisse ich brauch aber nur das der gruppe 1
                
                            }               
                
                                });
                
                                
                
                            }
                
                            log(stdout + " - " + stderr);
                            console.log('Leistung: ' + P);
                        });
                
                });
                
                

                Die regex scheint wie man sieht zu funktionieren nur wird nicht das richtige verwendet.
                Ich hätte gerne group 1 als "Ergebnis". Wie bekomme ich das hin?

                haus-automatisierungH Online
                haus-automatisierungH Online
                haus-automatisierung
                Developer Most Active
                schrieb am zuletzt editiert von
                #7

                @ck_coke sagte in Regex liefert falschen Wert:

                ich habe ein paar (Anfänger)-Schwierigkeiten mit einer Regex

                Warum überhaupt JSON-Strings mit einem regex auseinander nehmen?!

                🧑‍🎓 Autor des beliebten ioBroker-Master-Kurses
                🎥 Tutorials rund um das Thema DIY-Smart-Home: https://haus-automatisierung.com/
                📚 Meine inoffizielle ioBroker Dokumentation

                haus-automatisierungH 1 Antwort Letzte Antwort
                0
                • haus-automatisierungH haus-automatisierung

                  @ck_coke sagte in Regex liefert falschen Wert:

                  ich habe ein paar (Anfänger)-Schwierigkeiten mit einer Regex

                  Warum überhaupt JSON-Strings mit einem regex auseinander nehmen?!

                  haus-automatisierungH Online
                  haus-automatisierungH Online
                  haus-automatisierung
                  Developer Most Active
                  schrieb am zuletzt editiert von haus-automatisierung
                  #8

                  Hier mal ein Beispiel-Script. Ohne exec, curl und regex :)

                  const server = 'https://shelly-67-eu.shelly.cloud';
                  const authKey = 'MTk3YjZhdWlkE6CD....';
                  const deviceId = 'b0b21c18d700';
                  
                  httpPost(`${server}/device/status`,
                      {
                          id: deviceId,
                          auth_key: authKey,
                      },
                      (error, response) => {
                          if (!error) {
                              try {
                                  const obj = JSON.parse(response.data);
                  
                                  // Daten extrahieren
                  
                              } catch (e) {
                                  console.error(e);
                              }
                          } else {
                              console.error(error);
                          }
                      }
                  );
                  
                  

                  Du suchst ja scheinbar: obj.data.device_status.total_power.

                  🧑‍🎓 Autor des beliebten ioBroker-Master-Kurses
                  🎥 Tutorials rund um das Thema DIY-Smart-Home: https://haus-automatisierung.com/
                  📚 Meine inoffizielle ioBroker Dokumentation

                  C 1 Antwort Letzte Antwort
                  2
                  • haus-automatisierungH haus-automatisierung

                    Hier mal ein Beispiel-Script. Ohne exec, curl und regex :)

                    const server = 'https://shelly-67-eu.shelly.cloud';
                    const authKey = 'MTk3YjZhdWlkE6CD....';
                    const deviceId = 'b0b21c18d700';
                    
                    httpPost(`${server}/device/status`,
                        {
                            id: deviceId,
                            auth_key: authKey,
                        },
                        (error, response) => {
                            if (!error) {
                                try {
                                    const obj = JSON.parse(response.data);
                    
                                    // Daten extrahieren
                    
                                } catch (e) {
                                    console.error(e);
                                }
                            } else {
                                console.error(error);
                            }
                        }
                    );
                    
                    

                    Du suchst ja scheinbar: obj.data.device_status.total_power.

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

                    @haus-automatisierung

                    Vielen Dank! So ist es natürlich noch besser gelöst.

                    C 1 Antwort Letzte Antwort
                    0
                    • C ck_coke

                      @haus-automatisierung

                      Vielen Dank! So ist es natürlich noch besser gelöst.

                      C Offline
                      C Offline
                      ck_coke
                      schrieb am zuletzt editiert von ck_coke
                      #10

                      Jetzt habe ich das Problem, dass es bei einem Gerät funktioniert und bei einem anderen

                      {"ack":true}
                      

                      als Wert gesetzt wird.

                      So sieht das Skript aus:

                      schedule("*/10 * * * * *", function () {
                      
                      
                      const server = 'https://shelly-89-eu.shelly.cloud';
                      const authKey = 'XjBjN2JjdWlkB12AE36D401E9C6EC6573933F664EA9B25923B90241D5720122CC428B82EF7477624E84B517133E2';
                      const deviceId = 'a0a3b3e7d67c';
                       
                      httpPost(`${server}/device/status`,
                          {
                              id: deviceId,
                              auth_key: authKey,
                          },
                          (error, response) => {
                              if (!error) {
                                  try {
                                      const obj = JSON.parse(response.data);
                       
                                      // Daten extrahieren
                      
                                      console.log(obj.data);
                                      
                                                 setState('0_userdata.0.Leistung-Entladen', obj.data.device_status.voltage, true);
                      
                      
                       
                                  } catch (e) {
                                      console.error(e);
                                  }
                              } else {
                                  console.error(error);
                              }
                          }
                      );
                       
                      });
                      
                      
                      
                      

                      Folgendes bekomme ich im Log angezeigt:

                      javascript.0
                      	2024-09-09 20:34:40.074	info	script.js.common.Balkonkraftwerk.Skript_1: setForeignState(id=0_userdata.0.Leistung-Entladen, state={"val":{"ack":true},"ack":true,"ts":1725906880074,"q":0,"from":"system.adapter.javascript.0","lc":1725906880074,"c":"script.js.common.Balkonkraftwerk.Skript_1"})
                      javascript.0
                      	2024-09-09 20:34:40.074	info	script.js.common.Balkonkraftwerk.Skript_1: { online: true, device_status: { sys: { available_updates: [Object], mac: 'A0A3B3E7D67C', restart_required: false, time: '11:48', unixtime: 1725788939, uptime: 3, ram_size: 246876, ram_free: 134944, fs_size: 458752, fs_free: 122880, cfg_rev: 19, kvs_rev: 0, schedule_rev: 10, webhook_rev: 0, reset_reason: 1 }, ts: 1725906873.77, plugs_ui: {}, id: 'a0a3b3e7d67c', code: 'SNPL-00112EU', ws: { connected: false }, wifi: { sta_ip: '192.168.33.67', status: 'got ip', ssid: 'ShellyPlusPlugS-E465B8B3A57C', rssi: -29, ap_client_count: 0 }, mqtt: { connected: false }, serial: 3566, ffs: { ts: 0 }, 'switch:0': { id: 0, current: 0.021, source: 'SHC', output: true, apower: 0, voltage: 232.9, aenergy: [Object], temperature: [Object] }, cloud: { connected: true }, _updated: '2024-09-09 18:34:34', ble: {} } }
                      javascript.0
                      	2024-09-09 20:34:40.074	info	script.js.common.Balkonkraftwerk.Skript_1: httpPost(url=https://shelly-89-eu.shelly.cloud/device/status, responseTime=66ms)
                      javascript.0
                      	2024-09-09 20:34:40.007	info	script.js.common.Balkonkraftwerk.Skript_1: httpPost(config={"method":"post","url":"https://shelly-89-eu.shelly.cloud/device/status","responseType":"text","responseEncoding":"utf8","timeout":2000,"headers":{"User-Agent":"Mozilla/5.0 (X11; Linux i686; rv:109.0) Gecko/20100101 Firefox/121.0"},"data":{"id":"a0a3b3e7d67c","auth_key":"XjBjN2JjdWlkB12AE36D401E9C6EC6573933F664EA9B25923B90241D5720122CC428B82EF7477624E84B517133E2"}}, data=[object Object])
                      ```z
                      haus-automatisierungH 1 Antwort Letzte Antwort
                      0
                      • C ck_coke

                        Jetzt habe ich das Problem, dass es bei einem Gerät funktioniert und bei einem anderen

                        {"ack":true}
                        

                        als Wert gesetzt wird.

                        So sieht das Skript aus:

                        schedule("*/10 * * * * *", function () {
                        
                        
                        const server = 'https://shelly-89-eu.shelly.cloud';
                        const authKey = 'XjBjN2JjdWlkB12AE36D401E9C6EC6573933F664EA9B25923B90241D5720122CC428B82EF7477624E84B517133E2';
                        const deviceId = 'a0a3b3e7d67c';
                         
                        httpPost(`${server}/device/status`,
                            {
                                id: deviceId,
                                auth_key: authKey,
                            },
                            (error, response) => {
                                if (!error) {
                                    try {
                                        const obj = JSON.parse(response.data);
                         
                                        // Daten extrahieren
                        
                                        console.log(obj.data);
                                        
                                                   setState('0_userdata.0.Leistung-Entladen', obj.data.device_status.voltage, true);
                        
                        
                         
                                    } catch (e) {
                                        console.error(e);
                                    }
                                } else {
                                    console.error(error);
                                }
                            }
                        );
                         
                        });
                        
                        
                        
                        

                        Folgendes bekomme ich im Log angezeigt:

                        javascript.0
                        	2024-09-09 20:34:40.074	info	script.js.common.Balkonkraftwerk.Skript_1: setForeignState(id=0_userdata.0.Leistung-Entladen, state={"val":{"ack":true},"ack":true,"ts":1725906880074,"q":0,"from":"system.adapter.javascript.0","lc":1725906880074,"c":"script.js.common.Balkonkraftwerk.Skript_1"})
                        javascript.0
                        	2024-09-09 20:34:40.074	info	script.js.common.Balkonkraftwerk.Skript_1: { online: true, device_status: { sys: { available_updates: [Object], mac: 'A0A3B3E7D67C', restart_required: false, time: '11:48', unixtime: 1725788939, uptime: 3, ram_size: 246876, ram_free: 134944, fs_size: 458752, fs_free: 122880, cfg_rev: 19, kvs_rev: 0, schedule_rev: 10, webhook_rev: 0, reset_reason: 1 }, ts: 1725906873.77, plugs_ui: {}, id: 'a0a3b3e7d67c', code: 'SNPL-00112EU', ws: { connected: false }, wifi: { sta_ip: '192.168.33.67', status: 'got ip', ssid: 'ShellyPlusPlugS-E465B8B3A57C', rssi: -29, ap_client_count: 0 }, mqtt: { connected: false }, serial: 3566, ffs: { ts: 0 }, 'switch:0': { id: 0, current: 0.021, source: 'SHC', output: true, apower: 0, voltage: 232.9, aenergy: [Object], temperature: [Object] }, cloud: { connected: true }, _updated: '2024-09-09 18:34:34', ble: {} } }
                        javascript.0
                        	2024-09-09 20:34:40.074	info	script.js.common.Balkonkraftwerk.Skript_1: httpPost(url=https://shelly-89-eu.shelly.cloud/device/status, responseTime=66ms)
                        javascript.0
                        	2024-09-09 20:34:40.007	info	script.js.common.Balkonkraftwerk.Skript_1: httpPost(config={"method":"post","url":"https://shelly-89-eu.shelly.cloud/device/status","responseType":"text","responseEncoding":"utf8","timeout":2000,"headers":{"User-Agent":"Mozilla/5.0 (X11; Linux i686; rv:109.0) Gecko/20100101 Firefox/121.0"},"data":{"id":"a0a3b3e7d67c","auth_key":"XjBjN2JjdWlkB12AE36D401E9C6EC6573933F664EA9B25923B90241D5720122CC428B82EF7477624E84B517133E2"}}, data=[object Object])
                        ```z
                        haus-automatisierungH Online
                        haus-automatisierungH Online
                        haus-automatisierung
                        Developer Most Active
                        schrieb am zuletzt editiert von
                        #11

                        @ck_coke In deinem Scripts sind Klammerfehler. Das kann so gar nicht klappen. Da fehlt etwas.

                        voltage, true);

                        🧑‍🎓 Autor des beliebten ioBroker-Master-Kurses
                        🎥 Tutorials rund um das Thema DIY-Smart-Home: https://haus-automatisierung.com/
                        📚 Meine inoffizielle ioBroker Dokumentation

                        1 Antwort Letzte Antwort
                        0
                        • C Offline
                          C Offline
                          ck_coke
                          schrieb am zuletzt editiert von
                          #12

                          @haus-automatisierung

                          Das ist wohl beim hier ins Forum kopieren passiert.

                          Die Zeile sieht so aus:

                                                     setState('0_userdata.0.Leistung-Entladen', obj.data.device_status.voltage, true);
                          
                          
                          1 Antwort Letzte Antwort
                          0
                          • C Offline
                            C Offline
                            ck_coke
                            schrieb am zuletzt editiert von
                            #13

                            Kann es daran liegen das der Datenpunkt hinter switch:0, also eine Ebene tiefer liegt?

                            Zumindest habe ich das nach Internetrechersche in anderen Foren so gesehen.

                            haus-automatisierungH 1 Antwort Letzte Antwort
                            0
                            • C ck_coke

                              Kann es daran liegen das der Datenpunkt hinter switch:0, also eine Ebene tiefer liegt?

                              Zumindest habe ich das nach Internetrechersche in anderen Foren so gesehen.

                              haus-automatisierungH Online
                              haus-automatisierungH Online
                              haus-automatisierung
                              Developer Most Active
                              schrieb am zuletzt editiert von haus-automatisierung
                              #14

                              @ck_coke sagte in Regex liefert falschen Wert:

                              Zumindest habe ich das nach Internetrechersche in anderen Foren so gesehen.

                              Ich hab das Thema JSON vs. Objekt in zig kostenlosen Inhalten super ausführlich erklärt.

                              Du musst schon den kompletten Pfad angeben. Im Falle von switch:0 muss das dann aber in eckige Klammern und kann nicht mit der einfachen Punkt-Notation erreicht werden.

                              obj.data.device_status['switch:0'].voltage

                              🧑‍🎓 Autor des beliebten ioBroker-Master-Kurses
                              🎥 Tutorials rund um das Thema DIY-Smart-Home: https://haus-automatisierung.com/
                              📚 Meine inoffizielle ioBroker Dokumentation

                              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

                              700

                              Online

                              32.6k

                              Benutzer

                              82.1k

                              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