AVR Receiver Input via Rule

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

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

Re: AVR Receiver Input via Rule

Beitrag von udo1toni »

Das ist ja schon ein Weilchen her...

Wie sieht der Code denn aktuell aus?


Gesendet von iPad mit Tapatalk
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 »

Original so wie in deinem als beste Antwort markierten Post.
- 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 »

Hier noch mal die aktuelle Rule:

Code: Alles auswählen

var Timer tAutoInput = null  // globale Variablen immer zu Beginn der Datei definieren

rule "Denon Autoinput IRP"
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.getHourOfDay < 7 || now.getHourOfDay > 12 || now.getDayOfWeek < 6) {
        logInfo("autoinput","Regel getriggert, falscher Zeitraum.")
        return;
    }
    logInfo("autoinput","Regel getriggert, berreite Umschaltung vor.")
    tAutoInput?.cancel
    tAutoInput = createTimer(now.plusSeconds(15), [|
        logInfo("autoinput","Timer abgelaufen, wähle Internet Radio.")
        DenonAVRX2000_MainZone_InputSource.sendCommand("IRP")
    ])
end
Gruß Peter
- 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 »

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 ;)
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 »

Hallo Udo,

was soll ich sagen ? Funktioniert! Vielen Dank!

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 = "SAT/CBL"
        if (now.getHourOfDay > 6 && now.getHourOfDay < 13)
            strInput = "IRP"
        logInfo("autoinput","Timer abgelaufen, wähle {}.",strInput)
        DenonAVRX2000_MainZone_InputSource.sendCommand(strInput)
    ])
end
- 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 »

Hallo Udo,
es gibt ja im "Live" Betrieb immer noch etwas was nicht bedacht wurde :)
Nämlich kann es sein das der Denon auf "BD" (Blu-Ray) als Input steht. (Weil halt jemand gerade Blu-Ray schaut)
Ab und zu passiert es aber leider das das Denon Thing in OpenHAB Offline geht und danach wieder online. (Ursache noch nicht gefunden)
Dann würde die Rule wieder auf SAT/IRP umschalten.... -> doof.
Ich habe jetzt noch eine Zusätzliche Abfrage eingebaut welche prüft ob der Input gerade auf "BD" steht.

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;
    }
    if(DenonAVRX2000_MainZone_InputSource.state.toString == "BD") {
        logInfo("autoinput","Regel getriggert, InputSource Blu-Ray, Abbruch.")
        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 = "SAT/CBL"
        if (now.getHourOfDay > 6 && now.getHourOfDay < 13)
            strInput = "IRP"
        logInfo("autoinput","Timer abgelaufen, wähle {}.",strInput)
        DenonAVRX2000_MainZone_InputSource.sendCommand(strInput)
    ])
end
- OpenHab 2.4
#PWRUP

Antworten