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

NEWS

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

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

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

Gelöst: IF Logik gesucht

Geplant Angeheftet Gesperrt Verschoben JavaScript
6 Beiträge 4 Kommentatoren 405 Aufrufe 2 Watching
  • Ä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.
  • B Offline
    B Offline
    BigStephan
    schrieb am zuletzt editiert von 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 Antworten Letzte Antwort
    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
      schrieb am zuletzt editiert von
      #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 Antwort Letzte Antwort
      0
      • N Offline
        N Offline
        Nahasapee
        schrieb am zuletzt editiert von
        #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 Antwort Letzte Antwort
        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
          schrieb am zuletzt editiert von
          #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 Antwort Letzte Antwort
          0
          • B Offline
            B Offline
            BigStephan
            schrieb am zuletzt editiert von
            #5

            OK Danke.
            Habs mit der verschachtelten IF Funktion hinbekommen!

            Grüße

            Stephan

            paul53P 1 Antwort Letzte Antwort
            0
            • B BigStephan

              OK Danke.
              Habs mit der verschachtelten IF Funktion hinbekommen!

              Grüße

              Stephan

              paul53P Offline
              paul53P Offline
              paul53
              schrieb am zuletzt editiert von
              #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 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

              512

              Online

              32.4k

              Benutzer

              81.6k

              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