Jump to content

mqtt-bindings - gerne, aber wie?


Recommended Posts

tinkerforge, openhab3, paho-mqtt und meine python-scripts funktionieren prima zusammen. jetzt wollte ich die mqtt-bindings näher unterrsuchen - die direkte ansprache von bricklets etc per publish/subscribe sieht schon ganz attraktiv aus - aber ehrlich gesagt, ich versteh bei der sache bloß bahnhof. wie, wenn überhaupt, krieg ich das mit meinen python-programmen zusammen? kann mich da bitte jemand aufs richtige gleis setzen? danke.

md

Link to comment
Share on other sites

Damit ich das richtig verstehe: Du benutzt bereits die Python-Bindings für unsere Hardware, willst jetzt aber die MQTT-Bindings benutzen?

Im Endeffekt funktioniert das wie folgt: Die MQTT-Bindings machen nichts anderes als auf MQTT-Nachrichten zu warten und dann selbst die Python-Bindings aufzurufen. Deshalb müssen die MQTT-Bindings permanent als Programm laufen. Wenn du dann z.B. mit paho-mqtt folgendes machst:

mqttc.publish("tinkerforge/request/lcd_128x64_bricklet/AbC/get_identity", "")

legen die MQTT-Bindings intern eine Instanz von BrickletLCD128x64 an und rufen darauf .get_identity() auf. Das Ergebnis bekommst du auf das Topic

tinkerforge/response/lcd_128x64_bricklet/AbC/get_identity

zurückgegeben.

Die Topics entsprechen 1:1 den Python-Bindings-Funktionsaufrufen.

Link to comment
Share on other sites

danke erstmal. ich starte also die mqtt-bindings (bei mir in c:/python39/scripts, ebenso das angepasste bat-file). das nimmt allerdings keine kommandozeilen-parameter an und liefert nur die message: "Starting TF MQTT bindings 2.0.15" - und dann nix mehr. ich kann also broker usw nicht definieren... und deswegen komme ich wohl mit den beispielen nicht weiter.

EDIT: ich kann die Bindings so starten: python.exe tinkerforge_mqtt --broker-host '192.168.20.42', dann funktioniert es. stimmt was mit den .bat nicht? Sieht so aus: @"C:\Python39\python.exe" "C:\Python39\Scripts\tinkerforge_mqtt"

merci, md

Edited by MacDuff
Link to comment
Share on other sites

ja genau, so haut es hin. danke.

mit drei zeilen in der python-app kann man sich den manuellen start der MQTT-Bindings sparen:

import subprocess
mqtt_exec = 'C:/Python39/Scripts/tinkerforge_mqtt.bat'
subprocess.Popen([mqtt_exec, '--broker-host=192.168.20.42'])

md

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...