Ich habe auch noch solch einer Lösung gesucht und wollte kurz mein Workaround hierfür mit euch teilen:
Mein Beamer ist nicht "smart", daher steuer ich diesen mit einer Broadlink Fernbedienung. Das Problem ist, dass um ihn auszuschalten man die Power-Taste zwei mal drücken muss. Das bedeutet, dass wenn der Beamer gerade gar nicht an ist, zwei mal die Power-Taste den Beamer anschalten würde (anstatt ihn ausgeschaltet zu lassen).
Den obigen Vorschlag hätte ich daher hierfür nutzen können. In einer Variable speichere ich ob der Beamer an ist (wenn ich den Beamer mit einer Scene starte). Starte ich nun die Szene die den Beamer ausschalten soll, setze ich für die Ausschalt-Aktion die Bedingung, dass der Beamer nur ausgeschaltet werden soll wenn das System meint das er überhaupt an ist.
Da es diese Funktion (noch) nicht gibt, habe ich mir ein Script geschrieben, dass dies für mich überprüft:
const root = "javascript." + instance + ".myObjects.";
const beamerIsOn = root + "beamerIsOn";
const beamerTurnOff = root + "beamerTurnOff";
const beamerPowerButton = "broadlink.0.learnedSignals.CODE_...";
on(beamerTurnOff, function (obj) {
if (!obj.state.ack && obj.state.val) {
turnOffBeanerIfNotOn();
}
});
function turnOffBeanerIfNotOn() {
if (!getState(beamerIsOn).val) {
// beamer is not on
return;
}
// press power button twice to turn off
setState(beamerPowerButton, true);
setTimeout(function() {
setState(beamerPowerButton, true);
}, 2000);
setState(beamerIsOn, false);
setState(beamerTurnOff, false);
}
In meiner Szene starte ich nun dieses Script (anstatt den Beamer direkt auszuschalten) indem ich den "beamerTurnOff"-Wert auf true setze.
Hoffe das bietet Leuten mit ähnlichen Anforderungen einen Gedanken-Anstoß.