[ANLEITUNG] - Sonoff T1 EU / Tasmota Rollo Steuerung in 2 Schritten

Begonnen von 87insane, 10 März 2019, 12:15:24

Vorheriges Thema - Nächstes Thema

87insane

ANLEITUNG MUSS ÜBERARBEITET WERDEN. Der Fork ist mittlerweile fest mit drin. Die letzten Seiten dieses Threads, zeigen wie es aktuell geht. Das schreibe ich hier noch neu auf...

Hallo zusammen,

anbei eine kleine Anleitung, wie man z.B. einen Sonoff T1 EU als Rollo Schalter verwenden kann. In dieser Anleitung geht es darum, dies mit Tasmota zu verwirklichen.
Das geht natürlich auch mit ESPeasy. Dazu mehr hier: https://forum.fhem.de/index.php?topic=89136.0


1. Einrichtung des Schalters
Es gibt einen Fork der gut funktioniert und den Vorteil der direkten PCT Ansteuerung hat. (https://forum.creationx.de/lexicon/index.php?entry/34-rollladensteuerung-mit-der-stefanbode-tasmota-fork/)
- Firmware flashen und Schalter im Netzwerk ausfindig machen.
- Grundlegende Einstellungen tätigen. (DNS Name, Gerätetyp, MQTT Server...)


2. Einrichtung FHEM
- Fhem findet den Schalter bei aktiviertem autocreate automatisch. In das nun neue MQTT Device müsste ihr nur noch das passende Template auswählen. Je nachdem wie ihr die PCT-Anzeige gerne hättet, bitte entsprechendes Template wählen. (Rollo oben = PCT 0% ist A_02b_tasmota_2ch_shutter_invert_1 / Rollo oben = PCT 100% ist A_02b_tasmota_2ch_shutter_invert_0)
- SHUTTEROPENDURATION / SHUTTERCLOSEDURATION einstellen. Dies sind die Zeiten die das Rollo zum hoch/runter fahren benötigt.


Das Template setzt folgende Dinge im Schalter um:

StateText1-4  (Umgestellt auf kleine Buchstaben. Z.B.: on statt ON, für Events, devStateIcons usw.)
SETOPTION26 1 (Nutzt Indikatoren wenn nur ein Relay vorhanden (POWER1 statt POWER).)
SETOPTION81 1 (Interlock Split aktivieren / Gruppieren der Relays)
SETOPTION80 1 (Aktivierung der Rollo Funktion)
INTERLOCK0 1 (Verriegelung der Relais gegeneinander / Interlock)
SETOPTION14 wurde abgeschafft. Hatte den Job, den nun Interlock0 hat. Bitte aktuelle Release des Fork nutzen.
switchmode1 3 (Art wie Button1 (links) reagiert)
switchmode2 3 (Art wie Button2 (rechts) reagiert)
SHUTTEROPENDURATION 20 (Zeit für Rollo hoch)
SHUTTERCLOSEDURATION 20 (Zeit für Rollo runter)
SHUTTERINVERT 1 oder 0
GROUPTOPIC Rollos



Zusätzlich werden folgende Befehle in FHEM aktiviert/hinzugefügt:

close -           Schließt das Rollo komplett
open -            Öffnet das Rollo komplett
half -            Schließt das Rollo zu 50%
pct -             Slider zum auswählen des gewünschten Zustandes in %
stop -            Rollo anhalten wenn es fährt
resetClose -      Geschlossenes Rollo setzen. Wenn die Position mal nicht stimmen sollte.
x_configuration - Hier können komplette Befehle an den Schalter gesendet werden. Beispiel: SHUTTEROPENDURATION 18



Info
Die vorhandenen Templates setzen alle nötigen Einstellungen. Dabei werden wie im 44er ROLLO Modul auch Icons im FHEM Web gesetzt usw. An sich muss danach nichts mehr angepasst werden und ihr habt eine komplette Rollo Steuerung. Alle Einstellungen sind anpassbar, erweiterbar und so gut es geht auch übersichtlich eingestellt.
Solltet ihr Fragen haben oder Anregungen, bitte einfach posten. Ich würde mich freuen von euch zu hören. Bitte KEINE PNs!



DANKE an:
- Beta-User


Gruß,
Kai




PS: Für ggf. weitere Ideen anbei mal ein List von einem Schalter:
   READINGS:
     2019-03-21 18:01:19   DeepSleep       0
     2019-03-21 17:56:10   FallbackTopic   cmnd/Test01_fb/
     2019-03-21 17:56:10   GroupTopic      Rollos
     2019-03-21 18:01:19   Heap            21168
     2019-03-21 17:56:10   Hostname        Test01
     2019-03-21 17:56:10   IPAddress       192.168.xxx.xxx
     2019-03-21 18:00:57   LWT             Online
     2019-03-21 17:55:39   LedState        2
     2019-03-21 18:01:19   LoadAvg         9
     2019-03-21 17:56:10   Module          Sonoff T1 2CH
     2019-03-21 18:00:57   POWER           
     2019-03-21 18:01:19   POWER1          off
     2019-03-21 18:01:19   POWER2          off
     2019-03-21 17:55:37   Restart         Restarting
     2019-03-21 17:56:10   RestartReason   Software/System restart
     2019-03-21 18:01:19   SHUTTER-1_direction 0
     2019-03-21 18:01:19   SHUTTER-1_position 0
     2019-03-21 17:55:58   SaveData        on
     2019-03-21 17:55:39   SetOption14     on
     2019-03-21 17:55:38   SetOption26     on
     2019-03-21 17:55:39   SetOption80     on
     2019-03-21 17:55:40   SetOption81     on
     2019-03-21 18:01:19   Sleep           100
     2019-03-21 18:01:19   SleepMode       Dynamic
     2019-03-21 17:55:37   StateText1      off
     2019-03-21 17:55:37   StateText2      on
     2019-03-21 17:55:38   StateText3      toggle
     2019-03-21 17:55:38   StateText4      hold
     2019-03-21 17:55:41   SwitchMode1     3
     2019-03-21 17:55:41   SwitchMode2     3
     2019-03-21 18:01:59   Time            2019-03-21T18:02:00
     2019-03-21 18:01:59   Uptime          0T00:05:59
     2019-03-21 18:01:19   Vcc             3.104
     2019-03-21 17:56:10   Version         6.4.1.9 stb-1.1(sonoff)
     2019-03-21 17:56:10   WebServerMode   Admin
     2019-03-21 18:01:19   Wifi_AP         1
     2019-03-21 18:01:19   Wifi_BSSId      MAC
     2019-03-21 18:01:19   Wifi_Channel    WLAN Kanal
     2019-03-21 18:01:19   Wifi_RSSI       100
     2019-03-21 18:01:19   Wifi_SSId       SSID des WLANs
     2019-03-21 17:57:31   pct             0
     2019-03-21 17:55:57   shuttercloseduration1 20.0
     2019-03-21 17:55:57   shutterinvert1  1
     2019-03-21 17:56:31   shutteropen1    0
     2019-03-21 17:55:57   shutteropenduration1 20.0
     2019-03-21 17:57:21   shutterposition1 0
     2019-03-21 17:57:31   state           0

Beta-User

#1
Cool, da bist du ganz schön weit gekommen!

Habe mal auf die Schnelle versucht, das in die template-Sprache zu übersetzen. Das setzt aber die Laufzeit auf 100 sek in jede Richtung (wenn das die richtigen "Adressen" sind, ist geraten...).

Wenn du magst, mach da noch param-Abfragen für die Laufzeit rein (einen Namen dafür vergeben, der nicht per regex überschrieben wird (OPENINGDURATION, z.B.) und in den Perl-Teil einfach {undef}), dann sollte auch das klappen.

# tasmota 2ch as shutter device.
name:A_02b_tasmota_2ch_shutter
filter:TYPE=MQTT2_DEVICE
desc:Configures a dual chanel tasmota device as shutter; needs a special firmware version to operate.<br><a href="https://forum.fhem.de/index.php/topic,98366.msg917091.html#msg917091">Forum Thread</a>
set DEVICE attrTemplate A_01a_tasmota_basic_state_power1
par:DEVNAME;ESP's name in the topic;{ AttrVal("DEVICE","readingList","") =~ m,tele/([^/]*)/, ? $1 : undef }
par:IO_DEV;Currently used IO;{ AttrVal("DEVICE","IODev","")}
set IO_DEV publish cmnd/DEVNAME/Backlog SetOption80 1; SetOption14 1; SetOption81 1; switchmode1 3, switchmode2 3; SHUTTEROPENDURATION 100; SHUTTERCLOSEDURATION 100; SHUTTERINVERT 1; SaveData 1
attr DEVICE setList \
  close:noArg cmnd/DEVNAME/shutterposition 100\
  open:noArg cmnd/DEVNAME/shutterposition 0\
  pct::slider,0,1,100 cmnd/DEVNAME/shutterposition $EVTPART1\
  stop:noArg cmnd/DEVNAME/SHUTTERSTOP
attr DEVICE A_02b_tasmota_2ch_shutter
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

87insane

#2
Zitat von: Beta-User am 10 März 2019, 13:25:49
Cool, da bist du ganz schön weit gekommen!

Habe mal auf die Schnelle versucht, das in die template-Sprache zu übersetzen. Das setzt aber die Laufzeit auf 100 sek in jede Richtung (wenn das die richtigen "Adressen" sind, ist geraten...).

Wenn du magst, mach da noch param-Abfragen für die Laufzeit rein (einen Namen dafür vergeben, der nicht per regex überschrieben wird (OPENINGDURATION, z.B.) und in den Perl-Teil einfach {undef}), dann sollte auch das klappen.

# tasmota 2ch as shutter device.
name:A_02b_tasmota_2ch_shutter
filter:TYPE=MQTT2_DEVICE
desc:Configures a dual chanel tasmota device as shutter; needs a special firmware version to operate.<br><a href="https://forum.fhem.de/index.php/topic,98366.msg917091.html#msg917091">Forum Thread</a>
set DEVICE attrTemplate A_01a_tasmota_basic_state_power1
par:DEVNAME;ESP's name in the topic;{ AttrVal("DEVICE","readingList","") =~ m,tele/([^/]*)/, ? $1 : undef }
par:IO_DEV;Currently used IO;{ AttrVal("DEVICE","IODev","")}
set IO_DEV publish cmnd/DEVNAME/Backlog SetOption80 1; SetOption14 1; SetOption81 1; switchmode1 3, switchmode2 3; SHUTTEROPENDURATION 100; SHUTTERCLOSEDURATION 100; SHUTTERINVERT 1; SaveData 1
attr DEVICE setList \
  close:noArg cmnd/DEVNAME/shutterposition 100\
  open:noArg cmnd/DEVNAME/shutterposition 0\
  pct::slider,0,1,100 cmnd/DEVNAME/shutterposition $EVTPART1\
  stop:noArg cmnd/DEVNAME/SHUTTERSTOP
attr DEVICE A_02b_tasmota_2ch_shutter



Hab mal ein wenig rum gespielt und getestet....

habe mir ein paar Dinge zusammen kopiert, wie die devState Icons und ein paar Befehle hinzugefügt.

# tasmota 2ch as shutter device.
name:A_02b_tasmota_2ch_shutter
filter:TYPE=MQTT2_DEVICE
desc:Configures a dual chanel tasmota device as shutter; needs a special firmware version to operate.<br><a href="https://forum.fhem.de/index.php/topic,98366.msg917091.html#msg917091">Forum Thread</a>
set DEVICE attrTemplate A_01a_tasmota_basic_state_power1
par:DEVNAME;ESP's name in the topic;{ AttrVal("DEVICE","readingList","") =~ m,tele/([^/]*)/, ? $1 : undef }
par:IO_DEV;Currently used IO;{ AttrVal("DEVICE","IODev","")}
set IO_DEV publish cmnd/DEVNAME/Backlog SetOption80 1; SetOption14 1; SetOption81 1; switchmode1 3; switchmode2 3; SHUTTEROPENDURATION 20; SHUTTERCLOSEDURATION 20; SHUTTERINVERT 1; SaveData 1;
attr DEVICE setList \
   close:noArg cmnd/DEVNAME/shutterposition 100\
   open:noArg cmnd/DEVNAME/shutterposition 0\
   half:noArg cmnd/DEVNAME/shutterposition 50\
   pct:slider,0,1,100 cmnd/DEVNAME/shutterposition $EVTPART1\
   stop:noArg cmnd/DEVNAME/SHUTTERSTOP\
   resetClose:noArg cmnd/DEVNAME/SHUTTERSETCLOSE\
   timeUp:slider,10,1,50 cmnd/DEVNAME/SHUTTEROPENDURATION $EVTPART1\
   timeDown:slider,10,1,50 cmnd/DEVNAME/SHUTTERCLOSEDURATION $EVTPART1\
   invert:textField cmnd/DEVNAME/SHUTTERINVERT $EVTPART1
attr DEVICE devStateIcon 100:fts_shutter_100 0:fts_shutter_10 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 0\d.*:fts_shutter_100 set_.*:fts_shutter_updown
attr DEVICE stateFormat shutterposition1
<br>
<a href="http://IPAddress" target="_blank">Webinterface</a>
deleteReading DEVICE .*
attr DEVICE setStateList open close stop
attr DEVICE A_02b_tasmota_2ch_shutter


- Die Icons sind bei mir nicht alle richtig angeordnet. Ich weiß nicht warum. Die Icons sind vorhanden aber der Abstand zwischen Ihnen ist nicht überall gleich.
- Die Symbole sind aktuell mehr als benötigt. Denke aber die kann man drin lassen, werde ich das noch verfeinern. Es wird momentan kein laufendes Rollo angezeigt sondern direkt der gewünschte Zustand. Ich weiß nicht wie ich POWER1/POWER2 abfangen soll um zu wissen das es sich bewegt.
- Befehle hinzugefügt und getestet. Somit kann nun Hoch/Runter usw angepasst werden.

Ein paar Dinge haben mich echt nerven gekostet heute. Warum wird bei textField z.B. immer die letzte Zahl angezeigt aber auch "set"? Es steht also immer sowas wie "set 18" drin.

Diese Befehle gibt es aber habe ich noch nicht alle drin:
SHUTTEROPENDURATION, SHUTTERCLOSEDURATION, SHUTTERRELAY, SHUTTER50PERCENT, SHUTTERSETCLOSE, SHUTTERINVERT, SHUTTEROPEN, SHUTTERCLOSE, SHUTTERSTOP, SHUTTERPOSITION(0-100). 0 = CLOSE, 100 = OPEN (if Inverted: 100 = CLOSE, 0 = OPEN)

Bitte nicht meckern aber natürlich habe ich mir einiges vom 44_ROLLO abgeguckt. Das Modul ist gut und deswegen auch die Übernahme von z.B. "half".

Beta-User

So,

eine kleine (ungetestete) Weiterentwicklung. Da sollte manches aus deiner Wunschliste berücksichtigt sein, manches ist "anders", siehe unten:
# tasmota 2ch as shutter device.
name:A_02b_tasmota_2ch_shutter
filter:TYPE=MQTT2_DEVICE
desc:Configures a dual chanel tasmota device as shutter; needs a special firmware version to operate.<br><a href="https://forum.fhem.de/index.php/topic,98366.msg917091.html#msg917091">Forum Thread</a>
set DEVICE attrTemplate A_01a_tasmota_basic_state_power1
par:DEVNAME;ESP's name in the topic;{ AttrVal("DEVICE","readingList","") =~ m,tele/([^/]*)/, ? $1 : undef }
par:IO_DEV;Currently used IO;{ AttrVal("DEVICE","IODev","")}
set IO_DEV publish cmnd/DEVNAME/Backlog SetOption80 1; SetOption14 1; SetOption81 1; switchmode1 3; switchmode2 3; SHUTTEROPENDURATION 100; SHUTTERCLOSEDURATION 100; SHUTTERINVERT 1; SaveData 1;
attr DEVICE setList \
   close:noArg cmnd/DEVNAME/SHUTTERCLOSE\
   open:noArg cmnd/DEVNAME/SHUTTEROPEN\
   half:noArg cmnd/DEVNAME/shutterposition 50\
   pct:slider,0,1,100 cmnd/DEVNAME/shutterposition $EVTPART1\
   stop:noArg cmnd/DEVNAME/SHUTTERSTOP\
   resetClose:noArg cmnd/DEVNAME/SHUTTERSETCLOSE\
   x_configuration cmnd/DEVNAME/$EVTPART1 $EVTPART2\
   x_invert:textField cmnd/DEVNAME/SHUTTERINVERT $EVTPART1
attr DEVICE devStateIcon 100:fts_shutter_100 0:fts_shutter_10 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 0\d.*:fts_shutter_100 set_.*:fts_shutter_updown
attr DEVICE stateFormat shutterposition1
attr DEVICE webCmd open:close:stop:pct
attr DEVICE cmdIcon open:fts_shutter_up close:fts_shutter_down stop:control_x
attr DEVICE comment Hier könnten Hinweise stehen, welche Werte für x_configuration sinnvoll sein könnten...
<br>
<a href="http://IPAddress" target="_blank">Webinterface</a>
deleteReading DEVICE .*
attr DEVICE setStateList open close stop
attr DEVICE A_02b_tasmota_2ch_shutter


Zitat von: 87insane am 10 März 2019, 16:50:15- Die Icons sind bei mir nicht alle richtig angeordnet. Ich weiß nicht warum. Die Icons sind vorhanden aber der Abstand zwischen Ihnen ist nicht überall gleich.
- Die Symbole sind aktuell mehr als benötigt. Denke aber die kann man drin lassen, werde ich das noch verfeinern.
Sollten die beiden neuen Attribute webCmd und cmdIcon machen; wo das mit dem Abstand ggf. herkommt, habe ich mir nicht angesehen.

ZitatEs wird momentan kein laufendes Rollo angezeigt sondern direkt der gewünschte Zustand. Ich weiß nicht wie ich POWER1/POWER2 abfangen soll um zu wissen das es sich bewegt.
Dazu müßte man ggf. eine eventMap bauen und aus "irgendeiner" POWER-on-Meldung einen passenden Zustand basteln. Oder eben ein userreading, das (nur!) auf POWERx triggert und einen "motor"-state ableitet...

Zitat- Befehle hinzugefügt und getestet. Somit kann nun Hoch/Runter usw angepasst werden.

Ein paar Dinge haben mich echt nerven gekostet heute. Warum wird bei textField z.B. immer die letzte Zahl angezeigt aber auch "set"? Es steht also immer sowas wie "set 18" drin.

Diese Befehle gibt es aber habe ich noch nicht alle drin:
SHUTTEROPENDURATION, SHUTTERCLOSEDURATION, SHUTTERRELAY, SHUTTER50PERCENT, SHUTTERSETCLOSE, SHUTTERINVERT, SHUTTEROPEN, SHUTTERCLOSE, SHUTTERSTOP, SHUTTERPOSITION(0-100). 0 = CLOSE, 100 = OPEN (if Inverted: 100 = CLOSE, 0 = OPEN)

Bitte nicht meckern aber natürlich habe ich mir einiges vom 44_ROLLO abgeguckt. Das Modul ist gut und deswegen auch die Übernahme von z.B. "half".
Abgucken ist gut, ich hatte nur per pm angemerkt, dass du die logische Zwischenschicht nicht brauchst, wenn der Aktor die Laufzeit selbst überwachen kann...
Die Befehle würde ich nicht alle einzeln aufnehmen (aber für open und close die direkten Entsprechungen statt der %-Werte nehmen, dann paßt das auch für nicht invertierte Typen), sondern gerade für die Konfigurationsbefehle halt ein Textfeld hernehmen, in dem dann beides (Datenpunkt und Wert) einzutragen ist. Das braucht man nur zum Einrichten (daher mit x_ nach hinten sortiert) und sollte dazu eben wissen, was es alles so gibt, daher der Kommentar.
Um "doofe" Fragen neuer Nutzer zu vermeiden, bei denen die 20 nicht paßt, würde ich per default auch eher was deutlich zu langes (100) ausliefern, gerade um den geneigten user drauf zu stoßen, dass er das bitte anpaßt und eben nicht davon ausgeht, dass _alles_ automatisch richtig ist...
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

87insane

#4
Hey,

anbei mal meine angepasste Version (wie auch bei Dir, siehe unten):
# tasmota 2ch as shutter device.
name:A_02b_tasmota_2ch_shutter
filter:TYPE=MQTT2_DEVICE
desc:Configures a dual chanel tasmota device as shutter; needs a special firmware version to operate.<br><a href="https://forum.fhem.de/index.php/topic,98366.msg917091.html#msg917091">Forum Thread</a>
set DEVICE attrTemplate A_01a_tasmota_basic_state_power1
par:DEVNAME;ESP's name in the topic;{ AttrVal("DEVICE","readingList","") =~ m,tele/([^/]*)/, ? $1 : undef }
par:IO_DEV;Currently used IO;{ AttrVal("DEVICE","IODev","")}
set IO_DEV publish cmnd/DEVNAME/Backlog SetOption80 1; SetOption14 1; SetOption81 1; switchmode1 3; switchmode2 3; SHUTTEROPENDURATION 1; SHUTTERCLOSEDURATION 1; SHUTTERINVERT 1; SaveData 1;
attr DEVICE setList \
   close:noArg cmnd/DEVNAME/SHUTTERCLOSE\
   open:noArg cmnd/DEVNAME/SHUTTEROPEN\
   half:noArg cmnd/DEVNAME/shutterposition 50\
   pct:slider,0,1,100 cmnd/DEVNAME/shutterposition $EVTPART1\
   stop:noArg cmnd/DEVNAME/SHUTTERSTOP\
   resetClose:noArg cmnd/DEVNAME/SHUTTERSETCLOSE\
   x_configuration cmnd/DEVNAME/$EVTPART1 $EVTPART2\    
   x_invert:select,0,1 cmnd/DEVNAME/SHUTTERINVERT $EVTPART1
attr DEVICE devStateIcon 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 webCmd open:close:half:stop:pct
attr DEVICE cmdIcon open:fts_shutter_up close:fts_shutter_down stop:fts_shutter_manual half:fts_shutter_50
attr DEVICE comment SHUTTEROPENDURATION: Time for a complete shutter up. SHUTTERCLOSEDURATION: Time for a complete shutter down.
attr DEVICE stateFormat shutterposition1\
<br>\
<a href="http://IP-Address" target="_blank">Webinterface</a>
deleteReading DEVICE .*
attr DEVICE setStateList open close stop
attr DEVICE A_02b_tasmota_2ch_shutter


ZitatSollten die beiden neuen Attribute webCmd und cmdIcon machen; wo das mit dem Abstand ggf. herkommt, habe ich mir nicht angesehen.
Hätte ich ggf. auch im Template posten sollen :-\ Habe die Dinge gesetzt gehabt aber nach wie vor gilt das Bild 2 aus Post 1. Da sieht man wie die sich bei mir verschieben in der Übersicht. In der aktuellen Version des Templates habe ich es diesmal auch mit gepostet und nicht wieder vergessen :)

ZitatDazu müßte man ggf. eine eventMap bauen und aus "irgendeiner" POWER-on-Meldung einen passenden Zustand basteln. Oder eben ein userreading, das (nur!) auf POWERx triggert und einen "motor"-state ableitet...
Der Schalter liefert POWER1 on/off oder POWER2 on/off. POWER1 ist immer hoch, POWER2 runter. Wenn ich aber z.B. HIER_DAS_READING:fts_shutter_up@red nutzen wollen würde weiß ich nicht wie ich sage, dass er das Reading von POWER1 nehmen soll. Wenn ich nur on:fts_shutter_up@red, reagiert er natürlich auf alles was an/aus geht bei diesem Gerät. Die Syntax kenne ich nicht. Hätte was erwartet wie POWER1:on:fts_shutter_up@red.

Zitat...sondern gerade für die Konfigurationsbefehle halt ein Textfeld hernehmen, in dem dann beides (Datenpunkt und Wert) einzutragen ist. Das braucht man nur zum Einrichten (daher mit x_ nach hinten sortiert) und sollte dazu eben wissen, was es alles so gibt, daher der Kommentar.
Um "doofe" Fragen neuer Nutzer zu vermeiden, bei denen die 20 nicht paßt, würde ich per default auch eher was deutlich zu langes (100) ausliefern, gerade um den geneigten user drauf zu stoßen, dass er das bitte anpaßt und eben nicht davon ausgeht, dass _alles_ automatisch richtig ist...

Kommentar und alle Befehle, habe ich jetzt hinten angestellt. Ist nur 1min Arbeit, weswegen ich erstmal alles andere und wichtige fertig haben wollte. Mache ich aber gerne noch am Ende.
Um die Fragen direkt im Keim zu ersticken habe ich die Zeit nun auf 1 Sekunde gestellt. Also das sollte wirklich jeder sofort merken. Bei 100 oder sehr hohen Zahlen kommen komische Positionen heraus aber man weiß ggf. nicht direkt warum. Bei einer Sekunde, sollte man beim testen ja direkt sehen das etwas nicht stimmen kann.

Was habe ich getan?
x_invert auf select gestellt. Es gibt nur 1 oder 0.
comment: Die 2 wichtigen Befehle mal hinterlegt.
webCmd: Erweitert um "half"
cmdIcon: An die Symbole von ROLLO angepasst.
StateFormat: Wieder richtig in das Template geschrieben. Es war nicht zusammen und ging deswegen nicht in deiner ungetesteten Version. (PS: Danke für das Training :-P)
devStateIcon: Regex für Zahlen <10 angepasst für das eine Symbol (PCT Wert wird von 1-9 nur einstellig dargestellt). Hier fehlt aber noch eine Art "automatische Invert Erkennung". Ich habe Invert auf 1 und so rum sind aktuell auch die Symbole.

Thema setStateList: setStateList command command ...
This attribute is used to get more detailed feedback when switching devices. I.e. when the command on is contained in the list, state will be first set to set_on, and after the device reports execution, state will be set to on (probably with the help of stateFormat). Commands not in the list will set a reading named after the command, with the word set and the command parameters as its value.
If this attribute is not defined, then a set command will set the state reading to the name of the command.


Ich habe keine Ahnung woher setStateList die Erkenntnis nimmt, das ein Gerät wirklich schon diesen Befehl ausführt. Wenn das wirklich funktioniert und nicht nur immer etwas in die Readings schreibt, macht dann nicht auch Sinn, alle Befehle hierin mit zu übernehmen? (Wie im webCmd open:close:half:stop:pct)

In meinen Augen läuft das hier schon sehr gut! Bin nach wie vor sehr erstaunt, wie einfach das tatsächlich ist. Zudem würde ich auch sagen, es läuft bis auf Kleinigkeiten so gut, das man es auch übernehmen könnte.

Was fehlt noch oder passt nicht?
- Finde die Benamung des Templates zu unschlüssig. Wenn ich nicht selber dran arbeiten würde, würde ich es nicht wissen. Ggf. sollte das erweitert werden. Z.B. womit getestet wurde. In meinem Fall ist das ein Sonoff T1 EU (2-Gang).
- Invertierung der devStateIcon´s geht doch bestimmt irgendwie auch automatisch wenn man x_invert von 1 auf 0 oder umgekehrt einstellt....
- Nach wie vor habe ich in der FHEM WebGui verschobene Icons (Bild 2).
- Wäre schön aber in meinen Augen auch kein muss - fts_shutter_up@red und fts_shutter_down@red, wie im ROLLO Modul um ein aktuell fahrendes Rollo zu erkennen.

Beta-User

Zitat von: 87insane am 11 März 2019, 19:01:08
Hätte ich ggf. auch im Template posten sollen :-\ Habe die Dinge gesetzt gehabt aber nach wie vor gilt das Bild 2 aus Post 1. Da sieht man wie die sich bei mir verschieben in der Übersicht. In der aktuellen Version des Templates habe ich es diesmal auch mit gepostet und nicht wieder vergessen :)
Ah ok; ich schaue mir in der Regel die Ausgangspostings nur an, wenn mir jemand sagt, dass da was neues steht...

ZitatDer Schalter liefert POWER1 on/off oder POWER2 on/off. POWER1 ist immer hoch, POWER2 runter.
ungetestet vielleicht:
attr DEVICE eventMap { dev=>{'^(.*)POWER1: on$'=>'state: opening', '^(.*)POWER2: on$'=>'state: closing'} }
ZitatWenn ich aber z.B. HIER_DAS_READING:fts_shutter_up@red nutzen wollen würde weiß ich nicht wie ich sage, dass er das Reading von POWER1 nehmen soll. Wenn ich nur on:fts_shutter_up@red, reagiert er natürlich auf alles was an/aus geht bei diesem Gerät. Die Syntax kenne ich nicht. Hätte was erwartet wie POWER1:on:fts_shutter_up@red.
Vielleicht geht ohne die eventMap: POWER1.on:fts_shutter_up@red:stopVorne steht die Regex (daher der Punkt! für das Leerzeichen...) Dann das Symbol@Farbe, dann der Befehl, der ausgelöst werden soll (hier:stop).
ZitatKommentar und alle Befehle, habe ich jetzt hinten angestellt. Ist nur 1min Arbeit, weswegen ich erstmal alles andere und wichtige fertig haben wollte. Mache ich aber gerne noch am Ende.Um die Fragen direkt im Keim zu ersticken habe ich die Zeit nun auf 1 Sekunde gestellt. Also das sollte wirklich jeder sofort merken. Bei 100 oder sehr hohen Zahlen kommen komische Positionen heraus aber man weiß ggf. nicht direkt warum. Bei einer Sekunde, sollte man beim testen ja direkt sehen das etwas nicht stimmen kann.
Da kann der "DAU" aber denken, sein Aktor wäre kaputt... Wenn kurz, dann nicht sehr viel zu kurz...

ZitatWas habe ich getan?
x_invert auf select gestellt. Es gibt nur 1 oder 0.
comment: Die 2 wichtigen Befehle mal hinterlegt.
M.E. sollte man als auswählbare Optionen nur Dinge haben, die man im Regelbetrieb braucht. Da man das Rollo in der Regel nur einmal einstellt, würde ich hier den Komfort lieber weglassen. Das hat auch den Vorteil, dass du dir keine Gedanken machen mußt um die Invertierung der Symbole usw. Du lieferst EINEN Standard, alles was abweicht, kommt entweder in einen Kommentar, und wenn das zu lang wird, in einen Link zum Weiterlesen. Das ist schon sehr viel Komfort, mehr muß gar nicht sein...
Dafür sollten die Kommentare verständlich sein, nur ein zu kurz hingeschriebener Befehl ohne Hinweis, worauf er sich bezieht, ist da nicht optimal. Lieber ein "echtes" Beispiel und der Link, wo mehr zu finden ist...
Zitat
Thema setStateList: [...]
Ich habe keine Ahnung woher setStateList die Erkenntnis nimmt,[...]
setStatList hat keine Erkenntnisse... Es ist nur so, dass alle Befehle ohne dieses Attribut im state landen, also auch, wenn man z.B. eine Lampe auf irgendeinen Farbwert setzt. Da aber die tatsächliche Schaltung des Farbwerts woanders zurückkommt (nämlich den color-Readings), ändert sich state auch nicht mehr...
Daher habe ich Rudi genötigt, es zuzulassen, dass nur bestimmte set-Vorgänge in state schreiben, und der Rest in die jeweiligen Readings kommt (mit also pct set 50). Da bei dir das pct-Reading den STATE schreibt (außer ggf. den eventMap-Fällen oben), ist das hier nicht soo wichtig, weil vermutlich immer auch zeitnah ein pct-Wert vom Aktor her kommt.
(Das ist Kauderwelsch, den du ggf. mal in einer stillen Stunde in Ruhe verdauen solltest ;) ).
ZitatIn meinen Augen läuft das hier schon sehr gut! Bin nach wie vor sehr erstaunt, wie einfach das tatsächlich ist. Zudem würde ich auch sagen, es läuft bis auf Kleinigkeiten so gut, das man es auch übernehmen könnte.

- Finde die Benamung des Templates zu unschlüssig. Wenn ich nicht selber dran arbeiten würde, würde ich es nicht wissen. Ggf. sollte das erweitert werden. Z.B. womit getestet wurde. In meinem Fall ist das ein Sonoff T1 EU (2-Gang).
Ich finde es auch schon sehr gut!
Die Benennung ist m.E. nach einem konkreten Gerät NICHT sinnvoll. Welche konkrete Hardware genutzt wurde, kommt in die desc:. Ansonsten ist das nicht mehr wichtig, ob das mal ein Shelly war, ein Sonoff xy oder ein Eigenbau. Mit Tasmota verhalten die sich ALLE (im Prinzip) GLEICH. Wichtig ist nur noch, dass 2 Relays angesteuert werden, daher das 2ch (über Details lasse ich mit mir reden, aber Sonoff kommt nicht in den Titel...).
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

87insane

#6
1.
Zitatattr DEVICE eventMap { dev=>{'^(.*)POWER1: on$'=>'state: opening', '^(.*)POWER2: on$'=>'state: closing'} }
2.
ZitatPOWER1.on:fts_shutter_up@red:stop

Geht beides nicht. Warum?
1. Weil state zwar gesetzt wird aber kein ICON geändert wird. Vermutlich weil nur shutterposition1 im StateFormat drin steht? Also ich habe nun locker 6 Stunden rum probiert und muss mich für heute geschlagen geben. Habe auch ein wenig mit IF im StateFormat gespielt aber ich bekomme nicht alles zusammen hin. Also Bild bei Fahrt + Webinterface + PCT Bild bei Stop.
2. Geht nicht auf das gleiche Icon. Also ich weiß nicht wie. Wenn ich nicht nur shutterposition1 und Webinterface, sondern auch noch POWER1 und POWER2 ins StateFormat setze, bekomme ich diese Lampen angezeigt und diese zeigen auch aus/an. Aber ich würde es gerne im gleichen Icon haben.

Bezüglich des DAUs - Ist mir egal, mach es am Ende einfach wie du es für korrekt empfindest. Kann es bei mir bzw. jeder der will, einfach anpassen.

ZitatsetStatList hat keine Erkenntnisse... Es ist nur so, dass alle Befehle ohne dieses Attribut im state landen, also auch, wenn man z.B. eine Lampe auf irgendeinen Farbwert setzt. Da aber die tatsächliche Schaltung des Farbwerts woanders zurückkommt (nämlich den color-Readings), ändert sich state auch nicht mehr...
Daher habe ich Rudi genötigt, es zuzulassen, dass nur bestimmte set-Vorgänge in state schreiben, und der Rest in die jeweiligen Readings kommt (mit also pct set 50). Da bei dir das pct-Reading den STATE schreibt (außer ggf. den eventMap-Fällen oben), ist das hier nicht soo wichtig, weil vermutlich immer auch zeitnah ein pct-Wert vom Aktor her kommt.
(Das ist Kauderwelsch, den du ggf. mal in einer stillen Stunde in Ruhe verdauen solltest ;) ).

Tatsächlich mehrfach gelesen aber ich gebe mal in kurz wieder was ich verstanden habe:
mit setstatelist = es wird ausschließlich im eigenen Reading geschrieben.
ohne setstatelist = es wird zusätzlich in state geschrieben.

Möchte folgendes mal kurz erklären....
Der Aktor hat zwar einen PCT Wert. Aber dieser ist aus der zeitlichen Berechnung des Schalters. Klappt bei gut eingestellten Zeiten wirklich x mal besser wie im Rollo Modul (wegen dem delay zum schalter, ggf. sogar über Repeater usw...). Am Ende wird auch diese Variante aber niemals zu 100% klappen. Da es ganze Sekunden sind und keine Millisekunden. Wie dem auch seie, ist es wirklich viel besser so.
Habe bei mir bisher aber nur wegen meiner Spielerei Abweichungen der Position.

Thema Namen: Überzeugt :)

Habe bei webCmd nun folgendes stehen ":open:close:half:stop:pct". Es ist nur ":" der Doppelpunkt am Anfang mehr. Ich weiß nicht warum die Symbole so komisch verschoben sind. Wenn ich mit dem ":" am Anfang arbeite, sind alle um ein paar cm weiter rechts aber nebeneinander. Das ist zwar nur Schönheit aber es nervt mich enorm! (Vergleichsbild angehangen)

Offene Punke:
- Invertierung der devStateIcon´s: Wird gestrichen. Hast du Recht! Wer es anders mag kann es ja eben anpassen.
- Nach wie vor habe ich in der FHEM WebGui verschobene Icons (Bild im Anhang als Vergleich)
- Erkennung von aktuell fahrendem Rollo wäre nach wie vor schön. Bin aber ratlos.
- Helfe gerne beim ausarbeiten der Kommentare und was du da so haben magst. Am besten mal ne kleine Info was du brauchst. Alle Infos hatte ich in folgendem Link gefunden: https://github.com/stefanbode/Sonoff-Tasmota/wiki/Shutter-blinds-working-with-two-relays
- PCT Schiebregler aus pct:slider,0,1,100 cmnd/sonoff/shutterposition $EVTPART1 stimmt bei externer Steuerung nicht mit Reading überein. shutterposition1 ist sofort korrekt aber der Slider nicht. Dieser bleibt auf der Position, die FHEM zuletzt angesteuert hat.

PS: Nach wie vor bin ich zu blöd die Steuerung zu verstehen, via MQTT!
Nehme mal diesen Befehl als Beispiel: cmnd/sonoff/SHUTTEROPEN - Wenn ich diesen Über die Bridge sende, klappt es bei meinem AZ Rollo. Aber wenn ich nun ein weiteres Rollo fertig machen wollen würde, würde es ja auch cmnd/sonoff/SHUTTEROPEN diesen Befehl nehmen. Wie kann ich nun die Rollos einzeln ansteuern. Mir ist die Geschichte mit den Topics usw nach wie vor zu hoch :\
Ich würde es ja so ertwarten: cmnd/az_rollo/SHUTTEROPEN, cmnd/bz_rollo/SHUTTEROPEN oder von mir aus auch az_rollo/sonoff/SHUTTEROPEN, bz_rollo/sonoff/SHUTTEROPEN....
Da ist auch eine klare Unterscheidung drin, die ich aktuell bei einem weiterem Rollo nicht hätte.

Beta-User

Wenn 1 klappt mit der state-Zuweisung, steht demnach "opening" im state und kann dann auch so genutzt werden:
opening:fts_shutter_up@red:stop
Damit müßte dann auch das aktuell fahrende Rollo erkennbar sein (mind. über einen Event in state!).

ZitatTatsächlich mehrfach gelesen aber ich gebe mal in kurz wieder was ich verstanden habe:
mit setstatelist = es wird ausschließlich im eigenen Reading geschrieben.
ohne setstatelist = es wird zusätzlich in state geschrieben.
Nicht ganz: alles "set"-Anweisungen, die namentlich in setStateList auftauchen, verändern state, der Rest _nur_ das entsprechende Reading.

Schon mal versucht, ob der Aktor auch 20.3 verstehen würde für die Zeiten?
ZitatIch würde es ja so ertwarten: cmnd/az_rollo/SHUTTEROPEN, cmnd/bz_rollo/SHUTTEROPEN ....
Sorry für die Verwirrung um die Namensgebung! Wenn die firmware da - aus welchen Gründen auch immer - den Namen "sonoff" da reinschreibt für alle Geräte, dann liegst du richtig mit dem Umbenennen in "xx_rollo"; bitte aber cmnd und tele da lassen, wo sie sind (sonst wird das weggefiltert...).

- PCT Schiebregler aus pct:slider,0,1,100 cmnd/sonoff/shutterposition $EVTPART1 stimmt bei externer Steuerung nicht mit Reading überein. shutterposition1 ist sofort korrekt aber der Slider nicht. Dieser bleibt auf der Position, die FHEM zuletzt angesteuert hat.
OK, scheint wieder zum Teil eine dieser vielfältigen Optionen bei tasmota zu sein. Full story:
Mach bei der setList folgendes draus:
pct:slider,0,1,100 cmnd/sonoff/shutterposition1 $EVTPART1
Und in der readingList schaust du nach dem entsprechenden tele (?)-Reading und benennst das am Ende um in pct (statt shutterposition1?). Diese Angaben müssen übereinstimmen, das eine ist vom Gerät zum Aktor, das andere der Rückweg; in beidem muß der Readingname übereinstimmen ;) .

Den Rest bekommen wir vollends hin, schau dir auch immer an, was über das IO an Events läut und wo das landet, dann wird vieles klarer ;) . (Ich würde die Angaben zum MQTT-Verkehr auch brauchen, um nicht bei manchem raten zu müssen...)
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

Beta-User

Nachtrag noch:
die Attribute setStateList und stateFormat solltest du erst mal weglassen. Das entscheidet zwar uU. über das Aussehen, aber verdeckt im Moment evtl. noch die "eigentliche" Datenlage.

Dann wäre noch ein Vorschlag, statt mit stateFormat den pct-Wert (das Reading muß aber vermutlich in der readingList auch entsprechend benannt sein!) via eventMap in den state zu schieben. Könnte in etwa so gehen:

attr DEVICE eventMap { dev=>{'^(.*)POWER1: on$'=>'state: opening', '^(.*)POWER2: on$'=>'state: closing', '^(.*)pct: ([\d]+)$'=>'state: $2'} }
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

87insane

#9
So langsam beginnt es keinen Spaß mehr zu machen. Das ergibt alles keinen Sinn!


Also....

Was kommt mir komisch vor?
Wenn ich autocreate auf 1 mache im Gerät empfängt er Readings in der readingList. Aber die sehen dann so aus:
az_rollo:tele/sonoff/UPTIME:.* { json2nameValue($EVENT) }
az_rollo:stat/sonoff/POWER2:.* POWER2
az_rollo:stat/sonoff/SHUTTER1:.* pct
az_rollo:tele/sonoff/RESULT:.* { json2nameValue($EVENT) }
az_rollo:stat/sonoff/POWER1:.* POWER1


Zu beginn, nachdem ein Template gewählt wurde stehen erst mal nur diese drin (nach autocreate und ein wenig warten/Knöpfe drücken stehen alle zusammen drin):
tele/sonoff/LWT:.* LWT
  tele/sonoff/STATE:.* { json2nameValue($EVENT) }
  tele/sonoff/SENSOR:.* { json2nameValue($EVENT) }
  tele/sonoff/INFO.:.* { json2nameValue($EVENT) }
  stat/sonoff/RESULT:.* { json2nameValue($EVENT) }


Frage: Denke den Unterschied sieht man. Kannst du mir das näher bringen?
INFO: Der Slider ist nun ok. Auch hier aber eine Info. shutterposition1 verändert sich instand wenn man z.B. PCT 40 einstellt. Es gibt aber ein weiteres (in meinen Augen besseres) Reading. Dies heißt SHUTTER-1_position. Das wird erst dann aktualisiert, wenn der Schalter das Rollo fertig in Position gefahren hat. Sieht man auch oben in der readingsList.

Was mich gleich aber zum heulen bringt ist folgendes.....
... Thema "state"....
In state steht z.B. "set_open", "set_pct" oder sonst was. Leider bekomme ich mit deinem eventMap auch nicht mehr zu sehen. Im EventMonitor sehe ich, wenn ich das EventMap gesetzt habe, zwar kein POWER1/2 on mehr aber dafür steht dann opening/closing dort (EventMonitor - leider nicht im state). Wenn ich die Erklärung zu setStateList nun korrekt verstanden habe, muss der entsprechende Befehl da rein. Wenn ich es so mache: "open close half stop pct opening closing", gehts auch nicht. Sicher wieder ein Fehler drin. Du sagtest ja auch nur "set Befehle". Ggf. deswegen?
KURZ: state wird nicht korrekt gesetzt. Immer nur set_open, set_close, set_pct.... KEIN opening, closing oder PCT-Wert (Hier würde ich auch besser auf SHUTTER-1_position anstelle von shutterposition1 gehen. SHUTTER-1_position wird ja eh erst gesetzt wenn das Rollo fertig ist und dann brauch man ja auch nur noch den Wert und kein Symbol das eine Fahrt anzeigt).

Offen bleibt also folgendes:
- Nach wie vor die Geschichte mit den Namen (ist aber wohl eher kein allgemeines sondern ein Problem von mir... Andere scheinen zu wissen wie das und warum das so ist)
Hab mal ein Bild von dem Menu im Schalter mit gepostet. Ist bis auf die Server Daten Werkseinstellung von der FW.
- Icons in der GUI verschoben
- Keine Erkennung von laufendem Rollo.

Ach ja und noch eine Frage. Kann man die veränderten Werte von z.B. "az_rollo:stat/sonoff/SHUTTER1:.* pct" anstelle von "az_rollo:stat/sonoff/SHUTTER1:.* pct POWER" aus der readingList, direkt mit ins Template packen? Macht ja schon Sinn, wegen des Sliders.

ZitatSchon mal versucht, ob der Aktor auch 20.3 verstehen würde für die Zeiten?
Das geht tatsächlich. Es gibt auch noch eine Art Kalibrierung. Die habe ich noch nicht getestet. Ist auch erstmal egal. Hole ich aber noch nach. So genau (also auch 0.5) kann ich eh kein Rollo messen mit der Stopuhr in der Hand  ;) - Aber ggf. zum fein tunen. Somit könnte das aber tatsächlich zu 100% was gutes werden :)


Setze an dieser Stelle mal ein List -r dran.... Denke es könnte ggf. helfen...
(WLAN habe ich entfernt..)

define MQTT2_az_rollo MQTT2_DEVICE az_rollo
attr MQTT2_az_rollo IODev MQTT2_FHEM_Server
attr MQTT2_az_rollo autocreate 1
attr MQTT2_az_rollo cmdIcon open:fts_shutter_up close:fts_shutter_down stop:fts_shutter_manual half:fts_shutter_50
attr MQTT2_az_rollo comment SHUTTEROPENDURATION: Time for a complete shutter up. SHUTTERCLOSEDURATION: Time for a complete shutter down.
attr MQTT2_az_rollo devStateIcon opening:fts_shutter_up@red:stop 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_az_rollo eventMap { dev=>{'^(.*)POWER1: on$'=>'state: opening', '^(.*)POWER2: on$'=>'state: closing', '^(.*)pct: ([\d]+)$'=>'state: $2'} }
attr MQTT2_az_rollo model A_01a_tasmota_basic_state_power1
attr MQTT2_az_rollo readingList tele/sonoff/LWT:.* LWT\
  tele/sonoff/STATE:.* { json2nameValue($EVENT) }\
  tele/sonoff/SENSOR:.* { json2nameValue($EVENT) }\
  tele/sonoff/INFO.:.* { json2nameValue($EVENT) }\
  stat/sonoff/RESULT:.* { json2nameValue($EVENT) }\
az_rollo:tele/sonoff/UPTIME:.* { json2nameValue($EVENT) }\
az_rollo:stat/sonoff/POWER2:.* POWER2\
az_rollo:stat/sonoff/SHUTTER1:.* pct\
az_rollo:tele/sonoff/RESULT:.* { json2nameValue($EVENT) }\
az_rollo:stat/sonoff/POWER1:.* POWER1
attr MQTT2_az_rollo room Arbeitszimmer,ESPEasy
attr MQTT2_az_rollo setList close:noArg cmnd/sonoff/SHUTTERCLOSE\
   open:noArg cmnd/sonoff/SHUTTEROPEN\
   half:noArg cmnd/sonoff/shutterposition1 50\
   pct:slider,0,1,100 cmnd/sonoff/shutterposition1 $EVTPART1\
   stop:noArg cmnd/sonoff/SHUTTERSTOP\
   resetClose:noArg cmnd/sonoff/SHUTTERSETCLOSE\
   x_configuration cmnd/sonoff/$EVTPART1 $EVTPART2\
   x_invert:select,0,1 cmnd/sonoff/SHUTTERINVERT $EVTPART1
attr MQTT2_az_rollo setStateList open close half stop
attr MQTT2_az_rollo stateFormat state\
<br>\
<a href="http://IP-Address" target="_blank">Webinterface</a>
attr MQTT2_az_rollo webCmd open:close:half:stop:pct

setstate MQTT2_az_rollo set_stop\
<br>\
<a href="http://IP-Address" target="_blank">Webinterface</a>
setstate MQTT2_az_rollo 2019-03-13 17:09:40 Command Unknown
setstate MQTT2_az_rollo 2019-03-13 18:10:44 DeepSleep 0
setstate MQTT2_az_rollo 2019-03-13 18:10:44 Heap 21136
setstate MQTT2_az_rollo 2019-03-13 18:10:44 LoadAvg 9
setstate MQTT2_az_rollo 2019-03-13 18:10:44 POWER1 off
setstate MQTT2_az_rollo 2019-03-13 18:10:54 POWER2 off
setstate MQTT2_az_rollo 2019-03-13 18:10:54 SHUTTER-1_direction 0
setstate MQTT2_az_rollo 2019-03-13 18:10:54 SHUTTER-1_position 40
setstate MQTT2_az_rollo 2019-03-13 17:05:39 SHUTTER1 25
setstate MQTT2_az_rollo 2019-03-13 16:59:16 SaveData on
setstate MQTT2_az_rollo 2019-03-13 16:59:14 SetOption14 on
setstate MQTT2_az_rollo 2019-03-13 16:59:13 SetOption26 on
setstate MQTT2_az_rollo 2019-03-13 16:59:13 SetOption80 on
setstate MQTT2_az_rollo 2019-03-13 16:59:14 SetOption81 on
setstate MQTT2_az_rollo 2019-03-13 18:10:44 Sleep 100
setstate MQTT2_az_rollo 2019-03-13 18:10:44 SleepMode Dynamic
setstate MQTT2_az_rollo 2019-03-13 16:59:12 StateText1 off
setstate MQTT2_az_rollo 2019-03-13 16:59:12 StateText2 on
setstate MQTT2_az_rollo 2019-03-13 16:59:12 StateText3 toggle
setstate MQTT2_az_rollo 2019-03-13 16:59:12 StateText4 hold
setstate MQTT2_az_rollo 2019-03-13 16:59:14 SwitchMode1 3
setstate MQTT2_az_rollo 2019-03-13 16:59:15 SwitchMode2 3
setstate MQTT2_az_rollo 2019-03-13 18:10:44 Time 2019-03-13T18:10:45
setstate MQTT2_az_rollo 2019-03-13 18:10:44 Uptime 3T01:45:50
setstate MQTT2_az_rollo 2019-03-13 18:10:44 Vcc 3.134
setstate MQTT2_az_rollo 2019-03-13 18:10:54 pct 40
setstate MQTT2_az_rollo 2019-03-13 17:36:43 shutterclose1 100
setstate MQTT2_az_rollo 2019-03-13 17:00:18 shuttercloseduration1 17.0
setstate MQTT2_az_rollo 2019-03-13 16:59:15 shutterinvert1 1
setstate MQTT2_az_rollo 2019-03-13 17:39:13 shutteropen1 0
setstate MQTT2_az_rollo 2019-03-13 17:00:10 shutteropenduration1 18.0
setstate MQTT2_az_rollo 2019-03-13 18:10:48 shutterposition1 39
setstate MQTT2_az_rollo 2019-03-13 17:39:15 shutterstop1 25
setstate MQTT2_az_rollo 2019-03-13 17:39:15 state set_stop

87insane

Nachtrag:

Hab nun die readingList hinzugefügt. So hat man PCT auch direkt richtig.
Nach wie vor gibt es noch Fehler was die Schönheit und den state angeht. Die Funktionen zur Steuerung laufen aber alle ohne Probleme.

Die Geschichte mit den Namen ist für mich nun auch gegessen. Im topic = %topic% (sonoff) einfach den Namen des Rollos hinterlegen und am Ende hat man so etwas (Beispiel): stat/az_rollo/POWER1:.* POWER1.
Damit kann man arbeiten und findet auch was man sucht. Ob das nun die beste Lösung ist, bleibt jedem selbst überlassen. Ich habe nun x Stunden etwas über die Topics usw. gelesen. Für mich ist das so okay.

87insane

Auch hier noch eine Info:

set IO_DEV publish cmnd/DEVNAME/Backlog SetOption80 1; SetOption14 1; SetOption81 1; switchmode1 3; switchmode2 3; SHUTTEROPENDURATION 20; SHUTTERCLOSEDURATION 20; SHUTTERINVERT 1; SaveData 1;

Nachdem die Relays gegeneinander verriegelt wurden und die Rollo Optionen eingeschaltet wurden, muss ein Neustart durchgeführt werden (Schalter-Seitig). Ansonsten erkennt er die anderen Optionen nicht bei einem neuen Schalter. Also in diesem Fall bevor SHUTTEROPENDURATION 20.... gesetzt werden kann, muss dieser durchgeführt werden. Gibt es eine Art wait o.ä.? Nach dem Neustart des Gerätes, werden die Shutter Optionen erkannt und auch der Schiebregler/Slider im Schalter-Webinterface angezeigt. Wenn man einmal das Template anwendet, den Schalter neustartet und dann nochmal das Template anwendet, geht es natürlich. Aber das ist eher unschön.

Beta-User

Ungetestet, was das sleep angeht (am besten ein Testsystem nutzen...):
set DEVICE attrTemplate A_01z_tasmota_set_lowercase_texts_and_state1
set IO_DEV publish cmnd/DEVNAME/Backlog SetOption80 1; SetOption14 1; SetOption81 1; switchmode1 3;SaveData 1;
set IO_DEV publish cmnd/DEVNAME/Restart 1;;sleep 5;;set IO_DEV publish cmnd/DEVNAME/Backlog switchmode2 3; SHUTTEROPENDURATION 20; SHUTTERCLOSEDURATION 20; SHUTTERINVERT 1; SaveData 1;
#set IO_DEV publish cmnd/DEVNAME/Restart 1

Das setzt auch gleich den Aktor auf Kleinschreibung, das solltest du dann bei der Auswertung der Relais-"on"-Messages beachten.
Den letzten Befehl habe ich mal deaktiviert, da ich nicht weiß, ob der notwendig ist, ansonsten hoffe ich, die SetOptions passend sortiert zu haben.
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

87insane

Nach der Info aus dem anderen Thread.

Die externe Steuerung samt anzeige in FHEM läuft gut mit deiner Ergänzung. Um den Slider für die korrekte PCT an zu zeigen habe ich
   stat/az_rollo/SHUTTER1:.* state
   stat/az_rollo/SHUTTER1:.* pct

hinzugefügt. Sonst würde es nur im state landen und der slider wäre falsch. Hast du aber so auch gemeint, glaube ich.

Die interne FHEM Steuerung geht auch - ABER es wird beim klick auf open oder close usw. in FHEM immer noch kurz auch genau das dann im state angezeigt. Also müsste man nun irgendwie sagen, dass diese Befehle die in setList stehen nicht als state ausgewertet werden sollen.

Für die Geschichte mit den Icons von webcmd hatte ich mir geholfen indem ich ein ":" davor gemacht habe.
webCmd :open:close:half:stop:pct

Dann sind die Icons einen weiter rechts und alle nebeneinander. Aber ich denke nicht, das dies die Lösung ist. Hattest du dazu auch eine Idee? Bastel das Template später weiter und werde auf Seite 1 dann ausbessern. Was fehlt in deinen Augen noch für einen Checkin?

Das sehe ich noch:
- webCmd ggf. verbessern
- SetOptions anpassen für Neustart

87insane

Zitat von: Beta-User am 20 März 2019, 10:40:59
Ungetestet, was das sleep angeht (am besten ein Testsystem nutzen...):
set DEVICE attrTemplate A_01z_tasmota_set_lowercase_texts_and_state1
set IO_DEV publish cmnd/DEVNAME/Backlog SetOption80 1; SetOption14 1; SetOption81 1; switchmode1 3;SaveData 1;
set IO_DEV publish cmnd/DEVNAME/Restart 1;;sleep 5;;set IO_DEV publish cmnd/DEVNAME/Backlog switchmode2 3; SHUTTEROPENDURATION 20; SHUTTERCLOSEDURATION 20; SHUTTERINVERT 1; SaveData 1;
#set IO_DEV publish cmnd/DEVNAME/Restart 1

Das setzt auch gleich den Aktor auf Kleinschreibung, das solltest du dann bei der Auswertung der Relais-"on"-Messages beachten.
Den letzten Befehl habe ich mal deaktiviert, da ich nicht weiß, ob der notwendig ist, ansonsten hoffe ich, die SetOptions passend sortiert zu haben.

Wenn du "switchmode1 3" meinst, geht es da um die beiden Tasten. Sollte bei dem Schalter so bleiben. Also switchmode1 3 und switchmode2 3 machen hier Sinn. Baue am Ende alles bestmöglich ein, wenn getestet und werde es hier einchecken.