Moin zusammen,
ich probiere mich grad mit dem MAX! Fensterkontakt.
Dieser soll sobald sich die Wohnungstür öffnet direkt ein Notify schicken.
Das tut er auch, aber viel viel viel zu aktiv.
Also wenn ich die Tür öffne bekomme ich 6-7x "Tür wurde geöffnet"
Ebenso beim schließen.
Witzigerweise bekomme ich ab und an auch ein notify obwohl eigdl. nix passiert ist.
Hier die Konfiguration:
define MAX_06274b MAX ShutterContact 06274b
attr MAX_06274b IODev cm
attr MAX_06274b alias Wohnungstuer
attr MAX_06274b room Homekit
define notifyFensterOffenTelegram notify MAX_06274b.opened set Telegram message Wohnungstuer wurde geoffnet
define notifyFenstergeschlossenTelegram notify MAX_06274b.closed set Telegram message Wohnungstuer wurde geschlossen
Jetzt habe ich im Wiki nochwas gelesen:
Zitat
Der aktuelle Status (offen/geschlossen) wird (praktisch ohne Verzögerung) angezeigt.
Falls wir nicht mit Ack antworten, wird er mehrmals wiederholt.
Die Fensterkontakte können zusätzlich direkt an mehrere Heizkörperthermostate angelernt werden, und versetzen diese dann automatisch in windowOpenTemperature während sie geöffnet sind.
Wenn der Fensterkontakt an mindestens ein Heizkörperthermostat angelernt ist, dann sendet er zusätzlich stündlich seinen aktuellen Zustand.
Jetzt meine Frage:
Wie kann ich ihm die 10 Nachrichten hintereinander abgewöhnen? Hat das was mit dem "Ack" zu tun? Wenn ja, wie antwortet man mit Ack?
Außerdem noch die Frage: So wie im Wiki steht sendet er stündlich seinen aktuellen Zustand wenn er an einem Thermostet angelernt ist. Das macht er tatsächlich, ist aber nicht an einem Thermostat oder ähnlichen angelernt :)
Kann mir da jemand weiterhelfen?
Lieben Gruß und schönes Ostern
Matze
Wie so oft: viele Möglichkeiten... ;)
Zunächst würde ich auf jeden Fall "event-on-change-reading" vernünftig (oder einfach auf .*) setzen.
Dann kommt ein Event nur, wenn sich was geändert hat.
Dann musst du mal den EventMonitor öffnen und schauen was passiert, wenn du ein Fenster öffnest (evtl. Filter auf z.B. MAX_06274b.* setzen, damit du erkennst was zum Fenster gehört).
Wenn mehrfach ein Event kommt, dann ist das schlecht, ob das an ACK etc. liegt/liegen kann weiß ich nicht (habe kein MAX! mehr)...
Wenn nur mehrfach "ähnliche" Events kommen, also beispielsweise:
open
open (to ...)
Dann musst du dein regex für das notify anpassen, allerdings sollte das schon recht "eng gefasst" sein...
Bei Homematic gibt es einen Parameter/Register, wo eingestellt werden kann, wann der nächste Event vom Fenstersensor ausgelöst werden soll (sowas wie: nächster Event erst nach 2s), also ein "Entprellen"...
...vielleicht gibt es sowas beim MAX! auch...
Es ließe sich aus den 2 notify auch eins machen: .(opened|closed)
Dann könntest du eine sub in myUtils aufrufen (statt dem set msg):
{mySendMessage($EVENT)}
in etwa so (ungetestet):
define notifyFensterOffenGeschlossenTelegram notify MAX_06274b.(opened|closed) {mySendMessage($EVENT)}
(evtl. auch statt $EVENT $EVTPART0, $EVTPART1 etc. übergeben, hängt vom Event ab)
und dann in myUtils eben die Funktion:
sub mySendMessage($)
{
($Event) = @_;
# Ausgabe was rein kommt / evtl. muss hier mit $EVTPART0, $EVTPART1 usw. gearbeitet werden, also bereits im notify übergeben
Log(1,"Event: $Event");
if($Event eq "opened")
{
if(ReadingsAge("MAX_06274b", "state", "na") > 10)
{
{fhem "set Telegram message Wohnungstuer wurde geöffnet"}
}
else
{
if(ReadingsAge("MAX_06274b", "state", "na") > 10)
{
{fhem "set Telegram message Wohnungstuer wurde geöffnet"}
}
}
}
Mittels ReadingsAge prüfst du wie lange der letzte Event her ist (bzw. wann das entsprechende Reading zuletzt gesetzt/geändert wurde), vors. dass das Reading "state" heißt wo das opened/closed drin steht (ist bei Homematic so)...
...die Zeit, in dem Fall 10Sekunden musst du halt entsprechend wählen...
Du kannst die if(ReadingsAge) - Abfrage auch in die beiden notify einbauen...
Du kannst auch ein DOIF statt der 2 notify nehmen...
Evtl. geht auch ein "disable-for-intervals" beim notify zu setzen, nachdem es ausgelöst wurde...
...um das notify dann eben eine gewisse Zeit "stumm" zu schalten...
Wie geschrieben es gibt viele Möglicheiten...
...welche hilft/helfen kann bzw. für dich in Frage kommt musst du selbst entscheiden/ausprobieren...
Gruß, Joachim
Vielen Dank mal wieder für die Mühe und Hilfe! Ihr seit echt großartig hier im Forum.
Der ganze Spuk ist tatsächlich nur durch das einfügen von
event-on-change-reading
vorbei!
Danke vielmals :)
Bitte gerne!
Das war ja dann einfach...
Viel Spaß noch, Joachim