Страница 19 из 19
Re: Модуль Noolite
Добавлено: Пт июл 02, 2021 1:08 pm
Hasper
Добрый день, коллеги.
подскажите как можно перенести привязанные устройства с одного mjd в другой.
Делаю сейчас перенос на новый сервер оборудования.. очень уж ен хочется сбрасывать все привязки и привязать снова.
по сути стик остался тот же.. нужно лишь как то через Sql или еще как то перенести девайсы с привязками на новый mjd
Re: Модуль Noolite
Добавлено: Пт июл 02, 2021 5:12 pm
xor
Hasper писал(а): ↑Пт июл 02, 2021 1:08 pm
Добрый день, коллеги.
подскажите как можно перенести привязанные устройства с одного mjd в другой.
Делаю сейчас перенос на новый сервер оборудования.. очень уж ен хочется сбрасывать все привязки и привязать снова.
по сути стик остался тот же.. нужно лишь как то через Sql или еще как то перенести девайсы с привязками на новый mjd
таблицы с noo в имени перенести + объекты, ссылающиеся/привязанные должны быть соответственные. или просто на новом сервере восстановиться из архива со старого
Re: Модуль Noolite
Добавлено: Пн июл 05, 2021 10:19 am
Hasper
xor писал(а): ↑Пт июл 02, 2021 5:12 pm
Hasper писал(а): ↑Пт июл 02, 2021 1:08 pm
Добрый день, коллеги.
подскажите как можно перенести привязанные устройства с одного mjd в другой.
Делаю сейчас перенос на новый сервер оборудования.. очень уж ен хочется сбрасывать все привязки и привязать снова.
по сути стик остался тот же.. нужно лишь как то через Sql или еще как то перенести девайсы с привязками на новый mjd
таблицы с noo в имени перенести + объекты, ссылающиеся/привязанные должны быть соответственные. или просто на новом сервере восстановиться из архива со старого
Да спасибо.. перенес таблицы. все завелось
Re: Модуль Noolite
Добавлено: Пн авг 16, 2021 5:38 pm
sashmen
Добрый день, коллеги.
Подскажите как обновлять статус в SRF-10-1000 через mtrf-64-usb
Если делать опрос по одному каналу то вроде работает
- Screenshot_11.png (18.7 КБ) 3649 просмотров
- Screenshot_1.png (40.35 КБ) 3649 просмотров
Но если сделать опрос по каждому каналу каждые 3 секунды, то происходит перебивание запросов и статус по каналам не возвращается.
Так же есть проблема с отправкой нескольких команд, нужна задержка между отправкой на устройство SRF-10-1000.
Как можно реализовать последовательный опрос каналов? Может есть команда опроса сразу всех каналов? Как реализовать задержку?
Re: Модуль Noolite
Добавлено: Ср авг 25, 2021 4:44 pm
max37online
Добрый день всем!
Подскажите пожалуйста (лучше из личного опыта), насколько полноценно модуль работает с PRF-64 через Ethernet gate/HTTP-gate?
Интересует все: Noolite, Noolite-F, датчики...
Заранее спасибо!
Re: Модуль Noolite
Добавлено: Чт июл 28, 2022 7:56 pm
Eugene
Доброго времени всем!
не могу разобраться. Установил плагин, приложение noolite под linux/
Из-под командной строки "/usr/local/bin/noolite -api -sw_ch 1" - отлично работает, устройства связываются и всё переключает.
В mjdm настроил всё по инструкции, выбрав вариант "linux api", добавил устройство и связал его в плагине. Свойства успешно меняются любыми методами (и по кнопке, и просто задав принудительно статус 1/0), но реле никак не реагирует. Что я делаю не так?
- 2022-07-28_195505.png (21.56 КБ) 2402 просмотра
- 2022-07-28_195602.png (6.87 КБ) 2402 просмотра
Re: Модуль Noolite
Добавлено: Сб авг 06, 2022 10:01 am
Eugene
Традиционно. Сам спросил, - сам отвечу.
1. добавить пользователя "www-data" в группу "dialout", чтобы появились права записи в USB;
2. файл "noolite.class.php" откорреrтировать так, чтобы итоговая команда формировалась в соответствии с описанием команд приложения "noolite". В приведённом классе всё заточено на систему команд "noolitepc".
строка 661 исходная:
Код: Выделить всё
} elseif ($this->config['API_TYPE'] == 'linux') {
$cmdline = 'sudo noolitepc ' . $api_command;
}
должна получиться такой:
Код: Выделить всё
} elseif ($this->config['API_TYPE'] == 'linux') {
$cmdline = '/usr/local/bin/noolite -api ' . $api_command;
}
3. осталась проблема со вторым условием в классе, где проверяется, выполнялась ли недавно какая-либо команда, и если выполнялась, - то добавить паузу перед выполнением следующей и отправить в очередь. На ней происходит неясный затык и всё превращается в бесконечную "мигалку" со случайным интервалом. На неё уходят все ресурсы и система зависает.
вот это место:
Код: Выделить всё
} else {
$diff = $diff + 1;
DebMes("Noolite delayed (" . ($diff) . ") cmd: " . $cmdline, 'noolite');
setGlobal('ThisComputer.LatestNooliteCommand', time() + $diff, 0, $this->name);
setTimeOut('noocommand' . md5($cmdline), 'exec(\'' . $cmdline . '\');', $diff);
}
Re: Модуль Noolite
Добавлено: Сб авг 06, 2022 10:42 am
xor
Eugene писал(а): ↑Сб авг 06, 2022 10:01 am
3. осталась проблема со вторым условием в классе, где проверяется, выполнялась ли недавно какая-либо команда, и если выполнялась, - то добавить паузу перед выполнением следующей и отправить в очередь. На ней происходит неясный затык и всё превращается в бесконечную "мигалку" со случайным интервалом. На неё уходят все ресурсы и система зависает.
вот это место:
Код: Выделить всё
} else {
$diff = $diff + 1;
DebMes("Noolite delayed (" . ($diff) . ") cmd: " . $cmdline, 'noolite');
setGlobal('ThisComputer.LatestNooliteCommand', time() + $diff, 0, $this->name);
setTimeOut('noocommand' . md5($cmdline), 'exec(\'' . $cmdline . '\');', $diff);
}
Что-то было такое, кажется. Из-за отсутствия поддержки новых термостатов от ноо и непонятного поведения отказался от модуля и ноо у меня под виндой работает через скрипт и свой цикл. С точностью до кода это решение вам не подойдёт, но, может, даст идею. Переписал цикл ноо так - все команды к ноо закидываются в очередь - стек редиса, а цикл забирает из стека команды и пуляет их с небольшой задержкой 0,4 с между ними
вот фрагмент цикла:
Код: Выделить всё
$cycleVarName='ThisComputer.'.str_replace('.php', '', basename(__FILE__)).'Run';
saveToCache("MJD:$cycleVarName", time());
echo date("H:i:s") . " running " . basename(__FILE__) . PHP_EOL;
$redis = new Redis();
$redis->pconnect('127.0.0.1','6500');
$cmdline = 'c:/_majordomo/apps/noo/nooLiteF.exe api ';
while (1) {
if ((time() - $checked_time) > 20) {
$redis->close();
$checked_time = time();
$redis = new Redis();
$redis->pconnect('127.0.0.1','6500');
saveToCache("MJD:$cycleVarName", $checked_time);
}
$payload = $redis->lpop('noo'); //возьмём из очереди
if ($payload === false) {
usleep(1000);
}else{
exec($cmdline.$payload);
//DebMes(" !Noolite->: nooLiteF.exe api " . $payload, 'noolite');
}
if (isRebootRequired() || IsSet($_GET['onetime'])) {
$db->Disconnect();
exit;
}
usleep(400000);
}
а вот запись в очередь:
Код: Выделить всё
/*
работает совместно с циклом опроса очереди cycle_redis_que.php
помещает все приходящие команды в очередь noo
sendNooAPICmd("2 0 0 4 2 0 0 0 0 0 00000000 1");
*/
function sendNooAPICmd($api_command,$noo='',$source='')
{ //debmes('sendNooAPICmd '.$api_command.' src='.$source,'sendNooAPICmd');
if ($api_command) {
$redis = new Redis();
$redis->connect('127.0.0.1','6500');
$redis->rpush('noo',$api_command);
$redis->close();
}
}
Re: Модуль Noolite
Добавлено: Чт авг 11, 2022 9:35 pm
Eugene
Спасибо за идею конечно, но уж как-то заморочно.
Я пока убрал вообще запихивание в таймер. У меня нет нужды в обратной связи, пока так работает, - и хорошо.
Re: Модуль Noolite
Добавлено: Пт авг 12, 2022 10:42 am
xor
Eugene писал(а): ↑Чт авг 11, 2022 9:35 pm
Спасибо за идею конечно, но уж как-то заморочно.
Я пока убрал вообще запихивание в таймер. У меня нет нужды в обратной связи, пока так работает, - и хорошо.
а работа без задержек, вроде, не гарантируется свистками ноо. они об этом в доках на свистки пишут(