Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. [Gelöst] FoxESS Cloud Javascript Warnmeldungen

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    [Gelöst] FoxESS Cloud Javascript Warnmeldungen

    This topic has been deleted. Only users with topic management privileges can see it.
    • T
      Torsten G. last edited by Torsten G.

      Ich habe dieses Javascript im Netz gefunden. Soweit läuft es auch. Jedoch verstehe ich nicht warum es im Log Warnungen gibt. Kann man diese ausstellen bzw. was könnte geändert werden? Ich bin mehr der Copy/Paste User und habe von Java und Code nicht viel Ahnung.

      /*
      Dieses Script ruft alle 2 Minuten die FoxESS Cloud über eine RestAPI auf und speichert die aufgerufenen Informationen
      an die entsprechenden Objekte im IO-Broker.
      */
       
      const https = require("https")
      const crypto = require('crypto')
      const token = "???"; /* Hier muss der API-Key aus der FoxESS Cloud eingefügt werden */
      const sn = "???"; /* Hier muss die Seriennummer vom Inverter aus der FoxESS Cloud eingefügt werden */
       
      schedule("*/2 * * * * ", async function () {
        try {
          const data = JSON.stringify({
              "sn": sn,
              "variables": [
                  "pvPower", "generationPower", "SoC", "loadsPower"
              ]
          });
          const path = "/op/v0/device/real/query";
          const milliseconds = new Date().getTime();
          const signature = crypto.createHash('md5').update(path + "\\r\\n" + token + "\\r\\n" + milliseconds).digest("hex");
          
          const options = {
              headers: {
                  "Content-Type": "application/json",
                  "token": token,
                  "timestamp": milliseconds,
                  "signature": signature,
                  "lang": "en"
              },
              hostname: "www.foxesscloud.com",
              method: "POST",
              path: path,
              port: 443
          }
          const request = https.request(options, response => {
              //console.log('STATUS: ' + response.statusCode);
              response.setEncoding('utf8');
              response.on("data", function (res) {
                  //console.log(res);
                  const json = JSON.parse(res);
                  const pvPower = json.result[0].datas[0].value;
                  setState("0_userdata.0.FoxEss.PVPower", pvPower.toFixed(3));
                  const soc = json.result[0].datas[2].value;
                  setState("0_userdata.0.FoxEss.SOC", soc.toString());
                  const load = json.result[0].datas[3].value;
                  setState("0_userdata.0.FoxEss.Load", load.toFixed(3));
              });
          });
          request.write(data);
          request.end();
       
        } catch (e) { console.error(e); }
      });
      

      Folgende Warnungen erhalte ich bei jeder Ausführung:

      javascript.0
      2025-05-27 09:34:00.169 info State value to set for "0_userdata.0.FoxEss.PVPower" has to be type "number" but received type "string"
      javascript.0
      2025-05-27 09:34:00.156 warn at TLSSocket.Readable.push (node:internal/streams/readable:392:5)
      javascript.0
      2025-05-27 09:34:00.156 warn at readableAddChunkPushByteMode (node:internal/streams/readable:512:3)
      javascript.0
      2025-05-27 09:34:00.156 warn at addChunk (node:internal/streams/readable:561:12)
      javascript.0
      2025-05-27 09:34:00.155 warn at TLSSocket.emit (node:domain:489:12)
      javascript.0
      2025-05-27 09:34:00.155 warn at TLSSocket.emit (node:events:524:28)
      javascript.0
      2025-05-27 09:34:00.155 warn at TLSSocket.socketOnData (node:_http_client:544:22)
      javascript.0
      2025-05-27 09:34:00.155 warn at HTTPParser.parserOnBody (node:_http_common:130:24)
      javascript.0
      2025-05-27 09:34:00.155 warn at IncomingMessage.Readable.push (node:internal/streams/readable:392:5)
      javascript.0
      2025-05-27 09:34:00.155 warn at readableAddChunkPushByteMode (node:internal/streams/readable:512:3)
      javascript.0
      2025-05-27 09:34:00.155 warn at addChunk (node:internal/streams/readable:561:12)
      javascript.0
      2025-05-27 09:34:00.154 warn at IncomingMessage.emit (node:domain:489:12)
      javascript.0
      2025-05-27 09:34:00.154 warn at IncomingMessage.emit (node:events:524:28)
      javascript.0
      2025-05-27 09:34:00.154 warn at IncomingMessage.<anonymous> (script.js.skripte.foxx:44:13)
      javascript.0
      2025-05-27 09:34:00.154 warn at setState (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:2090:20)
      javascript.0
      2025-05-27 09:34:00.152 warn You are assigning a string to the state "0_userdata.0.FoxEss.PVPower" which expects a number. Please fix your code to use a number or change the state type to string. This warning might become an error in future versions.

      Den Datenpunkt PVPower habe ich bereits auf Nummer, dann auf String aber es kommt immer eine Fehlermeldung. Die Werte stimmen in beiden Versionen.
      Bei PVPower auf String kommt folgende Meldung:
      admin.0
      2025-05-27 09:43:47.084 warn Object 0_userdata.0.FoxEss.PVPower is invalid: Default value has to be type "string" but received type "number" This will throw an error up from js-controller version 7.0.0!

      Vielleicht kann mir wer Licht ans Fahrrad machen 😊 ?

      paul53 1 Reply Last reply Reply Quote 0
      • Asgothian
        Asgothian Developer last edited by Asgothian

        @torsten-g sagte in FoxESS Cloud Javascript Warnmeldungen:

        State value to set for "0_userdata.0.FoxEss.PVPower" has to be type "number" but received type "string"

        da sollte deinem Fahrrad ein Licht aufgehen:

        der Datenpunkt ist definiert als Zahl (number). Dein Skript schreibt da einen String rein (string).

        Um die Warnung loszuwerden musst du die explizite Konvertierung zum String wegnehmen oder den DP als String deklarieren.

        .
        .
        .
                    setState("0_userdata.0.FoxEss.PVPower", pvPower.toFixed(3));
                    const soc = json.result[0].datas[2].value;
                    setState("0_userdata.0.FoxEss.SOC", soc.toString());
                    const load = json.result[0].datas[3].value;
                    setState("0_userdata.0.FoxEss.Load", load.toFixed(3));
        .
        .
        .
        

        A.

        T 1 Reply Last reply Reply Quote 0
        • paul53
          paul53 @Torsten G. last edited by paul53

          @torsten-g sagte: Licht ans Fahrrad machen ?

          Da es sich um Zahlenwerte handelt, ändere Zeilen 41 bis 47:

                      const datas = JSON.parse(res).result[0].datas;
                      setState("0_userdata.0.FoxEss.PVPower", Math.round(datas[0].value * 1000) / 1000, true);
                      setState("0_userdata.0.FoxEss.SOC", datas[2].value, true);
                      setState("0_userdata.0.FoxEss.Load", Math.round(datas[3].value * 1000) / 1000, true);
          
          T 1 Reply Last reply Reply Quote 0
          • T
            Torsten G. @paul53 last edited by

            @paul53 Das funktioniert leider nicht. Nur Error Meldungen. Trotzdem Danke für deine Mühe

            paul53 1 Reply Last reply Reply Quote 0
            • T
              Torsten G. @Asgothian last edited by

              @asgothian Danke nur jetzt kommt folgende Meldung vom Admin.0

              Object 0_userdata.0.FoxEss.PVPower is invalid: Default value has to be type "string" but received type "number" This will throw an error up from js-controller version 7.0.0!

              1 Reply Last reply Reply Quote 0
              • paul53
                paul53 @Torsten G. last edited by paul53

                @torsten-g sagte: Das funktioniert leider nicht.

                Ich hatte die erste Zeile nachträglich korrigiert. Hast du die Korrektur übernommen?

                            const datas = JSON.parse(res).result[0].datas;
                

                Die Datenpunkte müssen vom Typ "number" sein.

                @torsten-g sagte in FoxESS Cloud Javascript Warnmeldungen:

                Object 0_userdata.0.FoxEss.PVPower is invalid: Default value has to be type "string" but received type "number"

                Wenn du Strings verwenden möchtest, musst du auch common.def von 0 (Zahl) in "" (Leerstring) ändern.

                T 1 Reply Last reply Reply Quote 0
                • T
                  Torsten G. @paul53 last edited by

                  @paul53 Danke funktioniert nun super. Problem gelöst

                  paul53 1 Reply Last reply Reply Quote 0
                  • paul53
                    paul53 @Torsten G. last edited by

                    @torsten-g sagte: Problem gelöst

                    Mit Zahlen oder Strings?

                    T 1 Reply Last reply Reply Quote 0
                    • T
                      Torsten G. @paul53 last edited by Torsten G.

                      @paul53 Dein korrigierter Post mit Zahlen. Die Datenpunkte in IOBroker habe ich auch auf Zahlen gemacht.

                      
                                  const datas = JSON.parse(res).result[0].datas;
                                  setState("0_userdata.0.FoxEss.PVPower", Math.round(datas[0].value * 1000) / 1000, true);
                                  setState("0_userdata.0.FoxEss.SOC", datas[2].value, true);
                                  setState("0_userdata.0.FoxEss.Load", Math.round(datas[3].value * 1000) / 1000, true);
                      
                      
                      1 Reply Last reply Reply Quote 0
                      • First post
                        Last post

                      Support us

                      ioBroker
                      Community Adapters
                      Donate

                      748
                      Online

                      31.7k
                      Users

                      79.7k
                      Topics

                      1.3m
                      Posts

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