Seite 1 von 1

Philips Hue Dimmer - SwitchItem Rule

Verfasst: 11. Mär 2022 11:50
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

Re: Philips Hue Dimmer - SwitchItem Rule

Verfasst: 11. Mär 2022 17:26
von SkyWalker2_D
Problem erkannt. 'ON' war nicht komplett groß geschrieben, nur 'On'

Re: Philips Hue Dimmer - SwitchItem Rule

Verfasst: 13. Mär 2022 17:33
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

Re: Philips Hue Dimmer - SwitchItem Rule

Verfasst: 13. Mär 2022 22:10
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...

Re: Philips Hue Dimmer - SwitchItem Rule

Verfasst: 14. Mär 2022 14:30
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

Re: Philips Hue Dimmer - SwitchItem Rule

Verfasst: 14. Mär 2022 14:39
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.