Архив за день: 2014-05-24

Raspberry Pi: автоматический полив грядок (не закончено)

Проект автополива  грядок на основе Raspberry PI, пока не закончен.

Имеется в наличии

Бак водонапорный к нему подключены 2 датчика верхний (DL1) и нижний уровень (D2) , реле полива (RL1) , насос из колодца (NS1)

Алгоритм работы 

1. Запуск полива по времени через кронтаб в 21.00

Если бак не пустой ( реле нижний уровень включено ) то включить реле полива

Поливать до тех пор пока бак не опустеет ( реле нежнего уровня выключено)

Выключить реле полива

2. Наполнить водонапорный бак

Включить насос

Насос работае до тех пор пока не выключиться реле на водонапорном баке ( реле верхнего уровня)

Завершить работу насоса

3. Ждать следующего включения в 21.00

Управление портами

Установка высокого и низкого уровней для порта, настроенного на выход выполняется так:

$ echo 1 > /sys/class/gpio/gpioXX/value
$ echo 0 > /sys/class/gpio/gpioXX/value

Определение состояние порта, настроенного на вход делается так:

$ cat /sys/class/gpio/gpioXX/value

Исходный код скрипта, запускающего автополив

#!/bin/bash 
DL1="..."    #подставить /sys/class/gpio/gpioXX/value 
D2="..."    #подставить /sys/class/gpio/gpioXX/value 
RL1="..."    #подставить /sys/class/gpio/gpioXX/value 
NS1="..."    #подставить /sys/class/gpio/gpioXX/value 
 
#1 
while ["$(cat $D2)" != '0'] ; do #Поливать до тех пор пока бак не опустеет ( реле нежнего уровня выключено) 
    echo 1 > $RL1            #включить реле полива 
    sleep 5     #через сколько секунд повторить проверку 
done 
echo 0 > $RL1 #Выключить реле полива 
 
#2 
echo 1 > $NS1        #Включить насос 
while ["$(cat $DL1)" != '0'] ; do #не выключиться реле на водонапорном баке ( реле верхнего уровня) 
    sleep 5     #через сколько секунд повторить проверку 
done 
echo 0 > $NS1    #Завершить работу насоса 
 
#3 конец, Ждать следующего включения в 21.00

Для справки:
http://eddnet.org/?p=1311 — условия
http://tldp.org/HOWTO/Bash-Prog-Intro-HOWTO-7.html — циклы
http://younglinux.info/bash/commands.php — sleep
http://www.bash-scripting.ru/abs/chunks/ch04.html — работа с переменными