Работа с 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г. Юркин Виталий