erstmaliges Hochladen
This commit is contained in:
commit
9d6d4ad022
9 changed files with 561 additions and 0 deletions
22
.gitattributes
vendored
Normal file
22
.gitattributes
vendored
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
# Auto detect text files and perform LF normalization
|
||||||
|
* text=auto
|
||||||
|
|
||||||
|
# Custom for Visual Studio
|
||||||
|
*.cs diff=csharp
|
||||||
|
*.sln merge=union
|
||||||
|
*.csproj merge=union
|
||||||
|
*.vbproj merge=union
|
||||||
|
*.fsproj merge=union
|
||||||
|
*.dbproj merge=union
|
||||||
|
|
||||||
|
# Standard to msysgit
|
||||||
|
*.doc diff=astextplain
|
||||||
|
*.DOC diff=astextplain
|
||||||
|
*.docx diff=astextplain
|
||||||
|
*.DOCX diff=astextplain
|
||||||
|
*.dot diff=astextplain
|
||||||
|
*.DOT diff=astextplain
|
||||||
|
*.pdf diff=astextplain
|
||||||
|
*.PDF diff=astextplain
|
||||||
|
*.rtf diff=astextplain
|
||||||
|
*.RTF diff=astextplain
|
215
.gitignore
vendored
Normal file
215
.gitignore
vendored
Normal file
|
@ -0,0 +1,215 @@
|
||||||
|
#################
|
||||||
|
## Eclipse
|
||||||
|
#################
|
||||||
|
|
||||||
|
*.pydevproject
|
||||||
|
.project
|
||||||
|
.metadata
|
||||||
|
bin/
|
||||||
|
tmp/
|
||||||
|
*.tmp
|
||||||
|
*.bak
|
||||||
|
*.swp
|
||||||
|
*~.nib
|
||||||
|
local.properties
|
||||||
|
.classpath
|
||||||
|
.settings/
|
||||||
|
.loadpath
|
||||||
|
|
||||||
|
# External tool builders
|
||||||
|
.externalToolBuilders/
|
||||||
|
|
||||||
|
# Locally stored "Eclipse launch configurations"
|
||||||
|
*.launch
|
||||||
|
|
||||||
|
# CDT-specific
|
||||||
|
.cproject
|
||||||
|
|
||||||
|
# PDT-specific
|
||||||
|
.buildpath
|
||||||
|
|
||||||
|
|
||||||
|
#################
|
||||||
|
## Visual Studio
|
||||||
|
#################
|
||||||
|
|
||||||
|
## Ignore Visual Studio temporary files, build results, and
|
||||||
|
## files generated by popular Visual Studio add-ons.
|
||||||
|
|
||||||
|
# User-specific files
|
||||||
|
*.suo
|
||||||
|
*.user
|
||||||
|
*.sln.docstates
|
||||||
|
|
||||||
|
# Build results
|
||||||
|
|
||||||
|
[Dd]ebug/
|
||||||
|
[Rr]elease/
|
||||||
|
x64/
|
||||||
|
build/
|
||||||
|
[Bb]in/
|
||||||
|
[Oo]bj/
|
||||||
|
|
||||||
|
# MSTest test Results
|
||||||
|
[Tt]est[Rr]esult*/
|
||||||
|
[Bb]uild[Ll]og.*
|
||||||
|
|
||||||
|
*_i.c
|
||||||
|
*_p.c
|
||||||
|
*.ilk
|
||||||
|
*.meta
|
||||||
|
*.obj
|
||||||
|
*.pch
|
||||||
|
*.pdb
|
||||||
|
*.pgc
|
||||||
|
*.pgd
|
||||||
|
*.rsp
|
||||||
|
*.sbr
|
||||||
|
*.tlb
|
||||||
|
*.tli
|
||||||
|
*.tlh
|
||||||
|
*.tmp
|
||||||
|
*.tmp_proj
|
||||||
|
*.log
|
||||||
|
*.vspscc
|
||||||
|
*.vssscc
|
||||||
|
.builds
|
||||||
|
*.pidb
|
||||||
|
*.log
|
||||||
|
*.scc
|
||||||
|
|
||||||
|
# Visual C++ cache files
|
||||||
|
ipch/
|
||||||
|
*.aps
|
||||||
|
*.ncb
|
||||||
|
*.opensdf
|
||||||
|
*.sdf
|
||||||
|
*.cachefile
|
||||||
|
|
||||||
|
# Visual Studio profiler
|
||||||
|
*.psess
|
||||||
|
*.vsp
|
||||||
|
*.vspx
|
||||||
|
|
||||||
|
# Guidance Automation Toolkit
|
||||||
|
*.gpState
|
||||||
|
|
||||||
|
# ReSharper is a .NET coding add-in
|
||||||
|
_ReSharper*/
|
||||||
|
*.[Rr]e[Ss]harper
|
||||||
|
|
||||||
|
# TeamCity is a build add-in
|
||||||
|
_TeamCity*
|
||||||
|
|
||||||
|
# DotCover is a Code Coverage Tool
|
||||||
|
*.dotCover
|
||||||
|
|
||||||
|
# NCrunch
|
||||||
|
*.ncrunch*
|
||||||
|
.*crunch*.local.xml
|
||||||
|
|
||||||
|
# Installshield output folder
|
||||||
|
[Ee]xpress/
|
||||||
|
|
||||||
|
# DocProject is a documentation generator add-in
|
||||||
|
DocProject/buildhelp/
|
||||||
|
DocProject/Help/*.HxT
|
||||||
|
DocProject/Help/*.HxC
|
||||||
|
DocProject/Help/*.hhc
|
||||||
|
DocProject/Help/*.hhk
|
||||||
|
DocProject/Help/*.hhp
|
||||||
|
DocProject/Help/Html2
|
||||||
|
DocProject/Help/html
|
||||||
|
|
||||||
|
# Click-Once directory
|
||||||
|
publish/
|
||||||
|
|
||||||
|
# Publish Web Output
|
||||||
|
*.Publish.xml
|
||||||
|
*.pubxml
|
||||||
|
|
||||||
|
# NuGet Packages Directory
|
||||||
|
## TODO: If you have NuGet Package Restore enabled, uncomment the next line
|
||||||
|
#packages/
|
||||||
|
|
||||||
|
# Windows Azure Build Output
|
||||||
|
csx
|
||||||
|
*.build.csdef
|
||||||
|
|
||||||
|
# Windows Store app package directory
|
||||||
|
AppPackages/
|
||||||
|
|
||||||
|
# Others
|
||||||
|
sql/
|
||||||
|
*.Cache
|
||||||
|
ClientBin/
|
||||||
|
[Ss]tyle[Cc]op.*
|
||||||
|
~$*
|
||||||
|
*~
|
||||||
|
*.dbmdl
|
||||||
|
*.[Pp]ublish.xml
|
||||||
|
*.pfx
|
||||||
|
*.publishsettings
|
||||||
|
|
||||||
|
# RIA/Silverlight projects
|
||||||
|
Generated_Code/
|
||||||
|
|
||||||
|
# Backup & report files from converting an old project file to a newer
|
||||||
|
# Visual Studio version. Backup files are not needed, because we have git ;-)
|
||||||
|
_UpgradeReport_Files/
|
||||||
|
Backup*/
|
||||||
|
UpgradeLog*.XML
|
||||||
|
UpgradeLog*.htm
|
||||||
|
|
||||||
|
# SQL Server files
|
||||||
|
App_Data/*.mdf
|
||||||
|
App_Data/*.ldf
|
||||||
|
|
||||||
|
#############
|
||||||
|
## Windows detritus
|
||||||
|
#############
|
||||||
|
|
||||||
|
# Windows image file caches
|
||||||
|
Thumbs.db
|
||||||
|
ehthumbs.db
|
||||||
|
|
||||||
|
# Folder config file
|
||||||
|
Desktop.ini
|
||||||
|
|
||||||
|
# Recycle Bin used on file shares
|
||||||
|
$RECYCLE.BIN/
|
||||||
|
|
||||||
|
# Mac crap
|
||||||
|
.DS_Store
|
||||||
|
|
||||||
|
|
||||||
|
#############
|
||||||
|
## Python
|
||||||
|
#############
|
||||||
|
|
||||||
|
*.py[co]
|
||||||
|
|
||||||
|
# Packages
|
||||||
|
*.egg
|
||||||
|
*.egg-info
|
||||||
|
dist/
|
||||||
|
build/
|
||||||
|
eggs/
|
||||||
|
parts/
|
||||||
|
var/
|
||||||
|
sdist/
|
||||||
|
develop-eggs/
|
||||||
|
.installed.cfg
|
||||||
|
|
||||||
|
# Installer logs
|
||||||
|
pip-log.txt
|
||||||
|
|
||||||
|
# Unit test / coverage reports
|
||||||
|
.coverage
|
||||||
|
.tox
|
||||||
|
|
||||||
|
#Translations
|
||||||
|
*.mo
|
||||||
|
|
||||||
|
#Mr Developer
|
||||||
|
.mr.developer.cfg
|
18
Einstellungen
Normal file
18
Einstellungen
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
# x-Achse enthält Zeitinformation
|
||||||
|
set xdata time
|
||||||
|
# Zeitformat zur Eingabe
|
||||||
|
set timefmt x "%H:%M:%S"
|
||||||
|
# Zeitformat zur Beschriftung der x-Achse
|
||||||
|
set format x "%H:%M:%S"
|
||||||
|
# set nokey #keine Legende
|
||||||
|
set grid #Gitter anzeigen
|
||||||
|
# set title "LOAD-Wert" #eventuell Überschrift
|
||||||
|
set ylabel 'LOAD'
|
||||||
|
set xlabel 'Uhrzeit'
|
||||||
|
set y2tics # Zahlen auch auf 2. y-Achse
|
||||||
|
|
||||||
|
plot "daten_gnuplot.txt" using 1:2 title 'LOAD' with lines axes x1y1, \
|
||||||
|
"daten_gnuplot.txt" using 1:3 title 'Rand' with lines axes x1y2
|
||||||
|
set terminal svg size 1200,800
|
||||||
|
set output "gnuplot.svg"
|
||||||
|
replot
|
117
display.py
Normal file
117
display.py
Normal file
|
@ -0,0 +1,117 @@
|
||||||
|
#!/usr/bin/python
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
# Originales Programm von http://www.schnatterente.net/technik/raspberry-pi-32-zeichen-hitachi-hd44780-display
|
||||||
|
# von mir modifiziert (Anzeige ausgelagert, ergänzt, um Text aus einer Datei anzuzeigen)
|
||||||
|
import time
|
||||||
|
import RPi.GPIO as GPIO
|
||||||
|
|
||||||
|
# Zuordnung der GPIO Pins (ggf. anpassen)
|
||||||
|
DISPLAY_RS = 7
|
||||||
|
DISPLAY_E = 8
|
||||||
|
DISPLAY_DATA4 = 25
|
||||||
|
DISPLAY_DATA5 = 24
|
||||||
|
DISPLAY_DATA6 = 23
|
||||||
|
DISPLAY_DATA7 = 18
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
DISPLAY_WIDTH = 16 # Zeichen je Zeile
|
||||||
|
DISPLAY_LINE_1 = 0x80 # Adresse der ersten Display Zeile
|
||||||
|
DISPLAY_LINE_2 = 0xC0 # Adresse der zweiten Display Zeile
|
||||||
|
DISPLAY_CHR = True
|
||||||
|
DISPLAY_CMD = False
|
||||||
|
E_PULSE = 0.00005
|
||||||
|
E_DELAY = 0.00005
|
||||||
|
|
||||||
|
|
||||||
|
def anzeige(): # Anzeige auslagern, um es wiederholt anzuzeigen
|
||||||
|
lcd_byte(DISPLAY_LINE_1, DISPLAY_CMD)
|
||||||
|
lcd_string(oben)
|
||||||
|
lcd_byte(DISPLAY_LINE_2, DISPLAY_CMD)
|
||||||
|
lcd_string(unten)
|
||||||
|
|
||||||
|
def main():
|
||||||
|
GPIO.setmode(GPIO.BCM)
|
||||||
|
GPIO.setup(DISPLAY_E, GPIO.OUT)
|
||||||
|
GPIO.setup(DISPLAY_RS, GPIO.OUT)
|
||||||
|
GPIO.setup(DISPLAY_DATA4, GPIO.OUT)
|
||||||
|
GPIO.setup(DISPLAY_DATA5, GPIO.OUT)
|
||||||
|
GPIO.setup(DISPLAY_DATA6, GPIO.OUT)
|
||||||
|
GPIO.setup(DISPLAY_DATA7, GPIO.OUT)
|
||||||
|
display_init()
|
||||||
|
|
||||||
|
# GPIO.cleanup()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
def display_init():
|
||||||
|
lcd_byte(0x33,DISPLAY_CMD)
|
||||||
|
lcd_byte(0x32,DISPLAY_CMD)
|
||||||
|
lcd_byte(0x28,DISPLAY_CMD)
|
||||||
|
lcd_byte(0x0C,DISPLAY_CMD)
|
||||||
|
lcd_byte(0x06,DISPLAY_CMD)
|
||||||
|
lcd_byte(0x01,DISPLAY_CMD)
|
||||||
|
|
||||||
|
def lcd_string(message):
|
||||||
|
message = message.ljust(DISPLAY_WIDTH," ")
|
||||||
|
for i in range(DISPLAY_WIDTH):
|
||||||
|
lcd_byte(ord(message[i]),DISPLAY_CHR)
|
||||||
|
|
||||||
|
def lcd_byte(bits, mode):
|
||||||
|
GPIO.output(DISPLAY_RS, mode)
|
||||||
|
GPIO.output(DISPLAY_DATA4, False)
|
||||||
|
GPIO.output(DISPLAY_DATA5, False)
|
||||||
|
GPIO.output(DISPLAY_DATA6, False)
|
||||||
|
GPIO.output(DISPLAY_DATA7, False)
|
||||||
|
if bits&0x10==0x10:
|
||||||
|
GPIO.output(DISPLAY_DATA4, True)
|
||||||
|
if bits&0x20==0x20:
|
||||||
|
GPIO.output(DISPLAY_DATA5, True)
|
||||||
|
if bits&0x40==0x40:
|
||||||
|
GPIO.output(DISPLAY_DATA6, True)
|
||||||
|
if bits&0x80==0x80:
|
||||||
|
GPIO.output(DISPLAY_DATA7, True)
|
||||||
|
time.sleep(E_DELAY)
|
||||||
|
GPIO.output(DISPLAY_E, True)
|
||||||
|
time.sleep(E_PULSE)
|
||||||
|
GPIO.output(DISPLAY_E, False)
|
||||||
|
time.sleep(E_DELAY)
|
||||||
|
GPIO.output(DISPLAY_DATA4, False)
|
||||||
|
GPIO.output(DISPLAY_DATA5, False)
|
||||||
|
GPIO.output(DISPLAY_DATA6, False)
|
||||||
|
GPIO.output(DISPLAY_DATA7, False)
|
||||||
|
if bits&0x01==0x01:
|
||||||
|
GPIO.output(DISPLAY_DATA4, True)
|
||||||
|
if bits&0x02==0x02:
|
||||||
|
GPIO.output(DISPLAY_DATA5, True)
|
||||||
|
if bits&0x04==0x04:
|
||||||
|
GPIO.output(DISPLAY_DATA6, True)
|
||||||
|
if bits&0x08==0x08:
|
||||||
|
GPIO.output(DISPLAY_DATA7, True)
|
||||||
|
time.sleep(E_DELAY)
|
||||||
|
GPIO.output(DISPLAY_E, True)
|
||||||
|
time.sleep(E_PULSE)
|
||||||
|
GPIO.output(DISPLAY_E, False)
|
||||||
|
time.sleep(E_DELAY)
|
||||||
|
|
||||||
|
#Beginn der Ergaenzung
|
||||||
|
main() # Initialisierung
|
||||||
|
Seiten = 4 # hier kann man die Anzahl der Seiten ändern
|
||||||
|
while True: # endlos wiederholen
|
||||||
|
Seite = 1 # von Vorne zu zählen beginnen
|
||||||
|
while Seite <= Seiten: # so lange durchlaufen bis man bei der letzten Seite angekommen ist -> dann von vorne beginnen
|
||||||
|
zeile1 = (Seite * 2) - 2 # Die obere Zeile ist das Doppelte der Seiten anzahl - 2 (!!! Array fängt bei 0 zu zählen an !!!)
|
||||||
|
zeile2 = (Seite * 2) - 1 # Die untere Zeile ist das Doppelte der Seiten anzahl - 1 (!!! Array fängt bei 0 zu zählen an !!!)
|
||||||
|
datei = open("text.txt", "r") # Datei text.txt zum Lesen oeffnen
|
||||||
|
inhalt = datei.readlines() # alle Zeile lesen und in Array "inhalt" speichern
|
||||||
|
datei.close() # Datei schliessen
|
||||||
|
oben = inhalt[zeile1] # die Richtigen Zeilen aus dem Array speichern
|
||||||
|
unten = inhalt[zeile2] # die Richtigen Zeilen aus dem Array speichern
|
||||||
|
oben = oben[:-1] # Steuerzeichen am Ende loeschen (erzeugt ein komisches Symbol (|n) am Display)
|
||||||
|
unten = unten[:-1] # Steuerzeichen am Ende loeschen
|
||||||
|
anzeige() # oben und unten anzeigen
|
||||||
|
time.sleep(2) # 2 Sekunden warten
|
||||||
|
Seite += 1 # Seite um 1 erhöhen
|
46
dygraphs.html
Normal file
46
dygraphs.html
Normal file
|
@ -0,0 +1,46 @@
|
||||||
|
<!DOCTYPE HTML>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<script type="text/javascript" src="./dygraph-combined.js"></script>
|
||||||
|
<style type="text/css">
|
||||||
|
#graphdiv {
|
||||||
|
position: absolute;
|
||||||
|
left: 10px;
|
||||||
|
right: 10px;
|
||||||
|
top: 50px;
|
||||||
|
bottom: 10px;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div id="graphdiv"></div>
|
||||||
|
<div id="Legende"></div>
|
||||||
|
|
||||||
|
<script type="text/javascript">
|
||||||
|
g2 = new Dygraph(
|
||||||
|
document.getElementById("graphdiv"),
|
||||||
|
"dygraph.csv", // Daten aus csv-Datei
|
||||||
|
{ showRoller: true, //Möglichkeit zum Runden anzeigen
|
||||||
|
animatedZooms: true,
|
||||||
|
// dateWindow: [ Date.parse("2012/09/29 12:00:00"),Date.parse("2013/11/10 12:00:00") ], //Start- und Endzeitraum
|
||||||
|
labels: ["Zeit", "Innen1", "Innen2", "Außentemperatur"],
|
||||||
|
labelsDiv: document.getElementById("Legende"), //Legende in einem bestimmten DIV anzeigen
|
||||||
|
// errorBars: true, //Standardabweichung (funktioniert nicht))
|
||||||
|
// 'Zufall': { //eigene y-Achse für Zufall
|
||||||
|
// axis: {
|
||||||
|
// }
|
||||||
|
// },
|
||||||
|
ylabel: 'Temperatur (°C)',
|
||||||
|
// y2label: 'Zufall',
|
||||||
|
// showRangeSelector: true, //Auswahlzeile anzeigen
|
||||||
|
// rangeSelectorHeight: 80
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
} // Optionen
|
||||||
|
);
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
82
export.sh
Normal file
82
export.sh
Normal file
|
@ -0,0 +1,82 @@
|
||||||
|
#!/bin/bash
|
||||||
|
PFAD="/var/www/"
|
||||||
|
a=0
|
||||||
|
Anzahl=0
|
||||||
|
Summe=0
|
||||||
|
min=$(echo "scale=3; $(grep 't=' /sys/bus/w1/devices/w1_bus_master1/10-00080277abe1/w1_slave | awk -F 't=' '{print $2}') / 1000" | bc -l) # Sowohl Minimum als auch Maximum auf die aktuelle Temperatur setzen
|
||||||
|
max=$min
|
||||||
|
if [ $1 ]
|
||||||
|
then
|
||||||
|
case "$1" in
|
||||||
|
"-d") echo "" > rohdaten.csv
|
||||||
|
rm dygraph.csv
|
||||||
|
;;
|
||||||
|
"-h") echo -e "-d csv-Datei leeren \nfür weitere Informationen siehe http://lukaswiki.onpw.de/rasp"
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
*) echo "unbekannter Parameter - Für Hilfe -h"
|
||||||
|
exit
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
fi
|
||||||
|
while true
|
||||||
|
do
|
||||||
|
#a=$(($a + $((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)
|
||||||
|
#wert2=$a
|
||||||
|
#wert2=$(cut -c 1,2,3,4 /proc/loadavg) # Load messen
|
||||||
|
#wert=$(/opt/vc/bin/vcgencmd measure_temp | cut -c 6,7,8,9) #Betriebstemberatur messen
|
||||||
|
#wert2=$(sensors |grep Core\ 0 |cut -c 18,19,20,21) #CPU-Temperatur, lm-sensors muss installiert sein, bei jedem PC anders
|
||||||
|
wert1=$(echo "scale=3; $(grep 't=' /sys/bus/w1/devices/w1_bus_master1/10-00080277abe1/w1_slave | awk -F 't=' '{print $2}') / 1000" | bc -l)
|
||||||
|
wert2=$(echo "scale=3; $(grep 't=' /sys/bus/w1/devices/w1_bus_master1/10-00080277a5db/w1_slave | awk -F 't=' '{print $2}') / 1000" | bc -l)
|
||||||
|
wert3=$(echo "scale=3; $(grep 't=' /sys/bus/w1/devices/w1_bus_master1/10-000802b4635f/w1_slave | awk -F 't=' '{print $2}') / 1000" | bc -l)
|
||||||
|
uhrzeit=$(date +%H:%M:%S)
|
||||||
|
uhrzeit_dy=$(date +%Y/%m/%d\ %H:%M:%S)
|
||||||
|
if [ "$wert1" == "-1.250" ] # manchmal gibt der Sensor "-1.250" als Wert zurück -> diese sollen gelöscht werden
|
||||||
|
then
|
||||||
|
wert1=""
|
||||||
|
fi
|
||||||
|
if [ "$wert2" == "-1.250" ]
|
||||||
|
then
|
||||||
|
wert2=""
|
||||||
|
fi
|
||||||
|
if [ "$wert3" == "-1.250" ]
|
||||||
|
then
|
||||||
|
wert3=""
|
||||||
|
fi
|
||||||
|
#Mathematische Auswertung Anfang
|
||||||
|
Summe=$(echo "$Summe + $wert1" | bc -l) # mithilfe von bc den aktuellen Wert zur Summe aller Werten dazuzählen ...
|
||||||
|
Anzahl=$(($Anzahl +1)) # ... die Anzahl um 1 erhöhen ...
|
||||||
|
MW=$(echo "scale=3;$Summe / $Anzahl" | bc -l) # ... und den Mittelwert berechnen
|
||||||
|
if [ "$(echo "$wert1 < $min" | bc -l)" = "1" ] # Falls der aktuelle Wert kleiner als das Minimum ist ...
|
||||||
|
then
|
||||||
|
min=$wert1 # ... soll er zum neuen Minimum werden
|
||||||
|
fi
|
||||||
|
if [ "$(echo "$wert1 > $max" | bc -l)" = "1" ] # Wie Minimum
|
||||||
|
then
|
||||||
|
max=$wert1
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
#Mathematische Auswertung Ende
|
||||||
|
ausgabe=${uhrzeit}\,${wert1}\,${wert2}
|
||||||
|
ausgabe_dy=${uhrzeit_dy}\,${wert1}\,${wert2}\,${wert3}
|
||||||
|
echo $ausgabe >>rohdaten.csv
|
||||||
|
echo $ausgabe_dy >>dygraph.csv
|
||||||
|
echo "$uhrzeit_dy $wert1 $MW $min $max" #Ausgabe des aktuellen Wertes im Terminal
|
||||||
|
sed "s/,/ /g" rohdaten.csv >daten_gnuplot.txt #für Gnuplot die Beistriche durch Leerzeichen ersetzen
|
||||||
|
echo "Uhrzeit:" >text.txt #Anzeige für Display
|
||||||
|
echo "$uhrzeit" >>text.txt #Anzeige für Display
|
||||||
|
echo "Temperatur 1" >>text.txt #Anzeige für Display
|
||||||
|
echo "$wert1" >>text.txt #Anzeige für Display
|
||||||
|
echo "Temperatur 2" >>text.txt #Anzeige für Display
|
||||||
|
echo "$wert2" >>text.txt #Anzeige für Display
|
||||||
|
echo "Aussentemperatur" >>text.txt #Anzeige für Display
|
||||||
|
echo "$wert3" >>text.txt #Anzeige für Display
|
||||||
|
# ./transpose.sh #anderes Skript starten, welches die Daten für Highchart vorbereitet
|
||||||
|
# gnuplot Einstellungen # Gnuplot starten
|
||||||
|
# sudo cp gnuplot.svg ${PFAD}gnuplot.svg # das generierte Bild ...
|
||||||
|
sudo cp daten_transformiert.txt ${PFAD}daten_transformiert.txt # ... und die Tabelle für Highchart in den Webordner kopieren
|
||||||
|
sudo cp dygraph.csv ${PFAD}dygraph.csv
|
||||||
|
sleep 8 # kurz warten
|
||||||
|
done
|
31
installation.sh
Normal file
31
installation.sh
Normal file
|
@ -0,0 +1,31 @@
|
||||||
|
#!/bin/bash
|
||||||
|
SKRIPTPFAD=$(pwd)
|
||||||
|
if [[ -f $(which gnuplot 2>/dev/null) ]]
|
||||||
|
then
|
||||||
|
echo "Gnuplot ist installiert" >installation.log
|
||||||
|
else
|
||||||
|
dialog --title "Gnuplot" --msgbox "Gnuplot wird im nächsten Schritt installiert. Abbrechen mit STRG+C" 80 80
|
||||||
|
sudo apt-get install gnuplot-nox >>installation.log
|
||||||
|
fi
|
||||||
|
wget http://lukaswiki.onpw.de/rasp/skripte/export.sh 2>>installation.log
|
||||||
|
wget http://lukaswiki.onpw.de/rasp/skripte/transpose.sh 2>>installation.log
|
||||||
|
wget http://lukaswiki.onpw.de/rasp/skripte/Einstellungen 2>>installation.log
|
||||||
|
chmod 755 export.sh transpose.sh
|
||||||
|
chmod 644 Einstellungen
|
||||||
|
dialog --yesno "Sollen die Dateien automatisch in ein Web-verzeichis kopiert werden?" 80 80
|
||||||
|
if [ $? == "1" ]
|
||||||
|
then
|
||||||
|
sed -i "s/sudo cp/#sudo cp/g" export.sh
|
||||||
|
else
|
||||||
|
dialog --title "Verzeichnis" --msgbox "Wo liegt das Web-verzeichis?" 80 80
|
||||||
|
dialog --dselect / 10 10 2> temp.tmp
|
||||||
|
PFAD=$(cat temp.tmp)
|
||||||
|
ZEILE="PFAD=\"$PFAD\""
|
||||||
|
sed -i 2c"$ZEILE" export.sh #2. Zeile
|
||||||
|
rm temp.tmp
|
||||||
|
cd $PFAD
|
||||||
|
sudo wget http://lukaswiki.onpw.de/rasp/javascript/highcharts.js 2>>$SKRIPTPFAD/installation.log
|
||||||
|
sudo wget http://lukaswiki.onpw.de/rasp/beispiele/highcharts.html 2>>$SKRIPTPFAD/installation.log
|
||||||
|
dialog --title "Highchart" --msgbox "Die Highchart-Dateien wurden nach $PFAD kopiert. Das Diagramm kann unter localhost/highcharts.html gefunden werden." 80 80
|
||||||
|
fi
|
||||||
|
dialog --title "Abgeschlossen" --msgbox "Die Installation ist abgeschlossen." 80 80
|
8
rand.sh
Normal file
8
rand.sh
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
a=0
|
||||||
|
while true
|
||||||
|
do
|
||||||
|
a=$(($a + $((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)
|
||||||
|
echo -ne "${a}\r" #keine neue Zeile und Steuerzeichen beachten
|
||||||
|
sleep 0.5
|
||||||
|
done
|
22
transpose.sh
Normal file
22
transpose.sh
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
#!/bin/bash
|
||||||
|
#(c) http://www.cs.waikato.ac.nz/~fracpete/programming/csv2gnuplot/
|
||||||
|
echo "Zeit LOAD Temperatur" > temp
|
||||||
|
cat daten_gnuplot.txt >> temp
|
||||||
|
cat temp | exec awk '
|
||||||
|
NR == 1 {
|
||||||
|
n = NF
|
||||||
|
for (i = 1; i <= NF; i++)
|
||||||
|
row[i] = $i
|
||||||
|
next
|
||||||
|
}
|
||||||
|
{
|
||||||
|
if (NF > n)
|
||||||
|
n = NF
|
||||||
|
for (i = 1; i <= NF; i++)
|
||||||
|
row[i] = row[i] " " $i
|
||||||
|
}
|
||||||
|
END {
|
||||||
|
for (i = 1; i <= n; i++)
|
||||||
|
print row[i]
|
||||||
|
}' > daten_transformiert.txt
|
||||||
|
rm temp
|
Reference in a new issue