Hallöchen,
hab ich gerade gefunden, mit einem ESP32, sieht schnucklich aus:
https://button.plus/
ZitatA completely new way of controlling your Smarthome!
Tactile buttons with individual mini displays
Larger 2.8" display (optional) for presenting any type of information
Communication via Wifi (ethernet module will be available later)
Integrate with all major smarthome platforms via MQTT
Designed to be flush mounted on the wall
Modular design for 2 to 6 buttons (or 14 buttons with extension plate)
No cloud dependency
Falls falsches Forum, wohin schieben?
Viele Grüße, Lutz
ich bin auch gerade über dieses Teil "gestolpert".
sieht wirklich cool aus ... hat das schon jemand im Einsatz? ... in Fhem ?
https://button.plus/
Ist seit ein paar Monaten im Einsatz.
Anbindung an fhem per MQTT.
Hallo @ergerd ,
Zitat von: ergerd am 21 Dezember 2024, 22:22:36Ist seit ein paar Monaten im Einsatz.
Anbindung an fhem per MQTT.
Ich habe seit Jahren ein FHEM am laufen, es läuft und läuft, und in all der Zeit hab ich eigentlich nicht mehr viel Ahnung wie ich das alles gemacht habe.
Nun habe ich mir auch einen solchen Button+ zugelegt, habe aber keine Ahnung mehr wie ich das per MQTT machen soll.
In meinem FHEM gibt es schon MQTT Geräte, verschiedene Shellys sind so eingebunden und funktionieren.
Kann mir hier vielleicht jemand auf di Sprünge helfen wie es mit dem Button+ geht?
Oder wo ich weiter lesen soll, bzw. mich wieder einlesen soll.
bei mir steht im Button+ bei
MQTT Brokers: Status = Closed connection, ich habe aber keine Ahnung was das bedeutet, ich habe versucht meinen Fhem MQTT Broker mit
Broker ID "fhem" einzutragen und bei
Url habe ich mqtt://192.168.x.y die IP meines Fhem-RPi eingetragen, der
Port steht ja schon auf 1883 beim
WebSocketPort habe ich auch auf 9001 belassen, da ich nicht weiss wie der bei meinem FhemRPi ist.
Default schema: Subscribe to/publish habe ich einen Haken gesetzt
Besten Dank für eure Denkanstösse
jumperger
Schau mal in FHEM-Log, ob beim Verbindungsaufbau was gemeldet wird.
Ideen:
- MQTT2_SERVER unterstuetzt nur Protokoll Version 3.1 und 3.11
- MQTT2_SERVER unterstuetzt kein websocket.
- Falls in Button+ Verschluesselung aktiviert ist, dann muss man das auch im MQTT2_SERVER aktivieren (oder jeweils deaktivieren)
Hallo Rudolf,
Ich traue mich fast nicht es hier zu schreiben, aber der Button+ ist in meinem MQTT2_DEVICE nicht aufgetaucht, weil ich in der Button+ WebOberfläche nicht den "Save to Device" Button geklickt habe, also wurde die Fhem IP nie im Button+ hinterlegt .
Falls es dann noch schlimmere Anfänger als mich gäbe, dann hier meine Einträge in der Web-Oberfläche des Button+ in der Rubrik MQTT Brokers:
Broker ID : fhem
Url: mqtt://192.168.111.222 (192.168.111.222 steht hier stellvertretend für die IP meines RPi auf welchem Fhem läuft)
Port: 1883 (war aber schon voreingestellt)
WebSocketPort: 9001 (war auch voreingestellt)
Schande über mein Haupt :-[
Seit 2019 habe ich nicht mehr an meinem Fhem herumgewerkelt und somit ziemlich alles vergessen was ich damals erlernt habe.
Wäre vielleicht noch jemand so nett und hilft mir auf die Sprünge um jetzt einen dieser Button+ Taster zu benutzen um ein Lampenrelais zu triggern welches ich jetzt schon mit Fhem triggern kann?
Ich hänge einen Screenshot (Fhem_Bad_01.png) an welcher meinen Raum Badezimmer darstellt, dort schalte ich das Licht an wenn ich auf die grüne Schaltfläche M26-L2-4-On-Off klicke.
Dann noch ein Screenshot vom MQTT_DEVICE Button+ wie er aktuell dargestellt wird:
Bild Fhem_Button+_01.png
Hier ist zu erwähnen dass ich aktuell 2 Buttons im Button+ konfiguriert habe, diese haben die Kennung 3-1 und 4-1 (ich glaube seit Firmware 2.0.0 werden Button 1 und 2 nicht belegt da diese zum blättern in den Seiten dienen), weiter gibt es noch einen Temperatursensor welcher auf sensor_1 die Temeratur mit 3 Dezimalstellen ausgibt. Das Reading state welches die Temperatur mit einer Dezimalstelle ausgibt ist wohl der im Button+ angezeigte Wert bei displayitem/1/
Dann auch noch ein Screenshot von der Button+ WebOberfläche damit ihr seht was auf dem Button aktuel abgebildet wird:
Bild Fhem_Button+_02_BtnConf.png
Zu einem Button gehören dann folgende default MQTT Topics:
Bild Fhem_Button+_03_Btn_MQTT_Topics
EDIT:
ich lese fleissig im FhemWiki, aber der Kopf dampft.
Als zusätzliche Info, wenn ich am Button+ die beiden Taster drücker erhalte ich zusätzlich folgende Zeilen in der Attributes readingList :
btn_fc928c_1:buttonplus/btn_fc928c/button/3-1/pushbutton:.* { json2nameValue($EVENT) }
btn_fc928c_1:buttonplus/btn_fc928c/button/4-1/pushbutton:.* { json2nameValue($EVENT) }
Und das Readings event_type ist auch dazu gekommen und wechselt beim Klicken auf "click" dann "release"
Ich habe meinen Button+ nicht in fhem abgebildet.
Meine Schalter sind als MQTT2_DEVICE in fhem definiert.
Beispiel:
Ein zigbee Schalter hört auf das Topic "zigbee2mqtt/0xa4c1381c757a7dce"
Im Button+ wird ein Taste wie folgt definiert:
Eventtype Broker Id Topic Payload
[0] Click buttonplus zigbee2mqtt/0xa4c1381c757a7dce/set {"state":"TOGGLE"}
Das ist eigentlich alles
ZitatWäre vielleicht noch jemand so nett und hilft mir auf die Sprünge um jetzt einen dieser Button+ Taster zu benutzen um ein Lampenrelais zu triggern welches ich jetzt schon mit Fhem triggern kann?
Wenn man unsicher ist:
- Event Monitor in FHEMWEB aufrufen
- Taste druecken => im Monitor sollte eine Zeile erscheinen
- die ganze Zeile markieren und danach auf "Create/Modify device" klicken.
- hier ein notify anlegen
- in der Detailansicht von notify, im Abschnitt "Change wizard/Change the executed command:" erst Zielgeraet auswaehlen, dann Befehl, und dann auf modify klicken.
Zitat von: ergerd am 01 März 2025, 21:19:47Ich habe meinen Button+ nicht in fhem abgebildet.
Heisst dies dass dein Button+ also nicht unter den MQTT2_DEVICEs aufgeführt wird?
Heisst das auch dass es in deinem System 2 MQTT-Server gibt? den von Fhem (MQTT2-SERVER) und den internen vom Button+ (BrokerID: buttonplus)
In meinem Button+ sind 2 MQTT Broker, "buttonplus" und "fhem1" , würdest du mir raten den "fhem1" zu entfernen?
Zitat von: ergerd am 01 März 2025, 21:19:47Meine Schalter sind als MQTT2_DEVICE in fhem definiert.
Beispiel:
Ein zigbee Schalter hört auf das Topic "zigbee2mqtt/0xa4c1381c757a7dce"
Hier wirds dann kompliziert für mich und ich weiss nicht mehr wo ich mich einlesen muss, wie sage ich nun meinem Shelly2.5 (Rollosteuerung) dass er auf das "click" des Button+ (3) hören soll?
Bei mir steht in der Button+ Weboberfläche:
Eventtype Broker Id Topic Payload
[0] Click fhem1 buttonplus/btn_fc928c/button/3-1/pushbutton {"event_type": "click"}
Heisst dies, dass der button+ 3-1 über den fhem1 Broker versendet und mein shelly auf das "click" von diesem topic lauschen soll welches von fhem1 weitergeleitet wird?
Zitat von: ergerd am 01 März 2025, 21:19:47Das ist eigentlich alles
Bloss weiss ich jetzt nicht wie der Shelly2.5 auf .../3-1/pushbutton "click" hören soll.
Richtig, mein Button+ wird nicht in fhem aufgeführt, ist nicht notwendig,
er kommuniziert ausschließlich via MQTT.
"buttonplus" ist nur ein Name und kein MQTT-Server, der Button+ hat keinen,
also ist es auch egal ob da buttonplus oder fhem1 steht.
Ich nutzen nicht den fhem MQTT-Server sondern Mosqito, was aber letztendlich
keine Rolle spielt.
Ich besitze leider keinen Shelly 2.5, aber zeig Mal ein List von dem Device,
dann kann man evtl. mehr dazu sagen .
@ergerd
Danke für deine Hilfe, ich hoffe das hier ist das von dir gemeinte List, ich hab mich da etwas schwer getan da ich der Meinung war es gäbe irgendwo so einen Button "copy to Forum" , ich konnte den aber nicht finden, also hier ein copy/paste.
EDIT: habe nun gesehen dass der Copy Button auf der Device Seite ist und nicht beim Ergebniss des LIST Befehls.
Internals:
CFGFN
CID shellyswitch25_68C63AF9B924
DEF shellyswitch25_68C63AF9B924
FUUID 67cc8337-f33f-062d-d0cb-203b00ea6e2e6248
IODev MQTT2_SERVER
LASTInputDev MQTT2_SERVER
MQTT2_SERVER_CONN MQTT2_SERVER_192.168.100.76_32149
MQTT2_SERVER_MSGCNT 533
MQTT2_SERVER_TIME 2025-03-08 18:08:47
MSGCNT 533
NAME MQTT2_shellyswitch25_68C63A
NR 277
STATE <a href="http://192.168.100.76" target="_blank">
true
</a>
0/stop
TYPE MQTT2_DEVICE
eventCount 533
OLDREADINGS:
READINGS:
2025-03-08 17:49:43 IODev MQTT2_SERVER
2025-03-08 17:56:37 actions_stats_skipped 0
2025-03-08 17:56:37 attrTemplateVersion 20220404
2025-03-08 17:56:37 cfg_changed_cnt 0
2025-03-08 17:56:37 cloud_connected false
2025-03-08 17:56:37 cloud_enabled false
2025-03-08 18:08:47 current stop
2025-03-08 18:08:47 energy 186
2025-03-08 17:56:37 fs_free 144074
2025-03-08 17:56:37 fs_size 233681
2025-03-08 17:56:37 fw_ver 20230913-112234/v1.14.0-gcb84623
2025-03-08 17:56:37 has_update false
2025-03-08 17:56:37 id shellyswitch25-68C63AF9B924
2025-03-08 18:08:47 input0 0
2025-03-08 18:08:47 input1 0
2025-03-08 17:56:37 inputs_1_event
2025-03-08 17:56:37 inputs_1_event_cnt 0
2025-03-08 17:56:37 inputs_1_input 0
2025-03-08 17:56:37 inputs_2_event
2025-03-08 17:56:37 inputs_2_event_cnt 0
2025-03-08 17:56:37 inputs_2_input 0
2025-03-08 17:56:37 ip 192.168.100.76
2025-03-08 17:56:37 mac 68C63AF9B924
2025-03-08 17:56:37 meters_1_counters_1 0.000
2025-03-08 17:56:37 meters_1_counters_2 0.000
2025-03-08 17:56:37 meters_1_counters_3 0.000
2025-03-08 17:56:37 meters_1_is_valid true
2025-03-08 17:56:37 meters_1_overpower 0.00
2025-03-08 17:56:37 meters_1_power 0.00
2025-03-08 17:56:37 meters_1_timestamp 1741460198
2025-03-08 17:56:37 meters_1_total 0
2025-03-08 17:56:37 meters_2_counters_1 0.000
2025-03-08 17:56:37 meters_2_counters_2 0.000
2025-03-08 17:56:37 meters_2_counters_3 0.000
2025-03-08 17:56:37 meters_2_is_valid true
2025-03-08 17:56:37 meters_2_overpower 0.00
2025-03-08 17:56:37 meters_2_power 0.00
2025-03-08 17:56:37 meters_2_timestamp 1741460198
2025-03-08 17:56:37 meters_2_total 0
2025-03-08 17:56:37 mode roller
2025-03-08 17:56:37 model SHSW-25
2025-03-08 17:56:37 mqtt_connected true
2025-03-08 17:56:37 new_fw false
2025-03-08 17:56:37 online true
2025-03-08 18:08:47 overtemperature 0
2025-03-08 18:08:47 pct 0
2025-03-08 18:08:47 power 0.00
2025-03-08 17:56:37 ram_free 36568
2025-03-08 17:56:37 ram_total 50720
2025-03-08 18:08:47 roller_0_energy 186
2025-03-08 18:08:47 roller_0_power 0.00
2025-03-08 18:08:47 roller_0_stop_reason normal
2025-03-08 17:56:37 rollers_1_calibrating false
2025-03-08 17:56:37 rollers_1_current_pos 100
2025-03-08 17:56:37 rollers_1_is_valid true
2025-03-08 17:56:37 rollers_1_last_direction open
2025-03-08 17:56:37 rollers_1_overtemperature false
2025-03-08 17:56:37 rollers_1_positioning true
2025-03-08 17:56:37 rollers_1_power 0.00
2025-03-08 17:56:37 rollers_1_safety_switch false
2025-03-08 17:56:37 rollers_1_source input
2025-03-08 17:56:37 rollers_1_state stop
2025-03-08 17:56:37 rollers_1_stop_reason normal
2025-03-08 17:56:37 serial 1
2025-03-08 18:08:47 state 0
2025-03-08 18:08:47 temperature 63.08
2025-03-08 18:08:47 temperature_status Normal
2025-03-08 17:56:37 time 18:56
2025-03-08 17:56:37 tmp_is_valid true
2025-03-08 17:56:37 tmp_tC 62.94
2025-03-08 17:56:37 tmp_tF 145.30
2025-03-08 17:56:37 unixtime 1741456598
2025-03-08 17:56:37 update_beta_version 20231107-163214/v1.14.1-rc1-g0617c15
2025-03-08 17:56:37 update_has_update false
2025-03-08 17:56:37 update_new_version 20230913-112234/v1.14.0-gcb84623
2025-03-08 17:56:37 update_old_version 20230913-112234/v1.14.0-gcb84623
2025-03-08 17:56:37 update_status idle
2025-03-08 17:56:37 uptime 416
2025-03-08 18:08:47 voltage 227.87
2025-03-08 17:56:37 wifi_sta_connected true
2025-03-08 17:56:37 wifi_sta_ip 192.168.100.76
2025-03-08 17:56:37 wifi_sta_rssi -59
2025-03-08 17:56:37 wifi_sta_ssid gerswlan
2025-03-08 17:56:37 x_mqttcom set x_mqttcom announce
Attributes:
alias E0_Ch1_Rollo
cmdIcon open:fts_shutter_up close:fts_shutter_down stop:fts_shutter_manual half:fts_shutter_50
comment Shelly 2.5 in Roller-Mode. 100=opened / 0=closed
devStateIcon .*/open:fts_shutter_up@red .*/close:fts_shutter_down@red true:10px-kreis-gruen false:10px-kreis-rot 0/stop:fts_shutter_100 100/stop:fts_shutter_10 9\d/stop:fts_shutter_10 8\d/stop:fts_shutter_20 7\d/stop:fts_shutter_30 6\d/stop:fts_shutter_40 5\d/stop:fts_shutter_50 4\d/stop:fts_shutter_60 3\d/stop:fts_shutter_70 2\d/stop:fts_shutter_80 1\d/stop:fts_shutter_90 0\d/stop:fts_shutter_100 set_.*:fts_shutter_updown
eventMap open:opens close:closes
genericDeviceType blind
model shelly25_roller_invert_0
readingList shellies/shellyswitch25-68C63AF9B924/roller/0/pos:.* { { pct => $EVENT, state => $EVENT } }
shellies/shellyswitch25-68C63AF9B924/status/0/rollers:.* power
shellies/shellyswitch25-68C63AF9B924/online:.* online
shellies/shellyswitch25-68C63AF9B924/announce:.* { json2nameValue($EVENT) }
shellies/announce:.* { $EVENT =~ m,..id...shellyswitch25-68C63AF9B924...mac.*, ? json2nameValue($EVENT) : return }
shellies/shellyswitch25-68C63AF9B924/roller/0:.* current
shellies/shellyswitch25-68C63AF9B924/roller/0:open {{'state' => 'opening'}}
shellies/shellyswitch25-68C63AF9B924/roller/0:close {{'state' => 'closing'}}
shellies/shellyswitch25-68C63AF9B924/input/1:.* input1
shellies/shellyswitch25-68C63AF9B924/input/0:.* input0
shellies/shellyswitch25-68C63AF9B924/relay/power:.* power
shellies/shellyswitch25-68C63AF9B924/relay/energy:.* energy
shellies/shellyswitch25-68C63AF9B924/temperature:.* temperature
shellies/shellyswitch25-68C63AF9B924/overtemperature:.* overtemperature
shellies/shellyswitch25-68C63AF9B924/roller/0/power:.* roller_0_power
shellies/shellyswitch25-68C63AF9B924/roller/0/energy:.* roller_0_energy
shellies/shellyswitch25-68C63AF9B924/temperature_f:.* {}
shellyswitch25_68C63AF9B924:shellies/shellyswitch25-68C63AF9B924/info:.* { json2nameValue($EVENT) }
shellyswitch25_68C63AF9B924:shellies/shellyswitch25-68C63AF9B924/roller/0/stop_reason:.* roller_0_stop_reason
shellyswitch25_68C63AF9B924:shellies/shellyswitch25-68C63AF9B924/temperature_status:.* temperature_status
shellyswitch25_68C63AF9B924:shellies/shellyswitch25-68C63AF9B924/voltage:.* voltage
room E0_Chambre1,MQTT2_DEVICE
setList open:noArg shellies/shellyswitch25-68C63AF9B924/roller/0/command open
close:noArg shellies/shellyswitch25-68C63AF9B924/roller/0/command close
half:noArg shellies/shellyswitch25-68C63AF9B924/roller/0/command/pos 50
stop:noArg shellies/shellyswitch25-68C63AF9B924/roller/0/command stop
pct:slider,0,1,100 shellies/shellyswitch25-68C63AF9B924/roller/0/command/pos $EVTPART1
x_recalibration:noArg shellies/shellyswitch25-68C63AF9B924/roller/0/command rc
x_update:noArg shellies/shellyswitch25-68C63AF9B924/command update_fw
x_mqttcom shellies/shellyswitch25-68C63AF9B924/command $EVTPART1
setStateList open close half stop pct
stateFormat <a href="http://ip" target="_blank">
online
</a>
state/current
webCmd :open:close:half:stop:pct
Ich habe das list geändert da ich dem anfangs verwendeten shelly 2.5 nichtmehr getraut habe dass er noch richtig in Fhem funktioniert. Das nun eingefügte List ist von einem wirklich im Einsatz befindlichen shelly2.5 zur Rollo Steuerung. (das vorherige war nach Defekt ausgebaut worden und lag nun nach der Reparatur auf meinem Arbeitstisch und sollte so mein Testkandidat sein für den Button+
Da Du schreibst:
ZitatRichtig, mein Button+ wird nicht in fhem aufgeführt, ist nicht notwendig, er kommuniziert ausschließlich via MQTT.
Ich habe den Button+ per DELETE aus den MQTT2-DEVICE gelöscht. Es erscheint aber ein neues Device namens "btn_fc928c_0" ich habe bei diesem noch kein attr Template gesetzt. Du auch nicht ? Dieses device kam automatisch in den Raum MQTT2_DEVICE und hat folgende readingList:
btn_fc928c_0:button/btn_fc928c/temperature:.* temperature
btn_fc928c_0:buttonplus/btn_fc928c/sensor/1:.* sensor_1
btn_fc928c_0:buttonplus/btn_fc928c/button/3-1/pushbutton:.* { json2nameValue($EVENT) }
btn_fc928c_0:buttonplus/btn_fc928c/button/4-1/pushbutton:.* { json2nameValue($EVENT) }
Man sieht also dass ich 2 Taster im Button+ belegt habe.
Zitat von: rudolfkoenig am 02 März 2025, 15:04:05Wenn man unsicher ist:
- Event Monitor in FHEMWEB aufrufen
- Taste druecken => im Monitor sollte eine Zeile erscheinen
- die ganze Zeile markieren und danach auf "Create/Modify device" klicken.
- hier ein notify anlegen
Bis hierhin klapts.
Jedoch stelle ich fest. dass wenn ich einen 2. Taster vom Button+ drücke, genau die gleiche Zeile im Event Monitor kommt.
Ein Druck des Taster 3-1 bringt genau das gleiche wie Taster 4-1
2025-03-08 18:50:24 MQTT2_DEVICE btn_fc928c_0 event_type: click
2025-03-08 18:50:25 MQTT2_DEVICE btn_fc928c_0 event_type: release
2025-03-08 18:50:32 MQTT2_DEVICE btn_fc928c_0 temperature: 31.656
2025-03-08 18:50:32 MQTT2_DEVICE btn_fc928c_0 sensor_1: 31.656
Im Button+ wird unter MQTT Topics folgendes erklärt bei
Topic:
buttonplus/btn_fc928c/button/3-1/pushbutton
MQTT message will be published on key-down
Payload:
{"event_type": "click"}
Geht da irgendwo die Info zum Taster 3-1 und 4-1 verloren?
Zitat von: rudolfkoenig am 02 März 2025, 15:04:05- in der Detailansicht von notify, im Abschnitt "Change wizard/Change the executed command:" erst Zielgeraet auswaehlen, dann Befehl, und dann auf modify klicken.
Dann bin ich etwas verloren.
Das MQTT2-DEVICE "btn_fc928c_0" wurde automatisch erstellt ich habe noch kein "attr Template" gesetzt, also est immer noch "?"
Bei den ReadingsList tauchen die 3-1 und 4-1 Button+ Name aber auf:
btn_fc928c_0:button/btn_fc928c/temperature:.* temperature
btn_fc928c_0:buttonplus/btn_fc928c/sensor/1:.* sensor_1
btn_fc928c_0:buttonplus/btn_fc928c/button/3-1/pushbutton:.* { json2nameValue($EVENT) }
btn_fc928c_0:buttonplus/btn_fc928c/button/4-1/pushbutton:.* { json2nameValue($EVENT) }
Ich habe mir von einem Nachbarn eine shelly 2.5 geborgt.
So habe ich ihn in fhem eingerichtet:
Internals:
CFGFN
FUUID 67cc2c00-f33f-e471-f7f2-22e096c53679de78
IODev mqtt2_client
LASTInputDev mqtt2_client
MSGCNT 216
NAME shelly_2_5_test
NR 354
STATE close
TYPE MQTT2_DEVICE
eventCount 228
mqtt2_client_MSGCNT 216
mqtt2_client_TIME 2025-03-08 22:53:42
READINGS:
2025-03-08 12:37:36 IODev mqtt2_client
2025-03-08 20:23:46 attrTemplateVersion 20220404
2025-03-08 22:53:42 input0 0
2025-03-08 22:53:42 input1 0
2025-03-08 22:53:42 roller0 stop
2025-03-08 22:45:30 state close
Attributes:
DbLogExclude .*
devStateIcon {my $onl = ReadingsVal($name,'online','false') eq 'false' ? 'rot' : ReadingsVal($name,'new_fw','false') eq 'true' ? 'gelb' : 'gruen'; my $light = ReadingsVal($name,'state','off'); my $show = '<a href="';$show .= $onl eq 'gelb' ? "/fhem?cmd.dummy=set $name x_update&XHR=1\">" : 'http://'.ReadingsVal($name,'ip','none').' "target="_blank">'; $show .= FW_makeImage("10px-kreis-$onl").'</a>'; "<div> $show <a href=\"/fhem?cmd.dummy=set $name toggle&XHR=1\">".FW_makeImage($light).'</a></div>' }
devicetopic shellies/shelly_2_5
model shelly2.5
readingList shellies/shelly_2_5/relay/0:.* {{ state => $EVENT, relay0 => $EVENT}}
shellies/shelly_2_5/input/0:.* input0
shellies/shelly_2_5/input/1:.* input1
shellies/shelly_2_5/roller/0:.* roller0
shellies/shelly_2_5/online:.* online
shellies/shelly_2_5/announce:.* { json2nameValue($EVENT) }
shellies/announce:.* { $EVENT =~ m,..id...shelly_2_5...mac.*, ? json2nameValue($EVENT) : return }
room 03_buero
setList off:noArg shellies/shelly_2_5/relay/0/command off
on:noArg shellies/shelly_2_5/relay/0/command on
x_update:noArg shellies/shelly_2_5/command update_fw
x_mqttcom shellies/shelly_2_5/command $EVTPART1
open:noArg shellies/shelly_2_5/roller/0/command open
close:noArg shellies/shelly_2_5/roller/0/command close
stop:noArg shellies/shelly_2_5/roller/0/command stop
So mal zwei Button in Button+:
Eventtype Broker Id Topic Payload
[0] Click buttonplus shellies/shelly_2_5/roller/0/command open
[0] Click buttonplus shellies/shelly_2_5/roller/0/command close
Hat sofort funktioniert
Danke ergerd,
ich werde das morgen testen.
Mir fällt auf dass es bei dir viel weniger Readings hat als bei mir.
Die "attr TemplateVersion" ist aber gleich.
Welches Template hast du benutzt um das Shelly2.5 Device zu erstellen?
ich habe shelly25 rollo inv benutzt
Ich habe das einfache shelly1 Template genommen und dann Manuell auf den shelly2.5 angepasst,
auch wegen der Übersichtlichkeit für den Test.
An deinen Attributen für die Readings würde ich nichts ändern, die passen aus meiner Sicht.
Auch das Device für den Button+ brauchst du nicht aus fhem entfernen, ich wollte nur
darauf hinweisen, das es nicht nötig ist.
Du solltest also im Button+ Beispielsweise bei einem Button folgenden Eintrag haben:
Eventtype Broker Id Topic Payload
[0] Click buttonplus shellies/shellyswitch25-68C63AF9B924/roller/0/command open
Mega grossen Dank, es hat auf Anhieb funktioniert.
Für Mitlesende (und für mich falls ich es wieder vergessen werde) zum Shelly Plus 2.5 im Rollo Modus.
Ich habe im Shelly das MQTT eingeschaltet
In Fhem dem gefundenen Device das attrTemplate shellyPlus_2pm_roller_invert_0 gegeben, ich nutze den Fhem MQTT2 Broker.
In Button+:
Die MQTT Brokers sieht wie folgt aus
Broker Id Url Port Web Socket Port Username Default schema Default sch. local state Home Assistant Status
buttonplus mqtt://192.168.XXX.YYY ip fhem 1883 9001 Closed connection
Default Schema habe ich nicht angehakt
Die Buttons Configuration sieht wie folgt aus
Buttonid Position Page Device Side Toplabel Label Leds Custom topics
3-1 3 1 Bar Left CH1-Rollo UP Both Click, Click release
4-1 4 1 Bar Right CH1-Rollo DOWN Both Click, Click release
Der Taster muss gedrückt bleiben zum Öffnen/Schliessen des Rollos, das "Click" löst also entweder ein OPEN oder CLOSE aus, wobei das "Click release" das STOP auslöst.
Im Button 3-1 (öffnen) sieht das MQTT Topics, custom so aus:
Eventtype Broker Id Topic Payload
[0] Click buttonplus shellies/shellyswitch25-68C63AF9B924/roller/0/command open
[2] Click release buttonplus shellies/shellyswitch25-68C63AF9B924/roller/0/command stop
Die Topics findet man in Fhem im Device Overview in der Rubrick Attributes unter setList.
Dort sieht das so aus, wobei 68C63AF9B924 die MAC-Adresse des shelly ist:
open:noArg shellies/shellyswitch25-68C63AF9B924/roller/0/command open
close:noArg shellies/shellyswitch25-68C63AF9B924/roller/0/command close
half:noArg shellies/shellyswitch25-68C63AF9B924/roller/0/command/pos 50
stop:noArg shellies/shellyswitch25-68C63AF9B924/roller/0/command stop
pct:slider,0,1,100 shellies/shellyswitch25-68C63AF9B924/roller/0/command/pos $EVTPART1
x_recalibration:noArg shellies/shellyswitch25-68C63AF9B924/roller/0/command rc
x_update:noArg shellies/shellyswitch25-68C63AF9B924/command update_fw
x_mqttcom shellies/shellyswitch25-68C63AF9B924/command $EVTPART1
Ich bedanke mich nochmals bei @ergerd und @rudolfkoenig.
Als Zusammenfassung bitte ich um Bestätigung dass ich dies jetzt richtig verstanden habe:
1. Da der shelly auf MQTT gestellt ist, wird er automatisch vom MQTT2-Server in Fhem erkannt
2. genauso wird auch der Button+ automatisch erkannt da in der Config des Button+ der MQTT Broker die IP-Adresse des Fhem erhalten hat
3. Der erkannte Shelly wird mit einem attrTemplate definiert, so werden die Readings und alles weitere automatisch erstellt
4. Der erkannte Button+ braucht nicht mit attrTemplate definiert zu werden, da es wahrscheinlich kein passendes Template gibt und bleibt einfach ein Gerät mit "???"
5. Wenn die Taster am Button+ mit den richtigen Topics konfiguriert sind, setzt der Button+ beim Druck des Tasters das jeweilige Kommando ab welches vom Broker empfangen wird und an alle MQTT Geräte weitergeleitet wird.
6. Der Shelly hört dies und schaltet entsprechend
Wie es mit Shellys geht glaube ich nun zu wissen.
Könnt ihr euch auch vorstellen dass ein der Button+ auch ein DOIF triggern kann?
Ich habe folgendes "DOIF" Gerät:
Internals:
DEF (xyz) (set OUT_1 PortB5 on)(set OUT_1 PortB5 off)
FUUID 5d5dc4e6-f33f-062d-6fdd-8d82524ce3cbac87
MODEL FHEM
NAME Licht_Buro_Taster_DOIF
NOTIFYDEV global
NR 47
NTFY_ORDER 50-Licht_Buro_Taster_DOIF
STATE M26_L1-2_On_Off
TYPE DOIF
VERSION 29460 2024-12-29 20:25:48
eventCount 97
READINGS:
2024-11-16 00:40:35 cmd 1.2
2024-11-16 00:40:35 cmd_event set_M26_L1-2_On_Off_cmd_1
2024-11-16 00:40:35 cmd_nr 1
2024-11-16 00:40:35 cmd_seqnr 2
2025-03-09 15:08:02 gpio_response_22 off
2019-10-10 21:25:13 mode enabled
2024-11-16 00:40:35 state M26_L1-2_On_Off
Regex:
accu:
bar:
barAvg:
collect:
attr:
cmdState:
0:
M26_L1-2_On_Off
wait:
0:
0
0.3
condition:
0 xyz
do:
0:
0 set OUT_1 PortB5 on
1 set OUT_1 PortB5 off
1:
helper:
NOTIFYDEV global
globalinit 1
last_timer 0
sleeptimer -1
perlblock:
uiState:
uiTable:
Attributes:
alias Light_office
cmdState M26_L1-2_On_Off
do always
fhem_widget_channels []
room E1_Buro,GoogleAssistant
userReadings gpio_response_22
wait 0,0.3
webCmd M26_L1-2_On_Off
Hier wird ein Relais auf einer 8-fach Relaisplatine für 0,3 sek geschlossen wenn ich in Fhem auf das webCmd M26_L1-2_On_Off klicke. Ich nutze dies selten in Fhem sondern im FTU. Es ist eigentlich der RPi auf welchem Fhem läuft, wlecher per GPIO-Pin das Relais triggert.
Ich schätze dass wir hier dann in dem Fall wären, in dem der Broker auf ein signal vom Button+ lauscht und ein Notify dann das DOIF auslöst?
Schön, das es jetzt funktioniert. Auch deine Aufstellung in #16 finde ich so in Ordnung.
Mit DOIF bin ich nicht so fit, aber ich könnte mir vorstellen, das es mit einem Dummy geht,
der ein MQTTSubscribe enthält, was auf das Topic des Button+ hört.
Auf den Dummy hört wiederum ein Notify, das dann das DOIF auslöst.
Mag aber sein das es da bessere Vorgehensweisen gibt.
MQTTSubscribe und MQTTPublish reaqlisiere ich in meinen Dummies mithilfe von MQTT_GENERIC_BRIDGE
Zitat von: ergerd am 09 März 2025, 19:55:42Schön, das es jetzt funktioniert. Auch deine Aufstellung in #16 finde ich so in Ordnung.
Mit DOIF bin ich nicht so fit, aber ich könnte mir vorstellen, das es mit einem Dummy geht,
der ein MQTTSubscribe enthält, was auf das Topic des Button+ hört.
Auf den Dummy hört wiederum ein Notify, das dann das DOIF auslöst.
Mag aber sein das es da bessere Vorgehensweisen gibt.
MQTTSubscribe und MQTTPublish reaqlisiere ich in meinen Dummies mithilfe von MQTT_GENERIC_BRIDGE
Viel zu kompliziert...
Der Button+ ist doch als Device bereits da. Einfach die readingList so ändern, dass die Events an diesem MQTT2_DEVICE eindeutig sind und den Eventhandler (DOIF) entsprechend ergänzen.
Zitat von: Beta-User am 09 März 2025, 20:10:22...
Der Button+ ist doch als Device bereits da. Einfach die readingList so ändern, dass die Events an diesem MQTT2_DEVICE eindeutig sind und den Eventhandler (DOIF) entsprechend ergänzen.
Klingt super einfach und logisch, aber im moment habe ich keine Spur wie ich das machen soll.
Zitat von: jumperger am 10 März 2025, 23:34:31Zitat von: Beta-User am 09 März 2025, 20:10:22...
Der Button+ ist doch als Device bereits da. Einfach die readingList so ändern, dass die Events an diesem MQTT2_DEVICE eindeutig sind und den Eventhandler (DOIF) entsprechend ergänzen.
Klingt super einfach und logisch, aber im moment habe ich keine Spur wie ich das machen soll.
Schau dir mal
https://wiki.fhem.de/wiki/MQTT2_DEVICE_-_Schritt_f%C3%BCr_Schritt#json2nameValue() an ;)