Страница 1 из 1

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

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

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

Добавлено: Вт окт 21, 2014 9:48 am
Vittaly
Решил забить на обработчик событий и сделать тупо опрос. Но столкнулся с проблемой: Перечитав все мануалы на сайте, и много топиков в форуме, у меня сложилось понимание, что обычно свойства объектам в системе меняются извне. Т.е. внешний датчик (будь то Arduino, MegaD, Z-Wave) сам обновляет свойство в системе. А по изменению свойства система уже может запускать какой-нибудь метод, совершать какие-то действия. Но я нигде не нашёл, как можно организовать опрос датчиков. Т.е. мне необходимо, чтобы система сама опрашивала состояния внешних датчиков, и изменяла свойства соответствующих объектов. Что-то подобное нашёл только в WEB-переменных, но это не мой случай. Подскажите, как можно организовать опрос датчиков? Т.е. мне нужно запускать некий скрипт регулярно. Например, раз в секунду. Это можно сделать средствами системы? И если да, то как? Прошу прощения, если вопрос нубский - я тоже только разбираюсь.

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

Добавлено: Вт окт 21, 2014 9:54 am
electric
Vittaly писал(а):Решил забить на обработчик событий и сделать тупо опрос. Но столкнулся с проблемой: Перечитав все мануалы на сайте, и много топиков в форуме, у меня сложилось понимание, что обычно свойства объектам в системе меняются извне. Т.е. внешний датчик (будь то Arduino, MegaD, Z-Wave) сам обновляет свойство в системе. А по изменению свойства система уже может запускать какой-нибудь метод, совершать какие-то действия. Но я нигде не нашёл, как можно организовать опрос датчиков. Т.е. мне необходимо, чтобы система сама опрашивала состояния внешних датчиков, и изменяла свойства соответствующих объектов. Что-то подобное нашёл только в WEB-переменных, но это не мой случай. Подскажите, как можно организовать опрос датчиков? Т.е. мне нужно запускать некий скрипт регулярно. Например, раз в секунду. Это можно сделать средствами системы? И если да, то как? Прошу прощения, если вопрос нубский - я тоже только разбираюсь.
Можно использовать метод "onNewMinute".
Пример посмотрите тут, первое сообщение в самом конце.
------
Если же не методами MDM, то посмотрите в сторону cron'a - запуск скриптов по расписанию можно осуществить оттуда, даже раз в секунду.

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

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

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

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

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

Добавлено: Вт окт 21, 2014 10:37 am
Vittaly
Отлично! Спасибо! Сегодня попробую.

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

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

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

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