Jump to content

AutomisationChris

Members
  • Gesamte Inhalte

    3
  • Benutzer seit

  • Letzter Besuch

Posts erstellt von AutomisationChris

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

     

     

     

     

×
×
  • Neu erstellen...