Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Fernsehautomatik (Licht dimmen)

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Fernsehautomatik (Licht dimmen)

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

      Hi,

      ich versuche folgendes CCU-Programm auf den ioBroker zu transferieren
      3116_tv_dimmen.png
      Was soll erreicht werden? Wenn TV an ist und ich schalte meinen Dimmer ein soll er automatisch auf 50% leveln. Sobald ich den TV wieder ausschalte soll er wieder auf 100% leveln. Ist die Reihenfolge unterschiedlich ist (erst Licht anschließend TV) soll das ebenfalls funktionieren. Dabei habe dabei folgendes Ansatz unternommen:

      var night = false;   // ab Sonnenuntergang bis Sonnenaufgang
      var dimmen = false;  // Dimmen
      var fernseh = false; // Fernseher Aus/Ein
      
      function lampe() {
          if (night) {
              if(dimmen && fernseh)) { 
                  log("Licht nachts bei TV an dimmen");
                  setState("hm-rpc.0.ABCDEFGHI.1.LEVEL", 50);      //Lampe dimmen
              } else { 
                  log("Licht nachts bei TV aus erhöhen");
                  setState("hm-rpc.0.ABCDEFGHI.1.LEVEL", 100);     //Lampe dimmen auf 100%
              }
          }
      }
      
      schedule({astro:"sunset"}, function () {
          night = true;
          lampe();
      });
      schedule({astro:"sunrise"}, function () {
          night = false;
          lampe();
      });
      
      on("hm-rpc.0.ABCDEFGHI.1.LEVEL", function(obj) {
          if (obj.newState.val > 99 && obj.newState.val != 50) dimmen = true;
          else                                                  dimmen = false;
          lampe();
      });
      
      on("hm-rpc.0.XYZ7654321.2.POWER", function(obj) {
          if (obj.newState.val > 3) fernseh = true;
          else                      fernseh = false; 
          lampe();
      });
      
      

      Ist das der richtige Ansatz oder geht das viel einfacher? Würde es gerne über Skript abbilden und nicht per Szene-Adapter.

      Zusatzinfo: Skript ist nur ein Ansatz ohne jegliche Prüfung auf Funktion. Teste ich aber noch.

      mfg

      Falk

      1 Reply Last reply Reply Quote 0
      • AlCalzone
        AlCalzone Developer last edited by

        Sieht auf den ersten Blick gut und logisch sauber aus.

        Das einzige Problem könnte bei einem Neustart des Skripts, Adapters, ioBroker auftreten. Da die Nacht-Variable nirgends gespeichert ist, weiß das Skript bis zum nächsten Nachtbeginn nicht, dass es Nacht ist. Wenn du diesen Trigger + Variable durch einen Vergleich der Uhrzeit in Licht() ersetzt, kannst du das Problem umgehen.

        ==> https://github.com/iobroker/iobroker.ja … omparetime

        Das gleiche gilt natürlich auch für die anderen States, wobei die schneller aktualisiert werden. Mit getState in Licht() den aktuellen Wert zu prüfen, macht das ganze Skript zuverlässiger.

        Edit: Diese Abfrage ist irgendwie quatsch:

        obj.newState.val > 99 && obj.newState.val != 50
        

        wenn val > 99, dann gilt immer val != 50

        1 Reply Last reply Reply Quote 0
        • S
          schittl last edited by

          Danke erstmal für die rasche Rückmeldung. Dann bin ich erstmal nicht soweit entfernt 😉

          Edit: Diese Abfrage ist irgendwie quatsch:
          Code:
          
          obj.newState.val > 99 && obj.newState.val != 50
          
          

          Hast Du vollkommen recht. Wollte damit nur abbilden, dass wenn man den Fernseher wieder ausschaltet die Lampe wieder auf 100% levelt. Geht eventuell auch so etwas, welche den Workaround einfacher gestalten?

          on({id: "hm-rpc.0.XYZ7654321.2.POWER", valLt: 3, oldValGe: 50}, function() {
              setState("hm-rpc.0.ABCDEFGHI.1.LEVEL", 100);     //Lampe dimmen auf 100%
              fernseh = false;
          }
          on({id: "hm-rpc.0.ABCDEFGHI.1.LEVEL", valLt: 100, oldValGe: 0}, function() {
              if (night && fernseh) setState("hm-rpc.0.ABCDEFGHI.1.LEVEL", 50);     //Lampe dimmen auf 50%
              dimmen = false;
          }
          
          
          1 Reply Last reply Reply Quote 0
          • First post
            Last post

          Support us

          ioBroker
          Community Adapters
          Donate

          817
          Online

          31.7k
          Users

          79.8k
          Topics

          1.3m
          Posts

          2
          3
          777
          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