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.
    • crunchip
      crunchip Forum Testing Most Active @Pittini last edited by crunchip

      @Pittini wüsste nicht was ich da falsch machen kann.
      Hab die .js aufgerufen und mit der aus deinem Link ersetzt.

      const  Device  =  require ( '../device-miio' ) ;
      
      Modul . exportiert  =  Klasse  erweitert  Gerät  {
      
       statisches  Modell  =  'zhimi.airpurifier.mb3' ;
       statischer  Name  =  'Mi Air Purifier 3H' ;
       statisches  Bild  =  'http://static.home.mi.com/app/image/get/file/developer_1543307568u9wu6wij.png' ;
      
       Konstruktor ( opts )  {
         super ( opts ) ;
      
         das . _miotSpecType  =  'Urne: miot-spec-v2: Gerät: Luftreiniger: 0000A007: zhimi-mb3: 2' ;
         das . _propertiesToMonitor  =  [
           'Luftreiniger: Fehler' ,
           'Luftreiniger: ein' ,
           'Luftreiniger: Lüfterstand' ,
           'Luftreiniger: Modus' ,
           'Umwelt: pm2.5-Dichte' ,
           'Umwelt: relative Luftfeuchtigkeit' ,
           'Umgebung: Temperatur' ,
           'Filter: Filterlebensdauer' ,
           'filter: filter-used-time' ,
           'Alarm: Alarm' ,
           'Anzeigelampe: Helligkeit' ,
           'Anzeigelampe: an' ,
           'physische Kontrollen gesperrt: physische Kontrollen gesperrt' ] ;
       }}
      
       getFilterlife ( )  {
         gib  das zurück . Eigenschaften [ 'Filter: Filterlebensdauer' ] ;
       }}
      
       getFilterused ( )  {
         gib  das zurück . Eigenschaften [ 'Filter: Filter-Verwendete Zeit' ] ;
       }}
      
       getPower ( )  {
         gib  das zurück . Eigenschaften [ 'Luftreiniger: ein' ] ;
       }}
      
       getMode ( )  {
         const  mode  =  this . Eigenschaften [ 'Luftreiniger: Modus' ] ;
         wenn  ( Modus  ===  0 )  zurückzukehren  'auto' ;
         wenn  ( Modus  ===  1 )  zurückzukehren  'Schlaf' ;
         wenn  ( Modus  ===  2 )  return  'Favorit' ;
         wenn  ( Modus  ===  3 )  zurück  'keine' ;
         return  undefined ;
       }}
      
       getFanLevel ( )  {  // 1 - 3
         gib  das zurück . Eigenschaften [ 'Luftreiniger: Gebläsestufe' ] ;
       }}
      
       getTemperature ( )  {
         gib  das zurück . Eigenschaften [ 'Umgebung: Temperatur' ] ;
       }}
      
       getHumidity ( )  {
         gib  das zurück . Eigenschaften [ 'Umgebung: relative Luftfeuchtigkeit' ] ;
       }}
      
       // eslint-disable-next-line camelcase
       getPM2_5 ( )  {
         gib  das zurück . Eigenschaften [ 'Umgebung: pm2.5-Dichte' ] ;
       }}
      
       getFilterRemaining ( )  {
         const  filterTotal  =  this . Eigenschaften [ 'Filter: Filterlebensdauer' ] ;
         const  filterUsed  =  this . Eigenschaften [ 'Filter: Filter-Verwendete Zeit' ] ;
         if  ( filterTotal  >  0  &&  filterUsed > = 0 )  {
           // return Math.max ((1 - filterUsed / filterTotal) * 100, 0);
           Rückkehr  Math . max ( filterUsed / ( 100  -  filterTotal ) * filterTotal / 24 ,  0 ) ;
         }}
         return  undefined ;
       }}
      
       getBuzzer ( )  {
         gib  das zurück . Eigenschaften [ 'Alarm: Alarm' ] ;
       }}
      
       getLcdBrightness ( )  {
         gib  das zurück . Eigenschaften [ 'Anzeigelampe: Helligkeit' ] ;
       }}
      
       setPower ( v )  {
         gib  das zurück . miotSetProperty ( 'Luftreiniger: ein' ,  v ) ;
       }}
      
       setMode ( v )  {
         if  ( v  ===  'auto' )  v  =  0 ;
         sonst  wenn  ( v  ===  'Schlaf' )  v  =  1 ;
         sonst  wenn  ( v  ===  'Favorit' )  v  =  2 ;
         sonst  wenn  ( v  ===  'keine' )  v  =  3 ;
         gib  das zurück . miotSetProperty ( 'Luftreiniger: Modus' ,  v ) ;
       }}
      
       setFanLevel ( v )  {  // 1-3
         gib  das zurück . miotSetProperty ( 'Luftreiniger: Lüfterstufe' ,  v ) ;
       }}
      
       setBuzzer ( v )  {
         gib  das zurück . miotSetProperty ( 'alarm: alarm' ,  v ) ;
       }}
      
       setLcdBrightness ( v )  {  // 0-hellste, 1-schimmernde, 2-led_closed
         gib  das zurück . miotSetProperty ( 'Anzeigelampe: Helligkeit' ,  v ) ;
       }}
      
       setChildLock ( v )  {
         gib  das zurück . miotSetProperty ( 'physische Kontrollen gesperrt: physische Kontrollen gesperrt' ,  v ) ;
       }}
      
      } ;
      
      


      edit: jetzt weiss ich den Fehler, Browser hatte übersetzt englisch/deutsch, hatte ich nicht drauf geachtet

      Edit1:Purifier Script stimmen nun die Datenpunkte 👍
      AllmyMi aber unverändert-keine Werte

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

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

        @Pittini wüsste nicht was ich da falsch machen kann.
        Hab die .js aufgerufen und mit der aus deinem Link ersetzt.

        const  Device  =  require ( '../device-miio' ) ;
        
        Modul . exportiert  =  Klasse  erweitert  Gerät  {
        
         statisches  Modell  =  'zhimi.airpurifier.mb3' ;
         statischer  Name  =  'Mi Air Purifier 3H' ;
         statisches  Bild  =  'http://static.home.mi.com/app/image/get/file/developer_1543307568u9wu6wij.png' ;
        
         Konstruktor ( opts )  {
           super ( opts ) ;
        
           das . _miotSpecType  =  'Urne: miot-spec-v2: Gerät: Luftreiniger: 0000A007: zhimi-mb3: 2' ;
           das . _propertiesToMonitor  =  [
             'Luftreiniger: Fehler' ,
             'Luftreiniger: ein' ,
             'Luftreiniger: Lüfterstand' ,
             'Luftreiniger: Modus' ,
             'Umwelt: pm2.5-Dichte' ,
             'Umwelt: relative Luftfeuchtigkeit' ,
             'Umgebung: Temperatur' ,
             'Filter: Filterlebensdauer' ,
             'filter: filter-used-time' ,
             'Alarm: Alarm' ,
             'Anzeigelampe: Helligkeit' ,
             'Anzeigelampe: an' ,
             'physische Kontrollen gesperrt: physische Kontrollen gesperrt' ] ;
         }}
        
         getFilterlife ( )  {
           gib  das zurück . Eigenschaften [ 'Filter: Filterlebensdauer' ] ;
         }}
        
         getFilterused ( )  {
           gib  das zurück . Eigenschaften [ 'Filter: Filter-Verwendete Zeit' ] ;
         }}
        
         getPower ( )  {
           gib  das zurück . Eigenschaften [ 'Luftreiniger: ein' ] ;
         }}
        
         getMode ( )  {
           const  mode  =  this . Eigenschaften [ 'Luftreiniger: Modus' ] ;
           wenn  ( Modus  ===  0 )  zurückzukehren  'auto' ;
           wenn  ( Modus  ===  1 )  zurückzukehren  'Schlaf' ;
           wenn  ( Modus  ===  2 )  return  'Favorit' ;
           wenn  ( Modus  ===  3 )  zurück  'keine' ;
           return  undefined ;
         }}
        
         getFanLevel ( )  {  // 1 - 3
           gib  das zurück . Eigenschaften [ 'Luftreiniger: Gebläsestufe' ] ;
         }}
        
         getTemperature ( )  {
           gib  das zurück . Eigenschaften [ 'Umgebung: Temperatur' ] ;
         }}
        
         getHumidity ( )  {
           gib  das zurück . Eigenschaften [ 'Umgebung: relative Luftfeuchtigkeit' ] ;
         }}
        
         // eslint-disable-next-line camelcase
         getPM2_5 ( )  {
           gib  das zurück . Eigenschaften [ 'Umgebung: pm2.5-Dichte' ] ;
         }}
        
         getFilterRemaining ( )  {
           const  filterTotal  =  this . Eigenschaften [ 'Filter: Filterlebensdauer' ] ;
           const  filterUsed  =  this . Eigenschaften [ 'Filter: Filter-Verwendete Zeit' ] ;
           if  ( filterTotal  >  0  &&  filterUsed > = 0 )  {
             // return Math.max ((1 - filterUsed / filterTotal) * 100, 0);
             Rückkehr  Math . max ( filterUsed / ( 100  -  filterTotal ) * filterTotal / 24 ,  0 ) ;
           }}
           return  undefined ;
         }}
        
         getBuzzer ( )  {
           gib  das zurück . Eigenschaften [ 'Alarm: Alarm' ] ;
         }}
        
         getLcdBrightness ( )  {
           gib  das zurück . Eigenschaften [ 'Anzeigelampe: Helligkeit' ] ;
         }}
        
         setPower ( v )  {
           gib  das zurück . miotSetProperty ( 'Luftreiniger: ein' ,  v ) ;
         }}
        
         setMode ( v )  {
           if  ( v  ===  'auto' )  v  =  0 ;
           sonst  wenn  ( v  ===  'Schlaf' )  v  =  1 ;
           sonst  wenn  ( v  ===  'Favorit' )  v  =  2 ;
           sonst  wenn  ( v  ===  'keine' )  v  =  3 ;
           gib  das zurück . miotSetProperty ( 'Luftreiniger: Modus' ,  v ) ;
         }}
        
         setFanLevel ( v )  {  // 1-3
           gib  das zurück . miotSetProperty ( 'Luftreiniger: Lüfterstufe' ,  v ) ;
         }}
        
         setBuzzer ( v )  {
           gib  das zurück . miotSetProperty ( 'alarm: alarm' ,  v ) ;
         }}
        
         setLcdBrightness ( v )  {  // 0-hellste, 1-schimmernde, 2-led_closed
           gib  das zurück . miotSetProperty ( 'Anzeigelampe: Helligkeit' ,  v ) ;
         }}
        
         setChildLock ( v )  {
           gib  das zurück . miotSetProperty ( 'physische Kontrollen gesperrt: physische Kontrollen gesperrt' ,  v ) ;
         }}
        
        } ;
        
        


        edit: jetzt weiss ich den Fehler, Browser hatte übersetzt englisch/deutsch, hatte ich nicht drauf geachtet

        Edit1:Purifier Script stimmen nun die Datenpunkte 👍
        AllmyMi aber unverändert-keine Werte

        Nochmal, Allmymi is noch nicht zum Gebrauch, das ne Dev Version, Werte anzeigen is da noch gar nich implementiert in Deiner Version, das hab ich erst gestern Nacht gemacht. Sei einfach mit der Purifier Variante glücklich, soweit ich das verstanden hab läuft die ja jetzt. Nicht falsch verstehen, bin froh wenn ich Tester hab, aber halt erst wenns Sinn macht.

        crunchip 1 Reply Last reply Reply Quote 0
        • crunchip
          crunchip Forum Testing Most Active @Pittini last edited by

          @Pittini kein Problem, hatte ja geschrieben, installiert zum Test....alles gut

          zum Thema Purifier Script,
          ist mir aufgefallen, das der DP Filter remaining scheinbar hin und wieder seinen Wert verändert( total abweichend).
          Wie gesagt, Gerät ist neu, laut App verbleibend 144 Tage. Hatte ja anfangs geschrieben das der Wert nicht übereinstimmt(68.6868686). Nachdem ich die .js geändert hatte, wurden anschliessend die verbleibende Tage richtig angezeigt. Abends hatte ich dann nochmal nachgesehen, wieder ein total falscher Wert.
          jetzt gerade werden 108.208333333333 angezeigt.
          Das nur als Hinweis, da ich nicht weiß, wie dieser zu Stande kommt (Berechnung/Daten holen/senden) und es eventuell nennenswert ist.

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

          Sei einfach mit der Purifier Variante glücklich

          bin ich 😊 👍

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

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

            Das nur als Hinweis, da ich nicht weiß, wie dieser zu Stande kommt (Berechnung/Daten holen/senden) und es eventuell nennenswert ist.

            In der Datei die Du ändern musstest, findest direkt die Berechnung:

            getFilterRemaining() {
                const filterTotal = this.properties['filter:filter-life-level'];
                const filterUsed = this.properties['filter:filter-used-time'];
                if (filterTotal > 0 && filterUsed >= 0) {
                  //return Math.max((1 - filterUsed / filterTotal) * 100, 0);
                  return Math.max(filterUsed / (100 - filterTotal) * filterTotal/24, 0);
                }
                return undefined;
              }
            

            Mehr is da nicht, die Daten kommen direkt aus der Cloud

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

              @Pittini
              Ich habe mal das Skript neu gestartet, aber das Log hat wohl nicht viel Aussagekraft:

              javascript.0	2020-12-26 12:48:45.813	info	(28063) script.js.common.Mihome: registered 0 subscriptions and 0 schedules
              javascript.0	2020-12-26 12:48:45.785	info	(28063) script.js.common.Mihome: Reaching init
              javascript.0	2020-12-26 12:48:45.784	info	(28063) script.js.common.Mihome: Starting AllMyMi V.0.1.8
              javascript.0	2020-12-26 12:48:45.741	info	(28063) Start javascript script.js.common.Mihome
              javascript.0	2020-12-26 12:48:34.299	info	(28063) Stop script script.js.common.Mihome
              

              Unter https://i.mi.com/ kann ich mich mit meinen Anmeldedaten einloggen, aber ich habe den Eindruck, dass dies aus ioBroker heraus nicht funktioniert. Hast Du eventuell eine Ahnung, woran das liegen kann, oder wie ich das beseitigen kann? Alle Adapter & Node,js sind aktuell, läuft auf Debian Buster.

              Viele Grüße,
              Timo

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

                @Spampunk AllMyMi is dev die kann gar nicht gehen bei Dir weil da Axios noch verwendet wird. Nimm doch bitte einfach die Purifier Version um zu sehen ob Daten kommen.

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

                  @Pittini
                  Auch hier ist nichts weiter passiert. Das Log sagt:

                  javascript.0	2020-12-26 16:53:15.789	info	(17952) script.js.common.Mihome: registered 0 subscriptions and 0 schedules
                  javascript.0	2020-12-26 16:53:15.747	info	(17952) script.js.common.Mihome: Reaching init
                  javascript.0	2020-12-26 16:53:15.746	info	(17952) script.js.common.Mihome: Starting MiHome-Airpurifier3H-V0.1.6
                  javascript.0	2020-12-26 16:53:15.478	info	(17952) Start javascript script.js.common.Mihome
                  
                  P 1 Reply Last reply Reply Quote 0
                  • P
                    Pittini Developer @Spampunk last edited by

                    @Spampunk
                    An die Anleitung gehalten? JS Adapter Version > 4.8.0? node-mihome im js Adapter eingetragen? Richtigen Server unter options eingetragen?

                    S 1 Reply Last reply Reply Quote 0
                    • crunchip
                      crunchip Forum Testing Most Active last edited by

                      @Pittini hab grad diese Meldung im log gesehen

                      2020-12-27 12:58:12.299 - warn: javascript.0 (1400) You are assigning a undefined to the state "javascript.0.MiHome.308331024.Mode" which expects a string. Please fix your code to use a string or change the state type to undefined. This warning might become an error in future versions.
                      2020-12-27 12:58:12.303 - warn: javascript.0 (1400) at setState (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1416:20)
                      2020-12-27 12:58:12.303 - warn: javascript.0 (1400) at RefreshDps (script.js.Mipurifier3H:181:9)
                      2020-12-27 12:58:12.303 - warn: javascript.0 (1400) at module.exports. (script.js.Mipurifier3H:160:9)
                      2020-12-27 12:58:12.303 - warn: javascript.0 (1400) at module.exports.emit (events.js:314:20)
                      2020-12-27 12:58:12.304 - warn: javascript.0 (1400) at module.exports.EventEmitter.emit (domain.js:483:12)
                      2020-12-27 12:58:12.304 - warn: javascript.0 (1400) at module.exports.loadProperties (/opt/iobroker/node_modules/iobroker.javascript/node_modules/node-mihome/lib/device-miio.js:107:12)
                      2020-12-27 12:58:12.304 - warn: javascript.0 (1400) at Timeout._onTimeout (/opt/iobroker/node_modules/iobroker.javascript/node_modules/node-mihome/lib/device-miio.js:73:9)
                      2020-12-27 12:58:12.304 - error: javascript.0 (1400) script.js.Mipurifier3H: setForeignState: undefined is not a valid state value
                      2020-12-27 12:58:12.304 - warn: javascript.0 (1400) You are assigning a undefined to the state "javascript.0.MiHome.308331024.FanLevel" which expects a number. Please fix your code to use a number or change the state type to undefined. This warning might become an error in future versions.
                      2020-12-27 12:58:12.305 - warn: javascript.0 (1400) at setState (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1416:20)
                      2020-12-27 12:58:12.305 - warn: javascript.0 (1400) at RefreshDps (script.js.Mipurifier3H:185:9)
                      2020-12-27 12:58:12.306 - warn: javascript.0 (1400) at module.exports. (script.js.Mipurifier3H:160:9)
                      2020-12-27 12:58:12.306 - warn: javascript.0 (1400) at module.exports.emit (events.js:314:20)
                      2020-12-27 12:58:12.306 - warn: javascript.0 (1400) at module.exports.EventEmitter.emit (domain.js:483:12)
                      2020-12-27 12:58:12.308 - warn: javascript.0 (1400) at module.exports.loadProperties (/opt/iobroker/node_modules/iobroker.javascript/node_modules/node-mihome/lib/device-miio.js:107:12)
                      2020-12-27 12:58:12.309 - warn: javascript.0 (1400) at Timeout._onTimeout (/opt/iobroker/node_modules/iobroker.javascript/node_modules/node-mihome/lib/device-miio.js:73:9)
                      2020-12-27 12:58:12.309 - error: javascript.0 (1400) script.js.Mipurifier3H: setForeignState: undefined is not a valid state value
                      2020-12-27 12:58:12.309 - warn: javascript.0 (1400) You are assigning a undefined to the state "javascript.0.MiHome.308331024.Buzzer" which expects a boolean. Please fix your code to use a boolean or change the state type to undefined. This warning might become an error in future versions.
                      2020-12-27 12:58:12.310 - warn: javascript.0 (1400) at setState (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1416:20)
                      2020-12-27 12:58:12.310 - warn: javascript.0 (1400) at RefreshDps (script.js.Mipurifier3H:189:9)
                      2020-12-27 12:58:12.310 - warn: javascript.0 (1400) at module.exports. (script.js.Mipurifier3H:160:9)
                      2020-12-27 12:58:12.310 - warn: javascript.0 (1400) at module.exports.emit (events.js:314:20)
                      2020-12-27 12:58:12.310 - warn: javascript.0 (1400) at module.exports.EventEmitter.emit (domain.js:483:12)
                      2020-12-27 12:58:12.311 - warn: javascript.0 (1400) at module.exports.loadProperties (/opt/iobroker/node_modules/iobroker.javascript/node_modules/node-mihome/lib/device-miio.js:107:12)
                      2020-12-27 12:58:12.311 - warn: javascript.0 (1400) at Timeout._onTimeout (/opt/iobroker/node_modules/iobroker.javascript/node_modules/node-mihome/lib/device-miio.js:73:9)
                      2020-12-27 12:58:12.311 - error: javascript.0 (1400) script.js.Mipurifier3H: setForeignState: undefined is not a valid state value
                      2020-12-27 12:58:12.311 - warn: javascript.0 (1400) You are assigning a undefined to the state "javascript.0.MiHome.308331024.LcdBrightness" which expects a number. Please fix your code to use a number or change the state type to undefined. This warning might become an error in future versions.
                      2020-12-27 12:58:12.312 - warn: javascript.0 (1400) at setState (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1416:20)
                      2020-12-27 12:58:12.312 - warn: javascript.0 (1400) at RefreshDps (script.js.Mipurifier3H:193:9)
                      2020-12-27 12:58:12.312 - warn: javascript.0 (1400) at module.exports. (script.js.Mipurifier3H:160:9)
                      2020-12-27 12:58:12.312 - warn: javascript.0 (1400) at module.exports.emit (events.js:314:20)
                      2020-12-27 12:58:12.313 - warn: javascript.0 (1400) at module.exports.EventEmitter.emit (domain.js:483:12)
                      2020-12-27 12:58:12.313 - warn: javascript.0 (1400) at module.exports.loadProperties (/opt/iobroker/node_modules/iobroker.javascript/node_modules/node-mihome/lib/device-miio.js:107:12)
                      2020-12-27 12:58:12.313 - warn: javascript.0 (1400) at Timeout._onTimeout (/opt/iobroker/node_modules/iobroker.javascript/node_modules/node-mihome/lib/device-miio.js:73:9)
                      2020-12-27 12:58:12.313 - error: javascript.0 (1400) script.js.Mipurifier3H: setForeignState: undefined is not a valid state value
                      2020-12-27 12:58:12.313 - warn: javascript.0 (1400) You are assigning a undefined to the state "javascript.0.MiHome.308331024.Temperature" which expects a number. Please fix your code to use a number or change the state type to undefined. This warning might become an error in future versions.
                      2020-12-27 12:58:12.314 - warn: javascript.0 (1400) at setState (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1416:20)
                      2020-12-27 12:58:12.314 - warn: javascript.0 (1400) at RefreshDps (script.js.Mipurifier3H:198:9)
                      2020-12-27 12:58:12.314 - warn: javascript.0 (1400) at module.exports. (script.js.Mipurifier3H:160:9)
                      2020-12-27 12:58:12.314 - warn: javascript.0 (1400) at module.exports.emit (events.js:314:20)
                      2020-12-27 12:58:12.315 - warn: javascript.0 (1400) at module.exports.EventEmitter.emit (domain.js:483:12)
                      2020-12-27 12:58:12.315 - warn: javascript.0 (1400) at module.exports.loadProperties (/opt/iobroker/node_modules/iobroker.javascript/node_modules/node-mihome/lib/device-miio.js:107:12)
                      2020-12-27 12:58:12.315 - warn: javascript.0 (1400) at Timeout._onTimeout (/opt/iobroker/node_modules/iobroker.javascript/node_modules/node-mihome/lib/device-miio.js:73:9)
                      2020-12-27 12:58:12.315 - error: javascript.0 (1400) script.js.Mipurifier3H: setForeignState: undefined is not a valid state value
                      2020-12-27 12:58:12.315 - warn: javascript.0 (1400) You are assigning a undefined to the state "javascript.0.MiHome.308331024.Humidity" which expects a number. Please fix your code to use a number or change the state type to undefined. This warning might become an error in future versions.
                      2020-12-27 12:58:12.316 - warn: javascript.0 (1400) at setState (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1416:20)
                      2020-12-27 12:58:12.316 - warn: javascript.0 (1400) at RefreshDps (script.js.Mipurifier3H:202:9)
                      2020-12-27 12:58:12.316 - warn: javascript.0 (1400) at module.exports. (script.js.Mipurifier3H:160:9)
                      2020-12-27 12:58:12.316 - warn: javascript.0 (1400) at module.exports.emit (events.js:314:20)
                      2020-12-27 12:58:12.317 - warn: javascript.0 (1400) at module.exports.EventEmitter.emit (domain.js:483:12)
                      2020-12-27 12:58:12.317 - warn: javascript.0 (1400) at module.exports.loadProperties (/opt/iobroker/node_modules/iobroker.javascript/node_modules/node-mihome/lib/device-miio.js:107:12)
                      2020-12-27 12:58:12.317 - warn: javascript.0 (1400) at Timeout._onTimeout (/opt/iobroker/node_modules/iobroker.javascript/node_modules/node-mihome/lib/device-miio.js:73:9)
                      2020-12-27 12:58:12.317 - error: javascript.0 (1400) script.js.Mipurifier3H: setForeignState: undefined is not a valid state value
                      2020-12-27 12:58:12.317 - warn: javascript.0 (1400) You are assigning a undefined to the state "javascript.0.MiHome.308331024.PM2_5" which expects a number. Please fix your code to use a number or change the state type to undefined. This warning might become an error in future versions.
                      2020-12-27 12:58:12.318 - warn: javascript.0 (1400) at setState (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1416:20)
                      2020-12-27 12:58:12.318 - warn: javascript.0 (1400) at RefreshDps (script.js.Mipurifier3H:206:9)
                      2020-12-27 12:58:12.318 - warn: javascript.0 (1400) at module.exports. (script.js.Mipurifier3H:160:9)
                      2020-12-27 12:58:12.318 - warn: javascript.0 (1400) at module.exports.emit (events.js:314:20)
                      2020-12-27 12:58:12.319 - warn: javascript.0 (1400) at module.exports.EventEmitter.emit (domain.js:483:12)
                      2020-12-27 12:58:12.319 - warn: javascript.0 (1400) at module.exports.loadProperties (/opt/iobroker/node_modules/iobroker.javascript/node_modules/node-mihome/lib/device-miio.js:107:12)
                      2020-12-27 12:58:12.319 - warn: javascript.0 (1400) at Timeout._onTimeout (/opt/iobroker/node_modules/iobroker.javascript/node_modules/node-mihome/lib/device-miio.js:73:9)
                      2020-12-27 12:58:12.319 - error: javascript.0 (1400) script.js.Mipurifier3H: setForeignState: undefined is not a valid state value
                      2020-12-27 12:58:12.319 - warn: javascript.0 (1400) You are assigning a undefined to the state "javascript.0.MiHome.308331024.FilterRemaining" which expects a number. Please fix your code to use a number or change the state type to undefined. This warning might become an error in future versions.
                      2020-12-27 12:58:12.320 - warn: javascript.0 (1400) at setState (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1416:20)
                      2020-12-27 12:58:12.320 - warn: javascript.0 (1400) at RefreshDps (script.js.Mipurifier3H:210:9)
                      2020-12-27 12:58:12.320 - warn: javascript.0 (1400) at module.exports. (script.js.Mipurifier3H:160:9)
                      2020-12-27 12:58:12.320 - warn: javascript.0 (1400) at module.exports.emit (events.js:314:20)
                      2020-12-27 12:58:12.321 - warn: javascript.0 (1400) at module.exports.EventEmitter.emit (domain.js:483:12)
                      2020-12-27 12:58:12.321 - warn: javascript.0 (1400) at module.exports.loadProperties (/opt/iobroker/node_modules/iobroker.javascript/node_modules/node-mihome/lib/device-miio.js:107:12)
                      2020-12-27 12:58:12.321 - warn: javascript.0 (1400) at Timeout._onTimeout (/opt/iobroker/node_modules/iobroker.javascript/node_modules/node-mihome/lib/device-miio.js:73:9)
                      2020-12-27 12:58:12.321 - error: javascript.0 (1400) script.js.Mipurifier3H: setForeignState: undefined is not a valid state value
                      

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

                        @crunchip Einmalig? Wenn nein, wie oft? Seit wann? Iwas geändert?

                        crunchip 1 Reply Last reply Reply Quote 0
                        • crunchip
                          crunchip Forum Testing Most Active @Pittini last edited by crunchip

                          @Pittini ist mir nur jetzt einmal aufgefallen durch Zufall, weil ich das log offen hatte. Nein nichts geändert und auch nichts geschaltet
                          edit: guck grad das log durch, tritt mehrmals auf
                          log von heute Nacht ab

                          • 02:54
                          • 03:56
                          • 04:09
                          • 05:42
                          • 12:58
                          P 1 Reply Last reply Reply Quote 0
                          • P
                            Pittini Developer @crunchip last edited by

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

                            @Pittini ist mir nur jetzt einmal aufgefallen durch Zufall, weil ich das log offen hatte. Nein nichts geändert und auch nichts geschaltet
                            edit: guck grad das log durch, tritt mehrmals auf
                            log von heute Nacht ab

                            • 02:54
                            • 03:56
                            • 04:09
                            • 05:42
                            • 12:58

                            Ok, danke, offenbar kommt da gelegentlich nix an von der Cloud. Werd ich abfangen in der nächsten Version. Danke für die Meldung.

                            1 Reply Last reply Reply Quote 1
                            • S
                              Spampunk @Pittini last edited by

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

                              @Spampunk

                              An die Anleitung gehalten? Soweit ich sie verstanden habe, ja.

                              JS Adapter Version > 4.8.0? Version 4.8.4

                              node-mihome im js Adapter eingetragen? Ja, habe ich.

                              Richtigen Server unter options eingetragen? Den Deutschen, ja (wie in der Xiaomi App).

                              Woran kann es noch liegen? Ich habe die Standard-Firewall innerhalb der Fritzbox. Mit meinem Handy kann ich im WLAN auf Xiaomi App und FloleVac App zugreifen. Kann ich unter iobroker eventuell den Xiaomi-Server anpingen? Wie müsste ich dann wohl vorgehen?

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

                                @Spampunk Das einzige was mir noch einfällt und zumindest in einem Fall geholfen hat, wäre mal das komplette System neuzustarten.

                                S M 2 Replies Last reply Reply Quote 0
                                • S
                                  Spampunk @Pittini last edited by

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

                                  @Spampunk Das einzige was mir noch einfällt und zumindest in einem Fall geholfen hat, wäre mal das komplette System neuzustarten.

                                  Eine Sache ist mir noch aufgefallen: im Skriptbereich wird mir rot unterschlängelt Cannot find module 'node-mihome' angezeigt, obwohl ich es im Javascript-Adapter eingetragen habe. Muss ich dieses Modul noch irgendwo installieren?

                                  Unbenannt.png

                                  crunchip 1 Reply Last reply Reply Quote 0
                                  • crunchip
                                    crunchip Forum Testing Most Active @Spampunk last edited by

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

                                    Muss ich dieses Modul noch irgendwo installieren

                                    wenn du es dort einträgst, wird es ja installiert, wobei mir das auch schon mal passiert ist, das ein Modul nicht korrekt funktionierte und habe es dann manuell über die Konsole installiert.
                                    letztendlich, ein Neustart, wie zuvor schon erwähnt

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

                                      @pittini

                                      Habe versucht wie folgt das Script zu installiere:

                                      1. Javascript adapter 4.8.4
                                      2. "node-mihome" beim Javascript Adapter unter "Zusätzliche NPM-Module" eingetragen
                                      3. Das Script in raw von https://raw.githubusercontent.com/Pittini/iobroker-nodemihome/main/AllMyMi-V0.2.5.js Als neues Javascript script angelegt
                                      4. user und passw eingetragen. country auf de belassen.
                                        Bekomme aber folgenden Fehler:
                                      2021-01-20 13:12:44.977  - info: javascript.0 (15537) Start javascript script.js.VIS.Xiaomi.AllMyMi
                                      2021-01-20 13:12:45.223  - error: javascript.0 (15537) script.js.VIS.Xiaomi.AllMyMi: Error: Cannot find module '/opt/iobroker/node_modules/iobroker.javascript/lib/../../node-mihome'
                                      2021-01-20 13:12:45.224  - error: javascript.0 (15537)     at script.js.VIS.Xiaomi.AllMyMi:3:16
                                      2021-01-20 13:12:45.225  - error: javascript.0 (15537)     at Script.runInContext (vm.js:133:20)
                                      2021-01-20 13:12:45.226  - info: javascript.0 (15537) script.js.VIS.Xiaomi.AllMyMi: Starting AllMyMi V.0.2.5
                                      2021-01-20 13:12:45.227  - info: javascript.0 (15537) script.js.VIS.Xiaomi.AllMyMi: Reaching init
                                      2021-01-20 13:12:45.233  - info: javascript.0 (15537) script.js.VIS.Xiaomi.AllMyMi: registered 0 subscriptions and 0 schedules
                                      2021-01-20 13:12:45.238  - error: javascript.0 (15537) script.js.VIS.Xiaomi.AllMyMi: TypeError: Cannot read property 'miioProtocol' of undefined
                                      2021-01-20 13:12:45.239  - error: javascript.0 (15537)     at Init (script.js.VIS.Xiaomi.AllMyMi:586:12)
                                      2021-01-20 13:12:45.240  - error: javascript.0 (15537)     at script.js.VIS.Xiaomi.AllMyMi:67:1
                                      2021-01-20 13:12:45.240  - error: javascript.0 (15537)     at Script.runInContext (vm.js:133:20)
                                      

                                      inden logs habe ich gesehen, dass es so installiert wurde, läuft auch ohne Fehler wenn ich es manuell ausführe
                                      npm install node-mihome --production --prefix "/opt/iobroker/node_modules/iobroker.javascript"

                                      find . -name node-mihome
                                      ./node_modules/iobroker.javascript/node_modules/node-mihome
                                      

                                      Was habe ich übersehen?

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

                                        @m76

                                        wenn ich den require ändere auf:
                                        const mihome = require('iobroker.javascript/node_modules/node-mihome');

                                        bekomme ich folgenden Fehler:

                                        2021-01-20 13:59:22.353  - error: javascript.0 (22232) script.js.VIS.Xiaomi.testMii: /opt/iobroker/node_modules/iobroker.javascript/node_modules/node-mihome/lib/devices/deerma.humidifier.jsq.js:5
                                        2021-01-20 13:59:22.353  - error: javascript.0 (22232)     at Object.Module._extensions..js (internal/modules/cjs/loader.js:789:10)
                                        2021-01-20 13:59:22.353  - error: javascript.0 (22232)     at Module.load (internal/modules/cjs/loader.js:653:32)
                                        2021-01-20 13:59:22.354  - error: javascript.0 (22232)     at tryModuleLoad (internal/modules/cjs/loader.js:593:12)
                                        2021-01-20 13:59:22.354  - error: javascript.0 (22232)     at Function.Module._load (internal/modules/cjs/loader.js:585:3)
                                        2021-01-20 13:59:22.354  - error: javascript.0 (22232)     at Module.require (internal/modules/cjs/loader.js:692:17)
                                        2021-01-20 13:59:22.354  - error: javascript.0 (22232)     at require (internal/modules/cjs/helpers.js:25:18)
                                        2021-01-20 13:59:22.354  - error: javascript.0 (22232)     at glob.sync.forEach.modelPath (/opt/iobroker/node_modules/iobroker.javascript/node_modules/node-mihome/lib/models.js:9:23)
                                        2021-01-20 13:59:22.355  - error: javascript.0 (22232)     at Array.forEach (<anonymous>)
                                        ...
                                        
                                        W 1 Reply Last reply Reply Quote 0
                                        • W
                                          Wildbill @m76 last edited by

                                          @m76 Hast Du den JS-Adapter danach einmal komplett neu gestartet?

                                          Gruß, Jürgen

                                          M 1 Reply Last reply Reply Quote 0
                                          • M
                                            m76 @Wildbill last edited by

                                            @wildbill

                                            hi, ja, ich hatte den erst in compact mode. Verursachte aber Probleme, startete sich immer wieder neu.
                                            Ich hatte auch probiert:
                                            npm install node-mihome --production --prefix "/opt/iobroker/node_modules/iobroker.javascript"
                                            (wie gesehen im log - keine Auffälligkeiten)
                                            npm install node-mihome
                                            Letzteres brachtre gleiche Fehlermeldung wenn ichmich nicht irre als wie mit dem "require".

                                            W 1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            498
                                            Online

                                            31.9k
                                            Users

                                            80.1k
                                            Topics

                                            1.3m
                                            Posts

                                            50
                                            454
                                            65163
                                            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