Проект автополива грядок на основе 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 — работа с переменными