ich suche nach einer Möglichkeit bei einem Callback eines Tinkerforge Bricks die UID des Bricks zu übergeben.
Da die Bricks über ein Interface konfiguriert werden können, vorallem die für den Brick zu verwendende Brick UID muss ich den Callback aufruf dynamisch machen.
Den Aufruf etc. bekomme ich auch Problemlos hin, allerdings fällt mir im Moment nicht die richtige Lösung ein um innerhalb der Klasse von __getattr__ die richtige "brickuid" nach cb_moisture bei jedem Aufruf des Callbacks weiter zu reichen.
Anbei ein Bsp. was es evtl. besser beschreibt:
Code: Alles auswählen
# !/usr/bin/env python
# -*- coding: utf-8 -*-
HOST = "192.168.178.36"
PORT = 4223
UID = ["kwJ", "kyc", "hjk", 'Fgt']
from tinkerforge.ip_connection import IPConnection
from tinkerforge.bricklet_moisture import Moisture
import string
class MyClass(object):
def __init__(self):
pass
def cb_moisture(moisture):
# brickuid = ??? <<< Hier wird die BrickUID benoetigt
print('Moisture Value: ' + str(moisture))
def __getattr__(self, name):
if name.startswith('cb_moisture_'):
brickuid = name[12:] # <<< hier ist die BrickUID
return self.cb_moisture
cb = MyClass()
if __name__ == "__main__":
ipcon = IPConnection()
ipcon.connect(HOST, PORT)
for u in UID:
m = Moisture(u, ipcon)
m.set_moisture_callback_period(1000)
methodToCall = getattr(cb, 'cb_moisture_' + string.lower(u))
m.register_callback(m.CALLBACK_MOISTURE, methodToCall)
raw_input('Press key to exit\n')
ipcon.disconnect()