es bezieht sich auf diesen Arikel
[Howto] Somfy Rolladen zwischen FHEM und Home Asssistant Syncron halten
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
-------------------------------------------------------------------
da bekomme ich den Fehler in Fhem
------------------------------------------------------------
schlafzimmer_r_ha_di DOIF: expected DOELSEIF or DOELSE: \ ( \ {Log 1, "schlafzimmer_r_ha_di: Close Request von HASS erkannt"},\ set schlafzimmer_r close \ )\ \ DOELSEIF ([MQTT_Rolladen_Schlafzimmer:ha_command] eq "open")\ ( \ {Log 1, "schlafzimmer_r_ha_di: Open Request von HASS erkannt"},\ set schlafzimmer_r open \ )\ \ DOELSEIF ([MQTT_Rolladen_Schlafzimmer:ha_command] eq "stop")\ ( \ {Log 1, "schlafzimmer_r_ha_di: Stop Request von HASS erkannt"},\ set schlafzimmer_r stop \ )\ \ DOELSEIF ([MQTT_Rolladen_Schlafzimmer:ha_command] > "-1")\ ( \ # Umrechnung 20%=80%,\ {Log 1, "schlafzimmer_r_ha_di: 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
könnte mir dabei jemand Helfen bin am verzweifeln
Sorry hier die list von meinen in Fhem angelegten Rollo
Internals:
CHANNEL_RECEIVE 1
DEF 9240B101
FUUID 67af3feb-f33f-3e5d-fe31-62a568db972e622b
ID 9240B10
IODev Signal_Duino
MODEL LE-Device
NAME schlafzimmer_r
NR 145
NTFY_ORDER 50-schlafzimmer_r
STATE notAvaible
TYPE Siro
Version 1.3
CODE:
1 9240B101
READINGS:
2025-02-16 17:56:42 ActionTime 1739725002
2025-02-16 17:56:42 ActionTrigger fhem
2025-02-16 17:56:42 BetweentActionTime 2
2025-02-16 20:12:28 IODev Signal_Duino
2025-02-16 17:56:42 LastAction stop
2025-02-16 17:56:42 LastActionTime 1739725000
2025-02-16 17:56:40 aktActionFinish 0
2025-02-16 17:56:40 aktEndAction 0
2025-02-16 17:56:40 aktRunningAction noAction
2025-02-16 17:56:40 aktTimeAction 0
2025-02-16 17:56:40 batteryState unknown
2022-03-14 17:03:35 command position-60
2022-03-14 17:03:35 desired_position 60
2022-03-14 17:03:35 drive-type modul
2022-03-14 17:03:41 homekit_pos 40
2022-03-14 17:03:35 last_drive drive-down
2025-02-16 17:56:42 motor-term Function is not available without set runtime attribute, please define
2025-02-16 17:56:40 pct 100
2025-02-16 17:56:40 position 100
2025-02-16 17:56:42 state notAvaible
helper:
progmode off
Attributes:
devStateIcon {return FHEM::Siro::Siro_icon($name)}
event-on-change-reading position
room HASS
webCmd open:close:stop:position
Warum fragst du nicht im DOIF-Bereich oder in diesem howto-Artikel (https://forum.fhem.de/index.php?topic=138649.0?)?
Meine Meinung: dieses Rumgeschubse von Daten zwischen verschiedenen Devices ist Murks, das kann und sollte man per MQTT_GENERIC_BRIDGE und den passenden Attributen direkt an dem Siro-Device lösen....
Kannst du mir bitte erklären wie oder wo ich schauen muss ?
commandref oder z.B. hier: https://wiki.fhem.de/wiki/MQTT_GENERIC_BRIDGE
habe jetzt das gemacht
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
dann hatte ich nur diese Fehlermeldung komme aber nicht weiter so oder so:
schlafzimmer_r_ha_di DOIF: expected DOELSEIF or DOELSE: attr schlafzimmer_r_ha_di do always
Na da hab ich ja wieder was neues zu lesen zu lesen und denken mal schauen wie weit ich das schaffe :o
Danke für deinen Tip
Zitat von: Sepp am 17 Februar 2025, 18:25:29attr schlafzimmer_r_ha_di do always
Hast du das einfach in die Definition deines DOIF reinkopiert?
"always" muss über das "do" Attribut gesetzt werden, das hat in der Definition davon, was das DOIF machen soll, nichts zu suchen.
Deshalb auch die Fehlermeldung
Zitat von: Sepp am 17 Februar 2025, 18:25:29expected DOELSEIF or DOELSE
Danke passibe aber das hab ich weggelassen und es bleibt zwar jetzt in fhem aber schalten kann ich den Rollo trotzdem noch nicht.(von fhem geht er aber nicht in HA)
Aber Steckdosen funktionieren alle einwandfrei also ist doch mit MQTT alles ok(so sehe ich das)
also da verzweifelt man schon
wenn jemand ein Beispiel hätte wo es mit dem Rollo funktioniert das wäre toll
Gruß
Ok, aber die Fehlermeldung aus dem Eingangspost
Zitat von: Sepp am 17 Februar 2025, 17:57:44schlafzimmer_r_ha_di DOIF: expected DOELSEIF or DOELSE: \ ( \ {Log 1, "schlafzimmer_r_ha_di: Close Request von HASS erkannt"},\ set schlafzimmer_r close \ )\ \ DOELSEIF ([MQTT_Rolladen_Schlafzimmer:ha_command] eq "open")\ ( \ {Log 1, "schlafzimmer_r_ha_di: Open Request von HASS erkannt"},\ set schlafzimmer_r open \ )\ \ DOELSEIF ([MQTT_Rolladen_Schlafzimmer:ha_command] eq "stop")\ ( \ {Log 1, "schlafzimmer_r_ha_di: Stop Request von HASS erkannt"},\ set schlafzimmer_r stop \ )\ \ DOELSEIF ([MQTT_Rolladen_Schlafzimmer:ha_command] > "-1")\ ( \ # Umrechnung 20%=80%,\ {Log 1, "schlafzimmer_r_ha_di: 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
und diese Fehlermeldung
Zitat von: Sepp am 17 Februar 2025, 18:25:29schlafzimmer_r_ha_di DOIF: expected DOELSEIF or DOELSE: attr schlafzimmer_r_ha_di do always
müssten jetzt doch weg sein?
Was passiert denn jetzt, wenn du das Rollo bedienst?
Ansonsten lies doch mal mit MQTT Explorer o.ä. mit, ob/was denn überhaupt für MQTT-Nachrichten hin und hergesendet werden.
Fehlermeldung hab ich keine mehr
Aber das steht in HA MQTT im Log
2025-02-18 14:35:57: Warning: Mosquitto should not be run as root/administrator.
2025-02-18 14:35:57: mosquitto version 2.0.20 starting
2025-02-18 14:35:57: Config loaded from /etc/mosquitto/mosquitto.conf.
2025-02-18 14:35:57: Loading plugin: /usr/share/mosquitto/go-auth.so
2025-02-18 14:35:57: ├── Username/password checking enabled.
2025-02-18 14:35:57: ├── TLS-PSK checking enabled.
2025-02-18 14:35:57: └── Extended authentication not enabled.
2025-02-18 14:35:57: Opening ipv4 listen socket on port 1883.
2025-02-18 14:35:57: Opening ipv6 listen socket on port 1883.
2025-02-18 14:35:57: Opening websockets listen socket on port 1884.
2025-02-18 14:35:57: mosquitto version 2.0.20 running
2025-02-18 14:35:57: New connection from ::1:57882 on port 1883.
2025-02-18 14:35:57: Client <unknown> disconnected due to protocol error.
[14:35:57] INFO: Successfully send discovery information to Home Assistant.
[14:35:57] INFO: Successfully send service information to the Supervisor.
2025-02-18 14:36:00: New connection from 172.30.32.1:38901 on port 1883.
2025-02-18 14:36:00: New client connected from 172.12.32.1:38901 as 0UfMtOz5lZ7UEwFHe (p2, c1, k60, u'mqtt-user').
2025-02-18 14:36:04: New connection from 192.168.178.53:50476 on port 1883.
2025-02-18 14:36:04: New client connected from 192.168.178.53:50476 as fhem (p1, c1, k60, u'mqtt-user').
2025-02-18 14:36:16: New connection from 172.12.32.1:55792 on port 1883.
2025-02-18 14:36:16: Client <unknown> closed its connection.
2025-02-18 14:38:16: New connection from 172.12.32.1:58804 on port 1883.
Sorry Nichts passiert
Zitat von: Sepp am 18 Februar 2025, 17:47:39Sorry Nichts passiert
Sorry, aber "nichts" ist "zu dürftig"...
Insgesamt MUSS dir die Kette klar sein, über die die Daten hier in beide Richtungen laufen sollen - und da sind imo zum einen viel zu viele Devices beteiligt, und zum anderen ist dir anscheinend überhaupt nicht klar, was ein "event" in FHEM ist, was ein "Event-Handler", und was Attribute wie dieses bewirken:
Zitat von: Sepp am 17 Februar 2025, 18:05:30event-on-change-reading position
Um in deinem Konstrukt zurechtzufinden, brauchst du (gleichzeitig!)
- Ein Browser-Fenster mit der Detailansicht des Siro-Devices
- Ein Browser-Fenster " mit deinem (unnötigen...) "Kopierdevice" (MQTT_Rolladen_Schlafzimmer)
- Ein "irgendwas", in dem du den MQTT-VERKEHR (! keine "Zustände") sehen kannst - ich würde das einfach über "show traffic" im MQTT2_CLIENT machen (dann siehst du auch gleich, dass und wie du die Subscriptions einschränken solltest! Alternativ mosquitto_sub, falls man im genannten MQTT-Explorer nicht den Verkehr mitlesen kann)
In letzterem MUSS irgendwas zu sehen sein, wenn du von HA aus versuchst, den Rollladen zu steuern...
Aber nochmal: Der ganze Wust an zusätzlichen Devices (DOIF+MQTT2_DEVICE) ist unnötig kompliziert, verwende MQTT_GENERIC_BRIDGE (richtig)...
Ok dann beschäftige ich mich mal mit MQTT_GENERIC_BRIDGE (die hab ich ja schon aber ich Denke wahrscheinlich wieder zu kompliziert)
Aber trotzdem vielen Dank werde mal alles Löschen dann neu starten
Und es versuchen
Gruß