MacDuff Geschrieben August 12, 2021 at 16:29 Share Geschrieben August 12, 2021 at 16:29 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 Zitieren Link zu diesem Kommentar Share on other sites More sharing options...
rtrbt Geschrieben August 13, 2021 at 09:57 Share Geschrieben August 13, 2021 at 09:57 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. Zitieren Link zu diesem Kommentar Share on other sites More sharing options...
MacDuff Geschrieben August 13, 2021 at 13:26 Autor Share Geschrieben August 13, 2021 at 13:26 (bearbeitet) 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 bearbeitet August 13, 2021 at 13:54 von MacDuff Zitieren Link zu diesem Kommentar Share on other sites More sharing options...
photron Geschrieben August 13, 2021 at 14:12 Share Geschrieben August 13, 2021 at 14:12 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. Zitieren Link zu diesem Kommentar Share on other sites More sharing options...
MacDuff Geschrieben August 13, 2021 at 15:13 Autor Share Geschrieben August 13, 2021 at 15:13 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 Zitieren Link zu diesem Kommentar 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.