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:
- Im Home Assistant heißt mein Rollladen: Schlafzimmer Rolladen
- Im FHEM ist MQTT_Rolladen_Schlafzimmer eine Repräsentation vom Status im Home Assistenat und sendet und Empfängt den Status
- Im FHEM heißt mein Somfy Rolladen (Device) schlafzimmer_r
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