Temperaturvisning på hemsida (Raspberry-Pi)

Berätta om dina pågående projekt.
Ranstam
Inlägg: 456
Blev medlem: 17 november 2007, 21:20:16
Ort: LUND

Temperaturvisning på hemsida (Raspberry-Pi)

Inlägg av Ranstam »

Efter ett par dagars kopplande och skrivande har jag fått ihop en hemsida med en graf över temperaturen utomhus/inomhus. Jag håller på att trixa lite med fler funktioner, tillexempel att kunna välja tidsspann för visningen.

Hårdvara: Raspberry Pi + 2st ds18b20 tempgivare (kopplade enligt denna sida http://www.cl.cam.ac.uk/freshers/raspbe ... mperature/ )
Mjukvara: Apache2, Gnuplot, Python

Det hela fungerar så här:

1. Python programmet läser av temperaturen och skriver den till textfilen "logg.txt" var 5.e minut, värdena läggs till längst ner på filen med en "timestamp", därefter körs ett Gnuplot-script
2. Gnuplot gör en bildfil i WWW katalogen, som index.html visar.

Det färdiga resultatet ser ut så här:

Bild

Pythonprogrammet

Kod: Markera allt

import datetime;
import time;
import commands

#läs givare nummer 1
def readone():
        tfile = open("/sys/bus/w1/devices/28-0000040db5a9/w1_slave")
        text = tfile.read()
        tfile.close()
        secondline = text.split("\n")[1]
        temperaturedata = secondline.split(" ")[9]
        temperature = float(temperaturedata[2:])
        temperature = temperature / 1000
        return(temperature)

#läs givare nummer två
def readtwo():
        tfile = open("/sys/bus/w1/devices/28-0000040de8fc/w1_slave")
        text = tfile.read()
        tfile.close()
        secondline = text.split("\n")[1]
        temperaturedata = secondline.split(" ")[9]
        temperature = float(temperaturedata[2:])
        temperature = temperature / 1000
        return(temperature)

#läs in aktuell datum och tid, samt ta bort microsekunderna
def getdate():
        date = datetime.datetime.now()
        return(unicode(date.replace(microsecond=0)))

#skriv värdena från temperaturgivarna och tidsstämpeln till en textfil, felvärde på -0.062 tas bort
def logg():
        file = open("logg.txt", "a")
        file.write(str(getdate()))
        file.write(" ")
        if readone() != -0.062:
                file.write(str(readone()))
                file.write(" ")
        else:
                file.write(" ")
        if readtwo() != -0.062:
                file.write(str(readtwo()))
                file.write("\n")
        else:
                file.write("\n")


def main():

        while 1 > 0:
                time.sleep(297) #vänta i 297s(ca 5min)
                print readone()
                print readtwo()
                #kör gnuplot scriptet för att generera bilden
                commands.getstatusoutput('gnuplot logg.pg')
                logg();

main();
Gnuplot scriptet:

Kod: Markera allt

#!/usr/bin/gnuplot
reset
set terminal png size 1250,700
set object 1 rectangle from screen 0,0 to screen 1,1 fillcolor rgb"#E6E6FA" behind

set output '/var/www/bild.png'
set multiplot

set xdata time
set timefmt "%Y-%m-%d %H:%M:%S"
set format x "%H:%M\n%d/%m"
set xlabel "Timme/datum"

set ylabel "Inomhustemperatur"
set yrange [15:28]

set y2label "Utomhustemperatur"
set y2range [-20:10]
set y2tics nomirror
set y2tics

set title "Temperatur"
set key reverse Left outside
set grid

set style data lines

plot "logg.txt" using 1:3 axes x1y1 lw 3 title "inomhus", "" using 1:4 axes x1y2 lw 3 title "utomhus"#
logg.txt är uppbyggd på detta sätt:

Kod: Markera allt

2013-01-24 19:22:59 23.75 -11.187
2013-01-24 19:28:01 23.687 -11.562
2013-01-24 19:33:04 23.625 -11.312
2013-01-24 19:38:06 23.687 -11.687
2013-01-24 19:43:09 23.687 -11.75
2013-01-24 19:48:11 23.687 -11.5
2013-01-24 19:53:14 23.687 -11.875
2013-01-24 19:58:16 23.625 -12.0
2013-01-24 20:03:19 23.562 -11.812
2013-01-24 20:08:21 23.687 -11.875
2013-01-24 20:13:24 23.812 -12.187
2013-01-24 20:18:26 23.687 -12.375
2013-01-24 20:23:29 23.5 -12.625
2013-01-24 20:28:32 23.625 -12.25

RoPa
Inlägg: 630
Blev medlem: 13 januari 2006, 10:32:06

Re: Temperaturvisning på hemsida (Raspberry-Pi)

Inlägg av RoPa »

Snyggt! :tumupp:

Har haft fundering på att göra en energi logger, mäta temp ute och inne som du men även räkna pulser från elmätaren och framledningstemperatur från pannan. Har ett långt framskridet PIC projekt på detta men där stannade det på att hitta ett lämpligt sätt att spara all data och att sedan få över det till en dator (har ett I2C prom som mellanlager och kan där regelbundet hämta data med xmodem överföring till datorn).

Detta gav mig inspiration! :)

En räknare för pulser måste dock till, var inte så svårt med PIC...
blueint
Inlägg: 23238
Blev medlem: 4 juli 2006, 19:26:11
Kontakt:

Re: Temperaturvisning på hemsida (Raspberry-Pi)

Inlägg av blueint »

Tog mig friheten att göra en sida om Gnuplot med din exempelkod:
http://elektronikforumet.com/wiki/index.php/Gnuplot
jens75
Inlägg: 167
Blev medlem: 17 oktober 2011, 23:49:36
Ort: Skåne

Re: Temperaturvisning på hemsida (Raspberry-Pi)

Inlägg av jens75 »

Jag håller också på att pilla med en sida för temperaturer och elförbrukning. Jag skulle vilja skapa en ögonblicksbild över mitt system och sedan "superimposa" temperaturer och elförbrukning. Någonting i stil med det som görs på husdata.se. Någon som vet något lämpligt linuxbasetat verktyg för detta?

Bild
blueint
Inlägg: 23238
Blev medlem: 4 juli 2006, 19:26:11
Kontakt:

Re: Temperaturvisning på hemsida (Raspberry-Pi)

Inlägg av blueint »

Tcl/Tk?

Finns en del X11 moduler till olika skriptspråk också.
henkebus
Inlägg: 15
Blev medlem: 25 augusti 2008, 09:05:43
Ort: Partille

Re: Temperaturvisning på hemsida (Raspberry-Pi)

Inlägg av henkebus »

Hej

För att rita grafer kan jag mycket varmt rekommendera flot. Det är ett javascript biblioteket som tillsammans med jquery blir mycket kraftfullt för att göra dynamiska grafer på html sidor. Går att göra mycket skoj dynamsikt!

Jag har precis själv skaffat en Raspberry PI för att göra liknande projekt som ni, men då jag är mer av en mjukvarukille så kan vi säkert hjälpa varandra.

jens75: Jag skulle göra det direkt i html sidan med hjälp av javascript. Det är ganska enkelt att ha en bild som bakgrund och dynamiskt lägga på innehåll ovanpå med rätt siffror/grafer.

Mvh Henrik
Användarvisningsbild
adent
Inlägg: 4242
Blev medlem: 27 november 2008, 22:56:23
Ort: Utanför Jönköping
Kontakt:

Re: Temperaturvisning på hemsida (Raspberry-Pi)

Inlägg av adent »

Själv har jag använt jqplot som är ett "plugin" till jquery (javascript) det också och är nöjd med det.

Har kört det för att generera diagram på elförbrukning. Det smidiga är att det blir folks webläsare som
får göra det tunga jobbet, inte servern, den bara skickar datat webbläsaren efterfrågar.

MVH: Mikael
larky
Inlägg: 1134
Blev medlem: 7 mars 2007, 07:54:18
Ort: Skellefteå
Kontakt:

Re: Temperaturvisning på hemsida (Raspberry-Pi)

Inlägg av larky »

Jag använde tidigare convert, en del av ImageMagick.

Det är bara en del pill att prova sig fram med koordinaterna för textens placering.

Från mitt script
#rita bilden
/usr/bin/convert -pointsize 12 -draw "text 423,183 '$kbin' " -draw "text 458,183 '$kbut' " /var/www/html/img/tempoversikt.png /var/www/html/img/tempoversikt.png
sodjan
EF Sponsor
Inlägg: 43236
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Temperaturvisning på hemsida (Raspberry-Pi)

Inlägg av sodjan »

> För att rita grafer kan jag mycket varmt rekommendera flot.

När det gäller HTML5/canvas baserade prylar (som flot är) så
har jag labbat en del med "http://www.rgraph.net/".
En demo från min server som ska via två "diagram"
om man har en HTML5/canvas browser:
http://jescab2.dyndns.org/html_test/basic.html

I princip väldigt likt flot rent tekniskt, mest tycke och smak.
Det verkar som att RGraph har lagt lite mer jobb på utseendet.
blueint
Inlägg: 23238
Blev medlem: 4 juli 2006, 19:26:11
Kontakt:

Re: Temperaturvisning på hemsida (Raspberry-Pi)

Inlägg av blueint »

Slår ett slag för Scalable Vector Graphics.. ;)
sodjan
EF Sponsor
Inlägg: 43236
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Temperaturvisning på hemsida (Raspberry-Pi)

Inlägg av sodjan »

Äpplen och päron. SVG i sig skapar ingen "affärsgrafik" som t.ex flot eller RGraph.
Dessutom är SVG ett filformat, finessen med t.ex flot och RGraph är att
"bilderna" skapas dynamiskt vid visningen, inga filer behöver lagras.
blueint
Inlägg: 23238
Blev medlem: 4 juli 2006, 19:26:11
Kontakt:

Re: Temperaturvisning på hemsida (Raspberry-Pi)

Inlägg av blueint »

Bildfiler kan genereras direkt vid CGI anrop mm och åka direkt till webbläsaren utan någon lagring övh.
sodjan
EF Sponsor
Inlägg: 43236
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Temperaturvisning på hemsida (Raspberry-Pi)

Inlägg av sodjan »

Fortfarande mycket mer serverjobb än då rådata skickas
till browsern och "bilden" skapas där. Dessutom behöver
man lägga till något för att skapa själva "affärsgrafiken".

Fördelarna med SVG är då man vill ha server-lagrade filer
som dessutom ska vara skalbara utan förluster i browsern.
blueint
Inlägg: 23238
Blev medlem: 4 juli 2006, 19:26:11
Kontakt:

Re: Temperaturvisning på hemsida (Raspberry-Pi)

Inlägg av blueint »

Nackdelen med läsarrenderad grafik är att de ofta är inkompatibla mellan webbläsare. Det som fungerar på en, fungerar inte på en annan.
sodjan
EF Sponsor
Inlägg: 43236
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Temperaturvisning på hemsida (Raspberry-Pi)

Inlägg av sodjan »

Absolut!
Just canvas hantering förutsätter HTML5 stöd inkl canvas delen.
Nu så tror jag att problemen med inkompatibla browsers har minskat
ganska radikalt under senaste åren. T.ex HTML5 har en mer strikt
och genomarbetad standard.
Skriv svar