#!/bin/bash die() { echo >&2 echo ${1:-} >&2 exit 1 } OWFS=/etc/owfs cd /$OWFS/temperature for i in * do temp=`cat "$i/temperature"` || continue temp=`echo $temp | sed 's/ *//'` [[ $temp =~ ^[0-9\ .-]*$ ]] || die "$temp not clean" if [ $temp = 185 ]; then echo "$i is 185, likely bad temp, check sensor if it happens consistantly" >&2 continue fi if [[ $temp == 31.1 && "$i" =~ UV ]]; then #echo "$i is 31.1, which means missing device for a UV sensor" >&2 continue fi if [[ $temp == 31.1 && "$i" =~ Roof ]]; then #echo "$i is 31.1, which means missing device for a UV sensor" >&2 continue fi line=$(echo "`date '+%Y/%m/%d %H:%M:%S'` $i F: $temp") # this trick relies on you having a temperature link for all those # sensors and if value=`cat "$OWFS/humidity/$i/humidity" 2>/dev/null`; then [[ $value =~ ^[0-9\ .-]*$ ]] || die "$value not clean" value=`echo $value | sed 's/ *//'` echo "$line H: ${value}%" elif value=`cat "$OWFS/uvi/$i/UVI/UVI" 2>/dev/null`; then [[ $value =~ ^[0-9\ .-]*$ ]] || die "$value not clean" value=`echo $value | sed 's/ *//'` echo "$line U: ${value}" elif value=`cat "$OWFS/moisture/$i/current" 2>/dev/null`; then [[ $value =~ ^[0-9\ .-]*$ ]] || die "$value not clean" value=`echo $value | sed 's/ *//'` # 2010/07/08 18:34:04 35 Front_Lawn F: 32 M: 0 if [ $value = 0 ]; then echo "moisture sensor needs to be reset/hub power cycled (got $line $value)" >&2 continue fi echo "$line M: ${value}" else echo "$line" continue fi done exit 0