Tür-/Fenster-Warnung #287

Einrichtung, Anschluss und Programmierung der HomeMatic CCU

Moderator: Co-Administratoren

Belly
Beiträge: 22
Registriert: 24.06.2020, 08:07
System: CCU
Hat sich bedankt: 1 Mal

Tür-/Fenster-Warnung #287

Beitrag von Belly » 11.07.2020, 16:25

Hallo zusammen,

ich bin ja noch recht frisch mit der CCU3 unterwegs und lerne sehr gern anhand von Beispielen. Ich hab jetzt folgendes Script geschrieben, um eine Warnung zu erhalten, wenn die Haustür (überwacht durch einen TFK) mehr als 10 Minuten geöffnet ist.

Das Ganze funktioniert schon so weit, ich hätte aber gern eure Meinung und Verbesserungsvorschläge, wenn ihr welche seht. Bin insbesondere an Fallstricken / unerwünschten Seiteneffekten interessiert, die ich vielleicht übersehen habe ;)

Das Script:

Code: Alles auswählen

object doorState = dom.GetObject("$src$");
integer warningAfter = 10; ! Minutes
integer timeElapsed = currenttime.ToInteger() - doorState.LastTimestamp().ToInteger();
if ((doorState.Value() == 1) && (timeElapsed > warningAfter * 60)) {
  var notify = "Haustür länger als " # warningAfter # " Minuten geöffnet!";
  ! Benachrichtigung auf einem der bekannten Wege
}
Der Auslöser:
Programm.png
Freue mich über euer Feedback!

Ondas[tm]
Beiträge: 712
Registriert: 09.04.2017, 10:16
System: CCU
Wohnort: Nierstein [D]
Hat sich bedankt: 90 Mal
Danksagung erhalten: 68 Mal

Re: Tür-/Fenster-Warnung #287

Beitrag von Ondas[tm] » 14.07.2020, 10:26

Warum ein Script?

Wenn TFK offen, dann setze mit Verzögerung von 10 Minuten Variable Melden auf wahr
Sonst setze sofort Variable Melden auf falsch ([x]Vor dem Ausführen alle laufenden Verzögerungen für diese Aktivitäten beenden (z.B. Retriggern))

Das Ändern der Variable "Melden" triggert dann Dein notify
Aufgrund wiederholter nerviger Werbung und "product placement" würde ich mein Haus eher entsmarten als Mediola/NEO zu kaufen.

MichaelN
Beiträge: 9681
Registriert: 27.04.2020, 10:34
System: CCU
Hat sich bedankt: 700 Mal
Danksagung erhalten: 1626 Mal

Re: Tür-/Fenster-Warnung #287

Beitrag von MichaelN » 14.07.2020, 10:39

Kann man mit Skript machen, geht aber auch ganz ohne, wie schon beschrieben. Anbei noch ein Beispiel (komplexer als nötig, aber ich hab nichts anderes zur Hand):
Unbenannt.jpg
Unbenannt2.JPG
LG, Michael.

Wenn du eine App zur Bedienung brauchst, dann hast du kein Smarthome.

Wettervorhersage über AccuWeather oder OpenWeatherMap+++ Rollladensteuerung 2.0 +++ JSON-API-Ausgaben auswerten +++ undokumentierte Skript-Befehle und Debugging-Tipps +++

nimmnenkeks
Beiträge: 453
Registriert: 30.11.2016, 20:24
Hat sich bedankt: 43 Mal
Danksagung erhalten: 19 Mal

Re: Tür-/Fenster-Warnung #287

Beitrag von nimmnenkeks » 14.07.2020, 12:08

ob es bei den IP-Dingern (im PIC war ein SWDO-I) richtig ist LastTimestamp im Skript bei zu nutzen (um Zeitvergleiche bei Statiwechsel zu nutzen)...???
Die Dinger denden ja zyklisch und da ist es egal, ob der Zustand sich ändert.

LastDPActionTime
oder
LastDPActionTimeSecondes
auf den Kanal
sind da IMHO aussagekräftiger, da dort die Zeit der DP-Änderung festgehalten wird.

Vom Fallobst (mit neuer ungewohnter Brille) unterwegs gesendet

..Keks

Belly
Beiträge: 22
Registriert: 24.06.2020, 08:07
System: CCU
Hat sich bedankt: 1 Mal

Re: Tür-/Fenster-Warnung #287

Beitrag von Belly » 14.07.2020, 12:22

Ondas[tm] hat geschrieben:
14.07.2020, 10:26
Warum ein Script?
[...]
Das Ändern der Variable "Melden" triggert dann Dein notify
Weil ich (noch) versuche, mit so wenig Umgebungsvariablen wie möglich auszukommen. Hätte ich auch dazuschreiben können. Das wird mir sonst insgesamt zu unübersichtlich bei > 20 Fenstern & Türen :)
nimmnenkeks hat geschrieben:
14.07.2020, 12:08
ob es bei den IP-Dingern (im PIC war ein SWDO-I) richtig ist LastTimestamp im Skript bei zu nutzen (um Zeitvergleiche bei Statiwechsel zu nutzen)...???
[...]
LastDPActionTime oder LastDPActionTimeSecondes auf den Kanal sind da IMHO aussagekräftiger, da dort die Zeit der DP-Änderung festgehalten wird.
Das habe ich auch schon gelesen, die Funktionen geben aber zumindest bei meinem HmIP-SWDO-I (richtig gesehen ;)) keine Werte zurück. Oder muss ich das auf einem anderen Kanal ausführen?
Bildschirmfoto 2020-07-14 um 12.20.21.png

nimmnenkeks
Beiträge: 453
Registriert: 30.11.2016, 20:24
Hat sich bedankt: 43 Mal
Danksagung erhalten: 19 Mal

Re: Tür-/Fenster-Warnung #287

Beitrag von nimmnenkeks » 14.07.2020, 12:29

neue Gleitsicht und nen SE2... klasse
Soweit ichs erkenne bist Du auf dem DP (STATE) und nicht NUR auf dem Channel (der liefert LastDPAction...).
Kann mal Screenshots machen, wenn ich wieder ne alte Brille auf habe und am PC bin

.. Keks

Benutzeravatar
Baxxy
Beiträge: 10844
Registriert: 18.12.2018, 15:45
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 609 Mal
Danksagung erhalten: 2229 Mal

Re: Tür-/Fenster-Warnung #287

Beitrag von Baxxy » 14.07.2020, 12:33

Belly hat geschrieben:
14.07.2020, 12:22
Das habe ich auch schon gelesen, die Funktionen geben aber zumindest bei meinem HmIP-SWDO-I (richtig gesehen ) keine Werte zurück. Oder muss ich das auf einem anderen Kanal ausführen?
Falls der Keks sein Okular nicht finden sollte... :wink:

Code: Alles auswählen

object testtfk = dom.GetObject (ID_CHANNELS).Get ("Fensterkontakt SWDO Status:1") .LastDPActionTime().ToString("%H:%M Uhr am %d.%m.%y");
WriteLine("Test-TFK letzte Änderung: "#testtfk);
ergibt:

Code: Alles auswählen

------------------------------- Scriptausgabe -------------------------------
Test-TFK letzte Änderung: 13:12 Uhr am 10.07.20

Belly
Beiträge: 22
Registriert: 24.06.2020, 08:07
System: CCU
Hat sich bedankt: 1 Mal

Re: Tür-/Fenster-Warnung #287

Beitrag von Belly » 14.07.2020, 12:41

Baxxy hat geschrieben:
14.07.2020, 12:33
Falls der Keks sein Okular nicht finden sollte... :wink:
Verrückte Sache, das funktioniert!
Bildschirmfoto 2020-07-14 um 12.40.05.png
Lässt sich das auch mithilfe einer ID oder $src$ abfragen? Die Namen können sich ja jederzeit ändern und enthalten ggf. Sonderzeichen...

Benutzeravatar
Baxxy
Beiträge: 10844
Registriert: 18.12.2018, 15:45
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 609 Mal
Danksagung erhalten: 2229 Mal

Re: Tür-/Fenster-Warnung #287

Beitrag von Baxxy » 14.07.2020, 12:59

Belly hat geschrieben:
14.07.2020, 12:41
Lässt sich das auch mithilfe einer ID oder $src$ abfragen? Die Namen können sich ja jederzeit ändern und enthalten ggf. Sonderzeichen...
Puhh... ich glaube $src$ wird nicht gehen da der STATE Datenpunkt als Auslöser kein LastDPActionTime hat. Vielleicht ließe sich quasi rückwärts anhand von $src$ der LastDPActionTime vom übergeordnetem Kanal auswerten ab da muss ich (erstmal) passen.
Bei mir ändern sich die Namen quasi nie, und Sonderzeichenprobleme hatte ich auch noch nicht. Die ID ändert sich spätestens wenn der Sensor durch einen anderen / neuen ersetzt wird.

Benutzeravatar
Baxxy
Beiträge: 10844
Registriert: 18.12.2018, 15:45
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 609 Mal
Danksagung erhalten: 2229 Mal

Re: Tür-/Fenster-Warnung #287

Beitrag von Baxxy » 14.07.2020, 13:42

Baxxy hat geschrieben:
14.07.2020, 12:59
ich glaube $src$ wird nicht gehen da der STATE Datenpunkt als Auslöser kein LastDPActionTime hat. Vielleicht ließe sich quasi rückwärts anhand von $src$ der LastDPActionTime vom übergeordnetem Kanal auswerten ab da muss ich (erstmal) passen.
Falsch geglaubt und genug gepasst... :wink:

Code: Alles auswählen

object dp = dom.GetObject("$src$");
if (dp) {
WriteLine("Auslöser Datenpunkt: "#(dom.GetObject((dp.Channel()))).Name() #"."# dp.HssType() #" ; "#dp.Value());
WriteLine("Auslöser Kanal LastActionTime: "#(dom.GetObject((dp.Channel()))).LastDPActionTime().ToString("%H:%M Uhr am %d.%m.%y"));
}
Ergebnis:

Code: Alles auswählen

------------------------------- Scriptausgabe -------------------------------
Auslöser Datenpunkt: Fensterkontakt SWDO Status:1.STATE ; 0
Auslöser Kanal LastActionTime: 12:32 Uhr am 14.07.20
Noch eine "kompaktere" Version:

Code: Alles auswählen

object dp = dom.GetObject("$src$");
if (dp) {
WriteLine("Auslöser: "#(dom.GetObject(dom.GetObject(dp)).Channel()).Name() #" ("#dom.GetObject(((dom.GetObject(dp)).Channel())).LastDPActionTime().ToString("%H:%M Uhr am %d.%m.%y") #") mit DP: "#dp.HssType() #" -- Wert: "#dp.Value());
}
Ergebnis:

Code: Alles auswählen

------------------------------- Scriptausgabe -------------------------------
Auslöser: Fensterkontakt SWDO Status:1 (14:09 Uhr am 14.07.20) mit DP: STATE -- Wert: 1
(der Code stammt größtenteils aus Alchy's "Programme loggen" Script)

Antworten

Zurück zu „HomeMatic Zentrale (CCU / CCU2 / CCU3 / Charly)“