Raspberry GPIO

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

Модератор: immortal

Ответить
f00fc7c8
Сообщения: 55
Зарегистрирован: Пт ноя 01, 2013 3:15 am
Благодарил (а): 3 раза
Поблагодарили: 11 раз

Raspberry GPIO

Сообщение f00fc7c8 » Чт ноя 21, 2013 12:00 pm

Здравствуйте.
Возник вопрос с постоянным опросом портов в режиме охраны и различных реакций на события.
Как понимаю для постоянного опроса существуют 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

Сообщение sergejey » Чт ноя 21, 2013 2:25 pm

Сейчас в циклах нет опроса, но можно добавить собственный цикл, назвава его, к примеру, cycle_gpio.php -- сделать его по образцу одного из имеющихся и при старте система сама его подхватит (как все файлы cycle_* в папке ./scripts/)

Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
Urbas81
Сообщения: 289
Зарегистрирован: Вс сен 16, 2012 9:39 am
Благодарил (а): 0
Поблагодарили: 1 раз

Re: Raspberry GPIO

Сообщение Urbas81 » Чт ноя 21, 2013 3:40 pm

А если убрать из этой папки неиспользуемые у меня циклы, это поможет разгрузить систему ненужными запросами, или надо еще что-то отключать. Попробовал создать свой цикл, в нем прописать какое-то действие, работает, подумаю как применить, такой вопрос, если мне не нужно обращаться к нему каждую секунду, и я поставлю к примеру sleep(10); это меньше будет грузить систему, или же обращание все равно будет происходить, но действие будет выполнятся каждые 10 секунд.
Аватара пользователя
sergejey
Site Admin
Сообщения: 4286
Зарегистрирован: Пн сен 05, 2011 6:48 pm
Откуда: Минск, Беларусь
Благодарил (а): 76 раз
Поблагодарили: 1559 раз
Контактная информация:

Re: Raspberry GPIO

Сообщение sergejey » Чт ноя 21, 2013 4:05 pm

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);
}
т.е. цикл каждую секунду будет выводить Working... но нужные действия будут происходить раз в 10 секунд

Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
Urbas81
Сообщения: 289
Зарегистрирован: Вс сен 16, 2012 9:39 am
Благодарил (а): 0
Поблагодарили: 1 раз

Re: Raspberry GPIO

Сообщение Urbas81 » Чт ноя 21, 2013 4:13 pm

sergejey писал(а): Неиспользуемые можно убирать. Хотя если они не используются, т.е. для них исходных данных, то и систему они не нагружают.

sleep(10) можно прописать в цикле и тогда итерация (в данном случае опрос) будет происходить раз в 10 секунд.
единственное что -- у меня как-то случалось, что циклы "прибивались" из-за того, что от них долго не было никаких данных. может просто совпало с чем, но если такое будет, то вместо sleep(10); лучше сделать такое:

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

$i=0;
while(1) {
echo "Working...\n";
if ($i>10) {
 //здесь нужные нам действия (раз в 10 секунд)
 $i=0;
}
$i++;
sleep(1);
}
т.е. цикл каждую секунду будет выводить Working... но нужные действия будут происходить раз в 10 секунд
Спасибо.
f00fc7c8
Сообщения: 55
Зарегистрирован: Пт ноя 01, 2013 3:15 am
Благодарил (а): 3 раза
Поблагодарили: 11 раз

Re: Raspberry GPIO

Сообщение f00fc7c8 » Чт ноя 21, 2013 4:53 pm

Получился тестовый файл cycle_gpio - в приложении.
На WiringPi(0) - GPIO(17) - индикация активности.
В связи с пробелами знаний по ООП и sql, прошу подсказать как проверить
состояние системы - Безопасность ВКЛ/ВЫКЛ из php , и как привязать состояние
порта к sql.
Спасибо.
Вложения
cycle_gpio.rar
(513 байт) 325 скачиваний
f00fc7c8
Сообщения: 55
Зарегистрирован: Пт ноя 01, 2013 3:15 am
Благодарил (а): 3 раза
Поблагодарили: 11 раз

Re: Raspberry GPIO

Сообщение f00fc7c8 » Пт ноя 22, 2013 1:01 pm

getGlobal('ThisComputer.securityMode')
vuln
Сообщения: 2
Зарегистрирован: Вс ноя 01, 2015 3:04 pm
Благодарил (а): 0
Поблагодарили: 0

Re: Raspberry GPIO

Сообщение vuln » Пн ноя 09, 2015 11:30 pm

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

Для того чтобы "majordomo" получал данные (поправьте если я ошибаюсь):
1) можно с самого скрипта по событию формировать запрос типа: (http://localhost/objects/?object=sensor ... d&status=1)
2)или записывать прямо на базу.
на чет второго пункта где бы посмотреть структуру - чтобы знать куда вносить данные?

P.S ни где нету инструкции типа: Инструкция по написанию модуля для новичков )) :oops: :roll:
AlexK-71
Сообщения: 28
Зарегистрирован: Сб ноя 29, 2014 12:20 am
Благодарил (а): 7 раз
Поблагодарили: 0

Re: Raspberry GPIO

Сообщение AlexK-71 » Чт ноя 12, 2015 4:07 pm

Бился я с GPIO
Сейчас у меня вот так работает
http://majordomo.smartliving.ru/forum/v ... pio#p17816
Ответить