erstmal ein Danke in die Runde! Nachdem ich jetzt schon viele tolle Ideen und Lösungen hier aus dem Forum ziehen konnte, beschäftigt mich ein Problem für ein kommendes Projekt bei dem ich einfach nicht weiter komme. Vielleicht hat jemand von euch eine schlaue Lösung per Script oder einen komplett anderen Ansatz. Ich betreibe meine komplette Hausautomatisierung auf einer CCU2 da ich persönlich kein Freund von Cloud-Lösungen bin (mal ganz angesehen von den Cloudmatic-Problemen).
- CCU2 FW 2.29.23
- CUxD 1.11a
- HMIP-SWDO FW 1.12.1
Szenario:
Wir haben einen großen Wohnzimmer-Bereich mit 2x HmIP-eTRV-2 Thermostaten, 2x HmIP-SWDO Fensterkontakten und 1x HmIP-WTH-2 Wand-Thermostat aufgestattet und funzt soweit auch ganz gut. Wegen unserer Katze wurden die HmIP-SWDO mit einer Eventverzögerung von 20 Sekunden eingestellt. Ich will ja nicht bei jedem rein- und rauslassen eine Vollbremsung der Thermostate
Die nächste Ausbau-Stufe wäre im EG alle Fenster und Türen mit HmIP-SWDO auszustatten, um in Zukunft eine Alarmanlage realisieren zu können. Dazu habe ich bereits hm-pdetect von Jens Maus am laufen, was auch hervorragend funktioniert.
Fragestellung:
Gibt es eine Möglichkeit die Eventverzögerung der HmIP-SWDO Fensterkontakte per Script anzupassen?
=> Bei Anwesenheit der Hausbewohner soll die Eventverzögerung auf 20 Sekunden stehen
=> Bei Abwesenheit und aktiver Alarmanlage soll die Eventverzögerung auf 0 Sekunden stehen und sofort auslösen
Recherche:
In der HmIP_Device_Documentation.pdf von Homematic findet man auf Seite 3573 das im Channel 1 SHUTTER_CONTACT_TRANSCEIVER bei den Channel configuration parameters theoretisch die Möglichkeit bestünde dort den Datenpunkt anzupassen:
- EVENT_DELAY_VALUE
- integer
- read write
- Min: 0
- Max: 63
Jetzt habe ich mal ein Script in der Konsole laufen lassen und alle Datenpunkte von so einem Fensterkontakt ausgeben lassen.
Code: Alles auswählen
string auswahl = "XXXXXXXXXXXXX";
! +++++++++++++++++++
string index;
string liste = dom.GetObject(ID_DATAPOINTS).EnumUsedNames();
foreach (index, liste) {
var sserial = (index.StrValueByIndex(":",0).StrValueByIndex(".",1));
if (sserial == auswahl) {
Write(index #"\n");
}
}
Code: Alles auswählen
HmIP-RF.XXXXXXXXXXXXXX:0.CONFIG_PENDING
HmIP-RF.XXXXXXXXXXXXXX:0.DUTY_CYCLE
HmIP-RF.XXXXXXXXXXXXXX:0.ERROR_CODE
HmIP-RF.XXXXXXXXXXXXXX:0.LOW_BAT
HmIP-RF.XXXXXXXXXXXXXX:0.OPERATING_VOLTAGE
HmIP-RF.XXXXXXXXXXXXXX:0.RSSI_DEVICE
HmIP-RF.XXXXXXXXXXXXXX:0.RSSI_PEER
HmIP-RF.XXXXXXXXXXXXXX:0.SABOTAGE
HmIP-RF.XXXXXXXXXXXXXX:0.UNREACH
HmIP-RF.XXXXXXXXXXXXXX:0.UPDATE_PENDING
HmIP-RF.XXXXXXXXXXXXXX:1.STATE
Code: Alles auswählen
object obj = devices.Get("Tür-Sensor Haupt-Terrasse");
xmlrpc.PutParamset (obj.Interface(), obj.Address(), "MASTER", "EVENT_DELAY_VALUE", "20");