Meine Idee war nun, eine Bewegung des Haltehebels zu detektieren, und da ich noch einen ungenutzten Funk-Tür-/Fensterkontakt, HM-Sec-SC, in der Schublade rumliegen hatte, funktionierte ich diesen kurzerhand in einen Vibrationsmelder um. Das ist ja nichts neues und wurde hier im Forum schon mehrfach praktiziert.
EDIT: Leider hat sich diese Lösung als nicht praktikabel herausgestellt, weil sich der HM-Sec-SC nicht an den sehr empfindlichen Vibrationssensor anpassen ließ und es folglich viel zu häufig zu Fehlmeldungen kam. Zwar ließen sich diese Fehlmeldungen per Skript recht gut unterdrücken (siehe das nachfolgende Posting), doch ging das Ganze zu sehr zu Lasten der Batterien. Daher entschloss ich mich, statt des umgelöteten HM-Sec-SC, auf einen HmIP-SAM umzusteigen (danke an @mule für den guten Tipp). Hier nun die aktuelle Lösung, die dank der flexiblen Konfigurationsmöglichkeiten des HmIP-SAM sehr gut funktioniert.
Zwar ist der HmIP-SAM im Vergleich zum HM-Sec-SC ein ziemlicher Brummer, da er von zwei Micro-Batterien statt von zwei LR44-Knopfzellen versorgt wird, aber es geht hier ja nicht um einen Schönheitspreis.
Wie bereits erwähnt, kann der HmIP-SAM sehr flexibel angepasst werden. So kann man zum Beispiel zwischen der Erkennung einer Lageänderung (waagerecht, senkrecht) und einer Erschütterung unterschieden. Bei der Lageänderung kann man die Gradzahl (beginnend bei 10°) einstellen, ab der eine Auslösung erfolgen soll. Für die Erschütterungserkennung kann man verschieden Empfindlichkeitsschwellen (2G++, 2G+, 2G, 4G, 8G, 16G) definieren. Zudem lässt sich einstellen, wie viele aufeinanderfolgende und gleichartige Statusmeldungen ausgelassen werden sollen.
Wichtig: Waagerecht heißt beim HmIP-SAM, dass seine großen Seiten parallel zum Boden respektive senkrecht zur durch die Anziehungskraft der Erde definierten Achse orientiert sind. Senkrecht steht der HmIP-SAM folglich, wenn sich diese beiden Seiten in einen Winkel von mehr als die in der Lageänderung definierte Gradzahl zum Boden befinden. Wer also den HmIP-SAM hochkant montieren möchte, der kann ihn nicht zur Detektion der Lageänderung verwenden, wenn er sich nur um die Achse dreht, die senkrecht zu seinen beiden großen Seiten orientiert ist.
Ich habe die Sensoren folgendermaßen konfiguriert:
Löst einer der beiden HmIP-SAM aus, wird das nachfolgende Programm getriggert, sofern das Garagentor offen steht.
Und hier das zugehörigen Skript, über das ich mir eine entsprechende Push-Nachricht schicken lasse, wobei ich deren Priorität von unserer An- und Abwesenheit abhängig gemacht habe.
Code: Alles auswählen
! Meldung Fahrradhalter
! Version 1.3.2, Autor: dtp
! Namen der verwendeten Systemvariablen
string svPushText = "CCU SV Push Text"; ! gem. zPNS-xx, obligatorisch
string svPushPrio = "CCU SV Push Prio"; ! gem. zPNS-xx, obligatorisch
string svPresent = "Haus SV Anwesenheit"; ! Anwesenheit, obligatorisch
string svPushoverSound = "CCU SV Pushover Sound"; ! gem. zPNS-Po, optional
! Name des zentralen Push-Nachrichten-Programms
string zPNP = "CCU PRG Push-Nachrichten"; ! obligatorisch
! #####################################################################
! ##### ab hier bitte keine weiteren Einstellungen mehr vornehmen #####
! #####################################################################
! +++++ Variablendeklaration +++++
string message; string present; string owner = "";
var source; var device;
! +++++ auslösendes Kanal identifizieren +++++
source = dom.GetObject("$src$");
device = dom.GetObject(source.Channel());
if(device.Name().Find("Thorsten") != -1){owner = "Thorstens";}
elseif(device.Name().Find("Gundula") != -1){owner = "Gundulas";}
else{owner = "ein";}
! +++++ Variable present umwandeln für Nachrichtenausgabe +++++
present = (dom.GetObject(ID_SYSTEM_VARIABLES).Get(svPresent)).Value();
! +++++ Erzeugen der Nachricht +++++
if(present == 1){
message = "<font color=orange>Achtung, "#owner#" Fahrrad wurde in Anwesenheit vom Halter genommen!</font>";
! ----- Priorität der Push-Nachricht -----
(dom.GetObject(ID_SYSTEM_VARIABLES).Get(svPushPrio)).State("0");
! ----- Sound für Pushover-Nachricht -----
if(dom.GetObject(ID_SYSTEM_VARIABLES).Get(svPushoverSound)){(dom.GetObject(ID_SYSTEM_VARIABLES).Get(svPushoverSound)).State("gamelan");}
}
else{
message = "<font color=red>Achtung, "#owner#" Fahrrad wurde IN ABWESENHEIT vom Halter genommen!</font>";
! ----- Priorität der Push-Nachricht -----
(dom.GetObject(ID_SYSTEM_VARIABLES).Get(svPushPrio)).State("2");
! ----- Sound für Pushover-Nachricht -----
if(dom.GetObject(ID_SYSTEM_VARIABLES).Get(svPushoverSound)){(dom.GetObject(ID_SYSTEM_VARIABLES).Get(svPushoverSound)).State("siren");}
}
! +++++ zPNP ausführen +++++
(dom.GetObject(ID_SYSTEM_VARIABLES).Get(svPushText)).State(message);
(dom.GetObject(ID_PROGRAMS).Get(zPNP)).ProgramExecute();
Bis dann,
Thorsten
PS.: Jetzt hoffe ich noch, dass ABUS bald auch Faltschlösser mit BT-Steuerung und Diebstahlmeldung à la "I Lock It" herausbringen.