Jump to content

Python example_callback


fedex
 Share

Recommended Posts

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()

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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?

 

 

Link to comment
Share on other sites

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.

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...