Starthilfe Modulentwicklung: Websocket Client benötigt

Begonnen von kalleknx, 03 Januar 2023, 14:17:58

Vorheriges Thema - Nächstes Thema

kalleknx

Hallo zusammen,

ich bin aktuell dabei ein eigenes Modul zu entwickeln, bei dem ein websocket client benötigt wird. Leider fehlt mir noch etwas Starthilfe, wie ich das idealerweise bewerkstelligen kann. Ich habe mir bereits den Code von 69_Softliqcloud.pm und den IFTTT WebSocket Client https://forum.fhem.de/index.php/topic,41082.0.html angeschaut, jedoch passt es noch nicht ganz. Wonach ich suche:

1. Aufbau einer permanenten Websocket Verbindung nach dem Define event. Falls die Verbinung abbricht, sollte sie wieder aufgebaut werden können.
2. Es muss ein http header übergeben werden können. Protocol::WebSocket::Client scheint das nicht zu unterstützen. (Beispiel Aufruf: curl --include --no-buffer --header "Sec-WebSocket-Key: 1234"  --header "Sec-WebSocket-Version: 13" --header "Sec-WebSocket-Protocol: notify" http://ip:port/ --data "msg"
3. Nach dem initialen senden des notify Befehlts kommen dann push Benachrichtigungen dann, welche ich dann gerne verarbeiten würde.

Kann mir jemand ein bestehendes FHEM Modul nennen, welches ich mir anschauen kann, oder alternativ ein passendes Perl Modul?

Lieben Dank vorab.
kalle

betateilchen

Zitat von: kalleknx am 03 Januar 2023, 14:17:58
Kann mir jemand ein bestehendes FHEM Modul nennen, welches ich mir anschauen kann


FHEM/DevIo.pm
FHEM/HttpUtils.pm
FHEM/TcpServerUtils.pm


Und vielleicht mal einen Blick in die DevelopmentGuidelines zu FHEM werfen.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

CoolTux

Soweit ich weiß hat Andre in 30_HUEBridge.pm auch websocket mit drin.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

betateilchen

Zitat von: CoolTux am 03 Januar 2023, 14:38:18
hat 30_HUEBridge.pm auch websocket mit drin.

01_FHEMWEB.pm wohl auch  ;)

Aber es nützt ja wenig, einfach gedankenlos zu kopieren, wenn man nicht versteht, "warum" und "wie" etwas funktioniert.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

CoolTux

Zitat von: betateilchen am 03 Januar 2023, 14:40:38
01_FHEMWEB.pm wohl auch  ;)

Aber es nützt ja wenig, einfach gedankenlos zu kopieren, wenn man nicht versteht, "warum" und "wie" etwas funktioniert.

Die meisten verstehen es wenn sie den Code analysieren, egal ob theoretisch oder halt durch das Anwenden.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

xenos1984

FHEM/72_UBUS_CALL.pm

Das implementiert auch einen WebSocket-Client mittels DevIo.

kalleknx

Hi zusammen,

Trotz einer ,,schöpferischen" Pause möchte ich mich diesem Thema gerne wieder widmen. Ziel ist ein Modul zur Unterstützung von owntone (ehemals forked-daapd).

Mithilfe von DevIO klappt die WebSocket Verbindung (basierend auf diesem Beispiel).

Um die Push Nachrichten von owntone zu aktivieren, muss folgender Befehl geschickt werden:
{ \"notify\": [ \"player\" ] } —> siehe Doku

Mittels
DevIo_SimpleWrite($hash, "{ \"notify\": [ \"player\" ] }", 2); klappt das leider nicht. (Der Befehl wird seitens owntone nicht erkannt)

Was übersehe ich?