NEWS
Datenlogger Auslesen und in Datenpunkt schreiben?
-
Hallo Zusammen,
bin gerade bei meiner ersten IObroker Installation und bin auch als Nichtprogrammierer für Eure Tips sehr dankbar und bitte um etwas Nachsicht.
Die Suche bedienen, habe ich schon einmal geschafft, aber leider hatte der Beitrag keine Antworten:
https://www.forum.iobroker.net/topic/3744/sunwatch-datenlogger-auslesenVom Prinzip möchte ich das Gleiche machen und habe auch einen SunWatch Datenlogger.
Unter den Objekten (javascript) im IObroker habe ich mir auch schon eigene Datenpunkte angelegt. Wie bekomme ich nun die Datenpunkte/Objekte mit den Werten des PV Datenloggers gefüllt?Wie kann ich dazu ein Script in IObroker anlegen und wie weise ich die Antworten des Datenloggers den Datenpunkten zu?
Danke und Grüße
-
@Pete0815
Ich würde es einfach mal mit request() versuchen.request('localhost:22222/GETPAR;0;0;PPV;E-Total', function(error, response, body) { if(error) log(error, 'warn'); else log(body); });
-
@paul53 Danke
Habe es mal versucht:
request('192.168.7.21:22222/GETPAR;0;0;PPV;E-Total', function(error, response, body) { if(error) log(error, 'warn'); else log(body); });
leider sehe ich nur die error-Meldung "warn" und keine Werte im log
28.1.2020, 14:31:11.768 [info ]: javascript.0 (1299) Start javascript script.js.Test
28.1.2020, 14:31:11.779 [warn ]: javascript.0 (1299) script.js.Test: {}
28.1.2020, 14:31:11.779 [info ]: javascript.0 (1299) script.js.Test: registered 0 subscriptions and 0 schedules -
@Pete0815
Dann versuche es mal sorequest('192.168.7.21:22222/"GETPAR;0;0;PPV;E-Total"', function(error, response, body) { if(error) log(JSON.stringify(error), 'warn'); else log(body); });
oder
request('192.168.7.21:22222?"GETPAR;0;0;PPV;E-Total"', function(error, response, body) { if(error) log(JSON.stringify(error), 'warn'); else log(body); });
-
@paul53 leider nein beide logs -> warn
javascript.0 2020-01-28 16:14:38.035 info (1299) script.js.Test: registered 0 subscriptions and 0 schedules
javascript.0 2020-01-28 16:14:38.034 warn (1299) script.js.Test: {}
javascript.0 2020-01-28 16:14:38.028 info (1299) Start javascript script.js.Test
javascript.0 2020-01-28 16:14:36.554 info (1299) Stop script script.js.Test
javascript.0 2020-01-28 16:14:19.952 info (1299) Stop script script.js.Test
javascript.0 2020-01-28 16:14:04.133 info (1299) script.js.Test: registered 0 subscriptions and 0 schedules
javascript.0 2020-01-28 16:14:04.132 warn (1299) script.js.Test: {}
javascript.0 2020-01-28 16:14:04.128 info (1299) Start javascript script.js.Test -
@Pete0815 sagte:
leider nein beide logs -> warn
Dann funktioniert es mit request() wohl nicht und man muss das beschriebene Shell-Script erstellen und per exec() ausführen.
-
@paul53
ok Danke.
Wo speicher ich das Shell script auf dem IObroker?
/home/iobroker/scripte/?Was schreibe ich darein?:
#! /bin/sh echo -e "GETPAR;0;0;PPV;E-Total" | nc 192.168.7.21:22222
dann in IObroker:
exec(/home/iobroker/logger.sh)Sorry falls ich zu dumm frage. Habe gerade noch in einem Forum einen Beitrag gesehen, wo jemand schreibt er nutzt einen exec() Knoten von Node Red und führt jede Minute folgendes aus:
/bin/echo -e "GETPAR;2;0;Eplus;Eminus" | /bin/nc 192.168.x.x 22222
Vom Ergebniss extrahiert er die Werte....
-
@Pete0815 sagte:
Was schreibe ich darein?:
Kein Doppelpunkt, sondern Leerzeichen
#! /bin/sh echo -e "GETPAR;0;0;PPV;E-Total" | nc 192.168.7.21 22222
@Pete0815 sagte in Datenlogger Auslesen und in Datenpunkt schreiben?:
Wo speicher ich das Shell script auf dem IObroker?
Dort, wo Du Schreibrechte hast und ioBroker Ausführungsrechte hat.
-
@paul53 Danke da muß ich mich dran "versuchen"
Habe gerade etwas "rumgeklickt" und im blockly gibt es ja auch die Möglichkeit Aktionen per exec auszuführen. Ist dass eine Sackgasse?
-
@Pete0815 sagte:
im blockly gibt es ja auch die Möglichkeit Aktionen per exec auszuführen.
Ja, dort muss der Pfad des Shell-Scripts angegeben werden. Nicht vergessen, das Script ausführbar zu machen
chmod +x logger.sh
-
@paul53 Vielen Dank
habe das script (logger.sh) mal hochgeladen (sitze Remote) und die Rechte 7777 vergeben.
drin steht:
#! /bin/sh echo -e "GETPAR;0;0;PPV;E-Total" | nc 192.168.7.21 22222
Dann das blockly nachgebaut:
Leider kommt das Ergebnis null:
28.1.2020, 18:55:19.198 [info ]: javascript.0 (4287) Start javascript script.js.Test2
28.1.2020, 18:55:19.228 [info ]: javascript.0 (4287) script.js.Test2: registered 0 subscriptions and 0 schedules
28.1.2020, 18:55:19.259 [info ]: javascript.0 (4287) script.js.Test2: null -
@Pete0815 Oh ich sehe es die Variablen passen noch nicht im blockly:
28.1.2020, 19:02:41.118 [info ]: javascript.0 (4287) Start javascript script.js.Test2
28.1.2020, 19:02:41.149 [info ]: javascript.0 (4287) script.js.Test2: registered 0 subscriptions and 0 schedules
28.1.2020, 19:02:41.181 [info ]: javascript.0 (4287) script.js.Test2: undefined -
@Pete0815 sagte:
Oh ich sehe es die Variablen passen noch nicht im blockly:
result muss klein geschrieben werden.
-
@paul53
28.1.2020, 19:34:50.748 [info ]: javascript.0 (4287) Start javascript script.js.Test2
28.1.2020, 19:34:50.780 [info ]: javascript.0 (4287) script.js.Test2: registered 0 subscriptions and 0 schedules
28.1.2020, 19:34:50.802 [info ]: javascript.0 (4287) script.js.Test2:Nun ohne Ergebnis? Versuche gerade herauszufinden ob die Datei öffnet und ausführt...
-
Habe gerade ein Beitrag vom 25.01.2020 gefunden, wo ähnliches Verhalten bzw. nicht ausführen von shell scripten beschrieben wird.
Problem: Shell script liegt unter /Home/pi/
wird aber von iobroker ausgeführtTrotz 777 läuft es nicht.
Alles genau wie bei mir, oder?
Habe schon versucht mich per putty bzw. WinSCP als iobroker anzumelden aber leider nicht möglich. Das passwort admin oder raspberry oder iobroker funktioniert nicht. Access denied.
-
@Pete0815
Liefert das Shell Script etwas zurück, wenn es von Console (puTTY) als user pi aufgerufen wird ? -
@paul53 Ja das klappt:
-
tada habe mal ins blockly bash davor geschrieben
28.1.2020, 20:07:09.388 [info ]: javascript.0 (4287) Start javascript script.js.Test2
28.1.2020, 20:07:09.403 [info ]: javascript.0 (4287) script.js.Test2: registered 0 subscriptions and 0 schedules
28.1.2020, 20:07:09.428 [info ]: javascript.0 (4287) script.js.Test2: 0;32742056 -
@Pete0815 sagte:
script.js.Test2: 0;32742056
Dann kannst Du die Werte in Datenpunkte schreiben.
-
@paul53 Ganz Ganz herzlichen Dank Paul !!!
Es funktioniert super und jetzt kann ich richtig mit iobroker loslegen!