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. ioBroker Allgemein
  4. [Adapter] - Mihome

NEWS

  • Monatsrückblick Januar/Februar 2026 ist online!
    BluefoxB
    Bluefox
    18
    1
    717

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

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

[Adapter] - Mihome

Scheduled Pinned Locked Moved ioBroker Allgemein
mihome
559 Posts 111 Posters 192.0k Views 20 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.
  • R Offline
    R Offline
    ramses
    wrote on last edited by
    #474

    @nick21:

    Habe mir heute nen Satz Ikea tradfri Lampen gekauft und mit dem Xiaomi Gateway verbunden. Leider erscheinen sie bei iobroker nicht unter Objekten. Ist die Einbindung noch geplant ? `

    Wenn ich mir die Produktübersicht des Adapters anschaue, würde ich einfach mal auf nein tippen. Also entweder das Tradfri Gateway , ein Hue Gateway oder die USB-Stick Zigbee-Lösung für die Bastler nehmen.

    1 Reply Last reply
    0
    • DiginixD Offline
      DiginixD Offline
      Diginix
      wrote on last edited by
      #475

      Die IKEA Unterstützung von Xiaomi ist ja recht neu. Da ist es klar dass im Adapter bisher nur Xiaomi Produkte unterstützt wurden.

      Die Frage ist eher ob ein Entwickler Zeit hätte/fände den Adapter weiterzuentwickeln.

      Und zuerst müsste mal jemand im Log (debug level) prüfen ob das Gateway überhaupt Werte der IKEA Teile raus reicht.

      ..:: So long! Tom ::..

      NUC7i3 (Ubuntu Proxmox VM) | Echo Dots 2+3. Gen | Xiaomi Sensoren | Mi Robot 1S | Yeelight | Sonoff | Shelly | H801 RGB | Gosund SP1 | NodeMCU+ESP32 | Kostal Plenticore PV+BYD | openWB

      1 Reply Last reply
      0
      • S Offline
        S Offline
        Superdad
        wrote on last edited by
        #476

        @ramses:

        @Superdad:

        Mal so eine Frage nebenher.

        Wie hast du im Unifi dem Gateway das Internet verboten? Also welche Einstellungen hast du vorgenommen? `

        Im Unifi überhaupt nicht. Ich habe noch einen DHCP Server laufen. Dort habe ich einfach für den mihome eine Reservierung auf die MAC-Adresse gemacht und als DNS Server und Gateway jeweils 0.0.0.0 zugewiesen. `

        Danke!

        CCU3

        iOBroker auf IntelNUC Proxmox

        1 Reply Last reply
        0
        • R Offline
          R Offline
          ramses
          wrote on last edited by
          #477

          Weiß jemand ob möglich ist sowas wie einen "last seen/is reachable" state zu erzeugen ?

          Während man das bei den humidity-sensoren noch gut an den geänderten Werten erkennen kann, ist das beim Rauchmelder und Gasmelder nicht mehr so einfach. Im Iobroker ist defacto überhaupt nicht zu erkennen das mein Rauchmelder seit 3 Wochen ohne Batterie hier rumliegt.

          Nur um sicher zu gehen, dass das Gerät auch das Gateway erreichen kann, wäre so ein state praktisch.

          1 Reply Last reply
          0
          • X Offline
            X Offline
            xbow42
            wrote on last edited by
            #478

            hab keinen Rauchmelder von xiaomi, aber der Rauchmelder liefert doch bestimmt auch seinen Batteriestatus in %

            Da kannst du doch mit script auf dem Datenpunt auf "last update" prüfen.

            Blockly: das Puzzle-Ding mit "[Wert] von [ObjectID]" nehmen, auf Wert klicken und [letzte Änderung] auswählen.

            JS: getState("mihome.0.devices.magnet_0815abcd0000000.percent").lc;

            wenn länger als 1 Tag her Nachricht wohin auch immer…

            edit: oder der Wert<15 Warnhinweis" batterie kaufen; wert=0 Fehlermeldung :idea:

            1 Reply Last reply
            0
            • J Offline
              J Offline
              J Riemann
              wrote on last edited by
              #479

              @ramses:

              Nur um sicher zu gehen, dass das Gerät auch das Gateway erreichen kann, wäre so ein state praktisch. `
              Eine „unreach“ Meldung oder ähnliches ist bei Xiaomi anscheinend nicht üblich. Auch in der App habe ich bisher keine Meldefunktion bei Nichterreichbarkeit gefunden.

              Die Rauchmelder aktualisieren mind. 1x pro Stunde ihren Batteriestatus, was man wiederum gut als „alive“ Meldung weiterverarbeiten kann. Meldet sich das Gerät nicht innerhalb 1 Stunde ist etwas faul… Ich überprüfe jedes Gerät einzeln per Blockly:

              viewtopic.php?f=8&t=18566#p219932

              ****Viele Grüße!

              Jörg****

              1 Reply Last reply
              0
              • R Offline
                R Offline
                ramses
                wrote on last edited by
                #480

                @J Riemann

                @xbow42

                Das ist tatsächlich eine nützliche Idee. Nur mit Blockly kann ich nichts anfangen. Hatte mich entschieden Javascript zu erlernen (so gut es geht). Mal schauen wie es sich damit bewerkstelligen lässt.

                Der Timestamp-Wert scheint aber relevanter als der "letzte Änderung"-Wert.

                Beispiel: Der Gas-Melder wird per Netzteil betrieben und steht somit immer auf 100%. Daher hat sich der "letzte Änderung"-Wert seit der Anschaffung nicht geändert. Der Timestamp hat zumindest einen Zugriff verzeichnet.

                Gleiche Spiel beim Rauchmelder. Lag ein paar Tage in der Ecke, gestern mal wieder angeschlossen für 2-3 Stunden.

                Da die eingelegte Batterie immer noch 100% hat, hat sich der "letzte Änderung"-Wert nicht geändert. Der Zeitstempel hingegen schon. (Siehe Bild).
                4505_1.jpg

                1 Reply Last reply
                0
                • J Offline
                  J Offline
                  J Riemann
                  wrote on last edited by
                  #481

                  @ramses:

                  Der Gas-Melder wird per Netzteil betrieben und steht somit immer auf 100%. `
                  Welches Meldeverhalten der Gas-Sensor hat kann ich nicht sagen da ich keinen besitze.

                  Ansonsten ist "bei Aktualisierung" die richtige Wahl… Die Sensoren melden ja auch unveränderte Batteriewerte...

                  ****Viele Grüße!

                  Jörg****

                  1 Reply Last reply
                  0
                  • R Offline
                    R Offline
                    ramses
                    wrote on last edited by
                    #482

                    @J Riemann:

                    @ramses:

                    Der Gas-Melder wird per Netzteil betrieben und steht somit immer auf 100%. `
                    Welches Meldeverhalten der Gas-Sensor hat kann ich nicht sagen da ich keinen besitze.

                    Ansonsten ist "bei Aktualisierung" die richtige Wahl… Die Sensoren melden ja auch unveränderte Batteriewerte... `

                    Also auch wenn ich meine Sensoren angucke, kann ich deine Aussage leider nicht bestätigen.

                    Anbei ein Bild eines Sensors für Türen/Fenster.

                    Ein Batteriestand wurde das letzte mal gestern gegen 17 Uhr geändert. Während der Zeitstempel einen Wert von heute morgen hat.

                    Für zeitnahe Abfragen scheint mir der Timestamp besser geeignet.

                    Jetzt nur noch rausfinden wie man in Javascript damit rechnet :-)
                    4505_2.jpg

                    1 Reply Last reply
                    0
                    • X Offline
                      X Offline
                      xbow42
                      wrote on last edited by
                      #483

                      Hab gerade kein iobroker zu Hand, aber probier mal so an den timestamp zu kommen:

                      var myTimestamp = getState("pfad.zu.meinem.Objekt_Datenpunkt").ts;
                      

                      Den Zahlenwert kannst du ganz normal mit Grundrechenarten oder Date-funktionen verarbeiten.

                      1 Reply Last reply
                      0
                      • R Offline
                        R Offline
                        ramses
                        wrote on last edited by
                        #484

                        @xbow42:

                        Hab gerade kein iobroker zu Hand, aber probier mal so an den timestamp zu kommen:

                        var myTimestamp = getState("pfad.zu.meinem.Objekt_Datenpunkt").ts;
                        

                        Den Zahlenwert kannst du ganz normal mit Grundrechenarten oder Date-funktionen verarbeiten. `

                        @xbow42

                        Danke für deine Rückmeldung. Habe ich schon gefunden und das Script ist auch schon soweit fertig. Jetzt werde ich erst mal den Rauch- und Gas-Melder im Auge behalten, wie oft die den Timestamp erneuern, um keine Fehlalarme zu bekommen.

                        Da ich kein Programmierer bin, ist das Script 100 Zeilen groß geworden. Man hätte sich vermutlich die ein oder andere variable oder umständliche Rechnung ersparen können -…aber dafür kann das Script auch was.

                        Zb. nach festgelegten Intervallen Alexa eine Ansage machen lassen, eine Email versenden oder eine Telegram-Nachricht wenn das Gerät nicht erreichbar ist.

                        1 Reply Last reply
                        0
                        • R Offline
                          R Offline
                          ramses
                          wrote on last edited by
                          #485

                          Ok geht alles.

                          Für den Gasmelder sollte man den Zeitstempel (nicht letzte Änderung) von voltage oder percent nehmen. Dieser wird alle 15min vom Gasmelder aktualisiert.

                          Rauchmelder verhält sich fast genauso, nur unzuverlässiger. Mal nach 15 Minuten mal nach 40, mal nach 45… Keine Updates in "letzte Änderung" sondern nur in den Timestamps von voltage und percent.

                          Rate dringend ab, bei Zigbee Geräte den "letzte Änderung" input zu nehmen. Dieser wird wirklich nur aktualisiert, wenn sich was ändernt und ist somit kein Indikator.

                          Da scheinbar doch ein Zugriff erfolgt, auch wenn sich nichts geändert hat, ist die Timestamp hier zu bevorzugen.
                          4505_3.jpg

                          1 Reply Last reply
                          0
                          • X Offline
                            X Offline
                            xbow42
                            wrote on last edited by
                            #486

                            schön, dass es jetzt funktioniert. Wenn du magst stelle dein script doch hier zur Verwendung rein. Auch wenn es noch nicht perfekt optimiert ist. Die Experten hier können mal drüber gucken und vielleicht noch hilfreiche Tipps geben. Ich bin mit js auch noch nicht so fit und lerne gerne dazu.

                            1 Reply Last reply
                            0
                            • R Offline
                              R Offline
                              ramses
                              wrote on last edited by
                              #487

                              @xbow42:

                              schön, dass es jetzt funktioniert. Wenn du magst stelle dein script doch hier zur Verwendung rein. Auch wenn es noch nicht perfekt optimiert ist. Die Experten hier können mal drüber gucken und vielleicht noch hilfreiche Tipps geben. Ich bin mit js auch noch nicht so fit und lerne gerne dazu. `

                              Uh ich weiss nicht. Ist mir schon ein wenig peinlich. Ist bestimmt so schlecht,das jeder der schon mal programmiert hat, die Hände über den Kopf zusammenschlägt :-D

                              Aber bitte, anbei meine erste programmierte Schande .

                              // überwachung von mihome smoke
                              
                              var SENSOR1 = 'mihome.0.devices.smoke_158d00024e8ed9.voltage'; // Überwachendes Gerät . Voltage oder Percent State nehmen !
                              var BEZEICHNUNG1 = 'Rauchmelder'; // Gerätebezeichnung
                              var WARNALEXA =  600  ; // So oft werden Warnmeldungen via Alexa wiederholt (in Minuten) (zwischen 14 und 20 Uhr) (minimum 61)
                              var WARNEMAIL =  600  ; // So oft werden Warnmeldungen via Email wiederholt (in Minuten) (minimum 61)
                              var WARNTELEGRAM = 200  ;// So oft werden Warnmeldungen via Telegram wiederholt (in Minuten) (minimum 61)
                              
                              createState("mihome.smoke_158d00024e8ed9.active",0, { //noch ungenutzt
                                read: true, 
                                write: true, 
                                name: BEZEICHNUNG1 + " last active in minutes",
                                role: "indicator.connected"
                              });
                              
                              createState("mihome.smoke_158d00024e8ed9.telegram",0, {
                                read: true, 
                                write: true, 
                                name: BEZEICHNUNG1 + " last telegram warning",
                                role: "state"
                              });
                              
                              createState("mihome.smoke_158d00024e8ed9.alexa",0, {
                                read: true, 
                                write: true, 
                                name: BEZEICHNUNG1 + " last alexa announcement warning",
                                role: "state"
                              });
                              
                              createState("mihome.smoke_158d00024e8ed9.email",0, {
                                read: true, 
                                write: true, 
                                name: BEZEICHNUNG1 + " last email announcement warning",
                                role: "state"
                              });
                              
                              schedule ('*/30 * * * *', function(){ //so oft wird das script ausgeführt
                              
                              var DATUM2 = new Date().getTime();// Datum  in Millisekunden
                              var WERT1 = getState(SENSOR1).ts; // Sensor Timestamp einlesen in Millisekunden
                              var RECHNEN=((DATUM2-WERT1)); // Datum - Sensorzeit = Last Seen-Zeit
                              var ENDRECHNUNG=Math.round(RECHNEN/3600000*60);
                              var LASTALEXA=getState('javascript.0.mihome.smoke_158d00024e8ed9.alexa').val;
                              var LASTEMAIL=getState('javascript.0.mihome.smoke_158d00024e8ed9.email').val;
                              var LASTTELEGRAM=getState('javascript.0.mihome.smoke_158d00024e8ed9.telegram').val;
                              
                              var ZEITALEXA=Math.round((DATUM2-LASTALEXA)/3600000*60);
                              var ZEITEMAIL=Math.round((DATUM2-LASTEMAIL)/3600000*60);
                              var ZEITTELEGRAM=Math.round((DATUM2-LASTTELEGRAM)/3600000*60);
                              
                              setState('mihome.smoke_158d00024e8ed9.active',ENDRECHNUNG , true); // last seen state in objekte schreiben. Bisher ungenutzt. Für millisekunden variable RECHNEN nehmen.
                              
                                          if (ENDRECHNUNG>60) {
                              
                              if (ZEITALEXA>WARNALEXA && compareTime("14:00", "20:00", "between")) {
                              // Warnung per Alexa Sprachausgabe
                              setState('mihome.smoke_158d00024e8ed9.alexa',new Date().getTime());
                              setState('alexa2.0.Echo-Devices.<your-alexa-id-here>.Commands.speak', 'Das Gerät, ' + BEZEICHNUNG1 + ', hat sich seit ' + ENDRECHNUNG + ' Minuten nicht mehr gemeldet!');
                              }
                              else {
                              
                              console.log('Warnung: Gerät ' + BEZEICHNUNG1 + ' ist nicht erreichbar. Nächste Alexa Warnung erfolgt in ' + (WARNALEXA-ZEITALEXA) + ' Minuten.')
                              }
                              
                              if (ZEITEMAIL>WARNEMAIL){
                              // Warnung per Email
                              setState('mihome.smoke_158d00024e8ed9.email',new Date().getTime());
                              sendTo("email", {
                                  from:    "<absender-emailadresse", to:/"<empfänger-emailadresse="">",
                                  subject: "IOBroker Benachrichtigung!",
                                  text:    'Das Gerät ' + BEZEICHNUNG1 + ' hat sich seit ' + ENDRECHNUNG + ' Minuten nicht mehr gemeldet!'
                              })
                              console.log(BEZEICHNUNG1 + ': Es wurde eine Warnemail für folgendes Gerät versendet: ' + BEZEICHNUNG1)
                              } 
                              else {
                              console.log('Warnung: Gerät ' + BEZEICHNUNG1 + ' ist nicht erreichbar. Nächste Email Warnung erfolgt in ' + (WARNEMAIL-ZEITEMAIL) + ' Minuten.')
                              }
                              
                              // Warnung per Telegram
                              if (ZEITTELEGRAM>WARNTELEGRAM){
                              setState('mihome.smoke_158d00024e8ed9.telegram',new Date().getTime());
                              sendTo('telegram', 'Das Gerät ' + BEZEICHNUNG1 + ' hat sich seit ' + ENDRECHNUNG + ' Minuten nicht mehr gemeldet!')
                              console.log('Es wurde eine WarnTelegram für folgendes Gerät versendet: ' + BEZEICHNUNG1)
                              }
                              else {
                              console.log('Warnung: Gerät ' + BEZEICHNUNG1 + ' ist nicht erreichbar. Nächste Telegram Warnung erfolgt in ' + (WARNTELEGRAM-ZEITTELEGRAM) + ' Minuten.')
                              }
                              
                                          }
                              
                                          else{
                              
                                              console.log('Das Gerät ' + BEZEICHNUNG1 + ' hat noch nicht den 60 Minuten Zeitrahmen überschritten! Letztes mal gesehen vor ' + ENDRECHNUNG + ' Minuten.')    
                                              }
                              })</absender-emailadresse",></your-alexa-id-here> 
                              

                              Gibt es nicht viel zu sagen. Wird alle 30 Minuten ausgeführt und wird aktiv wenn der Rauchmelder sich mehr als 60 minuten nicht gemeldet hat (Log augabe).. wenn nach den 60 Minuten der eingestellte Schwellwert für Warnungsversand (Alexa,email, telegram) bei einer Prüfung überschritten wird, wird eine Warnung Versand. Die Warnung über Alexa Sprachausgabe erfolgt nur zwischen 14 und 20 Uhr. Dieses war für meinen eigenen Bedarf. Kann aber im Alexabereich unter compareTime geändert (oder entfernt) werden.

                              Die IDs der jeweiligen states müssen für das Gerät an einigen stellen noch manuell angepasst werden, da ich es noch nicht variabel gemacht habe. Dieses betrifft vorallem die getState und setState zeilen.

                              Da es nur für ein Gerät war, war es in meinen Augen in diesem Moment nicht notwendig modular zu arbeiten. Werde ich aber definitiv noch anpassen.

                              Hoffe trotz der schlechten Anfängerprogrammierung kann jemand damit was anfangen :-)

                              Hier mein 2. Script um Batteriestatus aller Sensoren zu überwachen die einen battery-state in iobroker schreiben:

                              Hätte man vermutlich auch bedeutend einfacher gestalten könne, aber es funktioniert.

                              Wenn Status weniger als 20% sende via Telegram (kann aus dem ersten Code anders gestaltet werden, zb via Email) eine Benachrichtungen:

                              var HEMMSCHWELLE = 20 // Meldung ab diesem Batteriestand in Prozent
                              
                              var SENSOR1 = 'mihome.0.devices.cube_158d00029a8fd5.percent' //Cube1
                              var SENSOR1NAME ='Steuer Cube 1'
                              var SENSOR2 = 'mihome.0.devices.magnet_158d00024de71d.percent' //Wohnzimmer links
                              var SENSOR2NAME ='Wohnzimmer links'
                              var SENSOR3 = 'mihome.0.devices.magnet_158d00024e42b9.percent' //Briefkasten
                              var SENSOR3NAME ='Briefkasten'
                              var SENSOR4 = 'mihome.0.devices.magnet_158d00024e50f7.percent' //Schlafzimmer rechts
                              var SENSOR4NAME ='Schlafzimmer rechts'
                              var SENSOR5 = 'mihome.0.devices.magnet_158d00024e621b.percent' //Bad links
                              var SENSOR5NAME ='Bad links'
                              var SENSOR6 = 'mihome.0.devices.magnet_158d00025193bf.percent' //Schlafzimmer links
                              var SENSOR6NAME ='Schlafzimmer links'
                              var SENSOR7 = 'mihome.0.devices.magnet_158d0002529a90.percent' //Kinderzimmer
                              var SENSOR7NAME ='Kinderzimmer'
                              var SENSOR8 = 'mihome.0.devices.magnet_158d0002529bc7.percent' //Kueche Balkontuere
                              var SENSOR8NAME ='Kueche Balkontuere'
                              var SENSOR9 = 'mihome.0.devices.magnet_158d000252befb.percent' //Kueche Fenster
                              var SENSOR9NAME ='Kueche Fenster'
                              var SENSOR10 = 'mihome.0.devices.magnet_158d0002536e79.percent' //Wohnzimmer rechts
                              var SENSOR10NAME ='Wohnzimmer rechts'
                              var SENSOR11 = 'mihome.0.devices.magnet_158d000271fe91.percent' //Badezimmer rechts
                              var SENSOR11NAME ='Badezimmer rechts'
                              var SENSOR12 = 'mihome.0.devices.magnet_158d0002735cbe.percent' // Haustuere
                              var SENSOR12NAME ='Haustüre'
                              var SENSOR13 = 'mihome.0.devices.sensor_motion_aq2_158d0002e940d5.percent'//Motion Leonas Zimmer
                              var SENSOR13NAME ='Bewegungssensor Leonas Zimmer'
                              var SENSOR14 = 'mihome.0.devices.smoke_158d00024e8ed9.percent' //Rauchmelder
                              var SENSOR14NAME ='Rauchmelder'
                              var SENSOR15 = 'mihome.0.devices.vibration_158d0002b5f8fc.percent'//Vibration1
                              var SENSOR15NAME ='Vibration 1'
                              var SENSOR16 = 'mihome.0.devices.weather_v1_158d00027898ac.percent' //Humidity Bad
                              var SENSOR16NAME ='Temperatursensor Bad'
                              var SENSOR17 = 'mihome.0.devices.weather_v1_158d0002b534e1.percent' //Humidity Testsensor
                              var SENSOR17NAME ='Temperatursensor Test'
                              var SENSOR18 = 'netatmo.0.Micha.Aussen.BatteryStatus'
                              var SENSOR18NAME ='Netatmo aussen'
                              var SENSOR19 = 'netatmo.0.Micha.Kinderzimmer.BatteryStatus'
                              var SENSOR19NAME ='Netatmo Kinderzimmer'
                              var SENSOR20 = 'netatmo.0.Micha.Schlafzimmer.BatteryStatus'
                              var SENSOR20NAME ='Netatmo Schlafzimmer'
                              var SENSOR21 = 'netatmo.0.Micha.Niederschlagsmesser.BatteryStatus'
                              var SENSOR21NAME ='Netatmo Niederschlagsmesser'
                              
                              var SENSOR1value=Math.round(getState(SENSOR1).val)
                              var SENSOR2value=Math.round(getState(SENSOR2).val)
                              var SENSOR3value=Math.round(getState(SENSOR3).val)
                              var SENSOR4value=Math.round(getState(SENSOR4).val)
                              var SENSOR5value=Math.round(getState(SENSOR5).val)
                              var SENSOR6value=Math.round(getState(SENSOR6).val)
                              var SENSOR7value=Math.round(getState(SENSOR7).val)
                              var SENSOR8value=Math.round(getState(SENSOR8).val)
                              var SENSOR9value=Math.round(getState(SENSOR9).val)
                              var SENSOR10value=Math.round(getState(SENSOR10).val)
                              var SENSOR11value=Math.round(getState(SENSOR11).val)
                              var SENSOR12value=Math.round(getState(SENSOR12).val)
                              var SENSOR13value=Math.round(getState(SENSOR13).val)
                              var SENSOR14value=Math.round(getState(SENSOR14).val)
                              var SENSOR15value=Math.round(getState(SENSOR15).val)
                              var SENSOR16value=Math.round(getState(SENSOR16).val)
                              var SENSOR17value=Math.round(getState(SENSOR17).val)
                              var SENSOR18value=Math.round(getState(SENSOR18).val)
                              var SENSOR19value=Math.round(getState(SENSOR19).val)
                              var SENSOR20value=Math.round(getState(SENSOR20).val)
                              var SENSOR21value=Math.round(getState(SENSOR21).val)
                              
                              schedule ('0 */1 * * *', function(){
                              console.log('Batterieüberwachung ausgeführt!')    
                              if(SENSOR1value
                              
                              1 Reply Last reply
                              0
                              • X Offline
                                X Offline
                                xbow42
                                wrote on last edited by
                                #488

                                Wieso Schande, es funktioniert für dich das ist die Hauptsache.

                                Damit du es leichter hast deine eigenen Scripte zu warten, als Tip

                                *codeblöcke entsprechend der {Klammern} einrücken

                                *KONSTANTEN groß

                                *variablen klein

                                Debugausgaben und Kommentare hast du ja schon drin alles gut.

                                2.script Batteriecheck mit den fix eingetragenen ObjektIDs ist es schwer zu pflegen, wenn man Geräte hinzufügt/austauscht.

                                Hier mal mein angepasstes script, was ich auch hier aus dem Forum habe. Hab mir angewöht die Quelle immer mit als Kommentar abzulegen. Somit sollte klar sein dass ich mich nicht mit fremden Federn schmücken will. Hoffe mal die Links funktionieren auch noch denn im Februar der Umzug auf die neue Plattform gemacht wurde.

                                ! /**
                                ! Quelle: viewtopic.php?f=21&t=15203&start=20
                                ! Beschreibung: Script zum erfassen von Geräten mit niedrigem Batteriestatus
                                ! Vorbereitung: unter den iobroker.Objekten muss bei den "Batteriestatus-Prozenten" ein sinnvoller Name eingetragen werden,
                                ! um die Geräte zu identifizieren
                                ! todo:
                                ! - Benachrichtigung (in welcher Art auch immer) noch einbauen
                                ! - wenn MiHome-Geräte auf dem DeConz-Stick angelernt sind "KONSTANTEN - Deklaration" anpassen
                                ! **/
                                ! //===================================================================================================================================
                                ! //Datenpunkte erstellen; werden unterhalb von "javascript.0." angelegt.
                                ! createState('monitoring.Batteriestatus.Schwellwert', 15, {type: 'number'}); // ab war die Battereistatus aus krittisch angesehen wird
                                ! createState('monitoring.Batteriestatus.Geraete_Total', 0, {type: 'number'}); // Anzahl der BAtteriegräte
                                ! createState('monitoring.Batteriestatus.Geraete_LowBat', 0, {type: 'number'}); // Anzahl der tatsächlichen LOWBAT
                                ! createState('monitoring.Batteriestatus.Geraete_Namen', " ", {type: 'string'}); // Anzeige der LOWBAT-Geräte, Text s. Vorbereitung
                                ! //===================================================================================================================================
                                ! //KONSTANTEN - Deklaration
                                ! const OID_HOMATIC_BAT = $('hm-rpc.:0.LOWBAT'); //Objekt_IDs für Homatic-Geräte
                                ! const OID_MIHOME_BAT = $('mihome.
                                .percent'); //Objekt_IDs für MiHome-Geräte
                                ! //todo: const OID_DECONZ_MIHOME_BAT = $('deconz.*.percent????????'); //Objekt_IDs für MiHome-Geräte an DeConz
                                ! const LOGGEN = true; // = false, wenn kein Logging gewünscht
                                ! //===================================================================================================================================
                                ! //(globale) Variablen - Deklaration
                                ! var arrLowBat;
                                ! //===================================================================================================================================
                                ! //Funktionen
                                ! function fkt_lowbat(id) {
                                ! var name = getObject(id).common.name;
                                ! if(name.indexOf(':0.LOWBAT') != -1) name = name.substring(0, name.indexOf(':0.LOWBAT'));
                                ! arrLowBat.push(name); // Zu Array hinzufügen
                                ! if(LOGGEN) log("Gerät: " + name);
                                ! }
                                ! function fkt_countLowbat() {
                                ! // Setzt die Zähler vor dem Durchlauf aller Elemente .LOWBAT auf 0
                                ! var intGeraete_Total = 0;
                                ! arrLowBat = [];
                                ! /
                                //!!! hier kann ich nicht prüfen ob man auch den Schwellwert abfragen kann da ich keine Homatic-Geräte habe
                                ! OID_HOMATIC_BAT.each(function (id, i) { // Schleife für jedes gefundenen Element *.LOWBAT
                                ! if(getState(id).val) fkt_lowbat(id);
                                ! ++intGeraete_Total; // Zählt die Anzahl der vorhandenen Geräte unabhängig vom Status
                                ! });
                                ! */
                                ! OID_MIHOME_BAT.each(function (id, i) { // Schleife für jedes gefundenen Element .percent
                                ! if(getState(id).val < getState("monitoring.Batteriestatus.Schwellwert").val) fkt_lowbat(id);
                                ! ++intGeraete_Total; // Zählt die Anzahl der vorhandenen Geräte unabhängig vom Status
                                ! });
                                ! // Schleifen sind durchlaufen. Im Log wird der aktuelle Status (Anzahl, davon LOWBAT zutreffend) ausgegeben
                                ! if(LOGGEN) {
                                ! log("Batterie-Geräte (Anzahl): " + intGeraete_Total + " # davon LOWBAT erkannt: " + arrLowBat.length);
                                ! log("Batterie-Geräte (Namen): " + arrLowBat.join(', '));
                                ! }
                                ! // die ermittelten Werte werden als javascript.0. Variable in ioBroker gespeichert (z.B. für die Verarbeitung in VIS)
                                ! setState("monitoring.Batteriestatus.Geraete_Total", intGeraete_Total); // Schreibt die Anzahl der vorhandene Geräte
                                ! setState("monitoring.Batteriestatus.Geraete_LowBat",arrLowBat.length); // Schreibt die Anzahl der LOWBAT-Meldungen
                                ! setState("monitoring.Batteriestatus.Geraete_Namen", arrLowBat.join(',
                                ')); // Schreibt die Namen der Geräte mit LOWBAT Meldung
                                ! }
                                ! //===================================================================================================================================
                                ! //Funktionsaufrufe (main)
                                ! fkt_countLowbat(); //Ausführung bei Skriptstart
                                ! schedule("
                                /60 * * * *", fkt_countLowbat); //Ausführung alle 60 Minuten
                                telegramm/mail-nachricht kannst ja jetzt selbst einbauen.

                                1 Reply Last reply
                                0
                                • R Offline
                                  R Offline
                                  ramses
                                  wrote on last edited by
                                  #489

                                  @xbow42

                                  Funktioniert scheinbar noch nicht wie ich es mir gewünscht habe. Zum ersten mal wurde der 60 Minuten Zeitrahmen überschritten und ich hab direkt überalle Alarm gekriegt :-(

                                  Im Telegram sogar 3 mal.. hab ich bestimmt irgendwo ne Klammer falsch gesetzt.

                                  1 Reply Last reply
                                  0
                                  • R Offline
                                    R Offline
                                    ramses
                                    wrote on last edited by
                                    #490

                                    16:13:00.022 info javascript.0 script.js.common.Ueberwachung_Akkustand_sensoren1: Batterieüberwachung ausgeführt!

                                    16:13:00.023 info javascript.0 script.js.common.Ueberwachung_Akkustand_sensoren1: Batterieüberwachung ausgeführt!

                                    16:13:00.024 info javascript.0 script.js.common.Ueberwachung_Akkustand_sensoren1: Batterieüberwachung ausgeführt!

                                    16:13:00.024 info javascript.0 script.js.common.Ueberwachung_Akkustand_sensoren1: Batterieüberwachung ausgeführt!

                                    16:13:00.024 info javascript.0 script.js.common.Ueberwachung_Akkustand_sensoren1: Batterieüberwachung ausgeführt!

                                    mich interessiert eher warum das batterie-script scheinbar 5 mal bei jeder runde ausgeführt wird. sehe dafür nix im code

                                    so verhält sich leider jedes script..auch direkt nach dem start:

                                    javascript.0 2019-01-27 16:17:44.201 info Stop script script.js.common.Cube_Motion

                                    javascript.0 2019-01-27 16:17:44.201 info Stop script script.js.common.Cube_Motion

                                    javascript.0 2019-01-27 16:17:44.201 info Stop script script.js.common.Cube_Motion

                                    javascript.0 2019-01-27 16:17:44.201 info Stop script script.js.common.Cube_Motion

                                    javascript.0 2019-01-27 16:17:44.201 info Stop script script.js.common.Cube_Motion

                                    seufz

                                    mal alles neustarten

                                    PS: Scheinbar hat das Script den kompletten Adapter aus dem Tritt gebracht. Nach nem reboot war alles normal. Jetzt provozieren wir den Fehler noch mal.

                                    1 Reply Last reply
                                    0
                                    • X Offline
                                      X Offline
                                      xbow42
                                      wrote on last edited by
                                      #491

                                      rechnest du überhaupt mit den richtigen Zahlen

                                      var DATUM2 = new Date().getTime();// Datum in Millisekunden //gibt ein Objekt zurück

                                      zu

                                      var tsJetzt = (new Date().getMilliseconds());

                                      benenne die Variablen sinnvoll, dann sind manche Kommentare überflüssig

                                      Wenn ich eine Funktion nicht weiß, klicke ich mit erst mal ein Bsp. in Blockly zusammen und sehe mir den code an. so kam ich auch auf das .getMilliseconds() :D

                                      1 Reply Last reply
                                      0
                                      • R Offline
                                        R Offline
                                        ramses
                                        wrote on last edited by
                                        #492

                                        @xbow42:

                                        rechnest du überhaupt mit den richtigen Zahlen

                                        var DATUM2 = new Date().getTime();// Datum in Millisekunden //gibt ein Objekt zurück

                                        zu

                                        var tsJetzt = (new Date().getMilliseconds());

                                        benenne die Variablen sinnvoll

                                        Wenn ich eine Funktion nicht weiß, klicke ich mit erst mal ein Bsp. in Blockly zusammen und sehe mir den code an. so kam ich auch auf das .getMilliseconds() :D `
                                        ja, die rechnung stimmt :-) Alles gut. Date().getTime() wirft immer passend aus.

                                        hab jetzt dem rauchmelder mal die batterie entnommen..bin mir sicher in 30minuten lässt sich das reproduzieren :D

                                        PS: so nach neustart klappt script auch normal. nix 5 mal mehr:

                                        javascript.0 2019-01-27 17:30:00.072 info script.js.common.Verfuegbarkeit.Ueberwachung_Rauchmelder: Warnung: Gerät Rauchmelder ist nicht erreichbar. Nächste Telegram Warnung erfolgt in 110 Minuten.

                                        javascript.0 2019-01-27 17:30:00.072 info script.js.common.Verfuegbarkeit.Ueberwachung_Rauchmelder: Warnung: Gerät Rauchmelder ist nicht erreichbar. Nächste Email Warnung erfolgt in 510 Minuten.

                                        javascript.0 2019-01-27 17:30:00.071 info script.js.common.Verfuegbarkeit.Ueberwachung_Rauchmelder: Warnung: Gerät Rauchmelder ist nicht erreichbar. Nächste Alexa Warnung erfolgt in 541 Minuten.

                                        nur mit den zeitwerten für alarm muss ich scheinbar noch arbeiten

                                        1 Reply Last reply
                                        0
                                        • K Offline
                                          K Offline
                                          Keulex
                                          wrote on last edited by
                                          #493

                                          Hallo,

                                          ich bin recht neu hier. Ich habe mich bisher hauptsächlich mit dem Thema Zigbee-Stick und Anbindung der Komponenten auseinandergesetzt, war mit der Stabilität aber nicht zufrieden. Deswegen habe ich mir testweise mal ein Gateway geholt und habe gemerkt, das die Sensoren merklich zuverlässiger in iobroker laufen.

                                          Nun zu meinem Anliegen:

                                          Ich habe gesehen, dass das Gateway auch Ikea-Tradfri-Lampen unterstützt, davon hatte ich noch welche. Ich konnte sie auch über die App ans Gateway anlernen. Leider tauchen diese nicht als Objekte im iobroker auf. Müsste der Adapter dahingehend erweitert werden?

                                          1 Reply Last reply
                                          0

                                          Hello! It looks like you're interested in this conversation, but you don't have an account yet.

                                          Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.

                                          With your input, this post could be even better 💗

                                          Register Login
                                          Reply
                                          • Reply as topic
                                          Log in to reply
                                          • Oldest to Newest
                                          • Newest to Oldest
                                          • Most Votes


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate
                                          FAQ Cloud / IOT
                                          HowTo: Node.js-Update
                                          HowTo: Backup/Restore
                                          Downloads
                                          BLOG

                                          397

                                          Online

                                          32.7k

                                          Users

                                          82.6k

                                          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