Работа с GPIO. Считывание состояния бинарного датчика. Управление LED/Реле


Миникомпьютер Raspberry Pi на котором основан контроллер RaZberry обладает 26 GPIO выводами к которым можно подключить различные проводные датчики и реле.

ПО автоматизации RaZberry - Z-Way может работать как с Z-Wave датчиками, так и с датчиками подключенными к GPIO, что позволяет дешево расширить функционал умного дома.

Добавление бинарного датчика (кнопка)

Для примера подключим герконовый датчик открытия двери/окна или любую кнопку. Подключите один контакт кнопки к GPIO 23, другой контакт к GND согласно схеме.

Теперь в интерфейсе SmartHome нужно создать 2 модуля для работы с GPIO.

1. Разрешение выполнения команд /bin/echo и /bin/cat

Выполните команду в командной строке Raspberry Pi:

echo -e "/bin/echo\n/bin/cat" >> /opt/z-way-server/automation/.syscommands

2. Load custom JavaScript code для инициализации GPIO

Добавьте в модуль Load custom JavaScript code следующий код:

system('/bin/echo "23" > /sys/class/gpio/export');
system('/bin/echo "in" > /sys/class/gpio/gpio23/direction');

При старте системы будет запускаться этот код и настраивать GPIO вывод 23 в режим чтения.

3. Code Device для считывания состояния датчика подключенного к GPIO

Создайте модуль Code Device типа SensorBinary со следующем содержанием:

(system('/bin/cat /sys/class/gpio/gpio23/value')[1] === '1\n') ? "off":"on"



Будет создан виджет типа SensorBinary, при срабатывании датчика или нажатии на кнопку виджет это отобразит.

Добавление исполнительного устройства LED/Реле

Для примера подключим LED. Подключите один контакт к GPIO 24, другой контакт к GND через резисто согласно схеме.

Теперь в интерфейсе SmartHome нужно создать модуля для управления GPIO выводом.

1. Load custom JavaScript code для инициализации GPIO

Создайте модуль Load custom JavaScript code со следующим содержанием:

system('/bin/echo "24" > /sys/class/gpio/export');
system('/bin/echo "out" > /sys/class/gpio/gpio24/direction');

При старте системы будет запускаться этот код и настраивать GPIO вывод 24 в режим записи.

2. Code Device для управления GPIO выводом

Создайте модуль Code Device типа SwitchBinary со следующем содержанием:

Код включения: system('echo "0" > /sys/class/gpio/gpio24/value');
Код выключения: system('echo "1" > /sys/class/gpio/gpio24/value');



Будет создан виджет типа SwitchBinary, с помощью которого можно управлять LED.

12 ноября 2015г. Юркин Виталий