Страница 89 из 97

Re: [Модуль] MQTT (mqtt)

Добавлено: Пн дек 06, 2021 3:04 pm
Sawwa
andrey040670 писал(а):
Сб дек 04, 2021 12:32 pm
Если цикл упал и не востанавливается, то внроятней всего упал москит.
Вероятней всего поможет:

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

sudo service mosquitto restart
Да и логи маскита глянуть не мешало бы, /var/log/mosquitto/
P/s
Если вы давно давно не обслуживали сервер, то я бы рекомендовал бы вам обновить систему, скорей всего обновится и маскит.

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

sudo apt-get update
sudo apt-get dist-upgrade
sudo apt-get autoremove
sudo apt-get clean
sudo apt-get autoclean
Здравствуйте. Пакеты системы обновил,это не помогло. Москит вроде тоже не причем. Первично отпадение интернета из-за глюков драйвера WiFi модема. Придется бороться с Убунтой, чтобы победить отвалы WiFi

Re: [Модуль] MQTT (mqtt)

Добавлено: Вт дек 07, 2021 1:01 am
xor
Sawwa писал(а):
Пн дек 06, 2021 3:01 pm
...
System.checkState я нашел в методах, там вот чего:

$details=array();
$red_state=0;
$yellow_state=0;

$cycles=array('states'=>'states','main'=>'main','execs'=>'exec','scheduler'=>'scheduler');
foreach($cycles as $k=>$v) {
$tm=getGlobal('ThisComputer.cycle_'.$k.'Run');
if (time()-$tm>5*60) {
$red_state=1;
$details[]=$v." ".LANG_GENERAL_CYCLE." ".LANG_GENERAL_STOPPED.".";
}
}
...

Ну дальше логика включения светофора по степени активности системы

Время рестарта циклов по-моему итак маленькое, 5 и 10 мин. Может быть время рестарта наоборот увеличить?

Где поискать количество циклов рестарта, подскажите пожалуйста :roll:

У меня еще идея возникла- как бы сделать индикацию какую-то, сообщение чтоли что интернет упал.
Чтоб на смарт чтоли присылал Мажор.

Откуда можно вытащить такое сообщение?

Буду также ковырять Ubuntu20, на тему отвалов wi-fi Народ в инете пишет, что есть такая проблема с 20й Убунтой, переустанавливать систему край как неохота, но отвалы эти уже достали :(

Благодарю за помощь!
странно, судя по приведенному коду у вас тут для таких циклов

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

$cycles=array('states'=>'states','main'=>'main','execs'=>'exec','scheduler'=>'scheduler');
идет только индикация останова, без экстренного перезапуска(
там должно быть что-то такое после строки

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

$details[]=$v." ".LANG_GENERAL_CYCLE." ".LANG_GENERAL_STOPPED.".";
  sg('ThisComputer.cycle_'.$k.'Run','');
  sg('ThisComputer.cycle_'.$k.'Control','restart');
допишите в $cycles свои циклы только

падение интернета обычно проверяют так (у меня в методе Communication.checkState)

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

if (!isOnline('Internet')) {
 $yellow_state=1;
 $details[]=LANG_GENERAL_NO_INTERNET_ACCESS;
}
в устройствах online должна быть запись с названием Internet и адресом, обычно доступным. У меня ya.ru
метод ping

Re: [Модуль] MQTT (mqtt)

Добавлено: Ср дек 08, 2021 10:48 am
Sawwa
Приветствую всех!

Продолжаю бороться с отвалом циклов в МД

Провел целый день в экспериментах, пробовал переустановить драйвера на WiFi,вроде получилось.
Отключал- выдергивал модуль WiFi, цикл MQTT перезапускается, через 20 мин после падения проверочный цикл выдает сообщение об остановке модуля,после подключения интернетеа сразу запускается и MQTT

С оповещением о падении MQTT- нашел на вкладке Статусы системы возможность присваивать каким-то состояниям модулей признаки важности, и их передавать в оповещения. Можно передавать оповещения в приложение Notify.Events, правда в случае падения интернета,это не поможет,ибо сервер ничего передать не сможет :(

Теперь следующая проблема. С утра затупил сам Мажордом, при этом основной модуль остается жив, а вот все абсолютно циклы ушли в стопор, и попытки их перезапустить не увенчались успехом. Странное состояние, анабиоз какой-то. Все циклы в ауте, а состояние системы видно через WEB ( я контролирую МД через приложение на смарте), проброс доступа черезоблачный сервис роутера Кинетик.

Так вот, возникал и раньше такой вопрос,а теперь и стал ребром- как перезагрузить систему МД дистанционно? Консоль в приложении работает. Поискал в Хелпе МД-ничего похожего не нашел. Наверноекоманда Restart,н с каими-нибудь ключами нужна?

Как крайний вариант рассматриваю дистанционную перезагрузку самого сервера на Убунте, как быреализоватьэто со смартфона? Через комп в том же сегменте домашней сети,как я понял- через SSH,а с мобилы как бы это проделать?

Подскажите уважаемые знатоки ваши соображения по этому поводу...

Благодарю!

Re: [Модуль] MQTT (mqtt)

Добавлено: Ср дек 08, 2021 10:55 am
andrey040670
Sawwa писал(а):
Ср дек 08, 2021 10:48 am
Так вот, возникал и раньше такой вопрос,а теперь и стал ребром- как перезагрузить систему МД дистанционно? Консоль в приложении работает.

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

sudo service majordomo start 
sudo service majordomo stop 
sudo service majordomo restart 
или

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

sudo systemctl restart majordomo

Re: [Модуль] MQTT (mqtt)

Добавлено: Ср дек 08, 2021 12:22 pm
Sawwa
andrey040670 писал(а):
Ср дек 08, 2021 10:55 am
Sawwa писал(а):
Ср дек 08, 2021 10:48 am
Так вот, возникал и раньше такой вопрос,а теперь и стал ребром- как перезагрузить систему МД дистанционно? Консоль в приложении работает.

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

sudo service majordomo start 
sudo service majordomo stop 
sudo service majordomo restart 
или

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

sudo systemctl restart majordomo
Пробовал запустить цикл через встроенный в МД терминал, но не получается

Может быть синтаксис неверный?

Re: [Модуль] MQTT (mqtt)

Добавлено: Ср дек 08, 2021 12:45 pm
andrey040670
Извиняюсь, я думал речь идёт о ssh терминале.
Через МД терминал надо:

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

safe_exec('sudo service majordomo restart');
Или, но дольше.

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

@SaveFile(DOC_ROOT . DIRECTORY_SEPARATOR . 'reboot', 'updated');
Но это вам врядли поможет, если легли все циклы, в том числе и cycle_execs, то есть терминал не сработает.
В этом случае перезапустить МД можно только через ssh терминал, командами описанными выше.

Re: [Модуль] MQTT (mqtt)

Добавлено: Ср дек 08, 2021 1:48 pm
Sawwa
andrey040670 писал(а):
Ср дек 08, 2021 12:45 pm
Извиняюсь, я думал речь идёт о ssh терминале.
Через МД терминал надо:

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

safe_exec('sudo service majordomo restart');
Или, но дольше.

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

@SaveFile(DOC_ROOT . DIRECTORY_SEPARATOR . 'reboot', 'updated');
Но это вам врядли поможет, если легли все циклы, в том числе и cycle_execs, то есть терминал не сработает.
В этом случае перезапустить МД можно только через ssh терминал, командами описанными выше.
Вот эта команда сработала

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

@SaveFile(DOC_ROOT . DIRECTORY_SEPARATOR . 'reboot', 'updated');
А предыдущая - ноль реакции

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

safe_exec('sudo service majordomo restart');
SSH что-то не желает работать, с доступом к машине какие-то проблемы :roll:

Re: [Модуль] MQTT (mqtt)

Добавлено: Ср дек 08, 2021 2:01 pm
andrey040670
Sawwa писал(а):
Ср дек 08, 2021 1:48 pm
SSH что-то не желает работать, с доступом к машине какие-то проблемы :roll:
Я бы для начала наладил бы ssh доступ, без него вы просто не сможете настроить систему.
Удалённый доступ ssh можно реализовать, например через прокси SOKCS5, если ваш метод тунелирования через роутер поддерживает SOKCS5.

Re: [Модуль] MQTT (mqtt)

Добавлено: Ср дек 08, 2021 2:02 pm
Sawwa
Было бы прекрасно, если в МД просто вставят кнопки на Панель Управления- Перезагрузить машину и Перезагрузить МД
Для чайников, как я...

Re: [Модуль] MQTT (mqtt)

Добавлено: Ср дек 08, 2021 2:08 pm
andrey040670
Sawwa писал(а):
Ср дек 08, 2021 2:02 pm
Было бы прекрасно, если в МД просто вставят кнопки на Панель Управления- Перезагрузить машину и Перезагрузить МД
Для чайников, как я...
Создайте сценарий "majordomo_cycle_restart":

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

say("Подготовка к перезагрузке циклов MajorDoMo",2);
@SaveFile(DOC_ROOT . DIRECTORY_SEPARATOR . 'reboot', 'updated');
И запускайте его из панели управления, там есть возможность вставить кнопку привязанную к сценарию.

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

http://IP/objects/?script=majordomo_cycle_restart
Например так:
Создайте сценарий с именем: "dash_my_block"

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

$array = array(
	'status' => 1,
//	'name' => 'Мои кнопочки',
	'type' => 'default',
	'reload' => false,
	'reload_time' => 5,
	'data' => array(
		'data' => '
		            <a href="https://mjdm.ru/forum/viewtopic.php?f=6&t=7303" target="_blank"><i class="glyphicon glyphicon-question-sign" style="margin-left: 0px; margin-right: 10px;"></i></a>
		            <a href="/objects/?script=majordomo_cycle_restart" target="hiframe" class="btn btn-default"><i class="glyphicon glyphicon-edit"></i> MD restart</a>
		            <iframe src=about:blank name=hiframe style="display:none"></iframe> ',
	),
);
echo json_encode($array);
Кнопка появится сама в ПУ.
Подробности https://mjdm.ru/forum/viewtopic.php?f=6&t=7303
P/s
Чуть подправил.