NEWS
MQTT Befehl an Tasmota senden
-
@amg_666 sagte in MQTT Befehl an Tasmota senden:
Steurung über iob läuft doch einfach per script ab (?) wenn ich in einen DP z.B. bei Power eine 0 eintrage, dann geht das device aus.
richtig, genau so.
Oder mit request. -
@tomlei sagte in MQTT Befehl an Tasmota senden:
Ich habe eine andere Seite gefunden, auf der die richtige Syntax beschrieben war.
Lösung:
http://192.168.xxx.xxx/cm?cmnd=Power1 ONVielleicht kann es ein anderer auch verwenden.
Das ist das http Interface aber nicht mqtt. Wurde aber schon alles gesagt. Unter dem cmnd Ast in mqtt einen Power1 Punkt anlegen. Alternativ auch noch einen backlog Punkt, da kann man die Befehle (auch mehrere hintereinander) wie auf der Konsole eingeben.
-
@tomlei
Du schreibst du siehst in ioBroker die MQTT Werte. Über was, den MQTT-Adapter?Wenn ja hast du da die gleichen 3 Topics wie im MQTT-Explorer.
Unter mqtt.0.cmnd.NameDesGeraetes hast du einen Datenpunkt POWER den du auf ON oder OFF setzen kannst und Tasmota schaltet dann.
Das Ergebnis erhälts du dann unter mqtt.0.cmnd.NameDesGeraetes.RESULT bzw. mqtt.0.cmnd.NameDesGeraetes.POWERJeden Befehl den du in der Konsole absetzen kannst, kannst du auch über den CMND Pfad senden.
Damit hast du, z.B. für eine VIS, keinen schönen True/False Datenpunkt. Dann entweder den Sonoff-Adapter nehmen (So hieß Tasmota früher bzw. das waren die ersten Geräte für dies entwickelt wurde) oder du musst dir selbst ein Skript bauen.
ich habe da auch mal was gebaut was im Skripte-Bereich zu finden wäre
-
@bananajoe & @alle
Danke für Eure Nachfragen. Ich war ein paar Tage außer Haus.
Die Lösung für den http request habe ich mitgeteilt. Aber ja, ich wollte ursprünglich vom IOB per True/False oder ON/OFF oder was auch immer den Steuerbefehl absetzen. Das hatte zunächst nicht funktioniert. Ich sah in der MQTT Instanz nur die Statuszustände - Cmnd Befehle konnte ich nicht absetzen.
Dann habe ich mit dem MQTT Explorer geschaut, welche Informationen mit welchen Topics eigentlich ankommen und habe dann die Befehle vom MQTT Explorer abgesetzt. Da kam zunächst in der Konsole von Tasmota die Meldung Befehl unbekannt. Nach einigen hin und her sah ich plötzlich im IOB zusätzliche Objekte im Pfad cmnd und dann konnte ich von dort aus die Befehle normal setzen.
Was ich nicht verstehe, ist, dass ich mit den manuell über skript angelegten Topic Objekten in dem gleichen Pfad (gleiches Topic+Name usw.) keinen Erfolg hatte. Die konnte ich anschließend, nachdem die vom Explorer initiiert angelegten Objekte funktionierten, löschen.
Irgendwie verstehe ich die Systematik nicht so richtig. Zumal die Reproduzierbarkeit dieser Lösung auch nicht so einfach war. Ich habe auf der Platine zwei Kanäle / Relais und brauchte noch den zweiten DP. Diesen anzulegen war ebenfalls eine Fummelei.Ist das möglicherweise eine Frage der Zugriffsrechte / Ownerrechte?
Ich hatte den Punkt gesucht wo man den Eintrag auf erledigen setzen kann, aber nicht gefunden.
-
@tomlei also,
mit war auch schon aufgefallen das ich im MQTT-Adapter nicht einfach neue Datenpunkte anlegen kann und diese dann funktionieren. Gibt es diese schon, z.B. weil ich diese mit dem MQTT Explorer erzeugt hatte, so kann ich die nutzen.
Aber einfach anlegen im Objekt-Explorer oder per Skript hat nicht funktioniert.
Ich habe mir auf GitHub die Beschreibung des MQTT-Adapters angesehen und dabei die folgende Lösung gefunden:
per Blockly
per JavaScript
// Beispiel für SendTo von https://github.com/ioBroker/ioBroker.mqtt // Test ob ich das zum Anlegen von neuen MQTT-Topics etc. nutzen kann /* * @param {string} MQTT instance Specify MQTT instance to send message through (may be either server or client) * @param {string} action Action to use (always 'sendMessage2Client' for sending plain messages) * @param {object} payload * @param {string} payload.topic Topic to publish message on * @param {string} payload.message Message to be published on specified topic * */ sendTo('mqtt.0', 'sendMessage2Client', {topic: 'znil/Tests/Testnachricht', message: '42'});
Mit dem SendTo Befehlen wird der Datenpunkt angelegt und es funktioniert einwandfrei.
Nach dem anlegen kann man auch die herkömmlichen SetState-Befehle verwenden -
@bananajoe Das geht auch mit dem normalen Anlegen von Punkten im Objekte - View - das Problem ist nur, dass der neue Adamin5 es verbietet weitere Punkte anzulegen, wenn keine Objekte existieren. Das habe ich alles schon öfters moniert, dass man diese ganzen Prüfungen da raus nimmt, aber das will man halt nicht machen.
Was Du mit dem sendTo machst, kann man auch mit einem pub von mosquitto machen. Das Anlegen der Datenpunkte macht dann der Adapter selbst auch ohne Abprüfung des Vorhandenseins von Objekten. Wenn man das nämlich auch noch unterbunden hätte, hätte man die Adapter gleich wegschmeissen können.
Ich hoffe nur - wahrscheinlich vergebens - dass man die beiden Namensräume, mqtt und userdata von diesen ganzen Überprüfungen der Objektestruktur ausnimmt.
-
@mickym sagte in MQTT Befehl an Tasmota senden:
@bananajoe Das geht auch mit dem normalen Anlegen von Punkten im Objekte - View - das Problem ist nur, dass der neue Adamin5 es verbietet weitere Punkte anzulegen, wenn keine Objekte existieren. Das habe ich alles schon öfters moniert, dass man diese ganzen Prüfungen da raus nimmt, aber das will man halt nicht machen.
Hat bei mir nie geklappt, kann aber auch am falschen Datentyp gelegen haben oder etwas anderes.
Ich nutze noch die alte Oberfläche (so zu 95%) daher wäre das kein Problem. Für die manuelle Erstellung von Datenpunkten nutze ich aber nur noch die neue Admin5 Oberfläche da man dort die Eigenschaften mit mehr Optionen etc. festlegen kann.Der Umbau zu
0_userdata.0
hat begonnen, dauert aber noch. -
@bananajoe said in MQTT Befehl an Tasmota senden:
@tomlei also,
mit war auch schon aufgefallen das ich im MQTT-Adapter nicht einfach neue Datenpunkte anlegen kann und diese dann funktionieren. Gibt es diese schon, z.B. weil ich diese mit dem MQTT Explorer erzeugt hatte, so kann ich die nutzen.
Aber einfach anlegen im Objekt-Explorer oder per Skript hat nicht funktioniert.
Ich habe mir auf GitHub die Beschreibung des MQTT-Adapters angesehen und dabei die folgende Lösung gefunden:
per Blockly
Danke für den Hinweis mit dieser Lösung.
Gruß und schönes WE -
@bananajoe said in MQTT Befehl an Tasmota senden:
per Blockly
Bei mir sieht das so aus:
Ich kann dort keine Message eintragen. Gibt es noch etwas anderes mit Message? -
...
Über das Zahnrad kannst du die Parameter erweitern:
-
@revobobo
Hand gegen die Stirn.mp4Danke, hätte ich auch darauf kommen können. Funktioniert einwandfrei.
Gruß
-
@bananajoe said in MQTT Befehl an Tasmota senden:
per Blockly
Hi
scheiter gerade den Befehl von der Kommandozeile in Tasmota:
ModBusSend {"deviceaddress": 1, "functioncode": 4, "startaddress": 1, "type":"float", "count":1}
in das Blockly topic und message zu bringen und erhalte in Tasmota Fehler:
08:30:44.334 MQT: stat/tasmota_E24E5C/RESULT = {"Command":"Error"}
Verschedene Aufteilungen scheitern bisher:
Jemand einen Tip?
Danke
-
-
@ralla66 said in MQTT Befehl an Tasmota senden:
dein Payload richtig ?
"type":"float"
type sollte value sein nicht TextJSON payload
{"deviceAddress":<value>, "functionCode":<value>, "startAddress":<value>, "type":"<value>","count":<value> "endian":<value>}Danke. Die JSON Payload scheint mir korrekt. Frag nicht was ich geändert hab (k.A.), aber nun funktioniert es:
11:01:59.642 SRC: MQTT 11:01:59.643 CMD: Grp 0, Cmd 'MODBUSSEND', Idx 1, Len 85, Pld -99, Data '{"deviceaddress": 1, "functioncode": 4, "startaddress": 0, "type":"float", "count":1}' 11:01:59.651 MQT: stat/tasmota_E24E5C/RESULT = {"ModbusSend":"Done"} 11:01:59.811 MQT: tele/tasmota_E24E5C/RESULT = {"ModbusReceived":{"DeviceAddress":1,"FunctionCode":4,"StartAddress":0,"Length":9,"Count":1,"Values":[232.3000030518]}}