Pittini / iobroker-nodemihome

Steuerung von bisher nicht unterstützten Xiaomi Geräten in Iobroker via node-mihome
MIT License
27 stars 15 forks source link

fault-Value warning with air purifier 3C #13

Closed Darkexy closed 3 years ago

Darkexy commented 3 years ago

Hi,

leider krieg ich inzwischen bei jedem Neustart diese Warnung im log. Das Skiprt läuft trotzdem, aber dachte ich melde es mal, da ich den Luftreingier 3C am Laufen hab.

2021-02-21 13:28:30.161 - warn: javascript.0 (21946) You are assigning a string to the state "javascript.0.MiHomeAll.321765876.air-purifier.fault" which expects a number. Please fix your code to use a number or change the state type to string. This warning might become an error in future versions. 2021-02-21 13:28:30.168 - warn: javascript.0 (21946) at setState (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1358:20) 2021-02-21 13:28:30.170 - warn: javascript.0 (21946) at RefreshDps (script.js.common.AllMyMi:692:45) 2021-02-21 13:28:30.170 - warn: javascript.0 (21946) at module.exports. (script.js.common.AllMyMi:645:21) 2021-02-21 13:28:30.171 - warn: javascript.0 (21946) at module.exports.emit (events.js:314:20) 2021-02-21 13:28:30.171 - warn: javascript.0 (21946) at module.exports.loadProperties (/opt/iobroker/node_modules/iobroker.javascript/node_modules/node-mihome/lib/device-miio.js:107:12) 2021-02-21 13:28:30.172 - warn: javascript.0 (21946) at Timeout._onTimeout (/opt/iobroker/node_modules/iobroker.javascript/node_modules/node-mihome/lib/device-miio.js:73:9)

Pittini commented 3 years ago

Ok, lass uns mal was versuchen. Zuerst mal den ganzen Channel vom 3C löschen, dann ändere bitte mal Zeile 215 von: { name: "air-purifier.fault", type: "number", read: true, write: false, min: 0, max: 5, states: { 0: "No faults", 1: "m1_run", 2: "m1_stuck", 3: "no_sensor", 4: "error_hum", 5: "error_temp" } },

zu { name: "air-purifier.fault", type: "string", read: true, write: false, }, Beim Skriptstart nach dem speichern der Änderung sollte der gelöschte Zweig wiederhergestellt werden und nicht mehr maulen. Bitte berichten.

Darkexy commented 3 years ago

Habs geändert, wie vorgeschlagen. Er mault nimmer. Es wurde nun als String angelegt.

Aber eine andere Frage. Im Gegensatz zu meinem 3H, bei dem es Problemlos funktioniert und der No faults(0), steht bei meinem 3C nur null im State. Könnte es sein, dass der 3C den fault Value gar nicht hat oder das statt null 0 gesetzt werden müsste?

Pittini commented 3 years ago

Kann sein, kann nicht sein. Ich hab nicht jedes Gerät ums testen zu können. Aber @Wildbill-Z hat das Teil getestet, siehe hier: https://github.com/Pittini/iobroker-nodemihome/issues/4 . Evtl. kann er Licht ins dunkel bringen, ansonsten nehm ich den DP einfach raus.

Wildbill-Z commented 3 years ago

Hi, bei mir hat der Datenpunkt fault vom 3c auch den Wert null. Ich hatte aber nie Fehlermeldungen diesbezüglich im Log. Bei mir ist der Datenpunkt vom format "number" und type "mixed". JS-Adapter ist auf 3.2.16 (letzter stable). Tatsächlich scheint der Datenpunkt aber korrekterweise vom Typ string zu sein: {"iid":2,"type":"urn:miot-spec-v2:property:fault:00000009:zhimi-mb4:1","description":"Device Fault","format":"string","access":["read","notify"],"unit":"none"} Ist mir damals wohl entgangen und mangels bisheriger Fehlermeldung seitens des purifier nie aufgefallen. @Darkexy Hattes Du die Fehlermeldung im Log, als der purifier einen Fehler gemeldet hat oder generell?

Gruss, Jürgen

Darkexy commented 3 years ago

@Wildbill-Z Ich hab die Warnung bekommen, wenn ich das Skript neugestartet hab.

Wildbill-Z commented 3 years ago

@Darkexy Das ist komisch. Welche Version vom JS-Adapter hast Du? Ich bin schon immer auf dem aktuellen Stable-Zweig. Hast Du vielleicht latest und bis auf einer späteren Beta, welche da irgendetwas anders macht? Hat Dein air purifier momentan einen Fehler, den er gerne melden würde?

Gruss, Jürgen

Darkexy commented 3 years ago

@Wildbill-Z Ich hab den JS-Controller auf 3.1.6 im Moment und Node.js auf v12.20.1. Also in der Xiaomi-App zeigt er nichts als Fehler an.

Wildbill-Z commented 3 years ago

@Darkexy @Pittini Dem JSON nach müsste die Meldung fault unter services:1:1 ja vom Typ string sein. Vielleicht kommt da wirklich immer "null" solange sich kein Fehler ergibt. Ich habe hier kein anderes Xiaomi-Gerät welches hier anscheinend einen String meldet. Der Pro H und der 3H geben beide 0 zurück, wenn kein Fehler anliegt. Ich habe parallel noch eine FHEM-Installation und dort gerade auch nochmal geschaut. Dort stehen bei den Pro H und 3H auch "none" bei error, es kommt also ein Wert zurück, während beim 3C dort auch "null" steht. Entweder kommt also vom 3C ein leerer String zurück, wenn es keinen Fehler gibt und er bringt dann nur einen Wert bei Fehlern, oder der Datenpunkt wird doch nicht verwendet. Keine Ahnung, wie wir das weiter testen könnten. Nichtsdestotrotz scheint aber string das korrekte Format zu sein.

Gruss, Jürgen

Pittini commented 3 years ago

Ich denke tatsächlich dass da nen leerer String kommt, weil wenns den DP nicht gäbe würde ja die node-mihome schon streiken. Ich lass es also wie es ist und mach hier dicht. Danke für die Hilfe.