Merge branch 'master' of github.com:Findus23/Umweltdatenmessung
Conflicts: Webinterface/dygraphs_außen.html
This commit is contained in:
commit
76a035769b
13 changed files with 328 additions and 89 deletions
Binary file not shown.
|
@ -4,7 +4,7 @@ import math
|
|||
from datetime import datetime # aus dem Modul datetime Datentyp datetime (Datum und Zeit) importieren
|
||||
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"
|
||||
eingabeformat = "%d.%m.%y %H:%M:%S"
|
||||
von_roh = "2014/02/01 18:12:42"
|
||||
|
@ -12,24 +12,24 @@ von_roh = "2014/02/01 18:12:42"
|
|||
|
||||
def offnen(datei):
|
||||
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
|
||||
liste = list(zip(*reader)) # = [temp1,temp2,temp3,temp4,luft_temp,luft_feucht,druck,temp_druck,rasp]
|
||||
|
||||
def ausreisser(spalte):
|
||||
zeilenanzahl = len(spalte) -1
|
||||
zeilenanzahl = len(spalte) - 1
|
||||
i = 0
|
||||
|
||||
|
||||
while i < zeilenanzahl:
|
||||
if (spalte[i] != "") and (spalte[i+1] != "") and (spalte[i-1] != ""):
|
||||
diff1 = spalte[i]-spalte[i+1]
|
||||
diff2 = spalte[i]-spalte[i-1]
|
||||
if (spalte[i] != "") and (spalte[i + 1] != "") and (spalte[i - 1] != ""):
|
||||
diff1 = spalte[i] - spalte[i + 1]
|
||||
diff2 = spalte[i] - spalte[i - 1]
|
||||
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]) + ")")
|
||||
ausreisserliste.append((liste.index(spalte),i))
|
||||
# else:
|
||||
# print("Passt:" + str(i),str(diff1),str(diff2))
|
||||
i+= 1
|
||||
print("in Spalte " + str(liste.index(spalte) + 1) + " Zeile " + str(i + 1) + " ist ein Ausreisser (" + str(spalte[i]) + ")")
|
||||
ausreisserliste.append((liste.index(spalte), i))
|
||||
# else:
|
||||
# print("Passt:" + str(i),str(diff1),str(diff2))
|
||||
i += 1
|
||||
|
||||
def mittelwert(spalte):
|
||||
summe = 0
|
||||
|
@ -42,7 +42,7 @@ def mittelwert(spalte):
|
|||
return mittelwert
|
||||
|
||||
def minmax(spalte):
|
||||
mini = spalte[0] #Minimum auf ersten Wert setzen
|
||||
mini = spalte[0] # Minimum auf ersten Wert setzen
|
||||
maxi = spalte[0]
|
||||
for wert in spalte:
|
||||
if wert != "":
|
||||
|
@ -50,9 +50,9 @@ def minmax(spalte):
|
|||
mini = wert
|
||||
if wert > maxi:
|
||||
maxi = wert
|
||||
return (mini,maxi)
|
||||
return (mini, maxi)
|
||||
|
||||
def standardabweichung(spalte,mw):
|
||||
def standardabweichung(spalte, mw):
|
||||
n = 0
|
||||
summe = 0
|
||||
for wert in spalte:
|
||||
|
@ -68,7 +68,7 @@ def datum_offnen():
|
|||
global inhalt
|
||||
inhalt = datei.readlines()
|
||||
datei.close()
|
||||
def datumsauswahl(von,bis):
|
||||
def datumsauswahl(von, bis):
|
||||
|
||||
start_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.")
|
||||
exit(1)
|
||||
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):
|
||||
while True:
|
||||
|
@ -99,20 +99,20 @@ def datumsfrage(frage):
|
|||
|
||||
offnen("vorbereitet.csv")
|
||||
datum_offnen()
|
||||
spalten_nummer=0
|
||||
ausreisserliste= []
|
||||
spalten_nummer = 0
|
||||
ausreisserliste = []
|
||||
for spalte in liste:
|
||||
if (spalten_nummer == 9):
|
||||
schwankung=1000
|
||||
schwankung = 1000
|
||||
else:
|
||||
schwankung = 10
|
||||
ausreisser(spalte)
|
||||
spalten_nummer += 1
|
||||
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: ")
|
||||
bis = datumsfrage("bis: ")
|
||||
startstop = datumsauswahl(von,bis)
|
||||
startstop = datumsauswahl(von, bis)
|
||||
von = startstop[0]
|
||||
bis = startstop[1]
|
||||
liste_auswahl = []
|
||||
|
@ -123,10 +123,10 @@ liste = liste_auswahl
|
|||
print("------Mittelwerte------")
|
||||
mittelwerte = [] # leere Liste erstellen
|
||||
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
|
||||
mittelausgabe = zip(namen,mittelwerte) # in Tupel umwandeln [(Innentemperatur, 25), (Außentemperatur,8)]
|
||||
for name,mittelwert in mittelausgabe:
|
||||
mittelausgabe = zip(namen, mittelwerte) # in Tupel umwandeln [(Innentemperatur, 25), (Außentemperatur,8)]
|
||||
for name, mittelwert in mittelausgabe:
|
||||
print(name + ":\t%0.2f" % mittelwert) # jedes Tupel ausgeben
|
||||
|
||||
print("------Minimum-Maximum------")
|
||||
|
@ -138,14 +138,14 @@ for spalte in liste:
|
|||
maxi = minumax[1]
|
||||
minima.append(mini)
|
||||
maxima.append(maxi)
|
||||
minmaxausgabe = zip(namen,minima,maxima)
|
||||
for name,minimum,maximum in minmaxausgabe:
|
||||
minmaxausgabe = zip(namen, minima, maxima)
|
||||
for name, minimum, maximum in minmaxausgabe:
|
||||
print(name + ":\t" + str(minimum) + "\t" + str(maximum))
|
||||
print("------Standardabweichung------")
|
||||
standardabweichungen=[]
|
||||
standardabweichungen = []
|
||||
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)
|
||||
stabausgabe = zip(namen,standardabweichungen)
|
||||
for name,abweichung in stabausgabe:
|
||||
stabausgabe = zip(namen, standardabweichungen)
|
||||
for name, abweichung in stabausgabe:
|
||||
print(name + ":\t%0.2f" % abweichung)
|
||||
|
|
17
README.md
17
README.md
|
@ -4,22 +4,9 @@ Umweltdatenmessung mit dem Raspberry Pi
|
|||
Allgemeines
|
||||
----------
|
||||
In meinem Projekt möchte ich mithilfe eines Raspberry Pi Umweltdaten wie Lufttemperatur, -druck, -feuchtigkteit und -qualität messen und aufzeichenen. Diese Daten sollen dann sowohl [grafisch](https://github.com/Findus23/Umweltdatenmessung/tree/master/Webinterface) als auch [rechnerisch](https://github.com/Findus23/Umweltdatenmessung/tree/master/Endauswertung) ausgewertet werden.
|
||||
|
||||
weitere Informationen
|
||||
---------------------
|
||||
* eine regelmäßig aktualisierte Kopie der Webseite des RPi, die nur in der Schule erreichbar ist, findet man [hier](http://winkler.kremszeile.at).
|
||||
* eine regelmäßig aktualisierte Kopie der Webseite des RPi-Webservers mit aktuellen Messwerten und einer Beschreibung des Projekts, findet man [hier](http://winkler.kremszeile.at).
|
||||
* Knapp 100 Bilder, die den Entstehungsverlauf dokumentieren, findet man auf [Flickr](https://www.flickr.com/photos/95621561@N03/sets/72157637721138445/).
|
||||
* einige Videos sind auch auf [Youtube](https://www.youtube.com/playlist?list=PLjtFdocVknd4aw90_zVr0U4BFlRH9PatA) zu finden
|
||||
|
||||
#noch zu tun#
|
||||
|
||||
* ~~regelmäßiges Backup~~
|
||||
* ~~automatische E-Mail~~
|
||||
* ~~wiederholtes Messen bei Fehlschlag~~
|
||||
* fertig
|
||||
* Endauswertung verbessern
|
||||
* Ausreißererkenung
|
||||
* teilweise erledigt
|
||||
* benutzerfreundlicher
|
||||
* mehr Berechnungen
|
||||
* ~~LED-Signallampen~~
|
||||
* Die VWA über mein Projekt ist auch [auf Github](https://github.com/Findus23/VWA) zu finden.
|
||||
|
|
|
@ -77,7 +77,7 @@ addToHomescreen({
|
|||
<!--Beginn Navigationsleiste-->
|
||||
<div id="nav">
|
||||
<ul>
|
||||
<li><a href="./index.html">Hauptseite</a></li>
|
||||
<li><a href="./">Hauptseite</a></li>
|
||||
<li><a href="./aktuell.html" id="aktuell">aktuelle Werte</a></li>
|
||||
<li><a href="./dygraphs_außen.html">Diagramm (Außen)</a></li>
|
||||
<li><a href="./dygraphs_innen.html">Diagramm (Innen)</a></li>
|
||||
|
|
|
@ -11,7 +11,7 @@
|
|||
<!--Beginn Navigationsleiste-->
|
||||
<div id="nav">
|
||||
<ul>
|
||||
<li><a href="./index.html">Hauptseite</a></li>
|
||||
<li><a href="./">Hauptseite</a></li>
|
||||
<li><a href="./aktuell.html" id="aktuell">aktuelle Werte</a></li>
|
||||
<li><a href="./dygraphs_außen.html">Diagramm (Außen)</a></li>
|
||||
<li><a href="./dygraphs_innen.html">Diagramm (Innen)</a></li>
|
||||
|
|
|
@ -98,7 +98,7 @@
|
|||
<!--Beginn Navigationsleiste-->
|
||||
<div id="nav">
|
||||
<ul>
|
||||
<li><a href="./index.html">Hauptseite</a></li>
|
||||
<li><a href="./">Hauptseite</a></li>
|
||||
<li><a href="./aktuell.html">aktuelle Werte</a></li>
|
||||
<li><a href="./dygraphs_außen.html">Diagramm (Außen)</a></li>
|
||||
<li><a href="./dygraphs_innen.html" id="aktuell">Diagramm (Innen)</a></li>
|
||||
|
@ -140,6 +140,7 @@
|
|||
<input type="text" id="datespan"/>
|
||||
<select name="data" id="data" size="1" title="anderen Datensatz auswählen" onchange="g.updateOptions({file: (options[selectedIndex].value)})">
|
||||
<option value="dygraph.csv" title="momentan laufende Messung">aktuelle Messung</option>
|
||||
<option value="dygraph_8A.csv" title="September 2014">8A</option>
|
||||
<option value="dygraph_ocg.csv" title="Messung wärend des Finales bei der OCG">OCG Finale</option>
|
||||
<option value="dygraph_schule.csv" title="Mai-Juni 2014">Schule</option>
|
||||
<option value="dygraph_gemischt.csv">Testdaten 1</option>
|
||||
|
|
|
@ -11,7 +11,7 @@
|
|||
<!--Beginn Navigationsleiste-->
|
||||
<div id="nav">
|
||||
<ul>
|
||||
<li><a href="./index.html">Hauptseite</a></li>
|
||||
<li><a href="./">Hauptseite</a></li>
|
||||
<li><a href="./aktuell.html">aktuelle Werte</a></li>
|
||||
<li><a href="./dygraphs_außen.html">Diagramm (Außen)</a></li>
|
||||
<li><a href="./dygraphs_innen.html">Diagramm (Innen)</a></li>
|
||||
|
|
|
@ -2,14 +2,16 @@
|
|||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<title>Home</title>
|
||||
<title>Umweltdatenmessung mit dem Raspberry Pi</title>
|
||||
<meta name="description" content="Aufzeichnung, Speicherung und grafische sowie rechnerische Auswertung von Umweltdaten">
|
||||
<meta name="language" content="DE">
|
||||
<link rel="stylesheet" type="text/css" href="./style.css" />
|
||||
</head>
|
||||
<body>
|
||||
<!--Beginn Navigationsleiste-->
|
||||
<div id="nav">
|
||||
<ul>
|
||||
<li><a href="./index.html" id="aktuell">Hauptseite</a></li>
|
||||
<li><a href="./" id="aktuell">Hauptseite</a></li>
|
||||
<li><a href="./aktuell.html">aktuelle Werte</a></li>
|
||||
<li><a href="./dygraphs_außen.html">Diagramm (Außen)</a></li>
|
||||
<li><a href="./dygraphs_innen.html">Diagramm (Innen)</a></li>
|
||||
|
|
|
@ -11,7 +11,7 @@
|
|||
<!--Beginn Navigationsleiste-->
|
||||
<div id="nav">
|
||||
<ul>
|
||||
<li><a href="./index.html">Hauptseite</a></li>
|
||||
<li><a href="./">Hauptseite</a></li>
|
||||
<li><a href="./aktuell.html">aktuelle Werte</a></li>
|
||||
<li><a href="./dygraphs_außen.html">Diagramm (Außen)</a></li>
|
||||
<li><a href="./dygraphs_innen.html">Diagramm (Innen)</a></li>
|
||||
|
|
|
@ -11,7 +11,7 @@
|
|||
<!--Beginn Navigationsleiste-->
|
||||
<div id="nav">
|
||||
<ul>
|
||||
<li><a href="./index.html">Hauptseite</a></li>
|
||||
<li><a href="./">Hauptseite</a></li>
|
||||
<li><a href="./aktuell.html">aktuelle Werte</a></li>
|
||||
<li><a href="./dygraphs_außen.html">Diagramm (Außen)</a></li>
|
||||
<li><a href="./dygraphs_innen.html">Diagramm (Innen)</a></li>
|
||||
|
|
256
diverses/DS18B20.svg
Normal file
256
diverses/DS18B20.svg
Normal file
|
@ -0,0 +1,256 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="210mm"
|
||||
height="297mm"
|
||||
id="svg2"
|
||||
version="1.1"
|
||||
inkscape:version="0.48.5 r10040"
|
||||
sodipodi:docname="DS18B20.svg"
|
||||
inkscape:export-filename="/home/lukas/VWA/figures/temp_pin.png"
|
||||
inkscape:export-xdpi="314.23175"
|
||||
inkscape:export-ydpi="314.23175">
|
||||
<defs
|
||||
id="defs4" />
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="2.8"
|
||||
inkscape:cx="306.38603"
|
||||
inkscape:cy="778.75143"
|
||||
inkscape:document-units="px"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="false"
|
||||
inkscape:snap-global="true"
|
||||
showguides="true"
|
||||
inkscape:guide-bbox="true"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="1014"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="27"
|
||||
inkscape:window-maximized="1">
|
||||
<inkscape:grid
|
||||
type="xygrid"
|
||||
id="grid3772" />
|
||||
<sodipodi:guide
|
||||
orientation="0,1"
|
||||
position="283.75,822.67857"
|
||||
id="guide3774" />
|
||||
<sodipodi:guide
|
||||
orientation="1,0"
|
||||
position="301.51786,903.92857"
|
||||
id="guide3776" />
|
||||
<sodipodi:guide
|
||||
orientation="1,0"
|
||||
position="383.57143,937.14286"
|
||||
id="guide3780" />
|
||||
<sodipodi:guide
|
||||
orientation="0,1"
|
||||
position="339.46429,901.25"
|
||||
id="guide3782" />
|
||||
<sodipodi:guide
|
||||
orientation="1,0"
|
||||
position="320.71429,774.28572"
|
||||
id="guide3844" />
|
||||
<sodipodi:guide
|
||||
orientation="-0.9999996,-0.00089672187"
|
||||
position="342.5,757.67857"
|
||||
id="guide3846" />
|
||||
<sodipodi:guide
|
||||
orientation="1,0"
|
||||
position="364.64286,752.85714"
|
||||
id="guide3848" />
|
||||
<sodipodi:guide
|
||||
orientation="0,1"
|
||||
position="301.51786,743.39286"
|
||||
id="guide3850" />
|
||||
<sodipodi:guide
|
||||
orientation="0,1"
|
||||
position="309.80116,816.01385"
|
||||
id="guide3852" />
|
||||
<sodipodi:guide
|
||||
orientation="0,1"
|
||||
position="352.2907,721.24892"
|
||||
id="guide3991" />
|
||||
<sodipodi:guide
|
||||
orientation="1,0"
|
||||
position="440,751.25"
|
||||
id="guide3993" />
|
||||
</sodipodi:namedview>
|
||||
<metadata
|
||||
id="metadata7">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Ebene 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1">
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:4.50000010000000028;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-linejoin:miter"
|
||||
d="M 342.53125 129.5 C 319.87278 129.5 301.53125 139.1917 301.53125 151.125 L 301.53125 236.4375 L 383.71875 236.4375 L 383.71875 151.125 L 383.5625 151.125 C 383.5625 139.1917 365.18972 129.5 342.53125 129.5 z "
|
||||
id="rect2996" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:4.50000010000000028;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
|
||||
d="m 301.51786,151.11218 82.05357,0"
|
||||
id="path3786"
|
||||
inkscape:connector-curvature="0" />
|
||||
<flowRoot
|
||||
xml:space="preserve"
|
||||
id="flowRoot3788"
|
||||
style="font-size:16px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;text-anchor:middle;text-align:center;stroke-width:4.50000000000000000;stroke-miterlimit:4;stroke-dasharray:none;stroke-linejoin:miter;stroke-opacity:1"><flowRegion
|
||||
id="flowRegion3790"><rect
|
||||
id="rect3792"
|
||||
width="82.053551"
|
||||
height="20.000011"
|
||||
x="301.51785"
|
||||
y="176.82646"
|
||||
style="font-size:16px;text-align:center;text-anchor:middle;stroke-width:4.50000000000000000;stroke-miterlimit:4;stroke-dasharray:none;stroke-linejoin:miter;stroke:none;stroke-opacity:1" /></flowRegion><flowPara
|
||||
id="flowPara3794"
|
||||
style="-inkscape-font-specification:Liberation Sans;font-family:Liberation Sans;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal;stroke-width:4.50000000000000000;stroke-miterlimit:4;stroke-dasharray:none;stroke-linejoin:miter;stroke:none;stroke-opacity:1">DS18B20</flowPara></flowRoot> <flowRoot
|
||||
xml:space="preserve"
|
||||
id="flowRoot3796"
|
||||
style="font-size:16px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Liberation Sans;-inkscape-font-specification:Liberation Sans;stroke-width:4.50000000000000000;stroke-miterlimit:4;stroke-dasharray:none;stroke-linejoin:miter;stroke-opacity:1"
|
||||
transform="translate(57.678571,46.21964)"><flowRegion
|
||||
id="flowRegion3798"><rect
|
||||
id="rect3800"
|
||||
width="10.000004"
|
||||
height="19.464294"
|
||||
x="257.5"
|
||||
y="167.71933"
|
||||
style="font-size:16px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Liberation Sans;-inkscape-font-specification:Liberation Sans;stroke-width:4.50000000000000000;stroke-miterlimit:4;stroke-dasharray:none;stroke-linejoin:miter;stroke:none;stroke-opacity:1" /></flowRegion><flowPara
|
||||
id="flowPara3802">1</flowPara></flowRoot> <flowRoot
|
||||
xml:space="preserve"
|
||||
id="flowRoot3796-1"
|
||||
style="font-size:16px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Liberation Sans;-inkscape-font-specification:Liberation Sans;stroke-width:4.50000000000000000;stroke-miterlimit:4;stroke-dasharray:none;stroke-linejoin:miter;stroke-opacity:1"
|
||||
transform="translate(80.510604,46.21964)"><flowRegion
|
||||
id="flowRegion3798-0"><rect
|
||||
id="rect3800-1"
|
||||
width="10.000004"
|
||||
height="19.464294"
|
||||
x="257.5"
|
||||
y="167.71933"
|
||||
style="font-size:16px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Liberation Sans;-inkscape-font-specification:Liberation Sans;stroke-width:4.50000000000000000;stroke-miterlimit:4;stroke-dasharray:none;stroke-linejoin:miter;stroke:none;stroke-opacity:1" /></flowRegion><flowPara
|
||||
id="flowPara3802-7">2</flowPara></flowRoot> <flowRoot
|
||||
xml:space="preserve"
|
||||
id="flowRoot3796-6"
|
||||
style="font-size:16px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Liberation Sans;-inkscape-font-specification:Liberation Sans;stroke-width:4.50000000000000000;stroke-miterlimit:4;stroke-dasharray:none;stroke-linejoin:miter;stroke-opacity:1"
|
||||
transform="translate(103.54631,46.21964)"><flowRegion
|
||||
id="flowRegion3798-1"><rect
|
||||
id="rect3800-0"
|
||||
width="10.000004"
|
||||
height="19.464294"
|
||||
x="257.5"
|
||||
y="167.71933"
|
||||
style="font-size:16px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Liberation Sans;-inkscape-font-specification:Liberation Sans;stroke-width:4.50000000000000000;stroke-miterlimit:4;stroke-dasharray:none;stroke-linejoin:miter;stroke:none;stroke-opacity:1" /></flowRegion><flowPara
|
||||
id="flowPara3802-4">3</flowPara></flowRoot> <path
|
||||
style="fill:none;stroke:#000000;stroke-width:4.50000010000000028;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
|
||||
d="m 320.71429,236.34833 0,72.62099 -69.69138,0"
|
||||
id="path3854"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:4.50000010000000028;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||
d="m 342.5,236.34835 0,127.01112"
|
||||
id="path3856"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:4.50000010000000028;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
|
||||
d="m 364.64286,236.34833 0,72.62099"
|
||||
id="path3858"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:4.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||
d="m 364.64286,308.96932 86.22417,0"
|
||||
id="path3860"
|
||||
inkscape:connector-curvature="0" />
|
||||
<flowRoot
|
||||
transform="translate(-100.86609,119.71494)"
|
||||
xml:space="preserve"
|
||||
id="flowRoot3788-0"
|
||||
style="font-size:20px;font-style:normal;font-weight:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"><flowRegion
|
||||
id="flowRegion3790-5"><rect
|
||||
id="rect3792-7"
|
||||
width="45.624989"
|
||||
height="22.142872"
|
||||
x="301.51785"
|
||||
y="176.82646"
|
||||
style="font-size:20px;text-align:center;text-anchor:middle;stroke:none" /></flowRegion><flowPara
|
||||
id="flowPara3794-6"
|
||||
style="font-size:20px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;stroke:none;font-family:Liberation Sans;-inkscape-font-specification:Liberation Sans">GND</flowPara></flowRoot> <flowRoot
|
||||
transform="translate(146.3475,119.35918)"
|
||||
xml:space="preserve"
|
||||
id="flowRoot3788-0-0"
|
||||
style="font-size:20px;font-style:normal;font-weight:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"><flowRegion
|
||||
id="flowRegion3790-5-0"><rect
|
||||
id="rect3792-7-4"
|
||||
width="45.624989"
|
||||
height="22.142872"
|
||||
x="301.51785"
|
||||
y="176.82646"
|
||||
style="font-size:20px;text-align:center;text-anchor:middle;stroke:none" /></flowRegion><flowPara
|
||||
id="flowPara3794-6-1"
|
||||
style="font-size:20px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;stroke:none;font-family:Liberation Sans;-inkscape-font-specification:Liberation Sans">+5V</flowPara></flowRoot> <flowRoot
|
||||
transform="translate(14.636719,192.9672)"
|
||||
xml:space="preserve"
|
||||
id="flowRoot3788-0-1"
|
||||
style="font-size:20px;font-style:normal;font-weight:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"><flowRegion
|
||||
id="flowRegion3790-5-5"><rect
|
||||
id="rect3792-7-2"
|
||||
width="50.625"
|
||||
height="24.285725"
|
||||
x="301.51785"
|
||||
y="176.82646"
|
||||
style="font-size:20px;text-align:center;text-anchor:middle;stroke:none" /></flowRegion><flowPara
|
||||
id="flowPara3794-6-7"
|
||||
style="font-size:20px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;stroke:none;font-family:Liberation Sans;-inkscape-font-specification:Liberation Sans">DATA</flowPara></flowRoot> <rect
|
||||
style="fill:none;stroke:#000000;stroke-width:4.50000010000000028;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||
id="rect3962"
|
||||
width="20.267857"
|
||||
height="71.160713"
|
||||
x="-341.1713"
|
||||
y="355.80402"
|
||||
transform="matrix(0,-1,1,0,0,0)" />
|
||||
<flowRoot
|
||||
transform="translate(60.504839,141.50401)"
|
||||
xml:space="preserve"
|
||||
id="flowRoot3788-0-5"
|
||||
style="font-size:20px;font-style:normal;font-weight:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"><flowRegion
|
||||
id="flowRegion3790-5-56"><rect
|
||||
id="rect3792-7-8"
|
||||
width="55.726524"
|
||||
height="25.173326"
|
||||
x="301.51785"
|
||||
y="176.82646"
|
||||
style="font-size:20px;text-align:center;text-anchor:middle;stroke:none" /></flowRegion><flowPara
|
||||
id="flowPara3794-6-16"
|
||||
style="font-size:20px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;stroke:none;font-family:Liberation Sans;-inkscape-font-specification:Liberation Sans">4.7K</flowPara></flowRoot> <path
|
||||
style="fill:none;stroke:#000000;stroke-width:4.50000010000000028;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
|
||||
d="m 342.5,331.11326 13.39286,0"
|
||||
id="path3995"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:4.50000010000000028;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
|
||||
d="m 426.60714,331.11326 13.39286,0 0,-22.14394"
|
||||
id="path3997"
|
||||
inkscape:connector-curvature="0" />
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 13 KiB |
|
@ -5,28 +5,28 @@ from datetime import datetime
|
|||
import requests
|
||||
from wunderground_pwd import * # password und wu_id
|
||||
|
||||
innentemp_c=float(sys.argv[1])
|
||||
gertemp1_c=float(sys.argv[2])
|
||||
bodentemp_c=float(sys.argv[3])
|
||||
gertemp2_c=float(sys.argv[4])
|
||||
lufttemp_c=float(sys.argv[5])
|
||||
luftfeucht=float(sys.argv[6])
|
||||
aussentemp_c=float(sys.argv[7])
|
||||
druck=float(sys.argv[8])
|
||||
processor_c=float(sys.argv[9])
|
||||
qualitat=float(sys.argv[10])
|
||||
innentemp = 9.0/5.0 * innentemp_c + 32
|
||||
gertemp1 = 9.0/5.0 * gertemp1_c + 32
|
||||
bodentemp = 9.0/5.0 * bodentemp_c + 32
|
||||
gertemp2 = 9.0/5.0 * gertemp2_c + 32
|
||||
lufttemp = 9.0/5.0 * lufttemp_c + 32
|
||||
aussentemp = 9.0/5.0 * aussentemp_c + 32
|
||||
processor = 9.0/5.0 * processor_c + 32
|
||||
innentemp_c = float(sys.argv[1])
|
||||
gertemp1_c = float(sys.argv[2])
|
||||
bodentemp_c = float(sys.argv[3])
|
||||
gertemp2_c = float(sys.argv[4])
|
||||
lufttemp_c = float(sys.argv[5])
|
||||
luftfeucht = float(sys.argv[6])
|
||||
aussentemp_c = float(sys.argv[7])
|
||||
druck = float(sys.argv[8])
|
||||
processor_c = float(sys.argv[9])
|
||||
qualitat = float(sys.argv[10])
|
||||
innentemp = 9.0 / 5.0 * innentemp_c + 32
|
||||
gertemp1 = 9.0 / 5.0 * gertemp1_c + 32
|
||||
bodentemp = 9.0 / 5.0 * bodentemp_c + 32
|
||||
gertemp2 = 9.0 / 5.0 * gertemp2_c + 32
|
||||
lufttemp = 9.0 / 5.0 * lufttemp_c + 32
|
||||
aussentemp = 9.0 / 5.0 * aussentemp_c + 32
|
||||
processor = 9.0 / 5.0 * processor_c + 32
|
||||
druck_hg = druck * 0.02956
|
||||
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"
|
||||
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"
|
||||
r = requests.get(pfad)
|
||||
if (r.text == "success\n") & (r.status_code == 200):
|
||||
print("ok")
|
||||
else:
|
||||
print("Ein Fehler ist aufgetreten: " + r.text)
|
||||
print("Ein Fehler ist aufgetreten: " + r.text)
|
23
main.sh
23
main.sh
|
@ -1,8 +1,7 @@
|
|||
#!/bin/bash
|
||||
zufall=0
|
||||
PFAD="/var/www/" #Pfad zum Web-Verzeichnis
|
||||
r=0 # Backup-Zahl auf Null setzen
|
||||
IFS="; " #Spezial-Variable, enthält Trennzeichen zum Trennen von Luftdruck und -temperatur
|
||||
IFS="; " #Spezial-Variable - enthält Trennzeichen zum Trennen von Luftdruck und -temperatur
|
||||
re='^[0-9]+$' # Regulärer Ausdruck, ob Variable eine Zahl ist
|
||||
pushbullet_api_key=$(cat /home/pi/Temperaturmessung/Fremddateien/pushbullet_settings.txt | head -n 1)
|
||||
pushbullet_device=$(cat /home/pi/Temperaturmessung/Fremddateien/pushbullet_settings.txt | tail -n 1)
|
||||
|
@ -17,7 +16,7 @@ then
|
|||
case "$1" in
|
||||
"-d")rm /home/pi/Temperaturmessung/dygraph.csv
|
||||
;;
|
||||
"-h") echo -e "-d csv-Datei leeren \nfür weitere Informationen siehe http://lukaswiki.onpw.de/rasp oder https://github.com/Findus23/Temperaturmessung"
|
||||
"-h") echo -e "-d csv-Datei leeren \nfür weitere Informationen siehe http://winkler.kremszeile.at/ oder https://github.com/Findus23/Umweltdatenmessung"
|
||||
exit 1
|
||||
;;
|
||||
*) echo "unbekannter Parameter - Für Hilfe -h"
|
||||
|
@ -27,16 +26,10 @@ then
|
|||
fi
|
||||
while true
|
||||
do
|
||||
|
||||
uhrzeit=$(date +%Y/%m/%d\ %H:%M:%S)
|
||||
uhrzeit_display=$(date +%d.%m\ %H:%M:%S)
|
||||
uhrzeit_lang=$(date +%d.%m.%y\ %H:%M:%S)
|
||||
#zufall=$(($zufall + $((RANDOM % 10)) - 5)) # a um eine zufällige Zahl zwischen -5 und 5 ändern
|
||||
##a=a+[Zufallszahl von 0-32767] modulo 10 (um eine Zahl von 0-10 zu bekommen) -5 (-> -5 bis 5)
|
||||
#zufall=$a
|
||||
#load=$(cut -c 1,2,3,4 /proc/loadavg) # Load messen
|
||||
uhrzeit=$(date +%Y/%m/%d\ %H:%M:%S) # z.B.: 2014/10/05 11:00:00 (für csv-Datei)
|
||||
uhrzeit_display=$(date +%d.%m\ %H:%M:%S) # z.B.: 05.10 11:00:00 (für Display)
|
||||
uhrzeit_lang=$(date +%d.%m.%y\ %H:%M:%S) # z.B.: 05.10.2014 11:00:00 (für Webinterface)
|
||||
rasp=$(/opt/vc/bin/vcgencmd measure_temp | cut -c 6,7,8,9) #Betriebstemberatur messen
|
||||
#cpu=$(sensors |grep Core\ 0 |cut -c 18,19,20,21) #CPU-Temperatur, lm-sensors muss installiert sein, bei jedem PC anders
|
||||
temp1=$(echo "scale=3; $(grep 't=' /sys/bus/w1/devices/w1_bus_master1/10-000802b53835/w1_slave | awk -F 't=' '{print $2}') / 1000" | bc -l) #Innentemperatur
|
||||
while [ "$temp1" == "-1.250" ] || [ "$temp1" == "85.000" ] || [ "$temp1" == "85.000" ]
|
||||
do
|
||||
|
@ -71,7 +64,7 @@ do
|
|||
done
|
||||
|
||||
luft_roh=$(sudo python /home/pi/Temperaturmessung/Fremddateien/AdafruitDHT.py 2302 17) # Rohdaten des Luftfeuchtigkeits-Sensors
|
||||
set -- $luft_roh
|
||||
set -- $luft_roh #Zerlegen mithilfe von IFS (siehe ganz oben)
|
||||
luft_temp=$1
|
||||
luft_feucht=$2
|
||||
while [ -z "$luft_roh" ] || [ "$(echo $luft_temp '>' 40 | bc -l)" -eq 1 ] || [ "$(echo $luft_temp '<' -20 | bc -l)" -eq 1 ]
|
||||
|
@ -85,7 +78,7 @@ do
|
|||
gpio write 13 0
|
||||
done
|
||||
druck_roh=$(sudo python /home/pi/Temperaturmessung/Fremddateien/Adafruit_BMP085_auswertung.py) # Rohdaten des Luftdruck-Sensors
|
||||
set -- $druck_roh #Zerlegen mithilfe von IFS (siehe ganz oben)
|
||||
set -- $druck_roh
|
||||
temp_druck=$1
|
||||
druck=$2
|
||||
qualitat=$(sudo /home/pi/Temperaturmessung/Fremddateien/airsensor -v -o)
|
||||
|
@ -114,7 +107,7 @@ $luft_feucht_r
|
|||
$temp_druck_r
|
||||
$druck_r
|
||||
$rasp
|
||||
$qualitat" >/home/pi/Temperaturmessung/text.txt.temp
|
||||
$qualitat" >/home/pi/Temperaturmessung/text.txt.temp #zuerst in temporäre Datei schreiben und dann verschieben, um kurzzeitig leere Datei zu vermeiden
|
||||
|
||||
echo "$uhrzeit_lang,${temp1_r},${temp2_r},${temp3_r},${temp4_r},${luft_temp_r},${luft_feucht_r},${temp_druck_r},${druck_r},${rasp},${qualitat}" >/home/pi/Temperaturmessung/text_ws.txt # Daten für Webseite
|
||||
/home/pi/Temperaturmessung/diverses/wunderground.py $temp1 $temp2 $temp3 $temp4 $luft_temp $luft_feucht $temp_druck $druck $rasp $qualitat >> /home/pi/wunderground.log &
|
||||
|
|
Reference in a new issue