Temporär inaktive Module: Rücksetzen der Meldungen von UNREACH und STICKY_UNREACH

Problemlösungen und Hinweise von allgemeinem Interesse zur Haussteuerung mit HomeMatic

Moderator: Co-Administratoren

Antworten
PeterAC
Beiträge: 69
Registriert: 19.12.2014, 14:07
Hat sich bedankt: 3 Mal
Danksagung erhalten: 6 Mal

Temporär inaktive Module: Rücksetzen der Meldungen von UNREACH und STICKY_UNREACH

Beitrag von PeterAC » 13.03.2022, 18:28

Hallo zusammen,

das altbekannte Problem der Kommunikationsfehlermeldungen temporär deaktvierter Module, z. B. wegen einer saisonale Trennung vom Stromnetz, hatte m. W. bisher noch keine befriedigende Lösung, da insbesondere der Status "UNREACH" spezifikationsgemäß nur durch eine erfolgreiche Kommunikation mit dem fraglichen Modul zurückgesetzt wird. Bis dahin blinkt die Info-LED, wodurch leider andere, wichtigere Servicemeldungen nicht mehr auffallen.
An dieser Stelle https://www.christian-luetgens.de/homem ... dungen.htm gibt es einen Vorschlag für ein automatisches Löschen der Servicemeldung "Gerätekommunikation war gestört" (entspricht dem Flag "STICKY_UNREACH") und einer periodischen Status-Abfrage des betroffenen Moduls, wodurch auch das Flag "UNREACH" zurückgesetzt würde, wenn die Kommunikation wiederhergestellt ist. Das löst zwar befriedigend die Behandlung kurzfristiger Störungen, nicht aber deaktivierter Geräte, insbesondere bei saisonalen Pausen.
Versuche, die zugehörigen Datenpunkte (bzw. deren Abbild in der CCU) zurückzusetzen gelingen weder mit HM-Skript noch über die XML-Api, wie Versuche zeigen, was allerdings nicht erstaunt, da diese Datenpunkte als "RE" definiert sind, also nicht beschreib- oder setzbar.

Mit HM-Skript lassen sich zwar beide Fehlermeldung löschen, die LED blinkt jedoch weiterhin. Mit CCU-Jack von Martin Dzionsko gelingt es, auch die LED zum Verlöschen zu bringen, allerdings ist es als eine out-of-spec-Methode zu verstehen, was bedeutet, dass es in Zukunft möglicherweise auch nicht mehr funktioniert. Da CCU-Jack außer dem MQTT-Server auch eine REST-API anbietet, kann das nötige Kommandos auch über http, z.B. mit curl übermittelt werden. Das folgende Programm und Skript leisten nun das gewünschte. Eine Liste von Device-Adressen beschränkt die Funktion auf bestimmte Geräte und lässt die Meldungen zur gestörten Gerätekommunikation bei allen übrigen unbeeinflusst.
Screenshot 2022-03-13 182106.png
Das zugehörige Skript ist wie folgt:

Code: Alles auswählen

!- 2022-03-13 _mDisableUnreach Elimination von Fehlermeldungen inaktiver Geräte
!- Benötigt CCU-Jack von Mathias Dzionsko (https://github.com/mdzio/ccu-jack)

!- Liste der Geräteaddressen, können z.B.mit "," getrennt werden, eine Systemvariable wäre auch möglich.

string addresses =	"ABC#######";

string lGetErr;                				!- Nimmt Fehler-Meldungen von system.Exec() entgegen
string lGetOut;						!- Nimmt Ausgabe von system.Exec() entgegen

string itemID;						!- Variable für Iteration über alle Geräte
string address;						!- Variable für Adresse des aktuellen Geräts
object aldp_obj;					!- Objektvariable für Alarm-Datenpunkte UNREACH und STICKY_UNREACH

!- Iteration über alle Geräte
foreach(itemID, dom.GetObject(ID_DEVICES).EnumUsedIDs()) {
	address = dom.GetObject(itemID).Address();

!- Nur Geräte aus der obigen Adressenliste werden behandelt
	if (addresses.Contains(address)) {

        aldp_obj = dom.GetObject("AL-" # address # ":0.UNREACH");
        !- Falls UNREACH gesetzt ist:
        if (aldp_obj) {
			if (aldp_obj.Value()) {
                		!- Über die REST-Api von CCU-Jack läst sich über UNREACH die blinkende LED tatsächlich (!) zurücksetzen
				system.Exec("curl -X PUT -d \'{\"v\":false}\' http://192.168.2.223:2121/device/" + address + "/0/UNREACH/~pv", &lGetOut, &lGetErr);
				aldp_obj.State(false); !- Löscht die Servicemeldung "Gerätekommunikation gestört"
			}
		}

        aldp_obj = dom.GetObject("AL-" # address # ":0.STICKY_UNREACH");
        !- Falls STICKY_UNREACH gesetzt ist:
		if (aldp_obj) {
			if (aldp_obj.Value()) {
				aldp_obj.State(false);  !- Löscht die Servicemeldung "Gerätekommunikation war gestört"
			}
		}
   }
}
Tatsächlich bleiben die zughörigen Geräte-Datenpunkte dennoch unverändert (lt. HQ Webui), die Servicemeldungen allerdings werden zurückgesetzt und die LED verlischt. Das Konzept habe ich jetzt eine Woche in Betrieb und scheint gut zu funktionieren. Wie oben erwähnt ist es aber eine out-of-spec-Lösung, d.h. es ist möglich, dass diese bei künftigen Versionen von CCU-Jack (CCU2 2.61.7/CCU-jack 1.1.1) nicht mehr funktioniert.

VG,
Peter

Antworten

Zurück zu „HomeMatic Tipps & Tricks - keine Fragen!“