Jump to content

Mehrere One Wire Daten auslesen


AutomisationChris

Recommended Posts

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()

 

 

 

 

bearbeitet von AutomisationChris
Link zu diesem Kommentar
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Gast
Reply to this topic...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Clear editor

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...