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

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

Модератор: immortal

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

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

Сообщение Divan » Пт июл 19, 2019 8:27 pm

Вот эти пункты я выполнил
1) Выдать ПК постоянный IP адрес в роутере
2) Добавить пинг хоста в устройства онлайн


привязать к обьекту.свойству - вы имеете ввиду добавить свойство ПК, верно?


Тут не совсем понимаю (, можете как чайнику расписать код, как будто вы бы себе писали?

if(gg(указываем объект компьютер?) == 1) {
//Код когда дома
} else {
//Нету дома телефона
}
Аватара пользователя
SmoKE_xDDD
Сообщения: 816
Зарегистрирован: Ср апр 17, 2019 5:00 pm
Откуда: Нижний Новгород
Благодарил (а): 110 раз
Поблагодарили: 899 раз

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

Сообщение SmoKE_xDDD » Пт июл 19, 2019 8:33 pm

Divan писал(а):
Пт июл 19, 2019 8:27 pm
Вот эти пункты я выполнил
1) Выдать ПК постоянный IP адрес в роутере
2) Добавить пинг хоста в устройства онлайн


привязать к обьекту.свойству - вы имеете ввиду добавить свойство ПК, верно?


Тут не совсем понимаю (, можете как чайнику расписать код, как будто вы бы себе писали?

if(gg(указываем объект компьютер?) == 1) {
//Код когда дома
} else {
//Нету дома телефона
}
Создали объект: MyPhone
В объекте свойства: status
В устройствах online привязали к MyPhone.status
Далее в сценариях или где вы там настраиваете логику пишете код, который я дал выше.
Аватара пользователя
Divan
Сообщения: 859
Зарегистрирован: Пн июл 08, 2019 5:04 pm
Благодарил (а): 117 раз
Поблагодарили: 280 раз

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

Сообщение Divan » Пт июл 19, 2019 9:48 pm

Погодите, этот код который вы написали позволяет запускать сценарий "Пришел с работы домой" когда телефон онлайн, это у меня работает. Но когда я дома, то телефон целый день онлайн и он в полночь запустит этот сценарии "Пришел с работы домой", а мне надо, чтобы когда телефон онлайн, то не запускал сценарии. Типа должно быть правило. если телефон в сети, если компьютер в сети, то запуск сценарий "Пришел с работы домой" запрещен. Можно так сделать?
Xpenology DSM 6.2.2 + Ubuntu Server 18.10 + Majordomo + MariaDB
Аватара пользователя
SmoKE_xDDD
Сообщения: 816
Зарегистрирован: Ср апр 17, 2019 5:00 pm
Откуда: Нижний Новгород
Благодарил (а): 110 раз
Поблагодарили: 899 раз

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

Сообщение SmoKE_xDDD » Пт июл 19, 2019 10:04 pm

Divan писал(а):
Пт июл 19, 2019 9:48 pm
Погодите, этот код который вы написали позволяет запускать сценарий "Пришел с работы домой" когда телефон онлайн, это у меня работает. Но когда я дома, то телефон целый день онлайн и он в полночь запустит этот сценарии "Пришел с работы домой", а мне надо, чтобы когда телефон онлайн, то не запускал сценарии. Типа должно быть правило. если телефон в сети, если компьютер в сети, то запуск сценарий "Пришел с работы домой" запрещен. Можно так сделать?
Вы меня простите, но я уже не знаю как вам объяснить.... :roll:
У вас в сценарии код есть? Есть. Оберните код в условие if()....
Аватара пользователя
Divan
Сообщения: 859
Зарегистрирован: Пн июл 08, 2019 5:04 pm
Благодарил (а): 117 раз
Поблагодарили: 280 раз

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

Сообщение Divan » Пт июл 19, 2019 11:07 pm

Не понимаю Вас к сожалению, я не программист. Я все собираю в Blockly. Можете у себя создать сценарий, чтобы лампа не включилась по сценарию когда у меня выходной (выходные у меня плавающие), компьютер и телефон с вечера до ночи онлайн, то этот сценарий не должен сработать в полночь и он должен срабатывать только, если компьютер выключен, а телефон в сети.

Вот примерная схема, прихожу я домой в 23:40, телефон у меня автоматически включает WiFi, MD его обнаруживает и переводит в режим в онлайн, запускается сценарий, включается свет. В выходной день, вечер, я сижу за компьютером, а в 23:40 у меня по сценарию включается свет, который должен включатся только тогда, когда я возвращаюсь с работы домой, а не когда я дома.

Буду благодарен, если покажете все скриншотами или схему в Blockly.
Chainik
Сообщения: 1462
Зарегистрирован: Вс янв 10, 2016 11:05 am
Благодарил (а): 260 раз
Поблагодарили: 454 раза

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

Сообщение Chainik » Сб июл 20, 2019 12:12 am

В блокли не подскажу (не пользуюсь). А по коду, примерно, так.
Правда, предварительно вы должны выяснить адрес вашего компьютера (командная строка >>> cmd >>> ipconfig). Напротив IPv4 будет указан IP-адрес вашего компьютера. Допустим, это будет адрес "192.168.0.30".
Теперь простейший код:

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

if (ping('192.168.0.30')) {
//НЕ ВЫПОЛНЯЕМ ДЕЙСТВИЕ
} else {
//ВЫПОЛНЯЕМ ДЕЙСТВИЕ
}
Но может быть несколько условий (к примеру, ip-адрес вашего смартфона "192.168.0.44"):

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

if (ping('192.168.0.30')) {
//НЕ ВЫПОЛНЯЕМ ДЕЙСТВИЕ
} else {
if (ping('192.168.0.44') && timeBetween('23:15', '02:30')) {
//ВЫПОЛНЯЕМ ДЕЙСТВИЕ
} 
}
Аватара пользователя
Divan
Сообщения: 859
Зарегистрирован: Пн июл 08, 2019 5:04 pm
Благодарил (а): 117 раз
Поблагодарили: 280 раз

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

Сообщение Divan » Сб июл 20, 2019 10:43 am

Спасибо что помогли :) , я понял вашу мысль и понял свою ошибку почему у меня не работало. Сделал как надо и все заработало. Создал инструкцию (см. во вложении) для будущих новичков, она может быть кому-то полезной.
Вложения
Запуск или запрет запуска сценария.pdf
(862.3 КБ) 114 скачиваний
За это сообщение автора Divan поблагодарил:
Garik908 (Вт дек 03, 2019 4:31 pm)
Рейтинг: 1.16%
Xpenology DSM 6.2.2 + Ubuntu Server 18.10 + Majordomo + MariaDB
Аватара пользователя
SmoKE_xDDD
Сообщения: 816
Зарегистрирован: Ср апр 17, 2019 5:00 pm
Откуда: Нижний Новгород
Благодарил (а): 110 раз
Поблагодарили: 899 раз

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

Сообщение SmoKE_xDDD » Сб июл 20, 2019 10:58 am

Divan писал(а):
Сб июл 20, 2019 10:43 am
Спасибо что помогли :) , я понял вашу мысль и понял свою ошибку почему у меня не работало. Сделал как надо и все заработало. Создал инструкцию (см. во вложении) для будущих новичков, она может быть кому-то полезной.
Немного невалидный код в примерах... лучше так:

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

if (getGlobal("Relay02.status") && timeBetween('23:00', '00:00')) {
callMethod("Relay04.turnOn");
$timerCode=<<<EOT
callMethod("Relay03.turnOn");
callMethod("Relay04.turnOff");
EOT;
setTimeOut('', $timerCode, (int)('600'));
}
Нет нужды использовать условие if если оно пустое...
Аватара пользователя
Divan
Сообщения: 859
Зарегистрирован: Пн июл 08, 2019 5:04 pm
Благодарил (а): 117 раз
Поблагодарили: 280 раз

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

Сообщение Divan » Сб июл 20, 2019 11:24 am

Если вставить ваш код, то тогда сценарии срабатывает, даже если компьютер включен. В моем случае идет сверка двух устройств в сети, если телефон в сети и компьютер в сети, то это ИСТИНА, и тогда сценарии для телефона блокируется, уже сколь угодно можно вкл/выкл телефон при включенном компьютере, сценарии не запустится. Попробуйте у себя проверить свой код и если вам не сложно, сделайте пошаговую инструкцию, все будут благодарны.

Я код вставил в блок: Если первое условие истинно, то выполняет первый блок команд. Иначе, если второе условие истинно, выполняет блок команд.

Первое условие - Мой телефон и Мой компьютер в сети, выполнить - пусто (нечего запускать)
Второе условие - Мой телефон в сети, выполнить условие (запускается сценарии)
Xpenology DSM 6.2.2 + Ubuntu Server 18.10 + Majordomo + MariaDB
Аватара пользователя
SmoKE_xDDD
Сообщения: 816
Зарегистрирован: Ср апр 17, 2019 5:00 pm
Откуда: Нижний Новгород
Благодарил (а): 110 раз
Поблагодарили: 899 раз

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

Сообщение SmoKE_xDDD » Сб июл 20, 2019 11:33 am

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

if (getGlobal("Relay02.status") == 1 && timeBetween('23:00', '00:00')) 
Если устройство включено и время между.
== 0 - тоже самое токо если устройство выключено
За это сообщение автора SmoKE_xDDD поблагодарил:
Divan (Ср авг 07, 2019 7:30 pm)
Рейтинг: 1.16%
Ответить