AutomisationChris Posted February 13, 2023 at 10:42 AM Posted February 13, 2023 at 10:42 AM (edited) Hallo an alle hier, ich habe ein größeres Verständnissproblem. Ich versuche mit dem One Wire Bricklet mehrere Temperatursensoren auszulesen. Mittels einem eigenen Python Skript und direkt Verbindung auf dem Pi hat alles ganz gut geklappt. Ich habe dann die Verbindung zu dem Py aufgebaut. Mit Hilfe des Beispiel Skriptes kann ich auch einen Temperatursensor auslesen. Die anderen jedoch nicht. Gemäß der Doku in der API Binding für Python Zitat rickletOneWire.search_bus() Rückgabeobjekt: identifier – Typ: [int, ...], Länge: variabel, Wertebereich: [0 bis 264 - 1] status – Typ: int, Wertebereich: Siehe Konstanten Gibt eine Liste mit bis zu 64 Identifiern von angeschlossenen 1-Wire Geräten zurück. Jeder Identifier ist 64-Bit und besteht aus 8-Bit Familien-Code, 48-Bit ID und 8-Bit CRC. sollte die Funktion eine Liste ausspucken. Ich erhalte jedoch nur die folgende Ausgabe. Zitat Identifier: () Status: 0 Identifier: () Status: 0 Chip Temp: 19 Und das ist der Punkt an dem mein Kopf aussteigt. Es ist irrelevant ob 1, 2, 5 Sensoren an dem Bricklet angeschlossen sind die Ausgabe ist immer leer. Und der Status ist immer OK. ich würde ja eine 2 als Status noch verstehen. Weiterhin konnte ich nirgends die Bedeutung der Zahlen im write_command oder im write Befehl nachlesen. Den vollständigen Code habe ich noch mal angehängt. In der Hoffnung das ich mich nicht komplett dumm anstelle. #!/usr/bin/env python # -*- coding: utf-8 -*- HOST = "localhost" #localhost, because the brick is directly connected to the Raspberry Pi PORT = 4223 #Standart Port, do not change UID = "N7C" # Change XYZ to the UID of your One Wire Bricklet import time #Still there but i want to use the realtime clock from tinkerforge.ip_connection import IPConnection from tinkerforge.bricklet_one_wire import BrickletOneWire if __name__ == "__main__": ipcon = IPConnection() # Create IP connection one_wire = BrickletOneWire(UID, ipcon) # Create device object ipcon.connect(HOST, PORT) # Connect to brickd # Don't use device before ipcon is connected one_wire.write_command(0, 78) # WRITE SCRATCHPAD one_wire.write(127) # CONFIGURATION: 12-bit mode sensors = one_wire.search_bus() for i in sensors: print("Identifier: ") print(sensors.identifier) print("Status: ") print(sensors.status) #Auslesen der Chip Temperatur um zu prüfen ob eine Kommunikation stattfindet chip_temp = one_wire.get_chip_temperature() print("Chip Temp:") print(chip_temp) # Read temperature 10 times # for i in range(10): # ow.write_command(0, 68) # CONVERT T (start temperature conversion) # time.sleep(1) # Wait for conversion to finish # ow.write_command(0, 190) # READ SCRATCHPAD # # t_low = ow.read().data # t_high = ow.read().data # temperature = t_low | (t_high << 8) # Negative 12-bit values are sign-extended to 16-bit two's complement # if temperature > 1 << 12: # temperature -= 1 << 16 # 12-bit mode measures in units of 1/16°C # print("Temperature: " + str(temperature/16.0) + " °C") # input("Press key to exit\n") # Use raw_input() in Python 2 # ipcon.disconnect() Edited February 13, 2023 at 11:25 AM by AutomisationChris Quote
AutomisationChris Posted February 14, 2023 at 09:09 PM Author Posted February 14, 2023 at 09:09 PM Hat sich erledigt, es lag an einem defekten Sensor der alles lahmgelegt hat. 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.