Lamellenstoren, Venetian Blinds: Lamellenwinkel einstellen, via Tastern steuern

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

Vorheriges Thema - Nächstes Thema

tomix

Zitat von: Beta-User am 02 Februar 2022, 12:12:09
Falls ich da unterstützen soll, müßtest du eine _genaue_ Darstellung von dem liefern, was an Kommunikation läuft, und wie die Readings ggf. zu jedem Zeitpunkt aussehen.
Die Zeit investiere ich lieber in das anpassen der Firmware, das ist nachhaltiger und bringt mehr. Dann würde es auch klappen einen Befehl direkt von einem anderen Tasmota zu senden.

Um mehr FHEM zu lernen gibt es da noch anderes;-). Ich will noch Doublepress für einen Taster in FHEM realisieren. Tasmota liefert aber loslassen und länger drücken (ist bewusst so eingestellt damit kein Reset möglich ist bei 40x oder was so lange wie Hold drücken). Für den Storen ist das auch optimal, aber der Shellyi3 hat ja noch einen dritten Eingang.

Gruss
tomix

tomix

Zitat von: Beta-User am 01 Februar 2022, 14:16:54
Also, in der nächsten Iteration gibt es dann:
attr DEVICE webCmd pct:tiltSlat
attr DEVICE widgetOverride pct:knob,min:-90,max:90,angleArc:180,width:40,height:40,fgColor:#CCCCCC,bgColor:#FF9900,step:5,lineCap:round,rotation:anticlockwise,displayPrevious:1

Zusammen mit dem (Perl-) devStateIcon sollte das dann ausreichen, um eine vernünftige Steuerung per FHEMWEB zu haben.
Wenn der Slider wechselt wäre das wohl einfacher zu bedienen auf einem Smartphone. Ich habe deinen Screenshot zumindest so verstanden. Logischer ist aber der knob schon. Zudem hat dann alles ganz gut Platz (Icon knob Slider).
Dann warte ich mal auf dein Update. Brachte das auf die schnelle nicht sinnvoll zusammen.

Gruss
tomix

tomix

Zitat von: tomix am 20 Januar 2022, 12:27:08

attr MQTT2_FHEM_Server ignoreRegexp shellies/[^/]+/command|cmnd/[^/]+/|homeassistant/.*/config|tasmota/discovery

Mal gucken ob das reicht (verstehe den Regexp nicht komplett).

Man sollte sich dabei nur noch bewusst sein, dass man sich ganz am Anfang, mit null Ahnung, drei notify auf ein cmd/... eingrichtet hat. Damit wurde ein zusätzlicher Taster an einem SonoffTH16 ausgewertet (single, double, hold). Habe das nnun wieder zurecht gebogen.

Gruss
tomix

Beta-User

Zitat von: tomix am 05 Februar 2022, 01:00:50
Habe das nnun wieder zurecht gebogen.
...hoffentlich, indem du im ESP einen anderen (oder zusätzlichen) Pfad für das Melden des Tastendrucks angegeben hast...

Zitat von: tomix am 04 Februar 2022, 20:49:15
Dann warte ich mal auf dein Update. Brachte das auf die schnelle nicht sinnvoll zusammen.
Ist seit ein paar Tagen via update zu bekommen  :) .
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 05 Februar 2022, 06:12:30
...hoffentlich, indem du im ESP einen anderen (oder zusätzlichen) Pfad für das Melden des Tastendrucks angegeben hast...
Genau, dafür gesorgt, dass ein tele gesendet wird. Wird nachher dann sowieso durch den dritten Eingang am shellyi3 abhelöst.

Werde das Update nach ein paar Tagen im Schnee testen.

Gruss und Dank
tomix

Beta-User

 :) Viel Spaß. Schnee in Mengen mit hinreichendem Gefälle wäre auch mal wieder was...
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 05 Februar 2022, 06:35:48
Schnee in Mengen mit hinreichendem Gefälle wäre auch mal wieder was...

Genau und mit einem oder zwei Brettern unter den Füssen. 8)

tomix


defmod MQTT2_Shelly25_EG_Kueche_6B0284 MQTT2_DEVICE Shelly25_EG_Kueche_6B0284
attr MQTT2_Shelly25_EG_Kueche_6B0284 alias RL_Kueche
attr MQTT2_Shelly25_EG_Kueche_6B0284 cmdIcon open:fts_shutter_up close:fts_shutter_down stop:fts_shutter_manual half:fts_shutter_50
attr MQTT2_Shelly25_EG_Kueche_6B0284 comment After applying the template set "ShutterOpenDuration1", "ShutterCloseDuration1" and "shuttertiltconfig1" first.\
Use the "set x_configuration" Option. Example: "set x_configuration ShutterOpenDuration1 35".\
This is for a tilt range from -90 to 90 degrees, if you have different tilt options, adopt range manually\
For calibration, tilt range settings, 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_Shelly25_EG_Kueche_6B0284 devStateIcon {my $onl = ReadingsVal($name,'LWT','Offline') eq 'Offline' ? 'rot' : 'gruen';; $onl = FW_makeImage("10px-kreis-$onl");; my $ip = ReadingsVal($name,'IPAddress','none');; my $pct = int((109 - ReadingsNum($name,'pct',0))/10)*10;; my $open = ReadingsVal($name,'state','');; my $lvicon = $open eq 'opening' ? 'fts_shutter_up@red' : $open eq 'closing' ? 'fts_shutter_down@red' : "fts_shutter_$pct";; $lvicon = FW_makeImage($lvicon);; my $lvcmd = ($open eq 'opening' || $open eq 'closing') ? 'stop' : $pct > 50 ? 'close' : 'open';; my $slt = ReadingsNum($name,'tiltSlat',90);; my $slticon = 'fts_blade_arc_close_';; $slticon .= $slt > 0 ? '00' : $slt > -45 ? '50' : '100';; $slticon = FW_makeImage($slticon);; my $sltcmd = $slt > 0 ? 'closeSlat' : $slt > -45 ? 'openSlat' : 'halfSlat';; qq(<a href="http://$ip" target="_blank">$onl</a> <div><a href="/fhem?cmd.dummy=set $name $lvcmd&XHR=1">$lvicon</a></div> <div><a href="/fhem?cmd.dummy=set $name $sltcmd&XHR=1">$slticon $slt</a>) }
attr MQTT2_Shelly25_EG_Kueche_6B0284 icon fts_shutter_updown
attr MQTT2_Shelly25_EG_Kueche_6B0284 jsonMap POWER1:0 POWER2:0 Shutter1_Tilt:tiltSlat Shutter1_Target:pct ANALOG_Temperature:temperature
attr MQTT2_Shelly25_EG_Kueche_6B0284 model tasmota_2ch_shutter_venetian_invert_0
attr MQTT2_Shelly25_EG_Kueche_6B0284 readingList tele/shelly25_EG_KUECHE_6B0284/LWT:.* LWT\
   tele/shelly25_EG_KUECHE_6B0284/STATE:.* { json2nameValue($EVENT,'',$JSONMAP) }\
   tele/shelly25_EG_KUECHE_6B0284/SENSOR:.* { json2nameValue($EVENT,'',$JSONMAP) }\
   tele/shelly25_EG_KUECHE_6B0284/INFO.:.* { $EVENT =~ m,^..Info[1-3]..(.+).$, ?  json2nameValue($1,'',$JSONMAP) : json2nameValue($EVENT,'',$JSONMAP) }\
   stat/shelly25_EG_KUECHE_6B0284/RESULT:.* { json2nameValue($EVENT,'',$JSONMAP) }\
   stat/shelly25_EG_KUECHE_6B0284/POWER1:.* {{'state' => 'opening'} if $EVENT eq 'on'}\
   stat/shelly25_EG_KUECHE_6B0284/POWER2:.* {{'state' => 'closing'} if $EVENT eq 'on'}\
Shelly25_EG_Kueche_6B0284:stat/shelly25_EG_KUECHE_6B0284/SHUTTER1:.* SHUTTER1
attr MQTT2_Shelly25_EG_Kueche_6B0284 room Haus,Haus->EG,MQTT2_DEVICE
attr MQTT2_Shelly25_EG_Kueche_6B0284 setList close:noArg cmnd/shelly25_EG_KUECHE_6B0284/ShutterClose1\
   open:noArg cmnd/shelly25_EG_KUECHE_6B0284/ShutterOpen1\
   half:noArg cmnd/shelly25_EG_KUECHE_6B0284/ShutterPosition1 50\
   pct:slider,0,1,100 cmnd/shelly25_EG_KUECHE_6B0284/ShutterPosition1 $EVTPART1\
   stop:noArg cmnd/shelly25_EG_KUECHE_6B0284/ShutterStop1\
   closeSlat:noArg cmnd/shelly25_EG_KUECHE_6B0284/ShutterTilt1 CLOSE\
   openSlat:noArg cmnd/shelly25_EG_KUECHE_6B0284/ShutterTilt1 OPEN\
   halfSlat:noArg cmnd/shelly25_EG_KUECHE_6B0284/ShutterTilt1 0\
   tiltSlat:slider,0,5,90 cmnd/shelly25_EG_KUECHE_6B0284/ShutterTilt1 $EVTPART1\
   resetClose:noArg cmnd/shelly25_EG_KUECHE_6B0284/ShutterSetClose1\
   x_configuration cmnd/shelly25_EG_KUECHE_6B0284/$EVTPART1 $EVTPART2
attr MQTT2_Shelly25_EG_Kueche_6B0284 setStateList open close half stop pct openSlat closeSlat halfSlat
attr MQTT2_Shelly25_EG_Kueche_6B0284 stateFormat LWT level: state slat: tiltSlat
attr MQTT2_Shelly25_EG_Kueche_6B0284 userReadings state:pct:.* {ReadingsNum($name,'pct',0)}
attr MQTT2_Shelly25_EG_Kueche_6B0284 webCmd open:close:stop:tiltSlat:pct
attr MQTT2_Shelly25_EG_Kueche_6B0284 widgetOverride tiltSlat:knob,min:0,max:90,angleArc:180,width:40,height:40,fgColor:#CCCCCC,bgColor:#FF9900,step:5,lineCap:round,rotation:anticlockwise,displayPrevious:1


Damit wäre der Knopf für den Tilt und der Silder für auf/zu.

Deine Lösung mit dem Silder der wechselt wäre aber cooler. Also ein Icon Auf/Zu und eines für den Tilt/Slat (Auf/Zu). Klickt man Auf/Zu wird der Storen entsprechend der Position geöffnet oder geschlossen und der Slider ist für Auf/Zu. Klickt man auf den Tilt/Slat wird der Storen entsprechend gekippt und der Slider dahinter wechselt für den Tilt/Slat.

Ich habe nun mal versucht beim Slider einen Hintergrundverlauf einzufügen wie folgt (pct:slider,0,1,100,color1:gradient_000000_FFFFFF):

attr MQTT2_Shelly25_EG_Kueche_6B0284 setList close:noArg cmnd/shelly25_EG_KUECHE_6B0284/ShutterClose1\
   open:noArg cmnd/shelly25_EG_KUECHE_6B0284/ShutterOpen1\
   half:noArg cmnd/shelly25_EG_KUECHE_6B0284/ShutterPosition1 50\
   pct:slider,0,1,100,color1:gradient_000000_FFFFFF cmnd/shelly25_EG_KUECHE_6B0284/ShutterPosition1 $EVTPART1\
   stop:noArg cmnd/shelly25_EG_KUECHE_6B0284/ShutterStop1\
   closeSlat:noArg cmnd/shelly25_EG_KUECHE_6B0284/ShutterTilt1 CLOSE\
   openSlat:noArg cmnd/shelly25_EG_KUECHE_6B0284/ShutterTilt1 OPEN\
   halfSlat:noArg cmnd/shelly25_EG_KUECHE_6B0284/ShutterTilt1 0\
   tiltSlat:slider,0,5,90 cmnd/shelly25_EG_KUECHE_6B0284/ShutterTilt1 $EVTPART1\
   resetClose:noArg cmnd/shelly25_EG_KUECHE_6B0284/ShutterSetClose1\
   x_configuration cmnd/shelly25_EG_KUECHE_6B0284/$EVTPART1 $EVTPART2

Allerdings ändert das gar nichts am aussehen.

Der Sliderhintergrund soll bei bei 0 (zu) Schwarz sein und bei 100 (offen) weiss.

Würden auch zwei Slider untereinander gehen? Den Online/Offline-Punkt habe ich mal wie folgt in die Mitte gesetzt:

attr MQTT2_Shelly25_EG_Kueche_6B0284 devStateIcon {my $onl = ReadingsVal($name,'LWT','Offline') eq 'Offline' ? 'rot' : 'gruen';; $onl = FW_makeImage("10px-kreis-$onl");; my $ip = ReadingsVal($name,'IPAddress','none');; my $pct = int((109 - ReadingsNum($name,'pct',0))/10)*10;; my $open = ReadingsVal($name,'state','');; my $lvicon = $open eq 'opening' ? 'fts_shutter_up@red' : $open eq 'closing' ? 'fts_shutter_down@red' : "fts_shutter_$pct";; $lvicon = FW_makeImage($lvicon);; my $lvcmd = ($open eq 'opening' || $open eq 'closing') ? 'stop' : $pct > 50 ? 'close' : 'open';; my $slt = ReadingsNum($name,'tiltSlat',90);; my $slticon = 'fts_blade_arc_close_';; $slticon .= $slt > 0 ? '00' : $slt > -45 ? '50' : '100';; $slticon = FW_makeImage($slticon);; my $sltcmd = $slt > 0 ? 'closeSlat' : $slt > -45 ? 'openSlat' : 'halfSlat';; qq(<a href="/fhem?cmd.dummy=set $name $lvcmd&XHR=1">$lvicon</a> <div><a href="http://$ip" target="_blank">$onl</a></div> <div><a href="/fhem?cmd.dummy=set $name $sltcmd&XHR=1">$slticon $slt</a>) }


Damit sollte es einfach sein das Icon für Auf/Zu bzw. Tilt/Slat zu treffen (wobei je nach was drüber oder drunter ist, das ganze auch nicht sinnvoll ist). Auf/Zu funktioniert noch nicht, dachte zuerst das ist noch gar nichts dafür gemacht. Sehe nun aber, dass es eigentlich funktionieren sollte, kapier aber nicht wieso nicht (kapier den entsprechenden Code noch nicht). Beim Tilt/Slat-Icon wäre evtl. 0°/45°/90° sinnvoll.

Gruss
tomix

Beta-User

Zitat von: tomix am 13 Februar 2022, 20:04:13
Deine Lösung mit dem Silder der wechselt wäre aber cooler. Also ein Icon Auf/Zu und eines für den Tilt/Slat (Auf/Zu). Klickt man Auf/Zu wird der Storen entsprechend der Position geöffnet oder geschlossen und der Slider ist für Auf/Zu. Klickt man auf den Tilt/Slat wird der Storen entsprechend gekippt und der Slider dahinter wechselt für den Tilt/Slat.
Hmm, bin nicht ganz sicher, ob wir nicht aneinander vorbei reden: Der Slider (für den Behang) bzw. der knob für die Lamellendrehung sollte immer da sein, für den Rest gibt es das "doppelte" devStateIcon. Da das wohl nicht funktioniert: Was wird als Link angezeigt, wenn du jeweils über die Icons gehst mit der Maus?

Für was ist dieser Topic dazugekommen:
Shelly25_EG_Kueche_6B0284:stat/shelly25_EG_KUECHE_6B0284/SHUTTER1:.* SHUTTER1

Der Slider in "hell-dunkel" sollte mit eine widget gehen (auch in der readingList, hier per owidgetOverride):
attr MQTT2_Shelly25_EG_Kueche_6B0284 widgetOverride tiltSlat:knob,min:0,max:90,angleArc:180,width:40,height:40,fgColor:#CCCCCC,bgColor:#FF9900,step:5,lineCap:round,rotation:anticlockwise,displayPrevious:1
pct:colorpicker,BRI,0,1,100


Zitat
Würden auch zwei Slider untereinander gehen?
Klar. Müßte mit webCmdLabel realisierbar sein.

ZitatDen Online/Offline-Punkt habe ich mal wie folgt in die Mitte gesetzt:
Da der "grüne Punkt" bei allen Tasmota-Varianten bisher links steht, will ich das nicht ändern.
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 Februar 2022, 10:23:42
Für was ist dieser Topic dazugekommen:
Shelly25_EG_Kueche_6B0284:stat/shelly25_EG_KUECHE_6B0284/SHUTTER1:.* SHUTTER1

Keine Ahnung, hab das Device gelöscht, mit dem Downloadbefehl FHEM aktualisiert und das Device neu angelegt und dann nur die Darstellung geändert.

Knob ist auf dem Smartphone schlecht bedienbar, daher lieber zwei Slider.

Aktuell steht unter dem grünen Punkt wieder nur "fts_shutter_0", aber das wechselt zum passenden Icon. Allerdings weiss ich nicht wann genau, dachte gestern dies sei nur ein Initialisierungsproblem, aber nun ist das Icon wieder weg.

Punkt links ist auch okay, aktuell ist der über den beiden Icons.

Gruss
tomix

Beta-User

Zitat von: tomix am 14 Februar 2022, 12:54:44
Keine Ahnung, hab das Device gelöscht, mit dem Downloadbefehl FHEM aktualisiert und das Device neu angelegt und dann nur die Darstellung geändert.
Das ist eine Info, die vom Device her gesendet wurde, von daher: wenn es wiederkommt, bitte auch die Info, was in dem Reading steht...

Zitat
Knob ist auf dem Smartphone schlecht bedienbar, daher lieber zwei Slider.
Das kannst du gerne so hinfrickeln, in das attrTemplate übernehmen will ich es nicht (daher das widgetOverride, dann kann man zumindest die slider nebeneinander sichtbar machen, indem man das löscht).

Zitat
Aktuell steht unter dem grünen Punkt wieder nur "fts_shutter_0", aber das wechselt zum passenden Icon. Allerdings weiss ich nicht wann genau, dachte gestern dies sei nur ein Initialisierungsproblem, aber nun ist das Icon wieder weg.
Es gibt zwei Wege: Entweder du schaust selbst, wo das Problem liegt, oder du lieferst mir auch die kompletten Readings (per raw-list, je für mit und ohne Fehlerbild), dann kann ich uU. etwas rumsimulieren... So ist es für mich zu mühsam.

Zitat
Punkt links ist auch okay, aktuell ist der über den beiden Icons.
evtl. mal das "<div>" löschen? (s.o.).
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 Februar 2022, 13:09:34
Das ist eine Info, die vom Device her gesendet wurde, von daher: wenn es wiederkommt, bitte auch die Info, was in dem Reading steht...

Shelly25_EG_Kueche_6B0284:stat/shelly25_EG_KUECHE_6B0284/SHUTTER1:.* SHUTTER1

Es wird die Storenposition ausgegeben (nicht verschachtel sonder direkt), also bei 62 Prozent:
setstate MQTT2_Shelly25_EG_Kueche_6B0284 2022-02-14 19:29:05 SHUTTER1 62

Ausgabe der Konsole (Tasmota):

19:30:53.113 MQT: stat/shelly25_EG_KUECHE_6B0284/RESULT = {"ShutterClose1":0}
19:30:53.120 MQT: stat/shelly25_EG_KUECHE_6B0284/RESULT = {"Shutter1":{"Position":81,"Direction":-1,"Target":0,"Tilt":90}}
19:30:53.418 MQT: stat/shelly25_EG_KUECHE_6B0284/RESULT = {"Shutter1":{"Position":81,"Direction":-1,"Target":0,"Tilt":72}}
19:30:54.384 MQT: stat/shelly25_EG_KUECHE_6B0284/RESULT = {"Shutter1":{"Position":81,"Direction":-1,"Target":0,"Tilt":0}}
19:30:55.388 MQT: stat/shelly25_EG_KUECHE_6B0284/RESULT = {"Shutter1":{"Position":77,"Direction":-1,"Target":0,"Tilt":0}}
19:30:56.391 MQT: stat/shelly25_EG_KUECHE_6B0284/RESULT = {"Shutter1":{"Position":73,"Direction":-1,"Target":0,"Tilt":0}}
19:30:57.393 MQT: stat/shelly25_EG_KUECHE_6B0284/RESULT = {"Shutter1":{"Position":69,"Direction":-1,"Target":0,"Tilt":0}}
19:30:58.393 MQT: stat/shelly25_EG_KUECHE_6B0284/RESULT = {"Shutter1":{"Position":64,"Direction":-1,"Target":0,"Tilt":0}}
19:30:59.395 MQT: stat/shelly25_EG_KUECHE_6B0284/RESULT = {"Shutter1":{"Position":60,"Direction":-1,"Target":0,"Tilt":0}}
19:31:00.397 MQT: stat/shelly25_EG_KUECHE_6B0284/RESULT = {"Shutter1":{"Position":56,"Direction":-1,"Target":0,"Tilt":0}}
19:31:01.412 MQT: stat/shelly25_EG_KUECHE_6B0284/RESULT = {"Shutter1":{"Position":51,"Direction":-1,"Target":0,"Tilt":0}}
19:31:02.414 MQT: stat/shelly25_EG_KUECHE_6B0284/RESULT = {"Shutter1":{"Position":47,"Direction":-1,"Target":0,"Tilt":0}}
19:31:03.415 MQT: stat/shelly25_EG_KUECHE_6B0284/RESULT = {"Shutter1":{"Position":43,"Direction":-1,"Target":0,"Tilt":0}}
19:31:04.367 MQT: stat/shelly25_EG_KUECHE_6B0284/RESULT = {"Shutter1":{"Position":39,"Direction":-1,"Target":0,"Tilt":0}}
19:31:05.368 MQT: stat/shelly25_EG_KUECHE_6B0284/RESULT = {"Shutter1":{"Position":34,"Direction":-1,"Target":0,"Tilt":0}}
19:31:06.369 MQT: stat/shelly25_EG_KUECHE_6B0284/RESULT = {"Shutter1":{"Position":30,"Direction":-1,"Target":0,"Tilt":0}}
19:31:07.368 MQT: stat/shelly25_EG_KUECHE_6B0284/RESULT = {"Shutter1":{"Position":26,"Direction":-1,"Target":0,"Tilt":0}}
19:31:08.371 MQT: stat/shelly25_EG_KUECHE_6B0284/RESULT = {"Shutter1":{"Position":22,"Direction":-1,"Target":0,"Tilt":0}}
19:31:09.376 MQT: stat/shelly25_EG_KUECHE_6B0284/RESULT = {"Shutter1":{"Position":17,"Direction":-1,"Target":0,"Tilt":0}}
19:31:10.414 MQT: stat/shelly25_EG_KUECHE_6B0284/RESULT = {"Shutter1":{"Position":13,"Direction":-1,"Target":0,"Tilt":0}}
19:31:11.382 MQT: stat/shelly25_EG_KUECHE_6B0284/RESULT = {"Shutter1":{"Position":9,"Direction":-1,"Target":0,"Tilt":0}}
19:31:12.383 MQT: stat/shelly25_EG_KUECHE_6B0284/RESULT = {"Shutter1":{"Position":5,"Direction":-1,"Target":0,"Tilt":0}}
19:31:13.387 MQT: stat/shelly25_EG_KUECHE_6B0284/RESULT = {"Shutter1":{"Position":4,"Direction":-1,"Target":0,"Tilt":0}}
19:31:14.392 MQT: stat/shelly25_EG_KUECHE_6B0284/RESULT = {"Shutter1":{"Position":2,"Direction":-1,"Target":0,"Tilt":0}}
19:31:15.394 MQT: stat/shelly25_EG_KUECHE_6B0284/RESULT = {"Shutter1":{"Position":1,"Direction":-1,"Target":0,"Tilt":0}}
19:31:16.043 MQT: stat/shelly25_EG_KUECHE_6B0284/RESULT = {"POWER2":"off"}
19:31:16.048 MQT: stat/shelly25_EG_KUECHE_6B0284/POWER2 = off
19:31:16.554 MQT: stat/shelly25_EG_KUECHE_6B0284/SHUTTER1 = 0
19:31:16.558 MQT: stat/shelly25_EG_KUECHE_6B0284/RESULT = {"Shutter1":{"Position":0,"Direction":0,"Target":0,"Tilt":0}}

Wird jeweils beim erreichen der Zielposition gesendet (somit solange SHUTTER1 != Shutter1->Position läuft der Storen).

Zitat von: Beta-User am 14 Februar 2022, 13:09:34
Das kannst du gerne so hinfrickeln, in das attrTemplate übernehmen will ich es nicht (daher das widgetOverride, dann kann man zumindest die slider nebeneinander sichtbar machen, indem man das löscht).
Zuerst muss es mal korrekt funktionieren, nachher kann man ja paar widgetOverride Varianten hier posten und wie die aussehen.

Zitat von: Beta-User am 14 Februar 2022, 13:09:34
Es gibt zwei Wege: Entweder du schaust selbst, wo das Problem liegt, oder du lieferst mir auch die kompletten Readings (per raw-list, je für mit und ohne Fehlerbild), dann kann ich uU. etwas rumsimulieren... So ist es für mich zu mühsam.
evtl. mal das "<div>" löschen? (s.o.).

Werde das mal debuggen. Wenn der Storen unten ist, ist das Icon korrekt (also mit Storen unten), der Link aber:

<a href="/fhem?cmd.dummy=set MQTT2_Shelly25_EG_Kueche_6B0284 close&XHR=1"><svg class=


Ist der Storen oben:

<a href="/fhem?cmd.dummy=set MQTT2_Shelly25_EG_Kueche_6B0284 open&XHR=1">fts_shutter_0</a>

wird der SVG-Teil nicht eingesetzt (was da das SVG-Bild einsetzt check ich noch nicht).

Ansonsten wohl nur 0 und 100 vertauscht und das Icon mit 0 gibt es nicht oder es heisst 00 oder was auch immer.

Gruss
tomix

tomix

"fts_shutter_0" gibt es nicht, ein:

/opt/fhem/www/images/openautomation# ln -s fts_window_2w.svg fts_shutter_0.svg

führt dazu, dass mal ein Icon da ist (nach einem shutdown restart).


my $lvcmd = ($open eq 'opening' || $open eq 'closing') ? 'stop' : $pct > 50 ? 'open' : 'close';;

So funktioniert es (open und close) wurde am Schluss getauscht.

Muss das dann nochmals in Ruhe alles testen.

Gruss
tomix

tomix

Zitat von: Beta-User am 14 Februar 2022, 10:23:42
attr MQTT2_Shelly25_EG_Kueche_6B0284 widgetOverride tiltSlat:knob,min:0,max:90,angleArc:180,width:40,height:40,fgColor:#CCCCCC,bgColor:#FF9900,step:5,lineCap:round,rotation:anticlockwise,displayPrevious:1
pct:colorpicker,BRI,0,1,100


«Leerzeichen separierte Liste von Name/Modifier Paaren» ;-).

Die Darstellung lässt noch zu wünschen übrig, aber so funktioniert es mal:

defmod MQTT2_Shelly25_EG_Kueche_6B0284 MQTT2_DEVICE Shelly25_EG_Kueche_6B0284
attr MQTT2_Shelly25_EG_Kueche_6B0284 alias RL_Kueche
attr MQTT2_Shelly25_EG_Kueche_6B0284 cmdIcon open:fts_shutter_up close:fts_shutter_down stop:fts_shutter_manual half:fts_shutter_50
attr MQTT2_Shelly25_EG_Kueche_6B0284 comment After applying the template set "ShutterOpenDuration1", "ShutterCloseDuration1" and "shuttertiltconfig1" first.\
Use the "set x_configuration" Option. Example: "set x_configuration ShutterOpenDuration1 35".\
This is for a tilt range from -90 to 90 degrees, if you have different tilt options, adopt range manually\
For calibration, tilt range settings, 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_Shelly25_EG_Kueche_6B0284 devStateIcon {my $onl = ReadingsVal($name,'LWT','Offline') eq 'Offline' ? 'rot' : 'gruen';; $onl = FW_makeImage("10px-kreis-$onl");; my $ip = ReadingsVal($name,'IPAddress','none');; my $pct = int((109 - ReadingsNum($name,'pct',0))/10)*10;; my $open = ReadingsVal($name,'state','');; my $lvicon = $open eq 'opening' ? 'fts_shutter_up@red' : $open eq 'closing' ? 'fts_shutter_down@red' : "fts_shutter_$pct";; $lvicon = FW_makeImage($lvicon);; my $lvcmd = ($open eq 'opening' || $open eq 'closing') ? 'stop' : $pct > 50 ? 'close' : 'open';; my $slt = ReadingsNum($name,'tiltSlat',90);; my $slticon = 'fts_blade_arc_close_';; $slticon .= $slt > 0 ? '00' : $slt > -45 ? '50' : '100';; $slticon = FW_makeImage($slticon);; my $sltcmd = $slt > 0 ? 'closeSlat' : $slt > -45 ? 'openSlat' : 'halfSlat';; qq(<a href="http://$ip" target="_blank">$onl</a> <a href="/fhem?cmd.dummy=set $name $lvcmd&XHR=1">$lvicon</a> <a href="/fhem?cmd.dummy=set $name $sltcmd&XHR=1">$slticon $slt</a>)}
attr MQTT2_Shelly25_EG_Kueche_6B0284 icon fts_shutter_updown
attr MQTT2_Shelly25_EG_Kueche_6B0284 jsonMap POWER1:0 POWER2:0 Shutter1_Tilt:tiltSlat Shutter1_Target:pct ANALOG_Temperature:temperature
attr MQTT2_Shelly25_EG_Kueche_6B0284 model tasmota_2ch_shutter_venetian_invert_0
attr MQTT2_Shelly25_EG_Kueche_6B0284 readingList tele/shelly25_EG_KUECHE_6B0284/LWT:.* LWT\
   tele/shelly25_EG_KUECHE_6B0284/STATE:.* { json2nameValue($EVENT,'',$JSONMAP) }\
   tele/shelly25_EG_KUECHE_6B0284/SENSOR:.* { json2nameValue($EVENT,'',$JSONMAP) }\
   tele/shelly25_EG_KUECHE_6B0284/INFO.:.* { $EVENT =~ m,^..Info[1-3]..(.+).$, ?  json2nameValue($1,'',$JSONMAP) : json2nameValue($EVENT,'',$JSONMAP) }\
   stat/shelly25_EG_KUECHE_6B0284/RESULT:.* { json2nameValue($EVENT,'',$JSONMAP) }\
   stat/shelly25_EG_KUECHE_6B0284/POWER1:.* {{'state' => 'opening'} if $EVENT eq 'on'}\
   stat/shelly25_EG_KUECHE_6B0284/POWER2:.* {{'state' => 'closing'} if $EVENT eq 'on'}\
Shelly25_EG_Kueche_6B0284:stat/shelly25_EG_KUECHE_6B0284/SHUTTER1:.* SHUTTER1
attr MQTT2_Shelly25_EG_Kueche_6B0284 room Haus,Haus->EG,MQTT2_DEVICE
attr MQTT2_Shelly25_EG_Kueche_6B0284 setList close:noArg cmnd/shelly25_EG_KUECHE_6B0284/ShutterClose1\
   open:noArg cmnd/shelly25_EG_KUECHE_6B0284/ShutterOpen1\
   half:noArg cmnd/shelly25_EG_KUECHE_6B0284/ShutterPosition1 50\
   pct:slider,0,1,100,color1:gradient_000000_FFFFFF cmnd/shelly25_EG_KUECHE_6B0284/ShutterPosition1 $EVTPART1\
   stop:noArg cmnd/shelly25_EG_KUECHE_6B0284/ShutterStop1\
   closeSlat:noArg cmnd/shelly25_EG_KUECHE_6B0284/ShutterTilt1 CLOSE\
   openSlat:noArg cmnd/shelly25_EG_KUECHE_6B0284/ShutterTilt1 OPEN\
   halfSlat:noArg cmnd/shelly25_EG_KUECHE_6B0284/ShutterTilt1 0\
   tiltSlat:slider,0,5,90 cmnd/shelly25_EG_KUECHE_6B0284/ShutterTilt1 $EVTPART1\
   resetClose:noArg cmnd/shelly25_EG_KUECHE_6B0284/ShutterSetClose1\
   x_configuration cmnd/shelly25_EG_KUECHE_6B0284/$EVTPART1 $EVTPART2
attr MQTT2_Shelly25_EG_Kueche_6B0284 setStateList open close half stop pct openSlat closeSlat halfSlat
attr MQTT2_Shelly25_EG_Kueche_6B0284 stateFormat LWT level: state slat: tiltSlat
attr MQTT2_Shelly25_EG_Kueche_6B0284 userReadings state:pct:.* {ReadingsNum($name,'pct',0)}
attr MQTT2_Shelly25_EG_Kueche_6B0284 webCmd open:close:stop:tiltSlat:pct
attr MQTT2_Shelly25_EG_Kueche_6B0284 widgetOverride tiltSlat:knob,min:0,max:90,angleArc:180,width:40,height:40,fgColor:#CCCCCC,bgColor:#FF9900,step:5,lineCap:round,rotation:anticlockwise,displayPrevious:1 pct:colorpicker,BRI,0,1,100


Icon für runter, rauf und stop muss dann noch weg, sobald der Rest genügend WAF hat. Ebenfalls wäre für den Tilt/Slat folgende Icon-Funktion cool 0° → 45° → 90° → 45° → 0° → 45° → ...

Gruss
tomix

Beta-User

Folgende Anmerkungen:
Das "kaputte" Icon kommt daher, dass das mal gedacht war für einen Wertebereich 0-99 (ZWave). Für die 0 braucht man hier eine Sonderbehandlung, die m.E. so aussehen könnte (Änderung im Perl-devStateIcon):
my $pct = maxNum(int((109 - ReadingsNum($name,'pct',0))/10)*10, 1)

Auf das userReadings kann man verzichten, wenn man die Zeile in der readingList anpaßt:
stat/shelly25_EG_KUECHE_6B0284/SHUTTER1:.* state
Das sollte dann auch zur Folge haben, dass "state" auf opening etc. bleibt, so dass man auch beim Lamellendrehen die "stop"-Anweisung absetzen kann.

Das mit dem gegenläufigen Durchgehen der slat-Werte kann damit m.E. entfallen, das ist eher schwierig umzusetzen und dann auch nicht so einfach zu erklären (wie erkennt man als User die Richtung, wenn länger nichts passiert war...?).
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