Имитация присутствия в доме

Использование системы в различных ситуациях, вопросы программирования сценариев.

Модератор: immortal

Ответить
Аватара пользователя
~220v
Сообщения: 96
Зарегистрирован: Пн дек 23, 2019 5:56 pm
Благодарил (а): 109 раз
Поблагодарили: 18 раз

Имитация присутствия в доме

Сообщение ~220v » Пт май 08, 2020 5:40 pm

Добрый день,
Хочу сделать имитацию присутствия в доме, - идея в том чтоб запускать скрипт после захода солнца + рандомное время (20...60 мин)
Вообще не знаю как, помогите пожалуйста...
Chainik
Сообщения: 1465
Зарегистрирован: Вс янв 10, 2016 11:05 am
Благодарил (а): 262 раза
Поблагодарили: 455 раз

Re: Имитация присутствия в доме

Сообщение Chainik » Пт май 08, 2020 6:01 pm

~220v писал(а):
Пт май 08, 2020 5:40 pm
Добрый день,
Хочу сделать имитацию присутствия в доме, - идея в том чтоб запускать скрипт после захода солнца + рандомное время (20...60 мин)
Вообще не знаю как, помогите пожалуйста...
Ну само время заката посчитать просто (viewtopic.php?f=27&t=2215&start=41). Прибавить к этому времени нужное количество минут тоже несложно. Так что ваша идея вполне реализуема.

Короче говоря, пишете в onNewMinute что-то вроде этого:

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

if (timeIs(date("H:i",date_sun_info(time(), 50.335084, 30.724813)['sunset']+(60*30)))) {
runScriptSafe('ImitatsyyaPrisutstviya');
}
и "дело в шляпе".
(В примере я прибавил ко времени заката полчаса. А вообще у функции date_sun_info есть параметр [civil_twilight_end]. Наверное, это то, что вам нужно.)
За это сообщение автора Chainik поблагодарил:
~220v (Пт май 08, 2020 10:57 pm)
Рейтинг: 1.16%
Аватара пользователя
~220v
Сообщения: 96
Зарегистрирован: Пн дек 23, 2019 5:56 pm
Благодарил (а): 109 раз
Поблагодарили: 18 раз

Re: Имитация присутствия в доме

Сообщение ~220v » Пт май 08, 2020 11:34 pm

Спасибо большое! я не программер, и для меня каждое слово кода это часы гугления. Но тут я понял, что единственный механизм так сказать шедулера это дёргать проверку каждую минуту. И ещё date_sun_info это сильно сложно для меня. Можно как-то взять данные с веб переменной Sunset Time она у меня правильная, думаю так будет проще. К ней тоже так же просто можно добавить +30мин?
Chainik
Сообщения: 1465
Зарегистрирован: Вс янв 10, 2016 11:05 am
Благодарил (а): 262 раза
Поблагодарили: 455 раз

Re: Имитация присутствия в доме

Сообщение Chainik » Сб май 09, 2020 12:49 am

Так я тоже далек от программирования. Здесь вообще мало программистов, но спасибо им за то, что они есть.

Я с веб-переменными не работал, поэтому не знаю, как с ними работать. А вот с Объект.Свойствами работать просто. В системе уже есть Объект.Свойство "ThisComputer.SunSetTime". Вот туда обычно пользователи сохраняют рассчитанное время заката. Рассчитывать можно по-разному. Вот какой код? например, использует ув.xor: viewtopic.php?f=27&t=2215&start=34
В его варианте время заката рассчитывается только раз в сутки и при старте системы. В принципе, вы так тоже можете делать:

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

$lat=55.4734; // широта
$long= 37.7848; // долгота
$SunSetTimePlus = date_sun_info(time(), $lat, $long)['sunset']+(60*30);
ClearScheduledJob("job_SunSetPlus");
AddScheduledJob("job_SunSetPlus","runScriptSafe('ImitatsyyaPrisutstviya');", $SunSetTimePlus );
Сам не пробовал, но чтобы выполнять что-то раз в сутки, помещают код в "onNewDay" (у меня, кстати, нет такого в таймерах), а чтобы при старте системы -- в "Computer-> StartUp".
За это сообщение автора Chainik поблагодарил:
~220v (Сб май 09, 2020 7:42 am)
Рейтинг: 1.16%
Аватара пользователя
~220v
Сообщения: 96
Зарегистрирован: Пн дек 23, 2019 5:56 pm
Благодарил (а): 109 раз
Поблагодарили: 18 раз

Re: Имитация присутствия в доме

Сообщение ~220v » Сб май 09, 2020 8:14 am

Благодарю за помощь! 2-я идея запуска даже лучше, если я правильно понял:
1 - рассчитываем время заката по координатам, добавляем 1800 секунд
2 - удаляем старое задание
3 - создаём новое задание по рассчитанному времени
Chainik
Сообщения: 1465
Зарегистрирован: Вс янв 10, 2016 11:05 am
Благодарил (а): 262 раза
Поблагодарили: 455 раз

Re: Имитация присутствия в доме

Сообщение Chainik » Сб май 09, 2020 9:41 am

~220v писал(а):
Сб май 09, 2020 8:14 am
Благодарю за помощь! 2-я идея запуска даже лучше, если я правильно понял:
1 - рассчитываем время заката по координатам, добавляем 1800 секунд
2 - удаляем старое задание
3 - создаём новое задание по рассчитанному времени
Да, вы все правильно поняли.
Ответить