Zum Ende der Metadaten springen
Zum Anfang der Metadaten

Dieser How-To wurde aus einem Tschechischem Forum für Loxone kopiert, vielen dank an Jiri Jasa für den tollen Beitrag:

https://www.vodnici.net/community/loxone-a-arduino/xiaomi-smart-home-integrace-do-loxonu/paged/1

Der Beitrag wurde mit Google übersetzt und anschließend etwas sprachlich "geschliffen".. 

 

 


Hier wird beschrieben wie man Xiaomi Sensoren in Loxone integriert.

Für den ordnungsgemäßen Betrieb wird das Smart Home Gateway (Gearbest) von Xiaomi benötigt. Leider wird es nur mit einer chinesischen Steckdose verkauft, so dass man einen Adapter für EU-Steckdosen mitbestellen (Gearbest) sollte.

Folgende Sensoren sind getestet und integriert (da es unterschiedliche Taster Geräte gibt kann es sein das bestimmte Geräte gibt die nicht gehen obwohl diese hier aufgeführt werden):

  • Geräte die laut Ersteller des Skripts funktionieren sollten:
    • Thermometer / Hygrometer
    • Magnet an Tür / Fenster
    • PIR Bewegungsmelder
    • Drucktaste
    • Der Flutdetektor
    • Rauchmelder

  • Geräte die mit der loxwiki Version des Skripts getestet worden sind:
Name des GerätsHerstellerbezeichnung+LinkShopBezeichnung im SkriptNutzbare Funktionen / UDP Befehl
GatewayXiaomi Smart Home Gateway V2Gearbestgateway
  • Helligkeit / "illumination \v"
Taster 1-fXiaomi Aqara Smart Light Switch Wireless Version single keyGearbest86sw1
  • Taste gedrückt (keine Flankenauswertung) / "click 1"
  • Batteriespannung / "voltage \v"
Würfel

Xiaomi Mi Smart Home Cube

Gearbestcube
  • 90° Drehung / "status flip90"
  • 180° Drehung / "status flip180"
  • Verschieben / "status move"
  • 2x Klopfen / "status tap_twice"
  • Schütteln / "status shake_air"
  • Auf der Ebene Drehen (in Bearbeitung)
  • Batteriespannung / "voltage \v"
Temperatur- und Feuchtemesser miniXiaomi Aqara Temperature and Humidity SensorGearbestweather.v1
  • Temperatur / "temperature \v"
  • Luftfeuchtigkeit / "humidity \v"
  • Batteriespannung / "voltage \v"

 


Wenn ihr ein Gerät habt und dieses nicht erkannt wird könnt ihr unter /tmp/mihome-log.out.log die Syntax nachschauen und die "run-mihome.py" entsprechend editieren. Damit die Änderungen übernommen werden ist ein Neustart (z.B des RPi) notwendig.

Schritt-für-Schritt-Anleitung

Gleich vorweg es gibt auch einen esp8266 Multicast Reader:

XiaomiReader-1.0.4.zip

Unten stehend, wie man in den "Debug" -Modus kommt um die Kommunikation über das Netzwerk zu ermöglichen (UDP).

 In diesem Beispiel ist iOS verwendet worden, aber es sollte für Android ähnlich sein.

  1. Installieren Sie Mi Home App
  2. Nach der Installation, überprüfen Sie, dass  "Festland China" als Standort ausgewählt ist.
    Folgen Sie den Anweisungen. Pairing-Anweisungen mit Home Gateway und füge dann die Sensoren hinzu.  
  3. Der interessante Teil kommt jetzt - den Debug-Modus einschalten.
  4. Wähle auf der Hauptseite des Gerätes die Option Gateway aus:
  5. Klicke auf die 3 Punkte in der oberen rechten Ecke:
  6. Gehe auf "About":
  7. Jetzt gibt es eine kleinen Trick: du musst die Auswahl freischalten, die versteckt ist. Tippe auf das markierte Feld, bis weitere Optionen im Menü erscheinen.
  8. Wähle die unten gezeigten Menüeintrag:
  9. Folge dem Bildschirm, und aktiviere die erste Option. Den Hexadecimalcode (Kennung des Gateways) braucht man nur wenn man Befehle an das Gateway verschicken möchte (bisher ungenutzt).
  10. Bestätige Sie alles und gehe zum Ausgangsmenü.
  11. Zu diesem Zeitpunkt sendet das Gateway an ein Subnetz, an das Multicast-Pakete an 224.0.0.50 angeschlossen sind.

Wenn Sie Ihren Router konfigurieren oder einige andere Geräte hinzufügen, um Pakete zu sammeln, können Sie sie direkt in Loxone verwenden. Beispiel für gesendete Daten:

  {'data': '{' data ':' {'value': ' : 'sensor_ht', 'short_id': 29375} 
{'data': '{' data ':' {'data': ' : 19705}
{'data': '{' data ':' : 18966}
'' '' '' '' '' '' '' '' ' : 28469}
'' '' '' '' '' '' '' ' : 'sensor_ht', 'short_id': 31102}
{'data': '{' data ':' {'
'' '' '' '' '' '' '' '' ' : 30648}
{'data': '{' data ':' {'value': '

Dieser JSON ist ganz einfach zu lesen und zu sammeln. Jedes Gerät hat seine Kennung (sid) so kann es leicht unterschieden werden.


Für die Vorbereitung von Daten von Smart Gateway, wird ein einfaches Python-Programm verwendet.

Es ist notwendig, Xiaomi Home Gateway und PC auf dem gleichen Subnetz zu haben, sonst funktioniert die Kommunikation nicht richtig.

Python 3 und das Mihome Projekt sind für den Einsatz erforderlich.

Je nachdem, was Sie für die Verteilung verwenden, wird die Anweisung sehr vage sein. Ich verwende Debian / Ubuntu um die Installation zu skizzieren:

  1. Überprüfen Sie, ob Python 3.x installiert ist
  2. Wenn es fehlt, installieren Sie es: "apt-get install python3"
  3. Als nächstes install pip: "apt-get install -y python3-pip"
  4. Installiere das mihome Paket: "pip3 install mihome"
  5. Hier ist ein Beispielprogramm (nach /usr/local/bin kopieren)
     run-mihome.py run-mihome_loxwiki.py

    .

  6. Nach dem Herunterladen öffnen Sie das Skript und bearbeiten die Zeilen nach Bedarf:
      #Loxone Adresse und Port 
    UDP_IP = '192.168.1.12'
    UDP_PORT = 56666

    Dies ist die IP-Adresse Ihres Loxone und der Port, auf dem die Daten gesendet werden sollen.

  7. Nun, jetzt können wir alles ausführen "python3 run-mihome.py"
  8. Es sollte eine Kommunikation mit dem Gateway geben - nach dem Start fordert die Anwendung Informationen von allen Sensoren an.
  9. Und als letzter Ausweg ist es eine gute Idee, dafür zu sorgen, dass die Anwendung beim Start läuft. Ich empfehle die Verwendung der Supervisor, ein kurzes Tutorial: https://www.digitalocean.com/community/tutorials/how-to-install-and-manage-supervisor-on-ubuntu-and-debian-vps , meine config (umbenennen wieder zu * .conf):

Hier ist, wie man alles zusammenlegt und Loxone liest.


In meiner Beispieldatei sendet die Anwendung Loxon-Daten an Port 56666, so dass es notwendig ist, die entsprechende virtuelle UDP-Eingabe in Loxone zu erstellen. Als IP-Adresse können Sie die Mini-PC-Adresse verwenden oder leer lassen:

Auf der ersten Berührung ist es eine gute Idee, den UDP-Monitor zu öffnen und zu sehen, ob die Gateway-Daten erscheinen :


Jetzt geht es nur darum, alle Features zu durchlaufen und deine UDP-Befehle zu erstellen. Jedes Gerät hat seine eindeutige Kennung, so gibt es also keine Konflikte.

Beispiel, wie man Daten aus einem Thermometer liest:

Das gleiche für ein paar Würfel Aktionen:

 




Verwandte Artikel

11 Kommentare

  1. philox sagt:

    Habe es gerade ausprobiert, funktioniert (tadellos*). (Lächeln) Danke an Christoph8519 für das Entdecken und Posten!

    *EDIT: Ich habe den Cube ein Aqara Taster und einen Temp/Feuchte Fühler.

    Beim Cube gehen alle Funktionen bis auf das "Drehen" auf der Ebene, Die anderen beiden habe ich noch nicht zum Laufen gebracht.

    Update: Habe nun den Taster und den Feuchte Fühler zum Laufen gebracht. Geht relativ einfach wenn man das Python Skript etwas erweitert.

    Werde dies bei Gelegenheit in der How To ergänzen.

  2. Schließe mich an, werde mir die Komponenten besorgen und ausprobieren!

  3. Habe zwar schon ein paar komponenten aber noch nicht wirklich wie in dem Beitrag eingebunden. Irgendwie bekomme ich das über den raspi nicht zum laufen

    1. philox sagt:

      Vielleicht startest du mal einen Thread dazu in Forum. Eventuell kann ich ich dir da helfen. (Diskussion ist hier im Wiki eher unerwünscht).

  4. Thomas Marck sagt:

    philox

    Wenn du das nachgebastelt hast: Könntest du die Anleitung bitte einmal sprachlich durchgehen und korrigieren, so dass ich das als Laie auch hinbekomme? Bzw. auch Fotos von den Loxone Einstellungen auf deutsch posten? Wäre super!

  5. philox sagt:

    Thomas Marck

    Habe mal versucht ein Teil sprachlich zu überarbeiten und habe die Bilder auf deutsch eingefügt.

  6. Kduino sagt:

    Hallo,

    ich habe mit Hilfe der Anleitung und ein bisschen herum lesen das gut zum Laufen bekommen. Die Bridge über esp8266 läuft prima (XiaomiReader.ino). Was ich noch hinzugefügt habe, ist eine Ping-Überwachung der Bridge und des Gateways, so weiss ich immer sofort, wenn die Verbindung abbricht. Sonst wundert man sich, weshalb die Anlage durchdreht und falsche Aktionen generiert...

    Falls jemand noch Infos braucht, kann ich gerne welche liefern.

    Viele Grüße


  7. Hallo Zusammen,


    habe heute auch mal mein Glück probiert und bin die Anleitung Schritt für Schritt durchgegangen.

    Beim Punkt "Nun, jetzt können wir alles ausführen "python3 run-mihome.py" komm ich leider ins stolpern.

    Ich habe die IP Adresse meines Miniservers in der oben genannten Datei eingetragen, jedoch bekomme ich folgenden Fehler angezeigt:

    root@homegearpi:/usr/local/bin# python3 run-mihome.py
    Traceback (most recent call last):
    File "run-mihome.py", line 104, in <module>
    connector = XiaomiConnector(data_callback=cb)
    File "/usr/local/lib/python3.4/dist-packages/mihome/connector.py", line 21, in __init__
    self.socket = self._prepare_socket()
    File "/usr/local/lib/python3.4/dist-packages/mihome/connector.py", line 29, in _prepare_socket
    sock.bind(("0.0.0.0", self.MULTICAST_PORT))
    OSError: [Errno 98] Address already in use


    Ich muss dazu sagen das ich momentan noch Homegear auf dem selben Pi laufen habe. 

    Darüber beziehe ich bereits die Daten von Xiaomi komme jedoch nicht weiter auf die Loxone Seite, weswegen ich dieses Tutorial einmal probieren wollte.


    Vielleicht weiss ja jemand was (Lächeln)


    MFG Dennis




  8. pip3 install mihome


    vielleicht hift es ja ...

    Für den Loxberry (bitte Readme lesen)

    https://github.com/chris8519/Loxberry-Plugin-Mihome

    Fragen Bitte diesbezüglich im Forum Stellen :

    https://www.loxforum.com/forum/faqs-tutorials-howto-s/116939-xiaomi-produkte-in-loxone-einbinden

    MFG Christoph

  9. Danke Christoph für die schnelle Antwort.

    Werde ich dann schnellst möglich probieren.

    Wünsche noch nen schönen Abend (Lächeln)

  10. Kduino sagt:

    Also das Verfahren mit dem Raspi finde ich sehr umständlich. Der WorkAround mit dem ESP8266 geht schneller und einfacher (wenn ESP zur Hand und Arduino IDE bekannt)

    1. ESP als z.B. Wemos D1 Mini an Arduino IDE anschließen, es geht aber auch jedes andere (ESP-01), Pins werden keine gebraucht.
    2. nach obigem Schema die ID des Gateways erfahren und speichern
    3. Code laden für ESP: XiaomiReader (einfach mal Xiaomi und ESP8266 eingeben bei Google)
    4. Im Code die Daten des eigenen WLANs eingeben und die ID für das Gateway (es können auch mehrere Gateways angegeben werden oder über die Xiaomi App gebridged werden)
    5. Esp mit Code flashen
    6. in Loxone Config den UDP Monitor öffnen und die Eingänge abfangen und als virtuelle Eingänge anlegen. Wenn ein Sensor gerade nichts sendet, einfach eine Veränderung auslösen, dann kommt die UDP-Message
    7. Ping Abfrage auf das ESP einrichten, damit klar ist, wenn das Ding ausfällt (war bei mir seit 4 Monaten noch kein einziges Mal der Fall).

    Viele Grüße