Button+ Modular Room Controller and Thermostat

Begonnen von LutzG, 28 Dezember 2023, 00:48:19

Vorheriges Thema - Nächstes Thema

ergerd

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
FHEM auf RasPi 4, ZigBee, 1Wire2WLAN, DS2423, Buderus KM200, Button+, LaCrosseGateway, PCA301, ConBee III, LuftdatenInfo, OneWireGW, Div. ESPs u. Shellys

jumperger

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

jumperger

#17
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?

ergerd

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
FHEM auf RasPi 4, ZigBee, 1Wire2WLAN, DS2423, Buderus KM200, Button+, LaCrosseGateway, PCA301, ConBee III, LuftdatenInfo, OneWireGW, Div. ESPs u. Shellys

Beta-User

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.
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

jumperger

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.

Beta-User

Zitat von: jumperger am 10 März 2025, 23:34:31
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.

Schau dir mal
https://wiki.fhem.de/wiki/MQTT2_DEVICE_-_Schritt_f%C3%BCr_Schritt#json2nameValue() an ;)
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