Beiträge von schumi

    kurze Info zum Stand:

    Ich hänge leider immer noch an einem anderen Thema mit meinem Raspberry Pi 3B+, Raspbian 10 (Buster) und Erstellung einer WLan-Bridge wlan0 auf wlan1 (OHNE eth0) fest (in der Suche immer nur unpassendes mit Stretch und eth0 gefunden). ;(

    Daher ist das Thema der Überschrift aktuell sehr zu kurz gekommen. Ich melde mich aber auch jeden Fall wieder, wenn es bei mir wieder in den Fokus rückt. :bussi2:

    Ein schönes Wochenende.

    Hallo und gute Neuigkeiten, nach neuem Anlauf funktioniert es jetzt super.

    Zugleich habe ich das Script mit weiteren Funktionen (CPU-Temp, CPU-Auslastung, Meldung von Übertragungsfehlern) noch ausgebaut. ^^

    Zur besseren Seiten-Übersicht habe ich die Scripte in Spoiler gesetzt.

    Ich hoffe, dass das so ok ist.

    Auch mögen Programmierexperten in den Scripten die Durchnummerierung von Konstanten nicht, sondern genaue Bezeichnungen.

    Dies gilt auch für die Kommentierungen.

    Mir hilft es für meine Orientierung und Übersicht aber so besser. ;)


    Script: Verarbeitung (send_thingspeak.py)

    "xxx"-Werte mit eigenen Zugangsdaten ersetzen

    Spoiler anzeigen

    #!/usr/bin/env python3

    import thingspeak

    import time

    import Adafruit_DHT # Sensoren initialisieren

    from gpiozero import CPUTemperature # CPU-Werte initialiseren

    import psutil # CPU-Auslastung initialisieren


    channel_id = xxxxx # ThingSpeak-Kanal

    write_key = 'xxxxxxx' # ThingSpeak write-key

    read_key = 'xxxxxxx' # ThingSpeak read-key

    pin1 = 12 # Gehaeusetemperatur

    pin2 = 16 # Aussentemperatur

    sensor1 = Adafruit_DHT.DHT22

    sensor2 = Adafruit_DHT.DHT22

    cputemp = CPUTemperature()

    cpuusage = psutil.cpu_percent(interval=0.5)

    textuebertragungsfehler = ' + Daten nicht uebertragen'

    datumuebertragungsfehler = time.strftime("%Y.%m.%d %H:%M:%S")


    # Verarbeitung aller Werte, Sendung an ThingSpeak

    def measure(channel):

    try:

    humidity1, temperature1 = Adafruit_DHT.read_retry(sensor1, pin1)

    humidity2, temperature2 = Adafruit_DHT.read_retry(sensor2, pin2)

    # Senden neuer Werte an ThingSpeak

    response = channel.update({'field1': round(temperature1, 0), 'field2': round(humidity1, 0), 'field3': round(temperature2, 0), 'field4': round(humidity2, 0), 'field5': round(cputemp.temperature, 0), 'field6': round(cpuusage, 0)})

    # Abrufen vorhandener Werte von ThingSpeak

    # read = channel.get({})

    # print("Read:", read)

    except:

    print(datumuebertragungsfehler + textuebertragungsfehler)

    if __name__ == "__main__":

    channel = thingspeak.Channel(id=channel_id, write_key=write_key, api_key=read_key)

    while True:

    measure(channel)

    # Senden neuer Werte wegen free account > 15 Sek. moeglich, standard 3600

    time.sleep(3600)


    Script: Start (start.sh)

    - P1 zur Vorbeitung für weitere Scripts (P2, P3, ...) für den Autostart genutzt

    Spoiler anzeigen

    #!/bin/bash

    python /home/pi/Adafruit_Python_DHT/Adafruit_DHT/send_thingspeak.py &

    P1=$!

    wait $P1

    Script: Autostart-Ordner (start.desktop)

    - Pfad im Buster-Image: \etc\xdg\autostart

    Spoiler anzeigen

    [Desktop Entry]

    Type=Application

    Name=Start

    Comment=Start für Temp

    NoDisplay=false

    Exec=sudo sh /home/pi/Adafruit_Python_DHT/Adafruit_DHT/start.sh

    Guten Morgen.

    Ich bin neu hier und habe noch nicht so viel Erfahrung mit Python.

    Ein Ergebnis meiner wochenlangen Recherche habe ich diesem Post als Datei angehangen.

    Mein Wunsch:

    - Temperatur/Luftfeuchtigkeit mit 2 Temperatursensoren (DHT22) für Umgebungstemperatur und im Pi-Gehäuse ermitteln

    - Temperatur der internen CPU-Temperatur (über vcgencmd measure_temp) ermitteln

    - von einem anderen Ort mittels ThingSpeak alle 3 Temperaturen+Luftfeuchtigkeit überwachen

    Meine aktuelle Situation:

    die Ermittlung der Temperaturen/Luftfeuchtigkeit der beiden DHT22-Sensoren und der Übermittlung an ThingSpeak funktioniert einwandfrei

    die Übertragung der CPU-Temperatur funktioniert derzeit nicht :helpnew:

    -> Hier benötige ich Hilfe, da ich noch keine Lösung gefunden habe, wie ich die Funktion/Scriptcode (vcgencmd measure_temp) ohne Fehlermeldung in meine Parameterübergabe "response = channel.update({'field5': cputemp)}" an ThingSpeak einbinden kann.

    Wie im py-Script zu erkennen ist, bekomme ich entweder über das Script "def get_cpu_temperature()" die Fehlermeldung "IndentationError: unexpected indent" oder über den Parameter "cputemp = os.popen('vcgencmd measure_temp')" die Fehlermeldung "SyntaxError: invalid syntax".

    -> Sicher habe ich irgendwo einen Denkfehler oder Verständnisfehler von Python, vielleicht könnt Ihr mir helfen, würde mich riesig freuen.

    --> habe auch keine andere Lösung im Forum sowie Google gefunden ;(

    P.S.: Damit das Script aktuell wenigstens die Werte von den beiden DHT22-Sensoren an ThingSpeak überträgt, habe ich die Sache mit der CPU-Temp. in der py-Datei im Anhang mit # auskommentiert.