MacDuff Posted August 12, 2021 at 04:29 PM Share Posted August 12, 2021 at 04:29 PM 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 Quote Link to comment Share on other sites More sharing options...
rtrbt Posted August 13, 2021 at 09:57 AM Share Posted August 13, 2021 at 09:57 AM 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. Quote Link to comment Share on other sites More sharing options...
MacDuff Posted August 13, 2021 at 01:26 PM Author Share Posted August 13, 2021 at 01:26 PM (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 August 13, 2021 at 01:54 PM by MacDuff Quote Link to comment Share on other sites More sharing options...
photron Posted August 13, 2021 at 02:12 PM Share Posted August 13, 2021 at 02:12 PM 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. Quote Link to comment Share on other sites More sharing options...
MacDuff Posted August 13, 2021 at 03:13 PM Author Share Posted August 13, 2021 at 03:13 PM 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 Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.