beliebige MQTT Befehle / Topics aus Fhem absetzen

Begonnen von slor, 27 April 2017, 23:27:09

Vorheriges Thema - Nächstes Thema

slor

Hallo zusammen,

ist es möglich aus Fhem irgendwie direkt Befehle an den MQTT broker zu übergeben?

z.b. cmnd/sonoffs/restart 1

Damit könnte ich bei bedarf alle Sonoffs neu starten. Der Befehl geht auf einen Group topic. Das ist jetzt nur mal ein Beispiel.
Was müsste ich tun, damit so etwas z.b. via Notify oder task ausführbar ist?
Fhem auf Raspberry Pi 4
CCU3 mit RaspberryMatic mit HMCCU an FHEM
HMCCU, Telegram, Conbee2 und Hue/Tradfri/Osram Lampen AQARA Sensoren, HomeConnect

P.A.Trick

Ja geht mit der MQTT Bridge! Hier mal ein Beispiel wie ich meine Stromdaten an den Broker gebe!
defmod mqtt_Strom MQTT_BRIDGE Strom
attr mqtt_Strom IODev myBroker
attr mqtt_Strom publishReading_current /Strom/current
attr mqtt_Strom stateFormat transmission-state

setstate mqtt_Strom outgoing publish sent
setstate mqtt_Strom 2017-04-27 23:54:08 transmission-state outgoing publish sent

Cubietruck,RPI,QNAP Ts-419p+, FS20, FRITZ!DECT200, 7 MAX! Thermostate, 3 MAX! Fensterkontakte, Kodi, CUL V3.3, EM1000S, LW12, LD382, HUE, HM-CFG-USB-2, 1x HM-LC-SW1-FM, 2x HM-LC-SW2-FM, 2x HM-LC-Sw1PBU-FM, 3xHM-LC-Bl1PBU-FM,HM-SEC-RHS, 2xHM-SEC-SD,HM-WDS30-T-O, 3x HM-LC-Dim1TPBU-FM, RPI+AddOn

slor

super! Danke!

Könnte ich umgekehrt auch ein "Log Device" bauen, bei dem ich nach Bedarf verschiedene Topics mit loggen kann?
Fhem auf Raspberry Pi 4
CCU3 mit RaspberryMatic mit HMCCU an FHEM
HMCCU, Telegram, Conbee2 und Hue/Tradfri/Osram Lampen AQARA Sensoren, HomeConnect

P.A.Trick

Zitat von: slor am 28 April 2017, 21:00:06
super! Danke!

Könnte ich umgekehrt auch ein "Log Device" bauen, bei dem ich nach Bedarf verschiedene Topics mit loggen kann?

Klar geht das! Genauso allerdings mit dem Subscribe Reading!
Cubietruck,RPI,QNAP Ts-419p+, FS20, FRITZ!DECT200, 7 MAX! Thermostate, 3 MAX! Fensterkontakte, Kodi, CUL V3.3, EM1000S, LW12, LD382, HUE, HM-CFG-USB-2, 1x HM-LC-SW1-FM, 2x HM-LC-SW2-FM, 2x HM-LC-Sw1PBU-FM, 3xHM-LC-Bl1PBU-FM,HM-SEC-RHS, 2xHM-SEC-SD,HM-WDS30-T-O, 3x HM-LC-Dim1TPBU-FM, RPI+AddOn

Dlay

Das Thema interessiert mich auch, allerdings verstehe ich bei den obigen Antworten nur Bahnhof.

Ich bin allerdings auch blutiger Anfänger.

Kann man oben in der Eingabezeile bei fhem nicht ein beliebiges publish zum test absetzen ?

z.b.

set <mqttdevice> publish <topic>/<commando> 1


slor

Das wäre cool! Ich nehme dazu immer einen Mqtt Client auf meinem Rechner oder Handy.
Fhem auf Raspberry Pi 4
CCU3 mit RaspberryMatic mit HMCCU an FHEM
HMCCU, Telegram, Conbee2 und Hue/Tradfri/Osram Lampen AQARA Sensoren, HomeConnect

P.A.Trick

Zitat von: Dlay am 10 Juni 2017, 01:05:46
Das Thema interessiert mich auch, allerdings verstehe ich bei den obigen Antworten nur Bahnhof.

Ich bin allerdings auch blutiger Anfänger.

Kann man oben in der Eingabezeile bei fhem nicht ein beliebiges publish zum test absetzen ?

z.b.

set <mqttdevice> publish <topic>/<commando> 1

Das ist leider so nicht möglich. Allerdings kommt mir dabei die Idee, das mit einem cmdAlias und einem Systemaufruf zu realisieren.
Ich schaue mal, ob ich so etwas hinbekomme.
Cubietruck,RPI,QNAP Ts-419p+, FS20, FRITZ!DECT200, 7 MAX! Thermostate, 3 MAX! Fensterkontakte, Kodi, CUL V3.3, EM1000S, LW12, LD382, HUE, HM-CFG-USB-2, 1x HM-LC-SW1-FM, 2x HM-LC-SW2-FM, 2x HM-LC-Sw1PBU-FM, 3xHM-LC-Bl1PBU-FM,HM-SEC-RHS, 2xHM-SEC-SD,HM-WDS30-T-O, 3x HM-LC-Dim1TPBU-FM, RPI+AddOn

P.A.Trick

#7
defmod c_mqttmsg cmdalias mqttmsg .* AS {qx(/usr/bin/mosquitto_pub -h 192.168.1.101 -t \'$EVTPART0\' -m \'$EVTPART1\')}

setstate c_mqttmsg defined



Hier mal ein Alias dafür! Die IP Adresse müsst Ihr anpassen und dann wie folgt aufrufen:

mqttmsg <TOPIC> <MESSAGE>

Viel Spaß damit!

*EDIT*
Ich habe den alias noch ins Wiki übernommen!
https://wiki.fhem.de/wiki/Cmdalias#mqttmsg

Cubietruck,RPI,QNAP Ts-419p+, FS20, FRITZ!DECT200, 7 MAX! Thermostate, 3 MAX! Fensterkontakte, Kodi, CUL V3.3, EM1000S, LW12, LD382, HUE, HM-CFG-USB-2, 1x HM-LC-SW1-FM, 2x HM-LC-SW2-FM, 2x HM-LC-Sw1PBU-FM, 3xHM-LC-Bl1PBU-FM,HM-SEC-RHS, 2xHM-SEC-SD,HM-WDS30-T-O, 3x HM-LC-Dim1TPBU-FM, RPI+AddOn

slor

Daumen hoch! Die IP ist der MQTT Broker? Richtig?
Fhem auf Raspberry Pi 4
CCU3 mit RaspberryMatic mit HMCCU an FHEM
HMCCU, Telegram, Conbee2 und Hue/Tradfri/Osram Lampen AQARA Sensoren, HomeConnect

P.A.Trick

Cubietruck,RPI,QNAP Ts-419p+, FS20, FRITZ!DECT200, 7 MAX! Thermostate, 3 MAX! Fensterkontakte, Kodi, CUL V3.3, EM1000S, LW12, LD382, HUE, HM-CFG-USB-2, 1x HM-LC-SW1-FM, 2x HM-LC-SW2-FM, 2x HM-LC-Sw1PBU-FM, 3xHM-LC-Bl1PBU-FM,HM-SEC-RHS, 2xHM-SEC-SD,HM-WDS30-T-O, 3x HM-LC-Dim1TPBU-FM, RPI+AddOn

Dlay

Super, danke !

Das werde ich auch testen..

Ich würde das nutzen um ein Firmware-Update aller Devices anzustarten.

Dlay


Dlay

#12
Naja, also nicht so ganz.. vielleicht liegt mein neues Problem aber auch woanders.

Ich versuche ein JSON String mitzusenden, der scheint aber nicht anzukommen.

Hintergrund:

Ich habe eine IR LED an GPIO14 eines Sonoff Basic gehängt. Das wird von Tasmota ja direkt so unterstützt.
Wenn ich zum Test meinen Befehl in der Tasmota Console eingebe funktioniert der IR Code wunderbar.

Wenn ich das über mqttmsg in der fhem Eingabezeile mache mit:

mqttmsg /zuhause/schalter/mqtt_sonoff_2/cmnd/IRSend {"protocol": "NEC","bits": 32, "data": 1082071271}

dann gibt mir die Tasmota Console folgendes aus (Console im Debug-Mode):

23:44:16 RSLT: Receive topic /zuhause/schalter/mqtt_sonoff_2/cmnd/IRSend, data size 12, data {"protocol":
23:44:16 RSLT: DataCb Group 0, Index 1, Type IRSEND, Data {"protocol": ({"PROTOCOL":)
23:44:16 MQTT: /zuhause/schalter/mqtt_sonoff_2/RESULT = {"IRSend":"Invalid JSON"}

Das gleiche Kommando direkt in der Console ergibt:

23:45:33 RSLT: Receive topic /IRSend, data size 50, data {"protocol": "NEC","bits": 32, "data": 1082071271}
23:45:33 RSLT: DataCb Group 0, Index 1, Type IRSEND, Data {"protocol": "NEC","bits": 32, "data": 1082071271} ({"PROTOCOL": "NEC","BITS": 32, "DATA": 1082071271})
23:45:34 MQTT: /zuhause/schalter/mqtt_sonoff_2/RESULT = {"IRSend":"Done"}

Könnte es sein das mqttmsg die Klammern "verschluckt" ?

Auf dem Pi mit:
mosquitto_pub -h 192.168.1.1 -t /zuhause/schalter/mqtt_sonoff_2/cmnd/IRSend -m '{"protocol": "NEC","bits": 32, "data": 1082071271}'

Funktioniert es auch.

Ich bin etwas ratlos..

hexenmeister

Die Idee hatte ich auch schon. Ich werde das vlt. auch noch implementieren und einen entsprechenden Patch einreichen.
Hier etwas mehr zu den geplanten Features:
https://forum.fhem.de/index.php/topic,32528.msg651660.html#msg651660
Maintainer: MQTT_GENERIC_BRIDGE, SYSMON, SMARTMON, systemd_watchdog, MQTT, MQTT_DEVICE, MQTT_BRIDGE
Contrib: dev_proxy

Dlay

In einem anderen Thread bekam ich eine folgende Antwort die auch funktioniert hat:

https://forum.fhem.de/index.php/topic,73453.msg651009.html#msg651009

Das mqttmsg muss wohl noch angepasst werden, dahingehend das mehrere Evparts vorkommen können. So meine Vermutung.

hexenmeister

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

australien

hallo

Das mit dem mqttmsg funktioniert super, nur bekomme ich beim Ausführen dieser folgende Fehlermeldung

Warning: Unable to locate configuration directory, default config not loaded.

mqtt funktioniert aber, auch die Befehle werden richtig ausgeführt.
raspberry pi3
signalduino, Shelly1, Shelly2, Sonos, Unifi
Amazon Fire Tablet 7 | Noname Android Tablet 10"

hexenmeister

Das MQTT Modul kann schon länger ohne zusatzscripte Nachrichten versenden. Wozu brauchst du die mqttmsg?
Maintainer: MQTT_GENERIC_BRIDGE, SYSMON, SMARTMON, systemd_watchdog, MQTT, MQTT_DEVICE, MQTT_BRIDGE
Contrib: dev_proxy

australien

#18
Ich will diese zwei Relais schalten,

mqttmsg cmnd/tvlift/power1 off; mqttmsg cmnd/tvlift/power2 on;

danke, hab es gefunden und geändert
set myBroker publish cmnd/tvlift/power1 off; set myBroker publish cmnd/tvlift/power2 on;
raspberry pi3
signalduino, Shelly1, Shelly2, Sonos, Unifi
Amazon Fire Tablet 7 | Noname Android Tablet 10"

petjek

Zitat von: hexenmeister am 02 Februar 2019, 10:25:17
Das MQTT Modul kann schon länger ohne zusatzscripte Nachrichten versenden. Wozu brauchst du die mqttmsg?
Das habe ich mir auch gedacht. Mir ist nur unklar, wie ich das nun hin bekomme.
Ich möchte gerne meiner Awtrix https://blueforcer.de/awtrix-2-0/ zu bestimmten Zeitpunkten/bei bestimmten Ereignissen eine Nachricht publishen.
Mir erschließt sich nur so gar nicht, welches der MQTT-Devices ich dazu benötige.
Grundsätzlich könnteoder sollte das z.B. so aussehen
define AwtrixDimmen AT *{sunset(0,"18:00","22:00")} publish SmartHome/awtrix/basics {"brightness":20}
Sprich: bei Sonnenuntergang/frühestens/spätestens soll die Awtrix gedimmt werden. Mir ist klar, dass ich da wahrscheinlich Nonsens zusammengeschrieben habe, soll nur beispielhaft sein. Setze ich das Topic wie oben geschrieben über MQTT.fx ab funktioniert das schon mal 1a.

Andererseits würde ich z.B. gerne die Octoprint-App auf der Awtrix deaktivieren, wenn der 3D-Drucker nichts tut. Das würde ich ja grundsätzlich über einen DOIF machen wollen.
Mir erschließt sich nur nicht wie. Und ja, ich habe die Commandref gelesen. Nur eben nicht verstanden. ::)

Kann mich jemand aufschlauen?

LG p
Die Möglichkeiten der deutschen Grammatik können einen, wenn man sich darauf, was man ruhig, wenn man möchte, sollte, einlässt, überraschen.

hexenmeister

Um mit Hilfe eines eingerichteten MQTT-Gerätes ein Topic anzusetzen muss einfach
set <name_der_MQTT_Geraeteinstanz> publish SmartHome/awtrix/basics {"brightness":20}
ausgeführt werden. Kann natürlich auch in AT-Befehl verwendet werden.

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

petjek

Zitat von: hexenmeister am 28 Februar 2019, 23:08:09
Um mit Hilfe eines eingerichteten MQTT-Gerätes ein Topic anzusetzen muss einfach
set <name_der_MQTT_Geraeteinstanz> publish SmartHome/awtrix/basics {"brightness":20}
ausgeführt werden. Kann natürlich auch in AT-Befehl verwendet werden.
Und genau daran scheitere ich gerade.
Z.B. sind bei der Awtrix die Commands für Ein-/Ausschalten {"power": true} bzw. {"power": false}. Funktioniert auch ohne das Leerzeichen hinter dem Doppelpunkt, habe ich gesehen.
Wenn ich nun das Attribut publishSet so anlege
attr BU_Awtrix publishSet switch:on,off SmartHome/awtrix/basics
muss ich, soweit ich verstanden habe, eine eventMap anlegen, da die Befehle zum Ein-/Ausschalten nicht on/off sind.
attr BU_Awtrix eventMap {"power":true}:on {"power":false}:off ist auf jeden Fall mal falsch.
In MQTT.fx sehe ich dann, dass "on" bzw. "off" gesendet werden.

Hat jemand Rat?
Die Möglichkeiten der deutschen Grammatik können einen, wenn man sich darauf, was man ruhig, wenn man möchte, sollte, einlässt, überraschen.

hexenmeister

Die Frage war nach einem direkten Absetzen von MQTT-Topics. Das geht mit einem 'set' in dem Device 'MQTT', also an dem IO-Gerät. Da gibt es keine 'publishSet' oder 'eventMap'.
Maintainer: MQTT_GENERIC_BRIDGE, SYSMON, SMARTMON, systemd_watchdog, MQTT, MQTT_DEVICE, MQTT_BRIDGE
Contrib: dev_proxy

petjek

Die Möglichkeiten der deutschen Grammatik können einen, wenn man sich darauf, was man ruhig, wenn man möchte, sollte, einlässt, überraschen.

hexenmeister

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

huhu

#25
Hallo zusammen,

ich würde gerne ein Sonoff MQTT Device über FHEM mit dem Tasmota Konsolenbefehl:

Backlog power1 on; delay 5; power1 off steuern.

Wie genau kann ich das in FHEM umsetzen? Oder kann ich das MQTT Device mit einer URL und dem Konsolenbefehl aufrufen?

So wird leider nur der letzte Befehl (OFF) gesendet:
set Sonoff_Garage publish power1 on; set Sonoff_Garage publish delay 5; set Sonoff_Garage publish power1 off

Danke und Viele Grüße
huhu