NEWS
Youless Script
-
Hallo, ich hab ein Problem mit einem Youless Script.
Die Ausgabe auf der Seite sieht so aus.
Wie kann ich das Script so ändern das er mir die Zeile eins auch in einen Datenpunkt umwandelt ?
Da hier im Original Beitrag auch ein anderes Script enthalten war habe ich auch dieses Versucht.
Hier werden mir beide Werte angezeigt , aber es aktualisiert die Werte nicht -aus diesem Grund habe ich die Aktualisierung eingebaut.
Problem - damit läuft mein Log über mit Fehler über.
Kann ich die parts[0] abfrage - in das erste Skript einbauen ?
-
- 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.