Philips Hue Dimmer - SwitchItem Rule

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
SkyWalker2_D
Beiträge: 28
Registriert: 8. Feb 2022 19:36
Answers: 0

Philips Hue Dimmer - SwitchItem Rule

Beitrag von SkyWalker2_D »

Moin!

Ich möchte mit einem Hue Dimmschalter 4 Lampen an- bzw. ausschalten. Die Befehle 1002.0, 2002.0, 3002.0, 4002.0 für jeden Taster kommen auch an. Das lass ich mir auf einer Page anzeigen!

Allerdings funktioniert nur das Schalten der Helligkeit einer Lampe. Die Lampen via Steckdose als SwitchItem bekommen den Befehl "On" und schalten nicht.

Liegt es ggf. an dem verwendeten Regel- Aufbau?

Code: Alles auswählen

if (itemRegistry.getItem('DimmerWerkraum_DimmerSchalter').getState() == '1002.0') {
  events.sendCommand('DeckenlampeWerkraum', '60');
} else if (itemRegistry.getItem('DimmerWerkraum_DimmerSchalter').getState() == '2002.0') {
  events.sendCommand('WerkbankWerkraum', 'on');
} else if (itemRegistry.getItem('DimmerWerkraum_DimmerSchalter').getState() == '3002.0') {
  events.sendCommand('PCLichtWerkraum', 'on');
} else if (itemRegistry.getItem('DimmerWerkraum_DimmerSchalter').getState() == '4002.0') {
  events.sendCommand('BasteltischLichtWerkraum', 'on');
} else if (itemRegistry.getItem('DimmerWerkraum_DimmerSchalter').getState() == '4003.0') {
  events.sendCommand('DeckenlampeWerkraum_Helligkeit', '0');
  events.sendCommand('WerkbankWerkraum_Betrieb', 'Off');
  events.sendCommand('PCLichtWerkraum_Betrieb', 'Off');
  events.sendCommand('BasteltischLichtWerkraum_Betrieb', 'Off');
}
sollte doch eigentlich klappen, oder? Wenn der erste Wert nicht passt, dann nehme prüfe den 2. if Eintrag usw.
Und jeweils dann den Befehl "on" an das SwitchItem senden.

Ich verwende weiterhin Blockly btw :)

Grüße
Sky

SkyWalker2_D
Beiträge: 28
Registriert: 8. Feb 2022 19:36
Answers: 0

Re: Philips Hue Dimmer - SwitchItem Rule

Beitrag von SkyWalker2_D »

Problem erkannt. 'ON' war nicht komplett groß geschrieben, nur 'On'

Benutzeravatar
KellerK1nd
Beiträge: 432
Registriert: 17. Jun 2019 16:45
Answers: 1
Wohnort: Griesheim

Re: Philips Hue Dimmer - SwitchItem Rule

Beitrag von KellerK1nd »

Etwas aufwendig die Regel für meinen Geschmack, du kannst das auch stark vereinfacht schreiben:

Code: Alles auswählen

rule "Tradfri Fernbedienung 1 Zuweisung"
when
    Channel "deconz:switch:homeserver:Tradfri_Fernbedienung_1:buttonevent" triggered
then
    switch (receivedEvent) {
        case "1002"       : if(MusicCast_Kueche_Power.state == OFF) MusicCast_Kueche_Power.sendCommand(ON) else MusicCast_Kueche_Power.sendCommand(OFF)
        case "2002"       : MusicCast_Kueche_Volume.sendCommand((MusicCast_Kueche_Volume.state as Number)+4)
        case "3002"       : MusicCast_Kueche_Volume.sendCommand((MusicCast_Kueche_Volume.state as Number)-4)
        case "4002"       : MusicCast_Kueche_Playback.sendCommand("PREVIOUS")
        case "4003"       : MusicCast_Kueche_Power.sendCommand(OFF)
        case "5002"       : MusicCast_Kueche_Playback.sendCommand("NEXT")
        case "2003"       : MusicCast_Kueche_Power.sendCommand(OFF)
    }
end
Noch dazu nutzt du die "falsche" Prozedur, wenn ich das richtig sehe, näheres hatte Udo mal erklärt, warum, wieso und weshalb, für miehr Übersicht würde ich das so schreiben, allerdings ohne deine Items zu kennen:

Code: Alles auswählen

rule "..." // Regelname
when
    Channel "...." triggered //Hier muss der Triggerchannel des Dimmschalters rein
then
    switch(receivedEvent) {
        case '1002.0' : DeckenlampeWerkraum.sendCommand(60)
        case '2002.0' : WerkbankWerkraum.sendCommand(ON)
        case '3002.0' : PCLichtWerkraum.sendCommand(ON)
        case '4002.0' : BasteltischLichtWerkraum.sendCommand(ON)
        case '4003.0' : {
                            DeckenlampeWerkraum_Helligkeit.sendCommand(0)
                            WerkbankWerkraum_Betrieb.sendCommand(OFF)
                            PCLichtWerkraum_Betrieb.sendCommand(OFF)
                            BasteltischLichtWerkraum_Betrieb.sendCommand(OFF)
        }
    }
end
Betriebssystem: Proxmox 7.3-4
openHAB Container: debian11 LXC
openHAB Version: 3.4
Hardware: HomeServer Eigenbau mit einem Intel i5 9600K
Smarthome-Equipment:
- Rasperrymatic
- deConz
- HUE
- Shellys
- Mosquitto
- AVM Fritz!Box

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

Re: Philips Hue Dimmer - SwitchItem Rule

Beitrag von udo1toni »

Vermutlich ist das eine per UI erstellte JavaScript Rule (bzw. ECMA)

Dennoch kann man jede Menge Taktzyklen einsparen, wenn man nicht immer und immer wieder die Item Registry mit dem selben Item abfragt, sondern nur einmal den Status des Items holt und diesen in eine lokale Variable speichert.Der Vergleich - ob nun mit switch-case oder mit if - wird dann gegen die lokale Variable ausgeführt.

Code bitte immer als Code markieren! Ich habe das oben mal korrigiert...
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

SkyWalker2_D
Beiträge: 28
Registriert: 8. Feb 2022 19:36
Answers: 0

Re: Philips Hue Dimmer - SwitchItem Rule

Beitrag von SkyWalker2_D »

Hi!

Vielen Dank für Eure Hilfe. Ja, ich benutze die GUI & Blockly. Ich stehe ja immer noch am Anfang und DSL wäre eigentlich meine 1. Wahl. Aber noch ist Blockly mit meinem einfachen Wissen und meinen einfachen Regeln passend.

Kann man das denn so vereinfacht wie o. a. in Blockly erfassen?

Grüße
Sky

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

Re: Philips Hue Dimmer - SwitchItem Rule

Beitrag von udo1toni »

Ja, Blockly kann ebenfalls mit lokalen Variablen umgehen.
Ob es ein switch-case gibt, weiß ich nicht, die if-Variante ist aber nicht soooo viel schlechter als switch-case, Letzeres ist halt im Zweifel besser lesbar.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Antworten