So,
jetzt habe ich mir auch ein kleines Alarmscript (irgendeine Fensteröffnung = Pushovermeldung) gebastelt, welches die Besonderheit hat, dass es die beiden Kellerfenstersensoren nicht meldet, sofern diese beiden Fenster vom Entfeuchtungsscript automatisch geöffnet/geschlossen worden sind.
Außerdem sendet es nur eine Meldung, wenn die Personenanzahl weniger als 1 ist (also niemand zuhause ist). Das habe ich über den Geofence Adapter gelöst.
Es scheint so zu klappen alles, vielleicht nicht elegant, aber ich kann denn Code nachvollziehen.
// Forum: http://forum.iobroker.net/viewtopic.php?f=21&t=2473
// Horcht an allen Gewerken (functions) unter "Alarm" und sendet bei Statusänderung
// Schließt die beiden Kellerfenster vom Alarm aus, sofern das Lüftungsscript die Öffnung/Schließung angestoßen hat:
// wenn Jalousieaktorstatus (= Aktor für die Fenstermotoren) auf WORKING steht, dann werden die Kellerfenster ausgeschlossen!
// IDs deklarieren
var jemandzuhauseid = "geofency.0.atHomeCount"/*atHomeCount*/;
var kellerscriptsiid = "hm-rpc.0.MEQ03xxxxx.1.WORKING"/*Fensteröffner Keller Sicherungsraum:1.WORKING*/; // liest den Jalousieaktor aus, WORKING = in Arbeit
var kellerscriptwaid = "hm-rpc.0.MEQ05xxxxx.1.WORKING"/*Fensteröffner Keller Waschraum:1.WORKING*/;
$('channel(functions=Alarm)[state.id=*.STATE]').on(function (event) { // An "Alarm"-Gewerke nach Statusänderungen prüfen
var _obj = getObject(event.id, 'functions');
log("---------------------------------------------------"+ event.channelName, "info");
var jemandzuhause = getState(jemandzuhauseid).val; // IDs auslesen
var kellerscriptsi = getState(kellerscriptsiid).val;
var kellerscriptwa = getState(kellerscriptwaid).val;
if((event.channelName !== 'Fenstersensor Keller Sicherungsraum' && kellerscriptsi !== true) || // Ausschluss Kellerfenster bei automatischer Öffnung/Schließung
(event.channelName !== 'Fenstersensor Keller Waschraum' && kellerscriptwa !== true))
{
if (jemandzuhause < 1) // Prüft ob jemand Zuhause ist
{
sendTo("pushover", {message: 'ALARM: ' + event.channelName + ' hat angeschlagen!', priority: 1}); // wenn nein, Alarmnachricht
//setState(sayit_vol, 100);
//setState(sayit_txt, "Der "+ event.channelName +" hat angeschlagen.");
}
}
});