Moin!
Ich fürchte ich brauche mal wieder eure Hilfe.
Ich habe eine Python-Script mit IDLE geschrieben (siehe CODE).
Python
#!/usr/bin/python3
# -*- coding: utf-8 -*-
# -------------------- Module importieren ----------------------------
import smbus
import bme280
import time
import math
import mod_ErrorLogging as Logging
import mod_DB_Insert as DBaction
# -------------------- Konstanten deklarieren ------------------------
tpk1 = 241.2
tpk2 = 4222.03716
tpk3 = 17.5043
Komponente = "BME280"
# -------------------- Variablen initialisieren ----------------------
Datum = time.strftime("%Y-%m-%d")
Uhrzeit = time.strftime("%H:%M")
Meldung = "program started"
Logging.ErrorLog(Komponente, Meldung)
# -------------------- I2C-Bus konfigurieren -------------------------
port = 1
address = 0x76
bus = smbus.SMBus(port)
# -------------------- Einlesen der Daten ----------------------------
try:
t, p, h = bme280.readBME280All()
Meldung = "read data completed"
Logging.ErrorLog(Komponente, Meldung)
except:
Meldung = "read data error"
Logging.ErrorLog(Komponente, Meldung)
# -------------------- Berechnung des Taupunktes (dewpoint) ----------
d = (tpk1*math.log(h/100)+((tpk2*t)/(tpk1+t)))/(tpk3-math.log(h/100)-((tpk3*t)/(tpk1+t)))
temp = '{:2.1f}'.format(t)
pres = '{:4.1f}'.format(p)
humi = '{:3.1f}'.format(h)
dewp = '{:2.1f}'.format(d)
#dewp = 1.0
# -------------------- Store to DB -----------------------------------
try:
Datenbank = 'Test_DB'
SQLstatement = 'INSERT INTO tbl_Luft (Datum, Uhrzeit, Temperatur, Luftfeuchtigkeit, Luftdruck, Taupunkt) VALUES ("%s", "%s", "%s", "%s", "%s", "%s")' % (Datum, Uhrzeit, temp, humi, pres, dewp)
DBaction.DBinsert(SQLstatement, Datenbank)
Meldung = "data stored successfully to DB"
Logging.ErrorLog(Komponente, Meldung)
except:
Meldung = "database error."
Logging.ErrorLog(Komponente, Meldung)
# -------------------- Troubleshooting Section -----------------------
data = bme280.readBME280All()
print (data)
print(time.strftime("%d.%m.%Y %H:%M:%S"))
print ('Temperatur: {0:0.1f} °C'.format(t));
print ('Luftdruck: {0:0.1f} hPa'.format(p));
print ('Luftfeuchtigkeit: {0:0.1f} % RH'.format(h));
print ('Taupunkt: {0:0.1f} °C'.format(d));
Alles anzeigen
Dieses Programm funktioniert auch gut, wenn man es unter IDLE laufen lässt.
Siehe output:
Code
============ RESTART: /home/pi/Projekte/Wetterstation/LuftCron.py ============
(22.38, 1001.3223773280776, 51.2430526923437)
02.10.2021 18:03:17
Temperatur: 22.4 °C
Luftdruck: 1001.4 hPa
Luftfeuchtigkeit: 51.2 % RH
Taupunkt: 11.8 °C
>>>
Wieso bekomme ich nun eine Fehlermeldung, wenn ich eben dieses Programm in der Shell ausführe?
Fehlermeldung:
Code
pi@raspi:~/Projekte/Wetterstation $ python3 LuftCron.py
Traceback (most recent call last):
File "LuftCron.py", line 39, in <module>
d = (tpk1*math.log(h/100)+((tpk2*t)/(tpk1+t)))/(tpk3-math.log(h/100)-((tpk3*t)/(tpk1+t)))
NameError: name 'h' is not defined
pi@raspi:~/Projekte/Wetterstation $
Warum ist jetzt "h" plötzlich nicht mehr defined?
Das Programm läuft doch eigentlich!
Ich blick's einfach nicht.
Kann mir einer von euch helfen?
Vielen Dank und beste Grüße
U32