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. JavaScript
  5. Gelöst: IF Logik gesucht

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.8k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    2.2k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    16
    1
    3.2k

Gelöst: IF Logik gesucht

Scheduled Pinned Locked Moved JavaScript
6 Posts 4 Posters 404 Views 2 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.
  • B Offline
    B Offline
    BigStephan
    wrote on last edited by BigStephan
    #1

    Hey,

    wie baue ich eine IF-Abfrage auf, die folgendes prüfen soll:

    es ist eine Startstunde für Tagbetrieb und eine für Nachtbetrieb gegeben.
    nun soll geprüft werden ob ein Wert innerhalb des Tagbereiches liegt oder im Nachtbereich

    ein:

    if (Wert>=TagStartStunde && Wert < Nachtstartstunde){reaktion}
    
    

    funktioniert nur bedingt, da der Übergang nach 23 Uhr auf 0 Uhr hier mit einfließt.
    Wenn der Wert bspw. 15 ist bei Nachtstart 2 und Tagstart 10, stimmt zwar die erste Teilbedingung, aber die zweite nicht.

    Nehme ich stattdessen eine ODER Verknüpfung springt er zwar bei allen Werten richtig in die Bedingung (auch für Wert = 1 bspw.), aber wenn (warum auch immer) Tag und Nachtstart vertauscht wären, also Tagstart bei 2 liegt und Nachtstart bei 10 würde Wert 18 die IF-Bedingung (mit ODER) erfüllen, obwohl bei 18 schon Nacht wäre.

    Hat jemand eine Idee oder gar fertige Logik um das korrekt zu prüfen?

    Grüße

    Stephan

    Lenny.CBL paul53P 2 Replies Last reply
    0
    • B BigStephan

      Hey,

      wie baue ich eine IF-Abfrage auf, die folgendes prüfen soll:

      es ist eine Startstunde für Tagbetrieb und eine für Nachtbetrieb gegeben.
      nun soll geprüft werden ob ein Wert innerhalb des Tagbereiches liegt oder im Nachtbereich

      ein:

      if (Wert>=TagStartStunde && Wert < Nachtstartstunde){reaktion}
      
      

      funktioniert nur bedingt, da der Übergang nach 23 Uhr auf 0 Uhr hier mit einfließt.
      Wenn der Wert bspw. 15 ist bei Nachtstart 2 und Tagstart 10, stimmt zwar die erste Teilbedingung, aber die zweite nicht.

      Nehme ich stattdessen eine ODER Verknüpfung springt er zwar bei allen Werten richtig in die Bedingung (auch für Wert = 1 bspw.), aber wenn (warum auch immer) Tag und Nachtstart vertauscht wären, also Tagstart bei 2 liegt und Nachtstart bei 10 würde Wert 18 die IF-Bedingung (mit ODER) erfüllen, obwohl bei 18 schon Nacht wäre.

      Hat jemand eine Idee oder gar fertige Logik um das korrekt zu prüfen?

      Grüße

      Stephan

      Lenny.CBL Offline
      Lenny.CBL Offline
      Lenny.CB
      Most Active
      wrote on last edited by
      #2

      @BigStephan da gabe es schon mal ein Script für. Hier mal ein Link dazu. Funktion: Prüfen, ob innerhalb eines Zeitfensters

      ich hatte das mal für meine Weihnachtsbeleuchtung um eine Schaltzeit erweitert.

      var von1 = getState('javascript.0.Variablen.Schaltzeit_on_1').val; // '06:00:00'
      var bis1 = getState('javascript.0.Variablen.Schaltzeit_off_1').val;
      var von2 = getState('javascript.0.Tageszeit.Sonnenuntergang').val;
      var bis2 = getState('javascript.0.Variablen.Schaltzeit_off_2').val;
      
      function main() {
      function currentDate() {
          var d = new Date();
          return new Date(d.getFullYear(), d.getMonth(), d.getDate());
      }
      function addTime(strTime) {
          var time = strTime.split(':');
          var d = currentDate();
          d.setHours(time[0]);
          d.setMinutes(time[1]);
          d.setSeconds(time[2]);
          return d;
      }
      function isTimeInRange(strLower, strUpper) {
          var now = new Date();
          var lower = addTime(strLower);
          var upper = addTime(strUpper);
          var inRange = false;
          if (upper > lower) {
              // opens and closes in same day
              inRange = (now >= lower && now <= upper) ? true : false;
          } else {
              // closes in the following day
              inRange = (now >= upper && now <= lower) ? false : true;
          }
          return inRange;
      }
      if (isTimeInRange(von1, bis1) || isTimeInRange(von2, bis2))
          {if (getState('scene.0.Licht_X-Mas_innen').val === false) {
              setState('scene.0.Licht_X-Mas_innen', true);
              }
      }
      else{
          setState('scene.0.Licht_X-Mas_innen', false);
          }
      }
      schedule("*/1 * * * *", main);
      main();
      
      1 Reply Last reply
      0
      • N Offline
        N Offline
        Nahasapee
        wrote on last edited by
        #3

        oder die interne funktion

        if(isAstroDay()){
        
        }
        

        //Returns true if the current time is between the astro sunrise and sunset.
        Link Text
        die prüft zwar nur auf Sonnenaufgang und untergang aber im link steht weiter unten wie man mit einem offset arbeitet.
        viele grüße

        1 Reply Last reply
        0
        • B BigStephan

          Hey,

          wie baue ich eine IF-Abfrage auf, die folgendes prüfen soll:

          es ist eine Startstunde für Tagbetrieb und eine für Nachtbetrieb gegeben.
          nun soll geprüft werden ob ein Wert innerhalb des Tagbereiches liegt oder im Nachtbereich

          ein:

          if (Wert>=TagStartStunde && Wert < Nachtstartstunde){reaktion}
          
          

          funktioniert nur bedingt, da der Übergang nach 23 Uhr auf 0 Uhr hier mit einfließt.
          Wenn der Wert bspw. 15 ist bei Nachtstart 2 und Tagstart 10, stimmt zwar die erste Teilbedingung, aber die zweite nicht.

          Nehme ich stattdessen eine ODER Verknüpfung springt er zwar bei allen Werten richtig in die Bedingung (auch für Wert = 1 bspw.), aber wenn (warum auch immer) Tag und Nachtstart vertauscht wären, also Tagstart bei 2 liegt und Nachtstart bei 10 würde Wert 18 die IF-Bedingung (mit ODER) erfüllen, obwohl bei 18 schon Nacht wäre.

          Hat jemand eine Idee oder gar fertige Logik um das korrekt zu prüfen?

          Grüße

          Stephan

          paul53P Offline
          paul53P Offline
          paul53
          wrote on last edited by
          #4

          @BigStephan: Versuche es mal so:

          if(TagStartStunde < Nachtstartstunde) {
             if(Wert >= TagStartStunde && Wert < Nachtstartstunde) {reaktion}
          } else {
             if(Wert >= TagStartStunde || Wert < Nachtstartstunde) {reaktion}
          }
          

          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
          • B Offline
            B Offline
            BigStephan
            wrote on last edited by
            #5

            OK Danke.
            Habs mit der verschachtelten IF Funktion hinbekommen!

            Grüße

            Stephan

            paul53P 1 Reply Last reply
            0
            • B BigStephan

              OK Danke.
              Habs mit der verschachtelten IF Funktion hinbekommen!

              Grüße

              Stephan

              paul53P Offline
              paul53P Offline
              paul53
              wrote on last edited by
              #6

              @BigStephan sagte:

              Habs mit der verschachtelten IF Funktion hinbekommen!

              Dann markiere bitte das Thema in der Überschrift als [gelöst].

              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
              Reply
              • Reply as topic
              Log in to reply
              • Oldest to Newest
              • Newest to Oldest
              • Most Votes


              Support us

              ioBroker
              Community Adapters
              Donate

              832

              Online

              32.4k

              Users

              81.5k

              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