NEWS
XIAOMI ROSSOU SS4 Ventilator mit dem IOBroker steuern
-
Re: Xiaomi Rosou SS4
Vor sehr langer Zeit hatte ich hier die Frage gestellt, ob es möglich ist den Xiaomi Rosou SS4 Ventilator mit dem IOBroker zu steuern. Lange Zeit gab es keine Lösung dafür. Immer mal wieder habe ich verschiedene Ansätze probiert, z.B mit dem miio Adapter für den IOBroker. Nachdem die Hürden mit dem Token gelöst waren (Den kann man z.B. mit dem Mihome-vacuum Adapter bequem auslesen), wurde der Ventilator zwar in den Objekten angezeigt, jedoch war nicht wirklich zu steuern. Ich hatte auch mehrere issues bei Github angelegt - ohne Erfolg. An dem Miio Adapter wird wohl nicht mehr entwickelt.
Vor einiger Zeit bin ich nun auf Github auf das Projekt python-miio aufmerksam. Mit den Tools aus dem Projekt, war es mir möglich einige neue Versuche mit dem Ventilator zu starten, letztendlich ebenfalls ohne Erfolg. Auch hier habe ich ein issue eröffnet. Nachdem auch da lange Zeit nichts passiert, kam dann gestern doch ein Kontakt zustande und dank der tatkräftigen Unterstützung war relativ schnell eine Unterstützung für den Ventilator zusammen zu stellen. Der Rossou SS4 wird also sehr bald von python-miio unterstützt.
In der Zwischenzeit ist das auch durch Raw Kommandos möglich:
Hier die wichtigsten Befehle:
Zunächst muss man natürlich python-miio installieren. Dafür ist Phyton nötig, was ebenfalls installiert sein sollte.
Dies ist hier beschrieben!
Damit der IOBroker mit den Tools von python-miio zusammen arbeiten kann, mitsudo pip3 install python-miio
installieren.
Nun die wichtigsten Befehle:Einschalten:
miiocli device --ip IP --token TOKEN raw_command set_power [1]
Ausschalten:
miiocli device --ip IP --token TOKEN raw_command set_power [0]
Ventilator in Sleep- Mode;
miiocli device --ip IP --token TOKEN raw_command set_mode [1]
Strong Mode:
miiocli device --ip IP --token TOKEN raw_command set_mode [2]
Natürlicher Modus:
miiocli device --ip IP --token TOKEN raw_command set_mode [3]
Lüftergeschwindigkeit (0-100)
miiocli device --ip IP --token TOKEN raw_command set_blow [50]
Ton an:
miiocli device --ip IP --token TOKEN raw_command set_sound [1]
Ton aus:
miiocli device --ip IP--token TOKEN raw_command set_sound [0]
Schwenken ein:
miiocli device --ip IP --token TOKEN raw_command set_yaw [1]
Schwenken aus:
miiocli device --ip IP --token TOKEN raw_command set_yaw [0]
Timer setzen (0 für aus und 1-540 für die Minutenzahl)
miiocli device --ip IP --token TOKEN raw_command set_timer [120]
Dies sind die Kommandos, die auch mit der aktuellen Version von phyton-miio funktionieren. In der zukünftigen Version ist der Aufruf dann einfacher:
$ miiocli fanleshow Usage: miiocli fanleshow [OPTIONS] COMMAND [ARGS]... Options: --ip TEXT [required] --token TEXT [required] --help Show this message and exit. Commands: delay_off Set delay off minutes. info Get miIO protocol information from the device. off Power off. on Power on. raw_command Send a raw command to the device. set_buzzer Set buzzer on/off. set_mode Set mode. set_oscillate Set oscillate on/off. set_speed Set natural level. status Retrieve properties.
Im IOBroker kann man dann z.B. mit dem Exec Blockly die Befehlszeile ausführen lassen:
Ich hoffe, dass damit auch andere Nutzer etwas anfangen können! -
Das is super interessant was Du da machst, ich bin nämlich auch grad an nem Xiaomi Device (Purifier 3H) dran, versuchte aber einen anderen Weg, nämlich über die node-mihome. Leider schaff ichs bisher nur die Daten vom Gerät auszulesen, schreiben mag es noch ned. Vieleicht kann man da gemeinsam was auf die Füße stellen?
-
@Pittini Gerne! Soweit es meine Zeit zulässt! Von dem node-mihome Ansatz habe ich auch bereits gelesen (dort wird auch der Rossou SS4 unterstützt), nur bin ich da auch nicht weiter gekommen! Der Purifier 3H wird vieleicht auch von python-miio unterstützt! Da kann ich Dir möglicherweise helfen!
Mehr Infos findest Du auch auf der Github Seite von python-miio! -
@hilde0407 Scheint unterstützt zu werden. Aber was ich mich grad frag, gut ich kann via iobroker via exec den Kommandozeilenbefehl absetzen. Aber wie krieg ich die aktuellen states aus "status" in den iobroker?
-
@Pittini Mit einem get Prop Kommando:
miiocli device --ip IP --token TOKEN raw_command get_prop "['power', 'mode', 'blow', 'timer', 'sound', 'yaw', 'fault']"
Man kann auch einzelne States abfragen z.B. nur power, dann einfach den Rest weg lassen!
In einem Blockly geht das so:
Aber aufpassen! Die result Variable muss man noch weiter bearbeiten, es wird darin ein String geschrieben! In Deinem Fall (das Gerät wird bereits offiziell unterstützt), sollte auch der status Befehl ebenfalls in einem Exec Blockly und dem Abspeichern via debug in eine Variable funktionieren!
-
@hilde0407 Hmm, ich kann machen was ich will, das einzige was funktioniert ist "info".
pittini@Iobroker:~$ miiocli device --ip 192.168.2.136 --token 4ff8a96292d0451c5148142a0a851e4f info Model: zhimi.airpurifier.mb3 Hardware version: esp32 Firmware version: 2.0.7
Bei allem anderen krieg ich:
pittini@Iobroker:~$ miiocli device --ip 192.168.2.136 --token 4ff8a96292d0451c5148142a0a851e4f raw_command set_power "[0]" Running command raw_command Error: {'code': -5001, 'message': 'command error'}
Habs mit 2 verschiedenen Devices (AirPurifier und AirHumidifier) versucht, mit identischem Ergebnis. Hast Du da ne Idee dazu?
Die Befehlsliste des Devicetyps spuckt es aus:
pittini@Iobroker:~$ miiocli airpurifier --help Usage: miiocli airpurifier [OPTIONS] COMMAND [ARGS]... Options: --ip TEXT [required] --token TEXT [required] --help Show this message and exit. Commands: info Get miIO protocol information from the device. off Power off. on Power on. raw_command Send a raw command to the device. reset_filter Resets filter hours used and remaining life. set_auto_detect Set auto detect on/off. set_buzzer Set buzzer on/off. set_child_lock Set child lock on/off. set_extra_features Storage register to enable extra features at the app. set_favorite_level Set favorite level. set_learn_mode Set the Learn Mode on/off. set_led Turn led on/off. set_led_brightness Set led brightness. set_mode Set mode. set_volume Set volume of sound notifications [0-100]. status Retrieve properties.
PS: In Deinen Beispielen oben sind glaub paar Tippfehler bzw Wechselstabenverbuchsler bei Schwenken ein und aus hats iwie die " und [ verhaut und beim Timer setzen sind keine ", was stimmen kann, aber da überall welche sind...
-
@Pittini Danke für die Tippfehlerhinweise! Ich habe es berichtigt! Die Anführungszeichen sind nicht nötig!
Nun zu Deinem Problem! Ich war der Meinung, dass Du bereits geschrieben hattes, dass phyton-miio bereits Dein Gerät unterstütz! Du kannst aber scheinbar das Gerät damit nicht steuern, was bedeutet, das phyton-miio dein Gerät noch nicht unterstützt!
Was ich finden konnte, dass Dein Gerät von Homebridge unterstützt wird.
Ansonsten hier Kommandos zum steuern, die ich gefunden habe, jedoch keine Gewähr, ob es funktioniert!Einschalten:
miiocli device --ip IP --token TOKEN raw_command set_properties '[{"did":"MYDID","piid":2,"siid":2,"value":true}]'
Ausschalten:
miiocli device --ip IP --token TOKEN raw_command set_properties '[{"did":"MYDID","piid":2,"siid":2,"value":false}]'
Fanspeed einstellen (Stufe 1 bis 3)
miiocli device --ip IP --token TOKEN raw_command set_properties '[{"did":"MYDID","siid":2,"piid":4,"value":1}]' miiocli device --ip IP --token TOKEN raw_command set_properties '[{"did":"MYDID","siid":2,"piid":4,"value":2}]' miiocli device --ip IP --token TOKEN raw_command set_properties '[{"did":"MYDID","siid":2,"piid":4,"value":3}]'
Wenn das nicht funktionieren sollte, mal mit miio probieren:
Als Erstes miIO Device Library installieren:
npm install -g miio
nun den Token registrieren:
miio tokens update IP --token TOKEN
Dann sollte das Gerät zu steuern sein!
Einschalten:
miio protocol call IP set_properties '[{"did":"MYDID","piid":2,"siid":2,"value":true}]'
Ausschalten:
miio protocol call IP set_properties '[{"did":"MYDID","piid":2,"siid":2,"value":false}]'
Fanspeed einstellen (Level 1-3):
miio protocol call IP set_properties '[{"did":"MYDID","siid":2,"piid":4,"value":1}]' miio protocol call IP set_properties '[{"did":"MYDID","siid":2,"piid":4,"value":2}]' miio protocol call IP set_properties '[{"did":"MYDID","siid":2,"piid":4,"value":3}]'
Nachzulesen hier
-
Ich gebs auf. Ich hab einfach kein Plan von python und kann nichmal den code richtig lesen.
Also hab ich meinen Frust nochmal an der node-mihome ausgelassen und.....es zum laufen gebracht, inkl Tokenauslesen etc. Falls Du guggen oder Betatesten oder mitmachen magst: https://github.com/Pittini/iobroker-nodemihome bzw. https://forum.iobroker.net/topic/39388/vorlage-xiaomi-airpurifier-3h-u-a-inkl-token-auslesen