Всем здравствуйте.
У меня система установлена на Cubietruck, OS - Debian. Хочу сделать мониторинг наличия питания 220 В (есть/нет). Для этого планирую собрать простейший датчик, который умеет замыкать сухие контакты, и подсоединить его к имеющимся на борту кубика GPIO. С самими GPIO работать, вроде как, научился. Если говорить про режим работы in, то для получения состояния соответствующего контакта достаточно читать соответствующий файл в /sys/class/gpio/.../value. в нём записана 1 или 0 в зависимости от состояния ноги.
Теперь сам вопрос: чтобы узнавать об изменении состояния значения входа в системе мажордомо, нужно делать постоянную проверку в цикле (например 1 раз в секунду), или всё-таки можно прикрутить какой-нибудь обработчик события об изменении этого состояния? Никто не сталкивался?
Использование GPIO на Cubietruck
Модератор: immortal
-
- Сообщения: 118
- Зарегистрирован: Вт окт 14, 2014 9:19 pm
- Благодарил (а): 48 раз
- Поблагодарили: 12 раз
Re: Использование GPIO на Cubietruck
Решил забить на обработчик событий и сделать тупо опрос. Но столкнулся с проблемой: Перечитав все мануалы на сайте, и много топиков в форуме, у меня сложилось понимание, что обычно свойства объектам в системе меняются извне. Т.е. внешний датчик (будь то Arduino, MegaD, Z-Wave) сам обновляет свойство в системе. А по изменению свойства система уже может запускать какой-нибудь метод, совершать какие-то действия. Но я нигде не нашёл, как можно организовать опрос датчиков. Т.е. мне необходимо, чтобы система сама опрашивала состояния внешних датчиков, и изменяла свойства соответствующих объектов. Что-то подобное нашёл только в WEB-переменных, но это не мой случай. Подскажите, как можно организовать опрос датчиков? Т.е. мне нужно запускать некий скрипт регулярно. Например, раз в секунду. Это можно сделать средствами системы? И если да, то как? Прошу прощения, если вопрос нубский - я тоже только разбираюсь.
Cubietrunck + Debian
-
- Сообщения: 309
- Зарегистрирован: Вт сен 17, 2013 10:11 pm
- Благодарил (а): 3 раза
- Поблагодарили: 56 раз
Re: Использование GPIO на Cubietruck
Можно использовать метод "onNewMinute".Vittaly писал(а):Решил забить на обработчик событий и сделать тупо опрос. Но столкнулся с проблемой: Перечитав все мануалы на сайте, и много топиков в форуме, у меня сложилось понимание, что обычно свойства объектам в системе меняются извне. Т.е. внешний датчик (будь то Arduino, MegaD, Z-Wave) сам обновляет свойство в системе. А по изменению свойства система уже может запускать какой-нибудь метод, совершать какие-то действия. Но я нигде не нашёл, как можно организовать опрос датчиков. Т.е. мне необходимо, чтобы система сама опрашивала состояния внешних датчиков, и изменяла свойства соответствующих объектов. Что-то подобное нашёл только в WEB-переменных, но это не мой случай. Подскажите, как можно организовать опрос датчиков? Т.е. мне нужно запускать некий скрипт регулярно. Например, раз в секунду. Это можно сделать средствами системы? И если да, то как? Прошу прощения, если вопрос нубский - я тоже только разбираюсь.
Пример посмотрите тут, первое сообщение в самом конце.
------
Если же не методами MDM, то посмотрите в сторону cron'a - запуск скриптов по расписанию можно осуществить оттуда, даже раз в секунду.
- Рейтинг: 1.16%
- sergejey
- Site Admin
- Сообщения: 4286
- Зарегистрирован: Пн сен 05, 2011 6:48 pm
- Откуда: Минск, Беларусь
- Благодарил (а): 76 раз
- Поблагодарили: 1559 раз
- Контактная информация:
Re: Использование GPIO на Cubietruck
Например, можно сделать сценарий назвав его СheckMySensors и запускать его из метода ClockChime->onNewMinute если достаточно выполнения каждую минуту. Если нужно каждую секунду, то можно точно так же, только в сам код сценария в конце дописать:Vittaly писал(а):Решил забить на обработчик событий и сделать тупо опрос. Но столкнулся с проблемой: Перечитав все мануалы на сайте, и много топиков в форуме, у меня сложилось понимание, что обычно свойства объектам в системе меняются извне. Т.е. внешний датчик (будь то Arduino, MegaD, Z-Wave) сам обновляет свойство в системе. А по изменению свойства система уже может запускать какой-нибудь метод, совершать какие-то действия. Но я нигде не нашёл, как можно организовать опрос датчиков. Т.е. мне необходимо, чтобы система сама опрашивала состояния внешних датчиков, и изменяла свойства соответствующих объектов. Что-то подобное нашёл только в WEB-переменных, но это не мой случай. Подскажите, как можно организовать опрос датчиков? Т.е. мне нужно запускать некий скрипт регулярно. Например, раз в секунду. Это можно сделать средствами системы? И если да, то как? Прошу прощения, если вопрос нубский - я тоже только разбираюсь.
Код: Выделить всё
setTimeOut('myTimer1','runScript("CheckMySensors");',1);
- Рейтинг: 1.16%
Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
-
- Сообщения: 118
- Зарегистрирован: Вт окт 14, 2014 9:19 pm
- Благодарил (а): 48 раз
- Поблагодарили: 12 раз
Re: Использование GPIO на Cubietruck
Всё так и сделал. Работает, спасибо!sergejey писал(а):
Например, можно сделать сценарий назвав его СheckMySensors и запускать его из метода ClockChime->onNewMinute если достаточно выполнения каждую минуту. Если нужно каждую секунду, то можно точно так же, только в сам код сценария в конце дописать:
т.е. сценарий сам себя поставит на запуск через 1 секунду, ну и каждую минуту для надёжности так же будет запускаться -- дублирования не будет, т.к. имя таймера одно и несколько таймеров не создадуться с одним именемКод: Выделить всё
setTimeOut('myTimer1','runScript("CheckMySensors");',1);
Cubietrunck + Debian