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?
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.
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!
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.
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).
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?
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).
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?
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...).