Frage zu Telnet-Kommunikation

Begonnen von Bednorz, 08 März 2021, 19:27:10

Vorheriges Thema - Nächstes Thema

Bednorz

Hallo Leute,
ich bin gerade dabei eine App für mein Smarthome zu programmieren. Dafür nutze ich die Unity Engine, also eigentlich C#. Derzeit verbinde ich mit FHEM über .Net-Socket per Telnet. Soweit funktioniert das alles auch wunderbar. Mein Problem ist allerdings, wenn die Verbindung zwischen App-Gerät und FHEM-Raspi nicht so gut ist (schwaches WLAN etc.). Das führt dazu, dass größere Nachrichten, wie zum Beispiel "list -r", manchmal geteilt werden. Leider habe ich bisher keine Möglichkeit gefunden festzustellen wann die Nachricht, die ich von FHEM erwarte fertig ist. Häufig hat man ja einen Header oder ein bestimmtes Zeichen am Ende der Nachricht, um genau das feststellen zu können. Hat FHEM-Telnet sowas auch und ich übersehe es nur oder wie kann ich das machen?

mfG Bednorz

rudolfkoenig

Man koennte dafuer den prompt benutzen.
Oder JsonList2 statt "list -r" verwenden.

Bednorz

Mit "prompt" meinst du, wenn man über Telnet einfach eine leere Nachricht schickt und fhem "fhem> " als Antwort schickt? Stimmt, das könnte ich probieren. Darauf könnte ich dann prüfen und habe so mit Nachrichtenende.
Werde ich mich mal reindenken. Danke für den Tipp.

Bednorz

Hallo,
ich habe den Abend jetzt damit verbracht zu versuchen die ganze Sache mit dem Prompt umzusetzen. Aus mir nicht erklärlichen Gründen funktioniert das aber nicht. Deswegen bin ich auf die Idee gekommen mir das Telnet-Modul anzuschauen und zu versuchen ein EOF-Symbol bzw. Phrase einzubauen. Leider bin ich absolut kein Perl-Profi (nichtmal ein Anfänger) und bin ziemlich stark gescheitert.
An welcher Stelle müsste ich etwas anpassen, um ans Ende einer Nachricht immer etwas anzuhängen oder könnte sich vielleicht sogar jemand erbarmen einen Patch für das Modul zu schreiben und vielleicht ein optionales Attribut in das Modul einzubauen, das einem ermöglicht einen EOD-String zu definieren?

mfG Bednorz

rudolfkoenig

Und in welcher Eigenschaft soll sich dieses neue Feature von dem aktuell implementierten prompt sich unterscheiden? "Aus mir nicht erklärlichen Gründen funktioniert das aber nicht." ist mAn keine gueltige Spezifikation.

betateilchen

Zitat von: Bednorz am 08 März 2021, 22:30:30
An welcher Stelle müsste ich etwas anpassen, um ans Ende einer Nachricht immer etwas anzuhängen

Nirgends. Der Prompt ist genau das, was an das Ende einer/jeder Nachricht angehängt wird.
Und was in dem prompt drinsteht, ist sogar über das Attribut "prompt" vom Anwender konfigurierbar.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!