1
0
Fork 0

Wunderground, Endauswertung: einheitliche Formatierung

mithilfe von Eclipse
This commit is contained in:
Findus23 2014-10-20 18:22:21 +02:00
parent a038d0e773
commit 5e8ada7897
2 changed files with 51 additions and 51 deletions

View file

@ -4,7 +4,7 @@ import math
from datetime import datetime # aus dem Modul datetime Datentyp datetime (Datum und Zeit) importieren from datetime import datetime # aus dem Modul datetime Datentyp datetime (Datum und Zeit) importieren
bis_roh = "2014/02/01 22:1:00" bis_roh = "2014/02/01 22:1:00"
namen = ["Innentemperatur", "Gerätetemperatur 1", "Außentemperatur", "Gerätetemperatur 2", "Temperatur (Luft)", "Luftfeuchtigkeit", "Luftdruck\t", "Temperatur (Druck)", "Prozessor\t","Qualität\t"] namen = ["Innentemperatur", "Gerätetemperatur 1", "Außentemperatur", "Gerätetemperatur 2", "Temperatur (Luft)", "Luftfeuchtigkeit", "Luftdruck\t", "Temperatur (Druck)", "Prozessor\t", "Qualität\t"]
format = "%Y/%m/%d %H:%M:%S" format = "%Y/%m/%d %H:%M:%S"
eingabeformat = "%d.%m.%y %H:%M:%S" eingabeformat = "%d.%m.%y %H:%M:%S"
von_roh = "2014/02/01 18:12:42" von_roh = "2014/02/01 18:12:42"
@ -12,24 +12,24 @@ von_roh = "2014/02/01 18:12:42"
def offnen(datei): def offnen(datei):
with open(datei) as filein: with open(datei) as filein:
reader =csv.reader(filein, quoting=csv.QUOTE_NONNUMERIC) reader = csv.reader(filein, quoting = csv.QUOTE_NONNUMERIC)
global liste # Liste außerhalb von Funtion nutzen global liste # Liste außerhalb von Funtion nutzen
liste = list(zip(*reader)) # = [temp1,temp2,temp3,temp4,luft_temp,luft_feucht,druck,temp_druck,rasp] liste = list(zip(*reader)) # = [temp1,temp2,temp3,temp4,luft_temp,luft_feucht,druck,temp_druck,rasp]
def ausreisser(spalte): def ausreisser(spalte):
zeilenanzahl = len(spalte) -1 zeilenanzahl = len(spalte) - 1
i = 0 i = 0
while i < zeilenanzahl: while i < zeilenanzahl:
if (spalte[i] != "") and (spalte[i+1] != "") and (spalte[i-1] != ""): if (spalte[i] != "") and (spalte[i + 1] != "") and (spalte[i - 1] != ""):
diff1 = spalte[i]-spalte[i+1] diff1 = spalte[i] - spalte[i + 1]
diff2 = spalte[i]-spalte[i-1] diff2 = spalte[i] - spalte[i - 1]
if ((diff1 < -schwankung) or (diff1 > schwankung)) and ((diff2 < -schwankung) or (diff2 > schwankung)): if ((diff1 < -schwankung) or (diff1 > schwankung)) and ((diff2 < -schwankung) or (diff2 > schwankung)):
print("in Spalte " + str(liste.index(spalte)+1) + " Zeile " + str(i+1) + " ist ein Ausreisser (" + str(spalte[i]) + ")") print("in Spalte " + str(liste.index(spalte) + 1) + " Zeile " + str(i + 1) + " ist ein Ausreisser (" + str(spalte[i]) + ")")
ausreisserliste.append((liste.index(spalte),i)) ausreisserliste.append((liste.index(spalte), i))
# else: # else:
# print("Passt:" + str(i),str(diff1),str(diff2)) # print("Passt:" + str(i),str(diff1),str(diff2))
i+= 1 i += 1
def mittelwert(spalte): def mittelwert(spalte):
summe = 0 summe = 0
@ -42,7 +42,7 @@ def mittelwert(spalte):
return mittelwert return mittelwert
def minmax(spalte): def minmax(spalte):
mini = spalte[0] #Minimum auf ersten Wert setzen mini = spalte[0] # Minimum auf ersten Wert setzen
maxi = spalte[0] maxi = spalte[0]
for wert in spalte: for wert in spalte:
if wert != "": if wert != "":
@ -50,9 +50,9 @@ def minmax(spalte):
mini = wert mini = wert
if wert > maxi: if wert > maxi:
maxi = wert maxi = wert
return (mini,maxi) return (mini, maxi)
def standardabweichung(spalte,mw): def standardabweichung(spalte, mw):
n = 0 n = 0
summe = 0 summe = 0
for wert in spalte: for wert in spalte:
@ -68,7 +68,7 @@ def datum_offnen():
global inhalt global inhalt
inhalt = datei.readlines() inhalt = datei.readlines()
datei.close() datei.close()
def datumsauswahl(von,bis): def datumsauswahl(von, bis):
start_gefunden = False start_gefunden = False
stop_gefunden = False stop_gefunden = False
@ -85,7 +85,7 @@ def datumsauswahl(von,bis):
print("Entweder ist der Endzeitpunkt vor dem Startzeitpunkt oder die beiden liegen zu nahe an den Grenzwerten.") print("Entweder ist der Endzeitpunkt vor dem Startzeitpunkt oder die beiden liegen zu nahe an den Grenzwerten.")
exit(1) exit(1)
print("Der Messwert geht von Zeile " + str(start) + " bis Zeile " + str(stop) + " und über folgenden Zeitraum: " + str(bis - von)) print("Der Messwert geht von Zeile " + str(start) + " bis Zeile " + str(stop) + " und über folgenden Zeitraum: " + str(bis - von))
return start,stop return start, stop
def datumsfrage(frage): def datumsfrage(frage):
while True: while True:
@ -99,20 +99,20 @@ def datumsfrage(frage):
offnen("vorbereitet.csv") offnen("vorbereitet.csv")
datum_offnen() datum_offnen()
spalten_nummer=0 spalten_nummer = 0
ausreisserliste= [] ausreisserliste = []
for spalte in liste: for spalte in liste:
if (spalten_nummer == 9): if (spalten_nummer == 9):
schwankung=1000 schwankung = 1000
else: else:
schwankung = 10 schwankung = 10
ausreisser(spalte) ausreisser(spalte)
spalten_nummer += 1 spalten_nummer += 1
print("Bitte Datum im Format 'DD.MM.YY HH:MM:SS' eingeben") print("Bitte Datum im Format 'DD.MM.YY HH:MM:SS' eingeben")
print("Es sollte zwischen " + datetime.strptime(inhalt[1].rstrip(),format).strftime(eingabeformat) + " und " + datetime.strptime(inhalt[-1].rstrip(),format).strftime(eingabeformat) + " liegen") print("Es sollte zwischen " + datetime.strptime(inhalt[1].rstrip(), format).strftime(eingabeformat) + " und " + datetime.strptime(inhalt[-1].rstrip(), format).strftime(eingabeformat) + " liegen")
von = datumsfrage("von: ") von = datumsfrage("von: ")
bis = datumsfrage("bis: ") bis = datumsfrage("bis: ")
startstop = datumsauswahl(von,bis) startstop = datumsauswahl(von, bis)
von = startstop[0] von = startstop[0]
bis = startstop[1] bis = startstop[1]
liste_auswahl = [] liste_auswahl = []
@ -123,10 +123,10 @@ liste = liste_auswahl
print("------Mittelwerte------") print("------Mittelwerte------")
mittelwerte = [] # leere Liste erstellen mittelwerte = [] # leere Liste erstellen
for spalte in liste: for spalte in liste:
mw = mittelwert(spalte) #jeden MW ausrechnen ... mw = mittelwert(spalte) # jeden MW ausrechnen ...
mittelwerte.append(mw) # ... und an die Liste anhängen mittelwerte.append(mw) # ... und an die Liste anhängen
mittelausgabe = zip(namen,mittelwerte) # in Tupel umwandeln [(Innentemperatur, 25), (Außentemperatur,8)] mittelausgabe = zip(namen, mittelwerte) # in Tupel umwandeln [(Innentemperatur, 25), (Außentemperatur,8)]
for name,mittelwert in mittelausgabe: for name, mittelwert in mittelausgabe:
print(name + ":\t%0.2f" % mittelwert) # jedes Tupel ausgeben print(name + ":\t%0.2f" % mittelwert) # jedes Tupel ausgeben
print("------Minimum-Maximum------") print("------Minimum-Maximum------")
@ -138,14 +138,14 @@ for spalte in liste:
maxi = minumax[1] maxi = minumax[1]
minima.append(mini) minima.append(mini)
maxima.append(maxi) maxima.append(maxi)
minmaxausgabe = zip(namen,minima,maxima) minmaxausgabe = zip(namen, minima, maxima)
for name,minimum,maximum in minmaxausgabe: for name, minimum, maximum in minmaxausgabe:
print(name + ":\t" + str(minimum) + "\t" + str(maximum)) print(name + ":\t" + str(minimum) + "\t" + str(maximum))
print("------Standardabweichung------") print("------Standardabweichung------")
standardabweichungen=[] standardabweichungen = []
for spalte in liste: for spalte in liste:
abweichung = standardabweichung(spalte,mittelwerte[liste.index(spalte)]) #Mittelwert über Stelle in Liste herausfinden abweichung = standardabweichung(spalte, mittelwerte[liste.index(spalte)]) # Mittelwert über Stelle in Liste herausfinden
standardabweichungen.append(abweichung) standardabweichungen.append(abweichung)
stabausgabe = zip(namen,standardabweichungen) stabausgabe = zip(namen, standardabweichungen)
for name,abweichung in stabausgabe: for name, abweichung in stabausgabe:
print(name + ":\t%0.2f" % abweichung) print(name + ":\t%0.2f" % abweichung)

View file

@ -5,28 +5,28 @@ from datetime import datetime
import requests import requests
from wunderground_pwd import * # password und wu_id from wunderground_pwd import * # password und wu_id
innentemp_c=float(sys.argv[1]) innentemp_c = float(sys.argv[1])
gertemp1_c=float(sys.argv[2]) gertemp1_c = float(sys.argv[2])
bodentemp_c=float(sys.argv[3]) bodentemp_c = float(sys.argv[3])
gertemp2_c=float(sys.argv[4]) gertemp2_c = float(sys.argv[4])
lufttemp_c=float(sys.argv[5]) lufttemp_c = float(sys.argv[5])
luftfeucht=float(sys.argv[6]) luftfeucht = float(sys.argv[6])
aussentemp_c=float(sys.argv[7]) aussentemp_c = float(sys.argv[7])
druck=float(sys.argv[8]) druck = float(sys.argv[8])
processor_c=float(sys.argv[9]) processor_c = float(sys.argv[9])
qualitat=float(sys.argv[10]) qualitat = float(sys.argv[10])
innentemp = 9.0/5.0 * innentemp_c + 32 innentemp = 9.0 / 5.0 * innentemp_c + 32
gertemp1 = 9.0/5.0 * gertemp1_c + 32 gertemp1 = 9.0 / 5.0 * gertemp1_c + 32
bodentemp = 9.0/5.0 * bodentemp_c + 32 bodentemp = 9.0 / 5.0 * bodentemp_c + 32
gertemp2 = 9.0/5.0 * gertemp2_c + 32 gertemp2 = 9.0 / 5.0 * gertemp2_c + 32
lufttemp = 9.0/5.0 * lufttemp_c + 32 lufttemp = 9.0 / 5.0 * lufttemp_c + 32
aussentemp = 9.0/5.0 * aussentemp_c + 32 aussentemp = 9.0 / 5.0 * aussentemp_c + 32
processor = 9.0/5.0 * processor_c + 32 processor = 9.0 / 5.0 * processor_c + 32
druck_hg = druck * 0.02956 druck_hg = druck * 0.02956
zeit=datetime.utcnow().strftime('%Y-%m-%d %H:%M:%S') zeit = datetime.utcnow().strftime('%Y-%m-%d %H:%M:%S')
pfad="http://rtupdate.wunderground.com/weatherstation/updateweatherstation.php?ID=" + wu_id + "&PASSWORD=" + password + "&dateutc=" + zeit + "&tempf=" + str(aussentemp) + "&temp2f=" + str(bodentemp) + "&temp2f=" + str(lufttemp) + "&baromin=" + str(druck_hg) + "&humidity=" + str(luftfeucht) + "&indoortempf=" + str(innentemp) + "&softwaretype=raspberry_pi&action=updateraw&realtime=1&rtfreq=30" pfad = "http://rtupdate.wunderground.com/weatherstation/updateweatherstation.php?ID=" + wu_id + "&PASSWORD=" + password + "&dateutc=" + zeit + "&tempf=" + str(aussentemp) + "&temp2f=" + str(bodentemp) + "&temp2f=" + str(lufttemp) + "&baromin=" + str(druck_hg) + "&humidity=" + str(luftfeucht) + "&indoortempf=" + str(innentemp) + "&softwaretype=raspberry_pi&action=updateraw&realtime=1&rtfreq=30"
r = requests.get(pfad) r = requests.get(pfad)
if (r.text == "success\n") & (r.status_code == 200): if (r.text == "success\n") & (r.status_code == 200):
print("ok") print("ok")
else: else:
print("Ein Fehler ist aufgetreten: " + r.text) print("Ein Fehler ist aufgetreten: " + r.text)