fedex Posted November 10, 2015 at 10:06 AM Posted November 10, 2015 at 10:06 AM wieso bekomme ich bei diesem Python skript keine Ausgabe?? #!/usr/bin/env python # -*- coding: utf-8 -*- HOST = "10.208.216.149" PORT = 4223 UID = "uiw" # Change to your UID from tinkerforge.ip_connection import IPConnection from tinkerforge.bricklet_humidity import Humidity # Callback function for humidity callback (parameter has unit %RH/10) def cb_humidity(humidity): print('Humidity: ' + str(humidity/10.0) + ' %RH') if __name__ == "__main__": ipcon = IPConnection() # Create IP connection h = Humidity(UID, ipcon) # Create device object ipcon.connect(HOST, PORT) # Connect to brickd # Don't use device before ipcon is connected # Set period for humidity callback to 1s (1000ms) # Note: The humidity callback is only called every second # if the humidity has changed since the last call! h.set_humidity_callback_period(1000) # Register humidity callback to function cb_humidity h.register_callback(h.CALLBACK_HUMIDITY, cb_humidity) ipcon.disconnect() Quote
photron Posted November 10, 2015 at 10:19 AM Posted November 10, 2015 at 10:19 AM In den Beispielen, die den Bindings beiliegen, ist vor dem ipcon.disconnect() Aufruf ein input() Aufruf, der das Skript an der Stelle warten lässt bis eine Taste gedrückt wurde. Dadurch können die Bindings im Hintergrund eingehende Humidity Callbacks empfangen und an deine cb_humidity weiterreichen. Dein Skript konfiguriert alles um Humidity Callbacks zu empfangen und beendet sich dann. Daher bekommst du keine Ausgabe. Du musst also den input() Aufruf wieder einbauen, oder etwas alternatives, dass den gleichen Zweck erfüllt, das Skript vom sich beenden abzuhalten. Quote
fedex Posted November 10, 2015 at 10:58 AM Author Posted November 10, 2015 at 10:58 AM wenn ich ein Python skript ausführe und ein Taste drücke, dann kommen die Werte. Was muss ich beim Brick Viewer machen, damit ich die Werte im stdout.log zusehen bekomme? Quote
fedex Posted November 11, 2015 at 08:17 AM Author Posted November 11, 2015 at 08:17 AM Bei dem Temperatur example_callback - wie kann ich dieses Programm dauerhaft auf dem red Brick ausführen? Ich möchte im nächsten Schritt die Sensordaten automatisch auf einen Server senden. raw_input und ipcon.disconnect sollten ja nicht im Programm sein? Quote
photron Posted November 11, 2015 at 08:43 AM Posted November 11, 2015 at 08:43 AM Du brauchst raw_input(), ansonsten funktionieren das Callback Examples nicht, wie du schon selbst gesehen hast. Python buffered Ausgaben zwischen, dadurch siehst du sie nicht direkt im stdout.log während das Programm läuft. Du kannst Python auf unbuffered stellen. Dazu muss du hier Python -u als Argument übergeben: http://www.tinkerforge.com/de/doc/Hardware/Bricks/RED_Brick_Program_Tab.html#python Um Temperatur Daten an einen Server zu senden kannst du das Callback Example nehmen, raw_input() und ipcon.disconnect() drin lassen und in der cb_temperature() Funktion den Code einfügen, der die Daten an den Server sendet. Dann das modifizierte Beispiel auf den RED Brick laden und laufen lassen. Quote
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.