@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