Hallo zusammen,
folgendes würde ich gerne über eine Rule "Smart" erledigen:
Wenn mein Receiver Samstags und Sonntags zwischen 7 und 13 Uhr eingeschaltet wird,
soll auf Internetradio als Input umgeschaltet werden.
Meine Idee ist zunächst über den Thing Status des Receivers abzufragen ob er "Online" ist.
Wenn er online ist, noch 60 sek warten, und dann auf Internetradio als Input zu schalten.
Zusätzlich soll es aber noch einen Switch in der UI geben mit dem ich das ganze Aktivieren/Deaktivieren kann.
Das Thing vom Receiver sieht so aus:
Das Input Item ist vom Type String und möchte "IRP" als String für Internetradio haben:
Das Switch Item soll dann "RadioModeAuto" lauten
Wie könnte denn hier die Rule aussehen ?
Könnte diese Rule ggf als Vorlage dienen ?
Code: Alles auswählen
rule "Denon OFFLINE/ONLINE"
when
Thing "denonmarantz:avr:0005cd3a0e8e" changed
then
var status = getThingStatusInfo("denonmarantz:avr:0005cd3a0e8e").getStatus()
logInfo("Denon AVR X2000","Status: "+status.toString())
if (status.toString() == 'OFFLINE')
{
DenonAVRX2000_MainZone_Power.postUpdate(OFF)
}
else {
DenonAVRX2000_MainZone_Power.postUpdate(ON)
}
end
Gruß Peter
von udo1toni » 22. Aug 2020 17:42
Gut. Ich gehe von "TV" als Input Namen aus. Falls das abweicht, musst Du das entsprechend ändern.
Code: Alles auswählen
var Timer tAutoInput = null // globale Variablen immer zu Beginn der Datei definieren
rule "Denon Autoinput bei Einschalten"
when
Thing "denonmarantz:avr:0005cd3a0e8e" changed
then
if(DenonInputAuto_to_IRP.state != ON) {
logInfo("autoinput","Regel getriggert, aber deaktiviert.")
return;
}
var status = getThingStatusInfo("denonmarantz:avr:0005cd3a0e8e").getStatus()
if(status.toString() != 'ONLINE') {
logInfo("autoinput","Regel getriggert, Gerät nicht ONLINE.")
return;
}
if (now.getDayOfWeek < 6) {
logInfo("autoinput","Regel getriggert, kein Wochenende.")
return;
}
logInfo("autoinput","Regel getriggert, bereite Umschaltung vor.")
tAutoInput?.cancel
tAutoInput = createTimer(now.plusSeconds(15), [|
var String strInput = "TV"
if (now.getHourOfDay > 6 && now.getHourOfDay < 13)
strInput = "IRP"
logInfo("autoinput","Timer abgelaufen, wähle {}.",strInput)
DenonAVRX2000_MainZone_InputSource.sendCommand(strInput)
])
end
Die Umschaltung wird nur am Wochenende ausgeführt. (letztes return vor dem Erstellen des Timers...) Im Timer entscheidet die Rule anhand der Uhrzeit, welcher Eingang gewählt wird. Innerhalb des Zeitfensters 7 Uhr bis 13 Uhr wird Internet Radio gewählt, außerhalb TV. Ich war faul und habe einfach den zu übergebenden String im log verwendet, der Lesende dürfte damit genauso gut zurechtkommen

Gehe zur vollständigen Antwort