Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Zeitspanne, Trigger und if Abfrage

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    Zeitspanne, Trigger und if Abfrage

    This topic has been deleted. Only users with topic management privileges can see it.
    • M
      massa last edited by

      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 Reply Last reply Reply Quote 0
      • paul53
        paul53 last edited by

        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;
        
        1 Reply Last reply Reply Quote 0
        • M
          massa last edited by

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

          1 Reply Last reply Reply Quote 0
          • First post
            Last post

          Support us

          ioBroker
          Community Adapters
          Donate

          580
          Online

          31.7k
          Users

          79.9k
          Topics

          1.3m
          Posts

          2
          3
          357
          Loading More Posts
          • Oldest to Newest
          • Newest to Oldest
          • Most Votes
          Reply
          • Reply as topic
          Log in to reply
          Community
          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
          The ioBroker Community 2014-2023
          logo