MQTT2+Shelly: erste Konfiguration und template-Entwicklung

Begonnen von miggun, 03 Dezember 2018, 21:05:34

Vorheriges Thema - Nächstes Thema

miggun

#195
In dem Template hier?
/opt/fhem/FHEM/lib/AttrTemplate/mqtt2.template

# shelly2 using original firmware in roller mode.
name:A_11b_shelly2_roller
filter:TYPE=MQTT2_DEVICE
desc:shelly2 using original firmware. <br>NOTE: shelly2 roller operated, change$
par:DEVNAME;Shelly2 name in the topic;{ AttrVal("DEVICE","readingList","") =~ m$
attr DEVICE comment shelly2 roller operated
attr DEVICE setList \
  open:noArg shellies/DEVNAME/roller/0/command open\
  close:noArg shellies/DEVNAME/roller/0/command close\
  stop:noArg shellies/DEVNAME/roller/0/command stop\
  pos:slider,0,1,100 shellies/DEVNAME/roller/0/command/pos $EVTPART1
attr DEVICE readingList shellies/DEVNAME/roller/0/pos:.* state\
  shellies/DEVNAME/status/0/rollers:.* power\
  shellies/DEVNAME/online:.* online\
  shellies/DEVNAME/announce:.* { json2nameValue($EVENT, '', $JSONMAP) }
attr DEVICE devStateIcon 0:fts_shutter_100 100:fts_shutter_10 9\d.*:fts_shutter$
attr DEVICE model A_11b_shelly2_roller
Raspberry Pi 3 B+
MapleCUN
Shelly1, Shelly2, Shelly4pro, FS20

Beta-User

"Im Prinzip" ja, aber das scheint nicht die letzte Version zu sein. Kannst auch die aus dem svn nehmen, habe vorhin ein update hochgeladen (ist dann ab morgen früh kurz vor 8 im allg. update drin).
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

miggun

#197
Habe ich im template geändert.
Irgendwas hat er aber nicht übernommen, weil im template ja jetzt pct steht.
Jetzt sieht es so aus:

Internals:
   CID        shellyswitch_32BD01
   DEF        shellyswitch_32BD01
   DEVICETOPIC Rollladen
   IODev      MQTT2_SERVER
   LASTInputDev MQTT2_SERVER
   MQTT2_SERVER_MSGCNT 589
   MQTT2_SERVER_TIME 2019-01-14 09:36:14
   MSGCNT     589
   NAME       Rollladen
   NR         74
   STATE      0
   TYPE       MQTT2_DEVICE
   READINGS:
     2019-01-12 16:09:27   1               0
     2019-01-14 08:12:11   announce_fw_ver 20190103-091640/v1.4.4@165d718b
     2019-01-14 08:12:11   announce_id     shellyswitch-32BD01
     2019-01-14 08:12:11   announce_ip     192.168.1.28
     2019-01-14 08:12:11   announce_mac    86F3EB32BD01
     2019-01-14 08:12:11   announce_new_fw false
     2019-01-14 08:12:11   online          true
     2019-01-14 09:31:41   pos             0
     2019-01-14 09:36:14   power           0.00
     2019-01-12 16:09:29   shellies/shellyswitch-32BD01/input/0 0
     2019-01-14 09:36:14   shellies/shellyswitch-32BD01/roller/0 stop
     2019-01-14 09:36:14   state           0
Attributes:
   IODev      MQTT2_SERVER
   comment    shelly2 roller operated
   devStateIcon 0:fts_shutter_100 100: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
   getList    shellyswitch_32BD01:shellies/shellyswitch-32BD01/roller/0/power:.* power
shellyswitch_32BD01:shellies/shellyswitch-32BD01/roller/0/pos:.* pos
   model      A_11b_shelly2_roller
   readingList shellies/shellyswitch-32BD01/roller/0/pos:.* state
  shellies/shellyswitch-32BD01/status/0/rollers:.* power
  shellies/shellyswitch-32BD01/online:.* online
  shellies/shellyswitch-32BD01/announce:.* { json2nameValue($EVENT, '', $JSONMAP) }
shellyswitch_32BD01:shellies/shellyswitch-32BD01/roller/0:.* shellies/shellyswitch-32BD01/roller/0
shellyswitch_32BD01:shellies/shellyswitch-32BD01/relay/power:.* power
   room       MQTT2_DEVICE
   setList    open:noArg shellies/shellyswitch-32BD01/roller/0/command open
  close:noArg shellies/shellyswitch-32BD01/roller/0/command close
  stop:noArg shellies/shellyswitch-32BD01/roller/0/command stop
  pos:slider,0,1,100 shellies/shellyswitch-32BD01/roller/0/command/pos $EVTPART1
   stateFormat state
   webCmd     stop:open:close:pos:rc
Raspberry Pi 3 B+
MapleCUN
Shelly1, Shelly2, Shelly4pro, FS20

Beta-User

War das die Version aus dem update oder aus dem svn? Wenn update:
Zitat von: Beta-User am 14 Januar 2019, 08:33:51Lösche mal in Zeile 366 das abschließende "\". Deswegen wird das nächste attr nicht ausgeführt...
Wenn es das nicht ist, liegt noch irgendwo anders der Hund begraben. Ansonsten solltest du auch mal alle Readings löschen, da sich die Namen und der Prefix geändert haben. Also
deleteReading Rollladen .*(Würde wohl auch im template zweckmäßig sein).
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

miggun

War das aus dem svn, Version heute 7:35. Da war das \ schon raus.
Ich warte mal, bis morgen das Update drin ist. deleteReading Rollladen .* hat es auch nicht gelöst.
Raspberry Pi 3 B+
MapleCUN
Shelly1, Shelly2, Shelly4pro, FS20

Beta-User

Hmm, das ist wirklich seltsam, weil eigentlich die Attribute teilweise überschrieben werden sollten.

Hattest du die template-Reinititialisierung gemacht oder FHEM neu gestartet nach der Änderung des templates?
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

miggun

Ja, hatte in Fhem danach den Befehl update gefolgt von shutdown restart ausgeführt.
Raspberry Pi 3 B+
MapleCUN
Shelly1, Shelly2, Shelly4pro, FS20

Beta-User

Kannst do dann bitte nochmal nachsehen, ob Zeile 366 noch korrekt ist?
Denn dann könnte es sein, dass die svn-Version wieder von der update-Version überschrieben wurde.
(7:35GMT=8:35MEZ, die aus dem svn war also noch nicht im update)
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

miggun

So sieht es bei mir gerade im Template aus:

# shelly2 using original firmware in roller mode.
name:A_11b_shelly2_roller
filter:TYPE=MQTT2_DEVICE
desc:shelly2 using original firmware. <br>NOTE: shelly2 roller operated, change settings first!
par:DEVNAME;Shelly2 name in the topic;{ AttrVal("DEVICE","readingList","") =~ m,shellies/([^/]*)/, ? $1 : undef }
attr DEVICE comment shelly2 roller operated
attr DEVICE setList \
  open:noArg shellies/DEVNAME/roller/0/command open\
  close:noArg shellies/DEVNAME/roller/0/command close\
  stop:noArg shellies/DEVNAME/roller/0/command stop\
  pct:slider,0,1,100 shellies/DEVNAME/roller/0/command/pos $EVTPART1\
  DoRecalibration:noArg shellies/DEVNAME/roller/0/command rc\
attr DEVICE readingList shellies/DEVNAME/roller/0/pos:.* pct\
  shellies/DEVNAME/status/0/rollers:.* power\
  shellies/DEVNAME/online:.* online\
  shellies/DEVNAME/announce:.* { json2nameValue($EVENT, '', $JSONMAP) }
attr DEVICE devStateIcon 0:fts_shutter_100 100: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$
attr DEVICE stateFormat pct
attr DEVICE setStateList open close stop
attr DEVICE model A_11b_shelly2_roller


Ist tatsächlich das \ wieder drin. Lösche es jetzt raus und probiere noch mal.
Raspberry Pi 3 B+
MapleCUN
Shelly1, Shelly2, Shelly4pro, FS20

miggun


Bekomme jetzt folgende Fehlermeldung.

Global symbol "$JSONMAP" requires explicit package name (did you forget to declare "my $JSONMAP"?) at (eval 67) line 1.
Raspberry Pi 3 B+
MapleCUN
Shelly1, Shelly2, Shelly4pro, FS20

Beta-User

OK, dann machen wir das raus, ist in dem Fall m.E. eh' nicht erforderlich, also sollte die betr. Zeile so aussehen:
shellies/DEVNAME/announce:.* { json2nameValue($EVENT) }
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

miggun

Jetzt funktioniert das Template. :)

Einzige, was nicht ganz so schön ist, wenn man auf einen Wert fährt, wird bis der Wert erreicht ist set66 oder set 50 oder set40 angezeigt, bis der Wert tatsächlich erreicht ist uns die Position gesendet wird.

Internals:
   CID        shellyswitch_32BD01
   DEF        shellyswitch_32BD01
   DEVICETOPIC Lea_Rollladen
   IODev      MQTT2_SERVER
   LASTInputDev MQTT2_SERVER
   MQTT2_SERVER_MSGCNT 242
   MQTT2_SERVER_TIME 2019-01-14 11:39:16
   MSGCNT     242
   NAME       Lea_Rollladen
   NR         74
   STATE      66
   TYPE       MQTT2_DEVICE
   READINGS:
     2019-01-14 11:00:40   announce_fw_ver 20190103-091640/v1.4.4@165d718b
     2019-01-14 11:00:40   announce_id     shellyswitch-32BD01
     2019-01-14 11:00:40   announce_ip     192.168.1.28
     2019-01-14 11:00:40   announce_mac    86F3EB32BD01
     2019-01-14 11:00:40   announce_new_fw false
     2019-01-14 11:00:40   online          true
     2019-01-14 11:39:16   pct             66
     2019-01-14 11:29:41   pos             100
     2019-01-14 11:39:16   power           0.00
     2019-01-14 11:39:16   shellies/shellyswitch-32BD01/roller/0 stop
Attributes:
   IODev      MQTT2_SERVER
   comment    shelly2 roller operated
   devStateIcon 0:fts_shutter_100 100: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
   getList    shellyswitch_32BD01:shellies/shellyswitch-32BD01/roller/0/power:.* power
shellyswitch_32BD01:shellies/shellyswitch-32BD01/roller/0/pos:.* pos
   model      A_11b_shelly2_roller
   readingList shellies/shellyswitch-32BD01/roller/0/pos:.* pct
  shellies/shellyswitch-32BD01/status/0/rollers:.* power
  shellies/shellyswitch-32BD01/online:.* online
  shellies/shellyswitch-32BD01/announce:.* { json2nameValue($EVENT, '', $JSONMAP) }
shellyswitch_32BD01:shellies/shellyswitch-32BD01/roller/0:.* shellies/shellyswitch-32BD01/roller/0
shellyswitch_32BD01:shellies/shellyswitch-32BD01/relay/power:.* power
   room       03_Lea,MQTT2_DEVICE
   setList    open:noArg shellies/shellyswitch-32BD01/roller/0/command open
  close:noArg shellies/shellyswitch-32BD01/roller/0/command close
  stop:noArg shellies/shellyswitch-32BD01/roller/0/command stop
  pct:slider,0,1,100 shellies/shellyswitch-32BD01/roller/0/command/pos $EVTPART1
  DoRecalibration:noArg shellies/shellyswitch-32BD01/roller/0/command rc
   setStateList open close stop
   stateFormat pct
   webCmd     stop:open:close:pct:rc
Raspberry Pi 3 B+
MapleCUN
Shelly1, Shelly2, Shelly4pro, FS20

Beta-User

Puh, das klingt schon mal nicht schlecht.

Warum findest du das nicht so gut, wenn man erst mal das Ziel angezeigt bekommt? Sonst würde der slider springen, das wäre auch nicht das Gelbe vom Ei, oder? Kannst ja mal testweise die setStateList löschen und dann sagen, ob du das besser findest.

Das Verhalten (mit "set_xx") ist z.B. bei HM-Rolladenaktoren auch so ähnlich.
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

miggun

Ah, O.K.
In der Konfiguration die ich nutze, schiebe ich den Slider auf den gewünschten Wert und das Status-Icon behält den letzten realen Wert bei, bis eine neue Position übertragen wird.
Ist halt etwas seltsam, wenn man ein StateIcon verwendet. Das verschwindet dann und setxx erscheint. StateIcon kommt dann wieder zurück. Sieht optisch nach einem Fehler aus, auch wenn es gewollt ist.
Wobei man da natürlich auch ein Icon nutzen könnte, dass Bewegung anzeigt.
Raspberry Pi 3 B+
MapleCUN
Shelly1, Shelly2, Shelly4pro, FS20

Beta-User

Zitat von: miggun am 14 Januar 2019, 11:59:07
Wobei man da natürlich auch ein Icon nutzen könnte, dass Bewegung anzeigt.
Darfst gerne einen Vorschlag machen für eine Erweiterung des devStateIcon :) . Wie wäre es mit:
0:fts_shutter_100 100: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
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