Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Abfrage des Batteriestatus

    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

    Abfrage des Batteriestatus

    This topic has been deleted. Only users with topic management privileges can see it.
    • F
      funcarv3r last edited by

      Ich versuche mich bereits seit einigen Tagen daran den Batteriestatus meiner Homematic-Geräte abzufragen und daraus einen Systemstatus zu generieren den ich dann wieder im VIS anzeigen möchte.

      Ich habe einen z.B. Status BatterieStatusFensterOk erstellt der true oder false sein soll, des lasse ich mir im VIS anzeigen. Nur funktioniert das so wie ich es mache nicht mit dem umschalten. Ich habe bisher versucht:

      schedule("* * * * * *", function () {
      
      // Büro
              var Fenster_EDVFFB_Dach01 = getState('hm-rpc.1.NEQ0627501.0.LOWBAT').val;
                if (Fenster_EDVFFB_Dach01) {
                   setState("System.BatterieStatusFensterOk", false);
                } else if (!Fenster_EDVFFB_Dach01) {
                   setState("System.BatterieStatusFensterOk", true);
                }
              var Fenster_EDVFFB_Dach02 = getState('hm-rpc.1.NEQ0627514.0.LOWBAT').val;
                if (Fenster_EDVFFB_Dach02) {
                   setState("System.BatterieStatusFensterOk", false);
                } else if (!Fenster_EDVFFB_Dach02) {
                   setState("System.BatterieStatusFensterOk", true);
                }
              var Fenster_EDVFFB_Dach03 = getState('hm-rpc.1.NEQ0627595.0.LOWBAT').val;
                if (Fenster_EDVFFB_Dach03) {
                   setState("System.BatterieStatusFensterOk", false);
                } else if (!Fenster_EDVFFB_Dach03) {
                   setState("System.BatterieStatusFensterOk", true);
                }
              var Fenster_EDVFFB_1OG = getState('hm-rpc.1.NEQ0063954.0.LOWBAT').val;
                if (Fenster_EDVFFB_1OG) {
                   setState("System.BatterieStatusFensterOk", false);
                } else if (!Fenster_EDVFFB_1OG) {
                   setState("System.BatterieStatusFensterOk", true);
                }
             var Wandthermostat_EDVFFB = getState('hm-rpc.1.OEQ0578298.0.LOWBAT').val;
                if (Wandthermostat_EDVFFB) {
                   setState("System.BatterieStatusHeizungOk", false);
                } else if (!Wandthermostat_EDVFFB) {
                   setState("System.BatterieStatusHeizungOk", true);
                }
             var Heizung_EDVFFB = getState('hm-rpc.1.OEQ2633740.0.LOWBAT').val;
                if (Heizung_EDVFFB) {
                   setState("System.BatterieStatusHeizungOk", false);
                } else if (!Heizung_EDVFFB) {
                   setState("System.BatterieStatusHeizungOk", true);
                }
              var Lichttaster_EDVFFB_2OG = getState('hm-rpc.1.MEQ0444933.0.LOWBAT').val;
                if (Lichttaster_EDVFFB_2OG) {
                   setState("System.BatterieStatusOk", false);
                } else if (!Lichttaster_EDVFFB_2OG) {
                   setState("System.BatterieStatusOk", true);
                }
              var Lichttaster_EDVFFB_1OG = getState('hm-rpc.1.MEQ0444892.0.LOWBAT').val;
                if (Lichttaster_EDVFFB_1OG) {
                   setState("System.BatterieStatusOk", false);
                } else if (!Lichttaster_EDVFFB_1OG) {
                   setState("System.BatterieStatusOk", true);
                }
      
      });
      

      Funktioniert leider nicht wie gewünscht. Alternativ habe ich noch versucht

      schedule("* * * * * *", function () {
      var status=!(getState("hm-rpc.1.NEQ0063951.0.LOWBAT").val || getState("hm-rpc.1.NEQ0627517.0.LOWBAT").val) || getState('hm-rpc.1.NEQ0064004.0.LOWBAT').val;;
          setState("System.BatterieStatusFensterOk", status);
      });
      

      Funktioniert nur bei 2 Geräten. Die Abfrage jede Sekunde ist nur testweise, wird wenns läuft auf 15 Minuten geändert.

      Was mache ich falsch bzw. hat jemand einen Tip für mich?

      Ich möchte es nicht über die CCU machen da ich zukünftig alles über den ioBroker steuern will, das ist übersichtlicher....

      Grüße
      Norbert

      paul53 C liv-in-sky 3 Replies Last reply Reply Quote 0
      • paul53
        paul53 @funcarv3r last edited by

        @funcarv3r
        Für solche Abfragen gibt es den $Selector.

        const idsLOWBAT = $('hm-rpc.1.*.0.LOWBAT');
        
        function lowbatt() {
           let ok = true;
           idsLOWBAT.each(function(id, i) {
              if(getState(id).val) {
                 ok = false;
                 break;
              }
           }
           setState("System.BatterieStatusFensterOk", ok, true);
        }
        
        lowbatt(); // Script start
        
        idsLOWBAT.on(lowbatt);
        
        F 1 Reply Last reply Reply Quote 0
        • F
          funcarv3r @paul53 last edited by

          @paul53
          Hm, muss mich da mal einlesen was den $Selector angeht, ich muss hier weiter filtern auf Gewerke da ich unterscheiden will nach Fenster, Heizung und sonstigenGeräten wie z.B. Bewegungsmeldern.

          Bei dem Script von dir bekomme ich nur leider einen Fehler:

          javascript.0 (601) script.js.common.BatterieStatusOk_Test2 compile failed: at script.js.common.BatterieStatusOk_Test2:10
          

          in Zeile 10 steht der break;

          paul53 1 Reply Last reply Reply Quote 0
          • C
            Chrunchy @funcarv3r last edited by

            @funcarv3r Warum nimmst du nicht das Script von @Pittini?

            https://github.com/Pittini/iobroker-Batterienauswertung

            1 Reply Last reply Reply Quote 1
            • liv-in-sky
              liv-in-sky @funcarv3r last edited by

              @funcarv3r in diesem script gibt es beispiele für selektoren und homematic - https://forum.iobroker.net/topic/28789/script-fürtabelle-der-batterie-zustände

              1 Reply Last reply Reply Quote 0
              • paul53
                paul53 @funcarv3r last edited by

                @funcarv3r sagte:

                in Zeile 10 steht der break;

                Dann lass die Zeile weg.

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

                Support us

                ioBroker
                Community Adapters
                Donate

                692
                Online

                31.9k
                Users

                80.2k
                Topics

                1.3m
                Posts

                javascript monitoring
                4
                6
                695
                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