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
sollte die Funktion eine Liste ausspucken.
Ich erhalte jedoch nur die folgende Ausgabe.
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()