Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. [gelöst]Verzögert einen Status setzen - setStateDelayed?

    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

    [gelöst]Verzögert einen Status setzen - setStateDelayed?

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

      ich habe im Forum schon einiges zu dem Thema gelesen. Im Prinzip bräuchte ich in etwa so etwas wie https://forum.iobroker.net/viewtopic.php?p=22756#p22756 beschrieben.

      Ich würde mir gerne einen Datenpunkt "Sonne_scheint" sofort auf true setzen, wenn die Differenz zwischen zwei Temperatursensoren z.B. >6° ist und mit einer Verzögerung von beispielsweise 15min auf false setzen, wenn die Differenz z.B. <4° ist.

      Ich bastel nun schon seit einiger Zeit und bekomme es nicht hin…

      Das sind meine Variablen:

      var Sonne_scheint='javascript.0.Rollosteuerung.Sonne_scheint'/*Sonne scheint*/
      var Sensor_Temp1=getState('hm-rpc.1.NEQ0534165.1.TEMPERATURE' /*Temperaturdiff Sonnensensor:1 TEMPERATURE*/).val;
      var Sensor_Temp2=getState('hm-rpc.1.NEQ0534165.2.TEMPERATURE'/*Temperaturdiff Sonnensensor:2 TEMPERATURE*/).val;
      var Temperatur_diff=Sensor_Temp1-Sensor_Temp2;
      
      [...]
      
      

      danke

      1 Reply Last reply Reply Quote 0
      • paul53
        paul53 last edited by

        const idSonne = 'javascript.0.Rollosteuerung.Sonne_scheint'/*Sonne scheint*/;
        const idTemp1 = 'hm-rpc.1.NEQ0534165.1.TEMPERATURE'/*Temperaturdiff Sonnensensor:1 TEMPERATURE*/;
        const idTemp2 = 'hm-rpc.1.NEQ0534165.2.TEMPERATURE'/*Temperaturdiff Sonnensensor:2 TEMPERATURE*/;
        
        var Temp1 = getState(idTemp1).val;
        var Temp2 = getState(idTemp2).val;
        var timer = null;
        
        function sonne() {
           if(Temp1 - Temp2 > 6) {
              setState(idSonne, true, true)
              if(timer) clearTimeout(timer);
           }
           if(Temp1 - Temp2 < 4) {
              timer = setTimeout(function() {
                 setState(idSonne, false, true);
              }, 15 * 60000);
           }
        }
        
        sonne(); // Skriptstart
        on(idTemp1, function(dp) {
           Temp1 = dp.state.val;
           sonne();
        });
        on(idTemp2, function(dp) {
           Temp2 = dp.state.val;
           sonne();
        });
        
        
        1 Reply Last reply Reply Quote 0
        • M
          mguenther last edited by

          Paul, danke - wie immer… ich breche mir jetzt seit 2 Tagen alle Finger und du brauchst 2min... FRUSTRIEREND...

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

          Support us

          ioBroker
          Community Adapters
          Donate

          859
          Online

          31.8k
          Users

          79.9k
          Topics

          1.3m
          Posts

          2
          3
          194
          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