<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[[Gelöst] FoxESS Cloud Javascript Warnmeldungen]]></title><description><![CDATA[<p dir="auto">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.</p>
<pre><code>/*
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 =&gt; {
        //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); }
});
</code></pre>
<p dir="auto"><strong>Folgende Warnungen erhalte ich bei jeder Ausführung</strong>:</p>
<p dir="auto">javascript.0<br />
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"<br />
javascript.0<br />
2025-05-27 09:34:00.156	warn	at TLSSocket.Readable.push (node:internal/streams/readable:392:5)<br />
javascript.0<br />
2025-05-27 09:34:00.156	warn	at readableAddChunkPushByteMode (node:internal/streams/readable:512:3)<br />
javascript.0<br />
2025-05-27 09:34:00.156	warn	at addChunk (node:internal/streams/readable:561:12)<br />
javascript.0<br />
2025-05-27 09:34:00.155	warn	at TLSSocket.emit (node:domain:489:12)<br />
javascript.0<br />
2025-05-27 09:34:00.155	warn	at TLSSocket.emit (node:events:524:28)<br />
javascript.0<br />
2025-05-27 09:34:00.155	warn	at TLSSocket.socketOnData (node:_http_client:544:22)<br />
javascript.0<br />
2025-05-27 09:34:00.155	warn	at HTTPParser.parserOnBody (node:_http_common:130:24)<br />
javascript.0<br />
2025-05-27 09:34:00.155	warn	at IncomingMessage.Readable.push (node:internal/streams/readable:392:5)<br />
javascript.0<br />
2025-05-27 09:34:00.155	warn	at readableAddChunkPushByteMode (node:internal/streams/readable:512:3)<br />
javascript.0<br />
2025-05-27 09:34:00.155	warn	at addChunk (node:internal/streams/readable:561:12)<br />
javascript.0<br />
2025-05-27 09:34:00.154	warn	at IncomingMessage.emit (node:domain:489:12)<br />
javascript.0<br />
2025-05-27 09:34:00.154	warn	at IncomingMessage.emit (node:events:524:28)<br />
javascript.0<br />
2025-05-27 09:34:00.154	warn	at IncomingMessage.&lt;anonymous&gt; (script.js.skripte.foxx:44:13)<br />
javascript.0<br />
2025-05-27 09:34:00.154	warn	at setState (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:2090:20)<br />
javascript.0<br />
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.</p>
<p dir="auto">Den Datenpunkt PVPower habe ich bereits auf Nummer, dann auf String aber es kommt immer eine Fehlermeldung. Die Werte stimmen in beiden Versionen.<br />
Bei PVPower auf String kommt folgende Meldung:<br />
admin.0<br />
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!</p>
<p dir="auto">Vielleicht kann mir wer Licht ans Fahrrad machen <img src="https://forum.iobroker.net/assets/plugins/nodebb-plugin-emoji/emoji/android/1f60a.png?v=ba16ebd4856" class="not-responsive emoji emoji-android emoji--blush" style="height:23px;width:auto;vertical-align:middle" title=":blush:" alt="😊" /> ?</p>
]]></description><link>https://forum.iobroker.net/topic/81178/gelöst-foxess-cloud-javascript-warnmeldungen</link><generator>RSS for Node</generator><lastBuildDate>Sun, 17 May 2026 15:09:26 GMT</lastBuildDate><atom:link href="https://forum.iobroker.net/topic/81178.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 27 May 2025 07:46:47 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to [Gelöst] FoxESS Cloud Javascript Warnmeldungen on Wed, 19 Nov 2025 18:06:49 GMT]]></title><description><![CDATA[<p dir="auto">Ich habe erste Ergänzungen vorgenommen ...</p>
<p dir="auto">Der kumulierte Tagesertrag ("todayYield") ist hinzugekommen...</p>
<pre><code>const data = JSON.stringify({
        "sn": sn,
        "variables": [
            "pvPower",
            "todayYield"
             /*, "generationPower", "SoC", "loadsPower" */
        ]
    });
....
            setState("0_userdata.0.FoxEss.todayYield", Math.round(datas[1].value * 1000), true);
</code></pre>
<p dir="auto">Daneben ein kurzes Blockly, was kurz vor Mitternacht den "todayYield" in einen user-Datenpunkt "yesterdayYield" verschiebt...</p>
<p dir="auto"><img src="/assets/uploads/files/1763575075899-c1039540-2c85-495f-a91d-f5eaecd37dee-grafik.png" alt="c1039540-2c85-495f-a91d-f5eaecd37dee-grafik.png" class=" img-fluid img-markdown" /></p>
<p dir="auto">Wenn man sich die weiteren API-Möglichkeiten so anschauen will, gibt es hier eine Übersicht, was man sich alles aus der Cloud besorgen kann (Abhängig davon, was man sich so alles von denen gekauft hat) ...</p>
<p dir="auto"><a href="https://www.foxesscloud.com/public/i18n/en/OpenApiDocument.html" rel="nofollow ugc">https://www.foxesscloud.com/public/i18n/en/OpenApiDocument.html</a></p>
<p dir="auto">Dort diesen Abschnitt suchen</p>
<blockquote>
<p dir="auto">Variable table：</p>
<p dir="auto">The table presented below offers a comprehensive overview of the variables that can be accessed through the API. It is important to note that the availability of these variables may differ depending on the specific device being utilized. Therefore, the variables listed in the table are subject to change based on the device in use.</p>
</blockquote>
]]></description><link>https://forum.iobroker.net/post/1309463</link><guid isPermaLink="true">https://forum.iobroker.net/post/1309463</guid><dc:creator><![CDATA[MartinP]]></dc:creator><pubDate>Wed, 19 Nov 2025 18:06:49 GMT</pubDate></item><item><title><![CDATA[Reply to [Gelöst] FoxESS Cloud Javascript Warnmeldungen on Mon, 17 Nov 2025 10:49:40 GMT]]></title><description><![CDATA[<p dir="auto">Ich habe das Script etwas angepasst - ich habe nur einen Micro-Inverter von FoxEss (Balkonkraftwerk, keine Batterie (deshalb SOC unnötig, und auch keine Lastmessung deshalb Load unnötig)</p>
<p dir="auto">Da der kleine Wechselrichter auch die Erzeugung in kW ausgibt, habe ich das Round angepasst - es kommen dadurch "glatte" Wattwerte (nicht kW) ohne Komma in den Datenpunkt</p>
<p dir="auto"><img src="/assets/uploads/files/1763375763629-14b37deb-eed3-4e1f-abd2-b94db89a25c7-grafik.png" alt="14b37deb-eed3-4e1f-abd2-b94db89a25c7-grafik.png" class=" img-fluid img-markdown" /></p>
<pre><code>/*
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 =&gt; {
        console.log('STATUS: ' + response.statusCode);
        //response.setEncoding('utf8');
        response.on("data", function (res) {
            // console.log(res);
            const datas = JSON.parse(res).result[0].datas;
            console.log(datas[0]);
            setState("0_userdata.0.FoxEss.PVPower", Math.round(datas[0].value * 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);        
        });
    });
    request.write(data);
    request.end();
 
  } catch (e) { console.error(e); }
});
</code></pre>
<p dir="auto">Meine Planungen für weitere Ergänzungen am Script:</p>
<ol>
<li>Tagesbudget an Queries sparsamer einsetzen<br />
a) zwischen Dämmerungsende und Dämmerungsbeginn keine Werte über die API abfragen (da kann es keine Erträge geben).<br />
b) bei niedrigen Erträgen ggfs. auch den Leserhythmus abschwächen.</li>
<li>Ertrag Vortag einmalig am Folgetag abfragen</li>
<li>Ertrag Vormonat einmalig am ersten Tag des Folgemonats abfragen.</li>
</ol>
]]></description><link>https://forum.iobroker.net/post/1308895</link><guid isPermaLink="true">https://forum.iobroker.net/post/1308895</guid><dc:creator><![CDATA[MartinP]]></dc:creator><pubDate>Mon, 17 Nov 2025 10:49:40 GMT</pubDate></item><item><title><![CDATA[Reply to [Gelöst] FoxESS Cloud Javascript Warnmeldungen on Tue, 27 May 2025 11:32:35 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/paul53" aria-label="Profile: paul53">@<bdi>paul53</bdi></a> Dein korrigierter Post mit Zahlen. Die Datenpunkte in IOBroker habe ich auch auf Zahlen gemacht.</p>
<pre><code>
            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);

</code></pre>
]]></description><link>https://forum.iobroker.net/post/1274401</link><guid isPermaLink="true">https://forum.iobroker.net/post/1274401</guid><dc:creator><![CDATA[Torsten G.]]></dc:creator><pubDate>Tue, 27 May 2025 11:32:35 GMT</pubDate></item><item><title><![CDATA[Reply to [Gelöst] FoxESS Cloud Javascript Warnmeldungen on Tue, 27 May 2025 11:29:57 GMT]]></title><description><![CDATA[<p dir="auto">@torsten-g sagte: Problem gelöst</p>
<p dir="auto">Mit Zahlen oder Strings?</p>
]]></description><link>https://forum.iobroker.net/post/1274400</link><guid isPermaLink="true">https://forum.iobroker.net/post/1274400</guid><dc:creator><![CDATA[paul53]]></dc:creator><pubDate>Tue, 27 May 2025 11:29:57 GMT</pubDate></item><item><title><![CDATA[Reply to [Gelöst] FoxESS Cloud Javascript Warnmeldungen on Tue, 27 May 2025 11:28:44 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/paul53" aria-label="Profile: paul53">@<bdi>paul53</bdi></a> Danke funktioniert nun super. Problem gelöst</p>
]]></description><link>https://forum.iobroker.net/post/1274399</link><guid isPermaLink="true">https://forum.iobroker.net/post/1274399</guid><dc:creator><![CDATA[Torsten G.]]></dc:creator><pubDate>Tue, 27 May 2025 11:28:44 GMT</pubDate></item><item><title><![CDATA[Reply to [Gelöst] FoxESS Cloud Javascript Warnmeldungen on Tue, 27 May 2025 10:48:09 GMT]]></title><description><![CDATA[<p dir="auto">@torsten-g sagte: Das funktioniert leider nicht.</p>
<p dir="auto">Ich hatte die erste Zeile nachträglich korrigiert. Hast du die Korrektur übernommen?</p>
<pre><code>            const datas = JSON.parse(res).result[0].datas;
</code></pre>
<p dir="auto">Die Datenpunkte müssen vom Typ "number" sein.</p>
<p dir="auto">@torsten-g sagte in <a href="/post/1274391">FoxESS Cloud Javascript Warnmeldungen</a>:</p>
<blockquote>
<p dir="auto">Object 0_userdata.0.FoxEss.PVPower is invalid: Default value has to be type "string" but received type "number"</p>
</blockquote>
<p dir="auto">Wenn du Strings verwenden möchtest, musst du auch <em>common.def</em> von 0 (Zahl) in "" (Leerstring) ändern.</p>
]]></description><link>https://forum.iobroker.net/post/1274393</link><guid isPermaLink="true">https://forum.iobroker.net/post/1274393</guid><dc:creator><![CDATA[paul53]]></dc:creator><pubDate>Tue, 27 May 2025 10:48:09 GMT</pubDate></item><item><title><![CDATA[Reply to [Gelöst] FoxESS Cloud Javascript Warnmeldungen on Tue, 27 May 2025 10:37:34 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/asgothian" aria-label="Profile: asgothian">@<bdi>asgothian</bdi></a> Danke nur jetzt kommt folgende Meldung vom Admin.0</p>
<p dir="auto">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!</p>
]]></description><link>https://forum.iobroker.net/post/1274391</link><guid isPermaLink="true">https://forum.iobroker.net/post/1274391</guid><dc:creator><![CDATA[Torsten G.]]></dc:creator><pubDate>Tue, 27 May 2025 10:37:34 GMT</pubDate></item><item><title><![CDATA[Reply to [Gelöst] FoxESS Cloud Javascript Warnmeldungen on Tue, 27 May 2025 10:34:11 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/paul53" aria-label="Profile: paul53">@<bdi>paul53</bdi></a> Das funktioniert leider nicht. Nur Error Meldungen. Trotzdem Danke für deine Mühe</p>
]]></description><link>https://forum.iobroker.net/post/1274390</link><guid isPermaLink="true">https://forum.iobroker.net/post/1274390</guid><dc:creator><![CDATA[Torsten G.]]></dc:creator><pubDate>Tue, 27 May 2025 10:34:11 GMT</pubDate></item><item><title><![CDATA[Reply to [Gelöst] FoxESS Cloud Javascript Warnmeldungen on Tue, 27 May 2025 08:36:34 GMT]]></title><description><![CDATA[<p dir="auto">@torsten-g sagte: Licht ans Fahrrad machen  ?</p>
<p dir="auto">Da es sich um Zahlenwerte handelt, ändere Zeilen 41 bis 47:</p>
<pre><code>            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);
</code></pre>
]]></description><link>https://forum.iobroker.net/post/1274374</link><guid isPermaLink="true">https://forum.iobroker.net/post/1274374</guid><dc:creator><![CDATA[paul53]]></dc:creator><pubDate>Tue, 27 May 2025 08:36:34 GMT</pubDate></item><item><title><![CDATA[Reply to [Gelöst] FoxESS Cloud Javascript Warnmeldungen on Tue, 27 May 2025 07:50:35 GMT]]></title><description><![CDATA[<p dir="auto">@torsten-g sagte in <a href="/post/1274371">FoxESS Cloud Javascript Warnmeldungen</a>:</p>
<p dir="auto"><code>State value to set for "0_userdata.0.FoxEss.PVPower" has to be type "number" but received type "string"</code></p>
<p dir="auto">da sollte deinem Fahrrad ein Licht aufgehen:</p>
<p dir="auto">der Datenpunkt ist definiert als Zahl (<code>number</code>). Dein Skript schreibt da einen String rein (<code>string</code>).</p>
<p dir="auto">Um die Warnung loszuwerden musst du die explizite Konvertierung zum String wegnehmen oder den DP als String deklarieren.</p>
<pre><code>.
.
.
            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));
.
.
.
</code></pre>
<p dir="auto">A.</p>
]]></description><link>https://forum.iobroker.net/post/1274372</link><guid isPermaLink="true">https://forum.iobroker.net/post/1274372</guid><dc:creator><![CDATA[Asgothian]]></dc:creator><pubDate>Tue, 27 May 2025 07:50:35 GMT</pubDate></item></channel></rss>