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. Skripten / Logik
  4. Wie auf Sonnenuntergang und Gerätezustand triggern?

NEWS

  • Neuer ioBroker-Blog online: Monatsrückblick März/April 2026
    BluefoxB
    Bluefox
    5
    1
    123

  • Verwendung von KI bitte immer deutlich kennzeichnen
    HomoranH
    Homoran
    8
    1
    163

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

Wie auf Sonnenuntergang und Gerätezustand triggern?

Scheduled Pinned Locked Moved Skripten / Logik
21 Posts 3 Posters 1.7k Views 1 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.
  • HiltexH Offline
    HiltexH Offline
    Hiltex
    wrote on last edited by
    #1

    Hallo,

    ich versuche mich gerade an ein paar Blocky-Skripten, die vom Grunde her auch schon laufen. Jetzt fällt es mir jedoch schwer, den geeigneten Trigger für mein Script zu finden. Funktionieren soll das ganze so:

    Wenn der Fernseher läuft und die Sonne geht unter, dann soll das Licht eingeschaltet werden.

    Wenn die Sonne bereits untergegangen ist und dann der Fernseher eingeschaltet wird, dann soll das Licht angehen.

    Wenn die Sonne schon untergegangen ist und der Fernseher bereits läuft, soll es möglich sein, das Licht auszuschalten, ohne dass das Script das Licht von alleine wieder einschaltet.

    Wenn der Fernseher ausgeht, soll auch das Licht gehen.

    Ich müsste hier also auf das eintreten des Sonnenunterganges, sowie den Powerstatus von Fernseher triggern.

    Mein Script hab ich angehängt. Für den Test hab ich im Steuerungsteil Fernseher und Licht durch Dummys in FHEM getauscht und den Sonnenuntergang durch eine Uhrzeit ersetzt, weil ich die besser beeinflussen/ändern kann ;)

    Kann mir jemand dazu einen Tipp geben?
    9433_bildschirmfoto_2018-10-27_um_20.26.42.png

    Blog: indibit.de

    1 Reply Last reply
    0
    • J Offline
      J Offline
      Jan1
      wrote on last edited by
      #2

      Beim Trigger kannst nur mit Zustände triggern, heißt Du musst alles in den "falls" Block darunter packen, was mit der Zeit zu tun hat. Oder Du nimmst ein Zeitplan als Trigger und den Rest wieder in den "falls" Block verknüpfen.

      1 Reply Last reply
      0
      • HiltexH Offline
        HiltexH Offline
        Hiltex
        wrote on last edited by
        #3

        Sind die trigger denn dann gleichrangig oder müssen die dann zur selben Zeit eintreten?

        Blog: indibit.de

        1 Reply Last reply
        0
        • J Offline
          J Offline
          Jan1
          wrote on last edited by
          #4

          kein "falls" Trigger, sondern ein "falls" Block (blau). Sonst hast Trigger im Trigger und das hast schon richtig erkannt, das haut zeitlich meist nicht hin.

          1 Reply Last reply
          0
          • HiltexH Offline
            HiltexH Offline
            Hiltex
            wrote on last edited by
            #5

            Ich weiß was du meinst, aber ich verstehe nicht, wie das funktionieren soll. Ich hatte jetzt schon verschiedene Varianten ausprobiert. Aber alle führten dazu, dass die Lampen ständig eingeschaltet werden, auch wenn keines der eigentlichen Ereignisse eingetreten ist.

            Das Ding ist, dass das Licht nicht permanent eingeschaltet sein soll, wenn es dunkel ist und der Fernseher läuft. Das Licht soll nur einmal eingeschaltet werden wenn eine der Bedingungen bereits erfüllt ist und das andere Ereignisse Eintritt.

            Blog: indibit.de

            1 Reply Last reply
            0
            • J Offline
              J Offline
              Jan1
              wrote on last edited by
              #6

              Das machst dann mit UND Verknüpfung in der "falls" Bedingung. Als so in der Art: "falls Zustand+Zeit, dann mache…". die "falls" prüft das Ergebnis immer auf wahr, sollte also etwas auf nicht wahr geprüft werden, einfach ein "nicht" davor.

              Ich kenne Deine Grundkenntnisse in der Richtung nicht, für mich als Elektroniker ist das eben alles "logisch" :lol:

              1 Reply Last reply
              0
              • HiltexH Offline
                HiltexH Offline
                Hiltex
                wrote on last edited by
                #7

                Mein Background ist ebenfalls Elektroniker & Programmierer, aber alle Systeme haben eben immer ihre Eigenheiten :D

                Ich hab jetzt eine Variante, die funktionieren könnte. Zumindest der zweite Trigger funktioniert, den konnte ich ja testen.

                Was denkst du? Geht morgen das Licht an, wenn der Fernseher läuft und die Sonne untergeht?
                9433_bildschirmfoto_2018-10-27_um_20.58.34.png

                Blog: indibit.de

                1 Reply Last reply
                0
                • J Offline
                  J Offline
                  Jan1
                  wrote on last edited by
                  #8

                  Nö :lol:

                  OK, hast schon mal die besten Voraussetzungen um da schnell durch zu blicken. Die Astro Zeiten beziehen sich immer auf den aktuelle Tag und somit müsste das dann tagsüber angehen. Da muss ich auch immer erst mal simulieren und meist ist dann "nicht zwischen" die Lösung. Bei den "falls" kannst das "= wahr" weg lassen, da das eh die Grundfunktion ist. Blöcke werden oft übersichtlicher, wenn man die Eingänge auf "extern" schaltet (rechte Maustaste).

                  Dann würde ich die zweite "falls" Bedingung gleich UND mit der ersten verknüpfen.

                  1 Reply Last reply
                  0
                  • J Offline
                    J Offline
                    Jan1
                    wrote on last edited by
                    #9

                    hier mal ein kleines Beispiel das einiges von dem was ich geschrieben habe beinhaltet und bei mir eben zeit UND zustandsabhängig was steuert. 5076_2018_10_27_21_23_31_window.png

                    1 Reply Last reply
                    0
                    • HiltexH Offline
                      HiltexH Offline
                      Hiltex
                      wrote on last edited by
                      #10

                      Ok, verstehe. Du triggerst hier auf die zyklische Aktualisierung und wertest dann die Zustände aus.

                      Aber wo liegt das Problem beim Triggern auf den Sonnenuntergang? Der findet doch nur zu einem Zeitpunkt statt und nur dann soll geschaltet werden. Der zweite weg funktioniert ja unabhängig davon.

                      Unschön ist bei meiner Variante natürlich, dass ich bei meiner Variante die Aktion zwei mal drin hab. Aber der Funktion tut das ja keinen Abbruch, oder?

                      Blog: indibit.de

                      1 Reply Last reply
                      0
                      • paul53P Offline
                        paul53P Offline
                        paul53
                        wrote on last edited by
                        #11

                        Die UND-Verknüpfung kann mit Variablen (tv, nacht) und einer Funktion lösen.
                        493_blockly_astro_dp-trigger.jpg

                        Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                        Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                        1 Reply Last reply
                        0
                        • J Offline
                          J Offline
                          Jan1
                          wrote on last edited by
                          #12

                          @Hiltex:

                          Ok, verstehe. Du triggerst hier auf die zyklische Aktualisierung und wertest dann die Zustände aus.

                          Aber wo liegt das Problem beim Triggern auf den Sonnenuntergang? Der findet doch nur zu einem Zeitpunkt statt und nur dann soll geschaltet werden. Der zweite weg funktioniert ja unabhängig davon.

                          Unschön ist bei meiner Variante natürlich, dass ich bei meiner Variante die Aktion zwei mal drin hab. Aber der Funktion tut das ja keinen Abbruch, oder? `

                          Das Blockly von mir war ja auch nur ein Beispiel, wie man hier verknüpfen kann und kein "=wahr" verwendet. Von paul53 bekommst Du hier auch gleich noch gezeigt, wie man interne Variablen einsetzt was auch sehr hilfreich sein kann. Er kennt sich damit übrigens richtig gut aus.

                          Da Du auch Programmierkenntnisse hast, weißt Du auch das es zum lösen von Aufgaben immer mehrere Möglichkeiten gibt, wobei die kürzeste und einfachste in der Regel zu bevorzugen ist ;)

                          1 Reply Last reply
                          0
                          • HiltexH Offline
                            HiltexH Offline
                            Hiltex
                            wrote on last edited by
                            #13

                            Damit will ich nun ins Rennen gehen. In einer Stunde ist es ja dann soweit - ich bin gespannt :lol:
                            9433_bildschirmfoto_2018-10-28_um_15.53.37.png

                            Blog: indibit.de

                            1 Reply Last reply
                            0
                            • J Offline
                              J Offline
                              Jan1
                              wrote on last edited by
                              #14

                              Na da bin ich mal gespannt was der lila Funktionsblock macht. Mit dem habe ich noch nie gearbeitet. Kennst Du die Funktion die dahinter steckt?

                              Kommt aber hin wie Du das verwendest, wenn das tatsächlich so läuft. Man erstellt sich damit eine wiederkehrende Funktion und baut die dort ein wo man sie haben möchte.

                              1 Reply Last reply
                              0
                              • HiltexH Offline
                                HiltexH Offline
                                Hiltex
                                wrote on last edited by
                                #15

                                Hat super funktioniert. Einzig, es wurden nicht alle Befehle ausgeführt. Die Ursache war mir aber sofort klar:

                                Es handelt sich dabei um Mi-Light-Leuchten und die Bridge will aufeinanderfolgende Befehle im Abstand von 100ms haben. Entsprechend hab ich jetzt die Befehle um 100, 200, 300, 400 und 500ms verzögert. Im Test hat das jetzt auch funktioniert.

                                Was noch offen ist: wie lange dauert es, bis ioBroker merkt, dass der Fernseher ein- oder ausgeschaltet wurde. Das beobachte ich die Tage und helfe ggf. mit dem Ping-Adapter nach.

                                Danke für Eure Unterstützung.

                                Blog: indibit.de

                                1 Reply Last reply
                                0
                                • HiltexH Offline
                                  HiltexH Offline
                                  Hiltex
                                  wrote on last edited by
                                  #16

                                  @Jan1:

                                  Na da bin ich mal gespannt was der lila Funktionsblock macht. Mit dem habe ich noch nie gearbeitet. Kennst Du die Funktion die dahinter steckt?

                                  Kommt aber hin wie Du das verwendest, wenn das tatsächlich so läuft. Man erstellt sich damit eine wiederkehrende Funktion und baut die dort ein wo man sie haben möchte. `

                                  Von kennen würde ich hier nicht sprechen, hab ja gestern erst mit ioBroker angefangen, aber das ist doch das gleiche Prinzip wie in anderen Programmiersprachen: Bau eine Funktion und ruf sie an passender Stelle ein. Die Darstellung ist erstmal etwas gewöhnungsbedürftig, aber man kann ja auf Code umschalten und erkennt dort schnell, was dahinter steckt.

                                  Blog: indibit.de

                                  1 Reply Last reply
                                  0
                                  • J Offline
                                    J Offline
                                    Jan1
                                    wrote on last edited by
                                    #17

                                    Ja die Mi-Light brauchen bisschen Zeit dazwischen, aber gut zu wissen, dass der Funktionsblock tatsächlich so einfach funktioniert. Hatte das zwar gelesen, aber irgendwie nicht verstanden, dass es wirklich so leicht ist :lol:

                                    Das ist der Vorteil, wenn man eine Programmiersprache beherrscht. Ich muss dazu immer in der Doku nachlesen, oder einfach mal probieren. Da steht eben, man baut sich eine Funktion und fügt die ein. Das war zu einfach um es gleich zu verstehen. Ich dachte da muss mehr sein.

                                    1 Reply Last reply
                                    0
                                    • HiltexH Offline
                                      HiltexH Offline
                                      Hiltex
                                      wrote on last edited by
                                      #18

                                      Da ist ja auch mehr: Du musst die Funktion noch aufrufen ;)

                                      Ließ mal den erzeugten Code - das sieht aus wie in jeder anderen Programmiersprache auch:

                                      var Licht;
                                      
                                      /**
                                       * Beschreibe diese Funktion …
                                       */
                                      function Licht_schalten() {
                                        console.log('Funktion Licht schalten');
                                        if (Licht == true) {
                                          console.log('Licht einschalten');
                                          setState("milight.0.zone1.on"/*Zone 1 ON*/, true);
                                          setStateDelayed("milight.0.zone2.on"/*Zone 2 ON*/, true, 100, false);
                                          setStateDelayed("milight.0.zone1.whiteMode"/*Zone 1 White mode*/, true, 200, false);
                                          setStateDelayed("milight.0.zone2.whiteMode"/*Zone 2 White mode*/, true, 300, false);
                                          setStateDelayed("milight.0.zone1.brightness"/*Zone 1 Brightness*/, 100, 400, false);
                                          setStateDelayed("milight.0.zone2.brightness"/*Zone 2 Brightness*/, 100, 500, false);
                                        } else {
                                          console.log('Licht ausschalten');
                                          setState("milight.0.zone1.off"/*Zone 1 OFF*/, true);
                                          setStateDelayed("milight.0.zone2.off"/*Zone 2 OFF*/, true, 1000, false);
                                        }
                                      }
                                      
                                      schedule({astro: "sunset", shift: 0}, function () {
                                        console.log('Astro getriggert');
                                        // Zum Sonnenuntergang Licht EIN, wenn TV läuft
                                        if (getState("samsung.0.Power.checkOnOff").val == 'on') {
                                          console.log('Fernseher läuft');
                                          Licht = true;
                                          Licht_schalten();
                                        }
                                      });
                                      on({id: "samsung.0.Power.checkOnOff"/*Teterminates Power state*/, change: "ne"}, function (obj) {
                                        var value = obj.state.val;
                                        var oldValue = obj.oldState.val;
                                        console.log('TV Powerstate getriggert');
                                        if (compareTime(getAstroDate("sunrise", undefined, 0), getAstroDate("sunset", undefined, 0), "not between", null)) {
                                          console.log('Es ist Nacht');
                                          // Wenn Nacht...
                                          if (getState("samsung.0.Power.checkOnOff").val == 'on') {
                                            console.log('Fernseher wurde eingeschaltet');
                                            // ...und TV läuft, Licht EIN,...
                                            Licht = true;
                                          } else if (getState("samsung.0.Power.checkOnOff").val == 'off') {
                                            console.log('Fernseher wurde ausgeschaltet');
                                            // ...sonst Licht AUS
                                            Licht = false;
                                          }
                                          Licht_schalten();
                                        }
                                      });
                                      

                                      Man beachte den Aufruf von Licht_schalten();

                                      Blog: indibit.de

                                      1 Reply Last reply
                                      0
                                      • J Offline
                                        J Offline
                                        Jan1
                                        wrote on last edited by
                                        #19

                                        Da sagt mir der Code nur Bahnhof ;)

                                        Wenn ich allerdings anschaue wie Du das im Blockly verwendest, verstehe ich das sofort. Funktion erstellen und da wo gewünscht aufrufen, also wirklich sehr einfach :lol:

                                        1 Reply Last reply
                                        0
                                        • HiltexH Offline
                                          HiltexH Offline
                                          Hiltex
                                          wrote on last edited by
                                          #20

                                          Ohne Blocky hätte ich bestimmt ewig für den Code gebraucht. JavaScript ist nicht so mein Ding. Aber interpretieren ist nicht schwer, bei solch einfachem Code.

                                          Blog: indibit.de

                                          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

                                          452

                                          Online

                                          32.8k

                                          Users

                                          82.7k

                                          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