Схема: 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).

Подключение реле к 220В

Выделенный квадрат это фазный провод от розетки. Центральный разъем — это фаза от колодки приходящей с автомата.

Этап №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.