Hallo zusammen,
ich habe mir nun auch einen Durchgangssensor (HmIP-SPDR) zugelegt. Da ich neben Homematic IP Aktoren auch klassische HomeMatic Aktoren ein- und auschalten möchte, sofern sich jemand im Raum befindet und dies aktuell mit Boardmitteln nicht möglich ist, habe ich das folgende kleine Script hierzu erstellt. Vielleicht hilft das dem einen oder anderen Nutzer weiter.
Um das ganze zu realisieren, sind drei Schritte erforderlich. An den Einstellungen des Durchgangssensors habe ich nichts verändert (Werkseinstellungen)! Zudem arbeitet das ganze unabhängig von der Durchgangsrichtung.
1. Eine Systemvariable mit dem Namen "Durchgang" und Typ Logikwert erstellen (siehe Bild 1).
2. Ein Programm erstellen, welches bei Erkennung der beiden Sensor-Kanäle das Script auslöst. Das Script prüft ob beide Zähler auf 0 stehen und schaltet die Variable auf "keiner-im-Raum" um, stimmen die Zähler nicht überein wir die Variable auf "Raum-besetzt" geschaltet (siehe Bild 2). Sofern Ihr einen anderen Namen für die Systemvariable verwenden möchtet, muss der Name der Variable auch im Script angepasst werden.
3. Ein weiteres Programm erstellen, in welchem durch das Umschalten der Systemvariable die gewünschten Aktoren ein- bzw. ausgeschaltet werden (siehe Bild 3).
Hinweis zum Script:
In den ersten beiden Zeilen des Scripts ist die SGTIN (im Beispiel 000C5709AE6C46) durch die SGTIN von Eurem Durchgangsmelder zu ersetzten. Bitte beachtet, dass nicht die komplette SGTIN, sondern lediglich die letzten 14 Stellen einzutragen sind und ":2" sowie ":3" hinter der SGTIN bestehen bleiben muss.
Tipp: Sofern man die gezählten Werte des Sensors (siehe Status und Bedienung > Geräte) zurücksetzen möchte, ist lediglich einmal die Haube/Batteriedeckel des Geräts abzuheben. Die Werte werden dann wieder auf 0 gesetzt.
Code: Alles auswählen
string melder1 = dom.GetObject("HmIP-RF.000C5709AE6C46:2.PASSAGE_COUNTER_VALUE").Value();
string melder2 = dom.GetObject("HmIP-RF.000C5709AE6C46:3.PASSAGE_COUNTER_VALUE").Value();
if ((melder1) == (melder2))
{
dom.GetObject(ID_SYSTEM_VARIABLES).Get("Durchgang").State(0); ! keiner im Raum / ggf. Variablennamen anpassen
}
else {
dom.GetObject(ID_SYSTEM_VARIABLES).Get("Durchgang").State(1); ! min. eine Person im Raum / ggf. Variablennamen anpassen
}