Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. Reaktion auf Fehlgeschlagenes SetState

    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

    Reaktion auf Fehlgeschlagenes SetState

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

      Hallo liebe Community,

      ist es mir möglich auf ein SetState aus einem Script auf ein physikalisches Device direkt zu reagieren?
      Um den konkreten Fall zu beschreiben, ich habe eine Steckdose, die ab und zu nicht reagiert.
      Die Log sagt dann Fehler 233 "Mac no Ack". Der IOBroker weiß also, das die Steckdose nicht erreicht wird beim Senden durch fehlendes Acknowledge.
      Mein Datenpunkt hat aber den Wert den ich geschrieben habe, ist aber jetzt einfach Rot.

      Ich möchte einfach eine Funktion ausführen, die noch x mal erneut sendet.

      Vielen Dank in vorraus!

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

        @JinnBln sagte:

        Ich möchte einfach eine Funktion ausführen, die noch x mal erneut sendet.

        Ich sende mit 1 s und 5 s Verzögerung nochmal, falls nicht der Aktor mit Ack triggert (dann werden die Timer gestoppt).

        const actid  = '...';
        const ventid = '...';
        
        var vent = getState(ventid).val; // Sollzustand
        var act = getState(actid).val; // Aktor
        
        var timer1 = null;
        var timer5 = null;
        
        function actor() {
            if(act === vent) {
                if(timer1) clearTimeout(timer1);
                if(timer5) clearTimeout(timer5);
            } else {
                setState(actid, vent);
                timer1 = setTimeout(function() {setState(actid, vent);}, 1000);
                timer5 = setTimeout(function() {setState(actid, vent);}, 5000);
            }
        }
        
        actor();  // script start
        
        on(ventid, function(dp) {
            vent = dp.state.val;
            actor();
        });
        
        on({id: actid, ack: true}, function(dp) {
            act = dp.state.val;
            actor();
        });
        
        1 Reply Last reply Reply Quote 0
        • First post
          Last post

        Support us

        ioBroker
        Community Adapters
        Donate

        938
        Online

        31.9k
        Users

        80.1k
        Topics

        1.3m
        Posts

        2
        2
        158
        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