Периодический опрос состояния пинов на выключателе

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

Модератор: immortal

Аватара пользователя
Alexander Travkin
Сообщения: 14
Зарегистрирован: Вс янв 20, 2019 9:46 pm
Благодарил (а): 0
Поблагодарили: 0

Периодический опрос состояния пинов на выключателе

Сообщение Alexander Travkin » Вс янв 20, 2019 9:57 pm

Доброго времени суток уважаемые!
Прошу прощения если эта тема уже поднималась на форуме, но я не нашел.
Вопрос вот в чем: Как в MajorDomo организовать опрос состояния пинов выключателя раз в секунду.
У меня есть 3 китайских NoName выключателя, каждый управляется с помощью GET команд типа:

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

$value = 'http://192.168.1.61/i.js?stas=' . '0' . '&dchannel=0'
а состояние пинов в данный момент можно отследить через запрос

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

http://192.168.1.61/gpio.js
который возвращает строку JSON
Есть два метода 1 - для опроса пинов 2 - для включения/выключения пинов. Временно повесил управление на кнопки (сначала запуск первого сценария, потом запуск второго), но хотелось бы отображать в меню реальную картину, когда домашние переключают свет, чтобы у меня тоже показывалось
Chainik
Сообщения: 1462
Зарегистрирован: Вс янв 10, 2016 11:05 am
Благодарил (а): 260 раз
Поблагодарили: 454 раза

Re: Периодический опрос состояния пинов на выключателе

Сообщение Chainik » Вс янв 20, 2019 10:19 pm

Alexander Travkin писал(а):
Вс янв 20, 2019 9:57 pm
...
Вопрос вот в чем: Как в MajorDomo организовать опрос состояния пинов выключателя раз в секунду.
...
Пишите в конце метода, который занимается опросом

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

setTimeOut('myTimer'.time(),'callMethod("Имя_текущего_ОбъектМетода");',1);
В результате метод будет перезапускать сам себя раз в секунду.

Чтобы этот метод первоначально запускался после старта MajorDomo, можно записать в «onNewMinute» (Панель управления --> ОБЪЕКТЫ --> Объекты --> [класс] Timer --> ClockChime --> onNewMinute) такой код же код (ниже строки «$m=date('i',time());»), т.е.

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

setTimeOut('myTimer_1'.time(),'callMethod("Имя_опрашивающего_ОбъектМетода_1");',1);
setTimeOut('myTimer_2'.time(),'callMethod("Имя_опрашивающего_ОбъектМетода_2");',1);
setTimeOut('myTimer_3'.time(),'callMethod("Имя_опрашивающего_ОбъектМетода_3");',1);
Раз у вас 3 выключателя.
skysilver
Сообщения: 3006
Зарегистрирован: Чт авг 21, 2014 8:28 am
Откуда: Киров, Россия
Благодарил (а): 400 раз
Поблагодарили: 1753 раза
Контактная информация:

Re: Периодический опрос состояния пинов на выключателе

Сообщение skysilver » Вс янв 20, 2019 10:54 pm

Alexander Travkin писал(а):
Вс янв 20, 2019 9:57 pm
а состояние пинов в данный момент можно отследить через запрос
Они точно не умеют сами слать события о смене своего состояния? И зачем каждую секунду опрашивать?
MajorDoMo (GitHub) на Cubietruck. ОС Debian 7 (wheezy) (kernel 3.4.105) с переносом на HDD.
Мой CONNECT | Блоги | Telegram
Аватара пользователя
Alexander Travkin
Сообщения: 14
Зарегистрирован: Вс янв 20, 2019 9:46 pm
Благодарил (а): 0
Поблагодарили: 0

Re: Периодический опрос состояния пинов на выключателе

Сообщение Alexander Travkin » Пн янв 21, 2019 12:15 am

skysilver писал(а):
Вс янв 20, 2019 10:54 pm
Alexander Travkin писал(а):
Вс янв 20, 2019 9:57 pm
а состояние пинов в данный момент можно отследить через запрос
Они точно не умеют сами слать события о смене своего состояния? И зачем каждую секунду опрашивать?
Сами не умеют(((
Аватара пользователя
Alexander Travkin
Сообщения: 14
Зарегистрирован: Вс янв 20, 2019 9:46 pm
Благодарил (а): 0
Поблагодарили: 0

Re: Периодический опрос состояния пинов на выключателе

Сообщение Alexander Travkin » Пн янв 21, 2019 12:16 am

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

setTimeOut('myTimer'.time(),'callMethod("Имя_текущего_ОбъектМетода");',1);
Не сработало((( Может у меня что-то не включено?
skysilver
Сообщения: 3006
Зарегистрирован: Чт авг 21, 2014 8:28 am
Откуда: Киров, Россия
Благодарил (а): 400 раз
Поблагодарили: 1753 раза
Контактная информация:

Re: Периодический опрос состояния пинов на выключателе

Сообщение skysilver » Пн янв 21, 2019 12:18 am

А раз в секунду за каким их опрашивать? Или реле свое они сами тоже не умеют локально переключать?
MajorDoMo (GitHub) на Cubietruck. ОС Debian 7 (wheezy) (kernel 3.4.105) с переносом на HDD.
Мой CONNECT | Блоги | Telegram
Аватара пользователя
Alexander Travkin
Сообщения: 14
Зарегистрирован: Вс янв 20, 2019 9:46 pm
Благодарил (а): 0
Поблагодарили: 0

Re: Периодический опрос состояния пинов на выключателе

Сообщение Alexander Travkin » Пн янв 21, 2019 12:20 am

Свое реле умеют переключать. Опрашиваю, чтобы знать в какое состояние переключить в 0 или 1. И чтобы отклик был от кнопок.
skysilver
Сообщения: 3006
Зарегистрирован: Чт авг 21, 2014 8:28 am
Откуда: Киров, Россия
Благодарил (а): 400 раз
Поблагодарили: 1753 раза
Контактная информация:

Re: Периодический опрос состояния пинов на выключателе

Сообщение skysilver » Пн янв 21, 2019 12:28 am

Alexander Travkin писал(а):
Пн янв 21, 2019 12:20 am
Свое реле умеют переключать. Опрашиваю, чтобы знать в какое состояние переключить в 0 или 1. И чтобы отклик был от кнопок.
Т.е. по факту только для актуального отображения в веб-морде. И зачем раз в секунду-то? Ты постоянно сидишь и втыкаешь в веб-морду, чтобы увидеть вот этот моментальных отклик? Ты понимаешь, сколько будет сделано запросов за сутки, ради пары-тройки щелканий выключателем?

Имхо, пиши в минутный таймер. Опроса раз в минуту выше крыши хватит.
MajorDoMo (GitHub) на Cubietruck. ОС Debian 7 (wheezy) (kernel 3.4.105) с переносом на HDD.
Мой CONNECT | Блоги | Telegram
Аватара пользователя
Alexander Travkin
Сообщения: 14
Зарегистрирован: Вс янв 20, 2019 9:46 pm
Благодарил (а): 0
Поблагодарили: 0

Re: Периодический опрос состояния пинов на выключателе

Сообщение Alexander Travkin » Пн янв 21, 2019 12:35 am

Написал в минутный таймер

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

callMethod("Имя_опрашивающего_ОбъектМетода_1");
при перезапуске majordomo информация не обновляется
skysilver
Сообщения: 3006
Зарегистрирован: Чт авг 21, 2014 8:28 am
Откуда: Киров, Россия
Благодарил (а): 400 раз
Поблагодарили: 1753 раза
Контактная информация:

Re: Периодический опрос состояния пинов на выключателе

Сообщение skysilver » Пн янв 21, 2019 1:17 am

Alexander Travkin писал(а):
Пн янв 21, 2019 12:35 am
Написал в минутный таймер

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

callMethod("Имя_опрашивающего_ОбъектМетода_1");
при перезапуске majordomo информация не обновляется
Скрин покажи, куда и как вписал.
И код самого метода неплохо бы увидеть.
MajorDoMo (GitHub) на Cubietruck. ОС Debian 7 (wheezy) (kernel 3.4.105) с переносом на HDD.
Мой CONNECT | Блоги | Telegram
Ответить