adeuring Geschrieben December 19, 2013 at 17:32 Geschrieben December 19, 2013 at 17:32 Tag zusammen, folgendes kleines Script arbeitet prima für die Feuchte-, Druck- und Licht-Bricklets -- nur mit dem Temperatur-Bricklet gibt es "Aussetzer": from functools import partial from time import sleep, time from tinkerforge.bricklet_ambient_light import AmbientLight from tinkerforge.bricklet_barometer import Barometer from tinkerforge.bricklet_humidity import BrickletHumidity from tinkerforge.bricklet_temperature import Temperature from tinkerforge.ip_connection import IPConnection def cb_gen(what, val): print '%6.4f %s %s' % (time() - start, what, val) REPEAT = 500 conn = IPConnection() conn.connect('localhost', 4223) try: light = AmbientLight('i9K', conn) bar = Barometer('fTv', conn) hum = BrickletHumidity('hR7', conn) temp = Temperature('dPm', conn) temp.set_response_expected_all(True) start = time() light.register_callback( light.CALLBACK_ILLUMINANCE, partial(cb_gen, 'illum')) bar.register_callback( bar.CALLBACK_AIR_PRESSURE, partial(cb_gen, 'press')) hum.register_callback( hum.CALLBACK_HUMIDITY, partial(cb_gen, 'humid')) temp.register_callback( temp.CALLBACK_TEMPERATURE, partial(cb_gen, '--------temp ')) light.set_illuminance_callback_period(REPEAT) bar.set_air_pressure_callback_period(REPEAT) hum.set_humidity_callback_period(REPEAT) temp.set_temperature_callback_period(REPEAT) sleep(10) finally: conn.disconnect() Beispiel-Output: 0.0276 --------temp 2137 0.1046 press 997716 0.2777 humid 400 0.3774 illum 778 0.5280 --------temp 2131 0.6047 press 997715 0.7778 humid 399 0.8776 illum 774 1.1047 press 997716 1.2778 --------temp 2137 1.3777 illum 776 1.4777 humid 398 1.6048 press 997713 1.8774 illum 775 2.1049 press 997711 2.1777 humid 400 2.3779 illum 776 2.6049 press 997707 2.6779 humid 397 2.9278 illum 778 3.1048 press 997708 3.1778 humid 398 3.4279 illum 776 3.6779 humid 399 3.9779 illum 777 4.0251 press 997707 4.1779 humid 398 4.2780 --------temp 2131 4.4779 illum 776 4.7780 --------temp 2137 4.8050 press 997706 4.8779 humid 399 4.9780 illum 777 5.3252 press 997705 5.3780 humid 398 5.4780 illum 776 5.8250 press 997704 5.9780 humid 400 6.0281 illum 775 6.3251 press 997707 6.5281 illum 777 6.5781 humid 397 6.8251 press 997705 7.0284 illum 775 7.0781 humid 399 7.3251 press 997706 7.5282 --------temp 2131 7.5781 humid 398 7.6281 illum 774 7.8251 press 997707 8.0282 --------temp 2137 8.0782 humid 400 8.1281 illum 775 8.3251 press 997705 8.5780 humid 399 8.6782 illum 774 8.8252 press 997706 9.0782 humid 400 9.2282 illum 775 9.3253 press 997704 9.5783 humid 399 9.8783 illum 774 10.0054 press 997705 Wie zusehen, werden Helligkeit, Feuchte und Druck sehr regelmäßig ausgegeben -- nur die Temperaturdaten fehlen recht häufig. Hab verschiedene Varianten probiert: Kabel gewechselt, Stecker am Master Brick gewechselt, und auch mal einen StepperBrick gewechselt (mit modifiziertem Script -- ohne die anderen Bricklets). Das Problem bleibt. (Nebenbei: Ich weiß, dass es eigentlich Unsinn ist, solche phyiskalischen Größen sooo häufig zu messen -- aber zum Testen ist das unterhaltsamer als Minuten zu warten [Edit] Was ich vergessen habe: der MasteBrick hat FW 2.1.2, das TemperatureBricklet die FW Version 2.0.0 Zitieren
Loetkolben Geschrieben December 19, 2013 at 17:38 Geschrieben December 19, 2013 at 17:38 Hallo adeuring. Versuche doch mal alles auf den aktuellen Stand zu bringen. Der Brickviewer macht das fuer die Brickelts in einem Rutsch. Changelog Temperatur Bricklet: 1.0.0: Initial version 1.1.0: Add support for tick types 1.1.1: Use timeout for i2c mutex, otherwise Temperature Bricklet does not work with IMU Brick 2.0.0: Support for protocol 2.0 2.0.1: Add I2C Mode switch API 2.0.2: Fix wrong length for GetDebounce packet (through brickletlib) Ich weiss nicht ob das hilft, aber es koennte ein Anfang sein. Der Loetkolben Zitieren
adeuring Geschrieben December 19, 2013 at 17:54 Autor Geschrieben December 19, 2013 at 17:54 Gutan Abend loetkolben, Hallo adeuring. Versuche doch mal alles auf den aktuellen Stand zu bringen. Der Brickviewer macht das fuer die Brickelts in einem Rutsch. Changelog Temperatur Bricklet: 1.0.0: Initial version 1.1.0: Add support for tick types 1.1.1: Use timeout for i2c mutex, otherwise Temperature Bricklet does not work with IMU Brick 2.0.0: Support for protocol 2.0 2.0.1: Add I2C Mode switch API 2.0.2: Fix wrong length for GetDebounce packet (through brickletlib) Ich weiss nicht ob das hilft, aber es koennte ein Anfang sein. Der Loetkolben Danke, gute Idee -- hat leider nix gehlfeen. Aber das Bricklet ist jetzt auf FW 2.02 Zitieren
photron Geschrieben December 19, 2013 at 17:59 Geschrieben December 19, 2013 at 17:59 Callbacks bekommst du nur wenn sich der Wert ändert. Die Period gibt die minimale Zeit zwischen zwei Callbacks an. Eine Period von 500 heißt nicht, dass du immer alle 500ms einen Callback bekommst. Im Zeifelsfall ist die Temperatur einfach recht stabil im Verhältnis zu den anderen Werten. Soll heißen, dass funktioniert alles wie erwartet. Zitieren
adeuring Geschrieben December 19, 2013 at 18:12 Autor Geschrieben December 19, 2013 at 18:12 Ah, Danke, Photron. Da hatt ich die DOkumentation missverstanden: Dass die "Änderungsbedingung" sich nur auf die threshold-callbacks bezieht. Zitieren
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.