Online teplomery: Porovnání verzí
m |
|||
(Není zobrazeno 8 mezilehlých verzí od 6 dalších uživatelů.) | |||
Řádek 39: | Řádek 39: | ||
Asi by to nekoho mohlo zajimat, tak se pokusim sem sepsat dva, tri skripty ktery zajistuji vykreslovani hodnoty teploty do grafu... | Asi by to nekoho mohlo zajimat, tak se pokusim sem sepsat dva, tri skripty ktery zajistuji vykreslovani hodnoty teploty do grafu... | ||
− | + | Dostudoval jsem pridavani dalsich cidel do jednoho grafu, takze popisu jak na to. | |
+ | Vse je tedy staveno na dve cidla v jednom grafu. | ||
Predpokladame ze mame nainstalovan digitemp | Predpokladame ze mame nainstalovan digitemp | ||
Nejprve si vytvorime databazi rrd, je jedno kde. | Nejprve si vytvorime databazi rrd, je jedno kde. | ||
− | <bash> | + | <source lang="bash"> |
#!/bin/sh | #!/bin/sh | ||
rrdtool create teplota.rrd -s 60 \ | rrdtool create teplota.rrd -s 60 \ | ||
− | DS:teplota:GAUGE:600:U:U \ | + | DS:teplota:GAUGE:600:U:U \ #prvni cidlo |
+ | DS:teplota2:GAUGE:600:U:U \ #druhe cidlo | ||
RRA:AVERAGE:0.5:1:600 \ | RRA:AVERAGE:0.5:1:600 \ | ||
RRA:AVERAGE:0.5:6:700 \ | RRA:AVERAGE:0.5:6:700 \ | ||
Řádek 59: | Řádek 61: | ||
RRA:MAX:0.5:24:775 \ | RRA:MAX:0.5:24:775 \ | ||
RRA:MAX:0.5:288:797 | RRA:MAX:0.5:288:797 | ||
− | </ | + | </source> |
Jako dalsi bude potreba skript, ktery nam bude cist hodnotu z digitempu a bude nam ji ukladat do rrd databaze | Jako dalsi bude potreba skript, ktery nam bude cist hodnotu z digitempu a bude nam ji ukladat do rrd databaze | ||
− | <bash> | + | <source lang="bash"> |
#!/bin/sh | #!/bin/sh | ||
RRDTOOL=/usr/bin/rrdtool #cesta k rrdtoolu | RRDTOOL=/usr/bin/rrdtool #cesta k rrdtoolu | ||
Řádek 68: | Řádek 70: | ||
START=`date +%s` | START=`date +%s` | ||
− | cd /root/temp/digitemp-3.3.2 #kvuli zmene adresare pro spousteni digitempu | + | cd /root/temp/digitemp-3.3.2 #kvuli zmene adresare pro spousteni digitempu |
+ | #absolutni cesta mi hazi chyby, nechapu... kazdy podle sebe) | ||
− | + | TEMP1=`./digitemp_DS9097 -q -t0 -o"%.2C"` #precteni hodnoty prvniho cidla(2 desetinna cisla) | |
− | $RRDTOOL update $RRD "$START:$ | + | TEMP2=`./digitemp_DS9097 -q -t1 -o"%.2C"` #precteni hodnoty druheho cidla(2 desetinna cisla) |
− | </ | + | $RRDTOOL update $RRD "$START:$TEMP1:$TEMP2" #ulozeni do rrd databaze obou promennych |
+ | </source> | ||
a nyni uz muzeme vesele generovat grafy | a nyni uz muzeme vesele generovat grafy | ||
− | <bash> | + | <source lang="bash"> |
#!/bin/sh | #!/bin/sh | ||
+ | DATE=`date +%a`" "` date +%F`" "`date +%R` #promenna s datumem a casem do hlavicek grafu | ||
WIDTH=600 | WIDTH=600 | ||
HEIGHT=250 | HEIGHT=250 | ||
Řádek 89: | Řádek 94: | ||
TEMP_GRAPH1Y="$STATS_DIR/temp1y.png" | TEMP_GRAPH1Y="$STATS_DIR/temp1y.png" | ||
− | $RRDTOOL graph $ | + | $RRDTOOL graph $PLOSS_GRAPH1 \ |
− | --title | + | --title "Teplota Markova - posledni 1 hodina ($DATE)" \ |
--start 'end-1h' \ | --start 'end-1h' \ | ||
--end 'now-1min' \ | --end 'now-1min' \ | ||
Řádek 99: | Řádek 104: | ||
--width=$WIDTH \ | --width=$WIDTH \ | ||
--height=$HEIGHT \ | --height=$HEIGHT \ | ||
− | "DEF: | + | "DEF:temp1=$PLOSS_STATS:teplota:AVERAGE" \ |
− | "CDEF: | + | "DEF:temp2=$PLOSS_STATS:teplota2:AVERAGE" \ |
− | "LINE2: | + | "CDEF:mtemp1=temp1,1,*" \ |
− | "GPRINT: | + | "CDEF:mtemp2=temp2,1,*" \ |
− | "GPRINT: | + | "LINE2:mtemp1#ff0000:Teplota venku" \ |
− | "GPRINT: | + | "GPRINT:mtemp1:MIN:(min\\: %.1lf°C" \ |
+ | "GPRINT:mtemp1:AVERAGE:avg\\: %.1lf°C" \ | ||
+ | "GPRINT:mtemp1:MAX:max\\: %.1lf°C" \ | ||
+ | "GPRINT:mtemp1:LAST:current\\: %.1lf°C)\\n" \ | ||
+ | "LINE2:mtemp2#008000:Teplota puda " \ | ||
+ | "GPRINT:mtemp2:MIN:(min\\: %.1lf°C" \ | ||
+ | "GPRINT:mtemp2:AVERAGE:avg\\: %.1lf°C" \ | ||
+ | "GPRINT:mtemp2:MAX:max\\: %.1lf°C" \ | ||
+ | "GPRINT:mtemp2:LAST:current\\: %.1lf°C)\\n" | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | $RRDTOOL graph $ | + | $RRDTOOL graph $PLOSS_GRAPH6 \ |
− | --title | + | --title "Teplota Markova - posledni 6 hodin ($DATE)" \ |
− | --start 'end- | + | --start 'end-6h' \ #receno do kdy zpet se maji grafy tvorit |
--end 'now-1min' \ | --end 'now-1min' \ | ||
--unit '°C' \ | --unit '°C' \ | ||
Řádek 184: | Řádek 130: | ||
--width=$WIDTH \ | --width=$WIDTH \ | ||
--height=$HEIGHT \ | --height=$HEIGHT \ | ||
− | "DEF: | + | "DEF:temp1min=$PLOSS_STATS:teplota:MIN" \ |
− | "CDEF: | + | "DEF:temp1max=$PLOSS_STATS:teplota:MAX" \ |
− | "LINE2: | + | "DEF:temp1avg=$PLOSS_STATS:teplota:AVERAGE" \ |
− | "GPRINT: | + | "DEF:temp2min=$PLOSS_STATS:teplota2:MIN" \ |
− | "GPRINT: | + | "DEF:temp2max=$PLOSS_STATS:teplota2:MAX" \ |
− | "GPRINT: | + | "DEF:temp2avg=$PLOSS_STATS:teplota2:AVERAGE" \ |
+ | "CDEF:mtemp1min=temp1min,1,*" \ | ||
+ | "CDEF:mtemp1max=temp1max,1,*" \ | ||
+ | "CDEF:mtemp1avg=temp1avg,1,*" \ | ||
+ | "CDEF:mtemp2min=temp2min,1,*" \ | ||
+ | "CDEF:mtemp2max=temp2max,1,*" \ | ||
+ | "CDEF:mtemp2avg=temp2avg,1,*" \ | ||
+ | "CDEF:mtemp1mindraw=mtemp1min,1,*" \ | ||
+ | "CDEF:mtemp1maxdraw=mtemp1max,1,*" \ | ||
+ | "CDEF:mtemp1avgdraw=mtemp1avg,1,*" \ | ||
+ | "CDEF:mtemp2mindraw=mtemp2min,1,*" \ | ||
+ | "CDEF:mtemp2maxdraw=mtemp2max,1,*" \ | ||
+ | "CDEF:mtemp2avgdraw=mtemp2avg,1,*" \ | ||
+ | "AREA:mtemp1maxdraw#ffc0c0:\\g" \ | ||
+ | "LINE1:mtemp1maxdraw#a0a0a0:\\g" \ | ||
+ | "AREA:mtemp1mindraw#ffffff:\\g" \ | ||
+ | "LINE1:mtemp1mindraw#a0a0a0:\\g" \ | ||
+ | "LINE2:mtemp1avgdraw#ff0000:Teplota venku" \ | ||
+ | "GPRINT:mtemp1min:MIN:(min\\: %.1lf°C" \ | ||
+ | "GPRINT:mtemp1avg:AVERAGE:avg\\:%.1lf°C" \ | ||
+ | "GPRINT:mtemp1max:MAX:max\\: %.1lf°C)\\n" \ | ||
+ | "AREA:mtemp2maxdraw#c0ffc0:\\g" \ | ||
+ | "LINE1:mtemp2maxdraw#a0a0a0:\\g" \ | ||
+ | "AREA:mtemp2mindraw#ffffff:\\g" \ | ||
+ | "LINE1:mtemp2mindraw#a0a0a0:\\g" \ | ||
+ | "LINE2:mtemp2avgdraw#008000:Teplota puda " \ | ||
+ | "GPRINT:mtemp2min:MIN:(min\\: %.1lf°C" \ | ||
+ | "GPRINT:mtemp2avg:AVERAGE:avg\\:%.1lf°C" \ | ||
+ | "GPRINT:mtemp2max:MAX:max\\: %.1lf°C)\\n" | ||
+ | #pro vice grafu napr 24h, 1week, 1month, 1year staci rozkopirovat a | ||
+ | #upravit hlavicku grafu a do kdy se maji grafy tvorit. | ||
/usr/bin/convert -geometry 20% $STATS_DIR/temp1w.png $STATS_DIR/thumb-temp1w.png #zmenseni obrazku pro nahled | /usr/bin/convert -geometry 20% $STATS_DIR/temp1w.png $STATS_DIR/thumb-temp1w.png #zmenseni obrazku pro nahled | ||
Řádek 199: | Řádek 175: | ||
cp $STATS_DIR/temp1m.png /var/www/hotsanic/teplota | cp $STATS_DIR/temp1m.png /var/www/hotsanic/teplota | ||
cp $STATS_DIR/temp1y.png /var/www/hotsanic/teplota | cp $STATS_DIR/temp1y.png /var/www/hotsanic/teplota | ||
− | </ | + | </source> |
Ted uz jen podle sveho gusta uvlozit do crontab patricne radky | Ted uz jen podle sveho gusta uvlozit do crontab patricne radky | ||
Řádek 208: | Řádek 184: | ||
Hodnoty jdou do minusu uplne v pohode. | Hodnoty jdou do minusu uplne v pohode. | ||
Uvitam dalsi vylepseni od ostatnich. | Uvitam dalsi vylepseni od ostatnich. | ||
+ | Jedna vec, ktera se asi neda odstranit je ze kdyz spadne teplota pod nulu, graf se nakresli, ale "oblak" minimalnich a maximalnich nodnot neni cerveny ci zeleny ale bily.. je to proto, ze AREA se bere vzdy k ose "0" a pokud je definovano ze max AREA je cervena a MIN area je bila, je rozdil mezi MAX/MIN cerveny a pod MIN je oblast bila... ale pokud padne hodnota do zaporu, pomery se otoci a je vse bile... Viz moje grafy na Markovce [http://router.ronja.kukleny.hkfree.org/hotsanic/teplota/teplota.html Grafy Markova] |
Aktuální verze z 9. 2. 2013, 16:35
Online teplomery v HKFfree
Slatina
Svinary
Kukleny
OliAP - centrum města
Labská I
Orca AP - Prazske predmesti
AP Winterova
Jak postavit teplomer
- http://www.root.cz/clanky/nejjednodussi-online-teplomer-2/
- http://snet.iba.cz/info/teplomer/navod/
- http://sweb.cz/trifid2/teplomer/index.htm
soucastky sezenete vsude mozne (GES apod) cca za 20-40Kc, cidla se daji objednat jako vzorky zdarma na http://www.maxim-ic.com/ (chce to zvladat aspon zaklady anglictiny)
Jak vypisovat hodnoty do grafu (rrdtool)
Asi by to nekoho mohlo zajimat, tak se pokusim sem sepsat dva, tri skripty ktery zajistuji vykreslovani hodnoty teploty do grafu...
Dostudoval jsem pridavani dalsich cidel do jednoho grafu, takze popisu jak na to. Vse je tedy staveno na dve cidla v jednom grafu.
Predpokladame ze mame nainstalovan digitemp Nejprve si vytvorime databazi rrd, je jedno kde.
#!/bin/sh
rrdtool create teplota.rrd -s 60 \
DS:teplota:GAUGE:600:U:U \ #prvni cidlo
DS:teplota2:GAUGE:600:U:U \ #druhe cidlo
RRA:AVERAGE:0.5:1:600 \
RRA:AVERAGE:0.5:6:700 \
RRA:AVERAGE:0.5:24:775 \
RRA:AVERAGE:0.5:288:797 \
RRA:MIN:0.5:1:600 \
RRA:MIN:0.5:6:700 \
RRA:MIN:0.5:24:775 \
RRA:MIN:0.5:288:797 \
RRA:MAX:0.5:1:600 \
RRA:MAX:0.5:6:700 \
RRA:MAX:0.5:24:775 \
RRA:MAX:0.5:288:797
Jako dalsi bude potreba skript, ktery nam bude cist hodnotu z digitempu a bude nam ji ukladat do rrd databaze
#!/bin/sh
RRDTOOL=/usr/bin/rrdtool #cesta k rrdtoolu
RRD=/root/temp/digitemp-3.3.2/rrd/teplota.rrd #cesta k databazovemu souboru
START=`date +%s`
cd /root/temp/digitemp-3.3.2 #kvuli zmene adresare pro spousteni digitempu
#absolutni cesta mi hazi chyby, nechapu... kazdy podle sebe)
TEMP1=`./digitemp_DS9097 -q -t0 -o"%.2C"` #precteni hodnoty prvniho cidla(2 desetinna cisla)
TEMP2=`./digitemp_DS9097 -q -t1 -o"%.2C"` #precteni hodnoty druheho cidla(2 desetinna cisla)
$RRDTOOL update $RRD "$START:$TEMP1:$TEMP2" #ulozeni do rrd databaze obou promennych
a nyni uz muzeme vesele generovat grafy
#!/bin/sh
DATE=`date +%a`" "` date +%F`" "`date +%R` #promenna s datumem a casem do hlavicek grafu
WIDTH=600
HEIGHT=250
RRDTOOL=/usr/bin/rrdtool
STATS_DIR=/root/temp/digitemp-3.3.2/rrd
TEMP_STATS="$STATS_DIR/teplota.rrd"
TEMP_GRAPH1="$STATS_DIR/temp1h.png"
TEMP_GRAPH6="$STATS_DIR/temp6h.png"
TEMP_GRAPH24="$STATS_DIR/temp1d.png"
TEMP_GRAPH1W="$STATS_DIR/temp1w.png"
TEMP_GRAPH1M="$STATS_DIR/temp1m.png"
TEMP_GRAPH1Y="$STATS_DIR/temp1y.png"
$RRDTOOL graph $PLOSS_GRAPH1 \
--title "Teplota Markova - posledni 1 hodina ($DATE)" \
--start 'end-1h' \
--end 'now-1min' \
--unit '°C' \
--alt-autoscale \
--vertical-label '°C' \
--imgformat 'PNG' \
--width=$WIDTH \
--height=$HEIGHT \
"DEF:temp1=$PLOSS_STATS:teplota:AVERAGE" \
"DEF:temp2=$PLOSS_STATS:teplota2:AVERAGE" \
"CDEF:mtemp1=temp1,1,*" \
"CDEF:mtemp2=temp2,1,*" \
"LINE2:mtemp1#ff0000:Teplota venku" \
"GPRINT:mtemp1:MIN:(min\\: %.1lf°C" \
"GPRINT:mtemp1:AVERAGE:avg\\: %.1lf°C" \
"GPRINT:mtemp1:MAX:max\\: %.1lf°C" \
"GPRINT:mtemp1:LAST:current\\: %.1lf°C)\\n" \
"LINE2:mtemp2#008000:Teplota puda " \
"GPRINT:mtemp2:MIN:(min\\: %.1lf°C" \
"GPRINT:mtemp2:AVERAGE:avg\\: %.1lf°C" \
"GPRINT:mtemp2:MAX:max\\: %.1lf°C" \
"GPRINT:mtemp2:LAST:current\\: %.1lf°C)\\n"
$RRDTOOL graph $PLOSS_GRAPH6 \
--title "Teplota Markova - posledni 6 hodin ($DATE)" \
--start 'end-6h' \ #receno do kdy zpet se maji grafy tvorit
--end 'now-1min' \
--unit '°C' \
--alt-autoscale \
--vertical-label '°C' \
--imgformat 'PNG' \
--width=$WIDTH \
--height=$HEIGHT \
"DEF:temp1min=$PLOSS_STATS:teplota:MIN" \
"DEF:temp1max=$PLOSS_STATS:teplota:MAX" \
"DEF:temp1avg=$PLOSS_STATS:teplota:AVERAGE" \
"DEF:temp2min=$PLOSS_STATS:teplota2:MIN" \
"DEF:temp2max=$PLOSS_STATS:teplota2:MAX" \
"DEF:temp2avg=$PLOSS_STATS:teplota2:AVERAGE" \
"CDEF:mtemp1min=temp1min,1,*" \
"CDEF:mtemp1max=temp1max,1,*" \
"CDEF:mtemp1avg=temp1avg,1,*" \
"CDEF:mtemp2min=temp2min,1,*" \
"CDEF:mtemp2max=temp2max,1,*" \
"CDEF:mtemp2avg=temp2avg,1,*" \
"CDEF:mtemp1mindraw=mtemp1min,1,*" \
"CDEF:mtemp1maxdraw=mtemp1max,1,*" \
"CDEF:mtemp1avgdraw=mtemp1avg,1,*" \
"CDEF:mtemp2mindraw=mtemp2min,1,*" \
"CDEF:mtemp2maxdraw=mtemp2max,1,*" \
"CDEF:mtemp2avgdraw=mtemp2avg,1,*" \
"AREA:mtemp1maxdraw#ffc0c0:\\g" \
"LINE1:mtemp1maxdraw#a0a0a0:\\g" \
"AREA:mtemp1mindraw#ffffff:\\g" \
"LINE1:mtemp1mindraw#a0a0a0:\\g" \
"LINE2:mtemp1avgdraw#ff0000:Teplota venku" \
"GPRINT:mtemp1min:MIN:(min\\: %.1lf°C" \
"GPRINT:mtemp1avg:AVERAGE:avg\\:%.1lf°C" \
"GPRINT:mtemp1max:MAX:max\\: %.1lf°C)\\n" \
"AREA:mtemp2maxdraw#c0ffc0:\\g" \
"LINE1:mtemp2maxdraw#a0a0a0:\\g" \
"AREA:mtemp2mindraw#ffffff:\\g" \
"LINE1:mtemp2mindraw#a0a0a0:\\g" \
"LINE2:mtemp2avgdraw#008000:Teplota puda " \
"GPRINT:mtemp2min:MIN:(min\\: %.1lf°C" \
"GPRINT:mtemp2avg:AVERAGE:avg\\:%.1lf°C" \
"GPRINT:mtemp2max:MAX:max\\: %.1lf°C)\\n"
#pro vice grafu napr 24h, 1week, 1month, 1year staci rozkopirovat a
#upravit hlavicku grafu a do kdy se maji grafy tvorit.
/usr/bin/convert -geometry 20% $STATS_DIR/temp1w.png $STATS_DIR/thumb-temp1w.png #zmenseni obrazku pro nahled
cp $STATS_DIR/thumb-temp1w.png /var/www/hotsanic/teplota
cp $STATS_DIR/temp1h.png /var/www/hotsanic/teplota
cp $STATS_DIR/temp6h.png /var/www/hotsanic/teplota
cp $STATS_DIR/temp1d.png /var/www/hotsanic/teplota
cp $STATS_DIR/temp1w.png /var/www/hotsanic/teplota
cp $STATS_DIR/temp1m.png /var/www/hotsanic/teplota
cp $STATS_DIR/temp1y.png /var/www/hotsanic/teplota
Ted uz jen podle sveho gusta uvlozit do crontab patricne radky
*/1 * * * * root /root/temp/digitemp-3.3.2/temp.sh */10 * * * * root /root/temp/digitemp-3.3.2/rrd/diagrams.sh
Hodnoty jdou do minusu uplne v pohode. Uvitam dalsi vylepseni od ostatnich. Jedna vec, ktera se asi neda odstranit je ze kdyz spadne teplota pod nulu, graf se nakresli, ale "oblak" minimalnich a maximalnich nodnot neni cerveny ci zeleny ale bily.. je to proto, ze AREA se bere vzdy k ose "0" a pokud je definovano ze max AREA je cervena a MIN area je bila, je rozdil mezi MAX/MIN cerveny a pod MIN je oblast bila... ale pokud padne hodnota do zaporu, pomery se otoci a je vse bile... Viz moje grafy na Markovce Grafy Markova