Skip to content
  • Home
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. JavaScript
  5. [Vorlage] Xiaomi Airpurifier 3H u.a. inkl. Token auslesen.

NEWS

  • Monatsrückblick Januar/Februar 2026 ist online!
    BluefoxB
    Bluefox
    17
    1
    515

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    17
    1
    5.3k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    1.4k

[Vorlage] Xiaomi Airpurifier 3H u.a. inkl. Token auslesen.

Scheduled Pinned Locked Moved JavaScript
474 Posts 50 Posters 110.4k Views 41 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • M Muchul

    @pittini
    mir ging es um den Token, den dein Skript ausgibt, ich hatte gehofft das ich damit das Gerät einbinden kann.
    Geht aber leider nicht.
    Sorry für die Belästigung.

    P Offline
    P Offline
    Pittini
    Developer
    wrote on last edited by
    #85

    @muchul Es gehen keine Aquara Gateways, nur die Xiaomi. Und von denen nicht alle, bzw. erst nach Portfreischaltungshack. Da hilft auch das Token nix.

    1 Reply Last reply
    0
    • M Offline
      M Offline
      Muchul
      wrote on last edited by
      #86

      @pittini
      Siehste, und schon hast du mir geholfen :-)

      1 Reply Last reply
      0
      • P Pittini

        @sebastian-0 sagte in [Vorlage] Xiaomi Airpurifier 3H u.a. inkl. Token auslesen.:

        ich hatte "node-mihome" sowie "Pittini/node-mihome" bei "Zusätzliche npm-Module" drin.

        Doppelt moppeln hält nicht besser, sondern bringt kuddelmuddel. Ich kann Dir bzgl. des Pfades auch nicht weiterhelfen, da ich iob unter Debian laufen hab. Aber die FEhlermeldung is ja eigentlich klar, das Problem ist, das node-mihome nicht gefunden wird. Solang das so ist, wird das Skript nicht laufen. Und sorry, das is leider Systemebene, da hab ich kein Plan, bei mir hat das sofort geklappt. Ich hab die normale node-mihome genommen und dann die nötigen Definitionsdateien reinkopiert. Die liegen extra auch noch auf Git falls Du das versuchen willst. Aber aktuell findet er gar nix, da helfen die Def Dateien auch nix.

        Sebastian 0S Offline
        Sebastian 0S Offline
        Sebastian 0
        wrote on last edited by
        #87

        @pittini Beide hatte ich nie zeitgleich aktiviert.

        Kann man im Script irgendwo den Pfad angeben, an dem er das Module "suchen" soll?

        P 1 Reply Last reply
        0
        • Sebastian 0S Sebastian 0

          @pittini Beide hatte ich nie zeitgleich aktiviert.

          Kann man im Script irgendwo den Pfad angeben, an dem er das Module "suchen" soll?

          P Offline
          P Offline
          Pittini
          Developer
          wrote on last edited by
          #88

          @sebastian-0 Nur das "require" in Zeile 3. Und da nen Pfad....eher nicht, hab ich zumindest noch nie gesehen.

          haselchenH 1 Reply Last reply
          0
          • P Pittini

            @sebastian-0 Nur das "require" in Zeile 3. Und da nen Pfad....eher nicht, hab ich zumindest noch nie gesehen.

            haselchenH Offline
            haselchenH Offline
            haselchen
            Most Active
            wrote on last edited by
            #89

            @pittini

            Ich benutze dein aktuelles Skript. Aber da scheint ein kleiner Wurm drin zu sein.
            Ich hab den Purifier Pro.
            Und beim LED Datenpunkt steht im Wert true. Obwohl der Datenpunkt als Zahl angelegt wird.

            4f58e563-e9fa-44ac-a963-e92620341ba2-grafik.png

            95de0a83-bfd5-40ad-ba70-842433be67ff-grafik.png

            Im Log bekomme ich deswegen diese Warnungen. An welcher Stelle müsste eine Korrektur stattfinden?

            javascript.0	2021-04-08 19:43:25.996	warn	(5905) at Timeout._onTimeout (/opt/iobroker/node_modules/iobroker.javascript/node_modules/node-mihome/lib/device-miio.js:73:9)
            javascript.0	2021-04-08 19:43:25.996	warn	(5905) at module.exports.loadProperties (/opt/iobroker/node_modules/iobroker.javascript/node_modules/node-mihome/lib/device-miio.js:107:12)
            javascript.0	2021-04-08 19:43:25.996	warn	(5905) at module.exports.emit (events.js:314:20)
            javascript.0	2021-04-08 19:43:25.995	warn	(5905) at module.exports.<anonymous> (script.js.Luft:660:21)
            javascript.0	2021-04-08 19:43:25.995	warn	(5905) at RefreshDps (script.js.Luft:701:45)
            javascript.0	2021-04-08 19:43:25.991	warn	(5905) Wrong type of javascript.0.MiHomeAll.357158741.led: "boolean". Please fix, while deprecated and will not work in next versions.
            

            Synology DS218+ & 2 x Fujitsu Esprimo (VM/Container) + FritzBox7590 + 2 AVM 3000 Repeater & Homematic & HUE & Osram & Xiaomi, NPM 10.9.4, Nodejs 22.21.0 ,JS Controller 7.0.7 ,Admin 7.7.19

            W P 2 Replies Last reply
            0
            • haselchenH haselchen

              @pittini

              Ich benutze dein aktuelles Skript. Aber da scheint ein kleiner Wurm drin zu sein.
              Ich hab den Purifier Pro.
              Und beim LED Datenpunkt steht im Wert true. Obwohl der Datenpunkt als Zahl angelegt wird.

              4f58e563-e9fa-44ac-a963-e92620341ba2-grafik.png

              95de0a83-bfd5-40ad-ba70-842433be67ff-grafik.png

              Im Log bekomme ich deswegen diese Warnungen. An welcher Stelle müsste eine Korrektur stattfinden?

              javascript.0	2021-04-08 19:43:25.996	warn	(5905) at Timeout._onTimeout (/opt/iobroker/node_modules/iobroker.javascript/node_modules/node-mihome/lib/device-miio.js:73:9)
              javascript.0	2021-04-08 19:43:25.996	warn	(5905) at module.exports.loadProperties (/opt/iobroker/node_modules/iobroker.javascript/node_modules/node-mihome/lib/device-miio.js:107:12)
              javascript.0	2021-04-08 19:43:25.996	warn	(5905) at module.exports.emit (events.js:314:20)
              javascript.0	2021-04-08 19:43:25.995	warn	(5905) at module.exports.<anonymous> (script.js.Luft:660:21)
              javascript.0	2021-04-08 19:43:25.995	warn	(5905) at RefreshDps (script.js.Luft:701:45)
              javascript.0	2021-04-08 19:43:25.991	warn	(5905) Wrong type of javascript.0.MiHomeAll.357158741.led: "boolean". Please fix, while deprecated and will not work in next versions.
              
              W Online
              W Online
              Wildbill
              wrote on last edited by
              #90

              @haselchen Hast Du den Pro oder den Pro H? Denn bei meinem Pro H habe ich beim Datenpunkt

              javascript.0.MiHomeAll.318862096.indicator-light.brightness
              

              auch number, das ist aber korrekt. Da ist als Wert 0 (volle Beleuchtung), 1 (schwache Beleuchtung) oder 2 (Beleuchtung aus) möglich.

              Gruss, Jürgen

              1 Reply Last reply
              0
              • haselchenH haselchen

                @pittini

                Ich benutze dein aktuelles Skript. Aber da scheint ein kleiner Wurm drin zu sein.
                Ich hab den Purifier Pro.
                Und beim LED Datenpunkt steht im Wert true. Obwohl der Datenpunkt als Zahl angelegt wird.

                4f58e563-e9fa-44ac-a963-e92620341ba2-grafik.png

                95de0a83-bfd5-40ad-ba70-842433be67ff-grafik.png

                Im Log bekomme ich deswegen diese Warnungen. An welcher Stelle müsste eine Korrektur stattfinden?

                javascript.0	2021-04-08 19:43:25.996	warn	(5905) at Timeout._onTimeout (/opt/iobroker/node_modules/iobroker.javascript/node_modules/node-mihome/lib/device-miio.js:73:9)
                javascript.0	2021-04-08 19:43:25.996	warn	(5905) at module.exports.loadProperties (/opt/iobroker/node_modules/iobroker.javascript/node_modules/node-mihome/lib/device-miio.js:107:12)
                javascript.0	2021-04-08 19:43:25.996	warn	(5905) at module.exports.emit (events.js:314:20)
                javascript.0	2021-04-08 19:43:25.995	warn	(5905) at module.exports.<anonymous> (script.js.Luft:660:21)
                javascript.0	2021-04-08 19:43:25.995	warn	(5905) at RefreshDps (script.js.Luft:701:45)
                javascript.0	2021-04-08 19:43:25.991	warn	(5905) Wrong type of javascript.0.MiHomeAll.357158741.led: "boolean". Please fix, while deprecated and will not work in next versions.
                
                P Offline
                P Offline
                Pittini
                Developer
                wrote on last edited by
                #91

                @haselchen Erstmal sagste mir Dein GENAUES Model, also das was das Skript unter Info bei dem ausgibt. Dann sehen wir weiter.

                haselchenH 1 Reply Last reply
                0
                • Sebastian 0S Sebastian 0

                  Hallo zusammen,

                  hat jemand den Airpurifier 3H aktuell erfolgreich eingebunden?

                  marcusklM Offline
                  marcusklM Offline
                  marcuskl
                  wrote on last edited by
                  #92

                  @sebastian-0 ich habe auch einen Erfolgreich eingebunden

                  Host: Intel Nuc6cayh (16GB Ram, 240GB SSD) mit Proxmox.

                  Iobroker VM, InfluxDB LXC, Pihole LXC, Tasmoadmin LXC, Easy2connect VM

                  1 Reply Last reply
                  0
                  • P Pittini

                    @haselchen Erstmal sagste mir Dein GENAUES Model, also das was das Skript unter Info bei dem ausgibt. Dann sehen wir weiter.

                    haselchenH Offline
                    haselchenH Offline
                    haselchen
                    Most Active
                    wrote on last edited by
                    #93

                    @pittini

                    4b53c89f-aa8a-4dff-97ca-b236448d06b4-grafik.png

                    @Wildbill

                    der Pro OHNE H

                    Synology DS218+ & 2 x Fujitsu Esprimo (VM/Container) + FritzBox7590 + 2 AVM 3000 Repeater & Homematic & HUE & Osram & Xiaomi, NPM 10.9.4, Nodejs 22.21.0 ,JS Controller 7.0.7 ,Admin 7.7.19

                    W P 2 Replies Last reply
                    0
                    • haselchenH haselchen

                      @pittini

                      4b53c89f-aa8a-4dff-97ca-b236448d06b4-grafik.png

                      @Wildbill

                      der Pro OHNE H

                      W Online
                      W Online
                      Wildbill
                      wrote on last edited by
                      #94

                      @haselchen Der scheint da einiges anders zu machen, da kann ich dann leider nicht helfen, sorry.

                      Gruss, Jürgen

                      1 Reply Last reply
                      0
                      • haselchenH haselchen

                        @pittini

                        4b53c89f-aa8a-4dff-97ca-b236448d06b4-grafik.png

                        @Wildbill

                        der Pro OHNE H

                        P Offline
                        P Offline
                        Pittini
                        Developer
                        wrote on last edited by
                        #95

                        @haselchen sagte in [Vorlage] Xiaomi Airpurifier 3H u.a. inkl. Token auslesen.:

                        der Pro OHNE H

                        Der reine Pro ist noch absolut ungetestet und steht deshalb auch nicht auf der Liste der unterstützen Geräte bisher. Wenn Du willig bist Tester zu machen sollte der aber voll integrierbar zu sein. Geht irgendwas? Geht gar nix? Wenn was geht, was genau? Was genau geht nicht? Bei welchen Werten?

                        haselchenH 1 Reply Last reply
                        0
                        • P Pittini

                          @haselchen sagte in [Vorlage] Xiaomi Airpurifier 3H u.a. inkl. Token auslesen.:

                          der Pro OHNE H

                          Der reine Pro ist noch absolut ungetestet und steht deshalb auch nicht auf der Liste der unterstützen Geräte bisher. Wenn Du willig bist Tester zu machen sollte der aber voll integrierbar zu sein. Geht irgendwas? Geht gar nix? Wenn was geht, was genau? Was genau geht nicht? Bei welchen Werten?

                          haselchenH Offline
                          haselchenH Offline
                          haselchen
                          Most Active
                          wrote on last edited by haselchen
                          #96

                          @pittini

                          Der Pro ist doch in deinem Skript?!
                          Zwar nicht 1 zu 1 namentlich aber ab Zeile 172 im Skript:

                          DefineDevice[14] = { // Tested and working - 
                              info: {},
                              model: "zhimi.airpurifier.v7",// https://miot-spec.org/miot-spec-v2/instance?type=urn:miot-spec-v2:device:air-purifier:0000A007:zhimi-v7:1
                              description: "Mi Air Purifier",
                              setter: {
                                  "power": async function (obj, val) { await device[obj].setPower(val) },
                                  "mode": async function (obj, val) { await device[obj].setFanLevel(val) },
                                  "led": async function (obj, val) { await device[obj].setLedBrightness(val) },
                                  "child_lock": async function (obj, val) { await device[obj].setChildLock(val) }
                              },
                              common:
                                  [{ name: "power", type: "boolean", role: "switch", read: true, write: true, min: false, max: true },
                                  { name: "mode", type: "string", read: true, write: true, states: { "auto": "auto", "silent": "silent", "favorite": "favorite" } },
                                  { name: "favorite_level", type: "number", read: true, write: false, min: 0, max: 16 },
                                  { name: "temp_dec", type: "number", role: "value.temperature", read: true, write: false },
                                  { name: "humidity", type: "number", read: true, write: false, min: 0, max: 100, unit: "%" },
                                  { name: "aqi", type: "number", read: true, write: false, unit: "μg/m³" },
                                  { name: "average_aqi", type: "number", read: true, write: false, unit: "μg/m³" },
                                  { name: "led", type: "number", read: true, write: true, min: 0, max: 2, states: { 0: "bright", 1: "dim", 2: "off" } },
                                  { name: "bright", type: "number", read: true, write: false, min: 0, max: 100, unit: "%" },
                                  { name: "volume", type: "number", read: true, write: false, min: 0, max: 100, unit: "%" },
                                  { name: "filter1_life", type: "number", read: true, write: false, min: 0, max: 100, unit: "%" },
                                  { name: "f1_hour", type: "number", read: true, write: false },
                                  { name: "f1_hour_used", type: "number", read: true, write: false },
                                  { name: "motor1_speed", type: "number", read: true, write: false, unit: "rpm" },
                                  { name: "motor2_speed", type: "number", read: true, write: false, unit: "rpm" },
                                  { name: "child_lock", type: "boolean", role: "switch", read: true, write: true, min: false, max: true }]
                          

                          Nur einen Mi Air Purifier, wie Du ihn oben genannt hast, gibt es nicht.
                          Es wird alles angelegt und funktioniert auch alles.
                          Nur der LED Datenpunkt wird als boolean angelegt , obwohl number vorgegeben wird.
                          Das hatte ich aber schon im vorherigen Post geschrieben.

                          Synology DS218+ & 2 x Fujitsu Esprimo (VM/Container) + FritzBox7590 + 2 AVM 3000 Repeater & Homematic & HUE & Osram & Xiaomi, NPM 10.9.4, Nodejs 22.21.0 ,JS Controller 7.0.7 ,Admin 7.7.19

                          P 1 Reply Last reply
                          0
                          • haselchenH haselchen

                            @pittini

                            Der Pro ist doch in deinem Skript?!
                            Zwar nicht 1 zu 1 namentlich aber ab Zeile 172 im Skript:

                            DefineDevice[14] = { // Tested and working - 
                                info: {},
                                model: "zhimi.airpurifier.v7",// https://miot-spec.org/miot-spec-v2/instance?type=urn:miot-spec-v2:device:air-purifier:0000A007:zhimi-v7:1
                                description: "Mi Air Purifier",
                                setter: {
                                    "power": async function (obj, val) { await device[obj].setPower(val) },
                                    "mode": async function (obj, val) { await device[obj].setFanLevel(val) },
                                    "led": async function (obj, val) { await device[obj].setLedBrightness(val) },
                                    "child_lock": async function (obj, val) { await device[obj].setChildLock(val) }
                                },
                                common:
                                    [{ name: "power", type: "boolean", role: "switch", read: true, write: true, min: false, max: true },
                                    { name: "mode", type: "string", read: true, write: true, states: { "auto": "auto", "silent": "silent", "favorite": "favorite" } },
                                    { name: "favorite_level", type: "number", read: true, write: false, min: 0, max: 16 },
                                    { name: "temp_dec", type: "number", role: "value.temperature", read: true, write: false },
                                    { name: "humidity", type: "number", read: true, write: false, min: 0, max: 100, unit: "%" },
                                    { name: "aqi", type: "number", read: true, write: false, unit: "μg/m³" },
                                    { name: "average_aqi", type: "number", read: true, write: false, unit: "μg/m³" },
                                    { name: "led", type: "number", read: true, write: true, min: 0, max: 2, states: { 0: "bright", 1: "dim", 2: "off" } },
                                    { name: "bright", type: "number", read: true, write: false, min: 0, max: 100, unit: "%" },
                                    { name: "volume", type: "number", read: true, write: false, min: 0, max: 100, unit: "%" },
                                    { name: "filter1_life", type: "number", read: true, write: false, min: 0, max: 100, unit: "%" },
                                    { name: "f1_hour", type: "number", read: true, write: false },
                                    { name: "f1_hour_used", type: "number", read: true, write: false },
                                    { name: "motor1_speed", type: "number", read: true, write: false, unit: "rpm" },
                                    { name: "motor2_speed", type: "number", read: true, write: false, unit: "rpm" },
                                    { name: "child_lock", type: "boolean", role: "switch", read: true, write: true, min: false, max: true }]
                            

                            Nur einen Mi Air Purifier, wie Du ihn oben genannt hast, gibt es nicht.
                            Es wird alles angelegt und funktioniert auch alles.
                            Nur der LED Datenpunkt wird als boolean angelegt , obwohl number vorgegeben wird.
                            Das hatte ich aber schon im vorherigen Post geschrieben.

                            P Offline
                            P Offline
                            Pittini
                            Developer
                            wrote on last edited by Pittini
                            #97

                            @haselchen sagte in [Vorlage] Xiaomi Airpurifier 3H u.a. inkl. Token auslesen.:

                              { name: "led", type: "number", read: true, write: true, min: 0, max: 2, states: { 0: "bright", 1: "dim", 2: "off" } },
                            

                            Dann mach doch bitte mal aus obiger Zeile folgendes:

                            { name: "led", type: "boolean", read: true, write: true },
                            

                            Und vorher bitte den Datenpunkt aus der Objektliste löschen damit er neu angelegt wird.

                            Dann mal testen.

                            Sollte es noch ein Problem beim setzen geben, mußt evtl auch noch aus der Zeile 179:

                            "led": async function (obj, val) { await device[obj].setLedBrightness(val) },
                            

                            folgendes machen:

                            "led": async function (obj, val) { await device[obj].setLedBrightness(val ? 'on' : 'off') },
                            
                            

                            Dann bitte Feedback obs und mit welcher Variante es geklappt hat.

                            haselchenH 1 Reply Last reply
                            0
                            • P Pittini

                              @haselchen sagte in [Vorlage] Xiaomi Airpurifier 3H u.a. inkl. Token auslesen.:

                                { name: "led", type: "number", read: true, write: true, min: 0, max: 2, states: { 0: "bright", 1: "dim", 2: "off" } },
                              

                              Dann mach doch bitte mal aus obiger Zeile folgendes:

                              { name: "led", type: "boolean", read: true, write: true },
                              

                              Und vorher bitte den Datenpunkt aus der Objektliste löschen damit er neu angelegt wird.

                              Dann mal testen.

                              Sollte es noch ein Problem beim setzen geben, mußt evtl auch noch aus der Zeile 179:

                              "led": async function (obj, val) { await device[obj].setLedBrightness(val) },
                              

                              folgendes machen:

                              "led": async function (obj, val) { await device[obj].setLedBrightness(val ? 'on' : 'off') },
                              
                              

                              Dann bitte Feedback obs und mit welcher Variante es geklappt hat.

                              haselchenH Offline
                              haselchenH Offline
                              haselchen
                              Most Active
                              wrote on last edited by haselchen
                              #98

                              @pittini
                              Leider mit gar keiner. Im Datenpunkt wird weiter true angezeigt.
                              Geh ich mit dem Cursor drauf, kommt ein Dropdown Menue wo ich die 3 Werte aus dem eigentlichen Datenpunkt auswählen kann (bright dim off)
                              Wähle ich eines steht es rot im Datenpunkt. Nach aktualisieren der Werte durch das Skript erscheint wieder true im Datenpunkt.

                              5c830db0-7683-4625-8aac-64dfdbfd648e-grafik.png

                              a08e0748-94b2-4a81-8651-19e76d5d191e-grafik.png

                              javascript.0	2021-04-11 15:53:06.556	error	at processImmediate (internal/timers.js:461:21)
                              javascript.0	2021-04-11 15:53:06.556	error	at Immediate.<anonymous> (/opt/iobroker/node_modules/iobroker.js-controller/lib/adapter.js:5384:37)
                              javascript.0	2021-04-11 15:53:06.556	error	at Object.stateChange (/opt/iobroker/node_modules/iobroker.javascript/javascript.js:387:25)
                              javascript.0	2021-04-11 15:53:06.556	error	at Object.callback (/opt/iobroker/node_modules/iobroker.javascript/javascript.js:1477:42)
                              javascript.0	2021-04-11 15:53:06.556	error	at Object.<anonymous> (script.js.Luft:765:21)
                              javascript.0	2021-04-11 15:53:06.556	error	at SetDevice (script.js.Luft:751:64)
                              javascript.0	2021-04-11 15:53:06.556	error	at Object.led (script.js.Luft:188:62)
                              javascript.0	2021-04-11 15:53:06.556	error	(5905) TypeError: device[obj].setLedBrightness is not a function
                              javascript.0	2021-04-11 15:53:06.552	error	(5905) unhandled promise rejection: device[obj].setLedBrightness is not a function
                              Unhandled	2021-04-11 15:53:06.552	error	promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch().
                              

                              Was aber am Schlimmste ist, wenn ich ein Wert aus dem Dropdown Menue nehme, stürzt der Javascript Adapter ab und startet neu.

                              Edit:

                              Wo holt er denn dauernd "boolean" her.
                              Steht nirgends im Skript bei den LED Sachen.

                              javascript.0	2021-04-11 16:25:51.039	warn	(11091) at Timeout._onTimeout (/opt/iobroker/node_modules/iobroker.javascript/node_modules/node-mihome/lib/device-miio.js:73:9)
                              javascript.0	2021-04-11 16:25:51.039	warn	(11091) at module.exports.loadProperties (/opt/iobroker/node_modules/iobroker.javascript/node_modules/node-mihome/lib/device-miio.js:107:12)
                              javascript.0	2021-04-11 16:25:51.039	warn	(11091) at module.exports.emit (events.js:314:20)
                              javascript.0	2021-04-11 16:25:51.039	warn	(11091) at module.exports.<anonymous> (script.js.Luft:660:21)
                              javascript.0	2021-04-11 16:25:51.039	warn	(11091) at RefreshDps (script.js.Luft:701:45)
                              javascript.0	2021-04-11 16:25:51.037	warn	(11091) Wrong type of javascript.0.MiHomeAll.357158741.led: "boolean". Please fix, while deprecated and will not work in next versions.
                              

                              Synology DS218+ & 2 x Fujitsu Esprimo (VM/Container) + FritzBox7590 + 2 AVM 3000 Repeater & Homematic & HUE & Osram & Xiaomi, NPM 10.9.4, Nodejs 22.21.0 ,JS Controller 7.0.7 ,Admin 7.7.19

                              P 1 Reply Last reply
                              0
                              • haselchenH haselchen

                                @pittini
                                Leider mit gar keiner. Im Datenpunkt wird weiter true angezeigt.
                                Geh ich mit dem Cursor drauf, kommt ein Dropdown Menue wo ich die 3 Werte aus dem eigentlichen Datenpunkt auswählen kann (bright dim off)
                                Wähle ich eines steht es rot im Datenpunkt. Nach aktualisieren der Werte durch das Skript erscheint wieder true im Datenpunkt.

                                5c830db0-7683-4625-8aac-64dfdbfd648e-grafik.png

                                a08e0748-94b2-4a81-8651-19e76d5d191e-grafik.png

                                javascript.0	2021-04-11 15:53:06.556	error	at processImmediate (internal/timers.js:461:21)
                                javascript.0	2021-04-11 15:53:06.556	error	at Immediate.<anonymous> (/opt/iobroker/node_modules/iobroker.js-controller/lib/adapter.js:5384:37)
                                javascript.0	2021-04-11 15:53:06.556	error	at Object.stateChange (/opt/iobroker/node_modules/iobroker.javascript/javascript.js:387:25)
                                javascript.0	2021-04-11 15:53:06.556	error	at Object.callback (/opt/iobroker/node_modules/iobroker.javascript/javascript.js:1477:42)
                                javascript.0	2021-04-11 15:53:06.556	error	at Object.<anonymous> (script.js.Luft:765:21)
                                javascript.0	2021-04-11 15:53:06.556	error	at SetDevice (script.js.Luft:751:64)
                                javascript.0	2021-04-11 15:53:06.556	error	at Object.led (script.js.Luft:188:62)
                                javascript.0	2021-04-11 15:53:06.556	error	(5905) TypeError: device[obj].setLedBrightness is not a function
                                javascript.0	2021-04-11 15:53:06.552	error	(5905) unhandled promise rejection: device[obj].setLedBrightness is not a function
                                Unhandled	2021-04-11 15:53:06.552	error	promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch().
                                

                                Was aber am Schlimmste ist, wenn ich ein Wert aus dem Dropdown Menue nehme, stürzt der Javascript Adapter ab und startet neu.

                                Edit:

                                Wo holt er denn dauernd "boolean" her.
                                Steht nirgends im Skript bei den LED Sachen.

                                javascript.0	2021-04-11 16:25:51.039	warn	(11091) at Timeout._onTimeout (/opt/iobroker/node_modules/iobroker.javascript/node_modules/node-mihome/lib/device-miio.js:73:9)
                                javascript.0	2021-04-11 16:25:51.039	warn	(11091) at module.exports.loadProperties (/opt/iobroker/node_modules/iobroker.javascript/node_modules/node-mihome/lib/device-miio.js:107:12)
                                javascript.0	2021-04-11 16:25:51.039	warn	(11091) at module.exports.emit (events.js:314:20)
                                javascript.0	2021-04-11 16:25:51.039	warn	(11091) at module.exports.<anonymous> (script.js.Luft:660:21)
                                javascript.0	2021-04-11 16:25:51.039	warn	(11091) at RefreshDps (script.js.Luft:701:45)
                                javascript.0	2021-04-11 16:25:51.037	warn	(11091) Wrong type of javascript.0.MiHomeAll.357158741.led: "boolean". Please fix, while deprecated and will not work in next versions.
                                
                                P Offline
                                P Offline
                                Pittini
                                Developer
                                wrote on last edited by
                                #99

                                @haselchen sagte in [Vorlage] Xiaomi Airpurifier 3H u.a. inkl. Token auslesen.:

                                Leider mit gar keiner. Im Datenpunkt wird weiter true angezeigt.
                                Geh ich mit dem Cursor drauf, kommt ein Dropdown Menue wo ich die 3 Werte aus dem eigentlichen Datenpunkt auswählen kann (bright dim off)
                                Wähle ich eines steht es rot im Datenpunkt. Nach aktualisieren der Werte durch das Skript erscheint wieder true im Datenpunkt.

                                Wenn Du die 3 Werte auswählen kannst, hast Du entweder den Datenpunkt nicht gelöscht vor der Änderung, oder die Änderung nicht ausgeführt. Und true/false sollte schon passen, deswegen ja die Änderung von Number auf Boolean, so wie es aussieht (in der mihome Definitionsdatei) kann der nur Led an/aus

                                haselchenH 1 Reply Last reply
                                1
                                • P Pittini

                                  @haselchen sagte in [Vorlage] Xiaomi Airpurifier 3H u.a. inkl. Token auslesen.:

                                  Leider mit gar keiner. Im Datenpunkt wird weiter true angezeigt.
                                  Geh ich mit dem Cursor drauf, kommt ein Dropdown Menue wo ich die 3 Werte aus dem eigentlichen Datenpunkt auswählen kann (bright dim off)
                                  Wähle ich eines steht es rot im Datenpunkt. Nach aktualisieren der Werte durch das Skript erscheint wieder true im Datenpunkt.

                                  Wenn Du die 3 Werte auswählen kannst, hast Du entweder den Datenpunkt nicht gelöscht vor der Änderung, oder die Änderung nicht ausgeführt. Und true/false sollte schon passen, deswegen ja die Änderung von Number auf Boolean, so wie es aussieht (in der mihome Definitionsdatei) kann der nur Led an/aus

                                  haselchenH Offline
                                  haselchenH Offline
                                  haselchen
                                  Most Active
                                  wrote on last edited by
                                  #100

                                  @pittini

                                  Schonmal danke für Deinen Support.
                                  Hab es nach deiner Anleitung gemacht.
                                  Scheint tatsächlich nur an und aus zu geben.
                                  Wie muss ich das Skript ändern, dass on/off oder true/false in dem Datenpunkt stehen und ich diesen dann auch schalten kann?

                                  Synology DS218+ & 2 x Fujitsu Esprimo (VM/Container) + FritzBox7590 + 2 AVM 3000 Repeater & Homematic & HUE & Osram & Xiaomi, NPM 10.9.4, Nodejs 22.21.0 ,JS Controller 7.0.7 ,Admin 7.7.19

                                  P 1 Reply Last reply
                                  0
                                  • haselchenH haselchen

                                    @pittini

                                    Schonmal danke für Deinen Support.
                                    Hab es nach deiner Anleitung gemacht.
                                    Scheint tatsächlich nur an und aus zu geben.
                                    Wie muss ich das Skript ändern, dass on/off oder true/false in dem Datenpunkt stehen und ich diesen dann auch schalten kann?

                                    P Offline
                                    P Offline
                                    Pittini
                                    Developer
                                    wrote on last edited by
                                    #101

                                    @haselchen sagte in [Vorlage] Xiaomi Airpurifier 3H u.a. inkl. Token auslesen.:

                                    Wie muss ich das Skript ändern, dass on/off oder true/false in dem Datenpunkt stehen und ich diesen dann auch schalten kann?

                                    Hab ich Dir oben beschrieben. Zeig doch mal bitte jetzt Deinen kompletten Definitionsblock aus dem Skript nach den Änderungen.

                                    haselchenH 1 Reply Last reply
                                    0
                                    • P Pittini

                                      @haselchen sagte in [Vorlage] Xiaomi Airpurifier 3H u.a. inkl. Token auslesen.:

                                      Wie muss ich das Skript ändern, dass on/off oder true/false in dem Datenpunkt stehen und ich diesen dann auch schalten kann?

                                      Hab ich Dir oben beschrieben. Zeig doch mal bitte jetzt Deinen kompletten Definitionsblock aus dem Skript nach den Änderungen.

                                      haselchenH Offline
                                      haselchenH Offline
                                      haselchen
                                      Most Active
                                      wrote on last edited by haselchen
                                      #102

                                      @pittini

                                      Mache ich sofort.

                                      Könnte es an der Definitionsdatei liegen?
                                      Weil dort LedBrightness aufgeführt ist und dieser Air Purifier nur an/aus kann.
                                      Hab das Gefühl, egal was ich am Skript änder, man müsste bei der Datei vermutlich anfangen?!

                                      DefineDevice[14] = { // Tested and working -
                                          info: {},
                                          model: "zhimi.airpurifier.v7",// https://miot-spec.org/miot-spec-v2/instance?type=urn:miot-spec-v2:device:air-purifier:0000A007:zhimi-v7:1
                                          description: "Mi Air Purifier",
                                          setter: {
                                              "power": async function (obj, val) { await device[obj].setPower(val) },
                                              "mode": async function (obj, val) { await device[obj].setFanLevel(val) },
                                              "led": async function (obj, val) { await device[obj].setLedBrightness(val) },
                                              "child_lock": async function (obj, val) { await device[obj].setChildLock(val) }
                                          },
                                          common:
                                              [{ name: "power", type: "boolean", role: "switch", read: true, write: true, min: false, max: true },
                                              { name: "mode", type: "string", read: true, write: true, states: { "auto": "auto", "silent": "silent", "favorite": "favorite" } },
                                              { name: "favorite_level", type: "number", read: true, write: false, min: 0, max: 16 },
                                              { name: "temp_dec", type: "number", role: "value.temperature", read: true, write: false },
                                              { name: "humidity", type: "number", read: true, write: false, min: 0, max: 100, unit: "%" },
                                              { name: "aqi", type: "number", read: true, write: false, unit: "μg/m³" },
                                              { name: "average_aqi", type: "number", read: true, write: false, unit: "μg/m³" },
                                              { name: "led", type: "boolean", role: "switch", read: true, write: true, min: false, max: true },
                                              { name: "bright", type: "number", read: true, write: false, min: 0, max: 100, unit: "%" },
                                              { name: "volume", type: "number", read: true, write: false, min: 0, max: 100, unit: "%" },
                                              { name: "filter1_life", type: "number", read: true, write: false, min: 0, max: 100, unit: "%" },
                                              { name: "f1_hour", type: "number", read: true, write: false },
                                              { name: "f1_hour_used", type: "number", read: true, write: false },
                                              { name: "motor1_speed", type: "number", read: true, write: false, unit: "rpm" },
                                              { name: "motor2_speed", type: "number", read: true, write: false, unit: "rpm" },
                                              { name: "child_lock", type: "boolean", role: "switch", read: true, write: true, min: false, max: true }]
                                      

                                      Hab die Zeilen so geändert, dass ein Switch draus wird, wegen an- und ausschalten. Gibt aber nur Fehlermeldungen.

                                      Hatte oben mal LedBrightness in Led geändert zum Probieren.

                                      2021-04-11 16:53:45.602 - error: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch().
                                      2021-04-11 16:53:45.602 - error: javascript.0 (12084) unhandled promise rejection: device[obj].setLed is not a function
                                      2021-04-11 16:53:45.606 - error: javascript.0 (12084) TypeError: device[obj].setLed is not a function
                                      

                                      Edit:

                                      Hab gerade gesehen das der Air Purifier Pro mit der gleichen Bezeichnung wie im Skript im node-mihome Ordner unter Devices ist.

                                      static model = 'zhimi.airpurifier.v7';
                                        static name = 'Mi Air Purifier Pro';
                                        static image = 'https://static.home.mi.com/app/image/get/file/developer_1551944689505i5ubr.png';
                                      

                                      Synology DS218+ & 2 x Fujitsu Esprimo (VM/Container) + FritzBox7590 + 2 AVM 3000 Repeater & Homematic & HUE & Osram & Xiaomi, NPM 10.9.4, Nodejs 22.21.0 ,JS Controller 7.0.7 ,Admin 7.7.19

                                      P haselchenH 2 Replies Last reply
                                      0
                                      • haselchenH haselchen

                                        @pittini

                                        Mache ich sofort.

                                        Könnte es an der Definitionsdatei liegen?
                                        Weil dort LedBrightness aufgeführt ist und dieser Air Purifier nur an/aus kann.
                                        Hab das Gefühl, egal was ich am Skript änder, man müsste bei der Datei vermutlich anfangen?!

                                        DefineDevice[14] = { // Tested and working -
                                            info: {},
                                            model: "zhimi.airpurifier.v7",// https://miot-spec.org/miot-spec-v2/instance?type=urn:miot-spec-v2:device:air-purifier:0000A007:zhimi-v7:1
                                            description: "Mi Air Purifier",
                                            setter: {
                                                "power": async function (obj, val) { await device[obj].setPower(val) },
                                                "mode": async function (obj, val) { await device[obj].setFanLevel(val) },
                                                "led": async function (obj, val) { await device[obj].setLedBrightness(val) },
                                                "child_lock": async function (obj, val) { await device[obj].setChildLock(val) }
                                            },
                                            common:
                                                [{ name: "power", type: "boolean", role: "switch", read: true, write: true, min: false, max: true },
                                                { name: "mode", type: "string", read: true, write: true, states: { "auto": "auto", "silent": "silent", "favorite": "favorite" } },
                                                { name: "favorite_level", type: "number", read: true, write: false, min: 0, max: 16 },
                                                { name: "temp_dec", type: "number", role: "value.temperature", read: true, write: false },
                                                { name: "humidity", type: "number", read: true, write: false, min: 0, max: 100, unit: "%" },
                                                { name: "aqi", type: "number", read: true, write: false, unit: "μg/m³" },
                                                { name: "average_aqi", type: "number", read: true, write: false, unit: "μg/m³" },
                                                { name: "led", type: "boolean", role: "switch", read: true, write: true, min: false, max: true },
                                                { name: "bright", type: "number", read: true, write: false, min: 0, max: 100, unit: "%" },
                                                { name: "volume", type: "number", read: true, write: false, min: 0, max: 100, unit: "%" },
                                                { name: "filter1_life", type: "number", read: true, write: false, min: 0, max: 100, unit: "%" },
                                                { name: "f1_hour", type: "number", read: true, write: false },
                                                { name: "f1_hour_used", type: "number", read: true, write: false },
                                                { name: "motor1_speed", type: "number", read: true, write: false, unit: "rpm" },
                                                { name: "motor2_speed", type: "number", read: true, write: false, unit: "rpm" },
                                                { name: "child_lock", type: "boolean", role: "switch", read: true, write: true, min: false, max: true }]
                                        

                                        Hab die Zeilen so geändert, dass ein Switch draus wird, wegen an- und ausschalten. Gibt aber nur Fehlermeldungen.

                                        Hatte oben mal LedBrightness in Led geändert zum Probieren.

                                        2021-04-11 16:53:45.602 - error: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch().
                                        2021-04-11 16:53:45.602 - error: javascript.0 (12084) unhandled promise rejection: device[obj].setLed is not a function
                                        2021-04-11 16:53:45.606 - error: javascript.0 (12084) TypeError: device[obj].setLed is not a function
                                        

                                        Edit:

                                        Hab gerade gesehen das der Air Purifier Pro mit der gleichen Bezeichnung wie im Skript im node-mihome Ordner unter Devices ist.

                                        static model = 'zhimi.airpurifier.v7';
                                          static name = 'Mi Air Purifier Pro';
                                          static image = 'https://static.home.mi.com/app/image/get/file/developer_1551944689505i5ubr.png';
                                        
                                        P Offline
                                        P Offline
                                        Pittini
                                        Developer
                                        wrote on last edited by
                                        #103

                                        @haselchen Du kannst nicht einfach Funktionsnamen ändern und hoffen das es funktioniert. Die müssen eine Entsprechung in node-mihome Definition haben, sonst gibt eben genau den Fehler den Du bekamst.
                                        Das brightness Thema hat imho eh nix mit Deinem Problem zu tun, man sollte nicht an zuvielen Ecken gleichzeitig schrauben. Versuchen wirs nochmal step by step:

                                        1. Du löscht jetzt bitte den kompletten Zweig dieses Gerätes aus dem Objektbaum
                                        2. Du setzt DIESEN Code anstatt dem vorhandenen in Device 14 ein:
                                        DefineDevice[14] = { // Tested and working - 
                                            info: {},
                                            model: "zhimi.airpurifier.v7",// https://miot-spec.org/miot-spec-v2/instance?type=urn:miot-spec-v2:device:air-purifier:0000A007:zhimi-v7:1
                                            description: "Mi Air Purifier",
                                            setter: {
                                                "power": async function (obj, val) { await device[obj].setPower(val) },
                                                "mode": async function (obj, val) { await device[obj].setFanLevel(val) },
                                                "led": async function (obj, val) { await device[obj].setDisplay(val) },
                                                "child_lock": async function (obj, val) { await device[obj].setChildLock(val) }
                                            },
                                            common:
                                                [{ name: "power", type: "boolean", role: "switch", read: true, write: true, min: false, max: true },
                                                { name: "mode", type: "string", read: true, write: true, states: { "auto": "auto", "silent": "silent", "favorite": "favorite" } },
                                                { name: "favorite_level", type: "number", read: true, write: false, min: 0, max: 16 },
                                                { name: "temp_dec", type: "number", role: "value.temperature", read: true, write: false },
                                                { name: "humidity", type: "number", read: true, write: false, min: 0, max: 100, unit: "%" },
                                                { name: "aqi", type: "number", read: true, write: false, unit: "μg/m³" },
                                                { name: "average_aqi", type: "number", read: true, write: false, unit: "μg/m³" },
                                                { name: "led", type: "boolean", role: "switch", read: true, write: true, min: false, max: true },
                                                { name: "bright", type: "number", read: true, write: false, min: 0, max: 100, unit: "%" },
                                                { name: "volume", type: "number", read: true, write: false, min: 0, max: 100, unit: "%" },
                                                { name: "filter1_life", type: "number", read: true, write: false, min: 0, max: 100, unit: "%" },
                                                { name: "f1_hour", type: "number", read: true, write: false },
                                                { name: "f1_hour_used", type: "number", read: true, write: false },
                                                { name: "motor1_speed", type: "number", read: true, write: false, unit: "rpm" },
                                                { name: "motor2_speed", type: "number", read: true, write: false, unit: "rpm" },
                                                { name: "child_lock", type: "boolean", role: "switch", read: true, write: true, min: false, max: true }]
                                        };
                                        

                                        Sollte es dann immer noch nicht klappen, bitte logging im Skript aktivieren und das Log dann posten

                                        1 Reply Last reply
                                        1
                                        • haselchenH haselchen

                                          @pittini

                                          Mache ich sofort.

                                          Könnte es an der Definitionsdatei liegen?
                                          Weil dort LedBrightness aufgeführt ist und dieser Air Purifier nur an/aus kann.
                                          Hab das Gefühl, egal was ich am Skript änder, man müsste bei der Datei vermutlich anfangen?!

                                          DefineDevice[14] = { // Tested and working -
                                              info: {},
                                              model: "zhimi.airpurifier.v7",// https://miot-spec.org/miot-spec-v2/instance?type=urn:miot-spec-v2:device:air-purifier:0000A007:zhimi-v7:1
                                              description: "Mi Air Purifier",
                                              setter: {
                                                  "power": async function (obj, val) { await device[obj].setPower(val) },
                                                  "mode": async function (obj, val) { await device[obj].setFanLevel(val) },
                                                  "led": async function (obj, val) { await device[obj].setLedBrightness(val) },
                                                  "child_lock": async function (obj, val) { await device[obj].setChildLock(val) }
                                              },
                                              common:
                                                  [{ name: "power", type: "boolean", role: "switch", read: true, write: true, min: false, max: true },
                                                  { name: "mode", type: "string", read: true, write: true, states: { "auto": "auto", "silent": "silent", "favorite": "favorite" } },
                                                  { name: "favorite_level", type: "number", read: true, write: false, min: 0, max: 16 },
                                                  { name: "temp_dec", type: "number", role: "value.temperature", read: true, write: false },
                                                  { name: "humidity", type: "number", read: true, write: false, min: 0, max: 100, unit: "%" },
                                                  { name: "aqi", type: "number", read: true, write: false, unit: "μg/m³" },
                                                  { name: "average_aqi", type: "number", read: true, write: false, unit: "μg/m³" },
                                                  { name: "led", type: "boolean", role: "switch", read: true, write: true, min: false, max: true },
                                                  { name: "bright", type: "number", read: true, write: false, min: 0, max: 100, unit: "%" },
                                                  { name: "volume", type: "number", read: true, write: false, min: 0, max: 100, unit: "%" },
                                                  { name: "filter1_life", type: "number", read: true, write: false, min: 0, max: 100, unit: "%" },
                                                  { name: "f1_hour", type: "number", read: true, write: false },
                                                  { name: "f1_hour_used", type: "number", read: true, write: false },
                                                  { name: "motor1_speed", type: "number", read: true, write: false, unit: "rpm" },
                                                  { name: "motor2_speed", type: "number", read: true, write: false, unit: "rpm" },
                                                  { name: "child_lock", type: "boolean", role: "switch", read: true, write: true, min: false, max: true }]
                                          

                                          Hab die Zeilen so geändert, dass ein Switch draus wird, wegen an- und ausschalten. Gibt aber nur Fehlermeldungen.

                                          Hatte oben mal LedBrightness in Led geändert zum Probieren.

                                          2021-04-11 16:53:45.602 - error: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch().
                                          2021-04-11 16:53:45.602 - error: javascript.0 (12084) unhandled promise rejection: device[obj].setLed is not a function
                                          2021-04-11 16:53:45.606 - error: javascript.0 (12084) TypeError: device[obj].setLed is not a function
                                          

                                          Edit:

                                          Hab gerade gesehen das der Air Purifier Pro mit der gleichen Bezeichnung wie im Skript im node-mihome Ordner unter Devices ist.

                                          static model = 'zhimi.airpurifier.v7';
                                            static name = 'Mi Air Purifier Pro';
                                            static image = 'https://static.home.mi.com/app/image/get/file/developer_1551944689505i5ubr.png';
                                          
                                          haselchenH Offline
                                          haselchenH Offline
                                          haselchen
                                          Most Active
                                          wrote on last edited by haselchen
                                          #104

                                          @Pittini

                                          Habs gefunden.
                                          Du hast

                                          "led": async function (obj, val) { await device[obj].setLedBrightness(val) },
                                          

                                          Hinein gehört

                                          "led": async function (obj, val) { await device[obj].setDisplay(val) },
                                          

                                          Laut Definitionsdatei:

                                            /**
                                             * Set display status
                                             * @param {boolean} v
                                             */
                                            setDisplay(v) {
                                              return this.miioCall('set_led', [v ? 'on' : 'off']);
                                            }
                                          
                                          

                                          Das Wort Display war es.
                                          Im Grunde macht das ja Spass, wenn es nicht so viel Zeit in Anspruch nehmen würde :)

                                          Synology DS218+ & 2 x Fujitsu Esprimo (VM/Container) + FritzBox7590 + 2 AVM 3000 Repeater & Homematic & HUE & Osram & Xiaomi, NPM 10.9.4, Nodejs 22.21.0 ,JS Controller 7.0.7 ,Admin 7.7.19

                                          P 1 Reply Last reply
                                          0
                                          Reply
                                          • Reply as topic
                                          Log in to reply
                                          • Oldest to Newest
                                          • Newest to Oldest
                                          • Most Votes


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          649

                                          Online

                                          32.7k

                                          Users

                                          82.5k

                                          Topics

                                          1.3m

                                          Posts
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                          ioBroker Community 2014-2025
                                          logo
                                          • Login

                                          • Don't have an account? Register

                                          • Login or register to search.
                                          • First post
                                            Last post
                                          0
                                          • Home
                                          • Recent
                                          • Tags
                                          • Unread 0
                                          • Categories
                                          • Unreplied
                                          • Popular
                                          • GitHub
                                          • Docu
                                          • Hilfe