NEWS
Xiaomi Smartmi Air Humidifier2
-
Hallo zusammen,
gibt es für den Xiaomi humidifier2 etwas neueres... oder eine anleitung wie ich das einbinden kann?
Gruß
alex -
@derioalex Was genau suchst du bzw. willst du denn? Ich habe bei mir mittels Javascript (nicht über den MiHome Adapter) den Humidifier2 bei mir eingebunden...
-
@bluefish sagte in Xiaomi Smartmi Air Humidifier2:
@derioalex Was genau suchst du bzw. willst du denn? Ich habe bei mir mittels Javascript (nicht über den MiHome Adapter) den Humidifier2 bei mir eingebunden...
Ich wollte auch den Humidifier2 einbilden… doch leider hab ich keine Ahnung wo und wie
-
@derioalex
Kurze Anleitung:-
Du installierst dir python-miio, am besten in eine Virtuelle Environment (z.B. Ordner "cd /opt/python/miio" dann "python3 -m venv venv" , "source venv/bin/activate" , "pip install python-miio")
-
Anschließend bekommst du mit du mittels "/opt/python/miio/venv/bin/miiocli airhumidifiermiot --ip 192.168.xxx.xx --token xxxxxxxxxxxx status":
-
Das ganze kannst du nun auch im iobroker mittels Blockly exec-Block abfragen oder mittels javascript... Die Werte kannst du dann extrahieren und in Datenpunkte schreiben
Zum Beispiel (natürlich musst du die Datenpunkte davor anlegen und die Variablen anpassen):
schedule("*/15 * * * * *", function () { exec(Path + ' airhumidifiermiot --ip ' + IPaddress + ' --token ' + Token + ' status', function (error, result, stderr) { var noconnection = result.indexOf('Error: Unable to discover the device') + 1; if (noconnection == 1) {setState("humidifier2.0.info.availability", false, true)}; if (noconnection == 0) { setState("humidifier2.0.info.availability", true, true); var MiioList = result.split("\n"); setState("humidifier2.0.info.power", MiioList[0].split(": ")[1], true); // Power: off setState("humidifier2.0.info.error", MiioList[1].split(": ")[1], true); // Error: 0 setState("humidifier2.0.info.targethumidity", parseFloat(MiioList[2].split(": ")[1].split(" %")[0]), true); // Target Humidity: 70 % setState("humidifier2.0.info.humidity", parseFloat(MiioList[3].split(": ")[1].split(" %")[0]), true); // Humidity: 60 % setState("humidifier2.0.info.temp", parseFloat(MiioList[4].split(": ")[1].split(" °C")[0]), true); // Temperature: 23.6 °C //setState("", MiioList[5].split(": ")[1].split(" °F")[0], true); // Temperature: 74.5 °F setState("humidifier2.0.info.depth", parseFloat(MiioList[6].split(": ")[1].split(" %")[0]), true); // Water Level: 0 % setState("humidifier2.0.info.waterTankDetached", MiioList[7].split(": ")[1], true); // Water tank detached: False setState("humidifier2.0.info.mode", MiioList[8].split(": ")[1].split(".")[1], true); // Mode: OperationMode.Auto setState("humidifier2.0.info.ledBrightnessLevel", MiioList[9].split(": ")[1].split(".")[1], true); // LED brightness: LedBrightness.Dim setState("humidifier2.0.info.buzzer", MiioList[10].split(": ")[1], true); // Buzzer: False setState("humidifier2.0.info.childLock", MiioList[11].split(": ")[1], true); // Child lock: False setState("humidifier2.0.info.dryMode", MiioList[12].split(": ")[1], true); // Dry mode: True //setState("", MiioList[13].split(": ")[1].split(".")[1], true); // Button pressed PressedButton.No setState("humidifier2.0.info.targetmotorspeed", parseFloat(MiioList[14].split(": ")[1].split(" rpm")[0]), true); // Target motor speed: 200 rpm setState("humidifier2.0.info.actualmotorspeed", parseFloat(MiioList[15].split(": ")[1].split(" rpm")[0]), true); // Actual motor speed: 0 rpm setState("humidifier2.0.info.usedTime", parseFloat(MiioList[16].split(": ")[1].split(" s")[0]), true); // Use time: 447787 s setState("humidifier2.0.info.powerTime", parseFloat(MiioList[17].split(": ")[1].split("s")[0]), true); // Power time: 155905 s setState("humidifier2.0.info.cleanMode", MiioList[18].split(": ")[1], true); // Clean mode: False } }); });
Und mit diesem Codebeispiel kannst du dann das Gerät ein- und ausschalten. (Kannst du natürlich auf jeden anderen benötigten Wert anpassen um z.B. LED steuern, motorSpeed etc.)
on({id: "humidifier2.0.control.power", change: "ne"}, function (obj) { if ((obj.state ? obj.state.val : "")) { exec(Path + ' airhumidifiermiot --ip ' + IPaddress + ' --token ' + Token + ' on'); } else { exec(Path + ' airhumidifiermiot --ip ' + IPaddress + ' --token ' + Token + ' off'); } });
Ich hoffe du bekommst es mit diesen Infos hin, ansonsten schreib mir eine PN, dann schaue ich mal, wie ich dir sonst helfen kann
-
-
@bluefish
Hinweis am Rande:
Unter Debian versucht man zuerst das Paket über den Paketmanager einzuspielen.Müsste eigentlich verfügbar sein:
sudo apt install python3-miio
-
@thomas-braun ob man python3-miio mittels apt oder pip installiert, sollte eigentlich keinen Unterschied machen, das Resultat ist doch das selbe! Ich habe mir jedoch angewöhnt alles in Virtual Environments zu installieren, aber das kann jeder machen wie er will
-
Hält pip auch die Versionen aktuell?
Und zieht Dependencies nach? -
@thomas-braun du meinst die Updates mittels "sudo apt update && sudo apt upgrade"!?
Natürlich gibt es auch Befehle, um alle pip (Python) Module zu updaten, aber das möchte man / ich eigentlich nicht. Kleines Beispiel zu diesem Beispiel. In python3-miio wurden durch ein Update Zeilen für den Humidifier2 hinzugefügt. Damit stimmte meine Zuordnung mittels "MiioList[x]" natürlich auch nicht mehr... Hätte ich das nun automatisch geupdatet, hätte ich es vermutlich nicht direkt mitbekommen. Daher update ich Python Module lieber manuell und abhängig zur entsprechenden Virtual EnvironmentJa, pip installiert auch die zugehörigen Module, aber wie gesagt, es geht auch der Weg über apt. Viele Wege führen nach Rom
-
@canim kann es sein das es mit Iobroker v4 nicht funktioniert? Habe node 14 aktuell laufen, leider geht es nicht mehr
-
funktioniert der Adapter auch mit dem runden Modell?
Ich bekomme den Xiaomi MiHome Gateway Adapter nicht zum laufen. So wie es aussieht benötigt man da ein Xiaomi Gateway, ich hab aber nur diesen Luftbefeuchter, sonst nichts.