Страница 2 из 3

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

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


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


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

if(gg(указываем объект компьютер?) == 1) {
//Код когда дома
} else {
//Нету дома телефона
}

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

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


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


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

if(gg(указываем объект компьютер?) == 1) {
//Код когда дома
} else {
//Нету дома телефона
}
Создали объект: MyPhone
В объекте свойства: status
В устройствах online привязали к MyPhone.status
Далее в сценариях или где вы там настраиваете логику пишете код, который я дал выше.

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

Добавлено: Пт июл 19, 2019 9:48 pm
Divan
Погодите, этот код который вы написали позволяет запускать сценарий "Пришел с работы домой" когда телефон онлайн, это у меня работает. Но когда я дома, то телефон целый день онлайн и он в полночь запустит этот сценарии "Пришел с работы домой", а мне надо, чтобы когда телефон онлайн, то не запускал сценарии. Типа должно быть правило. если телефон в сети, если компьютер в сети, то запуск сценарий "Пришел с работы домой" запрещен. Можно так сделать?

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

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

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

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

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

Буду благодарен, если покажете все скриншотами или схему в Blockly.

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

Добавлено: Сб июл 20, 2019 12:12 am
Chainik
В блокли не подскажу (не пользуюсь). А по коду, примерно, так.
Правда, предварительно вы должны выяснить адрес вашего компьютера (командная строка >>> 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')) {
//ВЫПОЛНЯЕМ ДЕЙСТВИЕ
} 
}

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

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

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

Добавлено: Сб июл 20, 2019 10:58 am
SmoKE_xDDD
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 если оно пустое...

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

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

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

Первое условие - Мой телефон и Мой компьютер в сети, выполнить - пусто (нечего запускать)
Второе условие - Мой телефон в сети, выполнить условие (запускается сценарии)

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

Добавлено: Сб июл 20, 2019 11:33 am
SmoKE_xDDD

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

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