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-auslesen

    Vom 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 so

    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);
    });
    

    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/?

    logger.sh:

    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
    

    Blockly_temp.JPG


  • @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:
    blockly.JPG

    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:

    blockly.JPG

    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ührt

    Trotz 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:
    bash.JPG


  • 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.

    Blockly_temp.JPG


  • @paul53 Ganz Ganz herzlichen Dank Paul !!!

    Es funktioniert super und jetzt kann ich richtig mit iobroker loslegen!

    blockly.JPG

Suggested Topics

840
Online

38.4k
Users

43.9k
Topics

613.2k
Posts