FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Jackie am 08 Februar 2024, 13:08:39

Titel: Dimmer für MQTT Device umsetzen, reading kommt zu selten, Variable zwischenspeic
Beitrag von: Jackie am 08 Februar 2024, 13:08:39
Hallo,

ich versuche gerade mit einem Ikea Tradfri Schalter einen Dimmer für mein MQTT Device (Ulanzi Pixelclock) zu bauen. Leider kennt die Pixelclock keinen dimup oder dimDown befehl sondern nur absolute Werte. Und der Ikea-Schalter erkennt im Prinzip nur kurzklick, langklick, und langklickende bzw. Kurzklickende.

Folgender Ansatz funktioniert im Prinzip:

([HUESensorNachtlicht:"1002"])
  (set MQTT2_FHEM_Server publish awtrix_123456/settings {"BRI": "1"})
DOELSEIF ([HUESensorNachtlicht:"2002"])
  (set MQTT2_FHEM_Server publish awtrix_123456/settings {"BRI": "0"})
DOELSEIF ([HUESensorNachtlicht:"1001"])
  ({
    my $value = ReadingsVal("MQTT2_awtrix_123456", "bri", 0);;
    $value = ($value == 100) ? $value + 0 : $value + 1;;
    fhem(qq(set MQTT2_FHEM_Server publish awtrix_123456/settings {"BRI": "$value"}));;
  })
DOELSEIF ([HUESensorNachtlicht:"1003"])
  ## Do nothing, just stop repeatcmd from last condition
DOELSEIF ([HUESensorNachtlicht:"2001"])
  ({
    my $value = ReadingsVal("MQTT2_awtrix_123456", "bri", 0);;
    $value = ($value == 0) ? $value + 0 : $value - 1;;
    fhem(qq(set MQTT2_FHEM_Server publish awtrix_123456/settings {"BRI": "$value"}));;
  })
DOELSEIF ([HUESensorNachtlicht:"2003"])

Allerdings geht das Dimmen damit sehr stockend und langsam. Das Problem scheint zu sein, dass die Reafings für "my $value = ReadingsVal("MQTT2_awtrix_123456", "bri", 0)" viel zu selten gesendet werden. Ich müsste also irgendwie versuchen, statt des Readings die Variable für die Helligkeit zwischenzuspeichern, ich habe aber keine Idee wie ich das anstellen soll.

Oder hat jemand eine gute Idee wie man den Dimmer hinbekommt ohne ständig erneut das den Wert vom Reading holen zu müssen?
Titel: Aw: Dimmer für MQTT Device umsetzen, reading kommt zu selten, Variable zwischenspeic
Beitrag von: Damian am 08 Februar 2024, 13:18:28
Wenn du deine Definition in den DOIF-Perlmodus überführst, kannst du einfach mit Device-Variablen hantieren.
Titel: Aw: Dimmer für MQTT Device umsetzen, reading kommt zu selten, Variable zwischenspeic
Beitrag von: Jackie am 08 Februar 2024, 13:19:56
Zitat von: Damian am 08 Februar 2024, 13:18:28Wenn du deine Definition in den DOIF-Perlmodus überführst, kannst du einfach mit Device-Variablen hantieren.

Danke, hast du mir dafür ein Beispiel? Und werden die Device-Variablen dann zwischengespeichert oder habe ich da dann das gleiche Problem dass diese nur dann aktualisiert werden wenn auch das Reading aktualisiert wird?
Titel: Aw: Dimmer für MQTT Device umsetzen, reading kommt zu selten, Variable zwischenspeic
Beitrag von: Damian am 08 Februar 2024, 15:39:55
Die Variablen bleiben so lange erhalten, wie das Device existiert. Sie beginnen mit $_ siehe dazu: https://wiki.fhem.de/wiki/DOIF/Perl-Modus