Xiaomi Smarthome Unterstüzung

Hallo,

ich habe eine Unterstützung für Xiaomi Smarthome (https://xiaomi-mi.com/sockets-and-sensors/xiaomi-mi-smart-home-kit/) Geräte als Homegear Miscellaneous Geräte implementiert. Günstige, formschöne Geräte, die man bei gängigen Chinashops wie zB Aliexpress oder Gearbest erwerben kann.
Mehr Details in meinem github-Projekt unter https://github.com/pfandfrei/Homegear-Xiaomi-Smarthome. Wünsche, Fragen und Probleme dazu gerne hier im Forum.
Ich werde versuchen, alle dokumentierten Geräte zu implementieren, auch wenn ich sie nicht alle besitze …

Gruß,
Frank

3 Likes

Total cool! :slight_smile:

Update auf Version 0.4.0 mit Implementierung der aktuellen Xiaomi Aqara Taster und Sensoren

2 Likes

Hi Frank,
wollte gerade mal die Xiaomi Unterstützung testen, aber irgendwas hakt noch :slight_smile:

Habe die scripts und xml files nach Deiner Beschreibung hochgeladen. Devices wurden aber nicht erkannt, zuerst muss homegear neu gestartet werden.
Dann wurden die Devices erkannt und liefern Werte.
Allerdings kann ich keinen einzigen Parameter setzen - auch nicht beim Gateway den Gong oder so…
Habe auch einen Weather Sensor der jetzt mit Batterie Meldungen nervt. Im Gerätekanal ist das auf 3025mv eingestellt, allerdings kann ich den Wertr nicht ändern…

Das sind meine Geräte
116 â â MI0788C40C â 286C â MiCentral
117 â â MI01A4B74A â 288D â MiWeatherV1
118 â â MI0183CFC8 â 28C1 â Mi86Sw1
119 â â MI016C4994 â 287D â MiSwitchAq2

08/16/17 11:56:14.967 Module Miscellaneous: Info: Parameter PROTO_VERSION of peer 116 and channel 0 was set to 0x42696E010000000D0000000300000005312E302E39.

08/16/17 11:56:14.991 Module Miscellaneous: Error: Script of peer 116 was killed. Restarting in 10 seconds…

Ansonsten finde ich nichts zum Modul
Viele Grüße
Horst

Hallo Horst,

Sollte eigentlich auch funktionieren, ohne dass homegear neu gestartet werden muss. Ich werde versuchen, das nochmal nachzustellen.

Hast du das Passwort eingegeben, wie unter Step2.7 beschrieben? Andernfalls lassen sich Parameter nicht setzen. Bitte nochmal auf eventuelle Schreibfehler kontrollieren.

Der Batteriewert ist nur eine Anzeige des aktuellen Wertes und kein Parameter und kann daher nicht geändert werden.

Die Geräte Mi86Sw1 und MiSwitchAq2 habe ich selbst leider nicht, möglicherweise habe ich hier einen Fehler in der Implementierung. Der MiWeatherV1 läuft bei mir problemlos, was nicht zwingend bedeutet, dass das in einer anderen Umgebung genauso ist. Das sollten wir aber herausbekommen. Hauptproblem scheint mir momentan zu sein, dass das Skript abstürzt: [quote=“trilu, post:4, topic:1321”]
08/16/17 11:56:14.991 Module Miscellaneous: Error: Script of peer 116 was killed. Restarting in 10 seconds…
[/quote]

was vermutlich an einem Fehler im Code liegt. Das Problem müssen wir also zuerst lösen.

Bin grad nicht zuhause, aber theoretisch müsste es mehr Infos geben. Schau mal ob Du die Dateien /var/log/homegear/homegear.log, /var/log/homegear/homegear.err und /var/log/homegear/mihome.log hier zu Verfügung stellen kannst (gerne gekürzt nach einem Neustart).

Welche homegear Version benutzt Du?
Ist die Firmware auf dem Gateway auf neuestem Stand (Protokollversion 1.09, Version 1.08 sollte auch funktionieren)?

Gruß,
Frank

mihome.log (9.4 KB)
homegear.err.txt (10.4 KB)
homegear.log (359.1 KB)
passwort habe ich geprüft - das müsste so stimmen…

Homegear version 0.8.0-1771
Das MI-Gateway ist Version 1.4.1_149

Ich glaube ich habe (zumindest einen) Fehler gefunden: In der Kanalliste des MiSw861 fehlt der Kanal für “voltage”. Wenn versucht wird, diesen zu setzen, stürzt alles ab.
Als schnelle Abhilfe kannst Du die Mi86Sw1.xml durch die im Anhang ersetzen, dann müsste (!) es gehen …
Einen sauberen Bugfix, wo verhindert wird, dass alles zusammen abstürzt, gibt es dann die nächsten Tage.
Das Logging bzw. die Ausgabe von Fehlern muss ich wohl auch noch ein wenig verbessern …

Mi86Sw1.xml (3,8 KB)

sieht gut aus :slight_smile:
änderung eingebaut und schon kann ich geräte nutzen. werde noch weiter testen!
bisher habe ich nur das gateway getestet und da auch nur den play sound

Ach ja, was mir gerade noch einfällt: In anderen Foren ist zu lesen, dass gerade nach den letzten Update der Gatewaysoftware die linke Taste nicht mehr funktioniert. Das ist ein Problem bei der Gatewaysoftware und nur dort durch ein Update zu lösen.
Ich weiß nicht, ob der Mi86Sw1 (eine Taste, daher immer links) betroffen ist.

das ist ja interessant - hänge gerade an den tasten. wenn sie gepeert sind, dann schaltet der aktor aber ich sehe keinen event in homegear. ungepeered, natürlich kein event im aktor, aber auch kein event in homegear :slight_smile:

also bis jetzt funktioniert das alles recht gut!
Temperatur, Luftfeuchte und Luftdruck werden ordentlich und kontinuierlich empfangen.
Licht und Gong lässt sich am Gateway schön schalten und auch verknüpfen.
Meinst Du man könnte herausfinden wie der Radio Channel funktioniert und den zum streamen von TTS verwenden?

Hallo Horst,

Für das Radio gibt es leider keine offizielle API, daher sehe ich momentan schwarz. Sobald es was gibt, baue ich es ein.
Scheinbar ist ein chinesischer Server für die auswählbaren Radiostationen fest einprogrammiert. Es gibt ein paar Tricks, um dem Radio einen anderen Server untterzuschieben, aber ehrlich gesagt nichts, womit ich mich befassen möchte.

Ich habe auf Github eine neue Version 0.4.2 mit Fehlerbehebungen eingepflegt. Für Dich gibt es momentan aber keinen echten Gund, auf die neuere Version zu wechseln.

Gruß,
Frank

1 Like

Sehr genial. Mit ein wenig Support durch den Entwickler habe ich das Ding ohne Probleme ans laufen bekommen. Wäre cool, wenn das in den Homegear Standard einfliessen könnte. Bisher läuft alles stabil. Die XIAOMI Komponenten sind preiswert, klein und sogar schön. Bisher sind bei mir das Gateway, Fenster/Tür-Kontakt Sensor und Temperatur/Feuchtigkeits Sensoren im Einsatz. Demnächst kommt noch der Schalter dazu (ist noch auf dem Weg von China nach Europa :-)). Homegear ist mit MQTT konfiguriert. Als Smarthome Plattform nutze ich Node-Red (auch für andere Devices: Homematic, …).

Nochmals: Danke an den Entwickler !!!

Gruss, S.

2 Likes

Hi,

ich habe heute Erfolgreich deine Xiaomi implemntierung in Betrieb genommen. Ich verwende die neuen Geräte ( 3 Temperatur Sensoren und einen Bewegungsmelder) nun in openhab. Dort habe ich entsprechend die Items angelegt:

Switch 		flur_Bewegungungsmelder_Bewegung			"Bewegung"												<motion>			( gFlur)  	{ channel="homematic:HG-MiMotion:1ecedb21:MI018B5B16:1#MOTION" }
Number 		flur_Bewegungungsmelder_Batterie			"Batterielevel"											<battery> 			( gFlur)	{ channel="homematic:HG-MiMotion:1ecedb21:MI018B5B16:0#VOLTAGE" }

Anschließend habe ich eine Rule angelegt und wollte den Bewebungsmelder testen, leider bekomme ich das nicht hin. Mir werden die Bewegungen leider nicht angezeigt. Sie tauchen auch im xiaomi.log nicht auf.

rule "flur_bewegung"
when
    Item flur_Bewegungungsmelder_Bewegung changed
then           
	if( flur_Bewegungungsmelder_Bewegung.state == ON ) {
		sendTelegram("BOTNAME", "BEWEGUNG")
	} else {
		sendTelegram("BOTNAME", "VORBEI")
	}		

end

Wenn homegear neu starte, ändert sich der Status und ich bekomme eine Telegram nachricht mit VORBEI. Das war es leider. Ich wollte bei Bewegung das Licht der Zentrale für 1 Minute einschalten und die Helligkeit abhängig von der Uhrzeit(nachts nicht so hell wie tagsüber) dimmen oder volle power.

Leider bekomme ich das absolut nicht hin. Hat eventuell jemand einen tipp für mich?

PS: Scheinbar werden die Bewegungen im miHome.log tatsächlich erkannt, aber kommen im Openhab nicht an!?

2017-11-10 18:56:36 >>  {"cmd":"report","model":"motion","sid":"158d00018b5b16","short_id":28791,"data":"{\"status\":\"motion\"}"}

Ist das so korrekt? Das Passwort wurde gesetzt.

Hallo,

zu OpenHab kann ich wenig sagen. Ich hatte es mir damals mal angeschaut, aber irgendwie hatte ich den Eindruck, dass die Homematic Unterstützungnicht ganz rund läuft. Dann hab ich es wieder deinstalliert.
Zu Deinem Problem:

Du solltest in der Datei /var/lib/homegear/mihome.log bei einer erkannten Bewegung einen Eintrag wie folgt erhalten:

2017-11-10 18:58:13 >> {"cmd":"report","model":"motion","sid":"158d000187564d","short_id":15866,"data":"{\"status\":\"motion\"}"}

Den Kanal MOTION habe ich mal mit einem Script verknüpft und bei mir läuft das anstandslos, weshalb ich erst mal auf OH als Fehlerquelle tippen würde. Zu beachten ist, dass maximal nur ein Event pro Minute erzeugt wird, egal wieviele Bewegungen ablaufen.

Kann es sein, dass OH mit dem Datentyp ACTION nicht klar kommt? Ich habe gerade mal geschaut und Homematic verwendet beim Bewegungsmelder den Datentyp BOOLEAN. Du könntest testweise mal die Datei MiMotion.xml gegen die im Anhang austauschen und schauen ob es dann funktioniert. Homegear muss dafür dann neu gestartet werden.MiMotion.xml (3,2 KB)

Wenn gar nichts hilft, gibt es noch die Möglichkeit, die Xiaomi Komponenten über Openhab direkt einzulernen. Ob das für Dich in Frage kommt, musst Du selbst entscheiden.

Wenn Du willst, kannst Du auch auf Debuglevel 4 mal die Homegear Logdateien hier einstellen (alle aus /var/log/homegear/ *.log und *.err und ich schaue kurz drüber, ob mir noch was dazu einfällt. Bitte aber nur einen kurzen Ausschnitt, sonst wird es zu aufwändig, sich da durch zu kämpfen.

Gruß,
Frank

Vielen Dank für die schnelle Antwort. Nach deiner Änderung habe ich bei der Ersten Bewegung ein ON bekommen. Seit dem kommt nichts mehr an!

rule "flur_bewegung"
when
    Item flur_Bewegungungsmelder_Bewegung changed
then           
		sendTelegram("BOTNAME", flur_Bewegungungsmelder_Bewegung.state.toString)

end

So sieht die Rule nun aus. Wie stelle ich das Debuglevel auf 4?

PS: So wie es aussieht habe ich es nun doch hinbekommen, es wird wohl immer true gesendet. Ich dachte, dass nach 1 Minute wieder ein OFF gesendet wird. Also habe ich im Homematic einen Timer gesetzt und nach einer Minute wird der STatus wieder auf OFF gesetzt.

Nun habe ich das Problem, dass ich das Licht der Basis nicht anbekomme. Was für einen Status muss ich denn an ENABLE der Zentrale senden?

Habe es mit ON, TRUE und 1 versucht. Bekomme aber immer

2017-11-10 19:41:39 >>  {"cmd":"write_ack","sid":"34ce00fa770b","data":"{\"error\":\"Invalid key\"}"}

Auf der Kommandozeile das Homegear CLI starten: homegear -r und dann dl 4 eingeben. (Siehe https://doc.homegear.eu/data/homegear/cli.html)

Hast Du auch > 1min gewartet für den zweiten Trigger?

Edit: Irgendwie überschneiden sich unsere Antworten immer …

Ja Mist, dadurch, dass es kein Datentyp ACTION mehr ist, wird es ja nicht mehr zurückgesetzt. Sieht also so aus, als ob OH nicht mit den Datentyp ACTION arbeiten will (oder Du das anders angehen musst) und der Datentyp BOOLEAN der Implementierung widerspricht.

Du meinst das Licht des Gateway? Da musst zusätzlich zum ENABLE noch eine Helligkeit und ggf eine Farbe angeben.
In etwa so:
$hg->setValue(48,1,“BRIGHTNESS”, 10); // Helligkeit 10%
$hg->setValue(48,1,“RGB”, 300); // Farbe blau
$hg->setValue(48,1,“ENABLE”, TRUE); // einschalten

Noch ein Edit:
“Invalid key” deutet auch ein falsches Passwort im Gateway hin.

Ja ich warte immer 1 Minute. Ich weiß leider nicht was genau ich per SendCommand abschicken muss. Laut MiGateway.XML ist ENABLE ein Boolean, daher habe ich versucht TRUE zu senden, aber das klappt nicht. Wenn ich “TRUE” nehme, bekomme ich auch einen Fehler im openHab.

Muss ich vor ENABLE noch sendCommand Brightness und RGB aufrufen?

Nein, Du musst das nicht tun. Wenn BRIGHTNESS aber 0 ist, wirst Du sonst nichts sehen, Da Helligkeit 0% gleich dunkel bzw aus

Vielleicht ist der bessere Ansatz, mal jemanden zu fragen, der weiß wie das mit OH und ACTION Kanälen läuft. Letzendlich musst Du das vermutlich zB wie ein PRESS_SHORT eines Tasters behandeln, wenn Du die “alte” Kanalliste benutzt.