AVR Receiver Input via Rule

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Benutzeravatar
PeterA
Beiträge: 1106
Registriert: 8. Feb 2019 12:12
Answers: 13

AVR Receiver Input via Rule

Beitrag 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
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
- OpenHab 2.4
#PWRUP

Benutzeravatar
PeterA
Beiträge: 1106
Registriert: 8. Feb 2019 12:12
Answers: 13

Re: AVR Receiver Input via Rule

Beitrag von PeterA »

.. hat niemand eine Idee ? Ich schiele mal zum Udo :)
- OpenHab 2.4
#PWRUP

Benutzeravatar
udo1toni
Beiträge: 15265
Registriert: 11. Apr 2018 18:05
Answers: 245
Wohnort: Darmstadt

Re: AVR Receiver Input via Rule

Beitrag 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.
openHAB4.3.5 stable in einem Debian-Container (bookworm) (Proxmox 8.4.1, LXC), mit openHABian eingerichtet

Benutzeravatar
PeterA
Beiträge: 1106
Registriert: 8. Feb 2019 12:12
Answers: 13

Re: AVR Receiver Input via Rule

Beitrag 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 ?
- OpenHab 2.4
#PWRUP

Benutzeravatar
udo1toni
Beiträge: 15265
Registriert: 11. Apr 2018 18:05
Answers: 245
Wohnort: Darmstadt

Re: AVR Receiver Input via Rule

Beitrag 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... ;)
openHAB4.3.5 stable in einem Debian-Container (bookworm) (Proxmox 8.4.1, LXC), mit openHABian eingerichtet

Benutzeravatar
PeterA
Beiträge: 1106
Registriert: 8. Feb 2019 12:12
Answers: 13

Re: AVR Receiver Input via Rule

Beitrag 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?
- OpenHab 2.4
#PWRUP

Benutzeravatar
udo1toni
Beiträge: 15265
Registriert: 11. Apr 2018 18:05
Answers: 245
Wohnort: Darmstadt

Re: AVR Receiver Input via Rule

Beitrag von udo1toni »

Du hast Doch schon ein und drin? Ich verstehe jetzt die Frage nicht so ganz...
openHAB4.3.5 stable in einem Debian-Container (bookworm) (Proxmox 8.4.1, LXC), mit openHABian eingerichtet

Benutzeravatar
PeterA
Beiträge: 1106
Registriert: 8. Feb 2019 12:12
Answers: 13

Re: AVR Receiver Input via Rule

Beitrag 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.
- OpenHab 2.4
#PWRUP

Darkwin101
Beiträge: 424
Registriert: 6. Mär 2019 11:19
Answers: 14

Re: AVR Receiver Input via Rule

Beitrag 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.

Benutzeravatar
PeterA
Beiträge: 1106
Registriert: 8. Feb 2019 12:12
Answers: 13

Re: AVR Receiver Input via Rule

Beitrag 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
- OpenHab 2.4
#PWRUP

Antworten