NEWS
[Geloest] Bitte um Hilfe bei Script ccu-> iobroker
-
OK. Ist also ein fehlender Befehl in meinem Armbian
Sleep ist da!
Unterschied zu usleep scheint nur zu sein, dass sleep mit Sekunden arbeitet.
Also habe ich sleep 1 für usleep 50000 eingegeben.
Ergebnis:
[error] javascript.0 script.js.common.Solar: Exec-Fehler: Connection closed by foreign host.
Das Script pausiert 1 oder 2 Sekunden, je nach Vorgabe, führt die Eingabe 00* wohl nicht aus.
-
die CMD Zeile habe ich umgestellt und das script läuft scheinbar.
var cmd = "telnet 192.168.1.82 15000 | (echo '00*'; sleep 1s)";
Leider werden die Variablen nicht gefüllt.
LOG:
javascript.0 2017-05-21 12:31:41.633 info script.js.common.Solar: setForeignState(id=javascript.0.Solar_Monat_iob, state=null) javascript.0 2017-05-21 12:31:41.632 info script.js.common.Solar: setForeignState(id=javascript.0.Solar_iob, state=null) javascript.0 2017-05-21 12:31:41.632 info script.js.common.Solar: javascript.0 2017-05-21 12:31:41.631 info script.js.common.Solar: javascript.0 2017-05-21 12:31:41.628 info script.js.common.Solar: 00* javascript.0 2017-05-21 12:31:35.637 info script.js.common.Solar: registered 0 subscriptions and 0 schedules javascript.0 2017-05-21 12:31:35.637 info script.js.common.Solar: exec: telnet 192.168.1.82 15000 | (echo '00*'; sleep 1s)
-
Der SLEEP Befehl funktioniert wohl doch nicht.
Im Log sehe einen neuen LOG Eintrag immer nach 6 Sekunden.
Egal ob ich den Sleep Befehl drinnen habe oder ihn rausnehme.
javascript.0 2017-05-21 12:47:45.535 info script.js.common.Solar: setForeignState(id=javascript.0.Solar_Monat_iob, state=null) javascript.0 2017-05-21 12:47:45.531 info script.js.common.Solar: setForeignState(id=javascript.0.Solar_iob, state=null) javascript.0 2017-05-21 12:47:45.530 info script.js.common.Solar: javascript.0 2017-05-21 12:47:45.527 info script.js.common.Solar: javascript.0 2017-05-21 12:47:45.525 info script.js.common.Solar: 00* javascript.0 2017-05-21 12:47:39.491 info script.js.common.Solar: registered 0 subscriptions and 0 schedules javascript.0 2017-05-21 12:47:39.470 info script.js.common.Solar: exec: telnet 192.168.1.82 15000 | (echo '00*') javascript.0 2017-05-21 12:47:39.455 info Start javascript script.js.common.Solar javascript.0 2017-05-21 12:47:39.430 info Stop script script.js.common.Solar javascript.0 2017-05-21 12:46:57.803 info script.js.common.Solar: setForeignState(id=javascript.0.Solar_Monat_iob, state=null) javascript.0 2017-05-21 12:46:57.798 info script.js.common.Solar: setForeignState(id=javascript.0.Solar_iob, state=null) javascript.0 2017-05-21 12:46:57.796 info script.js.common.Solar: javascript.0 2017-05-21 12:46:57.795 info script.js.common.Solar: javascript.0 2017-05-21 12:46:57.793 info script.js.common.Solar: 00* javascript.0 2017-05-21 12:46:51.720 info script.js.common.Solar: registered 0 subscriptions and 0 schedules javascript.0 2017-05-21 12:46:51.695 info script.js.common.Solar: exec: telnet 192.168.1.82 15000 | (echo '00*'; sleep 1s) javascript.0 2017-05-21 12:46:51.689 info Start javascript script.js.common.Solar
-
die CMD Zeile habe ich umgestellt und das script läuft scheinbar.
var cmd = "telnet 192.168.1.82 15000 | (echo '00*'; sleep 1s)"; ```` `
Als blutiger Linux-Laie behaupte ich: In dieser Reihenfolge kann die pipe nicht funktionieren; das Ergebnis muss "00*" sein. Versuche es mal ohne sleep (mit und ohne Semikolon / Klammern).
var cmd = "echo '00*' | telnet 192.168.1.82 15000";
Woher hast Du dieses Kommando ? Was bedeutet '15000' ? Liefert Deine Quelle noch andere Möglichkeiten ?
-
Hab ich auch schon wieder umgestellt.
15000 ist der Port, auf den der TCP Server auf Anfragen wartet.
root@cubietruck:~# telnet 192.168.1.82 15000 Trying 192.168.1.82... Connected to 192.168.1.82. Escape character is '^]'. 00* {00,21,05,2017,13,38,0030.6,00678,003240,00045138,06203,000,000.0,000,000.0,000,000.0,000,000.0,00},: Connection closed by foreign host.
Das ist die Ausgabe, wenn ich die Sachen manuell über die Konsole eingebe.
Connection Closed kommt nach einem zweiten Enter.
Manuell funktioniert das über den IOBroker Cubie.
-
Andere Möglichkeiten gibt es auch.
Es gibt CSV Dateien auf dem SolarviewPI.
Diese müsste dann geholt werden, taggleich mit dem aktuellen Datum.
Die TelnetFunktion läuft seit 2 Jahren ohne Probleme auf dem CCUPi.
Wie geschrieben, möchte ich die CCU weiter entscripten!
-
Evtl. funktioniert das Script ja auch.
Das Schließen kann doch auch darauf hindeuten, dass wie im Terminal die Verbindung halt geschlossen wurde.javascript.0 2017-05-21 13:51:51.342````
error script.js.common.Solar: Exec-Fehler: Connection closed by foreign host.
javascript.0 2017-05-21 13:51:50.300 info script.js.common.Solar: registered 0 subscriptions and 0 schedules
javascript.0 2017-05-21 13:51:50.275 info script.js.common.Solar: exec: echo '00*';sleep 1 | telnet 192.168.1.82 15000
javascript.0 2017-05-21 13:51:50.266 info Start javascript script.js.common.Solar
javascript.0 2017-05-21 13:51:50.221 info Stop script script.js.common.SolarDann läuft das Parsen evtl. nicht. Müsste da im Log etwas auftauchen? Was ist das mit den Adaptern einfach… :)
-
Dann läuft das Parsen evtl. nicht.
Müsste da im Log etwas auftauchen? `
if(debug) log(Solarroh);
müsste genau den String liefern:
{00,21,05,2017,13,38,0030.6,00678,003240,00045138,06203,000,000.0,000,000.0,000,000.0,000,000.0,00},:
Das Parsen erfolgt erst im Anschluss. Ergebnis sollte sein '30.6' und '0678'.
Das Parsen geht allerdings besser, da die Werte Komma-separiert sind:
Solarroh = Solarroh.split(','); // erzeugt ein Array var x = Solarroh[6]; if(debug) log(x); var m = Solarroh[7]; if(debug) log(m);
-
Vielleicht dauert 'sleep 1' zu lange ? Versuche es mal mit 'sleep 0.05'.
-
Danke Dir für Deine Hilfe.
Leider kein Erfolg.
Keinerlei Änderung.
-
In den Variablen kommt nichts an.
-
Es gibt CSV Dateien auf dem SolarviewPI. `
Wenn Du einen Solarview Pi hast: Funktioniert dann nicht auch der Web-Zugriff http://192.168.1.82:88/index.htm ?In dem Fall könntest Du die Werte mit dem Adapter ioBroker.parser ermitteln.
-
So sieht eine Seite aus.
JSON, wo Frames geladen werden.
http://www.solarview.info/solarview_fb/
Es gibt Adapter für FHEM und PIMATIC.
beide holen die Daten per telnet.
-
Es gibt Adapter für FHEM und PIMATIC.
beide holen die Daten per telnet. `
Nein, pimatic-solarview holt die Daten per net.socket. Allerdings auch über die Ausgabe von '00*\r\n':socket.once 'connect', (() => @_base.debug("Connected to #{host}:#{port}.") socket.write "0" + inverterId + "*\r\n" )
Das ist allerdings kein Javascript, sondern Coffeescript, wovon ich keine Ahnung habe.
-
Hallo Paul,
vielen Dank für Deine Mühen.
Ich lasse es erst einmal weiter auf yahm (CCU) laufen.
Evtl. finde ich irgendwann eine andere Lösung.
-
Hallo Paul,
ich nutze nun der Parser-Adapter. Für einen nicht Programmierer nicht so einfach. Ich habe es aber geschafft. Vielen Dank noch einmal für Dein Hilfe.
Gesendet von iPad mit Tapatalk