Понедельник, 30.12.2024, 17:53
| RSS
Поиск
Главная |
Защита, контроль, управление
Форма входа

Меню

Авторские проекты

Статьи

Raspberry Pi

Полезная информация

Обратная связь

Ссылки

Форум

Чат

Канал YouTube

Группа в Facebook


Календарь
«  Январь 2019  »
ПнВтСрЧтПтСбВс
 123456
78910111213
14151617181920
21222324252627
28293031

Наш опрос

Ссылки


Яндекс.Метрика





.
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0

Domoticz. Часть вторая

Domoticz. Часть вторая

Наш канал в YouTube


В прошлом обзоре по Domoticz было рассмотрено подключение датчиков BMP180 и TSL2561 через интерфейсы I2C, а также  DS18B20 через интерфейс 1-wire. Сегодня поговорим о реализации дискретных выходов и входов, или «переключателей» - именно так они называются в Domoticz) на портах GPIO Raspberry Pi. Далее, во избежание путаницы, мы будем называть переключатели своими именами - выходы и входы.

Сначала, как обычно, остановимся на аппаратной части. Оптимальный вариант – это применение кросс-платы, имеющей на борту 8 изолированных дискретных входов и 8 релейных выходов. Впрочем, можно обойтись и без кросс-платы, применив 8-канальный релейный модуль для выходов и 8 кнопок с нормально-разомкнутыми контактами для проверки работы входов (рис.1)

 

Raspberry Pi Domoticz out input

Рис. 1

 

Честно говоря, я был несколько удивлен, когда при попытке создания в качестве устройства порта GPIO, система выдавала ошибку. Вот и первый сюрприз от Domoticz – оказывается, библиотека для работы с GPIO в «базовой комплектации» отсутствует. Поэтому, берем «напильник» и начинаем понемногу «допиливать» систему.

Для работы с портами GPIO будем использовать библиотеку WiringPi. Выполняем установку:

sudo apt-get install wiringPi

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

gpio readall

после чего мы должны увидеть в терминалке Putty вот такую табличку (рис.2):

 

Raspberry Pi Domoticz out input

Рис. 2

 

WiringPi установлен. Теперь нужно назначить порты GPIO выходами и входами в соответствии с подключением кнопок и релейного модуля. Сделать это нужно в файле domoticz.sh. Открываем файл:

sudo nano /etc/init.d/domoticz.sh

и в самом конце (после :) назначаем соответствующие порты выходами и входами:

# выходы:

/usr/local/bin/gpio export 7 out

/usr/local/bin/gpio export 8 out

/usr/local/bin/gpio export 12 out

/usr/local/bin/gpio export 16 out

/usr/local/bin/gpio export 20 out

/usr/local/bin/gpio export 21 out

/usr/local/bin/gpio export 24 out

/usr/local/bin/gpio export 25 out

# входы:

/usr/local/bin/gpio export 26 in

/usr/local/bin/gpio edge 26 both

/usr/local/bin/gpio export 19 in

/usr/local/bin/gpio edge 19 both

/usr/local/bin/gpio export 13 in

/usr/local/bin/gpio edge 13 both

/usr/local/bin/gpio export 6 in

/usr/local/bin/gpio edge 6 both

/usr/local/bin/gpio export 5 in

/usr/local/bin/gpio edge 5 both

/usr/local/bin/gpio export 22 in

/usr/local/bin/gpio edge 22 both

/usr/local/bin/gpio export 18 in

/usr/local/bin/gpio edge 18 both

/usr/local/bin/gpio export 23 in

/usr/local/bin/gpio edge 23 both

Если используется релейный модуль (или кросс-плата), где активный уровень (включить) единица, то файл domoticz.sh  можно сохранить и закрыть. Однако, как правило, у релейных модулей с оптронной развязкой на входе, активным уровнем является ноль. Следовательно, для такого модуля необходимо инвертировать команды управления и при включении выставить на выходах единицу (т.е. отключенное состояние реле). Поэтому, добавляем в файл domoticz.sh следующие строки:

# установка начального уровня и инверсия управления

/usr/local/bin/gpio -g write 7 1   

/usr/local/bin/gpio -g write 8 1

/usr/local/bin/gpio -g write 12 1

/usr/local/bin/gpio -g write 16 1

/usr/local/bin/gpio -g write 20 1

/usr/local/bin/gpio -g write 21 1

/usr/local/bin/gpio -g write 24 1

/usr/local/bin/gpio -g write 25 1

sudo sh -c "echo '1' >> /sys/class/gpio/gpio7/active_low"

sudo sh -c "echo '1' >> /sys/class/gpio/gpio8/active_low"

sudo sh -c "echo '1' >> /sys/class/gpio/gpio12/active_low"

sudo sh -c "echo '1' >> /sys/class/gpio/gpio16/active_low"

sudo sh -c "echo '1' >> /sys/class/gpio/gpio20/active_low"

sudo sh -c "echo '1' >> /sys/class/gpio/gpio21/active_low"

sudo sh -c "echo '1' >> /sys/class/gpio/gpio24/active_low"

sudo sh -c "echo '1' >> /sys/class/gpio/gpio25/active_low"

Все, теперь после перезагрузки системы (sudo reboot) можно переходить к созданию панелей выходов и входов.

В web-интерфейсе Domoticz открываем вкладку Setup – Hardware, называем первый выход Out #1, в закладке Type выбираем Raspberry’s GPIO ports и добавляем выход кнопкой Add. Аналогично создаем первый вход с именем Input #1 (рис.3).

 

Raspberry Pi Domoticz out input

Рис. 3

 

Переходим в закладку Switches и добавляем первый выход. Для этого нажимаем кнопку Manual Light/Switch и в открывшемся меню выбираем параметры:

  • Hardware: Out #1
  • Device name: Switch 1 (можно любое название)
  • Switch type: ON/OFF
  • Type: GPIO
  • GPIO: GPIO pin 21(OUTPUT)

Добавляем выход кнопкой All Device (рис.4):

 

Raspberry Pi Domoticz out input

Рис. 4

 

Аналогичным образом добавляем и первый вход, здесь вводим параметры:

  • Hardware: Input #1
  • Device name: Input 1 (можно любое название)
  • Switch type: Door Lock
  • Type: GPIO
  • GPIO: GPIO pin 26(INPUT)

Добавляем выход кнопкой All Device (рис.5):

 

Raspberry Pi Domoticz out input

Рис. 5

 

Панели первого выхода и входа должны отображаться на общей панели Switches (рис.6)

 

Raspberry Pi Domoticz out input

Рис. 6

 

При клике мышкой на иконку на панели выхода, первое реле включиться, а лампочка изменить цвет с серого на желтый. При замыкании первого выхода иконка открытой двери меняется на закрытую (рис.7)

 

Raspberry Pi Domoticz out input

Рис. 7

 

На панелях вводов и выходов расположены следующие элементы:

  • Звездочка: для добавления на панель Dashboard
  • Edit: редактирование иконок, функций и т.д.
  • Notifications: здесь можно настроить различные события при включения/отключения выхода или замыкания/размыкания входа
  • Timers: (только для выходов): позволяет настроить включения/отключения выхода по заданному времени и дню недели
  • Log: отображает график с фиксацией времени включения/отключения выхода или замыкания/размыкания входа (рис. 8):

 

Raspberry Pi Domoticz out input

Рис. 8

 

Теперь, что бы в полной мере реализовать работу схемы на рис.1, аналогичным образом добавьте еще семь выходов и 7 входов. При присвоении каждому порядковому номеру выхода или входа соответствующего порта GPIO, придерживайтесь схемы. По итогу панель Switches должна выглядеть примерно таким образом (рис.9):

 

Raspberry Pi Domoticz out input

Рис. 9

 

Необходимо упомянуть об одном неприятном моменте при использовании релейных модулей, где активным уровнем (включения реле) является ноль. В момент загрузки (перезагрузки) Domoticz, хотя выходы и устанавливается в высокий уровень (единица), что соответствует выключенному состоянию реле, они в начальный момент времени на доли секунды все же успевают «провалиться» в ноль. Из-за этого происходит кратковременное срабатывание всех реле. Как побороть эту проблему, пока не разобрался. Возможно, тут помогут только аппаратные решения. В случаях, когда активный уровень управления единица (как, например, в кросс-плате) данный эффект не наблюдается.

P.S. Все закладки, пункты меню Domoticz, а также скриншоты, я привожу на примере английского интерфейса. Но вы можете выбрать любой другой язык - Domoticz поддерживает интерфейсы на 35 языках. Информацию, как переключить язык, смотрите в первой части обзора.

 

 




Категория: | Просмотров: 4071 | Добавил: Admin | Теги: | Рейтинг: 5.0/5 |
Всего комментариев: 0






T2M © 2024
Сайт управляется системой uCoz