fhem2mqttfhem über MQTT Server im Internet

Begonnen von TomLee, 17 April 2024, 17:09:27

Vorheriges Thema - Nächstes Thema

TomLee

Hallo,

weil ich es gestern in den Raum geworfen hab, das man das über einen Server im Internet lösen könnte, versuch ich das gerade selbst mal aus. Für die Erfahrung, bis jetzt brauch ich das noch nicht.

Test-FHEM:

defmod fhem2fhem MQTT2_CLIENT bliblablub.s1.eu.hivemq.cloud:8883
attr fhem2fhem SSL 1
attr fhem2fhem autocreate no
attr fhem2fhem clientOrder MQTT_GENERIC_BRIDGE MQTT2_DEVICE
attr fhem2fhem room fhem2fhem
attr fhem2fhem subscriptions setByTheProgram
attr fhem2fhem username TomLi

setstate fhem2fhem opened
setstate fhem2fhem 2024-04-17 16:29:57 lastPublish mqttGenericBridge/d/state:off
setstate fhem2fhem 2024-04-17 16:39:50 state opened

defmod mqttGenericBridge MQTT_GENERIC_BRIDGE
attr mqttGenericBridge IODev fhem2fhem
attr mqttGenericBridge alias MQTT generic bridge
attr mqttGenericBridge globalDefaults sub:base=mqttGenericBridge/set pub:base=mqttGenericBridge
attr mqttGenericBridge group MQTT
attr mqttGenericBridge room fhem2fhem
attr mqttGenericBridge stateFormat dev: device-count in: incoming-count out: outgoing-count

setstate mqttGenericBridge dev: 2 in: 0 out: 12
setstate mqttGenericBridge 2024-04-17 15:28:47 IODev fhem2fhem
setstate mqttGenericBridge 2024-04-17 15:27:40 attrTemplateVersion 20211208_MQTT
setstate mqttGenericBridge 2024-04-17 16:39:50 device-count 2
setstate mqttGenericBridge 2024-04-17 15:28:46 incoming-count 0
setstate mqttGenericBridge 2024-04-17 16:15:42 outgoing-count 12
setstate mqttGenericBridge 2024-04-17 16:15:42 transmission-state outgoing publish sent
setstate mqttGenericBridge 2024-04-17 15:28:46 updated-reading-count 0
setstate mqttGenericBridge 2024-04-17 15:28:46 updated-set-count 0

defmod d dummy
attr d mqttPublish state:topic={"$base/$device/$name"}
attr d mqttSubscribe state:stopic={"$base/$device/$name"}
attr d room fhem2fhem
attr d setList on off

setstate d off
setstate d 2024-04-17 16:15:42 state off

Haupt-FHEM:
defmod f2f MQTT2_CLIENT bliblablub.s1.eu.hivemq.cloud:8883
attr f2f SSL 1
attr f2f autocreate simple
attr f2f clientId f2f
attr f2f room IOs
attr f2f username TomLu

setstate f2f opened
setstate f2f 2024-04-17 15:43:08 state opened

defmod MQTT2_CLIENT_general_bridge MQTT2_DEVICE f2f
attr MQTT2_CLIENT_general_bridge autocreate 1
attr MQTT2_CLIENT_general_bridge bridgeRegexp (tele|stat|shellies|valetudo|Advantech)/([^/]+)/.*:.* "$2"\
  (shellyp(lus|ro4pm)[^/:_]{4,}+)/.*:.* "$1"\
  zigbee2mqtt/bridge/.*:.* "zigbee2mqtt"\
  sonos/connected.* "sonos"\
  tvheadend/[^/:]+.* "tvheadend"\
  milight/LWT:.* "milight"\
  (ESPClient_[^/]+)/.*:.* "$1"\
  (ebusd[^/]*)/global/.*:.* "$1"\
  [^/]+/(ems-esp[^/]+)/start:.* "$1"\
  (mygateway[\d]+)-(in|out)/.* "$1"\
  (wallpanel|wled|instar)/([^/]+)/.*:.* "$1_$2"\
  (nuki)/[^/]+/.* "$1"\
  go-eCharger/([^/]+)/.*:.* "go_eCharger_$1"\
  owntracks/[^/]+/([^/:]+).* "owntracks_$1"\
  home/(O[^/]*M[^/]*G[^/]*)/LWT:.* "$1"\
  homeassistant/.*/config:.* ""\
  tasmota/discovery/[^/:]+/(config|sensors):.* ""\
  mqttGenericBridge/([^/]+)/.*:.* "$1"
attr MQTT2_CLIENT_general_bridge comment Do not use very open bridgeRegexp expressions! This might lead to irritating results... Especially make sure to not have two regexpes that may both match!
attr MQTT2_CLIENT_general_bridge icon mqtt_bridge_2
attr MQTT2_CLIENT_general_bridge model MQTT2_CLIENT_general_bridge
attr MQTT2_CLIENT_general_bridge room MQTT2_DEVICE
attr MQTT2_CLIENT_general_bridge setList clear_all:noArg {fhem("deleteattr $NAME readingList;; deletereading -q $NAME (?!associatedWith|IODev).*");;return undef}
attr MQTT2_CLIENT_general_bridge setStateList on off

defmod MQTT2_d MQTT2_DEVICE d
attr MQTT2_d readingList mqttGenericBridge/d/state:.* state
attr MQTT2_d room MQTT2_DEVICE
attr MQTT2_d setList on:noArg mqttGenericBridge/d/state on\
off:noArg mqttGenericBridge/d/state off

setstate MQTT2_d off
setstate MQTT2_d 2024-04-17 16:07:03 IODev f2f
setstate MQTT2_d 2024-04-17 16:07:05 associatedWith MQTT2_f2f
setstate MQTT2_d 2024-04-17 16:40:20 state off

Wenn ich im Test-FHEM den dummy schalte kommt das im Haupt-FHEM an. Allerdings nicht andersrum, wenn ich im Haupt-FHEM schalte sehe ich das am Server was ankommt (im Web Client von hivemq), aber im Traffic-Monitor der MQTT2-CLIENT des Test-FHEM nicht.

Sieht jemand einen Konfigurationsfehler ?
Ist der Topic der setter in MQTT2_d mglw. falsch ?
Mach ich was falsch bei mqttSubscribe bzw. muss was das subscriben angeht nach was ergänzt werden ?

Gruß

Thomas

TomLee

Ah, es geht mit:   

on:noArg mqttGenericBridge/set/d/state on
Dann wird aber ein neues Device im Haupt-FHEM angelegt, wegen dem set in dem Topic:

defmod MQTT2_set MQTT2_DEVICE set
attr MQTT2_set readingList mqttGenericBridge/set/d/state:.* state
attr MQTT2_set room MQTT2_DEVICE

setstate MQTT2_set on
setstate MQTT2_set 2024-04-17 17:29:27 IODev f2f
setstate MQTT2_set 2024-04-17 17:29:27 associatedWith MQTT2_CLIENT_general_bridge
setstate MQTT2_set 2024-04-17 17:29:27 state on

Wie löst man das am besten ? Mit einem bridgeRegexp in MQTT2_CLIENT_general_bridge ?
mqttGenericBridge/set/.*/.*:.* ""