Использование GPIO на Cubietruck

Использование системы в различных ситуациях, вопросы программирования сценариев.

Модератор: immortal

Ответить
Vittaly
Сообщения: 118
Зарегистрирован: Вт окт 14, 2014 9:19 pm
Благодарил (а): 48 раз
Поблагодарили: 12 раз

Использование GPIO на Cubietruck

Сообщение Vittaly » Пн окт 20, 2014 10:45 am

Всем здравствуйте.
У меня система установлена на Cubietruck, OS - Debian. Хочу сделать мониторинг наличия питания 220 В (есть/нет). Для этого планирую собрать простейший датчик, который умеет замыкать сухие контакты, и подсоединить его к имеющимся на борту кубика GPIO. С самими GPIO работать, вроде как, научился. Если говорить про режим работы in, то для получения состояния соответствующего контакта достаточно читать соответствующий файл в /sys/class/gpio/.../value. в нём записана 1 или 0 в зависимости от состояния ноги.
Теперь сам вопрос: чтобы узнавать об изменении состояния значения входа в системе мажордомо, нужно делать постоянную проверку в цикле (например 1 раз в секунду), или всё-таки можно прикрутить какой-нибудь обработчик события об изменении этого состояния? Никто не сталкивался?
Cubietrunck + Debian
Vittaly
Сообщения: 118
Зарегистрирован: Вт окт 14, 2014 9:19 pm
Благодарил (а): 48 раз
Поблагодарили: 12 раз

Re: Использование GPIO на Cubietruck

Сообщение Vittaly » Вт окт 21, 2014 9:48 am

Решил забить на обработчик событий и сделать тупо опрос. Но столкнулся с проблемой: Перечитав все мануалы на сайте, и много топиков в форуме, у меня сложилось понимание, что обычно свойства объектам в системе меняются извне. Т.е. внешний датчик (будь то Arduino, MegaD, Z-Wave) сам обновляет свойство в системе. А по изменению свойства система уже может запускать какой-нибудь метод, совершать какие-то действия. Но я нигде не нашёл, как можно организовать опрос датчиков. Т.е. мне необходимо, чтобы система сама опрашивала состояния внешних датчиков, и изменяла свойства соответствующих объектов. Что-то подобное нашёл только в WEB-переменных, но это не мой случай. Подскажите, как можно организовать опрос датчиков? Т.е. мне нужно запускать некий скрипт регулярно. Например, раз в секунду. Это можно сделать средствами системы? И если да, то как? Прошу прощения, если вопрос нубский - я тоже только разбираюсь.
Cubietrunck + Debian
electric
Сообщения: 309
Зарегистрирован: Вт сен 17, 2013 10:11 pm
Благодарил (а): 3 раза
Поблагодарили: 56 раз

Re: Использование GPIO на Cubietruck

Сообщение electric » Вт окт 21, 2014 9:54 am

Vittaly писал(а):Решил забить на обработчик событий и сделать тупо опрос. Но столкнулся с проблемой: Перечитав все мануалы на сайте, и много топиков в форуме, у меня сложилось понимание, что обычно свойства объектам в системе меняются извне. Т.е. внешний датчик (будь то Arduino, MegaD, Z-Wave) сам обновляет свойство в системе. А по изменению свойства система уже может запускать какой-нибудь метод, совершать какие-то действия. Но я нигде не нашёл, как можно организовать опрос датчиков. Т.е. мне необходимо, чтобы система сама опрашивала состояния внешних датчиков, и изменяла свойства соответствующих объектов. Что-то подобное нашёл только в WEB-переменных, но это не мой случай. Подскажите, как можно организовать опрос датчиков? Т.е. мне нужно запускать некий скрипт регулярно. Например, раз в секунду. Это можно сделать средствами системы? И если да, то как? Прошу прощения, если вопрос нубский - я тоже только разбираюсь.
Можно использовать метод "onNewMinute".
Пример посмотрите тут, первое сообщение в самом конце.
------
Если же не методами MDM, то посмотрите в сторону cron'a - запуск скриптов по расписанию можно осуществить оттуда, даже раз в секунду.
За это сообщение автора electric поблагодарил:
Vittaly (Вт окт 21, 2014 10:36 am)
Рейтинг: 1.16%
Было: Majordomo v.0.6.0.b на Cubietruck. OS Armbian с переносом на HDD
Стало: ioBroker на Cubietruck OS Armbian + ZigBee Xiaomi + OWFS + BLE.
Аватара пользователя
sergejey
Site Admin
Сообщения: 4286
Зарегистрирован: Пн сен 05, 2011 6:48 pm
Откуда: Минск, Беларусь
Благодарил (а): 76 раз
Поблагодарили: 1559 раз
Контактная информация:

Re: Использование GPIO на Cubietruck

Сообщение sergejey » Вт окт 21, 2014 10:15 am

Vittaly писал(а):Решил забить на обработчик событий и сделать тупо опрос. Но столкнулся с проблемой: Перечитав все мануалы на сайте, и много топиков в форуме, у меня сложилось понимание, что обычно свойства объектам в системе меняются извне. Т.е. внешний датчик (будь то Arduino, MegaD, Z-Wave) сам обновляет свойство в системе. А по изменению свойства система уже может запускать какой-нибудь метод, совершать какие-то действия. Но я нигде не нашёл, как можно организовать опрос датчиков. Т.е. мне необходимо, чтобы система сама опрашивала состояния внешних датчиков, и изменяла свойства соответствующих объектов. Что-то подобное нашёл только в WEB-переменных, но это не мой случай. Подскажите, как можно организовать опрос датчиков? Т.е. мне нужно запускать некий скрипт регулярно. Например, раз в секунду. Это можно сделать средствами системы? И если да, то как? Прошу прощения, если вопрос нубский - я тоже только разбираюсь.
Например, можно сделать сценарий назвав его СheckMySensors и запускать его из метода ClockChime->onNewMinute если достаточно выполнения каждую минуту. Если нужно каждую секунду, то можно точно так же, только в сам код сценария в конце дописать:

Код: Выделить всё

setTimeOut('myTimer1','runScript("CheckMySensors");',1); 
т.е. сценарий сам себя поставит на запуск через 1 секунду, ну и каждую минуту для надёжности так же будет запускаться -- дублирования не будет, т.к. имя таймера одно и несколько таймеров не создадуться с одним именем
За это сообщение автора sergejey поблагодарил:
Vittaly (Вт окт 21, 2014 10:35 am)
Рейтинг: 1.16%

Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
Vittaly
Сообщения: 118
Зарегистрирован: Вт окт 14, 2014 9:19 pm
Благодарил (а): 48 раз
Поблагодарили: 12 раз

Re: Использование GPIO на Cubietruck

Сообщение Vittaly » Вт окт 21, 2014 10:37 am

Отлично! Спасибо! Сегодня попробую.
Cubietrunck + Debian
Vittaly
Сообщения: 118
Зарегистрирован: Вт окт 14, 2014 9:19 pm
Благодарил (а): 48 раз
Поблагодарили: 12 раз

Re: Использование GPIO на Cubietruck

Сообщение Vittaly » Сб окт 25, 2014 11:24 pm

sergejey писал(а):
Например, можно сделать сценарий назвав его СheckMySensors и запускать его из метода ClockChime->onNewMinute если достаточно выполнения каждую минуту. Если нужно каждую секунду, то можно точно так же, только в сам код сценария в конце дописать:

Код: Выделить всё

setTimeOut('myTimer1','runScript("CheckMySensors");',1);
т.е. сценарий сам себя поставит на запуск через 1 секунду, ну и каждую минуту для надёжности так же будет запускаться -- дублирования не будет, т.к. имя таймера одно и несколько таймеров не создадуться с одним именем
Всё так и сделал. Работает, спасибо!
Cubietrunck + Debian
Ответить