Autor Thema: [Neues Modul] Xiaomi Smart Home ohne Gateway direkt an FHEM  (Gelesen 33118 mal)

Offline neumann

  • Developer
  • Full Member
  • ****
  • Beiträge: 138
Hey zusammen!

Ich habe an einer Lösung gearbeitet, um die Xiaomi Smart Home Geräte direkt über FHEM pairen zu können aus folgenden Gründen:
- Unabhängigkeit vom Gateway
- Keine China-Cloud mehr
- bis zu 48 Sensoren verbinden (statt der 30 vom Gateway)

Folgendes wird benötigt:
- CC2531 USB Stick https://de.aliexpress.com/item/DC-DC-LTC1871-Boost-Module-3-5-to-30V-100W-With-Dual-Display-Voltmeter/1859124945.html
- CC Debugger https://de.aliexpress.com/item/Bluetooth-zigbee-Emulator-CC-Debugger-original-shell-2540-2541-2530-protocol-analysis/32798394717.html
- Adapterkabel https://de.aliexpress.com/item/Downloader-Cable-Bluetooth-4-0-CC2540-zigbee-CC2531-Sniffer-USB-dongle-BTool-Programmer-Wire-Download-Programming/32767478130.html

Wenn man keinen Freund hat, der einen CC Debugger besitzt, kommt das preislich etwa gleich raus, wie wenn man das Gateway kauft. Die Einrichtung ist aufwändiger als beim Gateway.

Das ganze basiert auf dem CC2531 SoC von Texas Instruments sowie einer angepassten Version von Zigbee-Shepherd.

Zunächst muss der CC2531 USB Stick mit einer angepassten Variante des Z-Stacks von TI geflasht werden. Dazu brauch man leider einmalig einen CC Debugger sowie ein Adapterkabel. Da man die Firmware nur mit einem kommerziellen Compiler kompilieren kann, liegt das fertige hex file in meinem Repo bei.
Während des flashens muss der Stick über USB mit Strom versorgt werden, dann über das Adapterkabel mit dem CC Debugger verbunden werden (Richtung: Kabel geht über den Rand der Platine weg, nicht über die andere Seite)

Clone dir nun die Repo und flashe den Stick mit der Firmware unter Verwendung des SmartRF Flash Programmers von TI:
Repo: https://github.com/Koenkk/zigbee2mqtt
Programmer (V1 verwenden, NICHT V2): http://www.ti.com/tool/FLASH-PROGRAMMER
Treiber für den CC Debugger (für den Stick braucht man keinen!): http://www.ti.com/tool/CC-DEBUGGER

Führe anschließend die Installationsanleitung aus und starte den nodejs Server.

Damit der nodejs Server beim Start automatisch mitgestartet wird, lege folgende Datei an /etc/systemd/system/xiaomi.service:
[Unit]
Description=Xiaomi

[Service]
ExecStart=/usr/bin/node /opt/zigbee2mqtt/index.js
Restart=always
RestartSec=5
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=xiaomi

[Install]
WantedBy=multi-user.target
Dabei müssen die Pfade unter ExecStart entsprechend angepasst werden.

Aktiviere den Service nun mit
systemctl enable xiaomi
Die Werte der Sensoren werden über MQTT an FHEM gemeldet - das index.js Script geht davon aus, dass der Server auf dem gleichen Gerät läuft - das kann im Programmcode aber entsprechend angepasst werden.
Installiere nun das FHEM-Modul: https://github.com/oskarn97/fhem-xiaomi-mqtt

Vorher der eigentlichen Definition muss aktuell bereits das MQTT IODev vorhanden sein, welches über
define MQTT MQTT localhost:1883 angelegt werden kann, sofern das noch nicht der Fall ist. Eine Definition ohne Vorhandensein des IODev führt aktuell zum Crash von FHEM.

Die Verbindung zum Stick wird anschließend wie folgt hergestellt:
define xBridge XiaomiMQTTDevice bridge
Paring
Das Pairing benötigt etwas Geduld. Während des Pairing muss man sich so nah wie möglich am Stick befinden!

Aktiviere zunächst das Pairing per
set xBridge pair 1
Alle Komponenten werden wie folgt gepairt.
Halte den Pairing-Knopf für 4 Sekunden gedrückt, lasse ihn los und drücke ihn über den Zeitraum von einer Minute ganz kurz alle 2 Sekunden.
Der Stick benötigt knapp eine Minute um alle Eigenschaften des Geräts auszulesen, dabei darf es nicht schlafen gehen, da sonst das Pairing fehlschlägt.
Geräte werden nach dem Pairing per autocreate angelegt - geschieht dies nicht, versuche es erneut.
Lediglich der Wandschalter bleibt von alleine wach.

Update:
Ich habe meinen eigenen Gateway-Server nun eingestellt und arbeite stattdessen mit Koenkk zusammen.
Das hat den Vorteil, dass das Projekt besser aktualisiert wird (mit neuen Geräten etc). Das Plugin habe ich dafür bereits angepasst - die neue Version des Plugins ist vorerst noch abwärtskompatibel zu meinem Gateway-Server.
Um von meiner Repo auf die neue zu wechseln, führe Installationsanleitung aus. Um das Pairing zu behalten, kopiere anschließend die devices.db aus dem alten Ordner, benenne sie in database.db um, und füge sie im Ordner data der neuen Repo ein.
« Letzte Änderung: 04 Juni 2018, 17:49:59 von neumann »
Modulentwickler
- Spotify #72490
- Nello #75127
Gefällt mir Gefällt mir x 13 Liste anzeigen

Offline ThoTo

  • Full Member
  • ***
  • Beiträge: 145
Antw:[Neues Modul] Xiaomi SmartHome ohne Gateway direkt an FHEM
« Antwort #1 am: 22 Februar 2018, 22:33:35 »
Super Idee und tolle Arbeit!
Komponenten sind bestellt, dauert noch bis zu den ersten Tests  8)

Kannst du auch eine Unterstützung für den Xiaomi Mi Magic Cube Controller einbauen?

LG Thomas
Intel NUC | Docker | Homematic | Sonoff | Hue

"Zwei Dinge sind unendlich, das Universum und die menschliche Dummheit, aber bei dem Universum bin ich mir noch nicht ganz sicher."
(Albert Einstein)

Offline neumann

  • Developer
  • Full Member
  • ****
  • Beiträge: 138
Antw:[Neues Modul] Xiaomi SmartHome ohne Gateway direkt an FHEM
« Antwort #2 am: 22 Februar 2018, 22:35:14 »
Danke dir - bestimmt, habe ich nur nicht hier.
Wenn du mir aber die Logs der Events schickst, baue ich sie ein :)
Lg
Modulentwickler
- Spotify #72490
- Nello #75127

Offline ThoTo

  • Full Member
  • ***
  • Beiträge: 145
Antw:[Neues Modul] Xiaomi SmartHome ohne Gateway direkt an FHEM
« Antwort #3 am: 22 Februar 2018, 22:45:45 »
Danke dir - bestimmt, habe ich nur nicht hier.
Wenn du mir aber die Logs der Events schickst, baue ich sie ein :)
Lg
Mache ich sobald die Komponenten bei mir sind!!

LG Thomas
Intel NUC | Docker | Homematic | Sonoff | Hue

"Zwei Dinge sind unendlich, das Universum und die menschliche Dummheit, aber bei dem Universum bin ich mir noch nicht ganz sicher."
(Albert Einstein)


Offline neumann

  • Developer
  • Full Member
  • ****
  • Beiträge: 138
Antw:[Neues Modul] Xiaomi Smart Home ohne Gateway direkt an FHEM
« Antwort #5 am: 23 Februar 2018, 12:43:16 »
Ja - beim Temperatursensor habe ich nur den Aqara getestet, der von dir wird aber auch sehr sicher gehen.
Modulentwickler
- Spotify #72490
- Nello #75127

Offline majestro84

  • New Member
  • *
  • Beiträge: 25
Antw:[Neues Modul] Xiaomi Smart Home ohne Gateway direkt an FHEM
« Antwort #6 am: 05 März 2018, 18:07:33 »
Wurde der Xiaomi mijia Honeywell Rauchmelder mit deinen Modul funktionieren?
https://de.gearbest.com/alarm-systems/pp_615081.html



Gesendet von meinem Redmi Note 4 mit Tapatalk


Offline wertz

  • New Member
  • *
  • Beiträge: 21
Antw:[Neues Modul] Xiaomi Smart Home ohne Gateway direkt an FHEM
« Antwort #7 am: 21 März 2018, 16:53:14 »
Hallo neumann, als allererstes !!Sehr gute Idee!! :-)

ich hab nun einen USB Stik CC2513, einen CC Debugger und das Adapterkabel besorgt.
Das hex-file aus dem repo von Oskarn97 geholt und geflasht. Meldung im TI Flash Programmer war: OK
nach Anleitung aus dem Repo von Oskarn97 die Installation durchgeführt und den Nodejs Server gestartet
Das hat bis hierher soweit (mit Umwegen) funktioniert
Dann habe ich das Modul 72_XiaomiMQTTDevice.pm gezogen und in den FHEM Ordner kopiert
und danach die Eigenschaften der Datei geprüft. (Gruppe Dialout 20 / fhem 999)
Sobald ich "define xBridge XiaomiMQTTDevice bridge" in der Fhem eingabemaske bestätige stürtzt Fhem ab!  :-[
und lässt sich nurn noch mit einem
sudo /etc/init.d/fhem stop
sudo /etc/init.d/fhem start
wieder in Gang setzen. Auch ein reboot des RPI bringt keine Veränderung.
Würde mich freuen wenn du mir helfen könntest,
Im Voraus schon mal Danke!!

Offline neumann

  • Developer
  • Full Member
  • ****
  • Beiträge: 138
Antw:[Neues Modul] Xiaomi Smart Home ohne Gateway direkt an FHEM
« Antwort #8 am: 21 März 2018, 16:55:18 »
was sagt denn der Log (/opt/fhem/log/fhem-2018-03.log)?
Vermutlich fehlt irgendeine dependency... :)
Modulentwickler
- Spotify #72490
- Nello #75127

Offline MiKn

  • New Member
  • *
  • Beiträge: 15
Antw:[Neues Modul] Xiaomi Smart Home ohne Gateway direkt an FHEM
« Antwort #9 am: 21 März 2018, 19:12:38 »
läuft MQTT auch. Erst nachdem dies installiert war stürzte fhem bei mir auch nicht mehr ab.

Bei mir werden nur noch keine Geräte gefunden...

Offline neumann

  • Developer
  • Full Member
  • ****
  • Beiträge: 138
Antw:[Neues Modul] Xiaomi Smart Home ohne Gateway direkt an FHEM
« Antwort #10 am: 21 März 2018, 19:15:27 »
du musst sie vorher natürlich noch pairen :)
Modulentwickler
- Spotify #72490
- Nello #75127

Offline wertz

  • New Member
  • *
  • Beiträge: 21
Antw:[Neues Modul] Xiaomi Smart Home ohne Gateway direkt an FHEM
« Antwort #11 am: 22 März 2018, 14:02:03 »
was sagt denn der Log (/opt/fhem/log/fhem-2018-03.log)?
Vermutlich fehlt irgendeine dependency... :)

Hallo neumann, vielen Dank!
hier der eintrag in der log:
2018.03.22 20:20:31 1: PERL WARNING: XiaomiMQTT::DEVICE::Expand() called too early to check prototype at ./FHEM/72_XiaomiMQTTDevice.pm line 263.
2018.03.22 20:20:31 1: PERL WARNING: XiaomiMQTT::DEVICE::Expand() called too early to check prototype at ./FHEM/72_XiaomiMQTTDevice.pm line 269.
2018.03.22 20:20:34 3: No I/O device found for xBridge
Undefined subroutine &XiaomiMQTT::DEVICE::client_subscribe_topic called at ./FHEM/72_XiaomiMQTTDevice.pm line 80.
-
der Server läuft:
pi@raspberrypi:~ $ sudo service mosquitto status
● mosquitto.service - LSB: mosquitto MQTT v3.1 message broker
   Loaded: loaded (/etc/init.d/mosquitto)
   Active: active (running) since Thu 2018-03-22 20:06:10 CST; 35min ago
  Process: 1088 ExecStop=/etc/init.d/mosquitto stop (code=exited, status=0/SUCCESS)
  Process: 1948 ExecStart=/etc/init.d/mosquitto start (code=exited, status=0/SUCCESS)
   CGroup: /system.slice/mosquitto.service
           └─1953 /usr/sbin/mosquitto -c /etc/mosquitto/mosquitto.conf

Mar 22 20:06:10 raspberrypi mosquitto[1948]: Starting network daemon:: mosqu....
Mar 22 20:06:10 raspberrypi systemd[1]: Started LSB: mosquitto MQTT v3.1 mes....
Hint: Some lines were ellipsized, use -l to show in full.
-
npm Version:
pi@raspberrypi:~ $ npm -v
5.6.0
-
node version:
pi@raspberrypi:~ $ node -v
v8.10.0
-
USB-Stick ist wie folgt eingebunden:
pi@raspberrypi:~ $ ls -l /dev/serial/by-id
lrwxrwxrwx 1 root root 13 Mar 22 20:12 usb-Texas_Instruments_TI_CC2531_USB_CDC___0X00124B0012022E2B-if00 -> ../../ttyACM0
-
in der der index.js habe ich folgendes für serial port und mqtt broker eingetragen:
var client  = mqtt.connect('mqtt:/etc/init.d/mosquitto')
var shepherd = new ZShepherd('/dev/ttyACM0', {
-
Ich habe keine Ahnung was ich da falsch mache,
ich hoffe du kannst mit weiterhelfen, würde mich freuen.
Gruß

Offline neumann

  • Developer
  • Full Member
  • ****
  • Beiträge: 138
Antw:[Neues Modul] Xiaomi Smart Home ohne Gateway direkt an FHEM
« Antwort #12 am: 22 März 2018, 14:10:27 »
Hey,

bei mqtt.connect muss der Host stehen, nicht der Dateipfad. Wenn der Server auf dem selben Pi läuft ist mqtt.connect('mqtt://localhost') korrekt.
bei new ZShepherd ist ACM0 korrekt, du kannst auch
var shepherd = new ZShepherd('/dev/serial/by-id/usb-Texas_Instruments_TI_CC2531_USB_CDC___0X00124B0012022E2B-if00', {reinschreiben, spielt aber keine Rolle.
Wenn du dann startest sollte Server is ready kommen.
Modulentwickler
- Spotify #72490
- Nello #75127
Gefällt mir Gefällt mir x 1 Liste anzeigen

Offline wertz

  • New Member
  • *
  • Beiträge: 21
Antw:[Neues Modul] Xiaomi Smart Home ohne Gateway direkt an FHEM
« Antwort #13 am: 22 März 2018, 15:27:38 »
Hey,

bei mqtt.connect muss der Host stehen, nicht der Dateipfad. Wenn der Server auf dem selben Pi läuft ist mqtt.connect('mqtt://localhost') korrekt.
bei new ZShepherd ist ACM0 korrekt, du kannst auch
var shepherd = new ZShepherd('/dev/serial/by-id/usb-Texas_Instruments_TI_CC2531_USB_CDC___0X00124B0012022E2B-if00', {reinschreiben, spielt aber keine Rolle.
Wenn du dann startest sollte Server is ready kommen.

Also,
beides in der index.js eingetragen,
-
root@raspberrypi:~/xiaomi-zb2mqtt# node index.js
Server is ready. Current devices:
-
Fhem stürtzt bei der Eingabe von "define xBridge XiaomiMQTTDevice bridge" in der Fhem eingabemaske immer noch ab.
im Log stehen immer noch die gleichen Meldungen wie vorher
-
2018.03.22 22:19:06 1: PERL WARNING: XiaomiMQTT::DEVICE::Expand() called too early to check prototype at ./FHEM/72_XiaomiMQTTDevice.pm line 263.
2018.03.22 22:19:06 1: PERL WARNING: XiaomiMQTT::DEVICE::Expand() called too early to check prototype at ./FHEM/72_XiaomiMQTTDevice.pm line 269.
2018.03.22 22:19:06 3: No I/O device found for xBridge
Undefined subroutine &XiaomiMQTT::DEVICE::client_subscribe_topic called at ./FHEM/72_XiaomiMQTTDevice.pm line 80.
-
Hast du noch nen Tipp,?
würde sonst nochmal von vorne anfangen....

Offline neumann

  • Developer
  • Full Member
  • ****
  • Beiträge: 138
Antw:[Neues Modul] Xiaomi Smart Home ohne Gateway direkt an FHEM
« Antwort #14 am: 22 März 2018, 15:29:23 »
Ja, du musst erst ein MQTT Device definieren.
define MQTT MQTT localhost:1883
Modulentwickler
- Spotify #72490
- Nello #75127

 

decade-submarginal