So,
hab eine Lösung gefunden:
// Wechselnde Widget-Anzeige für Tagesriegel und Haustürschloss
createState('vis.HaustuerSwitch', {
read: true,
write: true,
desc: 'vis.HaustuerSwitch',
type: 'number',
name: 'rotierende Haustüranzeige',
min: 0,
max: 1,
def: 0,
});
var count = 0; // Zähler auf 0
var IntervalId;
on("hm-rega.0.4038", function(obj){ // HomeMatic Systemvariable "EG Haustür SV Tagesriegel"
if(obj.state.val === 0){
clearInterval(IntervalId);
setState("javascript."+ instance + ".vis.HaustuerSwitch", 0);
}
else if(obj.state.val === 1){
IntervalId = setInterval(function(){
setState("javascript."+ instance + ".vis.HaustuerSwitch", count); // rotierende Anzeige in Variable schreiben
count++; // hoch zählen
if(count == 2) count = 0; // wenn Zahl der verschiedenen Anzeigen erreicht, wieder nullen.
}, 2 * 1000); // alle zwei Sekunden
}
});
Das obige Skript macht nichts anderes, als bei Änderung der HomeMatic-Systemvariablen "EG Haustür SV Tagesriegel" die Variable "javascript.0.vis.HaustuerSwitch" im zweisekündigen Wechsel von 0 auf 1 zu schalten, sofern "EG Haustür SV Tagesriegel" den Wert 1 (entriegelt) angenommen hat, und dauerhaft auf 0 zu schalten, sofern "EG Haustür SV Tagesriegel" den Wert 0 (verriegelt) angenommen hat. In den entsprechenden Widgets wird dann die Sichtbarkeit in Abhängigkeit von "javascript.0.vis.HaustuerSwitch" gesetzt, und zwar derart, dass das eine Widget sichtbar ist, wenn "javascript.0.vis.HaustuerSwitch" den Wert 0 angenommen hat, und dass das andere Widget sichtbar ist, wenn "javascript.0.vis.HaustuerSwitch" den Wert 1 angenommen hat. That's it.
So sieht das Ganze dann in vis aus (rechts oben befinden sich die fraglichen Widgets).
996_tagesriegel.gif
Mit dem obigen Skript kann man übrigens im zeitlichen Wechsel beliebig viele übereinander liegende Widgets anzeigen. Nehmen wir an, wir wollen auf diese Weise "n" Widgets behandelt, dann müssen lediglich "if(count == n+1)…" und "max: n," im Skript gesetzt werden.
Gruß,
Thorsten
PS.: Ein wenig Bauchschmerzen bereitete mir die lokale Variable "IntervalId", die notwendig ist, um den zeitlichen Werte-Wechsel für "javascript.0.vis.HaustuerSwitch" zu stoppen, da diese Variable erst gesetzt wird, wenn "EG Haustür SV Tagesriegel" auf 1 gesetzt wurde. Allerdings habe ich im Log bisher keine Fehler oder Warnungen diesbezüglich angezeigt bekommen.