Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. [Vorlage] Xiaomi Airpurifier 3H u.a. inkl. Token auslesen.

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

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

    This topic has been deleted. Only users with topic management privileges can see it.
    • P
      Pittini Developer @Muchul last edited by

      @muchul Ja dann nutze doch. Allerdings hab ich halt mitm mihome Adapter genau 0 zu tun, da biste hier falsch.

      M 1 Reply Last reply Reply Quote 0
      • M
        Muchul @Pittini last edited by

        @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 1 Reply Last reply Reply Quote 0
        • P
          Pittini Developer @Muchul last edited by

          @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 Reply Quote 0
          • M
            Muchul last edited by

            @pittini
            Siehste, und schon hast du mir geholfen 🙂

            1 Reply Last reply Reply Quote 0
            • Sebastian 0
              Sebastian 0 @Pittini last edited by

              @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 Reply Quote 0
              • P
                Pittini Developer @Sebastian 0 last edited by

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

                haselchen 1 Reply Last reply Reply Quote 0
                • haselchen
                  haselchen Most Active @Pittini last edited by

                  @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 P 2 Replies Last reply Reply Quote 0
                  • W
                    Wildbill @haselchen last edited by

                    @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 Reply Quote 0
                    • P
                      Pittini Developer @haselchen last edited by

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

                      haselchen 1 Reply Last reply Reply Quote 0
                      • marcuskl
                        marcuskl @Sebastian 0 last edited by

                        @sebastian-0 ich habe auch einen Erfolgreich eingebunden

                        1 Reply Last reply Reply Quote 0
                        • haselchen
                          haselchen Most Active @Pittini last edited by

                          @pittini

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

                          @Wildbill

                          der Pro OHNE H

                          W P 2 Replies Last reply Reply Quote 0
                          • W
                            Wildbill @haselchen last edited by

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

                            Gruss, Jürgen

                            1 Reply Last reply Reply Quote 0
                            • P
                              Pittini Developer @haselchen last edited by

                              @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?

                              haselchen 1 Reply Last reply Reply Quote 0
                              • haselchen
                                haselchen Most Active @Pittini last edited by 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 1 Reply Last reply Reply Quote 0
                                • P
                                  Pittini Developer @haselchen last edited by 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.

                                  haselchen 1 Reply Last reply Reply Quote 0
                                  • haselchen
                                    haselchen Most Active @Pittini last edited by 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 1 Reply Last reply Reply Quote 0
                                    • P
                                      Pittini Developer @haselchen last edited by

                                      @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

                                      haselchen 1 Reply Last reply Reply Quote 1
                                      • haselchen
                                        haselchen Most Active @Pittini last edited by

                                        @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 1 Reply Last reply Reply Quote 0
                                        • P
                                          Pittini Developer @haselchen last edited by

                                          @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.

                                          haselchen 1 Reply Last reply Reply Quote 0
                                          • haselchen
                                            haselchen Most Active @Pittini last edited by 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 haselchen 2 Replies Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            729
                                            Online

                                            31.9k
                                            Users

                                            80.1k
                                            Topics

                                            1.3m
                                            Posts

                                            49
                                            451
                                            65104
                                            Loading More Posts
                                            • Oldest to Newest
                                            • Newest to Oldest
                                            • Most Votes
                                            Reply
                                            • Reply as topic
                                            Log in to reply
                                            Community
                                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                            The ioBroker Community 2014-2023
                                            logo