Управление поливом по расписанию
Модератор: immortal
-
- Сообщения: 48
- Зарегистрирован: Вс янв 13, 2019 4:37 pm
- Благодарил (а): 39 раз
- Поблагодарили: 0
Управление поливом по расписанию
Планирую для теплицы на даче применить капельный полив и орашение. Будет 3 крана с эл приводами включение и отображение состояния на сцене. Вопрос в следующем, как на сцене вывести информацию времени включения полива на день и как настроить, чтоб на сцене просто менять время включения? Допустим кран 1 включается каждый день в 06:00 и в 21:00 на 10 мин, кран 2 через день в 20:30 на 15 мин, а кран 3 каждую ночь через 2 часа на 5 минут с 22:00 до 05:00.
-
- Сообщения: 1462
- Зарегистрирован: Вс янв 10, 2016 11:05 am
- Благодарил (а): 260 раз
- Поблагодарили: 454 раза
Re: Управление поливом по расписанию
С точки зрения логики код будет примерно такой (для простоты можно все "запихнуть" в "OnNewMinute"):Forth писал(а): ↑Пн фев 04, 2019 9:03 pmПланирую для теплицы на даче применить капельный полив и орашение. Будет 3 крана с эл приводами включение и отображение состояния на сцене. Вопрос в следующем, как на сцене вывести информацию времени включения полива на день и как настроить, чтоб на сцене просто менять время включения? Допустим кран 1 включается каждый день в 06:00 и в 21:00 на 10 мин, кран 2 через день в 20:30 на 15 мин, а кран 3 каждую ночь через 2 часа на 5 минут с 22:00 до 05:00.
Код: Выделить всё
$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).
- Рейтинг: 1.16%
-
- Сообщения: 2084
- Зарегистрирован: Пт апр 07, 2017 12:20 pm
- Благодарил (а): 313 раз
- Поблагодарили: 457 раз
Re: Управление поливом по расписанию
Код: Выделить всё
$j = date('j', time());
if ($j%2 == 0) {
//четные дни
} else {
//не четные дни
}
- Рейтинг: 1.16%
Telegram | Блог
Raspberry Pi3, с образа от Сергея 3.31, PHP 7, флешка 16 Гб работает с 10.09.2017
Почти всё время уходит на исправление ошибок, оставшееся - на их повторение. (с) ))) Спасибо
Raspberry Pi3, с образа от Сергея 3.31, PHP 7, флешка 16 Гб работает с 10.09.2017
Почти всё время уходит на исправление ошибок, оставшееся - на их повторение. (с) ))) Спасибо
- xor
- Сообщения: 2039
- Зарегистрирован: Сб ноя 22, 2014 8:45 pm
- Благодарил (а): 286 раз
- Поблагодарили: 629 раз
Re: Управление поливом по расписанию
С 31 на 1 будет два подряд нечётных((Logrus писал(а):Код: Выделить всё
$j = date('j', time()); if ($j%2 == 0) { //четные дни } else { //не четные дни }
Отправлено с моего Redmi 4X через Tapatalk
- Рейтинг: 1.16%
win10 connect https://connect.smartliving.ru/profile/303
-
- Сообщения: 104
- Зарегистрирован: Ср янв 09, 2019 8:37 pm
- Благодарил (а): 23 раза
- Поблагодарили: 26 раз
Re: Управление поливом по расписанию
Функция мажордомо time() - время в timestamp.
Функция php strtotime - пересчёт в Unix timestamp (количество секунд с 1 января 1970 года)
То есть типа:
И анализируем unix на чёт/нечет.
Функция 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 */
- За это сообщение автора JackOfShadows поблагодарил:
- Forth (Вт фев 05, 2019 6:36 pm)
- Рейтинг: 1.16%
-
- Сообщения: 1462
- Зарегистрирован: Вс янв 10, 2016 11:05 am
- Благодарил (а): 260 раз
- Поблагодарили: 454 раза
Re: Управление поливом по расписанию
Еще можно попробовать, например, брать четные дни в четных неделях с начала года и нечетные -- в нечетных.
Думаю, идея понятна, но синтаксис надо проверять.
Код: Выделить всё
$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')) {
//Команда на выполнение действия
}
}
}
}
- Рейтинг: 1.16%
- xor
- Сообщения: 2039
- Зарегистрирован: Сб ноя 22, 2014 8:45 pm
- Благодарил (а): 286 раз
- Поблагодарили: 629 раз
Re: Управление поливом по расписанию
А ещё можно смотреть, вчера поливали - сегодня не надо, и наоборот
Отправлено с моего Redmi 4X через Tapatalk
Отправлено с моего Redmi 4X через Tapatalk
- Рейтинг: 1.16%
win10 connect https://connect.smartliving.ru/profile/303
-
- Сообщения: 2084
- Зарегистрирован: Пт апр 07, 2017 12:20 pm
- Благодарил (а): 313 раз
- Поблагодарили: 457 раз
Re: Управление поливом по расписанию
окxor писал(а): ↑Вт фев 05, 2019 7:53 amС 31 на 1 будет два подряд нечётных((Logrus писал(а):Код: Выделить всё
$j = date('j', time()); if ($j%2 == 0) { //четные дни } else { //не четные дни }
Отправлено с моего Redmi 4X через Tapatalk
а так, в ивенте в секундах 2-е суток
https://connect.smartliving.ru/profile/ ... -koda.html
Telegram | Блог
Raspberry Pi3, с образа от Сергея 3.31, PHP 7, флешка 16 Гб работает с 10.09.2017
Почти всё время уходит на исправление ошибок, оставшееся - на их повторение. (с) ))) Спасибо
Raspberry Pi3, с образа от Сергея 3.31, PHP 7, флешка 16 Гб работает с 10.09.2017
Почти всё время уходит на исправление ошибок, оставшееся - на их повторение. (с) ))) Спасибо
-
- Сообщения: 48
- Зарегистрирован: Вс янв 13, 2019 4:37 pm
- Благодарил (а): 39 раз
- Поблагодарили: 0
Re: Управление поливом по расписанию
Всем спасибо за помощь.
Есть еще вопрос, как через чекбоксы задать переменные прям со сцены? Подозреваю, что это можно реализовать мою задумку.
Буду очень благодарен, если направите на пример реализации.
Прилагаю сцену, красным выделено, что мне нужно реализовать.
http://ipic.su/img/img7/fs/teplica04.1549782935.jpg
Есть еще вопрос, как через чекбоксы задать переменные прям со сцены? Подозреваю, что это можно реализовать мою задумку.
Буду очень благодарен, если направите на пример реализации.
Прилагаю сцену, красным выделено, что мне нужно реализовать.
http://ipic.su/img/img7/fs/teplica04.1549782935.jpg
- Strangeman
- Сообщения: 208
- Зарегистрирован: Ср янв 16, 2013 6:35 pm
- Откуда: Золотарево
- Благодарил (а): 101 раз
- Поблагодарили: 19 раз
- Контактная информация:
Re: Управление поливом по расписанию
Грунт?
Основной: Z99Le, Debian 10, модули на ESP-12F с собственной логикой. С сервером связаны, но работоспособны и без него.
Тестовый: Cubieboard2, Armbian Buster (сейчас Bionic) 5.4.y
Тестовый: Cubieboard2, Armbian Buster (сейчас Bionic) 5.4.y