Jump to content

mweigand

Members
  • Gesamte Inhalte

    3
  • Benutzer seit

  • Letzter Besuch

mweigand's Achievements

Newbie

Newbie (1/14)

0

Reputation in der Community

  1. Hallo zusammen, beim Versuch einigen Temperatur- und Luftfeuchteunstimmigkeiten von einem Humidity V2 Bricklet und einem Air Quality Bricklet bin ich durch diverse Forenbeiträge auf das Stichwort "Self Heating" gekommen, und wollte daher mal die Samplerate eines Humidity Bricklets auslesen und ggf. reduzieren, um die etwa 3° Übertemperatur zu reduzieren (gemessen zu einem zusätzlichen Temperatur-Bricklet). Bei dem Versuch wird jedoch nur ein leeres Datenpacket zurückgegeben. Wie kann ich hier weiter debuggen, bzw. begehe ich hier einen trivialen Fehler? Hier die Fehlermeldung: (test_packaging) mweigand@pidwig2:~/Projekte/20190406_TF_OW_HUM$ ./bug_hum_v2.py Humidity: 53.73 %RH Temperature: 2279 degC Traceback (most recent call last): File "./bug_hum_v2.py", line 22, in <module> print(h.get_samples_per_second()) File "/home/mweigand/.virtualenvs/test_packaging/lib/python3.7/site-packages/tinkerforge/bricklet_humidity_v2.py", line 321, in get_samples_per_second return self.ipcon.send_request(self, BrickletHumidityV2.FUNCTION_GET_SAMPLES_PER_SECOND, (), '', 'B') File "/home/mweigand/.virtualenvs/test_packaging/lib/python3.7/site-packages/tinkerforge/ip_connection.py", line 1194, in send_request return unpack_payload(response[8:], form_ret) File "/home/mweigand/.virtualenvs/test_packaging/lib/python3.7/site-packages/tinkerforge/ip_connection.py", line 251, in unpack_payload x = struct.unpack(f, data[:length]) struct.error: unpack requires a buffer of 1 bytes (test_packaging) mweigand@pidwig2:~/Projekte/20190406_TF_OW_HUM$ vim bug_hum_v2.py (test_packaging) mweigand@pidwig2:~/Projekte/20190406_TF_OW_HUM$ ./bug_hum_v2.py Humidity: 53.73 %RH Temperature: 22.8 degC Traceback (most recent call last): File "./bug_hum_v2.py", line 22, in <module> print(h.get_samples_per_second()) File "/home/mweigand/.virtualenvs/test_packaging/lib/python3.7/site-packages/tinkerforge/bricklet_humidity_v2.py", line 321, in get_samples_per_second return self.ipcon.send_request(self, BrickletHumidityV2.FUNCTION_GET_SAMPLES_PER_SECOND, (), '', 'B') File "/home/mweigand/.virtualenvs/test_packaging/lib/python3.7/site-packages/tinkerforge/ip_connection.py", line 1194, in send_request return unpack_payload(response[8:], form_ret) File "/home/mweigand/.virtualenvs/test_packaging/lib/python3.7/site-packages/tinkerforge/ip_connection.py", line 251, in unpack_payload x = struct.unpack(f, data[:length]) struct.error: unpack requires a buffer of 1 bytes Wenn ich den Testcode (angehängt) mit ipython --pdb laufen lasse sehe ich, dass die Binärdaten leer sind: error: unpack requires a buffer of 1 bytes > /home/mweigand/.virtualenvs/test_packaging/lib/python3.7/site-packages/tinkerforge/ip_connection.py(251)unpack_payload() 249 f = '<' + f 250 length = struct.calcsize(f) --> 251 x = struct.unpack(f, data[:length]) 252 253 if '!' in o: ipdb> f '<B' ipdb> data b'' Hier der Testcode: #!/usr/bin/env python3 # -*- coding: utf-8 -*- HOST = "pi2" PORT = 4223 UID = "Di5" # Change XYZ to the UID of your Humidity Bricklet 2.0 from tinkerforge.ip_connection import IPConnection from tinkerforge.bricklet_humidity_v2 import BrickletHumidityV2 if __name__ == "__main__": ipcon = IPConnection() # Create IP connection h = BrickletHumidityV2(UID, ipcon) # Create device object ipcon.connect(HOST, PORT) # Connect to brickd # Don't use device before ipcon is connected # Get current humidity humidity = h.get_humidity() print("Humidity: " + str(humidity/100.0) + " %RH") print("Temperature: {} degC".format(h.get_temperature() / 100.0)) print(h.get_samples_per_second()) ipcon.disconnect() Ausgeführt in einem virtualenv auf Debian testing (Python 3.7) mit folgenden Pythonpacketen: Master Brick 2.1 (FW 2.4.10) Humidity Bricklet 2.0 (FW 2.0.4) Neuster Brickd auf einem Raspberry Pi (Version 2.3.2). Danke für jegliche Hilfe, Maximilian
  2. Ha, genau das wars. Hab den Sensor wieder vorsichtig reingedrückt und schon lief wieder alles. Vielen Dank!
  3. Hallo zusammen, ich habe letzte Woche erstmals ein Thermal Imaging Bricklet in Betrieb genommen und auch schöne Bilder über den Brick-Viewer erhalten. Nach einigen Tagen Pause wollte ich jetzt das Bricklet wieder in Betrieb nehmen, und bekomme einfach keine ordentlichen Daten mehr, d.h. nur noch ein schwarzes Bild (nur Nullen). Hat jemand vielleicht Tipps, wie ich das Problem debuggen kann (siehe Zusatzinfos weiter unten)? Für mich sieht das fast so aus, als würde das Bricklet zwar antworten, aber keine Verbindung zum FLIR-Chip bekommen. Vielen Dank für jegliche Hilfe, Vg Maximilian Zusatzinfos: - Der Brick-Viewer (BV) sieht das Bricklet, und ich kann auch die Status-LED kontrollieren - Ich sehe vermehrt Timeouts im BV, gefühlt weniger mit dem Masterbrick 2.1 als mit dem 1.1er (siehe angehängtes Bild) - Ich höre auch keine Shuttergeräusche mehr, anders als beim ersten Anschalten - Ich habe mehrere Brickletkabel getestet -- kein Unterschied - Keine weiteren Bricklets angeschlossen - Ich habe auch mehrere Masterbricks gestestet (Versionen 2.1 und 1.1) - USB-Kabel habe ich getauscht, sowie verschiedenste USB-Ports getestet - Ich kann keine äußeren Beschädigungen erkennen (das Bricklet lag eine Woche auf meinem Schreibtisch) - Gestestet unter Debian Linux - Hard- und Softwareversionen: Master Brick V2.1: 2.4.9 Bricklet FW: 2.0.2 brickd: 2.3.2 (amd64) brickv: 2.3.16 (amd64) - auch unter direkter Benutzung der Python-API bekomme ich nur Nulldaten: #!/usr/bin/env python # -*- coding: utf-8 -*- import time import numpy as np from tinkerforge.ip_connection import IPConnection from tinkerforge.bricklet_thermal_imaging import BrickletThermalImaging HOST = "localhost" PORT = 4223 UID = "D1H" if __name__ == "__main__": ipcon = IPConnection() # Create IP connection ti = BrickletThermalImaging(UID, ipcon) # Create device object r = ipcon.connect(HOST, PORT) # Connect to brickd # Don't use device before ipcon is connected # Enable high contrast image transfer for getter ti.set_image_transfer_config(ti.IMAGE_TRANSFER_MANUAL_HIGH_CONTRAST_IMAGE) # If we change between transfer modes we have to wait until one more # image is taken after the mode is set and the first image is saved # we can call get_high_contrast_image any time. time.sleep(0.5) # Get image data image_data = ti.get_high_contrast_image() print(image_data) print(np.all(np.array(image_data == 0))) ipcon.disconnect()
×
×
  • Neu erstellen...