Wassermelder HmIP-SWD spammt unveränderten Systemzustand

HMIP lokale Installation

Moderator: Co-Administratoren

ililayda
Beiträge: 12
Registriert: 28.11.2022, 10:11
System: CCU
Hat sich bedankt: 6 Mal
Danksagung erhalten: 2 Mal

Wassermelder HmIP-SWD spammt unveränderten Systemzustand

Beitrag von ililayda » 28.11.2022, 10:32

Guten Tag,

in Unternehmen haben wir seit geraumer Zeit HomeMatic Geräte. Vor kurzem sind wir von der CCU2 zur CCU3 umgestiegen und eines unserer Wassermelder mit einem IP Wassermelder ersetzt, da dessen Batterie ausgelaufen ist.

Die Wassermelder funktionieren wie gewohnt, jedoch haben wir seit Beginn an das Problem, das der IP Wassermelder seinen unveränderten Zustand uns fast jede Stunde mitteilt. Ich habe mich viel in dem Forum umgeschaut und viele Antworten zu aufgekommenen Problemen gefunden, jedoch bin ich hierbei ratlos. Oft habe ich die Einstellungen gewechselt, das Skript umgeschrieben oder die Bedingungen geändert, kam jedoch nie dazu, den Wassermelder für mehr als einen Tag "stumm" zu halten.
Die normalen Wassermelder haben einen ähnlichen Code Aufbau und Abfrage. Diesen kann ich gerne bei Bedarf auch hinzufügen.

Veränderungen teilt es ohne Probleme mit, was mich nervt ist das spammen der unveränderten Statusmeldungen, welches bei keinem anderen Gerät vorkommt.

Die Einstellungen etc.:

Einstellungen:
Einstellungen.PNG
Telegram chat:
Telegram.PNG
Bedingungen:
Bedingung.PNG
Skript:
Skript.PNG
Code:

Code: Alles auswählen

boolean alarm = dom.GetObject("HmIP-RF.XXX:1.ALARMSTATE").Value();
boolean stateMoisture = dom.GetObject("HmIP-RF.XXX:1.MOISTURE_DETECTED").Value();
string stateWater = dom.GetObject("HmIP-RF.XXX:1.WATERLEVEL_DETECTED").Value();
string messageAdd;

if (alarm == true) {
    if ((stateWater == true && stateMoisture == true)) {
        messageAdd = "Wasserstand & Feuchtigkeit";
    } else {
        if (stateWater == true) {
             messageAdd = "Wasserstand ";
        } else {
             if (stateMoisture == true) {
                 messageAdd = "Feuchtigkeit ";
             }
        } 
    } 
} else {
    messageAdd = "Trockenheit";
}


! ###CUSTOMISATION#############################################
string token = "";
string receiver = "";

string message = "Wassermelder im Heizungsraum des Fachwerkhauses meldet: " # messageAdd;
! #############################################################

string stdout;
string stderr;
string url =
     "\"https://api.telegram.org/bot" # token # "/sendMessage" #
     "?chat_id=" # receiver #
     "&text=" # message #
     "\"";
system.Exec("wget --no-check-certificate -q -O - " #url, & stdout, & stderr);

Vielleicht findet jemand anderes ein Problem, ich saß wirklich Stunden da und Analysierte und Testete ohne Erfolg.

Ich danke im Voraus.

edit: auf Seite 2 und 3 habe ich Zwischenergebnisse verfasst.


Liebe Grüße
Zuletzt geändert von ililayda am 08.12.2022, 14:49, insgesamt 5-mal geändert.

frd030
Beiträge: 3575
Registriert: 14.07.2019, 20:49
System: CCU
Hat sich bedankt: 831 Mal
Danksagung erhalten: 532 Mal

Re: Wassermelder HmIP-SWD spammt unveränderten Systemzustand

Beitrag von frd030 » 28.11.2022, 12:30

Alle HmIP Geräte (ausser die Rauchmelder) melden sich normalerweise regelmäßig mit Ihrem Status an der Zentrale.
Manche tun das alle paar Minuten, manche erst nach einer Stunde.

Deine Bilder (Screenshots) werden nicht angezeigt. Anyway...
Mein Wahrsager sagt, dass Du das Programm zum Versenden der Telegrammnachrichten "auf Aktualisierung" triggerst?! Triggere Programme, die Meldungen versenden, einfach "auf Änderung", dann kriegst Du auch keine Telegramme, wenn sich nichts ändert!

Die CCU möchte nur einfach ab und an mal was von ihren Geräten "hören", sonst nimmt sie irgendwann an, dass Gerät ist gestört (dann gips eine Systemmeldung "Gerätekommunikation gestört", die willst Du vermutlich auch nicht!

Xel66
Beiträge: 14085
Registriert: 08.05.2013, 23:33
System: Alternative CCU (auf Basis OCCU)
Wohnort: Nordwürttemberg
Hat sich bedankt: 580 Mal
Danksagung erhalten: 1492 Mal

Re: Wassermelder HmIP-SWD spammt unveränderten Systemzustand

Beitrag von Xel66 » 28.11.2022, 12:42

ililayda hat geschrieben:
28.11.2022, 10:32
Die Wassermelder funktionieren wie gewohnt, jedoch haben wir seit Beginn an das Problem, das der IP Wassermelder seinen unveränderten Zustand uns fast jede Stunde mitteilt.
Sowas ist durchaus nützlich und nennt sich "zyklische Statusmeldung". Gerade bei batteriebetriebenen Geräten ist dieses "Feature" meines Erachtens unverzichtbar, da man sonst auch keine Batteriewarnungen oder eine Kommunikationsüberwachtung (Reichweite) erhalten würde. Ich persönlich erachte auch die Abschaltmöglichkeit für eine der schlechtesten Ideen des Herstellers, da sich viele Anwender genau damit ins Knie schießen, weil sie einfach nicht nachvollziehen können, was sie dort tun.

Wenn irgendwelche Programme ausgeführt werden, dann ist Deine Programmierung ungeeignet. Auf unveränderte Status sollte das System nicht reagieren. Allerdings hat die ReGa so ein paar Eigenheiten, die beim Programmieren beachten werden müssen, um keine unerwünschten Programmausführungen zu triggern.

Gruß Xel66
-------------------------------------------------------------------------------------------
524 Kanäle in 146 Geräten und 267 CUxD-Kanäle in 34 CUxD-Geräten:
343 Programme, 334 Systemvariablen und 183 Direktverknüpfungen,
RaspberryMatic Version: 3.65.11.20221005 + Testsystem: CCU2 2.61.7
-------------------------------------------------------------------------------------------
Einsteigerthread, Programmlogik-Thread, WebUI-Handbuch

ililayda
Beiträge: 12
Registriert: 28.11.2022, 10:11
System: CCU
Hat sich bedankt: 6 Mal
Danksagung erhalten: 2 Mal

Re: Wassermelder HmIP-SWD spammt unveränderten Systemzustand

Beitrag von ililayda » 28.11.2022, 13:47

frd030 hat geschrieben:
28.11.2022, 12:30
Alle HmIP Geräte (ausser die Rauchmelder) melden sich normalerweise regelmäßig mit Ihrem Status an der Zentrale.
Manche tun das alle paar Minuten, manche erst nach einer Stunde.

Deine Bilder (Screenshots) werden nicht angezeigt. Anyway...
Mein Wahrsager sagt, dass Du das Programm zum Versenden der Telegrammnachrichten "auf Aktualisierung" triggerst?! Triggere Programme, die Meldungen versenden, einfach "auf Änderung", dann kriegst Du auch keine Telegramme, wenn sich nichts ändert!

Die CCU möchte nur einfach ab und an mal was von ihren Geräten "hören", sonst nimmt sie irgendwann an, dass Gerät ist gestört (dann gips eine Systemmeldung "Gerätekommunikation gestört", die willst Du vermutlich auch nicht!
1.) wir haben nichts dagegen wenn die sich melden, nur wollten wir eben nicht, dass sich der Melder über Telegram meldet falls der Status unverändert ist.

2.) Die Screenshots sollten jetzt wieder gehen! Die alten Melder sind auch auf Aktualisierung und da kappts wie gewollt. Ich denke ich hatte die Bedingungen auch auf "bei Änderung", bin mir aber nicht mehr sicher. Würde das dann bis Morgen ausprobieren!

3.) ... nun verstehe ich auch die Fehlermeldung :lol:.
Die Wassermelder die hinter verschlossenen Türen warten, melden dies seit langem. Aber da wir Monatlich testen und auch viel getestet haben, haben wir die Meldung nach erneutem testen ignoriert.
Die Wassermelder stehen in Server- und Heizungsräumen, weshalb es wichtig ist, dass nur bei Änderung gemeldet wird, da diese uns keine unnötige Panik geben sollen. Die zyklische Meldung hatte ich aus gestellt, da es unsere Melder in der CCU2 auch nicht gemacht hatten.

Ich kann ja bei uns nachfragen, ob die zyklische Meldung an gemacht werden sollte/ ob es okay ist.


Liebe Grüße!
Zuletzt geändert von ililayda am 28.11.2022, 13:54, insgesamt 1-mal geändert.
Danke und Liebe Grüße

ililayda
Beiträge: 12
Registriert: 28.11.2022, 10:11
System: CCU
Hat sich bedankt: 6 Mal
Danksagung erhalten: 2 Mal

Re: Wassermelder HmIP-SWD spammt unveränderten Systemzustand

Beitrag von ililayda » 28.11.2022, 13:54

Xel66 hat geschrieben:
28.11.2022, 12:42
ililayda hat geschrieben:
28.11.2022, 10:32
Die Wassermelder funktionieren wie gewohnt, jedoch haben wir seit Beginn an das Problem, das der IP Wassermelder seinen unveränderten Zustand uns fast jede Stunde mitteilt.
Sowas ist durchaus nützlich und nennt sich "zyklische Statusmeldung". Gerade bei batteriebetriebenen Geräten ist dieses "Feature" meines Erachtens unverzichtbar, da man sonst auch keine Batteriewarnungen oder eine Kommunikationsüberwachtung (Reichweite) erhalten würde. Ich persönlich erachte auch die Abschaltmöglichkeit für eine der schlechtesten Ideen des Herstellers, da sich viele Anwender genau damit ins Knie schießen, weil sie einfach nicht nachvollziehen können, was sie dort tun.

Wenn irgendwelche Programme ausgeführt werden, dann ist Deine Programmierung ungeeignet. Auf unveränderte Status sollte das System nicht reagieren. Allerdings hat die ReGa so ein paar Eigenheiten, die beim Programmieren beachten werden müssen, um keine unerwünschten Programmausführungen zu triggern.

Gruß Xel66
Wir haben ein extra Skript, das Täglich nach den Batterien der Geräte prüft und uns mitteilt, falls diese niedrig sind. Außerdem Testen wir unsere Geräte und bekommen auch schon mit, falls etwas nicht ganz rund läuft.

Bei der IP war das Problem, dass die sich zu oft meldet. Wir mussten die Telegram Gruppe muten, was den Sinn der Gruppe zerstört. Die Wassermelder sind in Server- und Heizungsräumen, weshalb es umso wichtiger ist, dass wir uns auf kurze und präzise Meldungen verlassen müssen.


Falls weitere Infos benötigt werden, kann ich diese gerne teilen!

Liebe Grüße
Danke und Liebe Grüße

Xel66
Beiträge: 14085
Registriert: 08.05.2013, 23:33
System: Alternative CCU (auf Basis OCCU)
Wohnort: Nordwürttemberg
Hat sich bedankt: 580 Mal
Danksagung erhalten: 1492 Mal

Re: Wassermelder HmIP-SWD spammt unveränderten Systemzustand

Beitrag von Xel66 » 28.11.2022, 14:05

ililayda hat geschrieben:
28.11.2022, 13:54
Wir haben ein extra Skript, das Täglich nach den Batterien der Geräte prüft und uns mitteilt, falls diese niedrig sind.
Nein, dieses Script fragt die auf der CCU gespeicherten Status ab und würde melden, falls ein LOW_BAT ansteht. Meldet das Gerät dieses nicht an die CCU kann das Script auch nichts melden. Du siehst das Problem?

Und wenn Dein Script für die Telegramm-Meldung getriggert wird, dann ist an dem Programm was faul. In Deinem Fall ist es die Prüfung komplementärer Status in einem Programm. Eine der Bedingungen ist immer WAHR und da die Bedingungsprüfung bei jeder Statusübermittlung angestoßen wird, und immer auf einen WAHRe Bedingung trifft, wird das Script ausgeführt. Eigentlich ganz logisch.

Gruß Xel66
-------------------------------------------------------------------------------------------
524 Kanäle in 146 Geräten und 267 CUxD-Kanäle in 34 CUxD-Geräten:
343 Programme, 334 Systemvariablen und 183 Direktverknüpfungen,
RaspberryMatic Version: 3.65.11.20221005 + Testsystem: CCU2 2.61.7
-------------------------------------------------------------------------------------------
Einsteigerthread, Programmlogik-Thread, WebUI-Handbuch

ililayda
Beiträge: 12
Registriert: 28.11.2022, 10:11
System: CCU
Hat sich bedankt: 6 Mal
Danksagung erhalten: 2 Mal

Re: Wassermelder HmIP-SWD spammt unveränderten Systemzustand

Beitrag von ililayda » 28.11.2022, 14:30

Xel66 hat geschrieben:
28.11.2022, 14:05
Nein, dieses Script fragt die auf der CCU gespeicherten Status ab und würde melden, falls ein LOW_BAT ansteht. Meldet das Gerät dieses nicht an die CCU kann das Script auch nichts melden. Du siehst das Problem?
Hmm... aber es scheint wie gewohnt zu funktionieren. Fragt die CCU denn nicht das Gerät selbst, wenn man das "überprüf Batterie" Skript starten würde? Darüber habe ich außerdem noch nichts zu gelesen, gibt es einen Beitrag der das genauer erklärt?
Xel66 hat geschrieben:
28.11.2022, 14:05
Und wenn Dein Script für die Telegramm-Meldung getriggert wird, dann ist an dem Programm was faul. In Deinem Fall ist es die Prüfung komplementärer Status in einem Programm. Eine der Bedingungen ist immer WAHR und da die Bedingungsprüfung bei jeder Statusübermittlung angestoßen wird, und immer auf einen WAHRe Bedingung trifft, wird das Script ausgeführt. Eigentlich ganz logisch.
Wie gesagt; die alten Wassermelder haben damit kein Problem gehabt. Ich habe auch viele Abfragen geprüft und getestet, kam aber nie zur gewünschten Lösung.
Heißt das, ich müsste die einzelnen Bedingungen in eigene Programme umwandeln, damit diese nicht immer "Wahr" sind?


Hier Bedingung und Skript der alten Wassermelder:
BedingungAlt.PNG

Code: Alles auswählen

var state = dom.GetObject("BidCos-RF.XXX:1.STATE").Value(); 

string stateName;
if (state == "0") {
    stateName = "Trockenheit";
} else {
    if (state == "1") {
        stateName = "Feuchtigkeit";
    } else {
        if (state == "2") {
            stateName = "Wasserstand";
        }
    }
    if (stateName == "") {
        stateName = "Trockenheit";
    }
}

! ###CUSTOMISATION#############################################
string token = "";
string receiver = "";

string message = "Wassermelder im Weinkeller des Fachwerkhauses meldet: " # stateName;
! #############################################################

string stdout;
string stderr;
string url =
     "\"https://api.telegram.org/bot" # token # "/sendMessage" #
     "?chat_id=" # receiver #
     "&text=" # message #
     "\"";
system.Exec("wget --no-check-certificate -q -O - " #url, & stdout, & stderr);
Danke und Liebe Grüße

frd030
Beiträge: 3575
Registriert: 14.07.2019, 20:49
System: CCU
Hat sich bedankt: 831 Mal
Danksagung erhalten: 532 Mal

Re: Wassermelder HmIP-SWD spammt unveränderten Systemzustand

Beitrag von frd030 » 28.11.2022, 15:19

ililayda hat geschrieben:
28.11.2022, 10:32
Bedingungen:
Bedingung.PNG
Dieses Programm ist kein Gesamtkunstwerk, sondern ein Gesamtunfall!
Es wird mit jeder Statusmeldung aller Sensoren ausgelöst (Trigger "auf Aktualisierung"). Die Triggerung auf gegensätzliche Zustände mit mal "auf Aktualisierung" und mal "nur prüfen" ist zudem in der Form problematisch und kann zusätzlich zu unerwarteten Ergebnissen führen.

Auflösen in zwei Programme würde ich definitiv machen, das alte löschen (Skript vorher sichern) :!:

Programm 1
das Programm meldet sich, wenn mindestens einer der Melder auf Wasser oder Feuchtigkeit stösst. Das Programm erzeugt jeweils eine Meldung für jeden Melder, der von "trocken" nach "feucht / nass" geht.

Code: Alles auswählen

WENN
Melder 1 meldet Feuchtigkeit / Wasserstand = ja (auf Änderung)
ODER Melder 2 meldet Feuchtigkeit / Wasserstand = ja (auf Änderung)
ODER Melder 3 meldet Feuchtigkeit / Wasserstand = ja (auf Änderung)
DANN Skript ausführen
Programm 2
das Programm meldet sich, wenn der letzte der Melder wieder Trockenheit meldet.

Code: Alles auswählen

WENN
Melder 1 meldet Feuchtigkeit / Wasserstand = nein (auf Änderung)
UND Melder 2 meldet Feuchtigkeit / Wasserstand = nein (auf Änderung)
UND Melder 3 meldet Feuchtigkeit / Wasserstand = nein (auf Änderung)
DANN Skript ausführen
Das Skript kann für beide Programme das gleiche sein, könnte aber auch jeweils vereinfacht werden.
Statusmeldungen ohne Änderung führen nicht zur Triggerung! Alles viel einfacher, besser wartbar und die Ergebnisse sind die Erwarteten.
Hinweis: über $src$ könntest Du sogar herausfinden, welcher Melder getriggert hat.

Damit vermeidest Du gegensätzliche Trigger und unerwünschte Nachrichten.

PS: die Seriennummern auszuixxen ist vollkommen sinnfrei! Niemand kann mit denen irgendwas anfangen. Besser wäre es sowieso Geräten sinnvolle Namen zu geben, bspw. "Wassermelder Raum EG.27:x" das ":x" kennzeichnet die verschiedenen Kanäle :0, :1, :2...
Aber so sieht man eben nicht, wieviele Melder es wirklich sind, drei ist eine Vermutung.
Zuletzt geändert von frd030 am 28.11.2022, 15:42, insgesamt 1-mal geändert.

frd030
Beiträge: 3575
Registriert: 14.07.2019, 20:49
System: CCU
Hat sich bedankt: 831 Mal
Danksagung erhalten: 532 Mal

Re: Wassermelder HmIP-SWD spammt unveränderten Systemzustand

Beitrag von frd030 » 28.11.2022, 15:34

ililayda hat geschrieben:
28.11.2022, 14:30
Hmm... aber es scheint wie gewohnt zu funktionieren. Fragt die CCU denn nicht das Gerät selbst, wenn man das "überprüf Batterie" Skript starten würde? Darüber habe ich außerdem noch nichts zu gelesen, gibt es einen Beitrag der das genauer erklärt?
Betonung liegt auf "scheint" - noch dürften ja auch keine Batterien leer sein.

Dein Denkfehler ist, dass Du annimmst die CCU fragt das Gerät direkt ab, nur weil Du im Skript nach der Batterie fragst! Tut sie aber nicht!

Die CCU hat ein internes Datenabbild des Geräts, das in Deinem Skript abgefragt wird.
Dieses Datenabbild wird mit der (zyklischen) Statusmeldung des Geräts "befüllt" - oder eben auch nicht, wenn man die Meldungen abschaltet.

Daher ist das Abschalten leider wenig sinnvoll, da man dann eben nicht mehr weiss, wie es dem Gerät geht, wenn es nicht gerade Wasser meldet - dann würde der Status wieder gesendet, tja, aber nur, wenn die Batterie gerade nicht leer ist. :wink:

Und: Bitte nicht von HM-Geräten und deren Verhalten auf HmIP-Geräte schließen. Die Welt hat sich bei eQ-3 weitergedreht und die Gerätefamilien verhalten sich teilweise sehr anders!

ililayda
Beiträge: 12
Registriert: 28.11.2022, 10:11
System: CCU
Hat sich bedankt: 6 Mal
Danksagung erhalten: 2 Mal

Re: Wassermelder HmIP-SWD spammt unveränderten Systemzustand

Beitrag von ililayda » 28.11.2022, 15:53

frd030 hat geschrieben:
28.11.2022, 15:19

Dieses Programm ist kein Gesamtkunstwerk, sondern ein Gesamtunfall!
Es wird mit jeder Statusmeldung aller Sensoren ausgelöst (Trigger "auf Aktualisierung"). Die Triggerung auf gegensätzliche Zustände mit mal "auf Aktualisierung" und mal "nur prüfen" ist zudem in der Form problematisch und kann zusätzlich zu unerwarteten Ergebnissen führen.
Gut zu wissen. Ich dachte das "nur prüfen" wäre dazu da, um nicht auszulösen sondern nur die Bedingung zu überprüfen um danach dann bei "Aktualisierung auslösen" dementsprechend auszulösen.

frd030 hat geschrieben:
28.11.2022, 15:19
Auflösen in zwei Programme würde ich definitiv machen:

Programm 1
das Programm meldet sich, wenn mindestens einer der Melder auf Wasser oder Feuchtigkeit stösst. Das Programm erzeugt jeweils eine Meldung für jeden Melder, der von "trocken" nach "feucht / nass" geht.

Code: Alles auswählen

WENN
Melder 1 meldet Feuchtigkeit / Wasserstand = ja (auf Änderung)
ODER Melder 2 meldet Feuchtigkeit / Wasserstand = ja (auf Änderung)
ODER Melder 3 meldet Feuchtigkeit / Wasserstand = ja (auf Änderung)
DANN Skript ausführen
Programm 2
das Programm meldet sich, wenn der letzte der Melder wieder Trockenheit meldet. HINWEIS: wenn Du Trockenmeldungen für jeden einzelnen Melder haben willst (falls mehrere auslösen), dann ODER statt UND nehmen!

Code: Alles auswählen

WENN
Melder 1 meldet Feuchtigkeit / Wasserstand = nein (auf Änderung)
UND Melder 2 meldet Feuchtigkeit / Wasserstand = nein (auf Änderung)
UND Melder 3 meldet Feuchtigkeit / Wasserstand = nein (auf Änderung)
DANN Skript ausführen
Das Skript kann für beide Programme das gleiche sein, könnte aber auch jeweils vereinfacht werden.
Statusmeldungen ohne Änderung führen nicht zur Triggerung! Alles viel einfacher, besser wartbar und die Ergebnisse sind die Erwarteten.
Hinweis: über $src$ könntest Du sogar herausfinden, welcher Melder getriggert hat.

Damit vermeidest Du gegensätzliche Trigger und unerwünschte Nachrichten.
Wir benötigen eine Meldung bei Feuchtigkeit, eine bei Wasserstand und Trockenheit. Was dieses Programm uns nicht gibt ist die Meldung falls es von Wasserstand zu Feuchtigkeit und umgekehrt geht. Es ist wichtig genau zu wissen ob und wann es welchen Status hat/ gewechselt hat (falls es wechselt). Deshalb hatte ich auch die Abfrage die explizit schaut ob es nur Feuchtigkeit und ob es Wasserstand ist (da es bei Wasserstand egal ist ob Feuchtigkeit & Wasserstand zusammen gemeldet werden und bei Feuchtigkeit es wichtig ist, das nur Feuchtigkeit gemeldet wird), damit Wasserstand eben sofort gemeldet wird und damit Feuchtigkeit nicht in die Quere kommt (was in Tests passiert ist).
Ich denke das Erklärt soweit die komischen Bedingungen.
frd030 hat geschrieben:
28.11.2022, 15:19
PS: die Seriennummern auszuixxen ist vollkommen sinnfrei! Niemand kann mit denen irgendwas anfangen.
Aber so sieht man eben nicht, wieviele Melder es wirklich sind, drei ist eine Vermutung.
Das wusste ich nicht, weshalb ich lieber eine Nummer sicher gegangen bin.
Wir nutzen immer ein Programm für einen Melder. Ist übersichtlicher und die Melder/ Programme können einzeln getestet werden. Der IP Melder ist jedoch das einzige stück.
Danke und Liebe Grüße

Antworten

Zurück zu „HomeMatic IP mit CCU“