seit ein paar Jahren werde ich erfolgreich über Prowl informiert, wenn nach Abschließen der Tür (scharf) ein Fenster oder eine Tür geöffnet ist.
Nun musste ich 2 Aktoren in optische Aktoren austauschen. Diese werden leider nicht erkannt. Sie sind Favoriten_Fenster hinterlegt auch im skript ist die entsprechende Info hinterlegt (HM-Sec-SCO). Was habe ich denn dabei falsch gemacht?
Hier mal mein Skript:
Code: Alles auswählen
integer test = 0;
!******************************************************
! Ab hier Script CODE - Do not change behind this line
!******************************************************
if (test == 0) {
WriteLine("Hello");
};
!---- Nachricht ueber Prowl senden ----
string stdout;
string stderr;
string apikey = "xxxxxxxxxxxxx";
string application = "HomeMatic";
string message;
!---- Nachricht ueber Prowl senden ---- Ende
if (dom.GetObject('Intern Scharf').State() == true) {
if (test == 0) {
WriteLine("Geraete abfragen im Favoritenliste");
};
! Alle Geraete in Favoritenliste "Fav_Fenster" abfragen und auswerten.
var myAssembly = dom.GetObject('Fav_Fenster');
string itemID;
integer offen = 0;
foreach(itemID, myAssembly.EnumUsedIDs()) {
var item = dom.GetObject(itemID);
if (item.IsTypeOf(OT_CHANNEL)) {
var device = dom.GetObject(item.Device());
! Pruefen, ob Fenster offen
! Tuerfensterkontakte Fenster-Drehgriffsensoren
if ((device.HssType() == "HM-Sec-SC") || (device.HssType() == "HM-Sec-SCO") || (device.HssType() == "HM-Sec-SC-2") || (device.HssType() == "HM-Sec-RHS")) {
var myChannel = dom.GetObject(item);
string id;
foreach(id, myChannel.ChnFunction()) {
var func = dom.GetObject(id);
if (func.Name() == "Fenster") {
if (item.State() > 0) {
offen = offen + 1.00;
if (offen > 1) {message = message # "%20-%20";}
message = message # device.Name();
}
}
}
}
}
}
! Wenn ein Fenster offen ist, dann Meldung senden
if (offen > 0) { ! Fenster offen, Meldung senden
if (test == 1) {
WriteLine("Anzahl offene Fenster " # offen.ToString() # " - " # message);
} else {
!---- Nachricht ueber Prowl senden ----
message = offen.ToString() # "%20Fenster%20geoeffnet%20-%20" # message;
system.Exec("wget -q -O /dev/null 'http://prowl.weks.net/publicapi/add?apikey=" # apikey # "&application="# application #"&priority=0\&description="# message #"'", &stdout, &stderr);
!---- Nachricht ueber Prowl senden ---- Ende
}
} else {
if (test == 1) {
WriteLine("Keine offenen Fenster vorhanden!");
}
}
} else {
if (test == 1) {
WriteLine("Anwesend - keine Prüfung");
};
}