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