Neuigkeiten:

Am Sonntag den 8.12.2024 kann es ab ca. 8:00 Uhr zu kurzzeitigen Einschränkungen / Ausfällen bei den Diensten des FHEM Vereines kommen.
Die Server müssen mal gewartet und dabei neu gestartet werden ;)

Hauptmenü

Hilfe erbeten: ESPSomfy per MQTT einbinden

Begonnen von MogRuith, 23 Oktober 2024, 13:07:26

Vorheriges Thema - Nächstes Thema

MogRuith

Hallo beisammen,
ich benötige eure Hilfe: Ich habe mir einen ESPSomfy (https://github.com/rstrouse/ESPSomfy-RTS) als Ersatz für den sterbenden Signalduino gebastelt, kann per MQTT die Positionen der Rollläden triggern. Zur Steuerung gibt es mehrere Möglichkeiten: u.a. per mqtt-publish oder html.

Das template erstellt eine readinglist:
client_0000d46ccd20691c:ESPSomfyRTS/shades/1/lastRollingCode:.* shades_1_lastRollingCode
client_0000d46ccd20691c:ESPSomfyRTS/shades/1/cmdSource:.* shades_1_cmdSource
client_0000d46ccd20691c:ESPSomfyRTS/shades/1/cmdAddress:.* shades_1_cmdAddress
client_0000d46ccd20691c:ESPSomfyRTS/shades/1/cmd:.* shades_1_cmd
client_0000d46ccd20691c:ESPSomfyRTS/shades/1/target:.* shades_1_target
client_0000d46ccd20691c:ESPSomfyRTS/shades/1/direction:.* shades_1_direction
client_0000d46ccd20691c:ESPSomfyRTS/shades/1/position:.* shades_1_position

und gibt folgende readings raus:
shades_1_cmd My 2024-10-23 12:35:39
shades_1_cmdAddress 707703 2024-10-23 12:35:39
shades_1_cmdSource internal 2024-10-23 12:35:39
shades_1_direction 0 2024-10-23 12:35:39
shades_1_lastRollingCode 414 2024-10-23 12:35:39
shades_1_position 11 2024-10-23 12:35:38
shades_1_target 11 2024-10-23 12:35:39

Zur Steuerung der Position muss ein "shade_1_target_set" als "position" in die setlist. Wie mache ich das?

Alternativ lässt sich per html ansteuern, z.B. "http://ip:8081/shadeCommand?shadeId=1&target=0" zum Öffnen.
Im browser funktioniert das toll, aber wie bekomme ich das ins DoIf...?
(([{twilight("Tageslicht","sr_indoor","07:00","08:00")}|7] or [{twilight("Tageslicht","sr_civil","05:30","07:00")}|8]) and [Tageslicht:twilight_weather] >= 40)
  (set wz_rl pos 100)
Einfach ein set ...shadeCommand?shadeId=1&target=100 funktioniert leider nicht.

Nach Stunden der Recherche im Forum bitte ich euch etwas verzweifelt um Hilfe.
Dank&Gruß

rudolfkoenig

ZitatZur Steuerung der Position muss ein "shade_1_target_set" als "position" in die setlist. Wie mache ich das?
Ich habe keine Doku fuer MQTT gefunden.
Wenn ich MQTT.cpp richtig verstehe dann waere mein Vorschlag:
attr XXX setList position:slider,0,1,100 ESPSomfyRTS/shades/1/position/set
HTML kann man z.Bsp. per
{ GetFileFromURL("http://ip:8081/shadeCommand?shadeId=1&target=0") }abrufen. Wie man das in DOIF einbaut, muss ein DOIF-Fachmann erleutern.

MogRuith

Wow...besten Dank!!! Mit "{GetHttpFile("IP:8081","/shadeCommand?shadeId=1&target=100")}" statt "set pos 100" geht es! Wobei...mqtt probiere ich auch noch, bin gespannt, vielleicht ist es ja für andere auch ganz interessant.

Dank&Gruß

passibe

#3
Hier ist alles dokumentiert: https://github.com/rstrouse/ESPSomfy-RTS/wiki/Integrations#mqtt

Kann eine FHEM-Konfiguration nur für eine Markise bieten (glaube aber es ist das gleiche in grün für Rollos). Natürlich nicht vergessen das devicetopic an das in ESPSomfy gewählte root topic anzupassen.
defmod markise MQTT2_DEVICE markise
attr markise alias Markise
attr markise autocreate 0
attr markise cmdIcon up:fts_sunblind_up down:fts_sunblind_down stop:fts_sunblind_stop half:fts_shutter_50
attr markise devicetopic somfy/shades/1
attr markise genericDeviceType blind
attr markise homebridgeMapping clear\
CurrentPosition:pct\
TargetPosition:target,cmd=target,delay=2000\
PositionState:state,values=/-1/:1;;/1/:0;;/0/:2
attr markise icon fts_sunblind
attr markise readingList $DEVICETOPIC/position:.* pct\
$DEVICETOPIC/direction:.* state\
$DEVICETOPIC/target:.* target\
somfy/status:.* availability
attr markise setList stop:noArg $DEVICETOPIC/direction/set 0\
up:noArg $DEVICETOPIC/direction/set -1\
down:noArg $DEVICETOPIC/direction/set 1\
half:noArg $DEVICETOPIC/target/set 50\
target:slider,0,1,100,1 $DEVICETOPIC/target/set $EVTPART1
attr markise siriName Markise
attr markise webCmd up:down:half:stop:target

MogRuith

Wow...ich bin euch so dankbar, das ist ja toll!!! Ich habe einiges weggelassen, was ich nicht brauche und/oder verstehe (homebridgeMapping, Siri) und noch STATE per stateformat auf position gesetzt. Jetzt springt der devstateicon immer lustig von Zahl zu icon...aber dafür gibt es bestimmt auch eine Lösung.

Schön, dass ich jetzt den Signalduino in Rente schicken kann.
Tolle Hilfe in diesem Forum!!!
Dank&Gruß

passibe

Klar, gerne!

Wie meinst du, dass der devStateIcon springt? Vielleicht hilft das:attr <DEVICE> devStateIcon closed:fts_shutter_100 9\d.*:fts_shutter_10 8\d.*:fts_shutter_20 7\d.*:fts_shutter_30 6\d.*:fts_shutter_40 5\d.*:fts_shutter_50 4\d.*:fts_shutter_60 3\d.*:fts_shutter_70 2\d.*:fts_shutter_80 1\d.*:fts_shutter_90 open:fts_window_2w
Kannst das jeweilige Icon natürlich je nach Fensterart (Terrassentür, nur ein Fensterflügel, usw.) anpassen.

MogRuith

Läuft, genau das hatte ich gemeint...und auch gelesen. Danke!!!
LG