Схема: Raspberry Pi 3 Model B (+Relay Board) ↔ Ubuntu 18.04 Server (MajorDoMo)
Хочу раз и навсегда подготовить для себя пошаговое руководство, что и как нужно сделать дабы управлять нагрузкой приходящей на реле через систему Raspbian
(действия идентичны что для Jessie
, что для Stretch
) установленную на миникомпьютер Raspberry Pi 3 Model B
Схема:
Этап №1:
Вилка от компьютера, обрезана часть которая вставляется в компьютер.
Этап №2:
Затем кабель от пункта 1 подключен к автоматам на 16 Ампер которые установлены в металлический бокс на DIN рейке.
Этап №3:
На DIN рейке установлены две колодки, одна (левая) это приходит из автомата фаза, вторая (правая) — это приходить земля.
Этап №4:
От колодки с фазой теперь выходит кабель сечением 2.5мм (меньше нельзя или на свой страх и риск) и подключается в центральную колодку RelayBoard (на 8 штук) разъема K1
Этап №5:
К плате RelayBoard я подключаю розетку (на 2 подключения), фазный провод вставляется в разъем K1 на RelayBoard который у нас обозначается, как нормально разомкнутый (normal open, NO).
Выделенный квадрат это фазный провод от розетки. Центральный разъем — это фаза от колодки приходящей с автомата.
Этап №6:
Земля от розетки идет в колодку с землей приходящей от автомата.
Этап №7:
Далее нужно подключить Relay Board
к Raspberry Pi 3 Model B
- VCC (Relay Board) — к 5V (Raspberry Pi 3 Model B) (четвертый пин)
- GND (Relay Board) — к GND (Raspberry Pi 3 Model B) (шестой пин)
- IN1 (Relay Board) — к GPIO 4 (Raspberry Pi 3 Model B) (седьмой пин)
Этап №8:
Подключаюсь по SSH
к Raspberry Pi 3 Model B
со своего рабочего места под управлением Ubuntu 18.04 Desktop amd64
и устанавливаю необходимые пакеты посредством которых можно осуществлять GPIO:
pi@raspberrypi:~ $ cat /etc/issue && uname -a Raspbian GNU/Linux 9 \n \l Linux raspberrypi 4.14.52-v7+ #1123 SMP Wed Jun 27 17:35:49 BST 2018 armv7l GNU/Linux pi@raspberrypi:~ $ sudo apt-get install python-dev python-rpi.gpio -y
Этап №9:
Проверяю, что могу подать питание на седьмой пин GPIO 4
- pi@raspberrypi:~ $ gpio -g mode 4 out
- pi@raspberrypi:~ $ gpio -g write 4 1 → на розетку подается питание в 220 Вольт, проверяю мультиметром напряжение, да есть
- pi@raspberrypi:~ $ gpio -g write 4 0 → размыкаю Relay, проверяю мультиметром напряжение, нет.
На заметку: Очень важно, если поднести щуп от мультиметра к соединениям на Relay Board
куда подключена нагрузка и розетка, то на соединениям обнаруживается 220В. А потому все части не должны контактировать с металлом и должны быть заизолированы. Вот почему я использую автомат, как для фазы так и для земли. И прежде чем производить какие-либо работы всегда выключаю автомат, проверяю что действительно нет нагрузки и только потом приступаю к взаимодействию.
ekzorchik@srv-bionic:~$ sudo apt-get install sshpass -y ekzorchik@srv-bionic:~$ sshpass -p 712mbddr@ ssh -o StrictHostKeyChecking=no pi@172.33.33.10 '/home/pi/relay1on' ekzorchik@srv-bionic:~$ sshpass -p 712mbddr@ ssh -o StrictHostKeyChecking=no pi@172.33.33.10 '/home/pi/relay1off'
Работает!
Нужна теперь проверка, состояние GPIO:
pi@raspberrypi:~ $ gpio readall pi@raspberrypi:~ $ gpio allreadall pi@raspberrypi:~ $ ./relay1on pi@raspberrypi:~ $ gpio allreadall | sed -n -e 8p | awk '{print $6}' High pi@raspberrypi:~ $ ./relay1off pi@raspberrypi:~ $ gpio allreadall | sed -n -e 8p | awk '{print $6}' Low
Теперь проверка если значение High
то реле включено, если значение Low
то реле выключено.
pi@raspberrypi:~ $ nano relaystatus #/bin/bash #Получаем значение Вкл или Выкл Pin relaystatus=`gpio allreadall | sed -n -e 8p | awk '{print \$6}'` #Статусы которые может принимать pin relay1on='High' relay1off='Low' echo $relaystatus if [ "$relaystatus" = "$relay1on" ]; then echo "Relay 1 Включено" fi if [ "$relaystatus" = "$relay1off" ]; then echo "Relay 1 Выключено" fi pi@raspberrypi:~ $ ./relaystatus Low Relay 1 Выключено pi@raspberrypi:~ $ ./relaystatus High
Relay 1
Включено Так а как чтобы в MajorDoMo
отображался статус, к примеру при использовании «Шаблоны поведения»
Шаг №1:
Создаем сценарий:
Название: RelayStatus
Код (PHP):
$relaystatus = shell_exec("sshpass -p 712mbddr@ ssh -o StrictHostKeyChecking=no pi@172.33.33.10 '/home/pi/relaystatus'");
say($relaystatus,5);
И нажимаем «Сохранить»
Шаг №2:
Создаем «Шаблон поведения»
Название: Статус реле
Выполнить при совпадении: Сценарий
и выбираю созданный вшаге №1
сценарий, т. е.RelayStatus
и нажимаем«Сохранить»
теперь переходим на «Веб-сайт»
и при отправке набранного «Статус реле»
получаю:
Отлично! Расширенное использование «Шаблоны поведения»
у меня отработано в разобранных заметках
.
Итого: я разобрал как получать статус реле которое подключено к Raspberry Pi 3 Model B
, как через MajorDoMo
управлять реле: включение или выключение. Пусть не слишком сильно автоматизировано но все же кое-что. На этом у меня всё, с уважением Олло Александр aka ekzorchik.