FHEM Forum

FHEM - Hausautomations-Systeme => MQTT => Thema gestartet von: Sneak5411 am 12 November 2026, 01:14:12

Titel: MQTT-Mapping für FS20-Dimmer (HomeAssistant)
Beitrag von: Sneak5411 am 12 November 2026, 01:14:12
Hallo zusammen,

ich habe ein altes FS20-Setup, das ich mit FHEM in Homeassistant verwenden will.
Prinzipiell funktioniert die Kommunikation schon (vielen Dank an alle hier im Forum für die Beiträge für MQTT_GENERIC_BRIDGE).
Ich kann auch FS20-Schalter (switch:) problemlos in beide Richtungen bedienen.

Allerdings scheitere ich an den Dimmern (light:) - auch hier funktoniert das Ein-und Ausschlalten sowie das fixen Dimmen auf vorgegebene %-Werte (die, die FHEM vorgegeben hat).
Aber ich möchte auch gerne den Dimmer frei verschieben können und schaffe das nicht.


Hat zufällig jemand ein funktonierendes MQTT-configuration.yaml für HomeAssistant, das FS20-Dimmer korrekt mappt und die Dimm-Funktion vollständig unterstützt?

Danke schon mal vorab!

Titel: Aw: MQTT-Mapping für FS20-Dimmer (HomeAssistant)
Beitrag von: Beta-User am 12 November 2026, 06:29:54
Zitat von: Sneak5411 am 12 November 2026, 01:14:12Hat zufällig jemand ein funktonierendes MQTT-configuration.yaml für HomeAssistant, das FS20-Dimmer korrekt mappt und die Dimm-Funktion vollständig unterstützt?
Die Anfrage ist m.E. unvollständig: Die Konfiguration muss auf beiden Seiten zusammenpassen. Von daher bitte ein "copy for forum" von dem FS20-Dimmer (aus der Geräteansicht in FHEMWEB).

Siehe auch: https://forum.fhem.de/index.php?msg=1066615
Titel: Aw: MQTT-Mapping für FS20-Dimmer (HomeAssistant)
Beitrag von: Sneak5411 am 12 November 2026, 11:00:04
Gerne (sorry bin erstmalig aktiv, nachdem ich schonlänger mitlese - kenne ggf. noch nicht alle Gepflogenheiten)

define FS20_LP_WZ_Stehlampe_Steckdosendimmer FS20 3c69 27
attr FS20_LP_WZ_Stehlampe_Steckdosendimmer userattr mqttAlias:textField-long mqttDefaults:textField-long mqttDisable:both,incoming,outgoing mqttForward:all,none mqttPublish:textField-long mqttSubscribe:textField-long
attr FS20_LP_WZ_Stehlampe_Steckdosendimmer mqttSubscribe state:stopic={"$base/set"}
attr FS20_LP_WZ_Stehlampe_Steckdosendimmer room HA_FHEM
attr FS20_LP_WZ_Stehlampe_Steckdosendimmer verbose 0
#   BTN        27
#   CFGFN     
#   DEF        3c69 27
#   FUUID      6af4d7f1-f33f-13ae-0439-5d4dd97b63f8b89a
#   IODev      myCUL
#   LASTInputDev ha_MQTT2
#   MSGCNT     289
#   NAME       FS20_LP_WZ_Stehlampe_Steckdosendimmer
#   NR         55
#   STATE      off
#   TYPE       FS20
#   XMIT       3c69
#   eventCount 446
#   ha_MQTT2_MSGCNT 243
#   ha_MQTT2_TIME 2026-11-12 10:53:26
#   myCUL_MSGCNT 46
#   myCUL_RAWMSG 810b04xx0101a0013c69270000
#   myCUL_RSSI -59.5
#   myCUL_TIME 2026-11-12 08:09:24
#   CODE:
#     1          3c69 27
#   READINGS:
#     2026-11-11 22:02:41   IODev           myCUL
#     2026-11-12 10:53:33   state           off
#
setstate FS20_LP_WZ_Stehlampe_Steckdosendimmer off
setstate FS20_LP_WZ_Stehlampe_Steckdosendimmer 2026-11-11 22:02:41 IODev myCUL
setstate FS20_LP_WZ_Stehlampe_Steckdosendimmer 2026-11-12 10:53:33 state off

Titel: Aw: MQTT-Mapping für FS20-Dimmer (HomeAssistant)
Beitrag von: Beta-User am 12 November 2026, 11:53:44
Zitat von: Sneak5411 am 12 November 2026, 11:00:04Gerne (sorry bin erstmalig aktiv, nachdem ich schonlänger mitlese - kenne ggf. noch nicht alle Gepflogenheiten)
Kein Problem. Ist halt einfach schwierig zu helfen, wenn man alles erraten muss ;D .

FS20 ist ja nun wirklich "speziell", wer denkt sich denn sowas aus (commandref):
Zitatset <name> <value> [<time>]
Wobei value einer der folgenden Werte sein kann:
    dim06% dim12% dim18% dim25% dim31% dim37% dim43% dim50% [...]
Die (aus FHEM-Sicht) einfache Variante ist, in der yaml schlicht diese zulässigen Werte irgendwo fest zu hinterlegen.

Die etwas kompliziertere wäre, auf der FHEM-Seite (auch) einen Zahlenwert entgegenzunehmen, und den dann mit "dim"<Wert>%" zu verarbeiten. commandref von MQTT_GENERIC_BRIDGE meint dazu:
Zitatattr <dev> mqttSubscribe state:stopic={"TEST/light/set"} state:expression={$value="x"}

Umgemodelt und ungetestet würde da in etwa sowas rauskommen:
attr FS20_LP_WZ_Stehlampe_Steckdosendimmer mqttSubscribe state:stopic={"$base/set"} state:expression={$value=looks_like_number($value)?"dim${value}%":$value}Damit könnte man immerhin sowas wie einen slider auf der yaml-Ebene realisieren, aber eben weiter nur mit bestimmten Werten.

Das könnte man ggf noch weiter aufbohren, damit die zulässigen Werte aus beliebigen Zahlen abgeleitet werden...
Stichwort wäre dann "myUtils", vermutlich braucht es da dann aber einen Rückverweis nach "main", also der Spur nach so: "state:expression={$value=::my_MQTT2FS20fn($value)}".

Enjoy ;D .
Titel: Aw: MQTT-Mapping für FS20-Dimmer (HomeAssistant)
Beitrag von: Sneak5411 am 12 November 2026, 12:34:18
Hi,

danke für Deine Einschätzung. Mir hat das Thema einfach keine Ruhe gelassen und ich konnte mittlerweile in der MQTT-yaml genau den von Dir auch vorgeschlagenen Ansatz erfolgreich umsetzen.

Der Dimmer-Slider wird immer auf den nächst passenden der fix vorgegebenen Werte von FS20 gesezt

- &fs20_dimmer_template_base
  unique_id: FS20_LP_WZ_Stehlampe_Steckdosendimmer
  name: "FS20_LP_WZ_Stehlampe_Steckdosendimmer"
  state_topic: "fhem/FS20_LP_WZ_Stehlampe_Steckdosendimmer/state"
  command_topic: "fhem/FS20_LP_WZ_Stehlampe_Steckdosendimmer/set"
  payload_on: "on"
  payload_off: "off"
  brightness_state_topic: "fhem/FS20_LP_WZ_Stehlampe_Steckdosendimmer/state"
  brightness_command_topic: "fhem/FS20_LP_WZ_Stehlampe_Steckdosendimmer/set"
  brightness_scale: 100
  on_command_type: "brightness"
  brightness_command_template: >
    {% set v = value | int %}
    {% set steps = [6, 12, 18, 25, 31, 37, 43, 50, 56, 62, 68, 75, 81, 87, 93, 100] %}
    {% set ns = namespace(closest=6, diff=100) %}
    {% for s in steps %}
      {% set d = (s - v) | abs %}
      {% set ns.diff = [ns.diff, d] | min %}
      {% if ns.diff == d %}
        {% set ns.closest = s %}
      {% endif %}
    {% endfor %}
    dim{{ '%02d' % ns.closest }}%
  state_value_template: >
    {% if value == 'off' or value == 'dim00%' %}
      off
    {% elif 'dim' in value or value == 'on' %}
      on
    {% else %}
      {{ value }}
    {% endif %}
  brightness_value_template: >
    {% if 'dim' in value %}
      {{ value | regex_replace('[^0-9]', '') | int }}
    {% elif value == 'on' %}
      100
    {% else %}
      0
    {% endif %}
  optimistic: false
  qos: 0
  retain: false

Funktioniert problemlos, Informationsaustausch in beide Richtungen (HomeAssistant <-> FHEM) korrekt möglich.

Mit dem "fs20_dimmer_template_base" kann ich diese Logik für alle Dimmer in der yaml wiederverwenden


Danke & lG