Seite 1 von 1

Temperaturmessung mit Adafruit

Verfasst: Sonntag 22. Oktober 2017, 22:12
von Julian192837465
Hallo,

ich beschreibe im Folgenden mal mein Problemchen. Ich bin absoluter Anfänger und hoffe auf euer Verständnis :) . Ich vermute die Lösung ist extrem simpel. Leider komme ich auch mit viel Recherchieren und Ausprobieren nicht voran.

Ich habe an meinem Raspberry Pi den Temperatursensor DHT22 angeschlossen und nutze ein Python Skript von Adafruit um die Messwerte aufzunehmen. Das Skript gibt folgende Werte aus: (58.134213, 20.244552). Ich habe keine Ahnung welche Art Variable oder Liste das ist.

Nun möchte ich den zweiten Wert verwenden also schreibe ich

Code: Alles auswählen

var2 = var1[1:2]
Das ergibt für var2 so etwas wie: (20.244552,)

Versuche ich die Variable zu konvertieren passiert nichts:

Code: Alles auswählen

var2 = str(var1[1:2])
Ergebnis: (20.244552,)

Egal wie ich hin und her konvertiere das Listenformat bleibt immer erhalten.

Hier der Code aus dem Adafruit Skript:

Code: Alles auswählen

def read(sensor, pin):
    # Validate GPIO and map it to GPIO base and number.
    gpio = pin_to_gpio.get(str(pin).upper(), None)
    if gpio is None:
        # Couldn't find in mapping, check if pin looks like GPIO<base>_<number>
        match = re.match('GPIO([0123])_(\d+)', pin, re.IGNORECASE)
        if match is not None:
            gpio = (int(match.group(1)), int(match.group(2)))
    if gpio is None or gpio[0] < 0 or gpio[0] > 3 or gpio[1] < 0 or gpio[1] > 31:
        raise ValueError('Pin must be a valid GPIO identifier like P9_12 or GPIO1_28.')
    # Get a reading from C driver code.
    result, humidity, temp = driver.read(sensor, gpio[0], gpio[1])
    if result in common.TRANSIENT_ERRORS:
        # Signal no result could be obtained, but the caller can retry.
        return (None, None)
    elif result == common.DHT_ERROR_GPIO:
        raise RuntimeError('Error accessing GPIO. Make sure program is run as root with sudo!')
    elif result != common.DHT_SUCCESS:
        # Some kind of error occured.
        raise RuntimeError('Error calling DHT test driver read: {0}'.format(result))
    return (humidity, temp)
Auch daraus werde ich nicht so ganz schlau und weiß wie ich mit dem Wert umgehen sollte.
Das Ziel ist am Ende eine Dezimalzahl zu bekommen, die ich runden kann und letztlich dann in einer Mail verschickt wird.

Vielen Dank!

Julian

Re: Temperaturmessung mit Adafruit

Verfasst: Sonntag 22. Oktober 2017, 22:19
von __deets__
Das ist ein tupel. Wenn du das (oder jede andere Sequenz) slicest bekommst du eine Teilsequenz zurück. Du willst aber einen wert an einem bestimmten Index. Da greifst du mit sequenz[indxex] drauf zu.

Re: Temperaturmessung mit Adafruit

Verfasst: Sonntag 22. Oktober 2017, 22:56
von Julian192837465
Habe jetzt tatsächlich kurz nach Posten der Frage eine Lösung gefunden: :roll:

Code: Alles auswählen

Temp = str(Temp[1:2])
Temp = float(Temp[1:3])
Temp = '{0:0.1f}'.format(Temp)
Da kommt dann z.B. 20.0 raus.

Das geht aber sicher eleganter oder?

Re: Temperaturmessung mit Adafruit

Verfasst: Sonntag 22. Oktober 2017, 23:03
von __deets__
Habe ich schon geschrieben wie es eleganter geht.

Re: Temperaturmessung mit Adafruit

Verfasst: Sonntag 22. Oktober 2017, 23:08
von Sirius3
@Julian192837465: da Du Deinen eigentlichen Code nicht zeigst, kann man Dir nicht helfen wirklich helfen, ohne raten zu müssen.

Code: Alles auswählen

humidity, temperature = read(sensor, pin)
send_mail("Die Temperatur ist {:.1f}°C".format(temperature))

Re: Temperaturmessung mit Adafruit

Verfasst: Sonntag 22. Oktober 2017, 23:24
von Julian192837465
Hab es! Danke euch!

Fand es überflüssig meinen Code zu zeigen da es wirklich nur an dem Wert hing. Ansonsten waren da nur if/else Funktionen etc. Habe mir da sehr einfache Schnipsel zusammengebastelt.