Raspberry GPIO
Модератор: immortal
-
- Сообщения: 55
- Зарегистрирован: Пт ноя 01, 2013 3:15 am
- Благодарил (а): 3 раза
- Поблагодарили: 11 раз
Raspberry GPIO
Здравствуйте.
Возник вопрос с постоянным опросом портов в режиме охраны и различных реакций на события.
Как понимаю для постоянного опроса существуют cycles_*.php,
существует ли узаконенное место опроса портов GPIO в существующих циклах?
С помощью модуля php wiringpi.so возможно обращение к портам:
<?php
ini_set("enable_dl","On");
include('wiringpi.php');
wiringpi::pinMode(2,0);
wiringpi::pullUpDnControl(2,2);
while (1) { echo wiringpi::digitalRead(2);};
?>
Подтяжка включается, порт читается. Следовательно вопрос: "Как правильно 'прикрутить' опрос портов".
Возник вопрос с постоянным опросом портов в режиме охраны и различных реакций на события.
Как понимаю для постоянного опроса существуют cycles_*.php,
существует ли узаконенное место опроса портов GPIO в существующих циклах?
С помощью модуля php wiringpi.so возможно обращение к портам:
<?php
ini_set("enable_dl","On");
include('wiringpi.php');
wiringpi::pinMode(2,0);
wiringpi::pullUpDnControl(2,2);
while (1) { echo wiringpi::digitalRead(2);};
?>
Подтяжка включается, порт читается. Следовательно вопрос: "Как правильно 'прикрутить' опрос портов".
- sergejey
- Site Admin
- Сообщения: 4286
- Зарегистрирован: Пн сен 05, 2011 6:48 pm
- Откуда: Минск, Беларусь
- Благодарил (а): 76 раз
- Поблагодарили: 1559 раз
- Контактная информация:
Re: Raspberry GPIO
Сейчас в циклах нет опроса, но можно добавить собственный цикл, назвава его, к примеру, cycle_gpio.php -- сделать его по образцу одного из имеющихся и при старте система сама его подхватит (как все файлы cycle_* в папке ./scripts/)
Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
-
- Сообщения: 289
- Зарегистрирован: Вс сен 16, 2012 9:39 am
- Благодарил (а): 0
- Поблагодарили: 1 раз
Re: Raspberry GPIO
А если убрать из этой папки неиспользуемые у меня циклы, это поможет разгрузить систему ненужными запросами, или надо еще что-то отключать. Попробовал создать свой цикл, в нем прописать какое-то действие, работает, подумаю как применить, такой вопрос, если мне не нужно обращаться к нему каждую секунду, и я поставлю к примеру sleep(10); это меньше будет грузить систему, или же обращание все равно будет происходить, но действие будет выполнятся каждые 10 секунд.
- sergejey
- Site Admin
- Сообщения: 4286
- Зарегистрирован: Пн сен 05, 2011 6:48 pm
- Откуда: Минск, Беларусь
- Благодарил (а): 76 раз
- Поблагодарили: 1559 раз
- Контактная информация:
Re: Raspberry GPIO
Неиспользуемые можно убирать. Хотя если они не используются, т.е. для них исходных данных, то и систему они не нагружают.Urbas81 писал(а):А если убрать из этой папки неиспользуемые у меня циклы, это поможет разгрузить систему ненужными запросами, или надо еще что-то отключать. Попробовал создать свой цикл, в нем прописать какое-то действие, работает, подумаю как применить, такой вопрос, если мне не нужно обращаться к нему каждую секунду, и я поставлю к примеру sleep(10); это меньше будет грузить систему, или же обращание все равно будет происходить, но действие будет выполнятся каждые 10 секунд.
sleep(10) можно прописать в цикле и тогда итерация (в данном случае опрос) будет происходить раз в 10 секунд.
единственное что -- у меня как-то случалось, что циклы "прибивались" из-за того, что от них долго не было никаких данных. может просто совпало с чем, но если такое будет, то вместо sleep(10); лучше сделать такое:
Код: Выделить всё
$i=0;
while(1) {
echo "Working...\n";
if ($i>10) {
//здесь нужные нам действия (раз в 10 секунд)
$i=0;
}
$i++;
sleep(1);
}
Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
-
- Сообщения: 289
- Зарегистрирован: Вс сен 16, 2012 9:39 am
- Благодарил (а): 0
- Поблагодарили: 1 раз
Re: Raspberry GPIO
Спасибо.sergejey писал(а): Неиспользуемые можно убирать. Хотя если они не используются, т.е. для них исходных данных, то и систему они не нагружают.
sleep(10) можно прописать в цикле и тогда итерация (в данном случае опрос) будет происходить раз в 10 секунд.
единственное что -- у меня как-то случалось, что циклы "прибивались" из-за того, что от них долго не было никаких данных. может просто совпало с чем, но если такое будет, то вместо sleep(10); лучше сделать такое:
т.е. цикл каждую секунду будет выводить Working... но нужные действия будут происходить раз в 10 секундКод: Выделить всё
$i=0; while(1) { echo "Working...\n"; if ($i>10) { //здесь нужные нам действия (раз в 10 секунд) $i=0; } $i++; sleep(1); }
-
- Сообщения: 55
- Зарегистрирован: Пт ноя 01, 2013 3:15 am
- Благодарил (а): 3 раза
- Поблагодарили: 11 раз
Re: Raspberry GPIO
Получился тестовый файл cycle_gpio - в приложении.
На WiringPi(0) - GPIO(17) - индикация активности.
В связи с пробелами знаний по ООП и sql, прошу подсказать как проверить
состояние системы - Безопасность ВКЛ/ВЫКЛ из php , и как привязать состояние
порта к sql.
Спасибо.
На WiringPi(0) - GPIO(17) - индикация активности.
В связи с пробелами знаний по ООП и sql, прошу подсказать как проверить
состояние системы - Безопасность ВКЛ/ВЫКЛ из php , и как привязать состояние
порта к sql.
Спасибо.
- Вложения
-
- cycle_gpio.rar
- (513 байт) 325 скачиваний
Re: Raspberry GPIO
продолжая тему с gpio (http://majordomo.smartliving.ru/forum/v ... 2&start=90)
Для того чтобы "majordomo" получал данные (поправьте если я ошибаюсь):
1) можно с самого скрипта по событию формировать запрос типа: (http://localhost/objects/?object=sensor ... d&status=1)
2)или записывать прямо на базу.
на чет второго пункта где бы посмотреть структуру - чтобы знать куда вносить данные?
P.S ни где нету инструкции типа: Инструкция по написанию модуля для новичков ))

пролистав форум (http://majordomo.smartliving.ru/forum/v ... =safe_exec) как я понял можно выполнить сторонний скрипт но результат выполненный команды игнорируется. Если я верно понял "majordomo" не будет знать о состояние датчиков.sergejey писал(а):Да, сейчас модуля работы с gpio нету. Как вариант, просто запускать уже имеющиеся скрипты через exec/safe_exec.vuln писал(а):В поисках веб интерфейса наткнулся на этот проект - но ни где не нашел как работать с портами gpio (считать состояние - менять состояние) надо писать собственный модуль?
Для того чтобы "majordomo" получал данные (поправьте если я ошибаюсь):
1) можно с самого скрипта по событию формировать запрос типа: (http://localhost/objects/?object=sensor ... d&status=1)
2)или записывать прямо на базу.
на чет второго пункта где бы посмотреть структуру - чтобы знать куда вносить данные?
P.S ни где нету инструкции типа: Инструкция по написанию модуля для новичков ))


-
- Сообщения: 28
- Зарегистрирован: Сб ноя 29, 2014 12:20 am
- Благодарил (а): 7 раз
- Поблагодарили: 0
Re: Raspberry GPIO
Бился я с GPIO
Сейчас у меня вот так работает
http://majordomo.smartliving.ru/forum/v ... pio#p17816
Сейчас у меня вот так работает
http://majordomo.smartliving.ru/forum/v ... pio#p17816