Страница 1 из 2
Управление поливом по расписанию
Добавлено: Пн фев 04, 2019 9:03 pm
Forth
Планирую для теплицы на даче применить капельный полив и орашение. Будет 3 крана с эл приводами включение и отображение состояния на сцене. Вопрос в следующем, как на сцене вывести информацию времени включения полива на день и как настроить, чтоб на сцене просто менять время включения? Допустим кран 1 включается каждый день в 06:00 и в 21:00 на 10 мин, кран 2 через день в 20:30 на 15 мин, а кран 3 каждую ночь через 2 часа на 5 минут с 22:00 до 05:00.
Re: Управление поливом по расписанию
Добавлено: Пн фев 04, 2019 10:28 pm
Chainik
Forth писал(а): ↑Пн фев 04, 2019 9:03 pm
Планирую для теплицы на даче применить капельный полив и орашение. Будет 3 крана с эл приводами включение и отображение состояния на сцене. Вопрос в следующем, как на сцене вывести информацию времени включения полива на день и как настроить, чтоб на сцене просто менять время включения? Допустим кран 1 включается каждый день в 06:00 и в 21:00 на 10 мин, кран 2 через день в 20:30 на 15 мин, а кран 3 каждую ночь через 2 часа на 5 минут с 22:00 до 05:00.
С точки зрения логики код будет примерно такой (для простоты можно все "запихнуть" в "OnNewMinute"):
Код: Выделить всё
$day_num=(int)date('w');
//Для крана 1
if (timeIs('06:00') || timeIs('21:00')) {
cm('Кран_1.turnOn');
setTimeOut('myTimer_ Кран_1','cm("Кран_1.turnOff");',60*10);
}
//Для крана 2
if (Тут надо придумать условие, при котором кран включается через день, с ходу не придумал) {
//такое "не прокатывает", т.к. на следующей неделе дни недели будут уже четные if ($day_num == "1" || $day_num == "3" || $day_num == "5" || $day_num == "0") {
if (timeIs('20:30')) {
cm('Кран_2.turnOn');
setTimeOut('myTimer_ Кран_2','cm("Кран_2.turnOff");',60*15);
}
}
//Для крана 3
if (timeIs('22:00') || timeIs('00:00') || timeIs('02:00') || timeIs('04:00')) {
cm('Кран_3.turnOn');
setTimeOut('myTimer_ Кран_3','cm("Кран_3.turnOff");',60*5);
}
Вместо "жесткого" прописанного времени должна быть переменная, которая получает свое значение из свойства. А свойство, в свою очередь, должно получать свое значение из соответствующего интерфейсного элемента.
По поводу интерфейса недавно человек похожую задачу решал (
viewtopic.php?f=24&t=6071&start=15).
Re: Управление поливом по расписанию
Добавлено: Вт фев 05, 2019 12:23 am
Logrus
Код: Выделить всё
$j = date('j', time());
if ($j%2 == 0) {
//четные дни
} else {
//не четные дни
}
Re: Управление поливом по расписанию
Добавлено: Вт фев 05, 2019 7:53 am
xor
Logrus писал(а):Код: Выделить всё
$j = date('j', time());
if ($j%2 == 0) {
//четные дни
} else {
//не четные дни
}
С 31 на 1 будет два подряд нечётных((
Отправлено с моего Redmi 4X через Tapatalk
Re: Управление поливом по расписанию
Добавлено: Вт фев 05, 2019 8:53 am
JackOfShadows
Функция мажордомо time() - время в timestamp.
Функция php strtotime - пересчёт в Unix timestamp (количество секунд с 1 января 1970 года)
То есть типа:
Код: Выделить всё
unsigned long secsSince1900 = strtotime( time() );
// Unix time starts on Jan 1 1970. In seconds, that's 2208988800:
const unsigned long seventyYears = 2208988800UL;
// subtract seventy years:
unsigned long epoch = secsSince1900 - seventyYears;
/// корректировка часового пояса
epoch = epoch + GMT * 3600;
uint32_t unix = epoch;
uint32_t seconds = unix % 60; /* Get seconds from unix */
unix /= 60; /* Go to minutes */
uint32_t minutes = unix % 60; /* Get minutes */
unix /= 60; /* Go to hours */
uint32_t hours = unix % 24; /* Get hours */
unix /= 24; /* Go to days */
И анализируем unix на чёт/нечет.
Re: Управление поливом по расписанию
Добавлено: Вт фев 05, 2019 9:09 am
Chainik
Еще можно попробовать, например, брать четные дни в четных неделях с начала года и нечетные -- в нечетных.
Код: Выделить всё
$week_num = date('W',strtotime(date("d.m.Y")));
if(($week_num % 2) == 0) {
if ($day_num == "2" || $day_num == "4" || $day_num == "6") {
if (timeIs('20:30')) {
//Команда на выполнение действия
}
} else {
if ($day_num == "1" || $day_num == "3" || $day_num == "5" || $day_num == "0") {
if (timeIs('20:30')) {
//Команда на выполнение действия
}
}
}
}
Думаю, идея понятна, но синтаксис надо проверять.
Re: Управление поливом по расписанию
Добавлено: Вт фев 05, 2019 9:31 am
xor
А ещё можно смотреть, вчера поливали - сегодня не надо, и наоборот
Отправлено с моего Redmi 4X через Tapatalk
Re: Управление поливом по расписанию
Добавлено: Вт фев 05, 2019 8:18 pm
Logrus
xor писал(а): ↑Вт фев 05, 2019 7:53 am
Logrus писал(а):Код: Выделить всё
$j = date('j', time());
if ($j%2 == 0) {
//четные дни
} else {
//не четные дни
}
С 31 на 1 будет два подряд нечётных((
Отправлено с моего Redmi 4X через Tapatalk
ок

а так, в ивенте в секундах 2-е суток
https://connect.smartliving.ru/profile/ ... -koda.html
Re: Управление поливом по расписанию
Добавлено: Вс фев 10, 2019 10:16 am
Forth
Всем спасибо за помощь.
Есть еще вопрос, как через чекбоксы задать переменные прям со сцены? Подозреваю, что это можно реализовать мою задумку.
Буду очень благодарен, если направите на пример реализации.
Прилагаю сцену, красным выделено, что мне нужно реализовать.
http://ipic.su/img/img7/fs/teplica04.1549782935.jpg
Re: Управление поливом по расписанию
Добавлено: Вс фев 10, 2019 8:19 pm
Strangeman
Forth писал(а): ↑Пн фев 04, 2019 9:03 pm
Планирую для теплицы на даче применить капельный полив и орашение.
Грунт?