NEWS
[Vorlage] Xiaomi Airpurifier 3H u.a. inkl. Token auslesen.
-
Es geht wieder!
Keine Ahnung warum, aber auf einmal kann der 3H wieder ausgelesen werden. Auch das Ein- und Ausschalten klappt wieder.Danke!
-
@Pittini Das Problem, das ich mich nicht einloggen konnte habe ich lösen können. So wie es aussieht, unterstützt das Skript keine Sonderzeichen im Passwort, bzw. nur die üblichen Satzzeichen. Getestet habe ich die Sonderzeichen ".+-_" und diese funktionieren. Es werden alle Geräte erkannt und auch im Objektbaum angelegt, allerdings werden die Werte alle nur mit (null) befüllt.
Fehler sind leider keine in der Logdatei ersichtlich. Auch der trigger von 10 Sekunden funktioniert nicht, oder gibt keine Log-Daten aus. Hier das Skript log der letzten 2,5 Stunden
javascript.0 2021-09-27 18:45:04.538 info script.js.devices.AllMyMi: setForeignState(id=javascript.0.MiHomeAll.362072163.info.rssi, state={"val":-84,"ack":true,"c":"script.js.devices.AllMyMi"}) javascript.0 2021-09-27 18:44:54.412 info script.js.devices.AllMyMi: subscribe: {"pattern":{"id":"javascript.0.MiHomeAll.362072163.physical-controls-locked.physical-controls-locked","change":"ne","ack":false,"q":0},"name":"script.js.devices.AllMyMi"} javascript.0 2021-09-27 18:44:54.412 info script.js.devices.AllMyMi: subscribe: {"pattern":{"id":"javascript.0.MiHomeAll.362072163.custom-service.favorite-speed","change":"ne","ack":false,"q":0},"name":"script.js.devices.AllMyMi"} javascript.0 2021-09-27 18:44:54.412 info script.js.devices.AllMyMi: subscribe: {"pattern":{"id":"javascript.0.MiHomeAll.362072163.screen.brightness","change":"ne","ack":false,"q":0},"name":"script.js.devices.AllMyMi"} javascript.0 2021-09-27 18:44:54.412 info script.js.devices.AllMyMi: subscribe: {"pattern":{"id":"javascript.0.MiHomeAll.362072163.alarm.alarm","change":"ne","ack":false,"q":0},"name":"script.js.devices.AllMyMi"} javascript.0 2021-09-27 18:44:54.412 info script.js.devices.AllMyMi: subscribe: {"pattern":{"id":"javascript.0.MiHomeAll.362072163.air-purifier.mode","change":"ne","ack":false,"q":0},"name":"script.js.devices.AllMyMi"} javascript.0 2021-09-27 18:44:54.412 info script.js.devices.AllMyMi: subscribe: {"pattern":{"id":"javascript.0.MiHomeAll.362072163.air-purifier.on","change":"ne","ack":false,"q":0},"name":"script.js.devices.AllMyMi"} javascript.0 2021-09-27 18:44:54.411 info script.js.devices.AllMyMi: onStop(timeout=10) javascript.0 2021-09-27 18:44:54.411 info script.js.devices.AllMyMi: setInterval(ms=10000) javascript.0 2021-09-27 18:44:54.411 info script.js.devices.AllMyMi: Setting trigger #0 for zhimi.airpurifier.mb4 javascript.0 2021-09-27 18:44:54.411 info script.js.devices.AllMyMi: Init Device# 0 - device="zhimi.airpurifier.mb4" javascript.0 2021-09-27 16:44:50.319 info script.js.devices.AllMyMi: Created device {"_events":{},"_eventsCount":0,"_maxListeners":100,"id":"362072163","address":"10.1.20.71","token":"030a70e4c6f04cc8d5249efe963c0156","protocol":"local","refresh":10000,"_properties":{},"_propertiesToMonitor":["air-purifier:fault","air-purifier:on","air-purifier:mode","environment:pm2.5-density","filter:filter-life-level","filter:filter-used-time","alarm:alarm","screen:brightness","physical-controls-locked:physical-controls-locked","custom-service:favorite-speed","custom-service:moto-speed-rpm"],"_miotSpec":null,"_miotSpecType":"urn:miot-spec-v2:device:air-purifier:0000A007:zhimi-mb4:2","model":"zhimi.airpurifier.mb4","setter":{},"definition":{"info":[{"id":"localip","initial":"","forceCreation":false,"common":{"read":true,"write":true,"name":"Ip Adress","type":"string","role":"value","def":""}},{"id":"token","initial":"","forceCreation":false,"common":{"read":true,"write":true,"name":"Token","type":"string","role":"value","def":""}},{"id":"did","initial":"","forceCreation":false,"common":{"read":true,"write":true,"name":"Device Id","type":"string","role":"value","def":""}},{"id":"model","initial":"","forceCreation":false,"common":{"read":true,"write":true,"name":"Model","type":"string","role":"value","def":""}},{"id":"rssi","initial":0,"forceCreation":false,"common":{"read":true,"write":false,"name":"rssi","type":"number","role":"value.rssi","def":0}},{"id":"name","initial":"","forceCreation":false,"common":{"read":true,"write":true,"name":"Name","type":"string","role":"value","def":""}},{"id":"isOnline","initial":false,"forceCreation":false,"common":{"read":true,"write":true,"name":"Is online","type":"boolean","role":"value","def":false}}],"model":"zhimi.airpurifier.mb4","description":"Purifier 3C","setter":{},"common":[{"name":"air-purifier.on","type":"boolean","role":"switch","read":true,"write":true,"min":false,"max":true},{"name":"air-purifier.fault","type":"string","read":true,"write":false,"role":"state"},{"name":"air-purifier.mode","type":"number","read":true,"write":true,"min":0,"max":3,"states":{"0":"auto","1":"sleep","2":"favorite","3":"fanset"},"role":"state"},{"name":"alarm.alarm","type":"boolean","role":"switch","read":true,"write":true,"min":false,"max":true},{"name":"screen.brightness","type":"number","read":true,"write":true,"min":0,"max":8,"role":"state"},{"name":"environment.pm2_5-density","type":"number","read":true,"write":false,"min":0,"max":600,"unit":"μg/m³","role":"state"},{"name":"custom-service.moto-speed-rpm","type":"number","read":true,"write":false,"min":0,"max":65535,"unit":"rpm","role":"state"},{"name":"custom-service.favorite-speed","type":"number","read":true,"write":true,"min":300,"max":2300,"unit":"rpm","role":"state"},{"name":"filter.filter-life-level","type":"number","read":true,"write":false,"min":0,"max":100,"unit":"%","role":"state"},{"name":"filter.filter-used-time","type":"number","read":true,"write":false,"unit":"h","role":"state"},{"name":"physical-controls-locked.physical-controls-locked","type":"boolean","role":"switch","read":true,"write":true,"min":false,"max":true}]},"firstrun":true,"rssi":0,"isOnline":true} now fetching data javascript.0 2021-09-27 16:44:50.319 info script.js.devices.AllMyMi: Now creating device for zhimi.airpurifier.mb4 / 362072163 / 10.1.20.71 / 030a70e4c6f04cc8d5249efe963c0156 / 10000 javascript.0 2021-09-27 16:44:50.318 info script.js.devices.AllMyMi: setForeignState(id=javascript.0.MiHomeAll.blt.4.1754sfbvcgc00.info.isOnline, state={"val":false,"ack":true,"c":"script.js.devices.AllMyMi"}) javascript.0 2021-09-27 16:44:50.318 info script.js.devices.AllMyMi: setForeignState(id=javascript.0.MiHomeAll.blt.4.1754sfbvcgc00.info.name, state={"val":"Mi Electric Scooter 1S","ack":true,"c":"script.js.devices.AllMyMi"}) javascript.0 2021-09-27 16:44:50.318 info script.js.devices.AllMyMi: setForeignState(id=javascript.0.MiHomeAll.blt.4.1754sfbvcgc00.info.rssi, state={"val":0,"ack":true,"c":"script.js.devices.AllMyMi"}) javascript.0 2021-09-27 16:44:50.318 info script.js.devices.AllMyMi: setForeignState(id=javascript.0.MiHomeAll.blt.4.1754sfbvcgc00.info.model, state={"val":"ninebot.scooter.v3","ack":true,"c":"script.js.devices.AllMyMi"}) javascript.0 2021-09-27 16:44:50.318 info script.js.devices.AllMyMi: setForeignState(id=javascript.0.MiHomeAll.blt.4.1754sfbvcgc00.info.did, state={"val":"blt.4.1754sfbvcgc00","ack":true,"c":"script.js.devices.AllMyMi"}) javascript.0 2021-09-27 16:44:50.318 info script.js.devices.AllMyMi: setForeignState(id=javascript.0.MiHomeAll.blt.4.1754sfbvcgc00.info.token, state={"val":"4c223987dbd5a32e1283667b","ack":true,"c":"script.js.devices.AllMyMi"}) javascript.0 2021-09-27 16:44:50.318 info script.js.devices.AllMyMi: setForeignState(id=javascript.0.MiHomeAll.blt.4.1754sfbvcgc00.info.localip, state={"val":"91.67.208.22","ack":true,"c":"script.js.devices.AllMyMi"}) javascript.0 2021-09-27 16:44:50.318 info script.js.devices.AllMyMi: setForeignState(id=javascript.0.MiHomeAll.320389496.info.isOnline, state={"val":true,"ack":true,"c":"script.js.devices.AllMyMi"}) javascript.0 2021-09-27 16:44:50.318 info script.js.devices.AllMyMi: setForeignState(id=javascript.0.MiHomeAll.320389496.info.name, state={"val":"Roborock S5 Max","ack":true,"c":"script.js.devices.AllMyMi"}) javascript.0 2021-09-27 16:44:50.317 info script.js.devices.AllMyMi: setForeignState(id=javascript.0.MiHomeAll.320389496.info.rssi, state={"val":-36,"ack":true,"c":"script.js.devices.AllMyMi"}) javascript.0 2021-09-27 16:44:50.317 info script.js.devices.AllMyMi: setForeignState(id=javascript.0.MiHomeAll.320389496.info.model, state={"val":"roborock.vacuum.s5e","ack":true,"c":"script.js.devices.AllMyMi"}) javascript.0 2021-09-27 16:44:50.317 info script.js.devices.AllMyMi: setForeignState(id=javascript.0.MiHomeAll.320389496.info.did, state={"val":"320389496","ack":true,"c":"script.js.devices.AllMyMi"}) javascript.0 2021-09-27 16:44:50.317 info script.js.devices.AllMyMi: setForeignState(id=javascript.0.MiHomeAll.320389496.info.token, state={"val":"72383051456d5373586a325851786833","ack":true,"c":"script.js.devices.AllMyMi"}) javascript.0 2021-09-27 16:44:50.317 info script.js.devices.AllMyMi: setForeignState(id=javascript.0.MiHomeAll.320389496.info.localip, state={"val":"10.1.20.230","ack":true,"c":"script.js.devices.AllMyMi"}) javascript.0 2021-09-27 16:44:50.317 info script.js.devices.AllMyMi: setForeignState(id=javascript.0.MiHomeAll.362072163.info.isOnline, state={"val":true,"ack":true,"c":"script.js.devices.AllMyMi"}) javascript.0 2021-09-27 16:44:50.317 info script.js.devices.AllMyMi: setForeignState(id=javascript.0.MiHomeAll.362072163.info.name, state={"val":"Mi Air Purifier 3C","ack":true,"c":"script.js.devices.AllMyMi"}) javascript.0 2021-09-27 16:44:50.317 info script.js.devices.AllMyMi: setForeignState(id=javascript.0.MiHomeAll.362072163.info.rssi, state={"val":-84,"ack":true,"c":"script.js.devices.AllMyMi"}) javascript.0 2021-09-27 16:44:50.317 info script.js.devices.AllMyMi: setForeignState(id=javascript.0.MiHomeAll.362072163.info.model, state={"val":"zhimi.airpurifier.mb4","ack":true,"c":"script.js.devices.AllMyMi"}) javascript.0 2021-09-27 16:44:50.317 info script.js.devices.AllMyMi: setForeignState(id=javascript.0.MiHomeAll.362072163.info.did, state={"val":"362072163","ack":true,"c":"script.js.devices.AllMyMi"}) javascript.0 2021-09-27 16:44:50.316 info script.js.devices.AllMyMi: setForeignState(id=javascript.0.MiHomeAll.362072163.info.token, state={"val":"030a70e4c6f04cc8d5249efe963c0156","ack":true,"c":"script.js.devices.AllMyMi"}) javascript.0 2021-09-27 16:44:50.316 info script.js.devices.AllMyMi: setForeignState(id=javascript.0.MiHomeAll.362072163.info.localip, state={"val":"10.1.20.71","ack":true,"c":"script.js.devices.AllMyMi"}) javascript.0 2021-09-27 16:44:50.316 info script.js.devices.AllMyMi: setObject(id=javascript.0.MiHomeAll.blt.4.1754sfbvcgc00, obj={"type":"device","common":{"name":"Mi Electric Scooter 1S"},"native":{}}) javascript.0 2021-09-27 16:44:50.316 info script.js.devices.AllMyMi: setObject(id=javascript.0.MiHomeAll.320389496, obj={"type":"device","common":{"name":"Roborock S5 Max"},"native":{}}) javascript.0 2021-09-27 16:44:50.316 info script.js.devices.AllMyMi: setObject(id=javascript.0.MiHomeAll.362072163, obj={"type":"device","common":{"name":"Mi Air Purifier 3C"},"native":{}}) javascript.0 2021-09-27 16:44:50.316 info script.js.devices.AllMyMi: setObject(id=javascript.0.MiHomeAll, obj={"type":"channel","common":{"name":""},"native":{}}) javascript.0 2021-09-27 16:44:50.311 info script.js.devices.AllMyMi: Device Mi Air Purifier 3C is supported, creating DataPoints javascript.0 2021-09-27 16:44:50.311 info script.js.devices.AllMyMi: Now searching for supported Devices... javascript.0 2021-09-27 16:44:50.311 info script.js.devices.AllMyMi: Mi Electric Scooter 1S javascript.0 2021-09-27 16:44:50.311 info script.js.devices.AllMyMi: Roborock S5 Max javascript.0 2021-09-27 16:44:50.311 info script.js.devices.AllMyMi: Mi Air Purifier 3C javascript.0 2021-09-27 16:44:50.310 info script.js.devices.AllMyMi: Found 3 MiHome Devices, those are: javascript.0 2021-09-27 16:44:50.138 info script.js.devices.AllMyMi: Retrieving your in de registered MiHome Devices javascript.0 2021-09-27 16:44:50.138 info script.js.devices.AllMyMi: You are already logged in, login canceled javascript.0 2021-09-27 16:44:50.137 info script.js.devices.AllMyMi: registered 0 subscriptions and 0 schedules javascript.0 2021-09-27 16:44:50.136 info script.js.devices.AllMyMi: Starting AllMyMi V.0.2.25 javascript.0 2021-09-27 16:44:50.129 info Start javascript script.js.devices.AllMyMi javascript.0 2021-09-27 16:44:50.090 info script.js.devices.AllMyMi: clearInterval() => cleared javascript.0 2021-09-27 16:44:50.090 info script.js.devices.AllMyMi: adapterUnsubscribe(id=properties) javascript.0 2021-09-27 16:44:50.090 info Stop script script.js.devices.AllMyMi
Habe echt keine Ahnung warum und wieso. Der Server ist komplett neu eingerichtet und läuft als LXC auf Proxmox.
-
@ithiel sagte in [Vorlage] Xiaomi Airpurifier 3H u.a. inkl. Token auslesen.:
javascript.0 2021-09-27 16:44:50.319 info script.js.devices.AllMyMi: Now creating device for zhimi.airpurifier.mb4 / 362072163 / 10.1.20.71 / 030a70e4c6f04cc8d5249efe963c0156 / 10000
Ist das wirklich die IP des Gerätes? Is eigentlich das einzig auffällige. Zum Thema Sonderzeichen im Passwort, dem Skript ist das wumpe, aber offenbar irgendeinem Teil des "Unterbaus" nicht, hört man aber öfters (nicht bezogen auf dieses Skript), deswegen hatte ich es erwähnt. Thema Trigger, der macht natürlich nur was wenn Daten kommen, was ja bei Dir das Problem ist. Mir fällt nix ein worans liegen könnte, am Skript selber kaum, bei allen anderen läuft das Gerät ja mit dem Skript, im dümmsten Fall hängtn Server bei Xiaomi, da sind ja mehr Sachen im Spiel als nur das Skript.
-
@pittini habe den Objektbaum jetzt nochmal komplett entfernt, den Purifier nochmal auf Werkseinstellungen gesetzt und in die Xiaomi Cloud eingebunden. Er wird auch wieder richtig erkannt, auch mit neue IP-Adresse (die andere war übrigens richtig), aber es stehen weiterhin alle werte auf null. Wenn ich den Status verändere, z.B. Luftqualität, bleibt der Wert auf (null) obwohl die Daten aktualisiert werden (grünes aufleuchten). Naja ich werde es einfach mal ein bisschen laufen lassen, vielleicht ändert sich ja was. Danke für deine Hilfe
-
hat sich erledigt ich war zu ungeduldig...
-
Grüß Euch,
ich scheitere leider schon am Anfang! Die Zugangsdaten passen alle, leider gibts da den folgenden Fehler:
Ich hab trotz intensiver Suche im Forum nix gefunden
Das Skript startet soweit:9:55:56.255 info javascript.0 (10006) script.js.Zeug.AitPur: registered 0 subscriptions and 0 schedules 19:55:56.256 info javascript.0 (10006) script.js.Zeug.AitPur: You are already logged in, login canceled 19:55:56.256 info javascript.0 (10006) script.js.Zeug.AitPur: Retrieving your in de registered MiHome Devices
javascript.0 2021-10-23 19:56:01.304 error FetchError: network timeout at: https://de.api.io.mi.com/app/home/device_list at Timeout.<anonymous> (/opt/iobroker/node_modules/iobroker.javascript/node_modules/node-fetch/lib/index.js:1476:13) at listOnTimeout (internal/timers.js:554:17) at processTimers (internal/timers.js:497:7) javascript.0 2021-10-23 19:56:01.303 error Error: network timeout at: https://de.api.io.mi.com/app/home/device_list javascript.0 2021-10-23 19:56:01.302 error An error happened which is most likely from one of your scripts, but the originating script could not be detected.
-
@gukerl
Soll heißen? -
@thomas-braun Zu früh Enter gedrückt Jetzt passts aber!
-
ping de.api.io.mi.com PING de-api-io-mi-com-new-1496482937.eu-central-1.elb.amazonaws.com (3.120.13.91) 56(84) bytes of data. ^C --- de-api-io-mi-com-new-1496482937.eu-central-1.elb.amazonaws.com ping statistics --- 9 packets transmitted, 0 received, 100% packet loss, time 8328ms
Der Server ist wohl down.
-
@thomas-braun
Beim Aufruf im Browser bekomme ich was zurück
{"code":0,"message":"auth err"}
Und der Air 3H lässt sich zumindest über die App einwandfrei bedienen.
Aber vielen DANK für den Hinweis!!LG, Andi
-
Ah...daher weht der Wind. Ich hab nämlich seit gestern das gleiche Problem mit meinem AirPurifier 3H. Passwort geändert, mit Handy einloggen geht - nur die Daten per Skript über die API auslesen nicht (aktuell).
-
@kueppert Scheint aber ein begrenztes Problem zu sein, bei mir läufts wie gewohnt.
-
@pittini ein ping wie oben erwähnt, führt zwar ebenfalls zur Zeitüberschreitung, Script als auch Ansteuerung funktioniert jedoch problemlos
-
@crunchip Auch heute wieder selbige Fehlermeldung. Klarerweise bleibt das Skript wieder beim versuchten Einlesen der Devices hängen.
-
@gukerl ja die Meldung kommt zwischendrin hin und wieder mal, Script/Steuerung tut aber trotzdem was es soll.
-
Kann es vielleicht sein, dass es eine Art Geo Blocking gibt? In der Mi-Home App ist in der Ländereinstellung "Österreich" drinnen, keine Ahnung, ob da der DE Server verwendet werden kann oder ob die API von Ösi aus geblockt wird.
-
@gukerl sagte in [Vorlage] Xiaomi Airpurifier 3H u.a. inkl. Token auslesen.:
Kann es vielleicht sein, dass es eine Art Geo Blocking gibt? In der Mi-Home App ist in der Ländereinstellung "Österreich" drinnen, keine Ahnung, ob da der DE Server verwendet werden kann oder ob die API von Ösi aus geblockt wird.
Du hast DEine Geräte auf nem Ösi Server angemeldet und hast im Skript de drin? Wenn ja, is klar dasses nicht geht, im Skript muß immer der entsprechende Server eingetragen sein. Versuch mal obs mit dem Länderkürzel von Österreich geht, weil is in der node-mihome zwar niocht im Beispiel gelistet, kann aber trotzdem gehen. Weis nicht obs nen anderen User hier aus Ö gibt?
-
@pittini Hab ich schon gestestet, AT geht nicht. Finde das sowieso komisch, mein Staubi ist mit dem Adapter "mihome-vacuum" integriert, Server "Germany" und das haut alles perfekt hin. Auch in der Mi Home App am Handy, trotz Ländereinstellung "Österreich". Ich sehe den Robo V1 und auch die Air Purifier ganz normal in der App.
Naja, wenn's nicht geht, dann geht's eben nicht, auch kein Beinbruch.
Danke auf jeden Fall -
@pittini hab den Fehler gefunden - lag bei mir an piHole...der hat sich irgendwie verschluckt. Nachdem ich den internen DNS Server rausgenommen habe, tat es wieder
-
Update: ich habe den mihome-vacuum Adapter auch installiert, lustigerweise findet der Adapter zusätzlich zum Staubi auch den Air 3H, samt Token. Es sieht fast so aus, als wäre das Problem beim node-mihome zu suchen. Soweit ich festgestellt habe, liegt die Magie des Seitanaufruf https://de.api.io.mi.com/app/home/device_list beim nachzuinstallierendem node-mihome.
Irgendwas macht der Adapter mihome-vacuum anders als Skript über node-mihome.LG, Andi