Hallo Community,
Ich habe ein Homebridge plugin geschrieben welches die Nutzung der digitalen Ausgänge des RevPiDIO ermöglicht.
homebridge (https://github.com/nfarina/homebridge]) is HomeKit support for the impatient.
Mein plugin ist homebridge-revpidio (https://www.npmjs.com/package/homebridge-revpidio)
Das ist der erste Schritt.
Der nächste ist die Implementierung der digitalen Eingänge als Programmierbare Schalter.
RevPi + RevPiDIO + Homekit (mit homebridge)
-
- Posts: 10
- Joined: 16 Aug 2018, 12:25
Re: RevPi + RevPiDIO + Homekit (mit homebridge)
Jetzt ist v0.2.0 veröffentlicht mit Unterstützung der digitalen Eingänge als HomeKit Sensoren.
Zusätzlich kann die RevPi core Temperatur in HomeKit sichtbar gemacht werden.
Zusätzlich kann die RevPi core Temperatur in HomeKit sichtbar gemacht werden.
- RevPiModIO
- KUNBUS
- Posts: 322
- Joined: 20 Jan 2017, 08:44
- Contact:
Re: RevPi + RevPiDIO + Homekit (mit homebridge)
Hi Christian!
Das ist ja ein cooles Projekt
- Für mich natürlich auch, weil du RevPiModIO verwendest!
Und bei "liveinputs.py" ist mir aufgefallen, dass du eine Funktion gut gebrauchen kannst, die RevPiModIO2 noch nicht hat. Ich denke du willst nicht nur die Wertänderung von Eingang "I_1" in das System bringen sondern von "allen" Eingängen.
Man könnte mit der aktuellen Version (2.2.2) jetzt schon alle Eingänge mit deiner Eventfunktion versehen:
ABER: Ich denke es wäre noch komfortabler, wenn der Benutzer über piCtory auswählen kann, welche Eingänge überwacht werden sollen!!!
In piCtory kann man im Value-Editor ja ein Haken bei "Export" setzen. Diesen Haken verwendet RevPiModIO noch nicht. Ich habe dir hier mal eine Testversion (2.2.3) hochgeladen, bei der die IO-Objekte um .export erweitert sind und mit True oder False den Wert aus piCtory zurückgeben. Außerdem kann man den Funktionen .get_inputs / .get_outputs / usw. gleich den Parameter "export" mitgeben und man erhält nur Inputs, bei denen in piCtory "Export" den übergebenen Wert hat.
Mit der Version 2.2.3 (die du per Hand mit "dpkg -i python3-revpimodio2_2.2.3-1_all.deb" auf dem Pi installieren musst) kann dein Quellcode dann so aussehen und reagiert auf alle Inputs, bei denen "Export" in piCtory gesetzt ist![Überglücklich :D](./images/smilies/icon_e_biggrin.gif)
Kleiner Tipp am Rande: Da du .handlesignalend(...) verwendest kannst du statt "while True:" das neue .exitsignal verwenden, dann steigt das Programm sauber aus dem Loop aus, wenn SIGINT / SIGTERM gesendet wurde:
Bin gespannt was da noch so kommt![Überglücklich :D](./images/smilies/icon_e_biggrin.gif)
Gruß, Sven
Das ist ja ein cooles Projekt
![Überglücklich :D](./images/smilies/icon_e_biggrin.gif)
Und bei "liveinputs.py" ist mir aufgefallen, dass du eine Funktion gut gebrauchen kannst, die RevPiModIO2 noch nicht hat. Ich denke du willst nicht nur die Wertänderung von Eingang "I_1" in das System bringen sondern von "allen" Eingängen.
Man könnte mit der aktuellen Version (2.2.2) jetzt schon alle Eingänge mit deiner Eventfunktion versehen:
Code: Select all
# Register events to all Inputs
for device in self.revpi.device:
# Use only DIO, DI, DO, AIO Devices
if device.type == "LEFT_RIGHT":
for io in device.get_inputs():
io.reg_event(self.event_input_changed)
ABER: Ich denke es wäre noch komfortabler, wenn der Benutzer über piCtory auswählen kann, welche Eingänge überwacht werden sollen!!!
In piCtory kann man im Value-Editor ja ein Haken bei "Export" setzen. Diesen Haken verwendet RevPiModIO noch nicht. Ich habe dir hier mal eine Testversion (2.2.3) hochgeladen, bei der die IO-Objekte um .export erweitert sind und mit True oder False den Wert aus piCtory zurückgeben. Außerdem kann man den Funktionen .get_inputs / .get_outputs / usw. gleich den Parameter "export" mitgeben und man erhält nur Inputs, bei denen in piCtory "Export" den übergebenen Wert hat.
Mit der Version 2.2.3 (die du per Hand mit "dpkg -i python3-revpimodio2_2.2.3-1_all.deb" auf dem Pi installieren musst) kann dein Quellcode dann so aussehen und reagiert auf alle Inputs, bei denen "Export" in piCtory gesetzt ist
![Überglücklich :D](./images/smilies/icon_e_biggrin.gif)
Code: Select all
def __init__(self):
self.revpi = revpimodio2.RevPiModIO(autorefresh=True)
self.revpi.core.A1 = revpimodio2.GREEN
# Handle SIGINT / SIGTERM to exit program cleanly
self.revpi.handlesignalend(self.cleanup_revpi)
# Register events to all Inputs marked with 'Export' in piCtory
for device in self.revpi.device:
# Use only IO Devices
if device.type == "LEFT_RIGHT":
for io in device.get_inputs(export=True):
# Only Inputs with set 'export' flag in piCtory
io.reg_event(
self.event_input_changed,
edge=revpimodio2.BOTH
)
Kleiner Tipp am Rande: Da du .handlesignalend(...) verwendest kannst du statt "while True:" das neue .exitsignal verwenden, dann steigt das Programm sauber aus dem Loop aus, wenn SIGINT / SIGTERM gesendet wurde:
Code: Select all
# Ohne "Wartefunktion"
while not self.revpi.exitsignal.is_set():
pass
# Mit "Wartefunktion" 0.1 Sekunde
while not self.revpi.exitsignal.wait(0.1):
pass
# Beide Varianten geben ein True zurück, wenn SIGINT / SIGTERM empfangen wurde
Bin gespannt was da noch so kommt
![Überglücklich :D](./images/smilies/icon_e_biggrin.gif)
Gruß, Sven
python3-RevPiModIO - https://revpimodio.org/ || Der RevPi ist das Beste, was passieren konnte!
-
- Posts: 10
- Joined: 16 Aug 2018, 12:25
Re: RevPi + RevPiDIO + Homekit (mit homebridge)
Danke. Ich hab doch glatt vergessen die Eingänge variable zu machen.
Ist mir irgendwie komplett durch gerutscht.
Ich schaue mir gleich mal die Änderungen an.
Ist mir irgendwie komplett durch gerutscht.
Ich schaue mir gleich mal die Änderungen an.
-
- Posts: 10
- Joined: 16 Aug 2018, 12:25
Re: RevPi + RevPiDIO + Homekit (mit homebridge)
So hab den Fehler erstmal beseitigt nun sollten alle digitalen Eingänge funktionieren.
Ob ich das export flag dann später zusätzlich auswerte weis ich noch nicht, da man so
die hombridge config und die PiCtory config immer zusammen ändern muss.
Jetzt versuche ich noch die programmierbaren Switches und später vielleicht noch die analogen Eingänge.
Vielleicht kommt ja noch Rückmeldung von Nutzern dann kann man es noch besser anpassen.
Bin auch gespannt wann der RevPi Compact kommt und wie der preislich so ist.
Dieser klingt für mich ideal für den HomeKit Einsatz
Ob ich das export flag dann später zusätzlich auswerte weis ich noch nicht, da man so
die hombridge config und die PiCtory config immer zusammen ändern muss.
Jetzt versuche ich noch die programmierbaren Switches und später vielleicht noch die analogen Eingänge.
Vielleicht kommt ja noch Rückmeldung von Nutzern dann kann man es noch besser anpassen.
Bin auch gespannt wann der RevPi Compact kommt und wie der preislich so ist.
Dieser klingt für mich ideal für den HomeKit Einsatz