Запуск сценария, если устройство онлайн

Если вы только начинаете осваивать систему MajorDoMo и чего-то не знаете или не можете понять, то задавайте свои вопросы в этой ветке.

Модератор: immortal

Аватара пользователя
Divan
Сообщения: 859
Зарегистрирован: Пн июл 08, 2019 5:04 pm
Благодарил (а): 117 раз
Поблагодарили: 280 раз

Re: Запуск сценария, если устройство онлайн

Сообщение Divan » Сб июл 20, 2019 12:02 pm

Добавил код по вашему, все равно не работает, компьютер и телефон в сети, сценарий срабатывает.

if (getGlobal("Relay02.status") ==1 && timeBetween('10:00', '00:00')) {
callMethod("Relay04.turnOn");
$timerCode=<<<EOT
callMethod("Relay03.turnOn");
callMethod("Relay04.turnOff");
EOT;
setTimeOut('', $timerCode, (int)('600'));
}
Вложения
1.JPG
1.JPG (63.82 КБ) 3366 просмотров
2.JPG
2.JPG (29.25 КБ) 3366 просмотров
Xpenology DSM 6.2.2 + Ubuntu Server 18.10 + Majordomo + MariaDB
Аватара пользователя
Divan
Сообщения: 859
Зарегистрирован: Пн июл 08, 2019 5:04 pm
Благодарил (а): 117 раз
Поблагодарили: 280 раз

Re: Запуск сценария, если устройство онлайн

Сообщение Divan » Ср авг 07, 2019 7:29 pm

SmoKE_xDDD писал(а):
Сб июл 20, 2019 11:33 am

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

if (getGlobal("Relay02.status") == 1 && timeBetween('23:00', '00:00')) 
Если устройство включено и время между.
== 0 - тоже самое токо если устройство выключено

Теперь у меня ваш код работает, стал работать после того, как переустановил MD и закинул новую базу, а до этого по каким-то причинам он почему-то не работал, а потом стал сильно зависать. Спасибо вам )

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

if ((getGlobal('SRelays07.status') == 0) == timeBetween('23:00', '00:00')) {
  callMethod("SRelays01.turnOn");
  say('Включена люстра Зона 1', 2);
  $timerCode=<<<EOT
    runScript('Ночная лампа (белый цвет)', array());
    say('Включена ночная лампа', 2);
EOT;
  setTimeOut('Пришел домой', $timerCode, (int)('600'));
}
Xpenology DSM 6.2.2 + Ubuntu Server 18.10 + Majordomo + MariaDB
Аватара пользователя
Divan
Сообщения: 859
Зарегистрирован: Пн июл 08, 2019 5:04 pm
Благодарил (а): 117 раз
Поблагодарили: 280 раз

Re: Запуск сценария, если устройство онлайн

Сообщение Divan » Вс авг 25, 2019 2:17 pm

Скажите, как настроить сценарии таким образом, чтобы сценарий срабатывал один раз? У меня телефон в ждущем режиме выключает wifi, стоит его включить, так устройство становится онлайн и запускается сценарии. Если в модуле "Устройства онлайн" я выставлю пинг онлайн на 10 секунд и пинг офлайн на 30 минут, то придя домой, сценарии запустится не через 10 секунд, а запустится пока не отсчитает 30 минут.
Xpenology DSM 6.2.2 + Ubuntu Server 18.10 + Majordomo + MariaDB
Jilber
Сообщения: 684
Зарегистрирован: Ср май 03, 2017 7:41 pm
Благодарил (а): 113 раз
Поблагодарили: 107 раз

Re: Запуск сценария, если устройство онлайн

Сообщение Jilber » Вс авг 25, 2019 2:25 pm

Что значит один раз ? Только при возвращении домой ? И как интересно модуль определит пришли вы домой или просто телефон засыпал и отключал Wi-Fi ? Если есть какие-то датчики движения и включается режим "Никого нет дома", то можно попробовать добавить в сценарии проверку был ли включен этот режим при появлении телефона в сети: если был, то хозяин пришёл, а если нет - то просто проснулся телефон. :)
Аватара пользователя
Divan
Сообщения: 859
Зарегистрирован: Пн июл 08, 2019 5:04 pm
Благодарил (а): 117 раз
Поблагодарили: 280 раз

Re: Запуск сценария, если устройство онлайн

Сообщение Divan » Вс авг 25, 2019 2:48 pm

Во, супер предложение "добавить в сценарии проверку был ли включен этот режим при появлении телефона в сети: если был, то хозяин пришёл, а если нет - то просто проснулся телефон." У меня пока нет датчиков движения, вместо них я использовал модуль gps google location, сценарии запускался, как телефон оказывался в домашней зоне, но сейчас стал работать плохо, работает с большой задержкой, хотя обновляется каждую минуту, теперь я не использую gps tracker, а использую "Устройства онлайн", это надежнее, телефон автоматически включает Wi-Fi когда я оказываюсь дома. Хорошо бы добавить запись логов, как у модуля gps tracker, запись появилась, больше устройство не запустит сценарии и чтоб это включалось как дополнительная функция. Конечно можно в телефоне, в настройках Wi-Fi выключить функцию спящий режим, но это уже не умная система.
Xpenology DSM 6.2.2 + Ubuntu Server 18.10 + Majordomo + MariaDB
Jilber
Сообщения: 684
Зарегистрирован: Ср май 03, 2017 7:41 pm
Благодарил (а): 113 раз
Поблагодарили: 107 раз

Re: Запуск сценария, если устройство онлайн

Сообщение Jilber » Вс авг 25, 2019 2:53 pm

Я думаю в любом случае одним модулем "Устройства Online" тут не обойтись. Если есть что-то ещё, управляемое умным домом, то можно попробовать определять дома ли хозяин например по включенному освещению, кондиционеру, ТВ и т.д. Ну или вручную включать "Никого нет дома" перед уходом... :-)
За это сообщение автора Jilber поблагодарил:
Divan (Пн авг 26, 2019 12:35 am)
Рейтинг: 1.16%
Аватара пользователя
Divan
Сообщения: 859
Зарегистрирован: Пн июл 08, 2019 5:04 pm
Благодарил (а): 117 раз
Поблагодарили: 280 раз

Re: Запуск сценария, если устройство онлайн

Сообщение Divan » Вс авг 25, 2019 3:14 pm

Кстати, хороший вариант. Можно тогда сделать так, раз запустился сценарии, то можно сделать сверку, если свет включен, то больше не запускать сценарии. Надо попробовать собрать такой код.
Xpenology DSM 6.2.2 + Ubuntu Server 18.10 + Majordomo + MariaDB
Аватара пользователя
Divan
Сообщения: 859
Зарегистрирован: Пн июл 08, 2019 5:04 pm
Благодарил (а): 117 раз
Поблагодарили: 280 раз

Re: Запуск сценария, если устройство онлайн

Сообщение Divan » Пн авг 26, 2019 12:34 am

Jilber писал(а):
Вс авг 25, 2019 2:53 pm
Я думаю в любом случае одним модулем "Устройства Online" тут не обойтись. Если есть что-то ещё, управляемое умным домом, то можно попробовать определять дома ли хозяин например по включенному освещению, кондиционеру, ТВ и т.д. Ну или вручную включать "Никого нет дома" перед уходом... :-)
Вы мне подкинули идею (с меня вам лайк :D ) и я сделал следующее, добавил статус ночной лампы, теперь при повторном включении телефона сценарии не срабатывает. Вложил два варианта, в виде графического кода и в виде кода PHP. Теперь у меня работает так, если компьютер включен, то сценарии не запускается, если включена ночная лампа, то сценарии также не запускается, чтобы сценарии сработал, должны быть отключены оба устройства.

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

if (getGlobal("SRelays08.status") == getGlobal("SRelays07.status")) {
} else if (getGlobal("SRelays08.status") == getGlobal("SRelays04.status")) {
} else if (getGlobal("SRelays08.status") == timeBetween('23:15', '00:00')) {
  say('Запущен сценарии Пришел домой с работы', 2);
  callMethod("SRelays01.turnOn");
  $timerCode=<<<EOT
    runScript('Ночная лампа (белый цвет)', array());
    callMethod("SRelays03.turnOff");
EOT;
  setTimeOut('Пришел домой', $timerCode, (int)('600'));
}

Вложения
Безымянный.jpg
Графический код
Безымянный.jpg (93.11 КБ) 3204 просмотра
Xpenology DSM 6.2.2 + Ubuntu Server 18.10 + Majordomo + MariaDB
Аватара пользователя
xor
Сообщения: 2039
Зарегистрирован: Сб ноя 22, 2014 8:45 pm
Благодарил (а): 286 раз
Поблагодарили: 629 раз

Re: Запуск сценария, если устройство онлайн

Сообщение xor » Пн авг 26, 2019 1:07 am

Вы сами не запутаетесь?
вместо

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

if (getGlobal("SRelays08.status") == getGlobal("SRelays07.status")) {
} else if (getGlobal("SRelays08.status") == getGlobal("SRelays04.status")) {
} else if (getGlobal("SRelays08.status") == timeBetween('23:15', '00:00')) {
не яснее ли

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

if (gg("SRelays08.status") == timeBetween('23:15', '00:00') && gg("SRelays04.status")==0 && gg("SRelays07.status")==0) { 
если тел подключился в указанное время и комп и лампа выключены, то привет.
Аватара пользователя
Divan
Сообщения: 859
Зарегистрирован: Пн июл 08, 2019 5:04 pm
Благодарил (а): 117 раз
Поблагодарили: 280 раз

Re: Запуск сценария, если устройство онлайн

Сообщение Divan » Пн авг 26, 2019 1:13 am

Видите ли, я код собираю через Blockly, а код взял тот, который мне собрал сам Blockly, поэтому и представил графический код
Xpenology DSM 6.2.2 + Ubuntu Server 18.10 + Majordomo + MariaDB
Ответить