FHEM Forum

FHEM - Hausautomations-Systeme => MQTT => Thema gestartet von: steven11 am 18 Mai 2025, 10:35:55

Titel: [Gelöst] Verständnisproblem bei Expression und stopic
Beitrag von: steven11 am 18 Mai 2025, 10:35:55
Hallo,
ich möchte gerne meine Rolläden per MQTT (Home Assistant) steuern.
Die Verbindung mit dem MQTT-Broker funktioniert in fhem und ich kann auch Werte per MQTT_GENERIC_BRIDGE publishen.

Allerdings habe ich ein Verständnisproblem, wie ich die stopics genau auswerte.

Über MQTT kommt im topic /fhem/myrollo/set/command einer der folgenden Werte: "open", "closed" oder "stop".
Nun möchte ich, dass bei "open" das folgende set ausgeführt wird:
set myrollo open
Ich habe die Doku studiert und schon alles mögliche probiert, aber irgendwie klappt es nicht.
Ich müsste ja irgendwie für alle 3 sets das gleiche Topic abonnieren und dann per Expression den Wert analysieren und dann das entsprechende set am Gerät aufrufen lassen.

Hat mir jemand einen Tipp wie das geht?

Danke + Gruß
Titel: Aw: Verständnisproblem bei Expression und stopic
Beitrag von: Guybrush am 18 Mai 2025, 10:58:29
leg doch erstmal ein reading in deinem mqttdevice für command an. das wirst du ja sicher auch für status etc brauchen.

attr <device> readingList <clientId>:/fhem/myrollo/set/command:.* command

dann darauf z.b. ein notify

define rolloNotify notify <mqttdevice> set myrollo $EVENT

nicht getestet, aber so in etwa denke ich.
Titel: Aw: Verständnisproblem bei Expression und stopic
Beitrag von: Beta-User am 18 Mai 2025, 11:02:50
Zitat von: Guybrush am 18 Mai 2025, 10:58:29leg doch erstmal ein reading in deinem mqttdevice für command an. das wirst du ja sicher auch für status etc brauchen.
Nope! Er hat doch schon eine MQTT_GENERIC_BRIDGE am Laufen ;) .

Zitat von: steven11 am 18 Mai 2025, 10:35:55Ich müsste ja irgendwie für alle 3 sets das gleiche Topic abonnieren und dann per Expression den Wert analysieren und dann das entsprechende set am Gerät aufrufen lassen.
Das sollte schlicht "state" sein, das da als Reading für diesen stopic anzugeben ist; eine expression sollte nicht erforderlich sein.

Siehe auch die commandref:
ZitatBei Verwendung von 'stopic' wird der 'set'-Befehl als 'set <dev> <reading> <value>' ausgeführt. Um den set-Befehl direkt am Device ohne Angabe eines Readingnamens auszuführen (also 'set <dev> <value>') muss als Reading-Name 'state' verwendet werden.
Bitte ggf. wenigstens auszugesweise die Attributoinhalte für mqttPublish und mqttSubscribe posten, falls das nicht klappt.

Nachtrag noch:
kommen die Nachrichten überhaupt bei der MGB an? Anders formuliert: clientOrder am IO paßt?
Titel: Aw: Verständnisproblem bei Expression und stopic
Beitrag von: steven11 am 19 Mai 2025, 07:58:43
@Beta-User: vielen Dank, das wars! Ich hatte die Doku an der Stelle nicht richtig verstanden, aber jetzt ists eigentlich ganz logisch  :D
Titel: Aw: Verständnisproblem bei Expression und stopic
Beitrag von: Beta-User am 19 Mai 2025, 10:42:24
Danke für die Rückmeldung.

Markierst du den Thread als [gelöst]?

PS: Das Thema HomeAssistant + (FHEM-)Rollladen via MQTT ist ein Dauerbrenner, zu dem ständig Fragen kommen. Vielleicht kannst du deine Kondiguration komplett posten (yaml-Auszug, FHEM-Device und das IO (MQTT2_CLIENT?) als raw).

Das ist zwar alles meistens doch irgendwie spezifisch, aber deine wenigen Schnippsel sahen zumindest mal ziemlich "straight forward" aus ;) .
Titel: Aw: Verständnisproblem bei Expression und stopic
Beitrag von: steven11 am 19 Mai 2025, 10:54:02
Gerne:

Home Assistant:
# https://www.home-assistant.io/integrations/cover.mqtt
- object_id: "rollo_wohnzimmer"
  name: "Rolladen Wohnzimmer"
  device_class: "shutter"

  retain: false

  command_topic: "fhem/ROLLO_wohnzimmer/set/state"
  position_topic: "fhem/ROLLO_wohnzimmer/pct"
  set_position_topic: "fhem/ROLLO_wohnzimmer/set/pct"
  state_topic: "fhem/ROLLO_wohnzimmer/state"
 
  availability_topic: "fhem/status"
  payload_available: "connected"
  payload_not_available: "disconnected"
 
  payload_open: "open"
  payload_close: "closed"
  payload_stop: "stop"
  position_open: 0
  position_closed: 100
  state_closing: "drive-down"
  state_opening: "drive-up"
  state_stopped: "stopped"


fhem MQTT_GENERIC_BRIDGE:
define mqttRollos MQTT_GENERIC_BRIDGE mqtt TYPE=ROLLO,TYPE=SD_Keeloq,TYPE=DOIF,TYPE=SIGNALduino,TYPE=AutoShuttersControl
setuuid mqttRollos 650c553d-f33f-fef7-53da-18af3cd59397c7b6
attr mqttRollos IODev MqttHomeAssistant
attr mqttRollos globalDefaults sub:base={"fhem/$device/set"} pub:base={"fhem/$device"} retain=1
attr mqttRollos room MQTT


fhem ein ROLLO-Device:
attr ROLLO_tom_tuer mqttPublish pct|state:topic={"$base/$name"} state:expression={$value=~m/^(pct-\d+|half)$/?'stopped':$value}
attr ROLLO_tom_tuer mqttSubscribe pct|state:stopic={"$base/$name"}
Titel: Aw: Verständnisproblem bei Expression und stopic
Beitrag von: steven11 am 19 Mai 2025, 11:22:13
Wie kann ich es als "gelöst" markieren? Ich sehe nur einen Button um das Topic zu schließen.
Titel: Aw: Verständnisproblem bei Expression und stopic
Beitrag von: betateilchen am 19 Mai 2025, 11:58:07
Im ersten Beitrag dieses Threads auf "Bearbeiten" gehen und dann den Titel ändern.

Schließen ist in der Regel nicht notwendig :)
Titel: Aw: [Gelöst] Verständnisproblem bei Expression und stopic
Beitrag von: Beta-User am 21 Mai 2025, 08:46:27
Zitat von: steven11 am 19 Mai 2025, 10:54:02Gerne:
Thx.

Bzgl. "retain" noch zwei Anmerkungen:
a) sehr sinnvoll erscheint mir, das von HA aus auf "false" zu setzen.
b) ob es best practice ist, das von FHEM aus via MGB als globalen default zu setzen, erscheint mir nicht unbedingt zwingend (aber in dieser Richtung auch nicht schädlich).
Ziel ist vermutlich, den Status in HA aktuell zu halten - dafür sollte es imo andere Methoden innerhalb HA geben.
Vgl. dazu auch meine Anmerkungen hier: https://forum.fhem.de/index.php?msg=1337224