Skip to content
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • 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

  • Default (No Skin)
  • No Skin
Collapse
Logo
  1. ioBroker Community Home
  2. Deutsch
  3. ioBroker Allgemein
  4. Availability Timeout Zigbee Geräte

NEWS

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

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

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

Availability Timeout Zigbee Geräte

Scheduled Pinned Locked Moved ioBroker Allgemein
17 Posts 3 Posters 425 Views 4 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • AsgothianA Asgothian

    @ketanest sagte in Availability Timeout Zigbee Geräte:

    Hallöchen zusammen,

    ich bin nun auch in die ioBroker Welt eingestiegen und hab mal ein wenig experimentiert.
    Aktuell stehe ich vor dem Problem, dass ich gerne eine Benachrichtigung bekommen möchte, sobald der Strom weg ist (Damit ich ggf. die Komponenten im Rack herunterfahren kann). Die USV spinnt leider rum daher kann ich sie aktuell nicht per USB auslesen, Geld für eine neue ist grad nicht zur Hand. Ich hab ein paar Bosch Zwischenstecker kompakt (hatte ich noch von BSH als auch ein paar "Noname" Dinger zum Testen gekauft. Wenn ich nun den Stecker ziehe, kriegt das ja keiner mit. Erst wenn dann irgendwann keine Rückmeldung mehr kommt (sind immer so um die 10 Minuten) springt der availability Bool auf "false". Irgendwie ist mir das aber zu lang, gibts hier evtl. ne Möglichkeit, das zu verkürzen?
    Ich hab diesbezüglich leider nichts gefunden.

    Danke schonmal für eure Hilfe!

    Ketanest

    Im zigbeee adapter gibt es dazu direkt meines Wissens nach keine Option, da das die netzlast signifikant erhöht - es werden zur Bestimmung der Erreichbarkeit alle relevanten Geräte regelmäßig angepingt.

    Was du aber machen kannst ist dir eine billige wlan Steckdose besorgen und die irgendwo außerhalb des von der usb versorgten Bereiches einstecken. Diese kannst du per Skript oder dediziertem Adapter engmaschiger überwachen.

    Alternativ - wenn ein abfrageintervall von 2 Minuten ausreicht kannst du per Skript den „device-query“ Button der relevanten zigbee Steckdose aktivieren - und schauen ob dadurch die Starts der Dose aktualisiert werden. Unter 2 Minuten geht da meiner Erinnerung nach auch nicht.

    A.
    P.s. Nein, ich hab aktuell keinen Vorschlag was für einen Adapter man am besten nimmt.

    K Offline
    K Offline
    Ketanest
    wrote on last edited by
    #3

    @asgothian Danke für die Antwort!

    Eine WLAN-Steckdose will ich eig nicht dafür, würde das gern mit den vorhandenen Möglichkeiten machen.
    Device Query mit 2 Minuten wäre aber völlig ausreichend. Das schau ich mir mal näher an.

    AsgothianA 1 Reply Last reply
    0
    • K Ketanest

      @asgothian Danke für die Antwort!

      Eine WLAN-Steckdose will ich eig nicht dafür, würde das gern mit den vorhandenen Möglichkeiten machen.
      Device Query mit 2 Minuten wäre aber völlig ausreichend. Das schau ich mir mal näher an.

      AsgothianA Offline
      AsgothianA Offline
      Asgothian
      Developer
      wrote on last edited by
      #4

      @ketanest sagte in Availability Timeout Zigbee Geräte:

      @asgothian Danke für die Antwort!

      Eine WLAN-Steckdose will ich eig nicht dafür, würde das gern mit den vorhandenen Möglichkeiten machen.
      Device Query mit 2 Minuten wäre aber völlig ausreichend. Das schau ich mir mal näher an.

      Passt. Du musst halt den device-query alle 2 Minuten mit true aktualisieren und dann schauen ob innerhalb von 500 ms der state der Steckdose aktualisiert wird. Wie weit du die 500 ms absenken kannst häangt von deinem Netz ab.

      ioBroker auf RPi4 - Hardware soweit wie möglich via Zigbee.
      "Shit don't work" ist keine Fehlermeldung, sondern ein Fluch.

      David G.D 1 Reply Last reply
      0
      • AsgothianA Asgothian

        @ketanest sagte in Availability Timeout Zigbee Geräte:

        @asgothian Danke für die Antwort!

        Eine WLAN-Steckdose will ich eig nicht dafür, würde das gern mit den vorhandenen Möglichkeiten machen.
        Device Query mit 2 Minuten wäre aber völlig ausreichend. Das schau ich mir mal näher an.

        Passt. Du musst halt den device-query alle 2 Minuten mit true aktualisieren und dann schauen ob innerhalb von 500 ms der state der Steckdose aktualisiert wird. Wie weit du die 500 ms absenken kannst häangt von deinem Netz ab.

        David G.D Online
        David G.D Online
        David G.
        wrote on last edited by David G.
        #5

        Hast du nicht irgendwelche anderen Geräte die immer im (W)LAN sind die nicht an der USV hängen?

        Radio, Fernseher, shelly, ein Tablett was immer zu Hause ist, Fritzbox etc die du einfach mit dem Pingadapter anpingen kannst?

        Zeigt eure Lovelace-Visualisierung klick
        (Auch ideal um sich Anregungen zu holen)

        Meine Tabellen für eure Visualisierung klick

        K 1 Reply Last reply
        0
        • K Offline
          K Offline
          Ketanest
          wrote on last edited by
          #6

          @asgothian Danke!
          Ich habs jetzt so gelöst:
          device-query false -> 10 Sekunden warten -> device-query true -> 10 Sekunden warten, Letzte Änderung von "Message from Zigbee" (scheint mir das zuverlässigste zu sein) mit aktueller Zeit - 1 Minute vergleichen, wenn der Letzte Zeitstempel älter ist haut er ne Benachrichtigung raus. Dann 3 Minuten warten und von vorn (while true hehe).
          Die ganzen Änderungen sind scheinbar auch unter 2 Minuten möglich (vermutlich, da ich mit false und true jeweils nen neuen Wert setze).
          Erster Test hat auch gepasst.

          AsgothianA 2 Replies Last reply
          0
          • David G.D David G.

            Hast du nicht irgendwelche anderen Geräte die immer im (W)LAN sind die nicht an der USV hängen?

            Radio, Fernseher, shelly, ein Tablett was immer zu Hause ist, Fritzbox etc die du einfach mit dem Pingadapter anpingen kannst?

            K Offline
            K Offline
            Ketanest
            wrote on last edited by Ketanest
            #7

            @david-g Hab ich tatsächlich nicht nein. Jedenfalls nix, was dauerhaft an wäre. Radio, Fernseher etc. hängen selbst an ner Steckdose zwecks Standby Verbrauch und sind nicht 24/7 an.
            EDIT: Und der Rest hängt an der USV.
            EDIT2: Mein Kühlschrank ist Smart, den könnte ich zwar anpingen, aber so oft wie der die Verbindung verliert ist das auch nicht zuverlässig.

            David G.D 1 Reply Last reply
            0
            • K Ketanest

              @david-g Hab ich tatsächlich nicht nein. Jedenfalls nix, was dauerhaft an wäre. Radio, Fernseher etc. hängen selbst an ner Steckdose zwecks Standby Verbrauch und sind nicht 24/7 an.
              EDIT: Und der Rest hängt an der USV.
              EDIT2: Mein Kühlschrank ist Smart, den könnte ich zwar anpingen, aber so oft wie der die Verbindung verliert ist das auch nicht zuverlässig.

              David G.D Online
              David G.D Online
              David G.
              wrote on last edited by
              #8

              @ketanest

              Aber es klappt ja jetzt.
              Jedenfalls ein kreativer Ansatz um einen Stromausfall zu ermitteln.

              Zeigt eure Lovelace-Visualisierung klick
              (Auch ideal um sich Anregungen zu holen)

              Meine Tabellen für eure Visualisierung klick

              1 Reply Last reply
              0
              • K Ketanest

                @asgothian Danke!
                Ich habs jetzt so gelöst:
                device-query false -> 10 Sekunden warten -> device-query true -> 10 Sekunden warten, Letzte Änderung von "Message from Zigbee" (scheint mir das zuverlässigste zu sein) mit aktueller Zeit - 1 Minute vergleichen, wenn der Letzte Zeitstempel älter ist haut er ne Benachrichtigung raus. Dann 3 Minuten warten und von vorn (while true hehe).
                Die ganzen Änderungen sind scheinbar auch unter 2 Minuten möglich (vermutlich, da ich mit false und true jeweils nen neuen Wert setze).
                Erster Test hat auch gepasst.

                AsgothianA Offline
                AsgothianA Offline
                Asgothian
                Developer
                wrote on last edited by Asgothian
                #9

                @ketanest das auf false setzen kannst du dir sparen - der DP sollte auf ein ansteuern mit wahr immer reagieren - wenn zu schnell dann mit einer Warnmeldungen im log. Ob der cutoff wirklich bei 2 Minuten oder ggf. Bei 30 Sekunden liegt erinnere ich nicht.

                A.

                ioBroker auf RPi4 - Hardware soweit wie möglich via Zigbee.
                "Shit don't work" ist keine Fehlermeldung, sondern ein Fluch.

                1 Reply Last reply
                0
                • K Ketanest

                  @asgothian Danke!
                  Ich habs jetzt so gelöst:
                  device-query false -> 10 Sekunden warten -> device-query true -> 10 Sekunden warten, Letzte Änderung von "Message from Zigbee" (scheint mir das zuverlässigste zu sein) mit aktueller Zeit - 1 Minute vergleichen, wenn der Letzte Zeitstempel älter ist haut er ne Benachrichtigung raus. Dann 3 Minuten warten und von vorn (while true hehe).
                  Die ganzen Änderungen sind scheinbar auch unter 2 Minuten möglich (vermutlich, da ich mit false und true jeweils nen neuen Wert setze).
                  Erster Test hat auch gepasst.

                  AsgothianA Offline
                  AsgothianA Offline
                  Asgothian
                  Developer
                  wrote on last edited by
                  #10

                  @ketanest sagte in Availability Timeout Zigbee Geräte:

                  @asgothian Danke!
                  Ich habs jetzt so gelöst:
                  device-query false -> 10 Sekunden warten -> device-query true -> 10 Sekunden warten, Letzte Änderung von "Message from Zigbee" (scheint mir das zuverlässigste zu sein) mit aktueller Zeit - 1 Minute vergleichen, wenn der Letzte Zeitstempel älter ist haut er ne Benachrichtigung raus. Dann 3 Minuten warten und von vorn (while true hehe).
                  Die ganzen Änderungen sind scheinbar auch unter 2 Minuten möglich (vermutlich, da ich mit false und true jeweils nen neuen Wert setze).
                  Erster Test hat auch gepasst.

                  Zeig mal das Skript . Es erscheint mir unnötig komplex, und der „while true“ macht mir auch Kopfschmerzen

                  A.

                  ioBroker auf RPi4 - Hardware soweit wie möglich via Zigbee.
                  "Shit don't work" ist keine Fehlermeldung, sondern ein Fluch.

                  K 1 Reply Last reply
                  0
                  • AsgothianA Asgothian

                    @ketanest sagte in Availability Timeout Zigbee Geräte:

                    @asgothian Danke!
                    Ich habs jetzt so gelöst:
                    device-query false -> 10 Sekunden warten -> device-query true -> 10 Sekunden warten, Letzte Änderung von "Message from Zigbee" (scheint mir das zuverlässigste zu sein) mit aktueller Zeit - 1 Minute vergleichen, wenn der Letzte Zeitstempel älter ist haut er ne Benachrichtigung raus. Dann 3 Minuten warten und von vorn (while true hehe).
                    Die ganzen Änderungen sind scheinbar auch unter 2 Minuten möglich (vermutlich, da ich mit false und true jeweils nen neuen Wert setze).
                    Erster Test hat auch gepasst.

                    Zeig mal das Skript . Es erscheint mir unnötig komplex, und der „while true“ macht mir auch Kopfschmerzen

                    A.

                    K Offline
                    K Offline
                    Ketanest
                    wrote on last edited by
                    #11

                    @asgothian schittebön:

                    var message, Available, Text2;
                    
                    
                    message = false;
                    Available = true;
                    while (true) {
                      setState('zigbee.0.6c5cb1fffe11042a.device_query' /* Trigger device query */, false);
                      await wait(10000);
                      setState('zigbee.0.6c5cb1fffe11042a.device_query' /* Trigger device query */, true);
                      await wait(10000);
                      if ((getState('zigbee.0.6c5cb1fffe11042a.msg_from_zigbee').lc < /* time calculation */ ((dateTime) => { const ts = (typeof dateTime === 'object' ? dateTime.getTime() : dateTime); return ts - ((1) * 60000); })((new Date().getTime())) && Available == true)) {
                        message = true;
                        Available = false;
                        Text2 = 'Rack Steckdose reagiert nicht mehr.';
                      } else if ((getState('zigbee.0.6c5cb1fffe11042a.msg_from_zigbee').lc > /* time calculation */ ((dateTime) => { const ts = (typeof dateTime === 'object' ? dateTime.getTime() : dateTime); return ts - ((1) * 60000); })((new Date().getTime())) && Available == false)) {
                        message = true;
                        Available = true;
                        Text2 = 'Rack Steckdose reagiert wieder';
                      }
                      if (message == true) {
                        sendTo("email", "send", {
                           text: Text2,
                           to: 'MEINE_EMAIL_ADRESSE',
                           subject: Text2
                        });
                        sendTo("telegram", "send", {
                            text: Text2
                        });
                        message = false;
                      }
                      await wait(10000);
                    }
                    
                    AsgothianA 1 Reply Last reply
                    0
                    • K Ketanest

                      @asgothian schittebön:

                      var message, Available, Text2;
                      
                      
                      message = false;
                      Available = true;
                      while (true) {
                        setState('zigbee.0.6c5cb1fffe11042a.device_query' /* Trigger device query */, false);
                        await wait(10000);
                        setState('zigbee.0.6c5cb1fffe11042a.device_query' /* Trigger device query */, true);
                        await wait(10000);
                        if ((getState('zigbee.0.6c5cb1fffe11042a.msg_from_zigbee').lc < /* time calculation */ ((dateTime) => { const ts = (typeof dateTime === 'object' ? dateTime.getTime() : dateTime); return ts - ((1) * 60000); })((new Date().getTime())) && Available == true)) {
                          message = true;
                          Available = false;
                          Text2 = 'Rack Steckdose reagiert nicht mehr.';
                        } else if ((getState('zigbee.0.6c5cb1fffe11042a.msg_from_zigbee').lc > /* time calculation */ ((dateTime) => { const ts = (typeof dateTime === 'object' ? dateTime.getTime() : dateTime); return ts - ((1) * 60000); })((new Date().getTime())) && Available == false)) {
                          message = true;
                          Available = true;
                          Text2 = 'Rack Steckdose reagiert wieder';
                        }
                        if (message == true) {
                          sendTo("email", "send", {
                             text: Text2,
                             to: 'MEINE_EMAIL_ADRESSE',
                             subject: Text2
                          });
                          sendTo("telegram", "send", {
                              text: Text2
                          });
                          message = false;
                        }
                        await wait(10000);
                      }
                      
                      AsgothianA Offline
                      AsgothianA Offline
                      Asgothian
                      Developer
                      wrote on last edited by Asgothian
                      #12

                      @ketanest dange. So hatte ich das befürchtet.

                      Was hältst du von

                      const availabletimeout=null;
                      var Available =false;
                      
                      const triggerintervall = setIntervall(function() { setState('zigbee.0.6c5cb1fffe11042a.device_query' /* Trigger device query */, true); },110000);
                      
                      on ('zigbee.0.6c5cb1fffe11042a.msg_from_zigbee', function(obj) {
                        clearTimeout(availabletimeout);
                        availabletimeout = setTimeout(function() {
                          If (Available) sendMessage(' Rack Steckdose funktioniert nicht mehr ');
                          Available = false
                        }, 120000);
                        If (!Available) sendMessage(' Rack Steckdose funktioniert wieder ');
                        Available = true;
                      });
                      
                      function sendMessage(Text2)
                      {
                          sendTo("email", "send", {
                             text: Text2,
                             to: 'MEINE_EMAIL_ADRESSE',
                             subject: Text2
                          });
                          sendTo("telegram", "send", {
                              text: Text2
                          });
                      }
                        
                      

                      Das ganze basiert darauf das über einen timeout nachgehalten wird wie lange es her ist das sich der state msg_from_zigbee das letzte mal geändert hat. Wenn der timeout durchläuft dann ist es zu lange her, ansonsten wird der timeout bei jeder erkannten Änderung neu gestartet, das ganze ohne dauerhafte getState abfragen des states selber.

                      Das regelmäßige aktivieren des device query übernimmt das Intervall.

                      A.
                      P.s. ich hasse es code auf dem iPad ins Forum zu tippen - zu viele kleine automatikfehler.

                      ioBroker auf RPi4 - Hardware soweit wie möglich via Zigbee.
                      "Shit don't work" ist keine Fehlermeldung, sondern ein Fluch.

                      K 1 Reply Last reply
                      0
                      • AsgothianA Asgothian

                        @ketanest dange. So hatte ich das befürchtet.

                        Was hältst du von

                        const availabletimeout=null;
                        var Available =false;
                        
                        const triggerintervall = setIntervall(function() { setState('zigbee.0.6c5cb1fffe11042a.device_query' /* Trigger device query */, true); },110000);
                        
                        on ('zigbee.0.6c5cb1fffe11042a.msg_from_zigbee', function(obj) {
                          clearTimeout(availabletimeout);
                          availabletimeout = setTimeout(function() {
                            If (Available) sendMessage(' Rack Steckdose funktioniert nicht mehr ');
                            Available = false
                          }, 120000);
                          If (!Available) sendMessage(' Rack Steckdose funktioniert wieder ');
                          Available = true;
                        });
                        
                        function sendMessage(Text2)
                        {
                            sendTo("email", "send", {
                               text: Text2,
                               to: 'MEINE_EMAIL_ADRESSE',
                               subject: Text2
                            });
                            sendTo("telegram", "send", {
                                text: Text2
                            });
                        }
                          
                        

                        Das ganze basiert darauf das über einen timeout nachgehalten wird wie lange es her ist das sich der state msg_from_zigbee das letzte mal geändert hat. Wenn der timeout durchläuft dann ist es zu lange her, ansonsten wird der timeout bei jeder erkannten Änderung neu gestartet, das ganze ohne dauerhafte getState abfragen des states selber.

                        Das regelmäßige aktivieren des device query übernimmt das Intervall.

                        A.
                        P.s. ich hasse es code auf dem iPad ins Forum zu tippen - zu viele kleine automatikfehler.

                        K Offline
                        K Offline
                        Ketanest
                        wrote on last edited by
                        #13

                        @asgothian oh oh, jetzt muss ich mich in JavaScript noch einarbeiten haha. Hab das bisher mit Blockly gemacht und nur den Code rauskopiert. Kann man const availabletimeout überhaupt so benutzen? Soweit ich weiß kann man const Variablen nach der Deklaration weder initialisieren noch ändern 🤔

                        Weiterhin interpretiere ich:
                        "triggerintervall" löst alle 110 Sekunden den device_query aus (den man im Übrigen scheinbar wirklich einmal switchen muss, habs ausprobiert, wenn ich den auf true setze obwohl er schon true ist, passiert nicht viel).

                        Wenn sich "msg_from_zigbee" ändert (spätestens durch triggerintervall) wird availabletimeout zurückgesetzt und direkt danach gesetzt -> heißt nach 120 Sekunden schickt er (sofern available wahr ist) den Text "Rack Steckdose funktioniert nicht mehr" und setzt Available auf false (grätscht hier aber triggerintervall wieder dazwischen (110 Sekunden) passiert das nicht, weil msg_from_zigbee sich ändert und dadurch der timeout unterbrochen wird).

                        Direkt danach (sofern Available false ist) schickt er "Rack Steckdose funktioniert wieder" und setzt Available auf true. -> Passiert das dann nicht jedesmal direkt nach der Nicht-Funktions-Meldung? Würde ja dann denn Sinn verfehlen. Den Teil hab ich jetzt nur so bedingt verstanden. Wäre es nicht sinnvoller, den "Wieder da"-Teil an den Anfang der Funktion zu packen? Denn bei dem "on"-Event ist das Ding ja auf jeden Fall wieder da.

                        AsgothianA 1 Reply Last reply
                        0
                        • K Ketanest

                          @asgothian oh oh, jetzt muss ich mich in JavaScript noch einarbeiten haha. Hab das bisher mit Blockly gemacht und nur den Code rauskopiert. Kann man const availabletimeout überhaupt so benutzen? Soweit ich weiß kann man const Variablen nach der Deklaration weder initialisieren noch ändern 🤔

                          Weiterhin interpretiere ich:
                          "triggerintervall" löst alle 110 Sekunden den device_query aus (den man im Übrigen scheinbar wirklich einmal switchen muss, habs ausprobiert, wenn ich den auf true setze obwohl er schon true ist, passiert nicht viel).

                          Wenn sich "msg_from_zigbee" ändert (spätestens durch triggerintervall) wird availabletimeout zurückgesetzt und direkt danach gesetzt -> heißt nach 120 Sekunden schickt er (sofern available wahr ist) den Text "Rack Steckdose funktioniert nicht mehr" und setzt Available auf false (grätscht hier aber triggerintervall wieder dazwischen (110 Sekunden) passiert das nicht, weil msg_from_zigbee sich ändert und dadurch der timeout unterbrochen wird).

                          Direkt danach (sofern Available false ist) schickt er "Rack Steckdose funktioniert wieder" und setzt Available auf true. -> Passiert das dann nicht jedesmal direkt nach der Nicht-Funktions-Meldung? Würde ja dann denn Sinn verfehlen. Den Teil hab ich jetzt nur so bedingt verstanden. Wäre es nicht sinnvoller, den "Wieder da"-Teil an den Anfang der Funktion zu packen? Denn bei dem "on"-Event ist das Ding ja auf jeden Fall wieder da.

                          AsgothianA Offline
                          AsgothianA Offline
                          Asgothian
                          Developer
                          wrote on last edited by
                          #14

                          @ketanest sagte in Availability Timeout Zigbee Geräte:

                          @asgothian oh oh, jetzt muss ich mich in JavaScript noch einarbeiten haha. Hab das bisher mit Blockly gemacht und nur den Code rauskopiert. Kann man const availabletimeout überhaupt so benutzen? Soweit ich weiß kann man const Variablen nach der Deklaration weder initialisieren noch ändern 🤔

                          Das ganze kannst du auch in Blockly bauen - kann ich aber nur rudimentär zeigen - und es wird etwas dauern.

                          Weiterhin interpretiere ich:
                          "triggerintervall" löst alle 110 Sekunden den device_query aus (den man im Übrigen scheinbar wirklich einmal switchen muss, habs ausprobiert, wenn ich den auf true setze obwohl er schon true ist, passiert nicht viel).

                          Das ist seltsam - bei mir ging es ohne umschalten.

                          Wenn sich "msg_from_zigbee" ändert (spätestens durch triggerintervall) wird availabletimeout zurückgesetzt und direkt danach gesetzt -> heißt nach 120 Sekunden schickt er (sofern available wahr ist) den Text "Rack Steckdose funktioniert nicht mehr" und setzt Available auf false (grätscht hier aber triggerintervall wieder dazwischen (110 Sekunden) passiert das nicht, weil msg_from_zigbee sich ändert und dadurch der timeout unterbrochen wird).

                          Jein. Die Funktionsweise ist:
                          Wenn sich msg_from_zigbee ändert dann lebt die Steckdose.
                          Das sie das tut wird in der variablen „available“ gespeichert. Eine neue Nachricht gibt es nur wenn diese vorher „falsch“ war.
                          Der timeout dient dazu zu erkennen wenn die nächste Änderung ausbleibt. Zur Erinnerung - wir erwarten alle 110s eine Änderung. Solange sie also aktiv ist kommt der Inhalt des timeout nie zum Zuge, weil der timeout angehalten wird bevor er aktiv wird. Bleibt die Änderung aus dann kommen keine neuen trigger rein, der timeout läuft ins Ende und der Wechsel auf available=false tritt ein.

                          Direkt danach (sofern Available false ist) schickt er "Rack Steckdose funktioniert wieder" und setzt Available auf true. -> Passiert das dann nicht jedesmal direkt nach der Nicht-Funktions-Meldung? Würde ja dann denn Sinn verfehlen. Den Teil hab ich jetzt nur so bedingt verstanden. Wäre es nicht sinnvoller, den "Wieder da"-Teil an den Anfang der Funktion zu packen? Denn bei dem "on"-Event ist das Ding ja auf jeden Fall wieder da.

                          Kann man machen - ändert aber nichts. Der wieder-da Teil kommt nach dem starten des timeout, nicht nach dem Ende.

                          A.

                          ioBroker auf RPi4 - Hardware soweit wie möglich via Zigbee.
                          "Shit don't work" ist keine Fehlermeldung, sondern ein Fluch.

                          AsgothianA 1 Reply Last reply
                          0
                          • AsgothianA Asgothian

                            @ketanest sagte in Availability Timeout Zigbee Geräte:

                            @asgothian oh oh, jetzt muss ich mich in JavaScript noch einarbeiten haha. Hab das bisher mit Blockly gemacht und nur den Code rauskopiert. Kann man const availabletimeout überhaupt so benutzen? Soweit ich weiß kann man const Variablen nach der Deklaration weder initialisieren noch ändern 🤔

                            Das ganze kannst du auch in Blockly bauen - kann ich aber nur rudimentär zeigen - und es wird etwas dauern.

                            Weiterhin interpretiere ich:
                            "triggerintervall" löst alle 110 Sekunden den device_query aus (den man im Übrigen scheinbar wirklich einmal switchen muss, habs ausprobiert, wenn ich den auf true setze obwohl er schon true ist, passiert nicht viel).

                            Das ist seltsam - bei mir ging es ohne umschalten.

                            Wenn sich "msg_from_zigbee" ändert (spätestens durch triggerintervall) wird availabletimeout zurückgesetzt und direkt danach gesetzt -> heißt nach 120 Sekunden schickt er (sofern available wahr ist) den Text "Rack Steckdose funktioniert nicht mehr" und setzt Available auf false (grätscht hier aber triggerintervall wieder dazwischen (110 Sekunden) passiert das nicht, weil msg_from_zigbee sich ändert und dadurch der timeout unterbrochen wird).

                            Jein. Die Funktionsweise ist:
                            Wenn sich msg_from_zigbee ändert dann lebt die Steckdose.
                            Das sie das tut wird in der variablen „available“ gespeichert. Eine neue Nachricht gibt es nur wenn diese vorher „falsch“ war.
                            Der timeout dient dazu zu erkennen wenn die nächste Änderung ausbleibt. Zur Erinnerung - wir erwarten alle 110s eine Änderung. Solange sie also aktiv ist kommt der Inhalt des timeout nie zum Zuge, weil der timeout angehalten wird bevor er aktiv wird. Bleibt die Änderung aus dann kommen keine neuen trigger rein, der timeout läuft ins Ende und der Wechsel auf available=false tritt ein.

                            Direkt danach (sofern Available false ist) schickt er "Rack Steckdose funktioniert wieder" und setzt Available auf true. -> Passiert das dann nicht jedesmal direkt nach der Nicht-Funktions-Meldung? Würde ja dann denn Sinn verfehlen. Den Teil hab ich jetzt nur so bedingt verstanden. Wäre es nicht sinnvoller, den "Wieder da"-Teil an den Anfang der Funktion zu packen? Denn bei dem "on"-Event ist das Ding ja auf jeden Fall wieder da.

                            Kann man machen - ändert aber nichts. Der wieder-da Teil kommt nach dem starten des timeout, nicht nach dem Ende.

                            A.

                            AsgothianA Offline
                            AsgothianA Offline
                            Asgothian
                            Developer
                            wrote on last edited by
                            #15

                            @asgothian f2fc4588-3d96-462b-bccb-4c7a7a0f98f3-image.png

                            So geht es bei mir.
                            Ich hab. Nicht den msg-from-zigbee state genommen, der wird bei mir auf ein device query 10 mal In schneller Folge aktualisiert.

                            A.

                            ioBroker auf RPi4 - Hardware soweit wie möglich via Zigbee.
                            "Shit don't work" ist keine Fehlermeldung, sondern ein Fluch.

                            K 1 Reply Last reply
                            1
                            • AsgothianA Asgothian

                              @asgothian f2fc4588-3d96-462b-bccb-4c7a7a0f98f3-image.png

                              So geht es bei mir.
                              Ich hab. Nicht den msg-from-zigbee state genommen, der wird bei mir auf ein device query 10 mal In schneller Folge aktualisiert.

                              A.

                              K Offline
                              K Offline
                              Ketanest
                              wrote on last edited by
                              #16

                              @asgothian Vielen Dank! Habs mir selbst aber auch schon sehr ähnlich zusammengebastelt:
                              2024-03-14 13_46_13-javascript - olc-raspi01 – Mozilla Firefox.png
                              Ich setz die Variable aber beim Beginn des Skriptes auf wahr, weil ich in jedem Fall mitkriegen will, wenn die auf false umspringt, sprich das Rack nicht erreichbar ist. Setz ich sie am Anfang auf false und das Rack ist bei Skriptbeginn nicht erreichbar, krieg ich das nicht mit. Finde ich persönlich schöner 😊
                              Und den device query hab ich mit false und true gebaut, wie gesagt, scheint bei mir nötig zu sein.

                              AsgothianA 1 Reply Last reply
                              0
                              • K Ketanest

                                @asgothian Vielen Dank! Habs mir selbst aber auch schon sehr ähnlich zusammengebastelt:
                                2024-03-14 13_46_13-javascript - olc-raspi01 – Mozilla Firefox.png
                                Ich setz die Variable aber beim Beginn des Skriptes auf wahr, weil ich in jedem Fall mitkriegen will, wenn die auf false umspringt, sprich das Rack nicht erreichbar ist. Setz ich sie am Anfang auf false und das Rack ist bei Skriptbeginn nicht erreichbar, krieg ich das nicht mit. Finde ich persönlich schöner 😊
                                Und den device query hab ich mit false und true gebaut, wie gesagt, scheint bei mir nötig zu sein.

                                AsgothianA Offline
                                AsgothianA Offline
                                Asgothian
                                Developer
                                wrote on last edited by
                                #17

                                @ketanest seltsam, aber ok.

                                Nur statt der Pause Geschichte würde ich die folgenden 2 Blöcke nutzen:f97aa9fa-92f2-421f-b23f-2db617c8b168-image.png
                                Und 10 Sekunden Pause sind da auch deutlich unnötig lang.

                                0.5 s reichen auf jeden Fall.

                                ioBroker auf RPi4 - Hardware soweit wie möglich via Zigbee.
                                "Shit don't work" ist keine Fehlermeldung, sondern ein Fluch.

                                1 Reply Last reply
                                0
                                Reply
                                • Reply as topic
                                Log in to reply
                                • Oldest to Newest
                                • Newest to Oldest
                                • Most Votes


                                Support us

                                ioBroker
                                Community Adapters
                                Donate
                                FAQ Cloud / IOT
                                HowTo: Node.js-Update
                                HowTo: Backup/Restore
                                Downloads
                                BLOG

                                280

                                Online

                                32.4k

                                Users

                                81.4k

                                Topics

                                1.3m

                                Posts
                                Community
                                Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                ioBroker Community 2014-2025
                                logo
                                • Login

                                • Don't have an account? Register

                                • Login or register to search.
                                • First post
                                  Last post
                                0
                                • Recent
                                • Tags
                                • Unread 0
                                • Categories
                                • Unreplied
                                • Popular
                                • GitHub
                                • Docu
                                • Hilfe