NEWS
Output in verschiedene Datenpunkte
-
Hallo zusammen,
ich habe ein Python Script, welches ich per exec aufrufe. Allerdings möchte ich gerne das der Outpunkt nicht in einem Datenpunkt gespeichert wird, sondern in verschiedene.
Output vom Script:
2904.02 93% -2123.66
Jetzt möchte ich gerne das 2904.02 in Datenpunkt1, 93% in Datenpunkt2 und -2123.66 in Datenpunkt3 gespeichert wird.
Der Output ist variabel.
Bisher mache ich das so, allerdings wird es alles in einem Datenpunkt gespeichert:
exec('/home/pi/scripts/pla.py', function (error, stdout, stderr) { setState('Datenpunkte.0.PV-Anlage.DATENPUNKT',stdout); });
Jemand eine Idee wie man das umsetzt?
-
@JB1985 sagte:
wird es alles in einem Datenpunkt gespeichert:
Wenn Zeilenschaltungen zwischen den einzelnen Werten sind:
exec('/home/pi/scripts/pla.py', function (error, stdout, stderr) { let arr = stdout.split('\n'); setState('Datenpunkte.0.PV-Anlage.DP1', arr[0], true); setState('Datenpunkte.0.PV-Anlage.DP2', arr[1], true); setState('Datenpunkte.0.PV-Anlage.DP3', arr[2], true); });
-
@paul53 sagte in Output in verschiedene Datenpunkte:
exec('/home/pi/scripts/pla.py', function (error, stdout, stderr) { let arr = stdout.split('\n'); setState('Datenpunkte.0.PV-Anlage.DP1', arr[0], true); setState('Datenpunkte.0.PV-Anlage.DP2', arr[1], true); setState('Datenpunkte.0.PV-Anlage.DP3', arr[2], true); });
Hallo @paul53
Danke für deine Hilfe.
Ich erhalte folgende Fehlermeldung:
13:34:09.175 error javascript.0 (9529) script.js.PV_Anlage.Skript_1: TypeError: Cannot read property 'split' of undefined 13:34:09.176 error javascript.0 (9529) at script.js.PV_Anlage.Skript_1:3:21
-
@JB1985 sagte:
Cannot read property 'split' of undefined
Dann hat stdout keinen Inhalt. Vielleicht mit Check von error abfangen.
exec('/home/pi/scripts/pla.py', function (error, stdout, stderr) { if(error) log('Fehler Python: ' + stderr, 'warn'); else if(stdout) { let arr = stdout.split('\n'); setState('Datenpunkte.0.PV-Anlage.DP1', arr[0], true); setState('Datenpunkte.0.PV-Anlage.DP2', arr[1], true); setState('Datenpunkte.0.PV-Anlage.DP3', arr[2], true); } });
-
Hey! Danke, es funktioniert jetzt.
Weißt du zufällig noch wie ich diese WARN Meldung aus dem Log bekomme?
javascript.0 2020-06-19 13:43:53.349 warn (9529) at Process.ChildProcess._handle.onexit (internal/child_process.js:286:5) javascript.0 2020-06-19 13:43:53.349 warn (9529) at maybeClose (internal/child_process.js:1021:16) javascript.0 2020-06-19 13:43:53.349 warn (9529) at ChildProcess.emit (events.js:315:20) javascript.0 2020-06-19 13:43:53.349 warn (9529) at ChildProcess.exithandler (child_process.js:294:7) javascript.0 2020-06-19 13:43:53.349 warn (9529) at script.js.PV_Anlage.Skript_1:8:4 javascript.0 2020-06-19 13:43:53.348 warn (9529) at setState (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1355:20) javascript.0 2020-06-19 13:43:53.347 warn (9529) You are assigning a string to the state "Datenpunkte.0.PV-Anlage.PV_Batterie_Ladung" which expects a boolean. Please fix your code to use a boolean or change the state type to string. This war
-
@JB1985 sagte:
WARN Meldung aus dem Log bekomme?
Die Werte sind Strings. Ändere den Datenpunkt-Typ von "boolean" auf "string".