Modul-Diskussion/Hilfe: MQTT_GENERIC_BRIDGE

Begonnen von Master_Nick, 11 Oktober 2018, 17:23:24

Vorheriges Thema - Nächstes Thema

Billy

Hexenmeister hat's doch geschrieben!
Zitat von: hexenmeister am 29 Mai 2020, 18:55:45
Readings und auch Attribute kann man senden und empfangen (auch alle, mit *:topic und *:atopic).
Probiers doch einfach mal aus! Dann wirst du sehen was geht!  ;)

Billy
FHEM immer akt. auf 3 BeagleBoneBlack: 2xHMLAN 2xJeelink ;10x HM-CC-TC, 13x HM-CC-VD, 1x HM-ES-PMSw1-Pl, 3x HM-LC-SW1-PL2, viele ESP8266, Tasmota Scripting, Mqtt*

pula

Nice!
Danke für den Hinweis. Scheint zu funktionieren, hatte ich nicht erwartet!
Danke an hexenmeister für dieses tolle Modul!
Cheers,
Pula
fhem (debian auf proxmox), HM-LAN und wired, MySensors, FritzBoxes, Kodi, vdr, Onkyo, squeezeplayers, nanoCUL, wifilight (Ethernet-Bridge), Heizungssteuerung (python/vncdotool), doorpi, ESP/Arduinos/MQTT, Alexa, HomeConnect, Sonoff/Tasmota, espRGBWW, esphome, Telegram

hexenmeister

Sowas wie send all gibt s bisher nicht.
Allerdings kann man schon generisch alle Readings senden und auch empfangen. DIese werden dann beim ersten Empfang angelegt. Steht in der Doku sogar mit Beispiel.

attr <dev> mqttSubscribe *:topic={"/TEST/$reading"}

Hier: der Part des Topics, wo $reading steht, wird hier als eine (ggf. neue) Readings interpretiert.

Maintainer: MQTT_GENERIC_BRIDGE, SYSMON, SMARTMON, systemd_watchdog, MQTT, MQTT_DEVICE, MQTT_BRIDGE
Contrib: dev_proxy

pula

Das funktioniert ja wuderbar so weit.
Auf die Gefahr hin, mich noch einmal zu blamieren, weil ich den Thread/die Doku nicht genau genug gelesen habe:
Habt ihr auch eine Idee, wie man mit commands umgehen könnte?
Zum Beispiel unterstützt das Kodi-Modul ein command "msg", das einen übergebenen String dann an kodi sendet und den String dann auf dem TV einblendet. Das geht so jetzt natürlich nicht....
Cheers,
Pula
fhem (debian auf proxmox), HM-LAN und wired, MySensors, FritzBoxes, Kodi, vdr, Onkyo, squeezeplayers, nanoCUL, wifilight (Ethernet-Bridge), Heizungssteuerung (python/vncdotool), doorpi, ESP/Arduinos/MQTT, Alexa, HomeConnect, Sonoff/Tasmota, espRGBWW, esphome, Telegram

hexenmeister

Zitat von: pula am 03 Juni 2020, 13:06:32
Das geht so jetzt natürlich nicht....
Doch  ;D
Dafür gibt es spezielle topic Syntax, es werden dann Befehle ausgeführt. Halte Ausschau nach stopic.
Maintainer: MQTT_GENERIC_BRIDGE, SYSMON, SMARTMON, systemd_watchdog, MQTT, MQTT_DEVICE, MQTT_BRIDGE
Contrib: dev_proxy

pula

VIELEN DANK! Das klappt ja hervorragend.
Nur der Vollständigkeit halber: Ist es sinnvoll, das so zu definieren:     
*:stopic={"fhem/$device/$reading"}

Oder gibt das Probleme, falls "normale" readings definiert werden?
Ein zusätzliches
*:topic={"fhem/$device/$reading"}
wird hier ja kaum zielführend sein.
Wie ist das gedacht? Für "normale" readings und attribute das topic verwenden (also *:topic....) und die Kommandos dann per stopic explizit auflisten?
Sorry, dass ich hier so penetrant nachfrage, ich will es nur verstehen...
Cheers,
Pula
fhem (debian auf proxmox), HM-LAN und wired, MySensors, FritzBoxes, Kodi, vdr, Onkyo, squeezeplayers, nanoCUL, wifilight (Ethernet-Bridge), Heizungssteuerung (python/vncdotool), doorpi, ESP/Arduinos/MQTT, Alexa, HomeConnect, Sonoff/Tasmota, espRGBWW, esphome, Telegram

hexenmeister

Auf denselben Topic zu mappen ist natürlich nicht sinnvoll. Einzelnauflisten muss man jedoch auch nicht.
Die Pfade sollen sich unterscheiden.
Z.B.:

*:topic={"fhem/$device/readigs/$reading"}
*:stopic={"fhem/$device/cmds/$reading"}
Maintainer: MQTT_GENERIC_BRIDGE, SYSMON, SMARTMON, systemd_watchdog, MQTT, MQTT_DEVICE, MQTT_BRIDGE
Contrib: dev_proxy

pula

Ah, super! Das ist des "Rätsels" Lösung :-)
Vielen Dank nochmal für das tolle Modul und auch für die Geduld beim Beantworten der (wahrscheinlich schon diskutierten) Fragen!
Cheers,
Pula
fhem (debian auf proxmox), HM-LAN und wired, MySensors, FritzBoxes, Kodi, vdr, Onkyo, squeezeplayers, nanoCUL, wifilight (Ethernet-Bridge), Heizungssteuerung (python/vncdotool), doorpi, ESP/Arduinos/MQTT, Alexa, HomeConnect, Sonoff/Tasmota, espRGBWW, esphome, Telegram

Billy

@Hexenmeister
Du hast mir vor langer Zeit eine Frage gestellt?
Auswahl von Readings aus JSON ist derzeit nicht möglich, werden alle genommen. Wäre das wichtig?

Zitat von: hexenmeister am 12 November 2018, 18:13:49
Kannst genauso nehmen, wie es ist (nur Topic wäre noch anzupassen):
json:topic=/TEST/json json:expression={json2nameValue($message)}
Auswahl von Readings aus JSON ist derzeit nich möglich, werden alle genommen. Wäre das wichtig?

Könnte ich ab und zu gebrauchen.
Hast du eine IDEE?

Billy
FHEM immer akt. auf 3 BeagleBoneBlack: 2xHMLAN 2xJeelink ;10x HM-CC-TC, 13x HM-CC-VD, 1x HM-ES-PMSw1-Pl, 3x HM-LC-SW1-PL2, viele ESP8266, Tasmota Scripting, Mqtt*

Beta-User

Zitat von: Billy am 31 August 2020, 17:33:36
Hast du eine IDEE?
Da man json2nameValue() verwenden kann, sollte das mit der erweiterten Form möglich sein:
- entweder ein jsonMap an die Funktion übergeben oder
- das (recht neue) 4. Argument "filter" nutzen (ist eine regex).

Bitte um Info, wenn dazu mehr input erforderlich ist, für beides ist vermutlich noch recht wenig Material zu finden ($JSONMAP schon, aber man kann da afaik auch einen Hash übergeben, und dafür gibt es noch wenig Beispiele).
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

Billy

Danke, ist im Augenblick nicht wichtig, war nur über den alten Thread gestolpert.
Hätte ja sein können, dass es was gibt was ich noch nicht kenne. ;)
FHEM immer akt. auf 3 BeagleBoneBlack: 2xHMLAN 2xJeelink ;10x HM-CC-TC, 13x HM-CC-VD, 1x HM-ES-PMSw1-Pl, 3x HM-LC-SW1-PL2, viele ESP8266, Tasmota Scripting, Mqtt*

Beta-User

OK, du kanntest demnach das 4. Argument von json2nameValue() schon ;) ?

(Vielleicht solltest du ein konkretes Beispiel von einem JSON liefern und Info, was du daraus denn verwenden willst, sonst ist es schwierig zu helfen. Das Thema ist ziemlich abstrakt).
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

gadget

#342
Hallo,

kurze Zwischenfrage:

Ich verwende den fhem-internen MQTT2_SERVER für die Anbindung einiger Tasmota-Geräte.

Weiterhin verwende ich als Frontend Home Assistant und da läuft auch nochmal ein Mosquitto mit drauf.
Die Verbindung von fhem zu Home Assistant macht ein MQTT-Device in fhem, das auf den Mosquitto-Broker verweist und eine MQTT_GENERIC_BRIDGE mit globalPublish, eingeschränkt auf einen fhem-room.

Die fhem-Devices, die ich in HomeAssistant verwenden will, packe ich dann zusätzlich in diesen room.

Das klappt soweit erstmal ganz gut.

Jetzt stehe ich vor dem Problem, dass ich auch die readings eines Tasmota-Device (MQTT2_DEVICE), das an fhem über den internen MQTT2_SERVER angebunden ist, an HomeAssistant weiterleiten will. Wenn ich das in den entsprechenden fhem-room packe, wird das aber von der Bridge offenbar ignoriert und in Home Assistant kommt nichts an. Auch dann, wenn ich refrehsUserAttr auslöse, und bei dem Tasmota-Gerät

attr <tasmota-device> mqttForward all


setze. Ist das "by-design" nicht möglich, oder mache ich was falsch ? Gibt es hier eine "elegante" Lösung, oder muss ich mit  dummy / readingsproxy und zig notifiys rumtricksen ?

Grüße, gadget

Billy

Habe zwar keine Ahnung von Home Assistant. :'(
Kann sich HA nicht direkt mit Tasmota verbinden, ohne Umweg über FHEM etc?
FHEM immer akt. auf 3 BeagleBoneBlack: 2xHMLAN 2xJeelink ;10x HM-CC-TC, 13x HM-CC-VD, 1x HM-ES-PMSw1-Pl, 3x HM-LC-SW1-PL2, viele ESP8266, Tasmota Scripting, Mqtt*

gadget

klar, aber das "Brain" meiner Hausautomatisierung soll weiterhin fhem sein. Home Assistant nutze ich nur als hübsches Frontend für die Mitbewohner.