Подскажите как правильно создать таймер!

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

Модератор: immortal

Yashalta
Сообщения: 318
Зарегистрирован: Вс май 20, 2018 9:27 am

Re: Подскажите как правильно создать таймер!

Сообщение Yashalta »

Chainik писал(а): Пт апр 05, 2019 11:31 pm Это он про "динамическое относительно облачности". А чтобы учесть фактический уровень освещенности (и на основе этого смещать ежедневное время включения и выключения), естественно, нужны показания уличного датчика освещенности.
Спасибо, а где это готовое можно посмотреть?
Chainik
Сообщения: 1465
Зарегистрирован: Вс янв 10, 2016 11:05 am

Re: Подскажите как правильно создать таймер!

Сообщение Chainik »

Yashalta писал(а): Сб апр 06, 2019 12:02 am ...
Спасибо, а где это готовое можно посмотреть?
Как сделать, например, здесь (https://ab-log.ru/smart-house/ethernet/ ... or-outdoor).
Какой датчик выбрать, например, здесь (https://ab-log.ru/smart-house/ethernet/megad-tsl2591).
Хотя были еще опыты:
https://ab-log.ru/smart-house/ethernet/light-sensor
https://ab-log.ru/smart-house/ethernet/temt6000-test
https://ab-log.ru/smart-house/ethernet/bh1750-megad

По алгоритму берутся несколько показаний за период (вдруг случайное облачно набежало), усредняются и на основе этих усредненных данных выдается команда. Время действия (вкл/выкл) находится в неком диапазоне, приближенном ко времени заката/восхода.
Ссылку на пример кода не дам (не видел). Но интуитивно, вроде бы все понятно.

Извиняюсь, что несколько отклонился от темы топика.
Logrus
Сообщения: 2113
Зарегистрирован: Пт апр 07, 2017 12:20 pm

Re: Подскажите как правильно создать таймер!

Сообщение Logrus »

https://connect.smartliving.ru/profile/ ... -koda.html
пп. 2 в третьем примеры таймеров (синтаксис)
а впрочем зачем там писать, что б потом за каждым бегать и ссылку кидать :cry:
Telegram | Блог
Raspberry Pi3, с образа от Сергея 3.31, PHP 7, флешка 16 Гб работает с 10.09.2017
Почти всё время уходит на исправление ошибок, оставшееся - на их повторение. (с) ))) Спасибо
Аватара пользователя
xor
Сообщения: 2044
Зарегистрирован: Сб ноя 22, 2014 8:45 pm

Re: Подскажите как правильно создать таймер!

Сообщение xor »

У меня, к примеру, облачность в процентах из прогноза берется

Отправлено с моего Redmi 4X через Tapatalk

Chainik
Сообщения: 1465
Зарегистрирован: Вс янв 10, 2016 11:05 am

Re: Подскажите как правильно создать таймер!

Сообщение Chainik »

xor писал(а): Сб апр 06, 2019 12:09 pm У меня, к примеру, облачность в процентах из прогноза берется

Отправлено с моего Redmi 4X через Tapatalk
Ну это вы так "выкрутились", ввиду отсутствия датчика освещенности.
Интересно, удалось таким образом "попасть" (хотя бы по ощущениям) в более-менее точное наступление суммерек/ночи/зори/дня?
Аватара пользователя
xor
Сообщения: 2044
Зарегистрирован: Сб ноя 22, 2014 8:45 pm

Re: Подскажите как правильно создать таймер!

Сообщение xor »

Chainik писал(а): Сб апр 06, 2019 1:08 pm
xor писал(а): Сб апр 06, 2019 12:09 pm У меня, к примеру, облачность в процентах из прогноза берется

Отправлено с моего Redmi 4X через Tapatalk
Ну это вы так "выкрутились", ввиду отсутствия датчика освещенности.
Интересно, удалось таким образом "попасть" (хотя бы по ощущениям) в более-менее точное наступление суммерек/ночи/зори/дня?
получается для сезона. зимой и летом подкручиваю
DarknessMode.activate:

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

//задержка вкл уличного света после заката от 1мин (100% облачность=10 баллов) до ~11 мин (облачность 0%)

callMethodSafe('testRGB.turnon'); //в доме подсветка
callMethodSafe('nl6.turnon'); //гостиная
Settimeout('StreetLightOn2',"cm('nl2.turnon');",(11-gg('weather_my.clouds'))*60); //крыльцо
Settimeout('LoungeLightOn2',"cm('nl16.turnon');",(11-gg('weather_my.clouds'))*60); //дом снаружи
с зарей не встаю, просто гашу всё снаружи невыключенное
Logrus
Сообщения: 2113
Зарегистрирован: Пт апр 07, 2017 12:20 pm

Re: Подскажите как правильно создать таймер!

Сообщение Logrus »

xor писал(а): Сб апр 06, 2019 12:09 pm У меня, к примеру, облачность в процентах из прогноза берется

Отправлено с моего Redmi 4X через Tapatalk
аналогично и там все до безобразия просто, со скрипта восход, закат в линукс тайм, с опенвейзер облачность в процентах, это на примере выше ночного добавлено в код еще две строчки
работает идеально
Telegram | Блог
Raspberry Pi3, с образа от Сергея 3.31, PHP 7, флешка 16 Гб работает с 10.09.2017
Почти всё время уходит на исправление ошибок, оставшееся - на их повторение. (с) ))) Спасибо
Logrus
Сообщения: 2113
Зарегистрирован: Пт апр 07, 2017 12:20 pm

Re: Подскажите как правильно создать таймер!

Сообщение Logrus »

Yashalta писал(а): Сб апр 06, 2019 12:02 am
Chainik писал(а): Пт апр 05, 2019 11:31 pm Это он про "динамическое относительно облачности". А чтобы учесть фактический уровень освещенности (и на основе этого смещать ежедневное время включения и выключения), естественно, нужны показания уличного датчика освещенности.
Спасибо, а где это готовое можно посмотреть?
viewtopic.php?f=27&t=2215&p=101322#p101322
Telegram | Блог
Raspberry Pi3, с образа от Сергея 3.31, PHP 7, флешка 16 Гб работает с 10.09.2017
Почти всё время уходит на исправление ошибок, оставшееся - на их повторение. (с) ))) Спасибо
Chainik
Сообщения: 1465
Зарегистрирован: Вс янв 10, 2016 11:05 am

Re: Подскажите как правильно создать таймер!

Сообщение Chainik »

Кстати, для теста попробовал в одном скрипте создать Job и Timer с одинаковыми именами (первой строчкой в коде шел Job), так вот Job не сработал. До тех пор, пока не задал ему имя, отличное от имени таймера.
Отсюда мораль: имена таймеров и джобов надо соотносить между собой во избежание.
Аватара пользователя
xor
Сообщения: 2044
Зарегистрирован: Сб ноя 22, 2014 8:45 pm

Re: Подскажите как правильно создать таймер!

Сообщение xor »

Chainik писал(а): Вт апр 09, 2019 10:53 pm Кстати, для теста попробовал в одном скрипте создать Job и Timer с одинаковыми именами (первой строчкой в коде шел Job), так вот Job не сработал. До тех пор, пока не задал ему имя, отличное от имени таймера.
Отсюда мораль: имена таймеров и джобов надо соотносить между собой во избежание.
да, это одно и то же

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

function setTimeOut($title, $commands, $timeout)
{
    clearTimeOut($title);
    $res = addScheduledJob($title, $commands, time() + $timeout);
    return $res;
}
Ответить