FHEM Forum

FHEM => Sonstiges => Thema gestartet von: th0nix am 01 Juli 2024, 23:12:16

Titel: [Howto] Somfy Rolladen zwischen FHEM und Home Asssistant Syncron halten.
Beitrag von: th0nix am 01 Juli 2024, 23:12:16
Hallo,

ich leben inzwischen mit FHEM und welchen manchen Integration im Home Assistent.
Nun wollte ich meine Somfy Rollläden auch noch im Home Assistent steuern können.

Ich möchte meinen aktuellen Stand - hat sicherlich noch Optimierungspotenzial teilen.

Zum Besseren Verständnis:

1) Im Home Assistant die MQTT Integration mit einem MQTT Server verbinden
2) Rollanden in der config/configuration.yaml wie folgt anlegen:
mqtt:
  cover:
  - name: "Schlafzimmer Rolladen"
    unique_id:  schlafzimmer_rolladen_unten
    command_topic: "fhem/schlafzimmer_rolladen_unten/set"
    state_topic: "fhem/schlafzimmer_rolladen_unten/state"
    position_topic: "fhem/schlafzimmer_rolladen_unten/position"
    set_position_topic: "fhem/schlafzimmer_rolladen_unten/set"
    payload_close: "close"
    payload_open: "open"
    payload_stop: "stop"
    state_closed: "closed"
    state_closing: "closing"
    state_open: "open"
    state_opening: "opening"
    state_stopped: "stopped"

3) MQTT Device im FHEM anlegen welchen den Status im Home Assistent representiert:
defmod MQTT_Rolladen_Schlafzimmer MQTT2_DEVICE mosquitto_MQTT
attr MQTT_Rolladen_Schlafzimmer autocreate 0
attr MQTT_Rolladen_Schlafzimmer readingList mosquitto_MQTT:fhem/schlafzimmer_rolladen_unten/set:.* ha_command
attr MQTT_Rolladen_Schlafzimmer room MQTT2_DEVICE
attr MQTT_Rolladen_Schlafzimmer setList closed:noArg fhem/schlafzimmer_rolladen_unten/state closed\
open:noArg fhem/schlafzimmer_rolladen_unten/state open\
position fhem/schlafzimmer_rolladen_unten/position $EVTPART1

4) Die Syncronisation zwischen dem Somfy Device und dem MQTT Device via DOIF machen
defmod schlafzimmer_r_ha_di DOIF ([MQTT_Rolladen_Schlafzimmer:ha_command] eq "close")\
( \
{Log 1, "$SELF: Close Request von HASS erkannt"},\
set schlafzimmer_r close \
)\
\
DOELSEIF ([MQTT_Rolladen_Schlafzimmer:ha_command] eq "open")\
( \
{Log 1, "$SELF: Open Request von HASS erkannt"},\
set schlafzimmer_r open \
)\
\
DOELSEIF ([MQTT_Rolladen_Schlafzimmer:ha_command] eq "stop")\
( \
{Log 1, "$SELF: Stop Request von HASS erkannt"},\
set schlafzimmer_r stop \
)\
\
DOELSEIF ([MQTT_Rolladen_Schlafzimmer:ha_command] > "-1")\
( \
# Umrechnung 20%=80%,\
{Log 1, "$SELF: Potionsrequest von HASS erkannt".(([MQTT_Rolladen_Schlafzimmer:ha_command]-100)/-1)},\
set schlafzimmer_r pos {(([MQTT_Rolladen_Schlafzimmer:ha_command]-100)/-1)}\
)\
\
DOELSEIF ([schlafzimmer_r] eq "open")\
( set MQTT_Rolladen_Schlafzimmer open )\
\
DOELSEIF ([schlafzimmer_r] eq "closed")\
( \
  set MQTT_Rolladen_Schlafzimmer closed,\
  set MQTT_Rolladen_Schlafzimmer position 100\
 )\
\
DOELSEIF ([schlafzimmer_r:position] < 100 )\
( \
  set MQTT_Rolladen_Schlafzimmer open,\
  set MQTT_Rolladen_Schlafzimmer position {( (int([schlafzimmer_r:position])-100)/-1 )}\
)
attr schlafzimmer_r_ha_di do always

5) Bei dem Sonfy Gerät noch ein event-on-change-reading auf die position setzten:
attr schlafzimmer_r event-on-change-reading position