funktionieren. Wenn ich die Daten $payload aber von einer Registervariable über $_IPS[‚VALUE‘] beziehe, funktioniert das nicht. Hat einer eine Idee was falsch ist bzw. wie wäre die richtige Vorgehensweise um von Daten in der Form einen Teilbereich zu identifizieren und auszuschneiden?
Mein Problem ist wenn ich das als Hex anschaue sehe ich wie zwischen den <NUL> in Hex 00 irgendwann eine MAC Adresse geschickt wird, diese möchte ich ausschneiden und in eine Variable schreiben. Dies ist in dem Format jedoch nicht mehr ersichtlich. Woran sehe ich denn nun genau was die eigentlichen Rohdaten sind?
Haken Hex = Rohdaten als Hex dargestellt.
Ohne Haken = Rohdaten als ASCII dargestellt.
Die Daten ändern sich nicht.
Somit ist die MAC-Adresse auch nicht Klartext sondern ebenfalls Binär (Hex).
DHCP Paket, oder?
Einfach mit substr($data,27,6) den Teil der Mac rauskopieren.
Ergibt einen String Länge 6 mit den Bytes welche die Mac darstellen.
Wenn du es dann leserlich haben willst: PHP: bin2hex - Manual
Um den Anfang und das Ende eines Paketes zu erkennen, kannst du auf Start 0x01,0x01 und Ende 0xff prüfen.
Michael
Ja… Sind ja auch eine Menge.
Du musst aufpassen.
00 in Hex sind ein Byte also Länge 1 und um so ein Byte als String in PHP zu nutzen gibt es entweder chr(0x00) oder „/x00“.
Laut RFC immer an der gleichen Position, identisch zu DHCP. 403 Forbidden
Michael
Also Modul geht es noch viel einfacher.
Die Mac als Eigenschaft.
Wandeln in bin und setzen als ReceiveFilter. Fertig
Keine Daten auswerten… Nur wenn welche kommen, dann Aktion ausgeführen.
Und wie würde man das konkret machen? Ich habe einen Multicast IO, ein Splitter und mehrere Device Instanzen, die dann etwas machen sollen, wenn die MAC, die als Property im der Device Instanz hinterlegt ist, mit der MAC, die übermittelt wurde, übereinstimmt. Der Splitter sucht also die MAC und leitet die weiter und die Geräte Instanz reagiert dann nur wenn der Wert der Property mit dem Wert vom Splitter übereinstimmt?
Prima werde ich probieren bin nur unterwegs kann also dauern bist Du von mir Rückmeldung bekommst. Bin ja aber nicht der Einzige der das mal ausprobieren und Rückmeldung geben kann. Im Prinzip sollte sich damit alles registrieren lassen was gerade versucht im WLAN / LAN per Bootstrap bzw. DHCP eine IP Adresse zu bekommen, also Handy, Dashbutton usw. oder?
Sehr praktisch, danke nochmal. Ich hätte mich da jetzt nach der Diskussion auch ran gesetzt weil es doch besser ist als mit Skript und Registervariable. Habe aber gerade keine Zeit, um so besser das Du da ein paar Stunden Hirnschmalz investiert hast :D, kann so was sehr gut gebrauchen.