NEWS
[Vorlage] Xiaomi Airpurifier 3H u.a. inkl. Token auslesen.
-
@esche sagte in [Vorlage] Xiaomi Airpurifier 3H u.a. inkl. Token auslesen.:
Hallo zusammen,
erstmal vielen Dank für das Script @Pittini . Ich habe es mal mit meinem 3H getestet und funktioniert soweit echt gut.
Was mir aber sofort aufgefallen ist, ist die Verwendung von "setObject" im Script.
Dies hatte ich bisher im JS-Adapter nicht aktiviert, da dies ja auch aus "Sicherheitsgründen" standardmäßig deaktiviert ist.Ja, das sollte ich evtl. mal in der Doku dazu schreiben.
Wäre es vielleicht sinnvoll/möglich dies in der Form nicht zu verwenden?
Wenn Du einen anderen/besseren Weg kennst aus einem Ordner der beim Datenpunktanlegen miterstellt wird, einen Channel oder Device zu machen und nen Namen zu geben....bitte ich höre.Wenn ich die Object-Schemabeschreibung richtig verstehe, ist diese Funktion auch nicht für solche Scripte gedacht und "eigentlich" den Adaptern vorbehalten.
https://www.iobroker.net/#de/documentation/dev/objectsschema.md#ObjekttypenEs gibt tatsächlich Funktionen welche Adaptern vorbehalten sind. Diese sind auch nur in Adaptern zugänglich. setObjekt is zugänglich also legitim zu verwenden und auch nötig einzusetzen.
-
@pittini said in [Vorlage] Xiaomi Airpurifier 3H u.a. inkl. Token auslesen.:
….auch nötig einzusetzen.
Darf ich fragen warum es unbedingt nötig ist? Warum muss das Objekt unbedingt ein Channel/Device sein und kein State?
-
@esche Die Antwort steht in dem von Dir propagierten Link https://www.iobroker.net/#de/documentation/dev/objectsschema.md#Objekttypen
Objekttypen
state - Datenpunkt. Eltern sollten vom Typ Kanal, Gerät, Instanz oder Host sein
channel - Objekt zum Gruppieren eines oder mehrerer Datenpunkte. Eltern sollten Gerät sein.
device - Objekt zum Gruppieren eines oder mehrerer Kanäle oder Datenpunkte. Sollte außer dem Adapterinstanz-Namespace kein übergeordnetes Element haben. -
Moin!
Habe leider auch das Problem auf meinem Hauptsystem mi-home zum laufen zu bekommen...
- mi-home im JavaScript Adapter eingefügt, Script gestartet
-> Fehler im Log:
javascript.0 2021-02-15 10:20:24.169 error (179) script.js._Testing.mihome: Error: Cannot find module '/usr/local/iobroker/node_modules/iobroker.javascript/lib/../../node-mihome'
mi-home liegt bei mir allerdings unter:
'/usr/local/iobroker/node_modules/iobroker.javascript/node_modules/node-mihomeKann man den Pfad umbiegen?
Danke Euch!
Mr.Lee -
Nachtrag:
Wenn ich den pfad im require auf:
const mihome = require('iobroker.javascript/node_modules/node-mihome/');
dann kommt im log:
javascript.2 2021-02-15 10:40:12.688 error (7570) at Object.<anonymous> (/usr/local/iobroker/node_modules/iobroker.javascript/node_modules/node-mihome/lib/models.js:6:54) javascript.2 2021-02-15 10:40:12.688 error (7570) at Array.forEach (<anonymous>:null:null) javascript.2 2021-02-15 10:40:12.688 error (7570) at glob.sync.forEach.modelPath (/usr/local/iobroker/node_modules/iobroker.javascript/node_modules/node-mihome/lib/models.js:9:23) javascript.2 2021-02-15 10:40:12.687 error (7570) at require (internal/modules/cjs/helpers.js:25:18) javascript.2 2021-02-15 10:40:12.687 error (7570) at Module.require (internal/modules/cjs/loader.js:692:17) javascript.2 2021-02-15 10:40:12.687 error (7570) at Function.Module._load (internal/modules/cjs/loader.js:585:3) javascript.2 2021-02-15 10:40:12.686 error (7570) at tryModuleLoad (internal/modules/cjs/loader.js:593:12) javascript.2 2021-02-15 10:40:12.686 error (7570) at Module.load (internal/modules/cjs/loader.js:653:32) javascript.2 2021-02-15 10:40:12.686 error (7570) at Object.Module._extensions..js (internal/modules/cjs/loader.js:789:10) javascript.2 2021-02-15 10:40:12.685 error (7570) script.js._Testing.mihome: /usr/local/iobroker/node_modules/iobroker.javascript/node_modules/node-mihome/lib/devices/deerma.humidifier.jsq.js:5```
-
@mrlee
Habe leider das gleiche Problem. Testweise habe ich eine neue VM aufgesetzt und iobroker frisch installiert, dann gehts ohne Probleme. Meine Installation hat schon einige Zeit auf dem Buckel, kann es vielleicht ein das durch die ganzen Updates irgend wo mal was "hängen" geblieben ist?Vielleicht kommt ja hier noch eine Lösung, ich denke ich werd aber jetzt mal versuchen wie es sich verhält wenn man ein Backup vom nicht funktionierenden System in die VM einspielt.
-
@christian-maurer Wie schon erwähnt, weder kann ichs reproduzieren noch isses ein Skriptfehler an sich. Ich hab absolut keine Ahnung warum das bei einigen vollkommen problemlos geht und bei anderen son Gedöns ist, evtl. hat @apollon77 oder @Dutchman ne spontane Idee dazu?
Aber wir können ja derweil mal ne blöde Idee ausprobieren, was passiert denn wenn Du meine Fork, statt der orig. node-mihome im Adapteradmin angibst?
-
@pittini Ich habe es eben mal getestet, weil es mich genervt hat, immer wieder die devices von hand zu kopieren. in Deinem fork sind sie ja drin. Wusste gar nicht, dass das geht. ich habe im JS-Adapter dann aber den kompletten Pfad zu Github eintragen müssen.
Es funktioniert, er holt sich beim Starten des JS-Adapters sauber alle devices. Allerdings habe ich dann jedesmal uch einen Error im log:
javascript.0 2021-02-22 14:31:24.034 info (6240) received all states javascript.0 2021-02-22 14:31:23.801 info (6240) received all objects javascript.0 2021-02-22 14:31:21.471 info (6240) requesting all objects javascript.0 2021-02-22 14:31:21.470 info (6240) requesting all states javascript.0 2021-02-22 14:31:21.433 error (6240) Cannot install npm packet: https://github.com/Pittini/node-mihome javascript.0 2021-02-22 14:31:21.378 info (6240) found 0 vulnerabilities javascript.0 2021-02-22 14:31:21.298 info (6240) + node-mihome@0.0.32 updated 1 package and audited 43 packages in 5.238s javascript.0 2021-02-22 14:31:15.284 info (6240) npm install https://github.com/Pittini/node-mihome --production --prefix "/opt/iobroker/node_modules/iobroker.javascript" (System call) javascript.0 2021-02-22 14:31:15.257 info (6240) found 0 vulnerabilities javascript.0 2021-02-22 14:31:15.183 info (6240) + node-mihome@0.0.32 updated 1 package and audited 43 packages in 5.396s javascript.0 2021-02-22 14:31:09.171 info (6240) npm install https://github.com/Pittini/node-mihome --production --prefix "/opt/iobroker/node_modules/iobroker.javascript" (System call) javascript.0 2021-02-22 14:31:09.144 info (6240) found 0 vulnerabilities javascript.0 2021-02-22 14:31:09.055 info (6240) + node-mihome@0.0.32 updated 1 package and audited 43 packages in 5.941s javascript.0 2021-02-22 14:31:02.479 info (6240) npm install https://github.com/Pittini/node-mihome --production --prefix "/opt/iobroker/node_modules/iobroker.javascript" (System call) javascript.0 2021-02-22 14:31:02.458 info (6240) starting. Version 4.8.4 in /opt/iobroker/node_modules/iobroker.javascript, node: v12.20.2, js-controller: 3.2.16 host.iobroker-vlan100 2021-02-22 14:31:00.878 info instance system.adapter.javascript.0 started with pid 6240
Keine Ahnung, warum die meldung kommt, das npm packet könne nicht installiert werden. Die devices habe ich drin (bis auf die 3 airpurifier nutze ich nichts anderes aus node-mihome) und alles in Javascript scheint korrekt zu laufen. Auch das Script für Xiaomi. Steuern und auslesen problemlos.
Hast Du einen Tipp wegen des error?Gruss, Jürgen
-
@wildbill sagte in [Vorlage] Xiaomi Airpurifier 3H u.a. inkl. Token auslesen.:
Hast Du einen Tipp wegen des error?
Leider nein. Das is Systemebene, da hab ich wenig Ahnung von. Evtl. hat @apollon77 oder @Dutchman nen Tipp oder ne Idee?
-
@mrlee sagte in [Vorlage] Xiaomi Airpurifier 3H u.a. inkl. Token auslesen.:
mi-home liegt bei mir allerdings unter:
'/usr/local/iobroker/node_modules/iobroker.javascript/node_modules/node-mihomeDas riecht wieder nach einer 'krummen' node-Installation.
which nodejs && nodejs -v && which node && node -v && which npm && npm -v && apt policy nodejs
anschauen.
Oder bei der Installation im falschen Verzeichnis gestanden. -
@pittini hat leider nix gebracht, gleicher Fehler, aber der tipp von @thomas-braun wars, ich weis nicht warum, aber apt hat anscheinend mein nodejs nicht aktualisiert (ist bei version 10 stehen geblieben).
=>
iobroker gestoppt, nodejs mit apt purge runter geschmissen und anschließend neu installiert, dann iobroker wieder gestartet = funktioniert einwandfrei.DANKE, vielleicht hilfts anderen ja auch.
-
@christian-maurer sagte in [Vorlage] Xiaomi Airpurifier 3H u.a. inkl. Token auslesen.:
apt hat anscheinend mein nodejs nicht aktualisiert
Dann ist dein Quellen-Verzeichnis nicht richtig.
Das Update von node via Paketmanager ist eigentlich absolut narrensicher. -
@thomas-braun said in [Vorlage] Xiaomi Airpurifier 3H u.a. inkl. Token auslesen.:
@christian-maurer sagte in [Vorlage] Xiaomi Airpurifier 3H u.a. inkl. Token auslesen.:
apt hat anscheinend mein nodejs nicht aktualisiert
Dann ist dein Quellen-Verzeichnis nicht richtig.
Das Update von node via Paketmanager ist eigentlich absolut narrensicher.dachte ich bis jetzt auch, wie oben mal erwähnt ist es ein uraltes system das schon über zig debian versionen geupdatet wurde, ich kann mir nur vorstellen das da irgend wo mal was "hängen" geblieben ist. Habs grad nochmal kontroliert und das nodejs installscript hat die Dateien sauber bereinigt/neu angelegt.
-
@christian-maurer sagte in [Vorlage] Xiaomi Airpurifier 3H u.a. inkl. Token auslesen.:
bis jetzt auch, wie oben mal erwähnt ist es ein uraltes system das schon über zig debian versionen geupdatet wurde, ich kann mir nur vorstellen das da irgend wo mal was "hängen" geblieben ist. Habs gra
Wie schaut denn das nun da aus bei dir?
sudo apt update
-
@thomas-braun said in [Vorlage] Xiaomi Airpurifier 3H u.a. inkl. Token auslesen.:
@christian-maurer sagte in [Vorlage] Xiaomi Airpurifier 3H u.a. inkl. Token auslesen.:
bis jetzt auch, wie oben mal erwähnt ist es ein uraltes system das schon über zig debian versionen geupdatet wurde, ich kann mir nur vorstellen das da irgend wo mal was "hängen" geblieben ist. Habs gra
Wie schaut denn das nun da aus bei dir?
sudo apt update
denke so wies sein sollte
OK:1 http://security.debian.org/debian-security stretch/updates InRelease Ign:2 http://deb.debian.org/debian stretch InRelease OK:3 http://deb.debian.org/debian stretch-updates InRelease OK:4 http://deb.debian.org/debian stretch Release OK:5 https://repos.influxdata.com/debian stretch InRelease OK:6 https://deb.nodesource.com/node_12.x stretch InRelease Paketlisten werden gelesen... Fertig Abhängigkeitsbaum wird aufgebaut. Statusinformationen werden eingelesen.... Fertig Alle Pakete sind aktuell.
-
@christian-maurer
Ja, sollte passen.
Überleg dir aber in Kürze den Sprung weg von Stretch zu Buster zu tun.
Stretch lebt nicht mehr ewig lange. -
@thomas-braun said in [Vorlage] Xiaomi Airpurifier 3H u.a. inkl. Token auslesen.:
@christian-maurer
Ja, sollte passen.
Überleg dir aber in Kürze den Sprung weg von Stretch zu Buster zu tun.
Stretch lebt nicht mehr ewig lange.schon erledigt, das ist halt das "Problem" mit solch stabilen systemen, so lange es läuft schaut man nicht nach ...
bin jetzt aber echt gespannt ob den anderen mit dem gleichen problem auch eine neuinstallation von nodejs hilft -
@christian-maurer sagte in [Vorlage] Xiaomi Airpurifier 3H u.a. inkl. Token auslesen.:
bin jetzt aber echt gespannt ob den anderen mit dem gleichen problem auch eine neuinstallation von nodejs hilft
Beim @MrLee bin ich fast 100% sicher, dass da bei nodeJS was krumm ist.
Ich hab das node-mihome nämlich bei mir auch laufen. Das liegt aber keines falls in /usr/local/ herum sondern das Ding wohnt schön sauber in /opt/iobroker/node_modules/node-mihome -
@christian-maurer
so lange es läuft schaut man nicht nach ...Sollte man nicht tun. Das Grundsystem sollte immer aktuell gehalten werden. Erstens sieht man ja den einen Grund bei Dir, aber schon auch weil doch hin und wieder sicherheitsrelevante Dinge mit rein kommen. Ab und an mal das System updaten hat noch nie geschadet (OK vielleicht bei Windows schon... )
Gruss, Jürgen
-
@wildbill
Bei einem reinen Debian sind updates eigentlich ausschließlich aus der Sicherheitsecke, da wird ja in einer releasten Version eigentlich so gut wie nie eine neue Version einer Software rausgehauen, da backportet man eher nur den security relevanten Teil eines Updates und lässt vom Rest die Finger.
Serverzentrierte Distribution halt.