Seite 1 von 3

AVR Receiver Input via Rule

Verfasst: 8. Mär 2020 13:04
von PeterA
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:

Code: Alles auswählen

Thing "denonmarantz:avr:0005cd3a0e8e"
Das Input Item ist vom Type String und möchte "IRP" als String für Internetradio haben:

Code: Alles auswählen

DenonAVRX2000_MainZone_InputSource
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

Re: AVR Receiver Input via Rule

Verfasst: 10. Mär 2020 14:08
von PeterA
.. hat niemand eine Idee ? Ich schiele mal zum Udo :)

Re: AVR Receiver Input via Rule

Verfasst: 10. Mär 2020 15:29
von udo1toni
Ja, das sieht doch schon gut aus. Ich gehe mal davon aus, dass es besser ist, auf ONLINE zu testen.
Dann musst Du nur noch prüfen, ob der Zeitraum erfüllt ist, also z.B.

Code: Alles auswählen

if(now.getHourOfDay > 6 && now.getHourOfDay <13 && now.getDayOfWeek > 5)
und gegebenenfalls einen Timer starten, der dann die Umschaltung vornimmt.

Re: AVR Receiver Input via Rule

Verfasst: 10. Mär 2020 16:04
von PeterA
merci,

das sind nun neue "Befehle" in einer Rule für mich.
Wie darf ich das verstehen ?
"now.getHourOfDay >6" größer sechs Uhr ? und <13 kleiner 13Uhr also muss es zwischen 7 und 12 Uhr liegen ?
"now.getDayOfWeek >5 größer als der 5te Tag (Freitag) der Woche also muss es Sa und So sein ?

Re: AVR Receiver Input via Rule

Verfasst: 10. Mär 2020 17:00
von udo1toni
now.getHourOfDay liefert die aktuelle Stunde des Tages - das ist schon irgendwie naheliegend ;)
> 6 bedeutet, es muss nach 7 Uhr (oder genau 7 Uhr) sein,
< 13 bedeutet, dass die Stunde kleiner 13 ist, das gilt auch für 12:59:59 Uhr. Also ist damit der gesamte Zeitraum vor 13 Uhr gemeint.
Beide Bedingungen müssen gleichzeitig erfüllt sein, also zwischen 7 und 13 Uhr.

now.getDayOfWeek liefert den Tag der Woche, wobei Montag = 1 und Sonntag = 7 ist. an ein paar Stellen hat sich die ISO schon durchgesetzt, selbst in USA... ;)

Re: AVR Receiver Input via Rule

Verfasst: 10. Mär 2020 20:35
von PeterA
Hi Udo,

kleinschrittig bin ich nun weitergekommen :roll:

hier mein erster Versuch welcher auch Funktioniert:

Code: Alles auswählen

rule "Denon Autoinput IRP"
	when 
		Thing "denonmarantz:avr:0005cd3a0e8e" changed
	then
		var status = getThingStatusInfo("denonmarantz:avr:0005cd3a0e8e").getStatus()
        //logInfo("Denon AVR X2000","Status: "+status.toString())
        if (status.toString() == 'ONLINE' && DenonInputAuto_to_IRP.state == ON )
		{
			DenonAVRX2000_MainZone_InputSource.sendCommand("IRP")
			logInfo("Radiomode Auto","Internet Radio")
		}
end
Zunächst habe ich eine zusätzliche Bedingung über das Switch Item "DenonInputAuto_to_IRP" eingebaut.
Somit kann ich unterbinden das automatisch auf Internet Radio umgeschaltet wird sobald der Receiver "Online" ist.

Aber wie bekomme ich eine weitere "UND" Bedingung für den gewünschten Zeitraum hier eingebaut?

Re: AVR Receiver Input via Rule

Verfasst: 10. Mär 2020 21:24
von udo1toni
Du hast Doch schon ein und drin? Ich verstehe jetzt die Frage nicht so ganz...

Re: AVR Receiver Input via Rule

Verfasst: 10. Mär 2020 21:30
von PeterA
Ja und es soll jetzt noch die Bedingung in die Rule das nur Sam und Sonntag zwischen 7 und 13 Uhr Automatisch auf IRP umgeschaltet werden darf.
Der Switch soll aber die Rule komplett deaktivieren.

Re: AVR Receiver Input via Rule

Verfasst: 10. Mär 2020 21:45
von Darkwin101

Code: Alles auswählen

rule "Denon Autoinput IRP"
	when 
		Thing "denonmarantz:avr:0005cd3a0e8e" changed
	then
		var status = getThingStatusInfo("denonmarantz:avr:0005cd3a0e8e").getStatus()
        //logInfo("Denon AVR X2000","Status: "+status.toString())
        if ((status.toString() == 'ONLINE' && DenonInputAuto_to_IRP.state == ON ) && (now.getHourOfDay > 6 && now.getHourOfDay <13 && now.getDayOfWeek > 5))
		{
			DenonAVRX2000_MainZone_InputSource.sendCommand("IRP")
			logInfo("Radiomode Auto","Internet Radio")
		}
end
Eine rule kannst du nicht komplett deaktivieren du kannst nur dafür sorgen das im then Teil nicht alle Bedingungen erfüllt sind und damit dann keine Aktion ausgeführt wird.

Re: AVR Receiver Input via Rule

Verfasst: 10. Mär 2020 22:09
von PeterA
Hi Darkwin,

vielen Dank für Deinen Input. Ich wusste nicht das ich mehr als zwei && als Bedingungen in eine Zeile packen kann.
Und klar kann eine Rule nicht komplett deaktiviert werden sondern nur nicht Triggern.
Ich werde es am Weekend dann mal testen.

Gruß Peter