Module für pilight (Senden und Empfangen)

Begonnen von Risiko, 03 März 2015, 20:33:54

Vorheriges Thema - Nächstes Thema

Risiko


Tueftler1983

Nur Alarm das wird dann alle x Sekunden gesendet. Man muss dann quasi in fhem den Status nach x Sekunden zurück setzen.

Risiko

Das wird sicherlich auf ein neues Modul "30_pilight_smokedector" oder so hinaus laufen.
Kennst du noch weitere Protokolle dafür und könntest du bitte mal was zur Hardware sagen. Evtl. besorg ich mir mal so ein Teil zum testen.

Tueftler1983

Weitere Protokolle kenne ich nicht.
Meine Rauchender sind von Elro/Flamingo Modell: FA21RF.

Mehr Infos habe ich derzeit nicht

inw

Hallo,

ich hoffe ich bin im richtigen Thread.

Mit Perl 5.24 ist es nicht mehr möglich splice auf Skalare anzuwenden. Ich bekomme daher folgende Fehlermeldungen:

016.06.20 19:15:38 1: reload: Error:Modul 10_pilight_ctrl deactivated:
Experimental splice on scalar is now forbidden at ./FHEM/10_pilight_ctrl.pm line 197, near "})"
Experimental splice on scalar is now forbidden at ./FHEM/10_pilight_ctrl.pm line 565, near "})"

Leider reichen meine perl-Kenntnisse nur soweit, dass ich den Fehler finde aber bei weitem nicht zu einem Patch. Ich hoffe der Bug-Report hier an dieser Stelle ist in Ordnung. Wenn nicht, kann der Post gerne verschoben werden.

Viele Grüße,

martin

Risiko

Ja, dass ist hier richtig.
Werde es aber erst in ca. 2-3 Wochen schaffen, mir das anzusehen.

alexschomb

#561
Hallo Risiko,

vielen Dank für dein Modul :) Dieses funktionierte bei mir wunderbar mit Pilight v7 aus den Debian Stable-Repositories, denn das Logfile von Pilight führte diese auf. Leider funktioniert diese Version von Pilight nicht auf meinem Banana Pi und der Entwickler hat mich auf die Rewrite Branch (künftige v8.0) verwiesen. Mit dieser kann ich erfolgreich meine 433 MHz Geräte schalten, jedoch scheint dein Modul leider nicht korrekt mit Pilight kommunizieren zu können. Das pilight_ctrl Device verbindet sich erst, doch nach wenigen Sekunden verliert pilight_ctrl die Verbindung, Kommandos kommen nicht bei pilight an. Kann ich dir irgendwie helfen dies zu debuggen?

2016.06.25 13:30:37 3: Opening System.Control.Pilight device 127.0.0.1:5000
2016.06.25 13:30:37 3: System.Control.Pilight device opened
2016.06.25 13:30:49 1: 127.0.0.1:5000 disconnected, waiting to reappear (System.Control.Pilight)


Liebe Grüße,

Alex

Risiko

Hallo Alex,

mit pilight v8 habe ich selbst noch nicht getestet. Wenn die Jungs die API nicht geändert haben, dann sollte alles funktionieren.
Konnte aber zur v8 (speziell zur API) noch keine Infos finden.
Du kannst ja mal das verbose von pilight_ctrl auf 4 oder 5 setzen.

Risiko

Zitat von: inw am 20 Juni 2016, 20:58:57
Mit Perl 5.24 ist es nicht mehr möglich splice auf Skalare anzuwenden. Ich bekomme daher folgende Fehlermeldungen:

016.06.20 19:15:38 1: reload: Error:Modul 10_pilight_ctrl deactivated:
Experimental splice on scalar is now forbidden at ./FHEM/10_pilight_ctrl.pm line 197, near "})"
Experimental splice on scalar is now forbidden at ./FHEM/10_pilight_ctrl.pm line 565, near "})"
Gefixed. Ab morgen per Update.

Risiko

Zitat von: Tueftler1983 am 17 Juni 2016, 14:37:31
Nur Alarm das wird dann alle x Sekunden gesendet. Man muss dann quasi in fhem den Status nach x Sekunden zurück setzen.
Hallo Tueftler1983,

anbei eine erste Testversion für das neue Modul pilight_smoke. Konnte es selbst wegen fehlender Hardware nicht testen.

define my_smoke_sensor pilight_smoke secudo_smoke_sensor 0


Mit dem Attribut 'resetTime' kann man die Zeit in Sek. einstellen, wenn der State wieder zurück gesetzt (aktuell none) werden soll.

Ist das Ganze eigentlich schon in die Developer-Version (zukünftige 8.0) geflossen oder geht das nur mit dem  branch 'elro_fa20fr'?

alexschomb

Zitat von: Risiko am 28 Juni 2016, 11:23:47
Hallo Alex,

mit pilight v8 habe ich selbst noch nicht getestet. Wenn die Jungs die API nicht geändert haben, dann sollte alles funktionieren.
Konnte aber zur v8 (speziell zur API) noch keine Infos finden.
Du kannst ja mal das verbose von pilight_ctrl auf 4 oder 5 setzen.

Halo Risiko,

danke für deinen Vorschlag. Über etwaige API-Änderungen weiß ich leider auch nicht viel, wenn ich das jedoch richtig verstanden habe gab es dort seit etwa 2 Jahren keine Änderungen mehr. Dennoch funktioniert es leider nicht (mehr) bei mir. Ich hatte vorher die Debian Stable v7 via APT-GET drauf und damit klappte die Kommunikation. Mit der selbstkompilierten Version mittels Rewrite Code hingegen scheint die Kommunikation abzubrechen bzw. gar nicht erst zu funktionieren. Ich habe dir mal ein FHEM Log angehängt, welches den Aufbau der Verbindung zum Pilight Daemon (nach "set reset") und den anschließenden automatischen Konnektivitätsverlust (ohne weiteres zutun) dokumentiert:

2016.06.28 19:06:44 5 : System.Control.Pilight(TryConnect): disconnected
2016.06.28 19:06:44 3 : Opening System.Control.Pilight device 127.0.0.1:5000
2016.06.28 19:06:44 5 : System.Control.Pilight(DoInit): opened
2016.06.28 19:06:44 5 : System.Control.Pilight(DoInit): send {"action":"identify","options":{"receiver":1},"media":"all"}
2016.06.28 19:06:44 4 : System.Control.Pilight(SimpleWrite): snd -> {"action":"identify","options":{"receiver":1},"media":"all"}
2016.06.28 19:06:44 5 : SW: 7b22616374696f6e223a226964656e74696679222c226f7074696f6e73223a7b227265636569766572223a317d2c226d65646961223a22616c6c227d0a
2016.06.28 19:06:44 3 : System.Control.Pilight device opened
2016.06.28 19:06:45 5 : System.Control.Pilight(Check): opened
2016.06.28 19:06:46 5 : System.Control.Pilight(Check): opened
2016.06.28 19:06:47 5 : System.Control.Pilight(Check): opened
2016.06.28 19:06:47 5 : System.Control.Pilight(DoInit): opened
2016.06.28 19:06:47 5 : System.Control.Pilight(DoInit): send {"action":"identify","options":{"receiver":1},"media":"all"}
2016.06.28 19:06:47 4 : System.Control.Pilight(SimpleWrite): snd -> {"action":"identify","options":{"receiver":1},"media":"all"}
2016.06.28 19:06:47 5 : SW: 7b22616374696f6e223a226964656e74696679222c226f7074696f6e73223a7b227265636569766572223a317d2c226d65646961223a22616c6c227d0a
2016.06.28 19:06:48 5 : System.Control.Pilight(Check): opened
2016.06.28 19:06:49 5 : System.Control.Pilight(Check): opened
2016.06.28 19:06:50 5 : System.Control.Pilight(Check): opened
2016.06.28 19:06:50 5 : System.Control.Pilight(DoInit): opened
2016.06.28 19:06:50 5 : System.Control.Pilight(DoInit): send {"action":"identify","options":{"receiver":1},"media":"all"}
2016.06.28 19:06:50 4 : System.Control.Pilight(SimpleWrite): snd -> {"action":"identify","options":{"receiver":1},"media":"all"}
2016.06.28 19:06:50 5 : SW: 7b22616374696f6e223a226964656e74696679222c226f7074696f6e73223a7b227265636569766572223a317d2c226d65646961223a22616c6c227d0a
2016.06.28 19:06:51 5 : System.Control.Pilight(Check): opened
2016.06.28 19:06:52 5 : System.Control.Pilight(Check): opened
2016.06.28 19:06:53 5 : System.Control.Pilight(Close): close DevIo
2016.06.28 19:06:53 5 : System.Control.Pilight(TryConnect): closed
2016.06.28 19:06:53 3 : Opening System.Control.Pilight device 127.0.0.1:5000
2016.06.28 19:06:53 5 : System.Control.Pilight(DoInit): opened
2016.06.28 19:06:53 5 : System.Control.Pilight(DoInit): send {"action":"identify","options":{"receiver":1},"media":"all"}
2016.06.28 19:06:53 4 : System.Control.Pilight(SimpleWrite): snd -> {"action":"identify","options":{"receiver":1},"media":"all"}
2016.06.28 19:06:53 5 : SW: 7b22616374696f6e223a226964656e74696679222c226f7074696f6e73223a7b227265636569766572223a317d2c226d65646961223a22616c6c227d0a
2016.06.28 19:06:53 3 : System.Control.Pilight device opened
2016-06-28 19:06:53 pilight_ctrl System.Control.Pilight reset
2016.06.28 19:06:54 5 : System.Control.Pilight(Check): opened
2016.06.28 19:06:55 5 : System.Control.Pilight(Check): opened
2016.06.28 19:06:56 5 : System.Control.Pilight(Check): opened
2016.06.28 19:06:56 5 : System.Control.Pilight(DoInit): opened
2016.06.28 19:06:56 5 : System.Control.Pilight(DoInit): send {"action":"identify","options":{"receiver":1},"media":"all"}
2016.06.28 19:06:56 4 : System.Control.Pilight(SimpleWrite): snd -> {"action":"identify","options":{"receiver":1},"media":"all"}
2016.06.28 19:06:56 5 : SW: 7b22616374696f6e223a226964656e74696679222c226f7074696f6e73223a7b227265636569766572223a317d2c226d65646961223a22616c6c227d0a
2016.06.28 19:06:57 5 : System.Control.Pilight(Check): opened
2016.06.28 19:06:58 5 : System.Control.Pilight(Check): opened
2016.06.28 19:06:59 5 : System.Control.Pilight(Check): opened
2016.06.28 19:06:59 5 : System.Control.Pilight(DoInit): opened
2016.06.28 19:06:59 5 : System.Control.Pilight(DoInit): send {"action":"identify","options":{"receiver":1},"media":"all"}
2016.06.28 19:06:59 4 : System.Control.Pilight(SimpleWrite): snd -> {"action":"identify","options":{"receiver":1},"media":"all"}
2016.06.28 19:06:59 5 : SW: 7b22616374696f6e223a226964656e74696679222c226f7074696f6e73223a7b227265636569766572223a317d2c226d65646961223a22616c6c227d0a
2016.06.28 19:07:00 5 : System.Control.Pilight(Check): opened
2016.06.28 19:07:01 5 : System.Control.Pilight(Check): opened
2016.06.28 19:07:02 5 : System.Control.Pilight(Check): opened
2016.06.28 19:07:02 5 : System.Control.Pilight(DoInit): opened
2016.06.28 19:07:02 5 : System.Control.Pilight(DoInit): send {"action":"identify","options":{"receiver":1},"media":"all"}
2016.06.28 19:07:02 4 : System.Control.Pilight(SimpleWrite): snd -> {"action":"identify","options":{"receiver":1},"media":"all"}
2016.06.28 19:07:02 5 : SW: 7b22616374696f6e223a226964656e74696679222c226f7074696f6e73223a7b227265636569766572223a317d2c226d65646961223a22616c6c227d0a
2016.06.28 19:07:03 5 : System.Control.Pilight(Check): opened
2016.06.28 19:07:04 5 : System.Control.Pilight(Check): opened
2016.06.28 19:07:05 5 : System.Control.Pilight(Check): opened
2016.06.28 19:07:05 4 : System.Control.Pilight(Check): Could not connect to pilight-daemon 127.0.0.1:5000 - maybe wrong api version or port
2016.06.28 19:07:05 1 : 127.0.0.1:5000 disconnected, waiting to reappear (System.Control.Pilight)


Liebe Grüße,

Alex

Risiko

Hallo Alex,

mir scheint es so, als wenn bei Verwendung des speziellen Branches 'rewrite' was mit dem pilight-daemon nicht i.O. ist. Es kommt keine Antwort auf das Senden der Identifikation.
Ist wirklich der Port 5000 konfiguriert? Nicht mit Web-Port verwechseln!!!!! Ggf. mal mit telnet versuchen.
Könntest du nicht den branch 'development' verwenden\versuchen?

Hinweis: Der Code-Link ist nicht die API-Schnittstelle in pilight, sondern nur Testclients.

alexschomb

Hallo Risiko,

die selbe Vermutung hatte ich auch. Ich habe deshalb im Pilight Forum eine Anfrage erstellt.

Eine Verbindung mit Telnet klappt übrigens bei mir, auch wenn ich nach dem "Connected" to nicht mehr weiß welche Befehle verfügbar sind, der Server scheint auf keine Befehle zu antworten.

Die development branch habe ich bisher nicht ausprobiert, da mir curlymo empfohlen hatte die rewrite branch zu verwenden. Ich warte erstmal ab was er schreibt, bevor ich mich wieder ans wilde kompilieren begebe - das war leider recht aufwendig.

Zitat von: Risiko am 28 Juni 2016, 19:30:55
Hinweis: Der Code-Link ist nicht die API-Schnittstelle in pilight, sondern nur Testclients.

Sorry, das habe ich nicht verstanden. Meinst du, dass dein Modul nicht über API-Zugriffe auf Pilight zugreift sondern...?

Risiko

Doch schon. Es wird die Json-API verwendet.
Der Link, den du hier angegeben hast, bezieht sich aber auf beispielhafte Client Implementierungen in unterschiedlichen Sprachen und nicht auf die Implementierung der API in pilight selbst.

alexschomb

Danke, das leuchtet mir ein, jetzt verstehe ich auch deinen ersten Satz. Da stand ich ein wenig auf dem Schlauch :)

Zur offiziellen API-Implementierung konnte ich leider nicht viel finden, bzw. die GitHub Code-Suche war nicht sonderlich ergiebig. Das wird jedoch auch eher an meiner minimalen C-Erfahrung liegen. Die "Testclients" in anderen Sprachen sind jedoch offiziell und ich gehe davon aus, dass er diese angepasst hätte wenn es Änderungen an der API gegeben hätte.

Es gab nun auch eine Antwort auf meinen Foren-Thread im Pilight Forum, welche unseren Verdacht stützt, dass das Problem in der API-Implementierung zu suchen ist.

Einstweilen, vielen Dank für deine kompetente Hilfe!