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. Zeitspanne, Trigger und if Abfrage

NEWS

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

  • 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

Zeitspanne, Trigger und if Abfrage

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
3 Beiträge 2 Kommentatoren 411 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.
  • M Offline
    M Offline
    massa
    schrieb am zuletzt editiert von
    #1

    Hallo zusammen,

    ich spiele nun schon eine ganze Weile mit dem iobroker und habe auch einige Skripte implementiert.

    Nun haben sich mit der Zeit einige Fragen bei mir aufgetan auf die ich keine Antwort finde:

    1. Wie bzw. nach welchen Regeln verarbeitet Iobroker ein Skript, wenn z.B. ein Trigger (.on) innerhalb einer if-Abfrage bzw, einem anderen Trigger steht, also z.B.

    .on(Anwesenheitstatus ändert sich)
        if(anwesenehit=wahr){
           .on(Tür öffnet sich)
                Schalte das Licht im Flur ein
    
    

    2. Wie kann ich eine Zeitspanne festlegen, sodass wenn ich nach hause komme und meine Anwesenheit wahr ist und sich dann innerhalb von 10 Minuten der Status des Türsensors ändert das Licht im Flur angeht und sich nach 3 Minuten wieder ausschaltet? Natürlich darf das Licht nur angehen, wenn die isAstroDay Funktion false ist. Folgendes ist mein Ansatz, welcher aber nicht funktioniert, da wie es aussieht direkt in die Trigger gesprungen wird, ohne dass vorherige Bedingungen abgefragt werden:

    on({id: "cloud.0.services.ifttt"/*IFTTT value*/, change: "ne"}, function (obj) {
        if(getState("cloud.0.services.ifttt").val == 'person1_abwesend' && getState("cloud.1.services.ifttt").val == 'person2_abwesend'){
            setState("hm-rega.0.950"/*Anwesenheit_HM*/, false);
            setState("hm-rpc.0.XXX.1.STATE"/*HM-LC-Sw1PBU-FM XXX:1.STATE*/, false);
            setState("hm-rpc.0.XXX.1.LEVEL"/*HM-LC-Dim1TPBU-FM XXX:1.LEVEL*/, 0);
        }
        else{
            setState("hm-rega.0.950"/*Anwesend*/, true);
            on({id: "hm-rpc.0.XXX.1.STATE"/*HM-Sec-SCo XXX:1.STATE*/, change: "ne"}, function (obj) {
                if(isAstroDay()===false){
                    setState("hm-rpc.0.XXX.1.STATE"/*HM-LC-Sw1PBU-FM XXX:1.STATE*/, true);
                    timeout = setTimeout(function () {
                      setState("hm-rpc.0.XXX.1.STATE"/*HM-LC-Sw1PBU-FM XXX:1.STATE*/, false);  
                    }, 180000);
                }    
            });
        }
    });
    
    

    Vielen Dank für eure Hilfe :)

    1 Antwort Letzte Antwort
    0
    • paul53P Offline
      paul53P Offline
      paul53
      schrieb am zuletzt editiert von
      #2

      Erzeuge bitte keine Trigger innerhalb von Funktionen, es sei denn, die Funktion ist explizit zum Erzeugen variabler Trigger programmiert.

      Wie ich sehe, benötigst Du 3 Trigger (Person1, Person2, Tür). Die Kommunikation sollte über globale Skriptvariablen erfolgen.

      var person1 = getState("cloud.0.services.ifttt").val;
      var person2 = getState("cloud.1.services.ifttt").val;
      
      

      Diese Variablen werden im jeweiligen Trigger aktualisiert und können in einer Funktion ausgewertet werden.
      @massa:

      sich dann innerhalb von 10 Minuten der Status des Türsensors ändert das Licht im Flur angeht `
      Dazu solltest Du eine weitere globale Variable (jemand_kommt) erstellen, die durch die Personen-Trigger 10 Minuten lang auf true gesetzt wird und durch die Callback-Funktion des Tür-Triggers ausgewertet wird.

      var jemand_kommt = false;
      var timer1 = null;
      var timer2 = null;
      var timerTuer = null;
      

      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
      • M Offline
        M Offline
        massa
        schrieb am zuletzt editiert von
        #3

        Ahhhh jetzt habe ich verstanden wie man es machen muss. Vielen Dank für deine Hilfe! :)

        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

        899

        Online

        32.4k

        Benutzer

        81.5k

        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