Ankündigung

Einklappen
Keine Ankündigung bisher.

Umsetzung Watchdog zur Prüfung, ob ein Item noch aktualisiert wird

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    Umsetzung Watchdog zur Prüfung, ob ein Item noch aktualisiert wird

    Hallo,

    ich würde gern für diverse Items Watchdog erstellen, also eine Prüfung, oder der Inputgeber noch "online" ist. Eine Anwendung bei mir wäre 1wire. Ich habe in meiner 1wire Installation einen Bus-check Sensor eingebaut. Dieser sendet regelmäßig seine ID: Solange er das tut, ist der 1wire Bus online. Dieses ID kommt auf ein Item.
    Der Watchdog soll nun anschlagen, das Item ein gewisses Alter hat bzw. es eine gewisse Zeit nicht mehr aktualisiert wurde.

    Code:
    onewire:
    
        buscheck_1:
            type: bool
            ow_addr: 01.C0C811190000
            ow_sensor: B
    Wie kann man ressourcenschonend eine Watchdog machen?

    Folgendes fällt mir ein:

    1) Eigenes Watchdog Item in der alle 60s das Alter des entsprechenden Items geprüft wir. Ist die Schwelle überschritten, wird das Item 1.
    Code:
    Watchdog:
                    type: bool
                    eval: 1 if (sh.onewire.buscheck_1.age() < 600) else 0
                    cycle: 60
                    enforce_updates: 'true'
    2) Eigenes Watchdog Item, bei dem bei jedem Update des zu beobachtenden Items der Autotimer neu gestartet wird. Ist der Timer abgelaufen, wird das Item 1.


    Welche Möglichkeiten gäbe es noch?
    Was habt ihr im Einsatz?

    Danke für die Rückmeldung.

    #2
    Hi,

    ganz klar autotimer, Deine Variante 1 würde ja alle 60 Sekunden triggern, und das für jeden Sensor...

    Code:
    onewire:
        buscheck_1:
            type: bool
            ow_addr: 01.C0C811190000
            ow_sensor: B
            autotimer: 300 = 0
    Die Zeit sollte so gewählt werden, dass es etwa das doppelte des Sendeintervalls des Sensors ist.

    Gruß, Waldemar
    OpenKNX www.openknx.de

    Kommentar


      #3
      mumpf
      Danke.

      Wie würde das bei folgenden Item aussehen?
      Hier handelt es sich um einen Str-Item, dass von einem SONOFF per MQTT alle 5 min bzw. nach Änderung des Zustandes gesendet wird. Der SONOFF wäre dann offline, wenn 5min kein Update auf dem Item erfolgen würde.

      Code:
      Sonoff:
          S20_1:
              Power_str:
                  type: str
                  mqtt_topic_in: stat/sonoff_s20/POWER
                  cache: 'yes'

      Kommentar


        #4
        Naja, da gibt es 2 Möglichkeiten:
        Entweder Du überlegst Dir ein "magic value", das der Sonos nicht senden kann und das Dir dann anzeigt, dass der Sonos nicht mehr sendet, das kannst Du dann genau so mit autotimer machen:

        Code:
        Sonoff:
            S20_1:
                Power_str:
                    type: str
                    mqtt_topic_in: stat/sonoff_s20/POWER
                    cache: 'yes'
                    autotimer: 600 = $$Sonos sendet nicht mehr$$
        Wenn also im Item der Text "$$Sonos sendet nicht mehr$$" steht, weißt Du das was nicht stimmt. Ich finde diese Lösung einfach, aber nicht schön.

        Besser, man mach ein explizites Item für Gültigkeit:
        Code:
        Sonoff:
            S20_1:
                Power_str:
                    type: str
                    mqtt_topic_in: stat/sonoff_s20/POWER
                    cache: 'yes'
                    enforce_updates: 'yes'
                    Valid:
                        type: bool
                        name: Sonos sendet noch
                        eval: (value != '$$!!%%')
                        eval_trigger: ..
                        autotimer: 600 = $$!!%%
        Hier ist "Valid" so lange true, wie der Sonos sendet, nach 10 Minuten nicht senden wird es false. Wobei ich davon ausgehe, dass der Sonos nicht den Wert $$!!%% senden kann.

        Gruß, Waldemar

        OpenKNX www.openknx.de

        Kommentar

        Lädt...
        X