Архив по меткам :

QR-code

ССЫЛКИ

Свежие комментарии

Апр 09

Управление реле по uart и GPIO OrangePi PC из MajorDoMo

Для управления реле в системе умного дома возможно использовать различные способы, это и ESP8266 и готовые блоки реле и управление с помощью Arduino по http через Ethernet шилд, но в данной статье речь пойдет об управлении реле непосредственно подключенных к GPIO OrangePi PC (Апельсинка) или через uart Апельсинки.Как работать с GPIO, UART и i2c можно прочитать в статье, данную статью рекомендуется изучить для включения портов UART и установки WiringOP, если же Вы используете мои готовые образы DietPi или Armbian то там все это уже настроено.

Видео управления реле из консоли Апельсинки и о муках выбора.

Для управления реле в системе MajorDoMo предусмотрен класс Relays в котором необходимо создать объекты, каждый объект это одно реле, в системе по умолчанию уже имеется объект Switch1. У класса Relays имеются методы, которые наследуются объектам класса Relays, то есть методы Relays будут выполняться во всех объектах если в объекте данные метод не переопределен.

Методы класса Relays

Методы объекта Switch1, наследуемые от класса Relays, то есть метод выполняется в классе Relays

Преимущество использования методов в классе состоит в том, что не надо для каждого объекта использовать свой метод и прописывать в каждом методе объекта свой код, что упрощает разработку.

Вот так выглядят методы Объекта Switch1 если методы отличаются от аналогичных методов класса

и в дереве Классов и Объектов

Но для отправки команд на управление реле у разных объектов будут разные команды и по этому необходимо каждому объекту прописать свою команду, в статье Умный дом. клацкаем светом. я уже рассказывал как это делать, однако описанные варианты на мой взгляд неудобны. В случае если Вы решили использовать команды управления реле через методы объектов, то в методах turnOff И turnOn пишем команды управления реле.

Если у Вас реле подключены к GPIO или UART Апельсинки то код будет аналогичный коду из консоли описанный в статье OrangePi PC работаем с GPIO, UART и i2c, только необходимо добавить команду вызова exec, и получается следующий код для GPIO:

exec ("gpio -1 write 29 1");  и  exec ("gpio -1 write 29 0");

и для UART (команда на ардуино с прошитым универсальным скетчем из статьи )

exec ("echo 1103 > /dev/ttyS3");  и  exec ("echo 1003 > /dev/ttyS3");

для включения и выключения ,скорее всего реле у Вас инверсные и поэтому логический 0 включает реле, логическая 1 выключает реле.

Однако при большом количестве реле на мой взгляд не удобно прописывать данный код в методах объектов, по этому обработку мы будем делать в сценарии. Так же из-за того, что при работе с uart портом во время посылке данных в порт порт становиться занятым, то способ обработки в сценарии scene_switch описанный с статье Умный дом. клацкаем светом. не подходит, поскольку команды будут отсылаться на все реле не зависимо изменилось состояние реле или нет и соответственно после отсылки первой команды в UART порт вторая не может послать в UART порт поскольку он становиться ещё занятым. Я пробовал при стандартной скорости порта 9600, возможно при другой скорости порта такой проблемы не будет. Однако обработка описанная в статье по моему мнению неправильная поскольку повторно посылает состояние реле даже если оно не изменилось.

Для того, чтобы сценарий scene_switch обрабатывал только события конкретного объекта нам надо в этот сценарий передать имя этого объекта, для получения имени объекта используем команду $this->object_title и запуск скрипта с передачей параметра — имени объекта будет выглядеть следующим образом:

runScript("scene_switch",array("nameobj"=>$this->object_title))

эту строчку надо добавить в конец методов turnOff и turnOn класса Relays

Теперь создаем сценарий scene_switch

в данном примере 2 кнопки, первая включает и выключает реле на GPIO Апельсинки, вторая посылает через UART порт команду ардуине с залитым универсальным скетчем.

Как сделать кнопки в сценах или меню, а так же включать через различные пульты описано в статье Умный дом. Клацкаем светом.

Поделиться в соц. сетях

Опубликовать в Facebook
Опубликовать в Google Buzz
Опубликовать в Google Plus
Опубликовать в LiveJournal
Опубликовать в Мой Мир
Опубликовать в Одноклассники
Опубликовать в Яндекс
Синдикация

Понравилась статья? Подпишитесь на RSS .

комментарии отключены, по вопросам в почту или вконтакте http://vk.com/kusheev