NEWS
[Vorlage] Xiaomi Airpurifier 3H u.a. inkl. Token auslesen.
-
Re: [Vorlage] Xiaomi Airpurifier 3H u.a. inkl. Token auslesen.
@Pittini, danke für dieses großartige Skript. Habe jetzt zugeschlagen und mir einen Mi Smart Standing Fan 2 besorgt.
Ich bin der Installationsanleitung unter https://github.com/Pittini/iobroker-nodemihome gefolgt.
Leider bekomme ich das Script (welches ich AllMyMi genannt habe) nicht zum Laufen mit den folgenden Fehlermeldungen (die wohl mit dem log-in zu tun haben?):
16:53:05.572 info javascript.0 (2589) Stop script script.js.AllMyMi 16:53:06.458 info javascript.0 (2589) Start javascript script.js.AllMyMi 16:53:06.476 info javascript.0 (2589) script.js.AllMyMi: Starting AllMyMi V.0.2.23 16:53:06.484 info javascript.0 (2589) script.js.AllMyMi: registered 0 subscriptions and 0 schedules 16:53:07.806 info javascript.0 (2589) script.js.AllMyMi: You are already logged in, login canceled 16:53:07.806 info javascript.0 (2589) script.js.AllMyMi: Retrieving your in de registered MiHome Devices 16:53:07.807 error javascript.0 (2589) script.js.AllMyMi: Error: Pls login before make any request 16:53:07.807 error javascript.0 (2589) at Init (script.js.AllMyMi:797:50)
Als Benutzernamen habe ich die E-Mail Adresse meiner Registrierung bei der iOS App "Xiaomi Home" und das entsprechende Passwort im Skript hinterlegt. Über die iOS App "Xiaomi Home" läuft der Ventilator perfekt. Ein Neustart des Raspis, auf welchem ioBroker läuft, hat leider auch nicht geholfen. Ich bin auch nirgens parallel auf der Xiaomi Platform eingeloggt, so dass die Fehlermeldung "You are already logged in" Sinn machen würde. Habe es dann mit "Dummy" log-in Daten versucht, gleiche Fehlermeldung. Ich habe auch die V.0.2.18 des Skripts ohne Erfolg versucht (ähnliche Fehlermeldungen).
Sonstige Systeminformation:
JS-Controller version: (iobroker -v in SSH): 3.2.16
ioBroker.admin 4.2.1
Node JS: v12.22.1
NPM: 6.14.12
JS-Script Engine: 5.13
iobroker System: Raspi 4 mit viel RAM
zu steuernder Ventilator: Mi Smart Standing Fan 2 - dmaker.fan.p18Hat hier jemand eine Idee wo mein Fehler liegt?
PS sorry für das Cross-Posting, bin mit den Forumsfunktionen noch nicht so vertraut.
-
@fd sagte in [Vorlage] Xiaomi Airpurifier 3H u.a. inkl. Token auslesen.:
Ich bin auch nirgens parallel auf der Xiaomi Platform eingeloggt, so dass die Fehlermeldung "You are already logged in" Sinn machen würde.
Ein Login bleibt ne Zeitlang erhalten, auch wenn das Skript zwischenzeitlich gestoppt war, wennst es jetzt startest, versucht es sich ein zu loggen, obwohl der alte Login noch gültig ist, genau dann kommt diese Meldung, an sich also ok, und kein Problem, is quasi nur ne Info. Allerdings ists seltsam dass er danach sagt Du sollst Dich einloggen, das ist bisher noch nie aufgetreten. Den richtigen Server haste gewählt im Skript? Logindaten 100% korrekt? wenn beides ja, hab ich grad keine Idee worans liegen könnte.
Login gleichzeitig mit App und Skript geht normalerweise auch, daran liegts sicher nich, das mach ich zum testen öfters mal um zu sehen ob die geänderten Werte im Skript ankommen etc. -
@pittini Danke sehr für die schnelle Anwort.
Ich bin jetzt einen großen Schritt weiter: nachdem ich die Ländereinstellung in der Xiaomi App und im Skript von Deutschland auf Singapur geändert habe (China hat für mich nicht funktioniert, da ich den Ventilator über die App nicht finden konnte) und den Ventilator neu angelernt, klappt der Log-in nun ohne weiteres.
Der Ventilator wird auch in ioBroker unter Objekte / Javascript angelegt und unter Info finde ich viele Daten zu IP Adresse usw. Leider bleiben jedoch die Fan-Einstellungen leer und Eingaben meinerseits über die Dropdowns werden nicht angenommen.
Das Skipt crasht sofort nach dem Start mit dem folgenden Log (ich habe einige spezifische Daten durch XXX ersetzt, sie scheinen aber korrekt zu sein.
10:37:05.651 info javascript.0 (2053) Stop script script.js.AllMyMi 10:37:06.971 info javascript.0 (2053) Start javascript script.js.AllMyMi 10:37:07.027 info javascript.0 (2053) script.js.AllMyMi: Starting AllMyMi V.0.2.23 10:37:07.036 info javascript.0 (2053) script.js.AllMyMi: registered 0 subscriptions and 0 schedules 10:37:07.037 info javascript.0 (2053) script.js.AllMyMi: You are already logged in, login canceled 10:37:07.038 info javascript.0 (2053) script.js.AllMyMi: Retrieving your in sg registered MiHome Devices 10:37:07.846 info javascript.0 (2053) script.js.AllMyMi: Found 1 MiHome Devices, those are: 10:37:07.847 info javascript.0 (2053) script.js.AllMyMi: Mi Smart Standing Fan 2 10:37:07.848 info javascript.0 (2053) script.js.AllMyMi: Now searching for supported Devices... 10:37:07.849 info javascript.0 (2053) script.js.AllMyMi: Device Mi Smart Standing Fan 2 is supported, creating DataPoints 10:37:07.870 info javascript.0 (2053) script.js.AllMyMi: Now creating device for dmaker.fan.p18 / XXXXXXXXXXXXXX / XXXXXXXXX / XXXXXXXXXXXXX / 10000 10:37:07.872 info javascript.0 (2053) script.js.AllMyMi: Created device {"_events":{},"_eventsCount":0,"_maxListeners":100,"id":"XXXXX","address":"XXXX","token":"XXXXX","protocol":"local","refresh":10000,"_properties":{},"_propertiesToMonitor":["fan:on","fan:mode","fan:fan-level","fan:horizontal-swing","fan:horizontal-angle","fan:status","alarm:alarm","motor-controller:motor-control","physical-controls-locked:physical-controls-locked","off-delay-time:off-delay-time"],"_miotSpec":null,"_miotSpecType":"urn:miot-spec-v2:device:fan:0000A005:dmaker-p18:1","model":"dmaker.fan.p18","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":"dmaker.fan.p18","description":"Mi Smart Standing Fan 2","setter":{},"common":[{"name":"fan.on","type":"boolean","role":"switch","read":true,"write":true},{"name":"fan.mode","type":"number","role":"switch","read":true,"write":true,"min":0,"max":1,"states":{"0":"Straight Wind","1":"Natural Wind"}},{"name":"fan.fan-level","type":"number","role":"switch","read":true,"write":true,"min":1,"max":4,"states":{"1":"Slow","2":"Middle","3":"High","4":"Turbo"}},{"name":"fan.horizontal-swing","type":"boolean","role":"switch","read":true,"write":true},{"name":"fan.horizontal-angle","type":"number","role":"switch","read":true,"write":true,"min":30,"max":140,"unit":"°","states":{"30":"30°","60":"60°","90":"90°","120":"120°","140":"140°"}},{"name":"fan.status","type":"number","role":"indicator","read":true,"write":false,"min":1,"max":100},{"name":"alarm.alarm","type":"boolean","role":"switch","read":true,"write":true},{"name":"motor-controller.motor-control","type":"number","role":"switch","read":false,"write":true,"min":0,"max":2,"states":{"0":"None","1":"Left","2":"Right"}},{"name":"physical-controls-locked.physical-controls-locked","type":"boolean","role":"switch","read":true,"write":true,"min":false,"max":true},{"name":"off-delay-time.off-delay-time","type":"number","role":"switch","read":true,"write":true,"min":0,"max":480,"unit":"m"}]},"firstrun":true} now fetching data 10:37:08.240 error javascript.0 (2053) script.js.AllMyMi: TypeError: Cannot read property 'forEach' of undefined 10:37:08.242 error javascript.0 (2053) at CreateDevices (script.js.AllMyMi:845:17) 10:37:08.243 error javascript.0 (2053) at main (script.js.AllMyMi:765:5)
Der Raspi wurde ein Paar mal neu gestartet um dies als Fehlerquelle auszuschließen. Irgendeine Idee?
-
Hi allerseits,
wer alles hat die 0.2.24 laufen und KEINE Probleme? Und wer hat Probleme in denen die Meldung "Cannot read property 'rssi' of undefined" vorkommt? -
@pittini hab gerade mal die version drauf gemacht, erhalte jedoch
14:06:45.546 info javascript.0 (4954) Stop script script.js.MiHome 14:06:45.614 info javascript.0 (4954) Start javascript script.js.MiHome 14:06:45.619 info javascript.0 (4954) script.js.MiHome: Starting AllMyMi V.0.2.24 14:06:45.622 info javascript.0 (4954) script.js.MiHome: registered 0 subscriptions and 0 schedules 14:06:45.622 info javascript.0 (4954) script.js.MiHome: You are already logged in, login canceled 14:06:45.623 info javascript.0 (4954) script.js.MiHome: Retrieving your in de registered MiHome Devices 14:06:45.730 info javascript.0 (4954) script.js.MiHome: Found 3 MiHome Devices, those are: 14:06:45.731 info javascript.0 (4954) script.js.MiHome: Mi Air Purifier 3/3H 14:06:45.732 error javascript.0 (4954) script.js.MiHome: ReferenceError: praefix0 is not defined 14:06:45.734 error javascript.0 (4954) at PrepareGenericDps (script.js.MiHome:704:33) 14:06:45.734 error javascript.0 (4954) at Init (script.js.MiHome:770:15)
edit selber gefunden kommt davon wenn man immer nur halbe sachen hin und her kopiert
ja die Meldung kommt bei mir
javascript.0 (4954) script.js.MiHome: TypeError: Cannot read property 'rssi' of undefined 14:10:06.631 error javascript.0 (4954) at RefreshGenericDpsTicker (script.js.MiHome:860:37)
javascript.0 2021-08-12 14:10:06.632 error at processTicksAndRejections (internal/process/task_queues.js:95:5) javascript.0 2021-08-12 14:10:06.632 error at runMicrotasks (<anonymous>) javascript.0 2021-08-12 14:10:06.631 error at RefreshGenericDpsTicker (script.js.MiHome:860:37) javascript.0 2021-08-12 14:10:06.629 error script.js.MiHome: TypeError: Cannot read property 'rssi' of undefined
-
@crunchip Ok, dankeschön. Es gibt bereits nen Fix (ohne neue Version), damit sollte es weg sein, pls mal testen.
-
Neue Version getestet, läuft bisher.
Keine Fehler im Log.Wirklich klasse wie Du das hier supportest und auf Github!
Alle Daumen hoch. -
@pittini kam gerade erst dazu, super, läuft
-
bei mir auch. Hab den 3C und die js-Datei selbst in den entsprechenden Ordner kopiert ( zhimi.airpurifier.mb4 ). Die hatte gefehlt. Mal schauen ob ich weiterhin Fehlermessages erhalte. Wenn ja, poste ich die hier mal
Danke für das tolle Skript -
@pittini weiss nicht ob das schon mal gefragt/gemeldet wurde, bzw ob das nur hin und wieder vorkommt
javascript.0 2021-08-13 10:24:13.351 error FetchError: request to https://de.api.io.mi.com/app/home/device_list failed, reason: getaddrinfo ENOTFOUND de.api.io.mi.com at ClientRequest.<anonymous> (/opt/iobroker/node_modules/iobroker.javascript/node_modules/node-fetch/lib/index.js:1461:11) at ClientRequest.emit (events.js:412:35) at ClientRequest.emit (domain.js:470:12) at TLSSocket.socketErrorListener (_http_client.js:475:9) at TLSSocket.emit (events.js:400:28) at TLSSocket.emit (domain.js:470:12) at emitErrorNT (internal/streams/destroy.js:106:8) at emitErrorCloseNT (internal/streams/destroy.js:74:3) at processTicksAndRejections (internal/process/task_queues.js:82:21) javascript.0 2021-08-13 10:24:13.350 error Error: request to https://de.api.io.mi.com/app/home/device_list failed, reason: getaddrinfo ENOTFOUND de.api.io.mi.com javascript.0 2021-08-13 10:24:13.348 error An error happened which is most likely from one of your scripts, but the originating script could not be detected.
-
@crunchip diese Fehlermeldung meinte ich ^^
-
@crunchip sagte in [Vorlage] Xiaomi Airpurifier 3H u.a. inkl. Token auslesen.:
@pittini weiss nicht ob das schon mal gefragt/gemeldet wurde, bzw ob das nur hin und wieder vorkommt
javascript.0 2021-08-13 10:24:13.351 error FetchError: request to https://de.api.io.mi.com/app/home/device_list failed, reason: getaddrinfo ENOTFOUND de.api.io.mi.com at ClientRequest.<anonymous> (/opt/iobroker/node_modules/iobroker.javascript/node_modules/node-fetch/lib/index.js:1461:11) at ClientRequest.emit (events.js:412:35) at ClientRequest.emit (domain.js:470:12) at TLSSocket.socketErrorListener (_http_client.js:475:9) at TLSSocket.emit (events.js:400:28) at TLSSocket.emit (domain.js:470:12) at emitErrorNT (internal/streams/destroy.js:106:8) at emitErrorCloseNT (internal/streams/destroy.js:74:3) at processTicksAndRejections (internal/process/task_queues.js:82:21) javascript.0 2021-08-13 10:24:13.350 error Error: request to https://de.api.io.mi.com/app/home/device_list failed, reason: getaddrinfo ENOTFOUND de.api.io.mi.com javascript.0 2021-08-13 10:24:13.348 error An error happened which is most likely from one of your scripts, but the originating script could not be detected.
Sollte nur gelegentlich vorkommen, die devicelist wurde in den alten Versionen nur bei Skriptstart abgefragt, dadurch fiel das nich auf, wird jetzt aber alle 10 Sekunden abgefragt um rssi und isOnline aktuell zu halten und deswegen kann das eher mal auftreten. Mal beobachten, wenn da zu viele Fehler kommen muß ich mir was einfallen lassen.
-
Jetzt habe ich leider doch wieder nen Problem.
Diesmal ist es der Smart Standing Fan Pro (dmaker.fan.p15)
Der Datenpunkt on ändert sich zwar in true/false, wenn man im IOT AN/AUS für Alexa eingibt, aber es passiert nichts.
Schalte ich den Ventilator per App aus, dann geht er auch aus, aber der Datenpunkt ändert sich nicht.True obwohl er aus ist.
Mit dem 0.2.23 Script geht es.
-
@haselchen sagte in [Vorlage] Xiaomi Airpurifier 3H u.a. inkl. Token auslesen.:
Mit dem 0.2.23 Script geht es.
Das is aber seltsam, denn daran wurde absolut nix geändert. Der einzige Unterschied von der .23 zur .24 is eine Funktion die rssi und IsOnline refresht. Kannst ja mal guggen obs geht wenn Du die in Zeile 841 auskommentierst, dann wird die Funktion nimmer aufgerufen und Du hast faktisch die .23
-
Dann kann ich ja auch die 23er behalten
Ich hab ja immer 2 Skripte.
Eines Produktiv (23er) und eines als Test (24er).
Ich probier einfach mit der 24er Version mal rum. -
@haselchen sagte in [Vorlage] Xiaomi Airpurifier 3H u.a. inkl. Token auslesen.:
Dann kann ich ja auch die 23er behalten
Ja klar, aber wir würden dann wissen ob die neue Funktion der .24 das Problem auslöst.
-
Habs hin und herprobiert. Auskommentiert und normal. Mit der 24er kann ich den Fan nicht mehr steuern.
Über Alexa nicht und manuell über den Datenpunkt nicht. -
@haselchen sagte in [Vorlage] Xiaomi Airpurifier 3H u.a. inkl. Token auslesen.:
Habs hin und herprobiert. Auskommentiert und normal. Mit der 24er kann ich den Fan nicht mehr steuern.
Über Alexa nicht und manuell über den Datenpunkt nicht.Das is ja noch seltsamer, wenn die .24 auch mit der auskommentierten Funktion den Fan nich mehr steuert (denn dann ist quasi die .23), vorallem weil ich den auch hab und alles läuft wie es soll. Hast schon mal das logging aktiviert und geguggt ob das was kommt?
-
Ich dreh nochmal alles links.
Das Smart Home nimmt langsam Überhand -
Vermelde Erfolg auf ganzer Linie.
Habe hier und da am System bisschen optimiert.
Am Ende Iobroker neu gestartet und zack, ich kann per Stimme wieder den Ventilator steuern.
Die 24er Version kann ich hiermit offiziell abnicken