Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Visualisierung
    4. Abfrage ob Lichter an sind oder nicht

    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 ob Lichter an sind oder nicht

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

      Hallo alle zusammen,

      Ich benötige Eure Hilfe, und zwar würde ich gerne in Vis eine Tabelle einflechten die mir sagt ob alle Lampen aus sind im Wohnbereich und ob alle Lampen aus sind im Außenbereich oder halt nicht.
      Das gleiche woltte ich in Habpanel erstellen.

      Danke für Eure Mühen
      Gruß
      Mico

      Ralla66 paul53 W 3 Replies Last reply Reply Quote 0
      • Ralla66
        Ralla66 Most Active @Mico last edited by

        @mico

        zeige doch mal was du bisher probiert hast.

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

          @ralla66
          Hallo

          Ich hatte dazu noch nicht wirklich einen Plan, ich hatte wohl die einzelnden Lichter per Bulb on/off intergriert, bzw bei Habpanel per Schaltfläche, aber sonst nicht wirklich eine Idee dazu.
          Ich habe per Alexa die Lampen als gesammt zusammengestellt und wollte dieses als poweron switch wahr falsch einarbeiten aber das haute nicht wirklich hin. Hatte dieses in dem Widget Bool HTML bzw HTML State versucht zu intergrieren.

          Gruß
          Mico

          Ralla66 1 Reply Last reply Reply Quote 0
          • Ralla66
            Ralla66 Most Active @Mico last edited by Ralla66

            @mico sagte in Abfrage ob Lichter an sind oder nicht:

            einzelnden Lichter per Bulb on/off

            Das ist doch ein guter Ansatz, jetzt kannst du ja z.B im Blockly die Zustände der Bulb bündeln.
            Wenn Bulb 1 und Bulb 2 usw sind aus dann stelle in Visu alle Aus dar.
            Dazu einfach einen Datenpunkt alle Aus anlegen.

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

              @ralla66

              Ich glaube ich stehe etwas neben der Spur
              Kannst du mir bitte mal auf die Sprünge helfen wie ich das in Blockly setzten muss

              Das wäre sehr schön

              Danke
              Gruß
              Mico

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

                @mico sagte: ob alle Lampen aus sind im Wohnbereich

                Beispiel Blockly für 3 Lampen im Wohnbereich:

                Bild_2022-03-30_141142.png

                1 Reply Last reply Reply Quote 0
                • W
                  WolfgangFB @Mico last edited by

                  @mico
                  Hi

                  Ich bei das bei mir wie folgt realisiert.
                  Voraussetzung: Alle Lichtschalter-Datenpunkte sind als Alias vorhanden (um nicht jeden Shelly oder was auch immer von Hand eintragen zu müssen).
                  Die Datenpunkte heißen z.B.

                  alias.0.Raum.Wohnen.Licht.0.state
                  

                  Das ist in diesem Fall ein Alias für

                  shelly.0.SHSW-25#C4A60C#1.Relay0.Switch
                  

                  Jetzt in einem Javascript alle Lichtdatenpunte in ein Array packen (kann mir jemand einen Tipp geben wie man das noch eleganter lösen kann?)

                  const LichtState = $('alias.0.Raum.*.Licht.*.state');      
                  var alias=[];
                  for (var i=0; i<LichtState.length; i++){alias.push(LichtState[i]);}
                  
                  

                  Dann einen Datenpunkt, in dem der Zustand für alle Lichter gespeichert ist:

                  const LichtStatusDP = 'javascript.0.Status.Licht'; // Zahl, bitweise mit der Licht ID geodert
                  
                  

                  hier wird bitweise für jedes Licht gespeichert, ob an oder aus. Also 1 für das erste Licht, 2 für das zweite, 4 für das dritte, 8 für das vierte etc.

                  jetzt auf Änderungen der Licht States triggern:

                  
                  
                  on({id: alias, change: "any"}, function (obj)  // bei jeder Änderung reagieren
                      {
                      var Ausloeser=obj.id;
                      var ObjektIndex = alias.indexOf(Ausloeser);
                      var Value = obj.state.val; // Lichtzustand
                      var ValNum = Value ? 1:0; // 1 wenn Licht an, sonst 0
                      setState(LichtStatusDP, SetBit(getState(LichtStatusDP).val, ObjektIndex, ValNum));
                  
                  

                  Wenn jetzt ein Licht geändert wird, dann wird in dem Lichtstatusdatenpunkt das Bit für das entsprechende Licht gesetzt oder gelöscht.

                  Um jetzt zu wissen, ob noch irgendwo ein Licht brennt muss man einfach nur schauen, ob der Lichtstatusdatenpunkt 0 oder ungleich 0 ist.
                  Um eine Liste aller Lichter die brennen zu erstellen bestimme ich den Raum aus dem Lichtdatenpunkt (Der Teil im Datenpunkt zwischen "Raum" und "Licht".
                  Also:

                      var AusloeserSplit = Ausloeser.split(".");
                      var Raum = AusloeserSplit[3];
                  
                  

                  Jetzt noch ein Status String, in dem alle Räume gelistet sind, in denen ein Licht brennt

                      if ((ValNum == 1) && (StatusS.search(Raum) == -1)){StatusS = StatusS + Raum + "<br>";}
                      if (ValNum == 0){StatusS = StatusS.replace(Raum + "<br>", "");}
                  

                  (Wenn es in einem Raum mehrere Lichter geben würde müsste man eben noch die Nummer dazunehmen.
                  Diesen Status String kann ich mir in Vis in einem html Widget anzeigen lassen.

                  Um alle Lichter auszuschalten kann man einfach alle Lichtdatenpunkte per Schleife durchlaufen und den State auf "false" setzen.

                      for(var i=0; i < LichtState.length; i++){setState(LichtState[i], false);}
                  
                  

                  Um Innne und Außenlichter zu unterscheiden musst Du Dir eben sinnvolle Alias Namen überlegen um aus dem Namen zu erkennen, ob das Licht innen oder außen ist.

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

                  Support us

                  ioBroker
                  Community Adapters
                  Donate

                  943
                  Online

                  31.9k
                  Users

                  80.2k
                  Topics

                  1.3m
                  Posts

                  4
                  7
                  377
                  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