Die Homecontrol PHP-Skripte laufen nicht mit PHP5 in Standardeinstellung. Das liegt an einer in PHP5 geänderten Default-Einstellung für einen Parameter (magic_quotes_gpc).
Anbei ein Patch der das Problem löst.
Andererseits verstehe ich diese PHP-Skripte überhaupt nicht. Die lokale Variante der Kommunikation öffnet eine Verbindung die in 2 Richtungen verwendet wird. So verlangt es das Protokoll (Commandfusion) ja auch. Die Verbindung wird geöffnet, das Passwort wird geschickt, dann kommt die Antwort, ob das Passwort korrekt war und man schickt "i=1" um den aktuellen Status aller Objekte zu erhalten. D.h. das ganze ist ein Dialog. Nicht zu vergessen der Heartbeat ...
Die Skripte führen aber Monologe. Für jedes Schreiben zum eibPC wird ein neuer Socket aufgemacht. Der refresher.php macht einen Socket auf und wartet ohne Passwort, ohne "i=1" und ohne Heartbeat das der eibPc was zu ihm sagt. Wenn der eibPc das aber machen würde, dann wäre das ein Bug oder?
Verwende ich Homecontrol mit eibPC über die PHP-Skripte, dann funktioniert das nicht. Ich kann im Wireshark (network sniffer) die Kommunikation sehen. Zwischen Browser und Web-Server gibt es einen Dialog. D.h. Browser spricht write.php an und erhält eine Antwort. Die Kommunikation zwischen Web-Server und eibPc ist aber nur in Richtung eibPc. Dieser bestätigt zwar Telegramme, sendet aber keine Antworten. Er führt auch keine Aktionen aus, d.h. es werden keine EIB-Telegramme gesendet. Meiner Meinung nach ein vollkommen richtiges Verhalten, da ja kein "Login" stattgefunden hat.
Wenn Homecontrol in der lokalen Variante läuft, funktioniert es besser. Es findet ein richtiger Dialog statt und ich kann auf dem EIB schalten und bekomme auch Rückmeldungen. Was nicht funktioniert ist das Aktualisieren des Status, wenn ein Raum geladen wird. Dort wird "i=1" zum EibPc geschickt. Der eibPC schickt aber nicht den Status aller joins als Antwort, sondern nichts. D.h. ein Raumwechsel (anderes Panel laden) ist praktisch nicht verwendbar. Das scheint aber ein Problem des eibPc zu sein.
Wie funktioniert das bei euch?
Kommt da auf "i=1" tatsächlich eine Antwort?
Mike
Anbei ein Patch der das Problem löst.
Andererseits verstehe ich diese PHP-Skripte überhaupt nicht. Die lokale Variante der Kommunikation öffnet eine Verbindung die in 2 Richtungen verwendet wird. So verlangt es das Protokoll (Commandfusion) ja auch. Die Verbindung wird geöffnet, das Passwort wird geschickt, dann kommt die Antwort, ob das Passwort korrekt war und man schickt "i=1" um den aktuellen Status aller Objekte zu erhalten. D.h. das ganze ist ein Dialog. Nicht zu vergessen der Heartbeat ...
Die Skripte führen aber Monologe. Für jedes Schreiben zum eibPC wird ein neuer Socket aufgemacht. Der refresher.php macht einen Socket auf und wartet ohne Passwort, ohne "i=1" und ohne Heartbeat das der eibPc was zu ihm sagt. Wenn der eibPc das aber machen würde, dann wäre das ein Bug oder?
Verwende ich Homecontrol mit eibPC über die PHP-Skripte, dann funktioniert das nicht. Ich kann im Wireshark (network sniffer) die Kommunikation sehen. Zwischen Browser und Web-Server gibt es einen Dialog. D.h. Browser spricht write.php an und erhält eine Antwort. Die Kommunikation zwischen Web-Server und eibPc ist aber nur in Richtung eibPc. Dieser bestätigt zwar Telegramme, sendet aber keine Antworten. Er führt auch keine Aktionen aus, d.h. es werden keine EIB-Telegramme gesendet. Meiner Meinung nach ein vollkommen richtiges Verhalten, da ja kein "Login" stattgefunden hat.
Wenn Homecontrol in der lokalen Variante läuft, funktioniert es besser. Es findet ein richtiger Dialog statt und ich kann auf dem EIB schalten und bekomme auch Rückmeldungen. Was nicht funktioniert ist das Aktualisieren des Status, wenn ein Raum geladen wird. Dort wird "i=1" zum EibPc geschickt. Der eibPC schickt aber nicht den Status aller joins als Antwort, sondern nichts. D.h. ein Raumwechsel (anderes Panel laden) ist praktisch nicht verwendbar. Das scheint aber ein Problem des eibPc zu sein.
Wie funktioniert das bei euch?
Kommt da auf "i=1" tatsächlich eine Antwort?
Mike
Kommentar