Lamellenstoren, Venetian Blinds: Lamellenwinkel einstellen, via Tastern steuern

Begonnen von tomix, 02 November 2021, 00:09:11

Vorheriges Thema - Nächstes Thema

tomix

attr MQTT2_shellyswitch25_E8DB84D315B0 attr Template tasmota _2ch_shutter_venetian_invert_0

Da stehe ich jetzt an:
Specify the unknown parameters for MQTT2_shellyswitch25_E8DB84D315B0/tasmota_2ch_shutter_venetian_invert_0:
Command topic prefix, without trailing / EINGABEFELD   
info topic prefix, without trailing / EINGABEFELD   
ack topic prefix, without trailing / EINGABEFELD

Was muss da rein?

Wieso heisst das Ding «...invert_0»? Soll das heissen close ist close und nicht open? Sprich das Ding ist «richtig» angeschlossen.

Gruss
tomix

Beta-User

Dein RAW sieht komisch aus. Du scheinst MQTT2_SERVER zu haben, aber mehrere Anläufe genommen zu haben und dann noch Tastendrücke zu versenden...

Schau dir mal "ignoreRegexp" an, damit die cmnd- und "discovery"-Zweige direkt am IO rausgefiltert werden.

Dann bitte das Device nochmal löschen und von autocreate anlegen lassen. Dann müßte eigentlich das attrTemplate durchlaufen, der LWT-Pfad ist ja da, der zur Ermittlung der Parameter eigentlich herangezogen werden sollte.

Ansonsten ist die Namensgebung (hoffentlich) angelehnt an die übrigen Tasmota-shutter-Templates => offen ist 100%, analog zu HomeMatic. ROLLO sieht das anders...
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

tomix

Zitat von: Beta-User am 14 November 2021, 08:32:13
Dein RAW sieht komisch aus. Du scheinst MQTT2_SERVER zu haben, aber mehrere Anläufe genommen zu haben und dann noch Tastendrücke zu versenden...
Shelly25 ohne A das war noch mit der 10.0.0 Firmware oder sogar noch von der Originalfirmware. Um die Tastendrücke habe ich mich noch gar nicht gekümmert. Kann an den meisten auch keine Taster anschliessen (falls ich welche anschliessen kann, sollten diese unabhängig sein).

Sieht nun so aus:

defmod MQTT2_DVES_D315B0 MQTT2_DEVICE DVES_D315B0
attr MQTT2_DVES_D315B0 readingList DVES_D315B0:tele/shelly25A_D315B0/LWT:.* LWT\
DVES_D315B0:cmnd/shelly25A_D315B0/POWER:.* POWER\
DVES_D315B0:tele/shelly25A_D315B0/INFO1:.* { json2nameValue($EVENT) }\
DVES_D315B0:tele/shelly25A_D315B0/INFO2:.* { json2nameValue($EVENT) }\
DVES_D315B0:tele/shelly25A_D315B0/INFO3:.* { json2nameValue($EVENT) }\
DVES_D315B0:stat/shelly25A_D315B0/RESULT:.* { json2nameValue($EVENT) }\
DVES_D315B0:stat/shelly25A_D315B0/POWER1:.* POWER1\
DVES_D315B0:stat/shelly25A_D315B0/POWER2:.* POWER2\
DVES_D315B0:tele/shelly25A_D315B0/STATE:.* { json2nameValue($EVENT) }\
DVES_D315B0:tele/shelly25A_D315B0/SENSOR:.* { json2nameValue($EVENT) }\
DVES_D315B0:tasmota/discovery/E8DB84D315B0/config:.* { json2nameValue($EVENT) }\
DVES_D315B0:tasmota/discovery/E8DB84D315B0/sensors:.* { json2nameValue($EVENT) }
attr MQTT2_DVES_D315B0 room MQTT2_DEVICE

setstate MQTT2_DVES_D315B0 2021-11-14 21:31:56 ANALOG_Temperature 16.5
setstate MQTT2_DVES_D315B0 2021-11-14 21:31:56 ENERGY_ApparentPower_1 0
setstate MQTT2_DVES_D315B0 2021-11-14 21:31:56 ENERGY_ApparentPower_2 0
setstate MQTT2_DVES_D315B0 2021-11-14 21:31:56 ENERGY_Current_1 0.000
setstate MQTT2_DVES_D315B0 2021-11-14 21:31:56 ENERGY_Current_2 0.000
setstate MQTT2_DVES_D315B0 2021-11-14 21:31:56 ENERGY_Factor_1 0.00
setstate MQTT2_DVES_D315B0 2021-11-14 21:31:56 ENERGY_Factor_2 0.00
...


Zitat von: Beta-User am 14 November 2021, 08:32:13
Ansonsten ist die Namensgebung (hoffentlich) angelehnt an die übrigen Tasmota-shutter-Templates => offen ist 100%, analog zu HomeMatic. ROLLO sieht das anders...
100 % ist offen.

Template nun angewendet, Hinweis bzgl. set x_configuration erhalten. Sieht nun so aus:

defmod MQTT2_DVES_D315B0 MQTT2_DEVICE DVES_D315B0
attr MQTT2_DVES_D315B0 cmdIcon open:fts_shutter_up close:fts_shutter_down stop:fts_shutter_manual half:fts_shutter_50
attr MQTT2_DVES_D315B0 comment After applying the template set "ShutterOpenDuration1", "ShutterCloseDuration1" and "shuttertiltconfig1" first.\
Use the "set x_configuration" Option. Example: "set x_configuration ShutterOpenDuration1 35"\
Shutter specific commands available: ShutterOpenDuration1, ShutterCloseDuration1, ShutterRelay1, ShutterSetHalfway1, ShutterSetClose1, ShutterInvert1, ShutterMotordelay1, ShutterCalibration1;; you may use this for general setOptions in tasmota also.\
commands may need restart to take effect.\
For calibration, use of more than one shutter device and further information on the available commands see <a href="https://tasmota.github.io/docs/Blinds-and-Shutters/</a>.
attr MQTT2_DVES_D315B0 devStateIcon opening:fts_shutter_up@red closing:fts_shutter_down@red Online:10px-kreis-gruen Offline:10px-kreis-rot 100:fts_shutter_100 0:fts_shutter_10 9\d.*:fts_shutter_90 8\d.*:fts_shutter_80 7\d.*:fts_shutter_70 6\d.*:fts_shutter_60 5\d.*:fts_shutter_50 4\d.*:fts_shutter_40 3\d.*:fts_shutter_30 2\d.*:fts_shutter_20 1\d.*:fts_shutter_10 \b\d\b.*:fts_shutter_10 set_.*:fts_shutter_updown
attr MQTT2_DVES_D315B0 eventMap open:opens close:closes
attr MQTT2_DVES_D315B0 icon fts_shutter_updown
attr MQTT2_DVES_D315B0 model tasmota_2ch_shutter_venetian_invert_0
attr MQTT2_DVES_D315B0 readingList tele/shelly25A_D315B0/LWT:.* LWT\
   stat/shelly25A_D315B0/RESULT:.* { json2nameValue($EVENT) }\
   stat/shelly25A_D315B0/POWER1:.* POWER1\
   stat/shelly25A_D315B0/POWER1:on {{'state' => 'opening'}}\
   stat/shelly25A_D315B0/POWER2:.* POWER2\
   stat/shelly25A_D315B0/POWER2:on {{'state' => 'closing'}}\
   stat/shelly25A_D315B0/SHUTTER1:.* state\
   stat/shelly25A_D315B0/SHUTTER1:.* pct\
   stat/shelly25A_D315B0/SHUTTER2:.* stateSlat\
   stat/shelly25A_D315B0/SHUTTER2:.* pctSlat\
   tele/shelly25A_D315B0/RESULT:.* { json2nameValue($EVENT) }\
   tele/shelly25A_D315B0/STATE:.* { json2nameValue($EVENT) }\
   tele/shelly25A_D315B0/SENSOR:.* { json2nameValue($EVENT) }\
   tele/shelly25A_D315B0/INFO.:.* { $EVENT =~ m,^..Info[1-3]..(.+).$, ?  json2nameValue($1,'',$JSONMAP) : json2nameValue($EVENT,'',$JSONMAP) }\
   tele/shelly25A_D315B0/UPTIME:.* { json2nameValue($EVENT) }\
DVES_D315B0:cmnd/shelly25A_D315B0/POWER:.* POWER\
DVES_D315B0:tasmota/discovery/E8DB84D315B0/config:.* { json2nameValue($EVENT) }\
DVES_D315B0:tasmota/discovery/E8DB84D315B0/sensors:.* { json2nameValue($EVENT) }
attr MQTT2_DVES_D315B0 room MQTT2_DEVICE
attr MQTT2_DVES_D315B0 setList close:noArg cmnd/shelly25A_D315B0/ShutterClose1\
   open:noArg cmnd/shelly25A_D315B0/ShutterOpen1\
   half:noArg cmnd/shelly25A_D315B0/ShutterPosition1 50\
   pct:slider,0,1,100 cmnd/shelly25A_D315B0/ShutterPosition1 $EVTPART1\
   stop:noArg cmnd/shelly25A_D315B0/ShutterStop1\
   closeSlat:noArg cmnd/shelly25A_D315B0/ShutterClose2\
   openSlat:noArg cmnd/shelly25A_D315B0/ShutterOpen2\
   halfSlat:noArg cmnd/shelly25A_D315B0/ShutterPosition2 50\
   pctSlat:slider,0,1,100 cmnd/shelly25A_D315B0/ShutterPosition2 $EVTPART1\
   stopSlat:noArg cmnd/shelly25A_D315B0/ShutterStop2\
   resetClose:noArg cmnd/shelly25A_D315B0/ShutterSetClose1\
   resetCloseSlat:noArg cmnd/shelly25A_D315B0/ShutterSetClose2
attr MQTT2_DVES_D315B0 setStateList open close half stop pct
attr MQTT2_DVES_D315B0 stateFormat <a href="http://IPAddress" target="_blank">\
LWT\
</a>\
state
attr MQTT2_DVES_D315B0 webCmd :open:close:half:stop:pct

setstate MQTT2_DVES_D315B0 <a href="http://192.168.178.19" target="_blank">\
Online\
</a>\
75
setstate MQTT2_DVES_D315B0 2021-11-14 21:35:21 ANALOG_Temperature 21.5
setstate MQTT2_DVES_D315B0 2021-11-14 21:38:48 Command Error
setstate MQTT2_DVES_D315B0 2021-11-14 21:35:21 ENERGY_ApparentPower_1 0
setstate MQTT2_DVES_D315B0 2021-11-14 21:35:21 ENERGY_ApparentPower_2 0
setstate MQTT2_DVES_D315B0 2021-11-14 21:35:21 ENERGY_Current_1 0.000
setstate MQTT2_DVES_D315B0 2021-11-14 21:35:21 ENERGY_Current_2 0.000
setstate MQTT2_DVES_D315B0 2021-11-14 21:35:21 ENERGY_Factor_1 0.00
setstate MQTT2_DVES_D315B0 2021-11-14 21:35:21 ENERGY_Factor_2 0.00
setstate MQTT2_DVES_D315B0 2021-11-14 21:35:21 ENERGY_Period_1 0
setstate MQTT2_DVES_D315B0 2021-11-14 21:35:21 ENERGY_Period_2 0
setstate MQTT2_DVES_D315B0 2021-11-14 21:35:21 ENERGY_Power_1 0
setstate MQTT2_DVES_D315B0 2021-11-14 21:35:21 ENERGY_Power_2 0
setstate MQTT2_DVES_D315B0 2021-11-14 21:35:21 ENERGY_ReactivePower_1 0
setstate MQTT2_DVES_D315B0 2021-11-14 21:35:21 ENERGY_ReactivePower_2 0
setstate MQTT2_DVES_D315B0 2021-11-14 21:35:21 ENERGY_Today 0.000
setstate MQTT2_DVES_D315B0 2021-11-14 21:35:21 ENERGY_Total 0.000
setstate MQTT2_DVES_D315B0 2021-11-14 21:35:21 ENERGY_TotalStartTime 2021-11-10T00:56:05
setstate MQTT2_DVES_D315B0 2021-11-14 21:35:21 ENERGY_Voltage 0
setstate MQTT2_DVES_D315B0 2021-11-14 21:35:21 ENERGY_Yesterday 0.000
setstate MQTT2_DVES_D315B0 2021-11-14 21:35:17 FallbackTopic cmnd/DVES_D315B0_fb/
setstate MQTT2_DVES_D315B0 2021-11-14 21:35:17 GroupTopic cmnd/tasmotas/
setstate MQTT2_DVES_D315B0 2021-11-14 21:34:59 Groups 1,2
setstate MQTT2_DVES_D315B0 2021-11-14 21:35:21 Heap 29
setstate MQTT2_DVES_D315B0 2021-11-14 21:35:17 Hostname shelly25A-D315B0-5552
setstate MQTT2_DVES_D315B0 2021-11-14 21:31:52 IODev MQTT2_FHEM_Server
setstate MQTT2_DVES_D315B0 2021-11-14 21:35:17 IPAddress 192.168.178.19
setstate MQTT2_DVES_D315B0 2021-11-14 21:34:59 Interlock on
setstate MQTT2_DVES_D315B0 2021-11-14 21:35:17 LWT Online
setstate MQTT2_DVES_D315B0 2021-11-14 21:34:59 LedState 2
setstate MQTT2_DVES_D315B0 2021-11-14 21:35:21 LoadAvg 19
setstate MQTT2_DVES_D315B0 2021-11-14 21:35:17 Module Shelly 2.5
setstate MQTT2_DVES_D315B0 2021-11-14 21:35:21 MqttCount 1
setstate MQTT2_DVES_D315B0 2021-11-14 21:35:17 POWER
setstate MQTT2_DVES_D315B0 2021-11-14 21:37:55 POWER1 off
setstate MQTT2_DVES_D315B0 2021-11-14 21:37:53 POWER2 off
setstate MQTT2_DVES_D315B0 2021-11-14 21:35:00 PowerOnState 0
setstate MQTT2_DVES_D315B0 2021-11-14 21:35:01 PulseTime1_Remaining 0
setstate MQTT2_DVES_D315B0 2021-11-14 21:35:01 PulseTime1_Set 0
setstate MQTT2_DVES_D315B0 2021-11-14 21:35:01 PulseTime2_Remaining 0
setstate MQTT2_DVES_D315B0 2021-11-14 21:35:01 PulseTime2_Set 0
setstate MQTT2_DVES_D315B0 2021-11-14 21:34:58 Restart Restarting
setstate MQTT2_DVES_D315B0 2021-11-14 21:35:17 RestartReason Software/System restart
setstate MQTT2_DVES_D315B0 2021-11-14 21:35:01 SaveData on
setstate MQTT2_DVES_D315B0 2021-11-14 21:34:58 SetOption26 on
setstate MQTT2_DVES_D315B0 2021-11-14 21:35:00 SetOption80 on
setstate MQTT2_DVES_D315B0 2021-11-14 21:35:00 SetOption81 on
setstate MQTT2_DVES_D315B0 2021-11-14 21:37:55 Shutter1_Direction 0
setstate MQTT2_DVES_D315B0 2021-11-14 21:37:55 Shutter1_Position 75
setstate MQTT2_DVES_D315B0 2021-11-14 21:37:55 Shutter1_Target 75
setstate MQTT2_DVES_D315B0 2021-11-14 21:37:55 Shutter1_Tilt 90
setstate MQTT2_DVES_D315B0 2021-11-14 21:37:20 ShutterOpen1 100
setstate MQTT2_DVES_D315B0 2021-11-14 21:37:46 ShutterPosition1 61
setstate MQTT2_DVES_D315B0 2021-11-14 21:37:54 ShutterStop1 75
setstate MQTT2_DVES_D315B0 2021-11-14 21:35:21 Sleep 50
setstate MQTT2_DVES_D315B0 2021-11-14 21:35:21 SleepMode Dynamic
setstate MQTT2_DVES_D315B0 2021-11-14 21:34:58 StateText1 off
setstate MQTT2_DVES_D315B0 2021-11-14 21:34:58 StateText2 on
setstate MQTT2_DVES_D315B0 2021-11-14 21:34:58 StateText3 toggle
setstate MQTT2_DVES_D315B0 2021-11-14 21:34:58 StateText4 hold
setstate MQTT2_DVES_D315B0 2021-11-14 21:35:21 Switch1 off
setstate MQTT2_DVES_D315B0 2021-11-14 21:35:21 Switch2 off
setstate MQTT2_DVES_D315B0 2021-11-14 21:35:00 SwitchMode1 3
setstate MQTT2_DVES_D315B0 2021-11-14 21:35:01 SwitchMode2 3
...


Hoch runter ist kein Problem. Der Tilt war noch falsch:

attr MQTT2_DVES_D315B0 setList close:noArg cmnd/shelly25A_D315B0/ShutterClose1\
   open:noArg cmnd/shelly25A_D315B0/ShutterOpen1\
   half:noArg cmnd/shelly25A_D315B0/ShutterPosition1 50\
   pct:slider,0,1,100 cmnd/shelly25A_D315B0/ShutterPosition1 $EVTPART1\
   stop:noArg cmnd/shelly25A_D315B0/ShutterStop1\
   closeSlat:noArg cmnd/shelly25A_D315B0/ShutterTilt1 Close\
   openSlat:noArg cmnd/shelly25A_D315B0/ShutterTilt1 Open\
   halfSlat:noArg cmnd/shelly25A_D315B0/ShutterTilt1 45\
   pctSlat:slider,0,1,100 cmnd/shelly25A_D315B0/ShutterTilt1 $EVTPART1\
   stopSlat:noArg cmnd/shelly25A_D315B0/ShutterTilt1 Stop\
   resetClose:noArg cmnd/shelly25A_D315B0/ShutterSetClose1\
   resetCloseSlat:noArg cmnd/shelly25A_D315B0/ShutterSetTilt1 Close

Nun geht auf und zu beim Tilt. Winkel einstellen passt noch nicht. halfSlat für zu auf, zu, auf, zu,...
Soviel ich weiss muss der Winkel angegeben werden, in meinem Fall irgendetwas zwischen 0 und 90.

Das hier geht auf dem WebUI:

21:50:27.609 MQT: stat/shelly25A_D315B0/RESULT = {"Shutter1":{"Position":88,"Direction":0,"Target":88,"Tilt":0}}
21:50:37.052 CMD: shuttertilt1 45
21:50:37.063 MQT: stat/shelly25A_D315B0/RESULT = {"POWER1":"on"}
21:50:37.067 MQT: stat/shelly25A_D315B0/POWER1 = on
21:50:37.072 MQT: stat/shelly25A_D315B0/RESULT = {"ShutterTilt1":88}
21:50:37.098 MQT: stat/shelly25A_D315B0/RESULT = {"Shutter1":{"Position":88,"Direction":1,"Target":88,"Tilt":0}}
21:50:37.518 MQT: stat/shelly25A_D315B0/RESULT = {"Shutter1":{"Position":88,"Direction":1,"Target":88,"Tilt":30}}
21:50:37.717 MQT: stat/shelly25A_D315B0/RESULT = {"POWER1":"off"}
21:50:37.722 MQT: stat/shelly25A_D315B0/POWER1 = off
21:50:38.232 MQT: stat/shelly25A_D315B0/SHUTTER1 = 88
21:50:38.236 MQT: stat/shelly25A_D315B0/RESULT = {"Shutter1":{"Position":88,"Direction":0,"Target":88,"Tilt":45}}
21:50:44.125 CMD: shuttertilt1 20
21:50:44.135 MQT: stat/shelly25A_D315B0/RESULT = {"POWER2":"on"}
21:50:44.140 MQT: stat/shelly25A_D315B0/POWER2 = on
21:50:44.145 MQT: stat/shelly25A_D315B0/RESULT = {"ShutterTilt1":88}
21:50:44.166 MQT: stat/shelly25A_D315B0/RESULT = {"Shutter1":{"Position":88,"Direction":-1,"Target":88,"Tilt":45}}
21:50:44.479 MQT: stat/shelly25A_D315B0/RESULT = {"Shutter1":{"Position":88,"Direction":-1,"Target":88,"Tilt":23}}
21:50:44.529 MQT: stat/shelly25A_D315B0/RESULT = {"POWER2":"off"}
21:50:44.532 MQT: stat/shelly25A_D315B0/POWER2 = off
21:50:45.042 MQT: stat/shelly25A_D315B0/SHUTTER1 = 88
21:50:45.048 MQT: stat/shelly25A_D315B0/RESULT = {"Shutter1":{"Position":88,"Direction":0,"Target":88,"Tilt":19}}
21:50:50.884 CMD: shuttertilt1 80
21:50:50.894 MQT: stat/shelly25A_D315B0/RESULT = {"POWER1":"on"}
21:50:50.897 MQT: stat/shelly25A_D315B0/POWER1 = on
21:50:50.901 MQT: stat/shelly25A_D315B0/RESULT = {"ShutterTilt1":88}
21:50:50.928 MQT: stat/shelly25A_D315B0/RESULT = {"Shutter1":{"Position":88,"Direction":1,"Target":88,"Tilt":19}}
21:50:51.492 MQT: stat/shelly25A_D315B0/RESULT = {"Shutter1":{"Position":88,"Direction":1,"Target":88,"Tilt":60}}
21:50:51.791 MQT: stat/shelly25A_D315B0/RESULT = {"POWER1":"off"}
21:50:51.796 MQT: stat/shelly25A_D315B0/POWER1 = off
21:50:52.302 MQT: stat/shelly25A_D315B0/SHUTTER1 = 88
21:50:52.307 MQT: stat/shelly25A_D315B0/RESULT = {"Shutter1":{"Position":88,"Direction":0,"Target":88,"Tilt":82}}
21:50:58.139 CMD: shuttertilt1 70
21:50:58.150 MQT: stat/shelly25A_D315B0/RESULT = {"POWER2":"on"}
21:50:58.155 MQT: stat/shelly25A_D315B0/POWER2 = on
21:50:58.159 MQT: stat/shelly25A_D315B0/RESULT = {"ShutterTilt1":88}
21:50:58.184 MQT: stat/shelly25A_D315B0/RESULT = {"Shutter1":{"Position":88,"Direction":-1,"Target":88,"Tilt":82}}
21:50:58.395 MQT: stat/shelly25A_D315B0/RESULT = {"POWER2":"off"}
21:50:58.398 MQT: stat/shelly25A_D315B0/POWER2 = off
21:50:58.907 MQT: stat/shelly25A_D315B0/SHUTTER1 = 88
21:50:58.911 MQT: stat/shelly25A_D315B0/RESULT = {"Shutter1":{"Position":88,"Direction":0,"Target":88,"Tilt":67}}


Gruss
tomix

Beta-User

ZitatNun geht auf und zu beim Tilt.
Danke für die Rückmeldung und die Info, welcher Topic da paßt.
Zitat
Winkel einstellen passt noch nicht. halfSlat für zu auf, zu, auf, zu,...
Soviel ich weiss muss der Winkel angegeben werden, in meinem Fall irgendetwas zwischen 0 und 90.
Bin nicht ganz sicher, was ich aus der Info ableiten soll: Meine ZWave-Geräte erlauben "dim"-Werte zwischen 0 und 99, wobei "99" eben "ganz nach oben gekippt" bedeutet. Als Winkelangabe hätte ich jetzt angenommen, dass "90" soviel bedeutet wie "die Lamellen stehen gerade", und 180 (oder etwas weniger) die Lamellen sind ganz nach oben gekippt.
Kannst du bitte klarstellen, welcher Werte-Bereich effektiv verarbeitet wird :) .

Ansonsten sieht das so aus, als sollte man eher die JSON-Payloads verarbeiten, und dafür braucht man zweckmäßigerweise jsonMap.
Ich werde bei Gelegenheit mal diesen weiteren Versuch hochladen (Kopf bis setList unverändert):
attr DEVICE setList \
   close:noArg CMNDTOPIC/ShutterClose1\
   open:noArg CMNDTOPIC/ShutterOpen1\
   half:noArg CMNDTOPIC/ShutterPosition1 50\
   pct:slider,0,1,100 CMNDTOPIC/ShutterPosition1 $EVTPART1\
   stop:noArg CMNDTOPIC/ShutterStop1\
   closeSlat:noArg CMNDTOPIC/ShutterTilt1 Close\
   openSlat:noArg CMNDTOPIC/ShutterTilt1 Open\
   halfSlat:noArg CMNDTOPIC/ShutterTilt1 50\
   pctSlat:slider,0,1,90 CMNDTOPIC/ShutterTilt1 $EVTPART1\
   stopSlat:noArg CMNDTOPIC/ShutterTilt1 Stop\
   resetClose:noArg CMNDTOPIC/ShutterSetClose1\
   x_configuration CMNDTOPIC/$EVTPART1 $EVTPART2
attr DEVICE readingList \
   TELETOPIC/LWT:.* LWT\
   TELETOPIC/STATE:.* { json2nameValue($EVENT,'',$JSONMAP) }\
   TELETOPIC/SENSOR:.* { json2nameValue($EVENT,'',$JSONMAP) }\
   TELETOPIC/INFO.:.* { $EVENT =~ m,^..Info[1-3]..(.+).$, ?  json2nameValue($1,'',$JSONMAP) : json2nameValue($EVENT,'',$JSONMAP) }\
   STATTOPIC/RESULT:.* { json2nameValue($EVENT,'',$JSONMAP) }\
   STATTOPIC/POWER1:.* {{'state' => 'opening'} if $EVENT eq 'on'}\
   STATTOPIC/POWER2:.* {{'state' => 'closing'} if $EVENT eq 'on'}
attr DEVICE devStateIcon opening:fts_shutter_up@red closing:fts_shutter_down@red Online:10px-kreis-gruen Offline:10px-kreis-rot 100:fts_shutter_100 0:fts_shutter_10 9\d.*:fts_shutter_90 8\d.*:fts_shutter_80 7\d.*:fts_shutter_70 6\d.*:fts_shutter_60 5\d.*:fts_shutter_50 4\d.*:fts_shutter_40 3\d.*:fts_shutter_30 2\d.*:fts_shutter_20 1\d.*:fts_shutter_10 \b\d\b.*:fts_shutter_10 set_.*:fts_shutter_updown
attr DEVICE cmdIcon open:fts_shutter_up close:fts_shutter_down stop:fts_shutter_manual half:fts_shutter_50
attr DEVICE webCmd :open:close:half:stop:pct
attr DEVICE eventMap open:opens close:closes
attr DEVICE jsonMap POWER1:0 POWER2:0 Shutter1_Tilt:pctSlat Shutter1_Target:pct ANALOG_Temperature:temperature
attr DEVICE stateFormat <a href="http://IPAddress" target="_blank">\
LWT\
</a>\
state
deletereading -q DEVICE (?!associatedWith|IODev).*
attr DEVICE setStateList open close half stop pct
attr DEVICE comment After applying the template set "ShutterOpenDuration1", "ShutterCloseDuration1" and "shuttertiltconfig1" first.\
Use the "set x_configuration" Option. Example: "set x_configuration ShutterOpenDuration1 35"\
Shutter specific commands available: ShutterOpenDuration1, ShutterCloseDuration1, ShutterRelay1, ShutterSetHalfway1, ShutterSetClose1, ShutterInvert1, ShutterMotordelay1, ShutterCalibration1; you may use this for general setOptions in tasmota also.\
commands may need restart to take effect.\
For calibration, use of more than one shutter device and further information on the available commands see <a href="https://tasmota.github.io/docs/Blinds-and-Shutters/</a>.
farewell:template has been applied successfully. Now it's recommended to set shutter's open and close duration and shuttertiltconfig1, see short instruction in comment attribute or the <br><a href="https://tasmota.github.io/docs/Blinds-and-Shutters/">Tasmota wiki</a>.
attr DEVICE model tasmota_2ch_shutter_venetian_invert_0
setreading DEVICE attrTemplateVersion 20211115
option:{ CALLSPEECHRECOGN }
set DEVICE attrTemplate speechcontrol_type_blind


Dann sind da im Ausgangs-Listing einige Werte, die in der Form keinen Sinn machen (die ENERGY-Werte). Oder kommt da jetzt was sinniges?

Wegen dieser drei Zweige würde ich nochmal anregen, "ignoreRegexp" am Server zu setzen:
DVES_D315B0:cmnd/shelly25A_D315B0/POWER:.* POWER\
[...]
DVES_D315B0:tasmota/discovery/E8DB84D315B0/config:.* { json2nameValue($EVENT) }\
DVES_D315B0:tasmota/discovery/E8DB84D315B0/sensors:.* { json2nameValue($EVENT) }
Das kann man zwar auch via attrTemplate lösen, aber es handelt sich m.E. um ein generisches Problem, das an der richtigen Stelle gelöst gehört.
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

tomix

Zitat von: Beta-User am 15 November 2021, 10:23:16
Dann sind da im Ausgangs-Listing einige Werte, die in der Form keinen Sinn machen (die ENERGY-Werte). Oder kommt da jetzt was sinniges?
Nach dem Logfile scheint da durchaus was passendes zu kommen. Sind wohl diese Werte:
Temperature   23.5 °C
Voltage   240 V
Frequency   50 Hz
Current   0.587 / 0.000 A
Power   140 / 0 W
Apparent Power   142 / 0 VA
Reactive Power   25 / 0 VAr
Power Factor   0.98 / 0.00
Energy Today   0.001 kWh
Energy Yesterday   0.000 kWh
Energy Total   0.001 kWh

Da kam zumindest mal was passendes. Aktuell ein sekundäres Problem.

Bzgl. den Befehlen blick ich noch nicht durch. Führe ich ein ShutterPosition1 Close aus und dann während dem runterlaufen ein ShutterStop1 fährt er beim absetzen des Befehls ShutterStop1 wieder hoch -> ?
Befehle von hier:
https://tasmota.github.io/docs/Commands/#shutters

Die Endposition kann dann durchaus überfahren werden.

23:17:24.389 MQT: stat/shelly25A_D315B0/RESULT = {"POWER1":"on"}
23:17:24.392 MQT: stat/shelly25A_D315B0/POWER1 = on
23:17:24.397 MQT: stat/shelly25A_D315B0/RESULT = {"ShutterStop1":100}
23:17:24.421 MQT: stat/shelly25A_D315B0/RESULT = {"Shutter1":{"Position":100,"Direction":1,"Target":100,"Tilt":3}}
23:17:24.429 MQT: stat/shelly25A_D315B0/RESULT = {"Shutter1":{"Position":100,"Direction":1,"Target":100,"Tilt":3}}
23:17:25.295 MQT: stat/shelly25A_D315B0/RESULT = {"Shutter1":{"Position":100,"Direction":1,"Target":100,"Tilt":66}}
23:17:26.298 MQT: stat/shelly25A_D315B0/RESULT = {"Shutter1":{"Position":101,"Direction":1,"Target":100,"Tilt":89}}
23:17:26.946 CMD: shutterstop1
23:17:26.954 MQT: stat/shelly25A_D315B0/RESULT = {"ShutterStop":"Done"}
23:17:27.299 MQT: stat/shelly25A_D315B0/RESULT = {"Shutter1":{"Position":103,"Direction":1,"Target":103,"Tilt":89}}
23:17:28.301 MQT: stat/shelly25A_D315B0/RESULT = {"Shutter1":{"Position":105,"Direction":1,"Target":103,"Tilt":89}}
23:17:29.303 MQT: stat/shelly25A_D315B0/RESULT = {"Shutter1":{"Position":107,"Direction":1,"Target":103,"Tilt":89}}
23:17:30.254 MQT: stat/shelly25A_D315B0/RESULT = {"Shutter1":{"Position":109,"Direction":1,"Target":103,"Tilt":89}}
23:17:31.257 MQT: stat/shelly25A_D315B0/RESULT = {"Shutter1":{"Position":111,"Direction":1,"Target":103,"Tilt":89}}
23:17:31.959 CMD: shutterpositionstop1
23:17:31.967 MQT: stat/shelly25A_D315B0/RESULT = {"Command":"Unknown"}
23:17:32.265 MQT: stat/shelly25A_D315B0/RESULT = {"Shutter1":{"Position":113,"Direction":1,"Target":103,"Tilt":89}}
23:17:33.266 MQT: stat/shelly25A_D315B0/RESULT = {"Shutter1":{"Position":115,"Direction":1,"Target":103,"Tilt":89}}
23:17:34.268 MQT: stat/shelly25A_D315B0/RESULT = {"Shutter1":{"Position":117,"Direction":1,"Target":103,"Tilt":89}}
23:17:35.269 MQT: stat/shelly25A_D315B0/RESULT = {"Shutter1":{"Position":119,"Direction":1,"Target":103,"Tilt":89}}
23:17:36.270 CMD: shutterposition1 stop
23:17:36.278 MQT: stat/shelly25A_D315B0/RESULT = {"ShutterPosition":"Done"}
23:17:36.304 MQT: stat/shelly25A_D315B0/RESULT = {"Shutter1":{"Position":121,"Direction":1,"Target":121,"Tilt":89}}
23:17:37.271 MQT: stat/shelly25A_D315B0/RESULT = {"Shutter1":{"Position":123,"Direction":1,"Target":121,"Tilt":89}}
23:17:38.270 MQT: stat/shelly25A_D315B0/RESULT = {"Shutter1":{"Position":125,"Direction":1,"Target":121,"Tilt":89}}
23:17:39.274 MQT: stat/shelly25A_D315B0/RESULT = {"Shutter1":{"Position":127,"Direction":1,"Target":121,"Tilt":89}}
23:17:40.276 MQT: stat/shelly25A_D315B0/RESULT = {"Shutter1":{"Position":129,"Direction":1,"Target":121,"Tilt":89}}
23:17:41.279 MQT: stat/shelly25A_D315B0/RESULT = {"Shutter1":{"Position":131,"Direction":1,"Target":121,"Tilt":89}}
23:17:42.282 MQT: stat/shelly25A_D315B0/RESULT = {"Shutter1":{"Position":133,"Direction":1,"Target":121,"Tilt":89}}
23:17:43.287 MQT: stat/shelly25A_D315B0/RESULT = {"Shutter1":{"Position":135,"Direction":1,"Target":121,"Tilt":89}}
23:17:44.288 MQT: stat/shelly25A_D315B0/RESULT = {"Shutter1":{"Position":137,"Direction":1,"Target":121,"Tilt":89}}
23:17:45.289 MQT: stat/shelly25A_D315B0/RESULT = {"Shutter1":{"Position":139,"Direction":1,"Target":121,"Tilt":89}}
23:17:46.292 MQT: stat/shelly25A_D315B0/RESULT = {"Shutter1":{"Position":141,"Direction":1,"Target":121,"Tilt":89}}
23:17:47.294 MQT: stat/shelly25A_D315B0/RESULT = {"Shutter1":{"Position":143,"Direction":1,"Target":121,"Tilt":89}}
23:17:48.293 MQT: stat/shelly25A_D315B0/RESULT = {"Shutter1":{"Position":145,"Direction":1,"Target":121,"Tilt":89}}
23:17:49.270 MQT: stat/shelly25A_D315B0/RESULT = {"Shutter1":{"Position":147,"Direction":1,"Target":121,"Tilt":89}}
23:17:50.270 MQT: stat/shelly25A_D315B0/RESULT = {"Shutter1":{"Position":149,"Direction":1,"Target":121,"Tilt":89}}
23:17:51.272 MQT: stat/shelly25A_D315B0/RESULT = {"Shutter1":{"Position":151,"Direction":1,"Target":121,"Tilt":89}}
23:17:52.338 MQT: stat/shelly25A_D315B0/RESULT = {"Shutter1":{"Position":153,"Direction":1,"Target":121,"Tilt":89}}
23:17:53.266 MQT: stat/shelly25A_D315B0/RESULT = {"Shutter1":{"Position":155,"Direction":1,"Target":121,"Tilt":89}}
23:17:54.268 MQT: stat/shelly25A_D315B0/RESULT = {"Shutter1":{"Position":157,"Direction":1,"Target":121,"Tilt":89}}
23:17:55.270 MQT: stat/shelly25A_D315B0/RESULT = {"Shutter1":{"Position":159,"Direction":1,"Target":121,"Tilt":89}}
23:17:56.272 MQT: stat/shelly25A_D315B0/RESULT = {"Shutter1":{"Position":161,"Direction":1,"Target":121,"Tilt":89}}
23:17:57.276 MQT: stat/shelly25A_D315B0/RESULT = {"Shutter1":{"Position":163,"Direction":1,"Target":121,"Tilt":89}}
23:17:58.279 MQT: stat/shelly25A_D315B0/RESULT = {"Shutter1":{"Position":165,"Direction":1,"Target":121,"Tilt":89}}
23:17:59.282 MQT: stat/shelly25A_D315B0/RESULT = {"Shutter1":{"Position":167,"Direction":1,"Target":121,"Tilt":89}}
23:18:00.286 MQT: stat/shelly25A_D315B0/RESULT = {"Shutter1":{"Position":169,"Direction":1,"Target":121,"Tilt":89}}
23:18:01.289 MQT: stat/shelly25A_D315B0/RESULT = {"Shutter1":{"Position":171,"Direction":1,"Target":121,"Tilt":89}}
23:18:02.289 MQT: stat/shelly25A_D315B0/RESULT = {"Shutter1":{"Position":173,"Direction":1,"Target":121,"Tilt":89}}
23:18:03.290 MQT: stat/shelly25A_D315B0/RESULT = {"Shutter1":{"Position":175,"Direction":1,"Target":121,"Tilt":89}}
23:18:04.291 MQT: stat/shelly25A_D315B0/RESULT = {"Shutter1":{"Position":177,"Direction":1,"Target":121,"Tilt":89}}
23:18:05.292 MQT: stat/shelly25A_D315B0/RESULT = {"Shutter1":{"Position":179,"Direction":1,"Target":121,"Tilt":89}}
23:18:06.292 MQT: stat/shelly25A_D315B0/RESULT = {"Shutter1":{"Position":181,"Direction":1,"Target":121,"Tilt":89}}


und dann läuft er Amok. Relais 1 bleibt auf ON, Position läuft hoch (bis 255?) und beginnt dann wieder bei 0. Ein ShutterPosition1 Close kann dann durchaus dazu führen, dass der Storen runterläuft. Da stimmt wohl noch einiges nicht in der Tasmota Firmware.

ShutterTiltConfig<x>: <min> <max> <Tiltduration> <openposition> <closeposition> (default = 0 0 0 0 0)
Configure the tilt for venetian blinds. Min/man values must be in the range of -90° to 90°. Open and Close position must be part of the defined range between min and max. Tiltduration defines the time the shutter needs to change the tilt from min to max value. This time has to been multiplied by 20. E.g. 1.2sec = 1.2 x 20 = 24. Example defines tilt on shutter 2: shuttertiltconfig2 -90 90 24 0 90

ShutterTilt<x>: Set the tilt position <value> (between min and max), OPEN, CLOSE. Definition please see shuttertiltconfig


Ich habe dies gesetzt:
TiltConfig 1, min: 0, max 90, runtime 24, close_pos: 90, open_pos: 0
stat/shelly25A_D315B0/RESULT = {"ShutterTiltConfig1":"SHT:0 0 90 24 90 0"}

Wieso die MQTT Ausgabe 6 Werte hat für den Config-Ausgabe verstehe ich nicht.

Nach einem normalen Hochlaufen gibt shutterposition1 folgendes aus:
MQT: stat/shelly25A_D315B0/RESULT = {"Shutter1":{"Position":100,"Direction":0,"Target":100,"Tilt":0}}
MQT: stat/shelly25A_D315B0/RESULT = {"ShutterPosition1":100}


Lasse ich den Storen auf 90% runter:
shutterposition1 90
23:38:16.689 MQT: stat/shelly25A_D315B0/RESULT = {"POWER2":"on"}
23:38:16.692 MQT: stat/shelly25A_D315B0/POWER2 = on
23:38:16.695 MQT: stat/shelly25A_D315B0/RESULT = {"ShutterPosition1":90}
23:38:16.734 MQT: stat/shelly25A_D315B0/RESULT = {"Shutter1":{"Position":100,"Direction":-1,"Target":90,"Tilt":0}}
23:38:17.150 MQT: stat/shelly25A_D315B0/RESULT = {"Shutter1":{"Position":99,"Direction":-1,"Target":90,"Tilt":0}}
23:38:18.147 MQT: stat/shelly25A_D315B0/RESULT = {"Shutter1":{"Position":97,"Direction":-1,"Target":90,"Tilt":0}}
23:38:19.168 MQT: stat/shelly25A_D315B0/RESULT = {"Shutter1":{"Position":95,"Direction":-1,"Target":90,"Tilt":0}}
23:38:20.147 MQT: stat/shelly25A_D315B0/RESULT = {"Shutter1":{"Position":93,"Direction":-1,"Target":90,"Tilt":0}}
23:38:21.154 MQT: stat/shelly25A_D315B0/RESULT = {"Shutter1":{"Position":91,"Direction":-1,"Target":90,"Tilt":0}}
23:38:21.803 MQT: stat/shelly25A_D315B0/RESULT = {"POWER2":"off"}
23:38:21.806 MQT: stat/shelly25A_D315B0/POWER2 = off
23:38:22.312 MQT: stat/shelly25A_D315B0/SHUTTER1 = 90
23:38:22.315 MQT: stat/shelly25A_D315B0/RESULT = {"Shutter1":{"Position":90,"Direction":0,"Target":90,"Tilt":0}}
23:38:25.992 CMD: shutterposition1
23:38:26.001 MQT: stat/shelly25A_D315B0/RESULT = {"Shutter1":{"Position":90,"Direction":0,"Target":90,"Tilt":0}}
23:38:26.006 MQT: stat/shelly25A_D315B0/RESULT = {"ShutterPosition1":90}

Die Lamellen sind zu. Wieso dann Tilt 0?

Dann auf 95% hoch:
23:40:39.569 CMD: shutterposition1 95
23:40:39.578 MQT: stat/shelly25A_D315B0/RESULT = {"POWER1":"on"}
23:40:39.581 MQT: stat/shelly25A_D315B0/POWER1 = on
23:40:39.584 MQT: stat/shelly25A_D315B0/RESULT = {"ShutterPosition1":95}
23:40:39.605 MQT: stat/shelly25A_D315B0/RESULT = {"Shutter1":{"Position":90,"Direction":1,"Target":95,"Tilt":0}}
23:40:40.169 MQT: stat/shelly25A_D315B0/RESULT = {"Shutter1":{"Position":90,"Direction":1,"Target":95,"Tilt":37}}
23:40:41.144 MQT: stat/shelly25A_D315B0/RESULT = {"Shutter1":{"Position":90,"Direction":1,"Target":95,"Tilt":90}}
23:40:42.141 MQT: stat/shelly25A_D315B0/RESULT = {"Shutter1":{"Position":92,"Direction":1,"Target":95,"Tilt":90}}
23:40:43.147 MQT: stat/shelly25A_D315B0/RESULT = {"Shutter1":{"Position":94,"Direction":1,"Target":95,"Tilt":90}}
23:40:43.449 MQT: stat/shelly25A_D315B0/RESULT = {"POWER1":"off"}
23:40:43.453 MQT: stat/shelly25A_D315B0/POWER1 = off
23:40:43.965 MQT: stat/shelly25A_D315B0/RESULT = {"POWER2":"on"}
23:40:43.969 MQT: stat/shelly25A_D315B0/POWER2 = on
23:40:43.979 MQT: stat/shelly25A_D315B0/RESULT = {"Shutter1":{"Position":95,"Direction":-1,"Target":95,"Tilt":90}}
23:40:44.129 MQT: stat/shelly25A_D315B0/RESULT = {"Shutter1":{"Position":95,"Direction":-1,"Target":95,"Tilt":83}}
23:40:45.135 MQT: stat/shelly25A_D315B0/RESULT = {"Shutter1":{"Position":95,"Direction":-1,"Target":95,"Tilt":8}}
23:40:45.331 MQT: stat/shelly25A_D315B0/RESULT = {"POWER2":"off"}
23:40:45.336 MQT: stat/shelly25A_D315B0/POWER2 = off
23:40:45.845 MQT: stat/shelly25A_D315B0/SHUTTER1 = 95
23:40:45.850 MQT: stat/shelly25A_D315B0/RESULT = {"Shutter1":{"Position":95,"Direction":0,"Target":95,"Tilt":0}}
23:41:56.547 CMD: shutterposition1
23:41:56.555 MQT: stat/shelly25A_D315B0/RESULT = {"Shutter1":{"Position":95,"Direction":0,"Target":95,"Tilt":0}}
23:41:56.559 MQT: stat/shelly25A_D315B0/RESULT = {"ShutterPosition1":95}

Die Lamellen sind offen (am Ende gab es da noch ein hin und her, evtl. stimmt ist die Zeit etwas zu hoch für den Tilt von «offen» zu «zu»).

Wollte den Storen nun hochfahren und ein ander mal weiter machen. ShutterPosition1 Close führte dazu, dass er runter gefahren ist. Das kapiere ich nun gar nicht. ShutterPosition1 war ja 95% (und «open» und «close» stimmt ansonsten).

Ich brauche ein Plan B:
Ich frage mich, ob es nicht einfacher wäre die Logik in FHEM zu machen. Also Interlock der Relais und fertig. Dann könnte ich die zumindest mal mit irgendwelchen Tastern ansteuern.
Toggel -> 0.1 Sekunden an
Hold -> an für länger als die Zeit welche benötigt wird um den Storen hoch oder runter zu fahren
Andere Richtung, wenn Storen läuft -> Stopp

Gruss
tomix

Beta-User

Zitat von: tomix am 15 November 2021, 23:25:15
Ich brauche ein Plan B:
Ich frage mich, ob es nicht einfacher wäre die Logik in FHEM zu machen.
Meine _Meinung_: Ganz sicher ist es nicht einfacher, das in FHEM abzubilden. Das feature ist in Tasmota halt noch relativ neu => debuggen helfen und gut ist... Das Tasmota-Team wird das schon auf die Reihe bekommen, nur Mut!
Nicht falsch verstehen: Ich hätte keine Einwände, falls jemand ROLLO erweitern will, aber einfacher ist es allemal, die firmware machen zu lassen! (und selbst von Grund auf coden ist m.E. keine wirklich empfehlenswerte Option!)

Zurück zum Thema:
- ich hatte bisher nicht wahrgenommen, dass es dazu schon offizielle Doku gibt, sorry;
- Mir ist komplett unklar, warum du nicht erst mal die "defaults" verwendest, also den vollen Bereich von -90 bis +90 ausnutzt, und ich würde auch vermuten, dass die 'closeposition' hier irgendwie nicht angekommen ist. Die Angabe
stat/shelly25A_D315B0/RESULT = {"ShutterTiltConfig1":"SHT:0 0 90 24 90 0"}
würde ich interpretieren als "fünf Werte" für den ersten Shutter (SHT:0 in "unix-like" Zählweise mit erstem Element = 0). Danach scheinen openposition und closeposition intern vertauscht zu sein;
- das Beispiel bei Tasmota ist m.E. auch nicht wirklich glücklich gewählt. Warum "0" für open und nicht "-90"...?
- Vermutlich sind -90 für FHEM "komisch", und mir gefällt das auch nicht besonders, es macht aber keinen Sinn, gegen die in der firmware vercodete Logik zu handeln. Evtl. müssen wir halt in FHEM darauf reagieren (insbes. in ASC, falls das Probleme mit negativen Werten haben sollte);
- Dass die firmware komisch reagiert, wenn man außerhalb der spec rumspielt, finde ich jetzt nicht überraschend...
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

tomix

Zitat von: Beta-User am 16 November 2021, 11:24:12
Das feature ist in Tasmota halt noch relativ neu => debuggen helfen und gut ist... Das Tasmota-Team wird das schon auf die Reihe bekommen, nur Mut![/code]
Ich dachte ich führe mir auch mal den Code dort zu Gemüte. SO weit weg vom Ziel kann der ja nicht sein

Zitat von: Beta-User am 16 November 2021, 11:24:12
- Mir ist komplett unklar, warum du nicht erst mal die "defaults" verwendest, also den vollen Bereich von -90 bis +90 ausnutzt, und ich würde auch vermuten, dass die 'closeposition' hier irgendwie nicht angekommen ist.
Hatte ich am Anfang, funktionierte auch nicht. Aber evtl. auch weil es sonst nicht funktioniert. Bei den Indoor-Dinger drehen die doch auch in die Gegenseite, aber dann sind es mehr als 180° total. Ich ging am Anfang von 0° = Offen aus.

Zitat von: Beta-User am 16 November 2021, 11:24:12
Die Angabe
stat/shelly25A_D315B0/RESULT = {"ShutterTiltConfig1":"SHT:0 0 90 24 90 0"}
würde ich interpretieren als "fünf Werte" für den ersten Shutter (SHT:0 in "unix-like" Zählweise mit erstem Element = 0). Danach scheinen openposition und closeposition intern vertauscht zu sein;
Nach Doku wäre es wie folgt:
<min> <max> <Tiltduration> <openposition> <closeposition> (default = 0 0 0 0 0)
min = -90, max = 0 hatte ich auch mal probiert, muss ich aber nochmals probieren, dann wäre 0 offen, was mir logisch erscheinen würde. Evtl. dachte der Entwickler auch an den üblichen viertel Kreis. Gibt es Lamellen die nach innen Kippen?

Ich muss mal gucken ob ich den Entwickler irgendwie erreichen kann bzw. den entsprechenden Code Ausschnitt mir ansehen, um zu verstehen was die Idee war.

Den Code umschreiben zum testen ist dann so eine Sache. Ich könnte dies dann nur auf einem Sonoff4CH testen, da ich den Shelly2.5 nur OTA flashen kann (brachte keinen Adapter hin für den Anschluss auf der Rückseite).

Gruss
tomix

Beta-User

Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

tomix

Gerade wieder dran. Die neue Storen wurden heute (also inzwischen gestern) montiert ;-) .

Firmware: Tasmota 10.1.0.1 by Theo Arends

Nun mal wieder Zeit stoppen und einstellen (rauf 48 Sekunden, runter 49 Sekunden, also nehme ich mal 49 Sekunden für beides):

ShutterOpenDuration1 49
ShutterCloseDuration1 49


Storen ist aktuell nun zu. Mal abfragen ob der Shelly der gleichen Meinung ist (ShutterPosition1):
00:10:43.431 MQT: stat/shelly25A_D315B0/RESULT = {"Shutter1":{"Position":0,"Direction":0,"Target":0,"Tilt":0}}
00:10:43.435 MQT: stat/shelly25A_D315B0/RESULT = {"ShutterPosition1":0}


Also mal auf 50% hochfahren (ShutterPosition1 50):

00:13:12.383 MQT: stat/shelly25A_D315B0/RESULT = {"Shutter1":{"Position":46,"Direction":1,"Target":50,"Tilt":90}}
00:13:13.384 MQT: stat/shelly25A_D315B0/RESULT = {"Shutter1":{"Position":48,"Direction":1,"Target":50,"Tilt":90}}
00:13:14.187 MQT: stat/shelly25A_D315B0/RESULT = {"POWER1":"off"}
00:13:14.192 MQT: stat/shelly25A_D315B0/POWER1 = off
00:13:14.695 SHT: Tilt not match 90 -> 0
00:13:14.703 MQT: stat/shelly25A_D315B0/RESULT = {"POWER2":"on"}
00:13:14.706 MQT: stat/shelly25A_D315B0/POWER2 = on
00:13:14.712 MQT: stat/shelly25A_D315B0/RESULT = {"Shutter1":{"Position":50,"Direction":-1,"Target":50,"Tilt":90}}
00:13:14.726 MQT: stat/shelly25A_D315B0/RESULT = {"Shutter1":{"Position":50,"Direction":-1,"Target":50,"Tilt":90}}
00:13:15.397 MQT: stat/shelly25A_D315B0/RESULT = {"Shutter1":{"Position":50,"Direction":-1,"Target":50,"Tilt":42}}
00:13:15.947 MQT: stat/shelly25A_D315B0/RESULT = {"POWER2":"off"}
00:13:15.952 MQT: stat/shelly25A_D315B0/POWER2 = off
00:13:16.457 MQT: stat/shelly25A_D315B0/SHUTTER1 = 50
00:13:16.463 MQT: stat/shelly25A_D315B0/RESULT = {"Shutter1":{"Position":50,"Direction":0,"Target":50,"Tilt":0}}


Storen fährt hoch auf 50% und schliesst dann, da «Tilt not match 90 -> 0».

Nun mal auf 90° stellen mit ShutterTilt1 OPEN (Open geht nicht, muss OPEN heissen) und wieder zu mit CLOSE. Läuft jeweils noch etwas nach, also muss die Zeit noch etwas runter, klappt aber ansonsten gut. Mit ShutterTiltConfig1 die Werte abgefragt (0 0 90 24 90 0), also mal:

ShutterTiltConfig1 0 0 90 20 90 0

Führt zum hochlaufen und überlaufen der Position. Hmm, Befehl hat einen Wert zu viel, also mal Neustart und nun korrekt:

ShutterTiltConfig1 0 90 20 90 0


Das haut nun echt gut hin, mit SutterTilt CLOSE, OPEN aber auch mit 45.

Nun also noch den anderen Shelly updaten und reinbügeln.

In FHEM die beiden wieder neu eingebunden mit dem attrTemplate tasmota_2ch_shutter_venetian_invert_0. Nun auch kapiert für was die Icon zum bedienen stehen: Auf, Zu, 50%, Stop, Slider für die Position. Das Icon welches die Storenposition darstellt ist falsch rum (offen ist es zu und umgekehrt), ansonsten passt es (Storen läuft hoch bei hoch).
Als dies hier ändern:

attr MQTT2_Shelly25_2OG_SUED_D315B0 devStateIcon opening:fts_shutter_up@red closing:fts_shutter_down@red Online:10px-kreis-gruen Offline:10px-kreis-rot 100:fts_shutter_100 0:fts_shutter_10 9\d.*:fts_shutter_90 8\d.*:fts_shutter_80 7\d.*:fts_shutter_70 6\d.*:fts_shutter_60 5\d.*:fts_shutter_50 4\d.*:fts_shutter_40 3\d.*:fts_shutter_30 2\d.*:fts_shutter_20 1\d.*:fts_shutter_10 \b\d\b.*:fts_shutter_10 set_.*:fts_shutter_updown

Nicht schön, aber so stimmt es zumindest:

attr MQTT2_Shelly25_2OG_SUED_D315B0 devStateIcon opening:fts_shutter_up@red closing:fts_shutter_down@red Online:10px-kreis-gruen Offline:10px-kreis-rot 0:fts_shutter_100 100:fts_shutter_10 \b\d\b.*:fts_shutter_90 1\d.*:fts_shutter_80 2\d.*:fts_shutter_70 3\d.*:fts_shutter_60 4\d.*:fts_shutter_50 5\d.*:fts_shutter_40 6\d.*:fts_shutter_30 7\d.*:fts_shutter_20 8\d.*:fts_shutter_10 9\d.*:fts_shutter_10 set_.*:fts_shutter_updown


Nun noch den Slat (heisst bei tasmota Tilt) zusammen basteln:

attr MQTT2_Shelly25_2OG_SUED_D315B0 setList close:noArg cmnd/Shelly25_2OG_SUED_D315B0/ShutterClose1\
   open:noArg cmnd/Shelly25_2OG_SUED_D315B0/ShutterOpen1\
   half:noArg cmnd/Shelly25_2OG_SUED_D315B0/ShutterPosition1 50\
   pct:slider,0,1,100 cmnd/Shelly25_2OG_SUED_D315B0/ShutterPosition1 $EVTPART1\
   stop:noArg cmnd/Shelly25_2OG_SUED_D315B0/ShutterStop1\
   closeSlat:noArg cmnd/Shelly25_2OG_SUED_D315B0/ShutterTilt1 CLOSE\
   openSlat:noArg cmnd/Shelly25_2OG_SUED_D315B0/ShutterTilt1 OPEN\
   halfSlat:noArg cmnd/Shelly25_2OG_SUED_D315B0/ShutterTilt1 45\
   pctSlat:slider,0,1,100 cmnd/Shelly25_2OG_SUED_D315B0/ShutterTilt1 $EVTPART1\
   stopSlat:noArg cmnd/Shelly25_2OG_SUED_D315B0/ShutterStop2\
   resetClose:noArg cmnd/Shelly25_2OG_SUED_D315B0/ShutterSetClose1\
   resetCloseSlat:noArg cmnd/Shelly25_2OG_SUED_D315B0/ShutterSetClose2
attr MQTT2_Shelly25_2OG_SUED_D315B0 setStateList open close half stop pct openSlat closeSlat halfSlat
...
attr MQTT2_Shelly25_2OG_SUED_D315B0 webCmd :open:close:half:stop:pct:openSlat:closeSlat:halfSlat:pctSlat


Damit klar ist was geändert werden muss:
   closeSlat:noArg cmnd/Shelly25_2OG_SUED_D315B0/ShutterTilt1 CLOSE\
   openSlat:noArg cmnd/Shelly25_2OG_SUED_D315B0/ShutterTilt1 OPEN\
   halfSlat:noArg cmnd/Shelly25_2OG_SUED_D315B0/ShutterTilt1 45\
   pctSlat:slider,0,1,100 cmnd/Shelly25_2OG_SUED_D315B0/ShutterTilt1 $EVTPART1\
   stopSlat:noArg cmnd/Shelly25_2OG_SUED_D315B0/ShutterStop2\
   resetClose:noArg cmnd/Shelly25_2OG_SUED_D315B0/ShutterSetClose1\
   resetCloseSlat:noArg cmnd/Shelly25_2OG_SUED_D315B0/ShutterSetClose2
attr MQTT2_Shelly25_2OG_SUED_D315B0 setStateList open close half stop pct openSlat closeSlat halfSlat
...
attr MQTT2_Shelly25_2OG_SUED_D315B0 webCmd :open:close:half:stop:pct:openSlat:closeSlat:halfSlat:pctSlat

Die 45 bei halfSlat sind nicht sauber gelöst, da dies die Winkelangabe ist und nicht die Prozentangabe. Der Slider wird wohl auch nicht wie gewünscht funktionieren. Aber der Rest klappt nun zumindest.

Gruss
tomix

Beta-User

 :)

Schön, dass es vorangeht. Bevor ich da ans Großreinemachen gehe, noch eine Frage:

Zitat von: tomix am 23 Dezember 2021, 01:50:12
Führt zum hochlaufen und überlaufen der Position. Hmm, Befehl hat einen Wert zu viel, also mal Neustart und nun korrekt:

ShutterTiltConfig1 0 90 20 90 0

Das haut nun echt gut hin, mit SutterTilt CLOSE, OPEN aber auch mit 45.
In der aktuellen Doku steht da als Beispiel:
shuttertiltconfig1 -90 90 24 0 -90
Ergo würde ich vermuten, dass es sinnvoll ist, diese Bandbreite (-90 bis 90) auch auszunutzen, weil man dann wenigstens erklären kann, dass es sich um eine direkte Winkelangabe (als Abweichung zu 0° = waagerecht stehend (im Sinne von "vollem Durchblick" bei von oben nach unten laufendem Behang) geht.

Oder hast du das bewußt verworfen? (Wenn ja: warum?)
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

tomix

Zitat von: Beta-User am 23 Dezember 2021, 10:01:21
Ergo würde ich vermuten, dass es sinnvoll ist, diese Bandbreite (-90 bis 90) auch auszunutzen, weil man dann wenigstens erklären kann, dass es sich um eine direkte Winkelangabe (als Abweichung zu 0° = waagerecht stehend (im Sinne von "vollem Durchblick" bei von oben nach unten laufendem Behang) geht.
Es gibt Rafflamellenstoren die kippen auf die andere Seite beim hochlaufen bzw. hochziehen, also -90° (oder 90°?). Dies ist vorallem bei so kleinen Innenlamellen der Fall. Diejenige die ich habe sind bein runterlaufen zu (stehen vertikal) und beim hochlaufen offen (stehen waagrecht). Die Lamellen können sich also maximal um 90° drehen.

Unter: https://tasmota.github.io/docs/Blinds-and-Shutters/#jarolift-shutter-support steht folgendes:
The configuration need following parameters: angle of blinds during OPEN, angle of blinds during CLOSE. This are the max and the min values of the venetian blinds (e.g. -90° to 90°). Additionally the runtime is required from min to max and reverse. This is typically 1-2sec. The resolution of the time is 0.05sec. Duration in [sec] must be multiplied by 20. e.g. 1.2sec => 1.2 x 20 = 24. Two open and close the tilt you can define the angle for OPEN and the angle for CLOSE of the tilt. shuttertiltconfig1 -90 90 24 0 -90


Unter Commands (https://tasmota.github.io/docs/Commands/#shutters) folgendes:
ShutterTiltConfig<x> <min> <max> <Tiltduration> <openposition> <closeposition> (default = 0 0 0 0 0)
Configure the tilt for venetian blinds. Min/man values must be in the range of -90° to 90°. Open and Close position must be part of the defined range between min and max. Tiltduration defines the time the shutter needs to change the tilt from min to max value. This time has to been multiplied by 20. E.g. 1.2sec = 1.2 x 20 = 24. Example defines tilt on shutter 2: shuttertiltconfig2 -90 90 24 0 90


Mein Interpretation war dann (nach ausprobieren, für mich war 0° zuerst nicht waagrecht) folgende:
Minimum ist also 0° und Maximum 90° (oder -90° und 0°, weiss nicht mehr ob ich dies ausprobiert habe). Laufen die Lamellen hoch bzw. sind sie ganz oben (openposition) ist der Winkel 0° und laufen sie runter bzw. sind sie ganz unten (closeposition)  sind die Lamellen um 90° gedreht im Bezug zur offnen Position.

Mit anderen Werten hatte ich keinen Erfolg. Bei -90 90 (für min max) vermute ich, dass die Storen bei Tilt OPEN 0° anfahren würde, und dann 45° schräg stehen würden (1/2 der möglichen Drehung würde ausgeführt). Werde dies noch ausprobieren.

Nebenfrage: Gibt es bereits ein Wechselkommand zwischen Storenmotor läuft und Stopp, aber der Tilt dürfte dann STOP nicht gesetzt werden? Ich meine damit folgendes: drückt man AUF, wird Shutter OPEN gesendet. Drückt man nochmals AUF, wird bei laufenden Storen Motor STOP gesendet. Das Tosmato Webfrontend ist so (muss mal die Konsole mitlaufen lassen), so was würde für zwei Taster an einem anderen ESP bereits reichen, um den Storen manuel gut bedienen zu können.

Mit ShutterStopClose<x> bzw. ShutterStopOpen<x> geht dies, aber dann kann der Tilt nicht eingestellt werden mit den Tastern. Andere Lösung wäre wohl, kurz drücken Tilt ändern um x°, lang drücken für hoch bzw. runter.

Gruss
tomix

Beta-User

Oh, ok. Ich habe die -90 bis 90 Grad-Variante als Außenjalousien. Für die dürften die angegebenen Default-Werte passen (ich habe ZWave dafür im Einsatz, ist auch super, "tickt" aber von 0-99).

Von daher würde ich eigentlich annehmen, dass bei dir die -90 bis 0-Variante passend sein sollte und bin mal auf dein Testergebnis gespannt.

Die Nebenfrage verstehe ich nicht ganz, falls sich das auf FHEMWEB bezieht:
devStateIcon ergänzen bei
opening:fts_shutter_up@red:stop closing:fts_shutter_down@red:stop

Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

tomix

Zitat von: Beta-User am 23 Dezember 2021, 11:06:21
Die Nebenfrage verstehe ich nicht ganz, falls sich das auf FHEMWEB bezieht:
devStateIcon ergänzen bei
opening:fts_shutter_up@red:stop closing:fts_shutter_down@red:stop

Nein, zwei physische Taster an einem anderen Shelly.

Gruss
tomix

Beta-User

Ohne irgendeine Logik an welcher Stelle auch immer wird das wohl eher nicht gehen.

Ich würde das vermutlich in FHEM via notify auf die Taster-Events lösen. Ist aber nichts, was mit dem Aktor an sich was zu tun hat....
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

tomix

Zitat von: Beta-User am 24 Dezember 2021, 15:28:53
Ich würde das vermutlich in FHEM via notify auf die Taster-Events lösen. Ist aber nichts, was mit dem Aktor an sich was zu tun hat....
Genau so werde ich mal anfangen ;D.

Mit
SwitchMode 5
sollte ein Topic für Release und eines für Hold zu Verfügung stehen.
Release: Storen jeweils etwas kippen
Hold: ganz auf bzw. zu.
Dann muss ich nur noch schauen, dass bei einem Release wen der Storen läuft dieser stoppt, sollte aber auch gehen, kann ja jeweils ein Stopp senden und dann den Befehl für etwas kippen.

Gruss
tomix