Push-API (deCONZ)

Begonnen von ct, 29 Dezember 2016, 00:41:22

Vorheriges Thema - Nächstes Thema

ct

Hallo,

für diejenigen, die entweder den ConBee-USB-Stick oder das ZigBee Aufsatzmodul für den Raspberry Pi von Dresden Elektronik besitzen/verwenden, dürfte das hier ganz nützlich sein.

Da es bisher noch keine Push-API für Hue, Lightify, etc. gibt, habe ich das Rest-Plugin von deCONZ etwas erweitert und sowohl eine Push-API als auch eine direkte bzw. schnelle FHEM-Push-Unterstützung eingebaut, damit Änderungen von Schaltern, Lichtern, etc. unmittelbar ohne Verzögerung an FHEM weitergeleitet werden.

Damit kann eine Konfiguration basierend auf HUEBridge/HUEDevice auf Push aufgerüstet werden.
Ich selbst nutze die Erweiterung mit dem ConBee-USB-Stick zusammen mit Hue Lampen, Hue Schalter, Osram Lampen, Osram Schaltsteckdosen.
(Bei Farblampen muss noch ein kleiner Bugfix (3 Zeilen Code) angepasst werden, damit ein "set rgb" funktioniert. Falls erforderlich, dann einfach kurz PM an mich.)

Das ganze findet sich hier https://hcm-lab.de/git/project/deconz-push
(Für FHEM sind die Schritte 3 u. 5 unter https://hcm-lab.de/git/project/deconz-push#usage NICHT notwendig.)

Dadurch können auch die Dimmer Switch oder Hue Tap als günstige Schalter bzw. Buttons in FHEM zum Schalten von allen Aktoren (z.B. Steckdosen, etc.) genutzt werden. Weiterhin kann das Poll-Intervall in FHEM auf einmal die Stunde oder noch länger verändert werden, da ja jede Änderung unmittelbar ohne Verzögerung in FHEM zu sehen sind.

Die FHEM-Push-Unterstützung funktioniert zwar bei mir schon länger stabil, aber es kann durchaus sein, dass der eine oder andere Bug noch drin ist. Beim Ausprobieren sollte daher ein Gerät nach dem anderen "ausprobiert" werden.
(Die andere bisher experimentelle Push-API wird vermutlich mit justme ausgebaut, sofern es die Zeit bei uns zulässt. Kann allerdings dauern, bis das wirklich nutzbar ist.)

Feedback ist herzlich Willkommen bzw. wenn jemand mitentwickeln will, dann einfach Bescheid geben.

Grüße,
  ct

Dave90

Das klingt ja sehr interessant, vielen Dank für die Arbeit :).

Ist mit der Push Api dann auch das Differenzieren der unterschiedlichen Schaltvorgänge an den Dimmschaltern möglich? Also kurz drücken, lange drücken? Die lassen sich ja bisher schwer auseinander halten, auch wenn man im 1 sek. Intervall pollt.

Viele Grüße
David

Hardware:  FHEM-& LMS-Server + NAS: Banana Pi; Hyperion Ambilight Server + anderer Kleinkram: RPI Model B; Lampen: Philips Hue + Milight; Homematic Heizungssteuerung; Entertainment: Harmony Hub
sonstiges: Funksteckdosen

ct

#2
Hallo David,

nichts zu danken. Hat Spaß gemacht  :)
Zur Zeit kann leider nur unterschieden werden, wann welcher Button gedrückt wurde. Es geht aber kein Schaltvorgang verloren egal wie oft und wie schnell ein Button gedrückt wird. Ich habs noch nicht getestet, aber z.B. 3 mal innerhalb einer Sekunde sollte funktionieren. Mit jedem Schaltvorgang wird auch die Sequenznummer für den entsprechenden Button erhöht, z.B. Reading button0, button1, button2, etc...

Um den Dimmer Switch zu unterstützen (dieser ist nicht richtig in deCONZ unterstützt) wird die Funkkommunikation zwischen Bridge und Switch mitgelauscht und bisher konnte ich keine eindeutige Kommunikation ausmachen, aus welcher sich "das Loslassen" eines Buttons ableiten lassen lässt. Vielleicht lässt sich auch erkennen ob mehrere Buttons gleichzeitig gedrückt sind. Ich gehe dem noch nach, wenn es die Zeit zulässt (bzw. falls überhaupt Interesse besteht).
Oder (was besser wäre) mit dem nächsten Release von deCONZ wird die Unterstützung verbessert.

Viele Grüße,
  ct

Tom15

Hallo

Danke erstmal für die Arbeit an der Push-API  :)
Ich versuche derzeit einen Philips Dimmer Switch über einen Raspbee in FHEM zu integrieren. Jedoch ohne Erfolg. Der Switch wird als initialized angezeigt und es können keine Schaltzustände überprüft werden. Auch bei einer Auswertung des Switches mit JSON wird der State (in diesem Fall sollte glaube "buttonevent" mitgesendet werden) nicht angezeigt.
Wie bekomme ich diese Schaltzustände in meine FHEM Readings?

Schöne Grüße
Tom

ct

Hallo Tom,

keine Ursache. DE hat vor ein oder zwei Tagen die Software aktualisiert und ich bin mir nicht sicher ob das Plugin mit der Firmware funktioniert. Es lässt sich zumindest kompilieren, aber ausprobieren möchte ich es erst am Wochenende, wenn ich etwas mehr Zeit habe.

In der bisher untersützten Version, erzeugt das Plugin eigene Readings mit den Namen aus meinem vorherigen Post. Ich habe andere Name gewählt, um möglichen Konflikten aus dem Weg zu gehen und da ich davon ausgehe, dass die JSON-API in naher Zukunft auch für den Dimmer Switch funktioniert.

Kannst du mir sagen, welche Version von deCONZ du verwendest und auf welcher Firmware-Version der Raspbee läuft?
Die Versionen findest du normalerweise in der deCONZ-WebApp.

Und hast du nach dem Installieren der Erweiterung sowohl FHEM als auch die deCONZ-Software neu gestartet?
(Oder den Raspbee rebooten, wenn du auf Nummer sicher gehen willst).

Grüße,
ct

Tom15

Danke für deine Unterstützung :)
deCONZ Version: 2.04.18
Firmware Version: 0x260B0500
Der Raspberry wurde dann neu gestartet. Die Installation des Plugins sollte funktioniert haben da keine Fehlermeldung auftrat.
Am Raspbee wurden die beiden InClusters 0x0006 (ON/OFF) und 0x0008 (dimm) mittels binding mit dem Switch verbunden und sollte somit Kommandos empfangen. 
In FHEM der Switch nur mit dem Status initialized und den Readings battery und reachable angezeigt..

LG
Tom


ct

#6
Hm.. Damit müsste es eigentlich klappen. Bevor wir uns die Debug-Logs ansehen, nur um sicher zu gehen, dass die Ursache nicht etwas einfach lösbares ist...

Ist in deiner FHEM-Installation telnet aktiviert?
also gibt es ein "define telnetPort telnet 7072 global" in deiner fhem.cfg?
Und wird für telnet user/pass bei dir benötigt?
Über telnet spricht das Plugin sozusagen mit FHEM. Das geht einfach am schnellsten.

Grüße,
ct

Tom15

telnet wurde mit define telnetPort telnet 7072 global definiert
Im Everything:
telnet
telnetPort Initialized

Passwort habe ich keines definiert.

Hier meine Definition im config file:
define raspGW HUEBridge 10.0.0.2
attr raspGW key XXXXXXXXXXXXXXXx
attr raspGW verbose 5
setreading raspGW push 1
setreading raspGW pushSocket 1
setreading raspGW fhemtunnel 1
setreading raspGW fhemPort 7072
setreading raspGW pushPort 7073

define DimmerSwitch HUEDevice sensor 14 60

Mir ist aufgefallen, dass wenn die setreadings oben auskommentiert sind, ein zusätzlicher telnetPort online geht:
telnetPort_127.0.0.1_46398 Connected
Habe die bridge und den Switch bereits mehrmals angelernt und wieder entfernt.

LG Tom

ct

#8
Hallo Tom,

ok. Dann schauen wir uns mal die Logs an. Lass die Readings in der raspGW am besten auskommentiert. Insbesondere "pushSocket" wurde bisher nicht sehr gut getestet, da es momentan keine FHEM-Aktivität gibt, die sich mit dem Plugin per socket verbindet. Es ist eher für zukünftige Push-Nutzungen unabhängig von FHEM, z.B. OpenHAB, usw... vorgesehen.

Kannst du folgendes ausführen:
- In dem Verzeichnis, in welchem du deconz-push entpackt/gecloned hast. Folgendes ausführen:
- ./install.sh 1
- Danach deCONZ stoppen und neu starten. (Normalerweise wird deCONZ mit dem Installieren automatisch beendet.)

Damit wird die Debug-Version installiert. (install.sh ohne jegliche argumente installiert wieder die Release-Version.)
Nach dem Starten werden folgende 2 log-Dateien erzeugt:
/tmp/raspBeeBridge.log
/tmp/beeBridge.log

Achtung: Diese Dateien werden seeeehr groß... Daher sollte die Debug-Version nur für log-Zwecke verwendet werden.

Wenn deCONZ das ZigBee-Mesh einigermasen "wiederentdeckt" hat, dann betätige den Dim-Switch mehrmals und am besten alle möglichen Tasten mehrmals.

Danach wieder die Release-Version installieren. Im deconz-push-Verzeichnis:
- ./install.sh
- Danach deCONZ stoppen und neu starten.

Jetzt müsstest du die zwei log-Dateien vom RaspBee kopieren und (am besten als zip gepackt) mir per PM schicken. Hier anhängen würde ich nicht empfehlen, da ich nicht sicher bin, ob und welche sicherheitsrelevanten Daten enthalten sein könnten.

Dateien packen:
- cd /tmp
- tar -cf log.tar raspBeeBridge.log beeBridge.log
- gzip -9 log.tar

Schaue am bestens sicherheitshalber grob durch die Dateien, dass nichts Privates als Name enthalten ist. Falls doch, dann ersetze die Name durch ZZZZ oder so...

Ich kopiere mir die Dateien immer per samba, aber vermutlich ist es am einfachsten, wenn du einen usb-stick als Medium verwendest. Gib Bescheid, wenn du dabei Hilfe brauchst.

Grüße,
ct


ct

UPDATE:

Ich habe gerade die Release-Binary vom git-Repo nochmal getestet und es scheint sich da ein Bug eingeschlichen zu haben. Bin mir allerdings nicht sicher, ob es wirklich daran liegt, weil ich mein System und das Repo bereits auf die neue Version 2.04.35 angepasst habe.
Kannst du die aktuelle Version vom Plugin mal ausprobieren?

Die ist zwar für die neue Version 2.04.35, aber funktioniert auch mit der vorherigen Version von deCONZ.

Also am besten entweder das Zip-Archiv (https://hcm-lab.de/git/project/deconz-push/repository/archive.zip?ref=master) nochmal runterladen oder im geclonten Verzeichnis:
- git pull

und dann:
- install.sh

Wenn sich viel mehr als ca. 15 Readings bei einem Licht/Schalter ändern bzw. hinzugekommen sind, dann sollte das Plugin aktiv sein.

Grüße,
ct

Tom15

Habe zuerst wie du beschrieben hast das git pull update durchgeführt. Jedoch ohne Erfolg. Noch immer keine Readings :(
Anschließend hab ich die Debug Version installiert. Die Log files dazu sende ich dir.

Nochmals vielen Dank für deine Hilfe  :)

LG Tom

ct

Danke für die Logs.

Also laut der config wurden der Dimmer-Switch nicht richtig gefunden. In der /usr/share/deCONZ/rest_push.txt müsste ein Eintrag für DimSW vorhanden sein. Daher sollten die Readings eigentlich nicht aktualisiert werden.

Kannst du folgendes in fhem ausführen (also in das fhem-Eingabefeld):
{deCONZ_build_config()}

Danach sollten in der fhem-log einige Zeilen mit deCONZ_build_config: ... erfolgen.
Kannst du mir diese Zeilen hier posten?

Am besten wäre, wenn du die Datei /opt/fhem/FHEM/99_myDeconz1.pm durch die folgende ersetzt. (Mach dir eine Kopie von der vorherigen, damit du diese wiederherstellen kannst.)
https://hcm-lab.de/cloud/index.php/s/GMKY4ugMUAFojJS
Passwort: 1234

In dieser Datei ist das Loglevel auf 1 gesetzt und es werden mehr Debug-Meldungen erzeugt. Dadurch kann ich u.U. feststellen, wo noch ein Bug sein könnte.

Tom15

Hier nochmal der Inhalt von rest_pust.txt:
2 fport 7072
2 pport 7073
#0 disable
0 disablepush
0 nonodeupdate

Die Readings des Dimmer Switches scheinen jetzt zu funktionieren, das bei Tastendruck der Wert des jeweiligen Buttons hochgezählt wird.
Nach Eingabe von {deCONZ_build_config()} erstellte sich folgender log Eintrag:
2017.02.18 19:07:14 1: deCONZ_build_config: Successfully added 2 device and 1 group mappings.

Mit der aktualisierten Datei ergeben sich folgende log Einträge:
2017.02.19 10:46:04 1: deCONZ_build_config: Bridge found!
2017.02.19 10:46:04 1: deCONZ_build_config: enable_push 1
2017.02.19 10:46:04 1: deCONZ_build_config: enable_fhem 1
2017.02.19 10:46:04 1: deCONZ_build_config: enable_push_socket 0
2017.02.19 10:46:04 1: deCONZ_build_config: enable_nodeupdate 0
2017.02.19 10:46:04 1: deCONZ_build_config: pport 7073
2017.02.19 10:46:04 1: deCONZ_build_config: Device raspbeeGW-G0 -> 23!
2017.02.19 10:46:04 1: deCONZ_build_config: Device raspbeeGW-S1 -> 25!
2017.02.19 10:46:04 1: deCONZ_build_config: Device 23
2017.02.19 10:46:04 1: deCONZ_build_config: Device 23 is missing a uniqueid!
2017.02.19 10:46:04 1: deCONZ_build_config: Group All -> HUEGroup0
2017.02.19 10:46:04 1: deCONZ_build_config: Device 25
2017.02.19 10:46:04 1: deCONZ_build_config: Device DimmerSwitch -> 0x00178801105fa0e4 (6623462615392484)
2017.02.19 10:46:04 1: deCONZ_build_config: Bridge raspbeeGW -> b8:27:eb:6c:c8:cf (202481593010383)
2017.02.19 10:46:04 1: deCONZ_build_config: Group All : HUEGroup0
2017.02.19 10:46:04 1: deCONZ_build_config: Device uid 202481593010383 : raspbeeGW
2017.02.19 10:46:04 1: deCONZ_build_config: Device uid 6623462615392484 : DimmerSwitch
2017.02.19 10:46:04 1: deCONZ_build_config: Successfully added 2 device and 1 group mappings.

LG Tom

ct

#13
Hallo Tom,

Danke für die Logs. Soweit sehen die Logs sehr gut aus und es sollte eigentlich alles funktionieren. Lediglich die fehlenden Einträge in der rest_push.txt machen mich etwas stutzig. Eigentlich sollten Einträge für zwei Geräte (Gateway u. Switch) und eine Gruppe enthalten sein.

Wenn ich richtig verstanden habe, werden die Schaltaktionen des Dimmer-Switch jetzt korrekt als Readings in FHEM abgebildet?

Grüße,
ct

Tom15

Ja die Readings werden jetzt korrekt angezeigt. Danke nochmals dafür :)
Ich werde in den nächsten Tagen mal die Button und PIR Sensoren von Xiaomi damit testen.
Können eigentlich Sensordaten wie z.B Lux Werte vom HUE Motion Sensor auch in die Readings aufgenommen werden?

LG Tom