Watchdog zur Überwachung, ob KNX-Telegrammen (PL) am Aktor angekommen sind?

Begonnen von NoMercy, 14 August 2018, 09:50:29

Vorheriges Thema - Nächstes Thema

NoMercy

Hallo Zusammen,

ich habe ein Problem mit dem Einrichten eines Watchdog. Vielleicht kann mir jemand auf die Sprünge helfen...

Zur Zeit betreibe ich eine relativ große KNX-Powerline-Installation, bei der leider immer mal wieder einzelne Telegramme offensichtlich bei den Aktoren nicht ankommen (z.B. wenn gerade die Kaffeemaschine läuft, etc.). Ist leider ein Problem bei Powerline, welches ich noch nicht gelöst bekommen habe, aber das ist ein anderes Thema.

Folgendes Problem:
- Ein Raumtemperaturregler (RTR) schaltet einen Heizungsaktor, welcher wiederum ein Ventilantrieb ansteuert
- Der Heizungsaktor hat leider keinen Ausgang für eine Status-GA
- Die zugehörige Gruppenadresse für das Schalten des Heizungsaktors ist über die ETS so angelegt, daß der Aktor auf Lesetelegramme reagiert, und nicht der RTR
- Manchmal kommt das "Schalten"-Telegramm am Heizungsaktor nicht an

Was ich erreichen möchte:
- Wenn ein Schaltbefehl (On/Off) vom RTR an den Heizungsaktor über die entsprechende GA gesendet wird, soll eine Art "Watchdog" angestoßen werden, welcher nach z.B. 5 Sekunden prüft, ob der "Set"-Befehl mit dem entsprechenden "Get"-Befehl (Rückmeldung des Aktors) übereinstimmt.
- Wenn "Set" und "Get" unterschiedlich sind, soll erneut ein "Set" mit dem letzten Wert von "Set" ausgelöst werden

Wenn ich das richtig verstanden habe, sollte ein "Watchdog" dies können... Allerdings hapert es bei mir mit dem Verständnis für die Umsetzung der verschiedenen RegExp für den Watchdog...

Hat da jemand eine Idee?

Ein Beispiel für das o.g. KNX-Device, welches die GA für das Schalten des Heizungsaktors definiert, sieht bei mir so aus:
# KNX-Device fuer den Heizstatus An/Aus
define EG_GaesteWC_Schalter_RTR_Heizstatus KNX 0/1/21:dpt1.001
attr EG_GaesteWC_Schalter_RTR_Heizstatus DbLogExclude .*
attr EG_GaesteWC_Schalter_RTR_Heizstatus DbLogInclude state
attr EG_GaesteWC_Schalter_RTR_Heizstatus IODev KNX
attr EG_GaesteWC_Schalter_RTR_Heizstatus alias Heizstatus An/Aus (KNX)
attr EG_GaesteWC_Schalter_RTR_Heizstatus devStateIcon on:Heizung_Hauptschalter.on: off:Heizung_Hauptschalter.off:
attr EG_GaesteWC_Schalter_RTR_Heizstatus event-on-change-reading state
attr EG_GaesteWC_Schalter_RTR_Heizstatus group Heizung
attr EG_GaesteWC_Schalter_RTR_Heizstatus room GaesteWC,KNX
attr EG_GaesteWC_Schalter_RTR_Heizstatus webCmd :


Hat jemand eine Idee, wie ich so etwas lösen kann?

Danke und Gruß,
Michael

Andi291

Servus!

Wer antwortet, wenn Du in der ETS mal ein "Lesen" ausführst?

Ich vermute - sowohl AKtor als auch Sensor...

NoMercy


EIB-Fan

Hallo Michael,

ich denke, dass du das mit einem DOIF gut lösen kannst.

In etwa so:


define di.check DOIF ([RTR:schalten-set] ne [?Aktor:state]) (set Aktor [RTR:schalten-set]) DOELSEIF [Aktor:state] eq [?RTR:schalten-set] ()
attr di.check do always
attr di.check repeatcmd 5


Du müsstest halt die Device und Readings entsprechend anpassen. Mit repeatcmd stellst du die Zeit ein nach der erneut geprüft wird.

Viel Erfolg!
Gruß Jens


Andi291

...oder so:

1. RTR schickt an Aktor
2. FHEM hört auf die GAD (notify), frägt in einem if nach last-sender, und spannt einen Timer wenn der Sender RTR war
3. Nach Ablauf der Zeit schickt fhem eine Leseanfrage raus
4. FHEM hört auf die GAD (notify), frägt in einem if nach last-sender, killt den Timer wenn last Sender Aktor war und der Wert gleich dem letzten Ergebnis

NoMercy

Danke an Euch für die Antworten. Ich werde jetzt mal beide Varianten ausprobieren.

Gruß