Hallo Michael,
auch von mehr erstmal vielen Dank für die Entwicklung des Adapters.
Bei mir funktioniert er bisher einwandfrei. Was mir im ioBroker wichtig war, endlich die Sicherheitsfeatures zu implementieren, die in der besch****nen gekapselten Velux ioHomecontrol Welt nicht möglich sind. Wer schonmal sein elektrisches Rollo ins offene Fenster gesemmelt hat, weiß was ich meine
Ich habe dazu zwei Script entwicklet, die ich gerne mit der Community teilen möchte und genau das verhindern:
/* Prüfe, ob Fenster weiter als bisher geöffnet werden soll*/
on({ id: 'klf200.0.products.1.targetPosition'/*Position Fenster*/, change: "gt", ack: false }, async function (obj) {
var valueFenster = obj.state.val;
var oldValueFenster = obj.oldState.val;
/* Prüfe, ob Rolle weiter als 50% geöffnet ist*/
if (getState("klf200.0.products.0.currentPosition").val > 50) {
/* Fenster anhalten */
setState('klf200.0.products.1.stop'/*stop*/, true);
/* Rolle auf 50% zurückfahren, dann kann das Fenster gefahrlos geöffnet werden */
setState('klf200.0.products.0.targetPosition', 50, false, function () {
/* Callback: Trigger, wenn Rolloänderung fertig (Status 5) */
on({ id: 'klf200.0.products.0.state'/*state*/, val: 5, ack: true }, async function (obj) {
var valueRollo = obj.state.val;
var oldValueRollo = obj.oldState.val;
/* Wenn Trigger erfüllt, Fenster auf ursprünglich gewünste Position öffnen */
setState('klf200.0.products.1.targetPosition', valueFenster, false, function () {
/* Trigger auf Rolladenstatus abmelden*/
unsubscribe('klf200.0.products.0.state')
});
})
})
};
});
/* Prüfe, ob Rolle weiter als bisher geschlossen werden soll*/
on({ id: 'klf200.0.products.0.targetPosition'/*Position Fenster*/, change: "gt", ack: false }, async function (obj) {
var valueRolle = obj.state.val;
var oldValueRolle = obj.oldState.val;
/* Prüfe, ob Fenster weiter als 10% geöffnet ist (dies ist der Stellwert für den Dampfabzug)*/
if (getState("klf200.0.products.1.currentPosition").val > 10) {
/* Rollo anhalten */
setState('klf200.0.products.0.stop'/*stop*/, true);
/* Fenster auf 10% zurückfahren, dann kann das Rolle gefahrlos geschlossen werden */
setState('klf200.0.products.1.targetPosition', 10, false, function () {
/* Callback: Trigger, wenn Fensteränderung fertig (Status 5) */
on({ id: 'klf200.0.products.1.state'/*state*/, val: 5, ack: true }, async function (obj) {
var valueFenster = obj.state.val;
var oldValueFenster = obj.oldState.val;
/* Wenn Trigger erfüllt, Rollo auf ursprünglich gewünste Position schließen */
setState('klf200.0.products.0.targetPosition', valueRolle, false, function () {
/* Trigger auf Fensterstatus abmelden*/
unsubscribe('klf200.0.products.1.state')
});
})
})
};
});
Wer mag kann sich gerne bedienen.
Viele Grüße,
Stefan