Volume Control mit langem Tastendruck

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Norick
Beiträge: 251
Registriert: 31. Jan 2022 06:35
Answers: 0

Re: Volume Control mit langem Tastendruck

Beitrag von Norick »

Vielen Dank für den Input bez. den Sprachen und den Vorschlägen. Zum meinem konkreten Fall habe ich gerade gesehen dass der KNX Taster natürlich auch als Dimmer programmiert werden kann. Das heisst hier habe ich dann autom. einen kurzen bzw. langen Tastendruck zur Verfügung. Ich habe das so programmiert und die ETS zeigt die beiden Tastendrücke auch korrekt an.

Nun habe ich in OH4 zwei Dimmer Items gemacht für VolUp und VolDown bzw. die KNX Adresse entsprechend gesetzt. Dazu folgende Test DSL:

Code: Alles auswählen

rule "VolUp"

when
    Item Audio__Bad_Bad_Rth_Taster_rechts_unten_Radio_VolUp changed 
then
    logDebug("Radio Volume","Rule VolumeUp triggered")
    
    logDebug("Radio Volume","Volume down from {}%",SqueezeBox_Player_Volume.state)
    SqueezeBox_Player_Volume.sendCommand((SqueezeBox_Player_Volume.state as Number) + 1)        // Volume down
		
end
Nun die DSL wird zwar geladen aber sie triggert nicht auf einen langen Tastendruck. Ich habe den Trigger auch schon geändert auf "received command" aber auch hier nichts...

Kann ich dies den so machen?

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

Re: Volume Control mit langem Tastendruck

Beitrag von udo1toni »

Nein, das ist so auch nicht die korrekte Herangehensweise.

Lege stattdessen einen Dimmtaster mit Zwei-Flächen-Bedienung an (links aus, dunkler, rechts an, heller) Dann verknüpfst Du zwei GA, die eine Kurzzeit (das ist ON/OFF), die zweite Langzeit (Dimmen heller/dunkler). Es bietet sich an, die Langzeit Funktion auf zyklisches Wiederholen einzustellen, z.B. alle 300 Millisekunden.

Auf openHAB-Seite konfigurierst Du für die Taste einen dimmer-control Channel (control ist hier essenziell). Bei den GA trägst Du für switch die Kurzzeit GA ein, position bleibt leer(!) und die Langzeit GA trägst Du als increaseDecrease ein. So:

Code: Alles auswählen

Type dimmer-control         : squeeze1 "Volume/Track"     [ switch="1/0/0",increaseDecrease="1/0/1" ]
Kurzzeit ist hier also 1/0/0, Langzeit 1/0/1.
Den Channel verknüpfst Du mit einem Dimmer Item:

Code: Alles auswählen

Dimmer NEGBad_Squeeze "Volume/Track" {channel="knx:device:bridge:GiraTSplus1_1_120:squeeze1", autoupdate="false"} 
Das autoupdate ist optional, mit ist halt ordentlicher.
Die zugehörige Rule:

Code: Alles auswählen

rule "SB BadEG dimm"
 when
    Item NEGBad_Squeeze1 received command
 then
    switch receivedCommand {
        case OFF : {
            logDebug("Squeezebox","Bad EG Titel zurück")
             SquBadEG_Prev.sendCommand(ON)
        }
        case ON : {
            logDebug("Squeezebox","Bad EG Titel vor")
            SquBadEG_Next.sendCommand(ON)
        }
        case IINCREASE : {
            logDebug("Squeezebox","Bad EG lauter")
            SquBadEG_Volume.sendCommand((SquBadEG_Volume.state as Number) + 5)
        }
        case DECREASE : {
            logDebug("Squeezebox","Bad EG leiser")
            SquBadEG_Volume.sendCommand((SquBadEG_Volume.state as Number) - 5)
        }
    }
end
Hier steuere ich eine Squeezebox (genauer, eine SqueezeLite Instanz) an, ein kurzer Tastendruck springt in der Titelliste vor/zurück, ein langer Tastendruck steigert/senkt die Lautstärke in 5-Prozent-Schritten.

Wenn Du den Taster nicht zum zyklischen Senden überreden kannst, kannst Du in openHAB im Dimmer Channel den optionalen Parameter frequency setzen, damit generiert openHAB selbst die entsprechende Befehlswiederholung. Natürlich muss der Taster dann auch ein Stopp-Telegramm generieren, welches openHAB dann ebenfalls auswertet (das passiert in der gleichen GA, DPT 3.007 (Increase/Decrease, Wert 1 - 7 -> Increase, Wert 9 - 15 -> Decrease, Wert 0 und 8 -> Stopp, der Wert der Bits 1 - 3 (Dezimal 0-7) ist die sogenannte Schrittweite, 7 = 100 %, 0 = 0%, die Werte dazwischen halbieren sich jeweils.

Die Konfiguraiton kannst Du exakt so natürlich auch über die UI vornehmen :)
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Norick
Beiträge: 251
Registriert: 31. Jan 2022 06:35
Answers: 0

Re: Volume Control mit langem Tastendruck

Beitrag von Norick »

Vielen Dank... Ich habe eine Zwischenfrage dazu:

Meine OH Konfiguration des Dimmer-Controls sieht so aus:

Code: Alles auswählen

configuration:
      increaseDecrease: 8.1.0
      position: 8.1.2
      frequency: 300
      switch: 1.1.7
Muss ich unter "position" etwas angeben oder was ist hierzu gemeint?

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

Re: Volume Control mit langem Tastendruck

Beitrag von udo1toni »

Das ist leider vallig fölsch :)

Das erste: Position steht nur dann zur Verfügung, wenn Du ein Steuergerät hast, welches Absolutwerte anzeigt. Ich meine, es gibt die Glastaster von MDT, die tatsächlich den Prozentwert eines Dimmers anzeigen können. Nur in diesem Fall solltest Du die position GA verwenden.
openHAB sendet dann bei dimmer-control Channels automatisch den Status des verlinkten Items an den Bus.

Das zweite, wichtigere Problem: GA werden mit Slash geschrieben 8/1/0, nicht 8.1.0. openHAB erzwingt nicht das korrekte Format, aber Du musst das korrekte Format verwenden, damit es nachher funktioniert.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Antworten