Template request - Shelly Button - events bekannt

Begonnen von deathworm, 03 April 2023, 20:19:38

Vorheriges Thema - Nächstes Thema

deathworm

Hi,

ich habe eben gesehen, dass es leider noch kein Shelly Button Template gibt. Ich habe mich somit schon Mal drum gekümmert, was sich denn genau ändert. Kenne mich mit dem danach nicht aus, aber das wichtige bzgl. Datenerkennung, das hab ich hier schon Mal alles gesammelt:


Hier erst einmal das komplette Readingslist:

shellybutton1_3C6XXXXXXXXX:shellies/shellybutton1-3C6XXXXXXXXX/online:.* online
shellybutton1_3C6XXXXXXXXX:shellies/shellybutton1-3C6XXXXXXXXX/announce:.* { json2nameValue($EVENT) }
shellybutton1_3C6XXXXXXXXX:shellies/shellybutton1-3C6XXXXXXXXX/info:.* { json2nameValue($EVENT) }
shellybutton1_3C6XXXXXXXXX:shellies/shellybutton1-3C6XXXXXXXXX/sensor/battery:.* battery
shellybutton1_3C6XXXXXXXXX:shellies/shellybutton1-3C6XXXXXXXXX/sensor/charger:.* charger
shellybutton1_3C6XXXXXXXXX:shellies/shellybutton1-3C6XXXXXXXXX/sensor/error:.* error
shellybutton1_3C6XXXXXXXXX:shellies/shellybutton1-3C6XXXXXXXXX/sensor/act_reasons:.* act_reasons
shellybutton1_3C6XXXXXXXXX:shellies/shellybutton1-3C6XXXXXXXXX/input_event/0:.* { json2nameValue($EVENT) }



und die Readings:

Readings   
IODev   myBroker
act_reasons   ["button"]
act_reasons_1   button
actions_stats_skipped   0
bat_value   100
bat_voltage   Apr 18
battery   100
cfg_changed_cnt   0
charger   false
cloud_connected   false
cloud_enabled   false
connect_retries   0
error   0
event   L
event_cnt   24
fs_free   162899
fs_size   233681
fw_ver   20221027-094830/v1.12.1-ga9117d3
has_update   false
id   shellybutton1-
inputs_1_event   L
inputs_1_event_cnt   24
inputs_1_input   0
ip   192.168.1.118
is_valid   true
mac   
model   SHBTN-2
mqtt_connected   true
new_fw   false
online   true
ram_free   41564
ram_total   52456
sensor_error   0
serial   1
time   
unixtime   0
update_has_update   false
update_new_version   
update_old_version   20221027-094830/v1.12.1-ga9117d3
update_status   unknown
uptime   2
wifi_sta_connected   true
wifi_sta_ip   192.168.1.118
wifi_sta_rssi   -56
wifi_sta_ssid   fri





Und nun das spannende - die Veränderungen:

longpress:
MQTT2_DEVICE MQTT2_shellybutton1_3C6XXXXXXXXX event: L
MQTT2_DEVICE MQTT2_shellybutton1_3C6XXXXXXXXX inputs_1_event: L

1x drücken (shortpress)
MQTT2_DEVICE MQTT2_shellybutton1_3C6XXXXXXXXX event: S
MQTT2_DEVICE MQTT2_shellybutton1_3C6XXXXXXXXX inputs_1_event: S

2x drücken (2x shortpress)
MQTT2_DEVICE MQTT2_shellybutton1_3C6XXXXXXXXX event: SS
MQTT2_DEVICE MQTT2_shellybutton1_3C6XXXXXXXXX inputs_1_event: SS

3x drücken (3x shortpress)
MQTT2_DEVICE MQTT2_shellybutton1_3C6XXXXXXXXX event: SSS
MQTT2_DEVICE MQTT2_shellybutton1_3C6XXXXXXXXX inputs_1_event: SSS




Passt das so?

deathworm

Tjoa, so einfach wars dann doch nicht.

Hat gestern noch klasse funktioniert mit einem testdoif. Das Problem ist aber, dass der den event nicht mehr zurücksetzt. Der lässt das immer stehen. Bei meinem Test gestern habe ich immer andere Impulse gedrückt. Ich weiss, dass ich das auch mal doppelt getestet habe und als es nicht ging mich zwar gewundert habe, aber als ich dann wieder was anderes gedrückt habe, hat es ja wieder funktioniert. Habe mir da garkeine Gedanken gemacht. Erst heute morgen nach dem Aufstehen kam mir das.

Ergo muss da noch irgendeine Eventfunktion rein, dass sobald L, S, SS oder SSS vorkommt, dass dann das wieder auf 0 zurückgesetzt wird oder so. Nur den cnt - count - den zählt es hoch. Aber der zeigt ja nicht an, welche Funktion gedrückt wurde.

Beta-User

Für Fragen zu DOIF gibt es einen separaten Forum-Bereich, ich würde das mit einem notify lösen oder direkt die Payloads per Perl auswerten...

Was den MQTT-Teil angeht, habe ich den Eindruck, dass da manches doppelt kommt (auf unterschiedlichen Topics, unterschiedlich verpackt).

Um rauszufinden, was woher kommt, bitte mal in diese Richtung ändern:
shellies/shellybutton1-3C6XXXXXXXXX/online:.* online
shellies/shellybutton1-3C6XXXXXXXXX/announce:.* { json2nameValue($EVENT,'ann_',$JSONMAP) }
shellies/shellybutton1-3C6XXXXXXXXX/info:.* { json2nameValue($EVENT,'info_',$JSONMAP) }
shellies/shellybutton1-3C6XXXXXXXXX/sensor/battery:.* battery
shellies/shellybutton1-3C6XXXXXXXXX/sensor/charger:.* charger
shellies/shellybutton1-3C6XXXXXXXXX/sensor/error:.* error
shellies/shellybutton1-3C6XXXXXXXXX/sensor/act_reasons:.* act_reasons
shellies/shellybutton1-3C6XXXXXXXXX/input_event/0:.* { json2nameValue($EVENT,'in_evt_',$JSONMAP) }

Bitte dann künftig "code-tags" verwenden (drittletzes Iconfeld, dort das Symbol in der Mitte).

Bitte dann v.a. die setstate-Zeilen aus dem RAW-list liefern, mich interessieren auch die Zeitstempel!
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

deathworm

Nabend,

DOIF hat sich schon wieder erledigt, hatte nur vergessen den setstate do always zu setzen. Nun reagiert er bei jedem Drücken, obwohl das selbe Kommando geschickt wird.


raw code

defmod MQTT2_shellybutton1_3C6XXXXXXXXX MQTT2_DEVICE shellybutton1_3C6XXXXXXXXX
attr MQTT2_shellybutton1_3C6XXXXXXXXX readingList shellies/shellybutton1-3C6XXXXXXXXX/online:.* online\
shellies/shellybutton1-3C6XXXXXXXXX/announce:.* { json2nameValue($EVENT,'ann_',$JSONMAP) }\
shellies/shellybutton1-3C6XXXXXXXXX/info:.* { json2nameValue($EVENT,'info_',$JSONMAP) }\
shellies/shellybutton1-3C6XXXXXXXXX/sensor/battery:.* battery\
shellies/shellybutton1-3C6XXXXXXXXX/sensor/charger:.* charger\
shellies/shellybutton1-3C6XXXXXXXXX/sensor/error:.* error\
shellies/shellybutton1-3C6XXXXXXXXX/sensor/act_reasons:.* act_reasons\
shellies/shellybutton1-3C6XXXXXXXXX/input_event/0:.* { json2nameValue($EVENT,'in_evt_',$JSONMAP) }
attr MQTT2_shellybutton1_3C6XXXXXXXXX room Sonstiges
attr MQTT2_shellybutton1_3C6XXXXXXXXX stateFormat event

setstate MQTT2_shellybutton1_3C6XXXXXXXXX S
setstate MQTT2_shellybutton1_3C6XXXXXXXXX 2023-03-10 20:16:47 IODev myBroker
setstate MQTT2_shellybutton1_3C6XXXXXXXXX 2023-04-05 21:41:23 act_reasons ["button"]
setstate MQTT2_shellybutton1_3C6XXXXXXXXX 2023-04-05 21:41:23 act_reasons_1 button
setstate MQTT2_shellybutton1_3C6XXXXXXXXX 2023-04-05 21:41:23 actions_stats_skipped 0
setstate MQTT2_shellybutton1_3C6XXXXXXXXX 2023-04-05 21:41:23 bat_value 100
setstate MQTT2_shellybutton1_3C6XXXXXXXXX 2023-04-05 21:41:23 bat_voltage 4.12
setstate MQTT2_shellybutton1_3C6XXXXXXXXX 2023-04-05 21:41:23 battery 100
setstate MQTT2_shellybutton1_3C6XXXXXXXXX 2023-04-05 21:41:23 cfg_changed_cnt 0
setstate MQTT2_shellybutton1_3C6XXXXXXXXX 2023-04-05 21:41:23 charger false
setstate MQTT2_shellybutton1_3C6XXXXXXXXX 2023-04-05 21:41:23 cloud_connected false
setstate MQTT2_shellybutton1_3C6XXXXXXXXX 2023-04-05 21:41:23 cloud_enabled false
setstate MQTT2_shellybutton1_3C6XXXXXXXXX 2023-04-05 21:41:23 connect_retries 0
setstate MQTT2_shellybutton1_3C6XXXXXXXXX 2023-04-05 21:41:23 error 0
setstate MQTT2_shellybutton1_3C6XXXXXXXXX 2023-04-05 21:41:23 event S
setstate MQTT2_shellybutton1_3C6XXXXXXXXX 2023-04-05 21:41:23 event_cnt 68
setstate MQTT2_shellybutton1_3C6XXXXXXXXX 2023-04-05 21:41:23 fs_free 162899
setstate MQTT2_shellybutton1_3C6XXXXXXXXX 2023-04-05 21:41:23 fs_size 233681
setstate MQTT2_shellybutton1_3C6XXXXXXXXX 2023-04-05 21:41:23 fw_ver 20221027-094830/v1.12.1-ga9117d3
setstate MQTT2_shellybutton1_3C6XXXXXXXXX 2023-04-05 21:41:23 has_update false
setstate MQTT2_shellybutton1_3C6XXXXXXXXX 2023-04-05 21:41:23 id shellybutton1-3C6XXXXXXXXX
setstate MQTT2_shellybutton1_3C6XXXXXXXXX 2023-04-05 21:41:23 inputs_1_event S
setstate MQTT2_shellybutton1_3C6XXXXXXXXX 2023-04-05 21:41:23 inputs_1_event_cnt 68
setstate MQTT2_shellybutton1_3C6XXXXXXXXX 2023-04-05 21:41:23 inputs_1_input 0
setstate MQTT2_shellybutton1_3C6XXXXXXXXX 2023-04-05 21:41:23 ip 192.168.1.118
setstate MQTT2_shellybutton1_3C6XXXXXXXXX 2023-04-05 21:41:23 is_valid true
setstate MQTT2_shellybutton1_3C6XXXXXXXXX 2023-04-05 21:41:23 mac 3C6XXXXXXXXX
setstate MQTT2_shellybutton1_3C6XXXXXXXXX 2023-04-05 21:41:23 model SHBTN-2
setstate MQTT2_shellybutton1_3C6XXXXXXXXX 2023-04-05 21:41:23 mqtt_connected true
setstate MQTT2_shellybutton1_3C6XXXXXXXXX 2023-04-05 21:41:23 new_fw false
setstate MQTT2_shellybutton1_3C6XXXXXXXXX 2023-04-05 21:41:23 online true
setstate MQTT2_shellybutton1_3C6XXXXXXXXX 2023-04-05 21:41:23 ram_free 41556
setstate MQTT2_shellybutton1_3C6XXXXXXXXX 2023-04-05 21:41:23 ram_total 52456
setstate MQTT2_shellybutton1_3C6XXXXXXXXX 2023-04-05 21:41:23 sensor_error 0
setstate MQTT2_shellybutton1_3C6XXXXXXXXX 2023-04-05 21:41:23 serial 1
setstate MQTT2_shellybutton1_3C6XXXXXXXXX 2023-04-05 21:41:23 time
setstate MQTT2_shellybutton1_3C6XXXXXXXXX 2023-04-05 21:41:23 unixtime 0
setstate MQTT2_shellybutton1_3C6XXXXXXXXX 2023-04-05 21:41:23 update_has_update false
setstate MQTT2_shellybutton1_3C6XXXXXXXXX 2023-04-05 21:41:23 update_new_version
setstate MQTT2_shellybutton1_3C6XXXXXXXXX 2023-04-05 21:41:23 update_old_version 20221027-094830/v1.12.1-ga9117d3
setstate MQTT2_shellybutton1_3C6XXXXXXXXX 2023-04-05 21:41:23 update_status unknown
setstate MQTT2_shellybutton1_3C6XXXXXXXXX 2023-04-05 21:41:23 uptime 2
setstate MQTT2_shellybutton1_3C6XXXXXXXXX 2023-04-05 21:41:23 wifi_sta_connected true
setstate MQTT2_shellybutton1_3C6XXXXXXXXX 2023-04-05 21:41:23 wifi_sta_ip 192.168.1.118
setstate MQTT2_shellybutton1_3C6XXXXXXXXX 2023-04-05 21:41:23 wifi_sta_rssi -61
setstate MQTT2_shellybutton1_3C6XXXXXXXXX 2023-04-05 21:41:23 wifi_sta_ssid fritz





Also ich denke, das dickste für das Template ist wirklich nur ein setstateformat auf event. Klar wäre auch Batteriezustand etc. ganz interessant - aber keine AHnung wie das bei anderen genau gemacht wurde.

Beta-User

Die Readings sehen "komisch" aus - da ist anscheinend noch nicht berücksichtigt, was wir an json2nameValue() angepaßt hatten, zudem ist sehr seltsam, dass alles, was da ist denselben Zeitstempel hat.

Bitte spiele mal mit dem Ding etwas rum, refreshe zwischendurch die Seite und du wirst vermutlich ein gewisses Gefühl dafür entwickeln, was ich meine (und eigentlich wissen will).
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

deathworm

Hoi und ein extra Hallo @beta-user

Ich hab mittlerweile ein paar Shelly Geräte mehr bei mir für die es kein Template gibt. Hättest du Zeit und Lust mit mir die Templates zu machen? Ich fütter dich mit den Daten die die Geräte übermitteln, Teste und gebe Input und du bastelst das drumherum?



Zum Thema Shelly Button habe ich hier mir einen komplett neuen noch geholt und gerade einmal ein list gemacht, nachdem der ein paar Tage aktiv war:

Internals:
   CFGFN     
   CID        shellybutton1_485519F0167E
   DEF        shellybutton1_485519F0167E
   FUUID      65da1832-f33f-53f2-3239-56b465cdc403754d
   IODev      myBroker
   LASTInputDev myBroker
   MSGCNT     108
   NAME       MQTT2_shellybutton1_485519F0167E
   NR         4509
   STATE      S
   TYPE       MQTT2_DEVICE
   eventCount 116
   myBroker_CONN myBroker_192.168.1.151_10709
   myBroker_MSGCNT 108
   myBroker_TIME 2024-03-01 14:47:39
   READINGS:
     2024-03-01 14:47:39   1               periodic
     2024-02-24 17:24:18   IODev           myBroker
     2024-03-01 14:47:39   act_reasons_1   periodic
     2024-03-01 14:47:39   actions_stats_skipped 0
     2024-03-01 14:47:39   bat_value       100
     2024-03-01 14:47:39   bat_voltage     4.13
     2024-03-01 14:47:39   battery         100
     2024-03-01 14:47:39   cfg_changed_cnt 0
     2024-03-01 14:47:39   charger         false
     2024-03-01 14:47:39   cloud_connected false
     2024-03-01 14:47:39   cloud_enabled   false
     2024-03-01 14:47:39   connect_retries 0
     2024-03-01 14:47:39   error           0
     2024-02-28 17:44:56   event           S
     2024-02-28 17:44:56   event_cnt       2
     2024-03-01 14:47:39   fs_free         162648
     2024-03-01 14:47:39   fs_size         233681
     2024-03-01 14:47:39   fw_ver          20230913-113105/v1.14.0-gcb84623
     2024-03-01 14:47:39   has_update      false
     2024-03-01 14:47:39   id              shellybutton1-485519F0167E
     2024-03-01 14:47:39   inputs_1_event 
     2024-03-01 14:47:39   inputs_1_event_cnt 2
     2024-03-01 14:47:39   inputs_1_input  0
     2024-03-01 14:47:39   ip              192.168.1.151
     2024-03-01 14:47:39   is_valid        true
     2024-03-01 14:47:39   mac             485519F0167E
     2024-03-01 14:47:39   model           SHBTN-2
     2024-03-01 14:47:39   mqtt_connected  true
     2024-03-01 14:47:39   new_fw          false
     2024-03-01 14:47:39   online          true
     2024-03-01 14:47:39   ram_free        41564
     2024-03-01 14:47:39   ram_total       52456
     2024-03-01 14:47:39   sensor_error    0
     2024-03-01 14:47:39   serial          1
     2024-03-01 14:47:39   time           
     2024-03-01 14:47:39   unixtime        0
     2024-03-01 14:47:39   update_has_update false
     2024-03-01 14:47:39   update_new_version
     2024-03-01 14:47:39   update_old_version 20230913-113105/v1.14.0-gcb84623
     2024-03-01 14:47:39   update_status   unknown
     2024-03-01 14:47:39   uptime          4
     2024-03-01 14:47:39   wifi_sta_connected true
     2024-03-01 14:47:39   wifi_sta_ip     192.168.1.151
     2024-03-01 14:47:39   wifi_sta_rssi   -65
     2024-03-01 14:47:39   wifi_sta_ssid   fritzrouter
Attributes:
   readingList shellybutton1_485519F0167E:shellies/shellybutton1-485519F0167E/online:.* online
shellybutton1_485519F0167E:shellies/shellybutton1-485519F0167E/announce:.* { json2nameValue($EVENT) }
shellybutton1_485519F0167E:shellies/shellybutton1-485519F0167E/info:.* { json2nameValue($EVENT) }
shellybutton1_485519F0167E:shellies/shellybutton1-485519F0167E/sensor/battery:.* battery
shellybutton1_485519F0167E:shellies/shellybutton1-485519F0167E/sensor/charger:.* charger
shellybutton1_485519F0167E:shellies/shellybutton1-485519F0167E/sensor/error:.* error
shellybutton1_485519F0167E:shellies/shellybutton1-485519F0167E/sensor/act_reasons:.* { json2nameValue($EVENT) }
shellybutton1_485519F0167E:shellies/shellybutton1-485519F0167E/input_event/0:.* { json2nameValue($EVENT) }


WÄre das nun so wie gewünscht?

Beta-User

Hallo zurück!

Vermutlich komme ich die nächsten paar Wochen nicht dazu, mich damit intensiver zu befassen.

Das list ist erst mal gut, aber leider kann man daran nicht so richtig erkennen, welche Info über welchen Topic kommt, daher hatte ich den Vorschlag mit den json2nameValue()-Präfixen gemacht. Und dann stellt sich halt die Frage, wie man das genau darstellen will (stateFormat/devStateIcon), bei einem Button gibt's ja nicht viel zu machen.

"battery" scheint "batteryPercent" zu sein? (Einheitliche Benennung, siehe Readings-guideline im Wiki).
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

deathworm

najo, nun habe ich das ganze ein Jahr liegen gelassen. Vielleicht schaffst es ja ab und zu mal reinzugucken. Ich helfe gern, so gut es geht und sofern ich es verstehe. zb mit den wichtigen sachen/eigenschaften, die zu schalten oder wohl anzuzeigen sind

json2nameValue()-Präfixen sagt mir zb garnix. kannst du mir das näher erklären, wie ich diese infos für das jeweilige device herausbekomme? beim googlen nach "fhem json2nameValue()-Präfixen" find ich nichts so richtiges

--

beim button würde ich mir vorstellen folgende werte anzuzeigen

1. batterie in prozent - das ist entweder "bat_value" oder "battery" - beide zeigen die ladung in prozent an. es gibt auch noch bat_voltage für die spannung, aber die schätze ich als egal ein. wenn man sieht, okay noch 30% bringt das einem mehr als 4,xx volt

2. "event" - das zeigt an welche funktion gedrückt wird. es gibt 4 events. S, SS, SSS und L. Das entspricht einmal drücken, zwei mal, dreimal und lang. Ich hatte hier bislang einfach nur ein stateformat mit event definiert. mehr braucht es da eig. nicht. Weil welche icons soll die jeweiligen events besser darstellen als hier einfach nur der Buchstabe?
   

Beta-User

Zitat von: deathworm am 01 März 2024, 21:26:15son2nameValue()-Präfixen sagt mir zb garnix
2 Beiträge weiter oben findest du was dazu...

Zitat von: deathworm am 01 März 2024, 21:26:151. batterie in prozent - das ist entweder "bat_value" oder "battery"
Du hast nicht wie vorgeschlagen im Wiki nachgeschlagen, was ich mit "gutem Reading-Namen" andeuten wollte? Die Namen sind doch variabel und können von dir geändert werden (oder eben der Wert nur über einen von zwei Wegen "gehört" werden)...

Bitte - die Arbeitsteilung sollte so sein: Ich gebe die Impulse und checke das Ergebnis hinterher ein, du beschäftigst dich ein wenig mit dem Device und freust dich, wenn du das "für alle sinnvoll verwertbar" fertiggebracht hast und nebenbei verstanden, wie das in etwa funktioniert?
Sonst wird das die kommenden Wochen nichts, und du Pingst mich Mitte/Ende April nochmal an dazu. Vielleicht habe ich da Lust, die Arbeit alleine und in Trockenübung bzw. der Shelly-Doku zu machen (vermutlich aber eher nicht...).
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