tis 20 jan 2009, 19:17#48224
Hej på er alla. Mitt första inlägg på skogsforum!
Kör också med owfs, har gjort det sedan vintern -05 - -06. Har en pc i närnätet här hemma. Hårdvaran är en Pentium 166Mhz med 32 MB ram. Kör med Debian Linux utan fönstersystem. Har en 'dubbelpanna' med skilda rök-kanaler för ved och oljebrännare.
Mäter även tempen på rökgaserna av veden. Behövs ett termoelement till det och en 1-wire givare av 30. familjen. De övriga är givare typ DS1820, eller nåt ditåt. Var faktiskt den förste att på riktigt köra ett termoelement i en 1-wire bus med owfs. Paul Alfille som driver sajten
http://www.owfs.org och som är mannen bakom owfs hade bara programmerat utgående från specifikationerna och lade ut koden på nätet. Blev lite konstiga mätresultat till en början, men efter lite fixningar fick vi allt att stämma.
Avläser varje givare 1 gång i minuten och dumpar resultatet i en textfil. Tar alltid en ssh session till pc:n i källarn och kör 'tail' programmet på filen medan jag eldar och råkar sitta vid arbetsdatorn. Naturligtvis har vi också en skärm nere. Såhär ser filen ut:
29.1 272.9 74.5 47.9 46.8 00.0 2009-01-20 18:50:00
29.1 273.1 74.4 48.0 45.9 00.0 2009-01-20 18:51:00
29.1 276.7 74.4 47.9 45.3 00.0 2009-01-20 18:52:00
29.1 272.7 74.4 48.0 45.1 00.0 2009-01-20 18:53:00
29.1 272.5 74.4 48.0 45.1 00.0 2009-01-20 18:54:00
Från vänster är talena:
'cold junction' för termoelementet, rökgaser, accumulatorn uppe, accumulatorn nere, röret från pannan till accun, röret från accun till pannan (är kass för tillfället), datum och klockslag.
Kör upp owserver, owfs och logger programmet i 'initscripts' så de borde starta upp när pc:n gör det. Till sist ännu loggerprogrammet, ett litet shellskript gjort av undertecknad och ska köras i bash. Ojoj vad tekniskt detta blev, nu är man väl stämplad som datanörd ;-)
Ha det bra.
Antti
#!/bin/sh
# continuously monitor temperatures in a heating
# system
# 30.7CEC42100000 = thermocouple for smokegases
# 10.0DA6AA000800 = water tank upper
# 10.BBA4AA000800 = water tank lower
# 10.9061AA000800 = pipe from furnace to water tank
# 10.6D99AA000800 = pipe from water tank to furnace
# param 1 number to normalize
# param 2 desired length of integer part
normalize () {
# get parameter name
name=\$"$1"
# get value for parameter name
temp=`eval "expr \"$name\" "`
# temp=.2
# round reading to one decimal
temp=$(printf "%.1f" $temp)
len=`expr length $temp`
case "$len" in
"3" )
case "$2" in
"2" )
temp=`echo "0"$temp`
;;
"3" )
temp=`echo "00"$temp`
;;
esac
;;
"4" )
case "$2" in
"3" )
temp=`echo "0"$temp`
;;
esac
;;
esac
# assign value to parameter
eval "$1=$temp"
}
# run only at seconds 00
# find out when next time to run is
curr=$(printf "%s.%.2s\n" $(date +%S) $(date +%N))
FILE="/root/temps.txt"
# echo "curr $curr"
sleep $(echo 60-$curr|bc)
while [ true ]
do
# initialize variables
d=$(date +%F' '%X)
read tc </mnt/1-wire/uncached/30.7CEC42100000/typeK/temperature
read tc_coldj </mnt/1-wire/30.7CEC42100000/temperature
read tank_up </mnt/1-wire/uncached/10.0DA6AA000800/temperature
read tank_down </mnt/1-wire/uncached/10.BBA4AA000800/temperature
read pipe_f2t </mnt/1-wire/uncached/10.9061AA000800/temperature
read pipe_t2f </mnt/1-wire/uncached/10.6D99AA000800/temperature
# apply formatting
normalize tc 3
normalize tc_coldj 2
normalize tank_up 2
normalize tank_down 2
normalize pipe_f2t 2
normalize pipe_t2f 2
# output
echo "$tc_coldj $tc $tank_up $tank_down $pipe_f2t $pipe_t2f $d" >> $FILE
curr=$(printf "%s.%.2s\n" $(date +%S) $(date +%N))
sleep $(echo 60-$curr|bc)
done
exit 0
Rottne Blondin 750 RD, Valmet CK med Pika 36, Hva 550 XPG, Hva 543 XP, Hva 545 FX, HVA 345 FX