NEWS
Youless Script
-
- Code bitte immer in Codetags (</>) posten.
- Weshalb wird die gleiche URL zweimal hintereinander aufgerufen ?
- Welche Werte sollen in Datenpunkte ? Nach der Maßeinheit (kW) zu urteilen, die beiden Leistungswerte, also die Werte in Zeilen 2 und 6 ?
- Es fehlt die Umrechnung von Watt in kW
- Ist ein Abfrage jede Sekunde erforderlich (Systemlast) ?
Was ergibt folgendes Test-Skript in der Log-Ausgabe (Code tags) ?
request.post({url: 'http://192.168.1.46/a?f=j'}, function(error, response, body) { if (!error && body) log(body); });
Eine Rückgabe als JSON lässt sich einfacher per JS verarbeiten.
-
@vitallo sagte:
Kann ich die parts[0] abfrage - in das erste Skript einbauen ?
parts[0] liefert die erste Zeile (Zählerstand). Damit sind noch Wandlungen erforderlich, um den Wert als Zahl zu erhalten:
let cnt = parseFloat(parts[0].trim().replace(',', '.'));
-
@paul53 said in Youless Script:
- Code bitte immer in Codetags (</>) posten.
- Weshalb wird die gleiche URL zweimal hintereinander aufgerufen ?
- Welche Werte sollen in Datenpunkte ? Nach der Maßeinheit (kW) zu urteilen, die beiden Leistungswerte, also die Werte in Zeilen 2 und 6 ?
- Es fehlt die Umrechnung von Watt in kW
- Ist ein Abfrage jede Sekunde erforderlich (Systemlast) ?
Was ergibt folgendes Test-Skript in der Log-Ausgabe (Code tags) ?
request.post({url: 'http://192.168.1.46/a?f=j'}, function(error, response, body) { if (!error && body) log(body); });
Eine Rückgabe als JSON lässt sich einfacher per JS verarbeiten.
- Code bitte immer in Codetags (</>) posten.
OK , Danke für diesen Hinweis
- Weshalb wird die gleiche URL zweimal hintereinander aufgerufen ?
Ich dachte bisher - zwei Werte - zweimal Abfragen.
- Welche Werte sollen in Datenpunkte ? Nach der Maßeinheit (kW) zu urteilen, die beiden Leistungswerte, also die Werte in Zeilen 2 und 6 ?
die ersten beiden Zeilen
erste Zeile = Zählerstand
zweite Zeile - Aktuelle Last- Es fehlt die Umrechnung von Watt in kW
das wäre nicht notwenig
- Ist ein Abfrage jede Sekunde erforderlich (Systemlast) ?
Naja, für den Zählerstand sicherlich nicht.
Was ergibt folgendes Test-Skript in der Log-Ausgabe (Code tags) ?
2020-11-21 11:49:23.193 - info: javascript.0 (1107) script.js.Strom.Testskript: {"cnt":" 107835,806","pwr":410,"lvl":38,"dev":"(±7%)","det":"","con":"","sts":"","cs0":" 0,000","ps0":0,"raw":415}
Mittlerweile , hab ich es soweit hinbekommen das mit dem Code, soweit die beiden Werte gezogen werden - jedoch brauche ich die Einheit (Watt, kHh) nicht.
createState('AktuellerVerbrauch'); createState('Zählerstand'); var request= require('request'); schedule("* * * * * *", function() { request.post({ url: 'http://192.168.1.46/a' }, function(error, response, body){ if (body) { var parts = body.split('\n'); setState('AktuellerVerbrauch', parts[1], true); } }); request.post({ url: 'http://192.168.1.46/a' }, function(error, response, body){ if (body) { var parts = body.split('\n'); setState('Zählerstand', parts[0], true); } }); } );```
-
@vitallo sagte:
{"cnt":" 107835,806","pwr":410,
Die Leistung also in Watt ?
createState('Aktuelle_Leistung', {type: 'number', unit: 'W', role: 'value.power'}); createState('Zählerstand', {type: 'number', unit: 'kWh', role: 'value.power.consumption'}); schedule('*/5 * * * * *' , function() { // alle 5 s request.post({url: 'http://192.168.1.46/a?f=j'}, function(error, response, body) { if (!error && body) { let obj = JSON.parse(body); let cnt = parseFloat(obj.cnt.replace(',', '.')); setState('Zählerstand', cnt, true); setState('Aktuelle_Leistung', obj.pwr, true); } }); });
-
@paul53 said in Youless Script:
@vitallo sagte:
{"cnt":" 107835,806","pwr":410,
Die Leistung also in Watt ?
createState('Aktuelle_Leistung', {type: 'number', unit: 'W', role: 'value.power'); createState('Zählerstand', {type: 'number', unit: 'kWh', role: 'value.power.consumption'); schedule('*/5 * * * * *' , function() { // alle 5 s request.post({url: 'http://192.168.1.46/a?f=j'}, function(error, response, body) { if (!error && body) { let obj = JSON.parse(body); let cnt = parseFloat(obj.cnt.trim().replace(',', '.')); setState('Zählerstand', cnt, true); setState('Aktuelle_Leistung', obj.pwr, true); } }); });
Am liebsten wäre mir gar keine Watt oder kWh angaben.
Habe gerade mal Dein Script getestet - es erfolgt diese Fehlermeldung
-
@vitallo sagte:
es erfolgt diese Fehlermeldung
Sorry: Geschweifte schließende Klammer vergessen - ist oben korrigiert (Zeilen 1, 2).
-
@vitallo sagte:
Am liebsten wäre mir gar keine Watt oder kWh angaben.
Der Wert der Datenpunkte sind reine Zahlen.
-
@paul53 said in Youless Script:
@vitallo sagte:
Am liebsten wäre mir gar keine Watt oder kWh angaben.
Der Wert der Datenpunkte sind reine Zahlen.
auch wenn die Einheit dahintersteht ? Ok - Danke
Hab eine Fehlermeldung erhalten.
-
@vitallo sagte:
Hab eine Fehlermeldung erhalten.
Die beiden ersten Zeilen sind noch nicht korrigiert (schließende geschweifte Klammer).
createState('Aktuelle_Leistung', {type: 'number', unit: 'W', role: 'value.power'}); createState('Zählerstand', {type: 'number', unit: 'kWh', role: 'value.power.consumption'});
-
Ok, jetzt ohne Fehlermeldung
Gibt es hier die Möglichkeit noch das W rauszunehmen ?
in der Zeiten Abfrage ist es raus
Das ist der Hammer wie schnell Du das zusammen hast - sag auf jeden fall schon mal DANKE
-
@vitallo sagte:
Gibt es hier die Möglichkeit noch das W rauszunehmen ?
Lösche die Maßeinheit in den Objekt-Eigenschaften unter "Allgemein" (Mülleimer rechts).
-
Dann kann ich nun nur noch Herzlichen Dank sagen.
Jetzt noch in Grafana einbauen und dann hab ich das mit Deiner Arbeit / Unterstützung erledigt.