Moin,
Ich bin gerade dabei Fhem mit einem esp8266 über udp kommunizieren zu lassen.
In meinem Modul öffne ich einen socket auf LocalPort auf 4210.Reuse habe ich aktiviert.
Der socket ist in der selectlist eingetragen und die read sub wird angesprungen.
Der ESP sendet bei Änderung der gpios den Zustand über udp an Fhem.
Mein Problem ist nun, dass ich 10 modulinstanzen habe, die gleichzeitig den Zustand empfangen sollen.
So geht das ganze aber nur mit dem Modul, welches gerade den socket geöffnet hat...
Kann man es irgendwie hinkriegen, dass man mit allen Modulen auf 4210 gleichzeitig lauschen kann ohne jedem Modul einen separaten Port zuzuweisen ???
Gruß
Jein. Dazu musst du das Modul 2 stufig aufbauen. Ein Empfänger lauscht am Port und verteilt die Daten an logische Module. Ist im Wiki gut dokumentiert
Vg
Jörg
schau dir mal das KeyValuProtocol modul an. dazu gibt es auch einen empfänger dürfen udp nachrichten.
gruss
andre
Moin und Danke für Eure Hilfe.
Im Moment habe ich das ganze nun so laufen, dass jede Instanz einen anderen LocalPort öffnet und mein Sketch die Antworten an eben diese Ports schickt.
Das ganze funktioniert aber nur mit maximal acht Instanzen, alle weiteren empfangen nix.
Port 4211-4218 funktioniert, 4219-4222 nicht.
Die sockets lauschen laut netstat -u aber und das Sketch sendet lt. Wireshark auch von 4211-4222 die Pakete.
Ändere ich für 4219 die IP auf meinen Desktop pc und schicke manuell, geht es.
Gibt es irgendein Verbindungslimit pro Host o.ä????
Zitat von: exciter am 21 Juli 2017, 13:01:00
Moin und Danke für Eure Hilfe.
Im Moment habe ich das ganze nun so laufen, dass jede Instanz einen anderen LocalPort öffnet
Mit anderen Worten: Nett, dass Ihr geantwortet habt, aber ich ignoniere es und stehe weiter vor meinem Problem ;)
ZitatGibt es irgendein Verbindungslimit pro Host o.ä?
Vmtl. auf Betriebssystemsebene.
Was macht den der ESP? Reicht es wenn es auf FHEM-Seite nur 1 Modul gibt, was alle Daten empfängt.
Was für Modulinstanzen hast du denn, wie sich für die GPIOs des ESP interessieren?
Beschreib doch mal bitte was du vor hast. Dann kann man dir besser helfen.
Zitat von: dev0 am 21 Juli 2017, 13:54:54
Mit anderen Worten: Nett, dass Ihr geantwortet habt, aber ich ignoniere es und stehe weiter vor meinem Problem ;)
Vmtl. auf Betriebssystemsebene.
Völlig überraschend :) Aber sehen wir das mal positiv, die Aufgabenstellung ist für den TE schwierig ?
Schau Dir im Wiki das Konzept für 2 stufige Module an. Verstehe es. Dann wird es einfach. Jeder ESP sendet an den einen des physischen Moduls offenen Port. Das erkennt anhand der Absender IP welches logische Modul gemeint ist und schickt das per dispatch weiter. Und Du wirst sehen, kaum macht man's richtig geht's schon :)
Zitat von: herrmannj am 21 Juli 2017, 14:26:25
die Aufgabenstellung ist für den TE schwierig ?
Mir fiel der Einstieg recht schwer (noob ohne jegliche Programmiererfahrung), das Wiki hat mir an der Stelle nur bedingt weiter geholfen. Ich habe es gelernt, indem ich mir 2-stufige Module angesehen habe und versucht habe sie zu verstehen. Danach half mir erst das Wiki weiter...
Was heißt ignorieren, habe es schon aufgenommen was geschrieben wurde.
Ich wollte nur nicht wieder bei Null anfangen und das was ich hatte, weiter benutzen.
Sollte es nicht anders gehen, werde ich wohl mit zweistufigen Modulen arbeiten müssen.
Meine Frage nun war doch einfach nur wieso nur 8 von 11 Modulen was empfangen, obwohl unterschiedliche Ports benutzt werden.
Der ESP steuert über cc1101 meine Jarolift Funkrollläden. Damit ich auch Statusänderungen in Fhem bekomme, wenn ich die originale Fernbedienung nutze, entschlüssele ich die Funktelegramme und schicke die Seriennummer und Button (Funktion) über udp an die jeweilige Instanz. Diese setzt dann den Status (up, down, stop)
Zitat von: exciter am 21 Juli 2017, 15:33:32
Meine Frage nun war doch einfach nur wieso nur 8 von 11 Modulen was empfangen, obwohl unterschiedliche Ports benutzt werden.
Und meine Antwort war, dass es vmtl. eine Limitierung auf Betriebssystemsebene gibt. Ich habe es aber jetzt nicht extra für Dich recherchiert, deshalb schrieb ich "vmtl".
Du bist nicht der Erste, der so etwas mit UDP umsetzen möchte. Der Hinweis von justme1968 ging genau in diese Richtung. Siehe zB. https://forum.fhem.de/index.php/topic,45545.0.html