自動水やり器の制作

Fonera Simpl(fon2405e 8M)を使って自動水やりシステム器の制作をしました。Fonera Simplは以前にSPIフラッシュを換装してOpenWrtをインストールしたものを使います。今回、リセットボタンのgpioを使うのでDTSを修正して使います。

cronでシェルスクリプトを起動させて稼働させます。

#!/bin/sh

GPIO='/sys/devices/platform/gpio-leds/leds/switch1/brightness'
#TMPF='/tmp/tap.log'
#DATE=`date -I'seconds'`
MINS=$1

if [ -z "$1" ]; then
  MINS=1
elif [ "$1" -gt "3" ]; then  # MAX 3min
  MINS=5
fi

STATE=`cat $GPIO`
if [ "$STATE" -ne "0" ] ; then
  echo 0 > $GPIO
  logger -p notice -t tap "start"
#  water_control.sh &
  sleep $(( $MINS * 60 ))
fi

STATE=`cat $GPIO`
if [ "$STATE" -eq "0" ] ; then
  echo 255 > $GPIO
  logger -p notice -t tap "stop"
fi

STATE=`cat $GPIO`
if [ "$STATE" -ne "255" ] ; then
  logger -p err -t tap "tap malfunction"  
fi

さらに天気に合わせて水やりをコントロールしてみます。

#!/bin/sh

GPIO='/sys/devices/platform/gpio-leds/leds/switch1/brightness'

tap_off () {
  echo 255 > $GPIO
  logger -p notice -t tap "stop"
}

get_data () {
  DATA=`wget -q -O - 'https://api.openweathermap.org/data/2.5/onecall?lat=35.4761&lon=139.2810&units=metric&lang=en&exclude=minutely&appid=**********************'`
  TEMP=`echo $DATA | jq ".daily[0].temp.day"`
  PREC=`echo $DATA | jq ".daily[0].rain"`
}

get_data || exit

if [ "$PREC" = "null" ]; then
    PREC=0
fi

if [ `echo $TEMP'<'10 | bc` -eq "1" ] && [ `echo $PREC'>'1 | bc` -eq "1" ]; then
    sleep 30
    tap_off
elif [ `echo $TEMP'<'10 | bc` -eq "1" ] && [ `echo $PREC'<='2 | bc` -eq "1" ]; then
    sleep 45
    tap_off
elif [ `echo $TEMP'<'20 | bc` -eq "1" ] && [ `echo $PREC'>'2 | bc` -eq "1" ]; then
    sleep 45
    tap_off
elif [ `echo $TEMP'<'20 | bc` -eq "1" ] && [ `echo $PREC'<='2 | bc` -eq "1" ]; then
    sleep 60
    tap_off
elif [ `echo $TEMP'<'30 | bc` -eq "1" ] && [ `echo $PREC'>'2 | bc` -eq "1" ]; then
    sleep 60
    tap_off
fi

logger -p notice -t tap "Temp: ${TEMP}  Precipitation: $PREC"

This entry was posted in DIY, OpenWrt. Bookmark the permalink.