NEWS
[Vorlage] Xiaomi Airpurifier 3H u.a. inkl. Token auslesen.
-
Am besten liest du dich beim Thema ACLs mal bei meinem Freund Stefan Kania ein, der hat das mal ganz gut auseinandergedröselt:
Vermutlich hast du das nämlich nicht beachtet:
Wenn Sie auf einem Eintrag im Dateisystem – egal ob bei einem Verzeichnis oder einer Datei – eine ACL gesetzt haben, dürfen Sie von dem Moment an keine Berechtigungen mehr mit dem Kommando "chmod" ändern.
-
@thomas-braun sagte in [Vorlage] Xiaomi Airpurifier 3H u.a. inkl. Token auslesen.:
...has been written without ack-flag with value...
Das war nochn kleiner Bug im Skript, wird in der nächsten Version behoben sein und hat nix mit Deinem Problem zu tun. Wollt ich nur erwähnt haben dass die Fehlersuchen nich in ne falsche Richtung geht.
-
@pittini @thomas-braun Vielen Dank an euch. Ich werde mich in die Rechtevergabe jetzt mal intensiv einlesen und dann wird's sicher funktionieren
-
Mal 'ne ganz doofe Frage von mir: Warum lädst du das skript nicht direkt an der richtigen Stelle herunter?
Ungefähr so:echad@chet:~ $ cd /opt/iobroker/node_modules/iobroker.javascript/node_modules/node-mihome/lib/devices/ echad@chet:/opt/iobroker/node_modules/iobroker.javascript/node_modules/node-mihome/lib/devices $ sudo -u iobroker wget https://github.com/Pittini/iobroker-nodemihome/blob/main/DefinitionfilesForNode-Mihome/zhimi.airpurifier.mb3.js
Dann passen auch die Rechte, da per ACL vergeben.
-
@thomas-braun Es werden weiterhin keine Daten geladen.
Ich vermute, dass mein System irgendwie stark vermurkst ist. Evtl. auch durch OMV5, das ja eine eigene Rechtevergabe vornimmt.
Ich werde den Pi demnächst neu aufsetzen und OMV weg lassen.
So habe ich jetzt aber zumindest etwas mehr über Rechte und Benutzer gelernt.
@Pittini Auch wenn schonmal hier im Verlauf geschrieben: Sowas als Adapter für iobroker wäre weltklasse. -
@marc12345 sagte in [Vorlage] Xiaomi Airpurifier 3H u.a. inkl. Token auslesen.:
Auch wenn schonmal hier im Verlauf geschrieben: Sowas als Adapter für iobroker wäre weltklasse.
Und wie auch schon mal erwähnt, es liegt ja nicht am Willen, sondern ich kanns einfach nicht. Darf gern wer den Code dafür nutzen nenn Adapter draus zu machen ders kann.
-
@pittini Leider eine abschliessende Misserfolgsmeldung:
Habe jetzt ohne irgendwelche Spielereien auf einem Raspi 3b iobroker neu installiert. Die Rechte sind genauso wie bei @thomas-braun. Nichts mit ACL. Ergebnis: Es werden weiterhin keine Daten geladen. -
Er lief bei mir 3 Tage, aber auch trotz restart des Scripts bekomm ich keine Daten mehr von meinen Devices:
Das hier ist der Log nach Script neustart.javascript.0 2021-05-27 14:23:04.166 error at processTimers (internal/timers.js:497:7) javascript.0 2021-05-27 14:23:04.166 error at listOnTimeout (internal/timers.js:554:17) javascript.0 2021-05-27 14:23:04.166 error at Timeout.<anonymous> (/opt/iobroker/node_modules/iobroker.javascript/node_modules/node-fetch/lib/index.js:1454:13) javascript.0 2021-05-27 14:23:04.166 error (10268) FetchError: network timeout at: https://de.api.io.mi.com/app/home/device_list javascript.0 2021-05-27 14:23:04.166 error (10268) Error: network timeout at: https://de.api.io.mi.com/app/home/device_list javascript.0 2021-05-27 14:23:04.164 error (10268) An error happened which is most likely from one of your scripts, but the originating script could not be detected.
-
@marc12345 sagte in [Vorlage] Xiaomi Airpurifier 3H u.a. inkl. Token auslesen.:
Die Rechte sind genauso wie bei @thomas-braun. Nichts mit ACL.
Meine Dateien sind doch mit ACLs versehen.
-
Dein Problem scheint eher am Netzwerk zu liegen als am Script.
Firewall?
Pihole? -
@haselchen gell, liest sich so. Hab ich mich auch gewundert. Aber tatsächlich hab ich weder was am Netzwerk gemacht, noch wüsste ich wie ich iobroker Firewall aktiviere/ändere.
Wenn ich die URL von Hand öffne bekomme ich nur einen Authentication Error:
{"code":0,"message":"auth err"}
-
Moin, also das Skript läuft soweit ja immer stabil und gut. Aber wie rechne ich die Nutzungszeit vernünftig um das ich Tage und dir übrigen Stunden habe und nicht nur die Stundenanzahl?
-
Aber das ganze ist tatsächlich kein Hexenwerk.
In dem Script die Anmeldedaten der Mi Home App eingeben. Die .js Dateien in den Ordner kopieren. node-mihone eintragen im Java Script Adapter. Mindestens Nodejs12 und los geht's. -
@haselchen eija klar. Es ging ja auch 3 Tage Aber dann hats einfach aufgehört. Neustart Script und sogar iobroker helfen nicht.
-
Einfach so hört nichts auf
Wirkung hat immer eine Ursache vorher.
Hast du was upgedatet oder das System eventuell automatisch?
Denk nochmal nach. -
@haselchen Ja, IoT Assistants und Telegramm. Ansonsten viele Änderungen an anderen Scripten, die nichts mit Purifier zu tun hatten.
Beim Purifier Script hab ich nur das Logging von true auf false gesetzt.
Habe nun auch alle Definitionfiles nochmal ersetzt. Hilft auch nicht.
Jetzt sehe ich das im Log
javascript.0 2021-05-27 21:59:56.453 warn (7374) at Timeout._onTimeout (/opt/iobroker/node_modules/iobroker.javascript/node_modules/node-mihome/lib/device-miio.js:73:9) javascript.0 2021-05-27 21:59:56.453 warn (7374) at module.exports.loadProperties (/opt/iobroker/node_modules/iobroker.javascript/node_modules/node-mihome/lib/device-miio.js:107:12) javascript.0 2021-05-27 21:59:56.453 warn (7374) at module.exports.EventEmitter.emit (domain.js:483:12) javascript.0 2021-05-27 21:59:56.453 warn (7374) at module.exports.emit (events.js:314:20) javascript.0 2021-05-27 21:59:56.452 warn (7374) at module.exports.<anonymous> (script.js.General.Purifier_2:746:21) javascript.0 2021-05-27 21:59:56.452 warn (7374) at RefreshDps (script.js.General.Purifier_2:793:45) javascript.0 2021-05-27 21:59:56.452 warn (7374) at setState (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1427:20) javascript.0 2021-05-27 21:59:56.450 warn (7374) You are assigning a string to the state "javascript.0.MiHomeAll.130167928.ct" which expects a number. Please fix your code to use a number or change the state type to string. This warning might javascript.0 2021-05-27 21:59:56.450 warn (7374) at Timeout._onTimeout (/opt/iobroker/node_modules/iobroker.javascript/node_modules/node-mihome/lib/device-miio.js:73:9) javascript.0 2021-05-27 21:59:56.450 warn (7374) at module.exports.loadProperties (/opt/iobroker/node_modules/iobroker.javascript/node_modules/node-mihome/lib/device-miio.js:107:12) javascript.0 2021-05-27 21:59:56.450 warn (7374) at module.exports.EventEmitter.emit (domain.js:483:12) javascript.0 2021-05-27 21:59:56.449 warn (7374) at module.exports.emit (events.js:314:20) javascript.0 2021-05-27 21:59:56.449 warn (7374) at module.exports.<anonymous> (script.js.General.Purifier_2:746:21) javascript.0 2021-05-27 21:59:56.449 warn (7374) at RefreshDps (script.js.General.Purifier_2:793:45) javascript.0 2021-05-27 21:59:56.448 warn (7374) at setState (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1427:20) javascript.0 2021-05-27 21:59:56.447 warn (7374) You are assigning a string to the state "javascript.0.MiHomeAll.130167928.color_mode" which expects a number. Please fix your code to use a number or change the state type to string. This warni javascript.0 2021-05-27 21:59:56.447 warn (7374) at Timeout._onTimeout (/opt/iobroker/node_modules/iobroker.javascript/node_modules/node-mihome/lib/device-miio.js:73:9) javascript.0 2021-05-27 21:59:56.447 warn (7374) at module.exports.loadProperties (/opt/iobroker/node_modules/iobroker.javascript/node_modules/node-mihome/lib/device-miio.js:107:12) javascript.0 2021-05-27 21:59:56.446 warn (7374) at module.exports.EventEmitter.emit (domain.js:483:12) javascript.0 2021-05-27 21:59:56.446 warn (7374) at module.exports.emit (events.js:314:20) javascript.0 2021-05-27 21:59:56.446 warn (7374) at module.exports.<anonymous> (script.js.General.Purifier_2:746:21) javascript.0 2021-05-27 21:59:56.445 warn (7374) at RefreshDps (script.js.General.Purifier_2:793:45) javascript.0 2021-05-27 21:59:56.445 warn (7374) at setState (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1427:20) javascript.0 2021-05-27 21:59:56.444 warn (7374) You are assigning a string to the state "javascript.0.MiHomeAll.130167928.rgb" which expects a number. Please fix your code to use a number or change the state type to string. This warning migh javascript.0 2021-05-27 21:59:56.443 warn (7374) at Timeout._onTimeout (/opt/iobroker/node_modules/iobroker.javascript/node_modules/node-mihome/lib/device-miio.js:73:9) javascript.0 2021-05-27 21:59:56.443 warn (7374) at module.exports.loadProperties (/opt/iobroker/node_modules/iobroker.javascript/node_modules/node-mihome/lib/device-miio.js:107:12) javascript.0 2021-05-27 21:59:56.443 warn (7374) at module.exports.EventEmitter.emit (domain.js:483:12) javascript.0 2021-05-27 21:59:56.443 warn (7374) at module.exports.emit (events.js:314:20) javascript.0 2021-05-27 21:59:56.442 warn (7374) at module.exports.<anonymous> (script.js.General.Purifier_2:746:21) javascript.0 2021-05-27 21:59:56.442 warn (7374) at RefreshDps (script.js.General.Purifier_2:793:45) javascript.0 2021-05-27 21:59:56.441 warn (7374) at setState (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1427:20) javascript.0 2021-05-27 21:59:56.428 warn (7374) You are assigning a string to the state "javascript.0.MiHomeAll.130167928.bright" which expects a number. Please fix your code to use a number or change the state type to string. This warning m
-
Das was Du machen musst steht doch da?
Klar und deutlich . -
@haselchen meinst du
You are assigning a string to the state "javascript.0.MiHomeAll.130167928.bright" which expects a number. Please fix your code to use a number or change the state type to string. This warning m
Dann erklärt sich mir aber nicht wo ich das mache. Ich steuer Yeelight über den dazugehörigen Adapter und nicht über MiHomeAll.
Ich kann mir vorstellen, dass das Script versucht den Wert von den Yeelights auszulesen, den ich über ein anderes Script schreibe. Da aber die Yeelight in dem Fall auch ein String versteht, sollte man dies im MiHomeAll nicht auf eine Number beschränkenhabe auch nochmal geguckt. Also die Brightness schreibe ich auch mit einer Zahl:
-
In dem Script sind doch die verschiedenen Geräte mit Datenpunkten. Musste einfach die Datenpunkte dem Gerät anpassen.
Du hast leider den ganzen Aufbau nicht verstanden
-
@haselchen Ich glaube eher wir reden aneinander vorbei.
Also ich nutze das Script nur für den Purifier. Leider lädt es noch die Datenpunkte von anderen fähigen Geräten aus meinem Account, welche ich allerdings schon früher mittels spezieller Adapter steuerte.
Diese Adapter steuern Ihre eigens angelegten Datenpunkte.
Ich kann mir vorstellen, dass das Script nun die Datenpunkte ja direkt am Gerät ausliest und dann die Werte nicht versteht die die Adapter vorher geschrieben hatten.