NEWS
Aufgabe - wie kann ich es lösen?
-
Hallo zusammen,
ich habe versucht mit ein Script "zusammenzu schustern". Einzeln funktioniert das schon mal.
Das Ganze ist eine Serverabfrage per TCP-Client.
Verbindung –> klappt
Abfrage --> klappt
Antwort --> klappt
Verbindung schließen --> klappt
Nun soll aber Folgendes passieren:
Verbindung --> Abfrage1 --> Antwort1 --> Abfrage2 --> Antwort2 --> usw. --> Verbindung schließen
Kann man die einzelnen Abfragen in eine txt-Datei schreiben und von dort abfragen? Oder gehts über ein Array?
Es sind viele Abfragen...
Ich habe schon ein paar Sachen hinbekommen, bin aber immer noch ne JAVA-Null.
copy, paste & try
-
Hi lenny,
die frage ist was das gegenüber macht nachdem es die Antwort gesendet hat. Wenn es die Verbindung nicht beendet und das legt deine Beschreibung des Ablaufs nahe, sollte es ohne weiteres möglich sein weitere Abfragen zu senden. Du darfst halt nur die Verbindung nicht beenden.
Allerdings bin ich mir nicht sicher wie man weitere befehle über die Offene Verbindung schickt, das hab ich so noch nie versucht.
Nutzt du das hier: https://nodejs.org/api/net.html
Ob Array oder Textdatei würde ich nach verschiedenen Kriterien entscheiden.
Frage 1: Wie oft frage ich ab?
Frage 2: Wie schnell brauch ich die Antwort?
Frage 3: Werden die Abfragen Dynamisch erzeugt oder sind sie fest vorgegeben?
Frage 4: Was macht weniger Aufwand?
Wenn man im Sekunden Takt Abfragt ist es sicherlich sinnvoller ein Array zu benutzen, da eine eingelesene Datei auch in ein Array umgewandelt wird/werden muss um damit zu Arbeiten. Außerdem wird das einlesen und verarbeiten Zeit kosten. Im Gegenzug belegt das Array permanent Arbeitsspeicher, dafür sind die Zugriffe aber deutlich schneller.
Wenn man aber nur einmal die Stunde Abfragt und es egal ist ob die Antwort dann erst nach mehreren Sekunden nachdem Aufruf der Abfrage im ioBroker zur verfügung steht, dann kann man die Abfrage auch erst aus einer Datei lesen.
Wenn Abfragen Dynamisch erzeugt werden, aber auch nachdem Stoppen des Skripts noch vorhanden sein soll ist es logisch sie in eine Textdatei zu schreiben.
-
@Jey Cee:Nutzt du das hier: https://nodejs.org/api/net.html ` jupp genau, nutze ich
@Jey Cee:Ob Array oder Textdatei würde ich nach verschiedenen Kriterien entscheiden.
Frage 1: Wie oft frage ich ab?
Frage 2: Wie schnell brauch ich die Antwort?
Frage 3: Werden die Abfragen Dynamisch erzeugt oder sind sie fest vorgegeben?
Frage 4: Was macht weniger Aufwand? `
zu 1: ist noch nicht klar, ich denke aber es wird jede Minute sein
zu 2: dann wohl innerhalb einer Minute
zu 3: ich denke das ist fest. Beispiel einer Konsoleneingebe: root@raspberrypi:~# ebusctl read OutdoorstempSensor (wobei "ebusctl read" immer gleich sind)
zu 4: ???
es geht hier im eine eBus-Abfrage für meine Vaillant-Heizung. Für mein Model kann ich >160 Werte abfragen. ob man die alle braucht ist noch fraglich. Daher wäre es von Vorteil wenn man die Abfrageparameter über ne txt oder csv einladen könnte.
Das Script mit einem Abfrage-Parameter geht schon mal.
-
es geht hier im eine eBus-Abfrage für meine Vaillant-Heizung. Für mein Model kann ich >160 Werte abfragen. ob man die alle braucht ist noch fraglich. Daher wäre es von Vorteil wenn man die Abfrageparameter über ne txt oder csv einladen könnte. `
Gut bei der Menge an Abfragemöglichkeiten macht es sinn die in eine Textdatei zu schreiben und sie beim Start des skripts in ein oder auch mehrere arrays zu packen. Mehrere Arrays falls du nicht alle werte Minütlich abfragst.
In eine Datei schreiben oder daraus lesen geht mit 'fs'. Es gibt auch im Javascript adapter einen befehl um eine Datei ein zu lesen: https://github.com/ioBroker/ioBroker.ja … t#readfile