Jump to content

Recommended Posts

Posted

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

Posted

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.

Posted (edited)

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
Posted

Schreib mal in die .bat Datei hinten dran noch ein %*, also:

@"C:\Python39\python.exe" "C:\Python39\Scripts\tinkerforge_mqtt" %*

Dann werden die Parameter auch durch gereicht. Das fehlt in der Dokumentation.

Posted

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

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.

×
×
  • Create New...