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?
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
super! Danke!
Könnte ich umgekehrt auch ein "Log Device" bauen, bei dem ich nach Bedarf verschiedene Topics mit loggen kann?
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!
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 wäre cool! Ich nehme dazu immer einen Mqtt Client auf meinem Rechner oder Handy.
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.
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
Daumen hoch! Die IP ist der MQTT Broker? Richtig?
Zitat von: slor am 10 Juni 2017, 18:46:46
Daumen hoch! Die IP ist der MQTT Broker? Richtig?
Japp!
Super, danke !
Das werde ich auch testen..
Ich würde das nutzen um ein Firmware-Update aller Devices anzustarten.
Klappt astrein !
Vielen Dank !
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..
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
In einem anderen Thread bekam ich eine folgende Antwort die auch funktioniert hat:
https://forum.fhem.de/index.php/topic,73453.msg651009.html#msg651009 (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.
Falls jemand testen mag...
https://forum.fhem.de/index.php/topic,32528.msg653347.html#msg653347
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.
Das MQTT Modul kann schon länger ohne zusatzscripte Nachrichten versenden. Wozu brauchst du die mqttmsg?
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;
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/ (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
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.
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 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'.
Oh! So einfach? Klappt, danke.
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