Online teplomery: Porovnání verzí

Z HKfree wiki
Skočit na navigaci Skočit na vyhledávání
Řá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...  
  
poprosim jen nekoho kdo s tim vic umi, aby doplnil kresleni vice cidel do jednoho obrazku
+
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
Řádek 46: Řádek 47:
 
#!/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 70: Řádek 72:
 
cd /root/temp/digitemp-3.3.2  #kvuli zmene adresare pro spousteni digitempu (absolutni cesta mi hazi chyby, nechapu... kazdy podle sebe)
 
cd /root/temp/digitemp-3.3.2  #kvuli zmene adresare pro spousteni digitempu (absolutni cesta mi hazi chyby, nechapu... kazdy podle sebe)
  
         TEMP=`./digitemp_DS9097 -q -t0 -o"%.2C"`  #precteni hodnoty
+
         TEMP1=`./digitemp_DS9097 -q -t0 -o"%.2C"`  #precteni hodnoty prvniho cidla(2 desetinna cisla)
         $RRDTOOL update $RRD "$START:$TEMP"  #ulozeni do rrd databaze
+
        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
 
</bash>
 
</bash>
  
Řádek 77: Řádek 80:
 
<bash>
 
<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 93:
 
TEMP_GRAPH1Y="$STATS_DIR/temp1y.png"
 
TEMP_GRAPH1Y="$STATS_DIR/temp1y.png"
  
$RRDTOOL graph $TEMP_GRAPH1 \
+
$RRDTOOL graph $PLOSS_GRAPH1 \
     --title 'Teplota na pude u routeru - posledni hodina' \
+
     --title "Teplota Markova - posledni 1 hodina ($DATE)" \
 
     --start 'end-1h' \
 
     --start 'end-1h' \
 
     --end  'now-1min' \
 
     --end  'now-1min' \
Řádek 99: Řádek 103:
 
     --width=$WIDTH \
 
     --width=$WIDTH \
 
     --height=$HEIGHT \
 
     --height=$HEIGHT \
     "DEF:pl=$TEMP_STATS:teplota:AVERAGE" \
+
     "DEF:temp1=$PLOSS_STATS:teplota:AVERAGE" \
     "CDEF:mpl=pl,UN,0,pl,IF" \
+
    "DEF:temp2=$PLOSS_STATS:teplota2:AVERAGE" \
     "LINE2:mpl#ff0000:Teplota" \
+
     "CDEF:mtemp1=temp1,1,*" \
     "GPRINT:mpl:AVERAGE:prumerna teplota=%.1lf°C" \
+
    "CDEF:mtemp2=temp2,1,*" \
     "GPRINT:mpl:MAX:maximalni teplota=%.1lf°C"\
+
     "LINE2:mtemp1#ff0000:Teplota venku" \
     "GPRINT:mpl:MIN:minimalni teplota=%.1lf°C\\n"
+
    "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 $TEMP_GRAPH6 \
 
    --title 'Teplota na pude u routeru - poslednich 6 hodin' \
 
    --start 'end-6h' \
 
    --end  'now-1min' \
 
    --unit '°C' \
 
    --alt-autoscale \
 
    --vertical-label '°C' \
 
    --imgformat    'PNG' \
 
    --width=$WIDTH \
 
    --height=$HEIGHT \
 
    "DEF:pl=$TEMP_STATS:teplota:AVERAGE" \
 
    "CDEF:mpl=pl,UN,0,pl,IF" \
 
    "LINE2:mpl#ff0000:Teplota" \
 
    "GPRINT:mpl:AVERAGE:prumerna teplota=%.1lf°C" \
 
    "GPRINT:mpl:MAX:maximalni teplota=%.1lf°C"\
 
    "GPRINT:mpl:MIN:minimalni teplota=%.1lf°C\\n"
 
 
$RRDTOOL graph $TEMP_GRAPH24 \
 
    --title 'Teplota na pude u routeru - posledni den' \
 
    --start 'end-24h' \
 
    --end  'now-1min' \
 
    --unit '°C' \
 
    --alt-autoscale \
 
    --vertical-label '°C' \
 
    --imgformat    'PNG' \
 
    --width=$WIDTH \
 
    --height=$HEIGHT \
 
    "DEF:pl=$TEMP_STATS:teplota:AVERAGE" \
 
    "CDEF:mpl=pl,UN,0,pl,IF" \
 
    "LINE2:mpl#ff0000:Teplota" \
 
    "GPRINT:mpl:AVERAGE:prumerna teplota=%.1lf°C" \
 
    "GPRINT:mpl:MAX:maximalni teplota=%.1lf°C"\
 
    "GPRINT:mpl:MIN:minimalni teplota=%.1lf°C\\n"
 
 
$RRDTOOL graph $TEMP_GRAPH1W \
 
    --title 'Teplota na pude u routeru - posledni tyden' \
 
    --start 'end-1w' \
 
    --end  'now-1min' \
 
    --unit '°C' \
 
    --alt-autoscale \
 
    --vertical-label '°C' \
 
    --imgformat    'PNG' \
 
    --width=$WIDTH \
 
    --height=$HEIGHT \
 
    "DEF:pl=$TEMP_STATS:teplota:AVERAGE" \
 
    "CDEF:mpl=pl,UN,0,pl,IF" \
 
    "LINE2:mpl#ff0000:Teplota" \
 
    "GPRINT:mpl:AVERAGE:prumerna teplota=%.1lf°C" \
 
    "GPRINT:mpl:MAX:maximalni teplota=%.1lf°C"\
 
    "GPRINT:mpl:MIN:minimalni teplota=%.1lf°C\\n"
 
 
$RRDTOOL graph $TEMP_GRAPH1M \
 
    --title 'Teplota na pude u routeru - posledni mesic' \
 
    --start 'end-1m' \
 
    --end  'now-1min' \
 
    --unit '°C' \
 
    --alt-autoscale \
 
    --vertical-label '°C' \
 
    --imgformat    'PNG' \
 
    --width=$WIDTH \
 
    --height=$HEIGHT \
 
    "DEF:pl=$TEMP_STATS:teplota:AVERAGE" \
 
    "CDEF:mpl=pl,UN,0,pl,IF" \
 
    "LINE2:mpl#ff0000:Teplota" \
 
    "GPRINT:mpl:AVERAGE:prumerna teplota=%.1lf°C" \
 
    "GPRINT:mpl:MAX:maximalni teplota=%.1lf°C"\
 
    "GPRINT:mpl:MIN:minimalni teplota=%.1lf°C\\n"
 
  
$RRDTOOL graph $TEMP_GRAPH1Y \
+
$RRDTOOL graph $PLOSS_GRAPH6 \
     --title 'Teplota na pude u routeru - posledni rok' \
+
     --title "Teplota Markova - posledni 6 hodin ($DATE)" \
     --start 'end-1y' \
+
     --start 'end-6h' \       #receno do kdy zpet se maji grafy tvorit
 
     --end  'now-1min' \
 
     --end  'now-1min' \
 
     --unit '°C' \
 
     --unit '°C' \
Řádek 184: Řádek 129:
 
     --width=$WIDTH \
 
     --width=$WIDTH \
 
     --height=$HEIGHT \
 
     --height=$HEIGHT \
     "DEF:pl=$TEMP_STATS:teplota:AVERAGE" \
+
     "DEF:temp1min=$PLOSS_STATS:teplota:MIN" \
     "CDEF:mpl=pl,UN,0,pl,IF" \
+
    "DEF:temp1max=$PLOSS_STATS:teplota:MAX" \
     "LINE2:mpl#ff0000:Teplota" \
+
    "DEF:temp1avg=$PLOSS_STATS:teplota:AVERAGE" \
     "GPRINT:mpl:AVERAGE:prumerna teplota=%.1lf°C" \
+
    "DEF:temp2min=$PLOSS_STATS:teplota2:MIN" \
     "GPRINT:mpl:MAX:maximalni teplota=%.1lf°C"\
+
    "DEF:temp2max=$PLOSS_STATS:teplota2:MAX" \
     "GPRINT:mpl:MIN:minimalni teplota=%.1lf°C\\n"
+
    "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 208: Řádek 183:
 
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]

Verze z 3. 2. 2006, 13:49

Online teplomery v HKFfree

Slatina

Svinary

Kukleny

OliAP - centrum města

Labská I

Orca AP - Prazske predmesti

AP Winterova

Jak postavit teplomer

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. <bash>

  1. !/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

</bash>

Jako dalsi bude potreba skript, ktery nam bude cist hodnotu z digitempu a bude nam ji ukladat do rrd databaze <bash>

  1. !/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

</bash>

a nyni uz muzeme vesele generovat grafy <bash>

  1. !/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"
  1. 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 </bash>

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