Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • 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

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Fernsehautomatik (Licht dimmen)

NEWS

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

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.3k

Fernsehautomatik (Licht dimmen)

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
3 Beiträge 2 Kommentatoren 902 Aufrufe
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • S Offline
    S Offline
    schittl
    schrieb am zuletzt editiert von
    #1

    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

    HW: Lenovo M920q (Proxmox, ioBroker, RaspMatic & Z2M), QNAP (Docker, Influx), Arduino Mega 2560 R3 (I2C DS18B20 + LED)

    SW: CT IoBroker, VM RaspMatic(v3.79.6.20241122)

    1 Antwort Letzte Antwort
    0
    • AlCalzoneA Offline
      AlCalzoneA Offline
      AlCalzone
      Developer
      schrieb am zuletzt editiert von
      #2

      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

      Warum `sudo` böse ist: https://forum.iobroker.net/post/17109

      1 Antwort Letzte Antwort
      0
      • S Offline
        S Offline
        schittl
        schrieb am zuletzt editiert von
        #3

        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;
        }
        
        

        HW: Lenovo M920q (Proxmox, ioBroker, RaspMatic & Z2M), QNAP (Docker, Influx), Arduino Mega 2560 R3 (I2C DS18B20 + LED)

        SW: CT IoBroker, VM RaspMatic(v3.79.6.20241122)

        1 Antwort Letzte Antwort
        0
        Antworten
        • In einem neuen Thema antworten
        Anmelden zum Antworten
        • Älteste zuerst
        • Neuste zuerst
        • Meiste Stimmen


        Support us

        ioBroker
        Community Adapters
        Donate

        711

        Online

        32.6k

        Benutzer

        82.3k

        Themen

        1.3m

        Beiträge
        Community
        Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
        ioBroker Community 2014-2025
        logo
        • Anmelden

        • Du hast noch kein Konto? Registrieren

        • Anmelden oder registrieren, um zu suchen
        • Erster Beitrag
          Letzter Beitrag
        0
        • Home
        • Aktuell
        • Tags
        • Ungelesen 0
        • Kategorien
        • Unreplied
        • Beliebt
        • GitHub
        • Docu
        • Hilfe