Regeloptimierung: Beamer an - Leinwand runter

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
christian1312
Beiträge: 9
Registriert: 15. Jan 2020 19:15
Answers: 0

Regeloptimierung: Beamer an - Leinwand runter

Beitrag von christian1312 »

Ich habe folgendes Problem ... Ich steuer meine Leinwand über einen Shelly 2.5 an.
Sobald der Verbrauch des Beamers steigt, soll die Leinwand herunterfahren.
Wenn der Verbrauch wieder gegen 0 geht soll die Leinwand hochfahren.

Das ganze funktioniert auch, allerdings wird das UP und DOWN Signal permanent gesendet.

Nun soll die Regel ergänzt werden, sodass die Position der Leinwand zuerst überprüft wird.
Allerdings bekomme ich das nicht hin.

Meine aktuelle Regel sieht wie folgt aus:

Code: Alles auswählen

// Beamer an - Leinwand runter
rule "Beamer an"
when
    Item eg_partyraum_beamer changed
then
    var Number verbrauch = eg_partyraum_beamer.state as Number
    if (verbrauch > 50) 
    {
        // eg_partyraum_leinwand.sendCommand(DOWN)
    }
    if (verbrauch <= 50) 
    {
        // eg_partyraum_leinwand.sendCommand(UP)
    }
end
Und durch folgende Änderung wollte ich das permante Senden des Signals vermeinden:

Code: Alles auswählen

// Beamer an - Leinwand runter
rule "Beamer an"
when
    Item eg_partyraum_beamer changed
then
    var Number verbrauch = eg_partyraum_beamer.state as Number
    var Number position = leinwandposition.state as Number
    if (verbrauch > 50 && position = 0) 
    {
        // eg_partyraum_leinwand.sendCommand(DOWN)
    }
    if (verbrauch <= 50 && position = 100) 
    {
        // eg_partyraum_leinwand.sendCommand(UP)
    }
end
Oder kann er die leinwandposition.state nicht als Number ausgeben?

Kann mir jemand helfen?

Danke!

int5749
Beiträge: 1173
Registriert: 4. Nov 2019 22:08
Answers: 9

Re: Regeloptimierung: Beamer an - Leinwand runter

Beitrag von int5749 »

Aber dann würde ja bei jeder Stromänderung (beim starten des Beamers sicher häufiger zum aufwärmen) ein ON senden.
Ich würde ein entweder ein Dummy Item nehmen, welches nach einem ON auf 1 gesetzt wird und dies mit abfragen (nur in Unkenntnis, was der Shelly der Leinwand liefern kann). Alternativ, wenn der Shelly Strom liefert, würde ich kein ON mehr senden, sobald Shelly bereits Strom liefert.
Als letzte Möglichkeit nur dan nein ON senden, wenn der Stelly nicht ON ist.

z.B.

Code: Alles auswählen

if (verbrauch <= 50 && shellyLeinwand != ON)
openHAB 4.1.0 Release mit openHABian in einem Debian Bookworm (LXC) unter Proxmox 8.1.3

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

Re: Regeloptimierung: Beamer an - Leinwand runter

Beitrag von udo1toni »

Die Frage ist ja, wie die Items definiert sind.
openHAB4.3.6 stable in einem Debian-Container (bookworm) (Proxmox 8.4.1, LXC), mit openHABian eingerichtet

christian1312
Beiträge: 9
Registriert: 15. Jan 2020 19:15
Answers: 0

Re: Regeloptimierung: Beamer an - Leinwand runter

Beitrag von christian1312 »

Also mit den Dummys kenne ich mich nicht aus. Wie würde das aussehen?

Die Items sehen wie folgt aus:
// Partyraum

// Beleuchtung
Switch eg_partyraum_licht_jackdaniels "Jack Daniels" <lightbulb> (licht) {channel="shelly:shellyplugs:6a645b:relay#output"}
Switch eg_partyraum_licht_kilkenny "Kilkenny" <lightbulb> (licht) {channel="shelly:shellyplugs:021ba6:relay#output"}

// Multimedia
Rollershutter eg_partyraum_leinwand "Leinwand" <projector> {channel="shelly:shelly25-roller:8caab5058f78:roller#control"}

// Sonstiges
Number eg_partyraum_beamer "Verbrauch Beamer" <projector> {channel="shelly:shellyplugs:6a5e11:meter#currentWatts"}
Switch eg_partyraum_kuehlschrank "Kühlschrank" <switch> {channel="avmfritz:FRITZ_DECT_200:192_168_178_1:087610357401:outlet"}
Switch eg_partyraum_zapfanlage "Zapfanlage" <switch> {channel="shelly:shellyplugs:62774a1dce:relay#output"}

christian1312
Beiträge: 9
Registriert: 15. Jan 2020 19:15
Answers: 0

Re: Regeloptimierung: Beamer an - Leinwand runter

Beitrag von christian1312 »

int5749 hat geschrieben: 19. Feb 2021 22:22 Aber dann würde ja bei jeder Stromänderung (beim starten des Beamers sicher häufiger zum aufwärmen) ein ON senden.
Ich würde ein entweder ein Dummy Item nehmen, welches nach einem ON auf 1 gesetzt wird und dies mit abfragen (nur in Unkenntnis, was der Shelly der Leinwand liefern kann). Alternativ, wenn der Shelly Strom liefert, würde ich kein ON mehr senden, sobald Shelly bereits Strom liefert.
Als letzte Möglichkeit nur dan nein ON senden, wenn der Stelly nicht ON ist.

z.B.

Code: Alles auswählen

if (verbrauch <= 50 && shellyLeinwand != ON)
Genau das ist ja mein Problem, das permanent Signale gesendet werden. Denn selbst wenn der Beamer aus ist, ist er im Standby immer zwischen 0.0 und 0.4 Watt, sodass immer eine Statusänderung vorliegt und dadurch ein erneutes UP geschickt wird.

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

Re: Regeloptimierung: Beamer an - Leinwand runter

Beitrag von udo1toni »

Gewöhnlich löse ich das so:

Code: Alles auswählen

// Beamer an - Leinwand runter
rule "Beamer an"
when
    Item eg_partyraum_beamer changed
then
    val verbrauch = (eg_partyraum_beamer.state as Number).floatValue

    var Soll = 0

    if (verbrauch > 50) 
        Soll = 100

    if(eg_partyraum_leinwand.state != Soll)
        eg_partyraum_leinwand.sendCommand(Soll)
end
Die Rule steuert so natürlich über absolute Positionen. Sollte das nicht möglich sein, so müsste man das sendCommand leicht abändern, z.B. so:

Code: Alles auswählen

        eg_partyraum_leinwand.sendCommand(if(Soll == 100) DOWN else UP)
openHAB4.3.6 stable in einem Debian-Container (bookworm) (Proxmox 8.4.1, LXC), mit openHABian eingerichtet

Antworten