Эмитация рассвета
Модератор: immortal
-
- Сообщения: 949
- Зарегистрирован: Пт дек 06, 2013 11:30 am
- Откуда: Москва
- Благодарил (а): 68 раз
- Поблагодарили: 94 раза
Эмитация рассвета
Очень меня впечатлил световой будильник от филипс, который за 30 мин до подъема потихоньку увеличивает яркость лампы и создает как бы рассвет - вставать легче на порядок.
Решил ребенку сделать, тем более у него светодиодная подсветка.
Понятно, что могу тупо яркость желтого цвета увеличивать (как, кстати?), но хочется еще и правильный свет
Никто не разрабатывал тему, какого цвета рассвет ?????
Решил ребенку сделать, тем более у него светодиодная подсветка.
Понятно, что могу тупо яркость желтого цвета увеличивать (как, кстати?), но хочется еще и правильный свет
Никто не разрабатывал тему, какого цвета рассвет ?????
-
- Сообщения: 560
- Зарегистрирован: Ср сен 04, 2013 10:31 am
- Откуда: Самара
- Благодарил (а): 99 раз
- Поблагодарили: 140 раз
- Контактная информация:
Re: Эмитация рассвета
nl_lowOn_SpalnyaBra
У меня НооЛайт. Лампочка - накиливания: у нее самый большой диапазон яркостей из всего что пробовал. Получается хорошо.
Код: Выделить всё
$brightness = gg("NooLiteD_SpalnyaBra.brightness");
if ($brightness > 0 && $brightness < 100){
// вычислим новую яркость
$brightness = $brightness + 5;
// установим яркость Бра в спальне
callMethod("NooLiteD_SpalnyaBra.dim",array("value"=>$brightness));
// запланируем запуск себя через 1 минуту.
SetTimeOut("nl_lowOn_SpalnyaBra",'runScript("nl_lowOn_SpalnyaBra");', 60);
}elseif($brightness == 100){
callMethod("NooLiteD_SpalnyaBra.dim",array("value"=>0));
}
- За это сообщение автора ErmolenkoM поблагодарили (всего 2):
- triada13 (Вт окт 27, 2015 9:49 am) • foxvlad (Вт окт 27, 2015 2:52 pm)
- Рейтинг: 2.33%
Re: Эмитация рассвета
Ноолайт если через шлюз работает там есть уже реализованная функция рассвет закат.
-
- Сообщения: 949
- Зарегистрирован: Пт дек 06, 2013 11:30 am
- Откуда: Москва
- Благодарил (а): 68 раз
- Поблагодарили: 94 раза
Re: Эмитация рассвета
В общем так. Как я писал в вопросе, у меня все подключено через ардуину.
Оказалось, что ШИМ естейственно регулирует яркость линейно, А НАШ ГЛАЗ видит изменение логарифмически. Т.е., если будет линейное изменение яркости, то нам все видится не плавно, резко набирается яркость, а потом не меняется.
Для того чтобы все было плавненько я использовал следующую формулу в экселе: =1/(1+EXP(((G2/21)-6)*-1))*240 где колонка G - это количество значений яркости. 240 -максимальное значение яркости (на самом деле 256, но разницы нет) Мне нужно имитировать рассвет, я взял 30 значений, загнал в oneminute и получил плавное увеличение яркости, набором за 30 минут. Т.е. за 30 мин до времени пробуждения лента включается и начинает потихоньку набирать яркость.
Объекту DimmerKid добавляем свойства Mas и Ind значения следующие:
Mas
Ind пусто
В OnNewMinute добавляем:
В итоге получаем плавный рассвет белого цвета.
Теперь изучаю вопрос преобразования HSV -> RGB, чтобы можно было получить, например, желтый цвет разной яркости.
Обновлю, как что накопаю.
Оказалось, что ШИМ естейственно регулирует яркость линейно, А НАШ ГЛАЗ видит изменение логарифмически. Т.е., если будет линейное изменение яркости, то нам все видится не плавно, резко набирается яркость, а потом не меняется.
Для того чтобы все было плавненько я использовал следующую формулу в экселе: =1/(1+EXP(((G2/21)-6)*-1))*240 где колонка G - это количество значений яркости. 240 -максимальное значение яркости (на самом деле 256, но разницы нет) Мне нужно имитировать рассвет, я взял 30 значений, загнал в oneminute и получил плавное увеличение яркости, набором за 30 минут. Т.е. за 30 мин до времени пробуждения лента включается и начинает потихоньку набирать яркость.
Объекту DimmerKid добавляем свойства Mas и Ind значения следующие:
Mas
Код: Выделить всё
a:31:{i:0;s:1:"1";i:1;s:1:"1";i:2;s:1:"2";i:3;s:1:"3";i:4;s:1:"4";i:5;s:1:"6";i:6;s:1:"8";i:7;s:2:"12";i:8;s:2:"17";i:9;s:2:"24";i:10;s:2:"34";i:11;s:2:"46";i:12;s:2:"62";i:13;s:2:"81";i:14;s:3:"103";i:15;s:3:"126";i:16;s:3:"148";i:17;s:3:"168";i:18;s:3:"186";i:19;s:3:"200";i:20;s:3:"211";i:21;s:3:"220";i:22;s:3:"226";i:23;s:3:"230";i:24;s:3:"233";i:25;s:3:"235";i:26;s:3:"237";i:27;s:3:"238";i:28;s:3:"238";i:29;s:3:"239";i:30;s:3:"240";}
В OnNewMinute добавляем:
Код: Выделить всё
if (isWeekDay()) {
if (gg("DimmerKid.Alarm") == 1){ // будильник
if (timeBetween('6:47', '6:49')){
sg("DimmerKid.Ind", 0);
}
if (timeBetween('6:45', '7:15')){
$ar=unserialize(getGlobal('DimmerKid.Mas'));
$ind = gg("DimmerKid.Ind");
$indN = $ind + 1;
sg("DimmerKid.Ind", $indN);
$dd=$ar[$ind];
sg('DimmerKid.Red', $dd);
sg('DimmerKid.Green', $dd);
sg('DimmerKid.Blue', $dd);
sg('DimmerKid.brightness', $dd);
callMethod("DimmerKid.refresh"); // Отправка команды на ардуину и обновление всех свойств.
}
if (timeBetween('7:30', '7:35')){
if (gg("DimmerKid.status") > 0){
sg('DimmerKid.brightness', 0);
callMethod("DimmerKid.refresh");
}
}
}
}
Теперь изучаю вопрос преобразования HSV -> RGB, чтобы можно было получить, например, желтый цвет разной яркости.
Обновлю, как что накопаю.
- Рейтинг: 1.16%
-
- Сообщения: 96
- Зарегистрирован: Пт май 15, 2015 3:28 pm
- Благодарил (а): 1 раз
- Поблагодарили: 7 раз
Re: Эмитация рассвета
Есть пару вопросов.
Поскольку в МД обновление сценариев происходит раз в секунду, написал внешний скрипт на php для того чтобы нарастание и убывание происходило плавно в течении 5-10 сек такого содержания:
mega_off.php
Создал сценарий такого типа:
Плавное выключение происходит приятно, но на время выключения света МД ждет завершение внешнего скрипта и только после того как он выполняется до конца дает что либо делать дальше. Как можно сделать, чтобы он выполнял скрипт, но при этом сам МД был доступен на выполнение других операций?
Второй вопрос
Хотелось бы с кнопки управлять димером при быстром нажатии включалось/выключалось, при долгом нажатии увеличивалось/уменьшалось пока не отпустишь. Кто нибудь писал такой метод? Если есть какие соображения по этому вопросу - поделитесь пожалуйста.
Управление Мега-Д.
Поскольку в МД обновление сценариев происходит раз в секунду, написал внешний скрипт на php для того чтобы нарастание и убывание происходило плавно в течении 5-10 сек такого содержания:
mega_off.php
Код: Выделить всё
<?php
$ip = $_GET['ip'];
$pwd = $_GET['pwd'];
$port = $_GET['port'];
$pwm = $_GET['pwm'];
function get($ip, $pwd, $port, $pwm)
{
file_get_contents("http://".$ip."/".$pwd."/?pt=$port&pwm=$pwm");
}
if ($port == 10 || $port == 12 || $port == 13) {
while ($pwm > 0)
{
$pwm = $pwm - 5;
get ($ip, $pwd, $port, $pwm);
usleep(150000);
}
}
?>
Код: Выделить всё
getURL('http://localhost/mega_off.php?ip=10.10.100.10&pwd=sec&port=10&pwm='.getGlobal('MegaD1_10.value'),0);
Второй вопрос
Хотелось бы с кнопки управлять димером при быстром нажатии включалось/выключалось, при долгом нажатии увеличивалось/уменьшалось пока не отпустишь. Кто нибудь писал такой метод? Если есть какие соображения по этому вопросу - поделитесь пожалуйста.
Управление Мега-Д.
- foxvlad
- Сообщения: 287
- Зарегистрирован: Пн сен 22, 2014 3:18 pm
- Откуда: Сочи
- Благодарил (а): 78 раз
- Поблагодарили: 78 раз
- Контактная информация:
Re: Эмитация рассвета
http://okbit.ru/blog/umnyij-dom/modul-d ... -volt.htmlOlegM писал(а):Есть пару вопросов.
Поскольку в МД обновление сценариев происходит раз в секунду, написал внешний скрипт на php для того чтобы нарастание и убывание происходило плавно в течении 5-10 сек такого содержания:
mega_off.phpСоздал сценарий такого типа:Код: Выделить всё
<?php $ip = $_GET['ip']; $pwd = $_GET['pwd']; $port = $_GET['port']; $pwm = $_GET['pwm']; function get($ip, $pwd, $port, $pwm) { file_get_contents("http://".$ip."/".$pwd."/?pt=$port&pwm=$pwm"); } if ($port == 10 || $port == 12 || $port == 13) { while ($pwm > 0) { $pwm = $pwm - 5; get ($ip, $pwd, $port, $pwm); usleep(150000); } } ?>
Плавное выключение происходит приятно, но на время выключения света МД ждет завершение внешнего скрипта и только после того как он выполняется до конца дает что либо делать дальше. Как можно сделать, чтобы он выполнял скрипт, но при этом сам МД был доступен на выполнение других операций?Код: Выделить всё
getURL('http://localhost/mega_off.php?ip=10.10.100.10&pwd=sec&port=10&pwm='.getGlobal('MegaD1_10.value'),0);
Второй вопрос
Хотелось бы с кнопки управлять димером при быстром нажатии включалось/выключалось, при долгом нажатии увеличивалось/уменьшалось пока не отпустишь. Кто нибудь писал такой метод? Если есть какие соображения по этому вопросу - поделитесь пожалуйста.
Управление Мега-Д.
*** Сообщение запрещено. Спам в имени отправителя. Сообщение похоже на спам. ***
Youtube канал - https://www.youtube.com/c/OkBitru
-
- Сообщения: 198
- Зарегистрирован: Сб янв 16, 2016 12:18 am
- Откуда: Минск
- Благодарил (а): 16 раз
- Поблагодарили: 15 раз
Re: Эмитация рассвета
тот же вопрос... пока мыслю отдать димирование будильника ардуине.... но как ей передать начало отсчета...?
снимет обработку с сервера.... а если циклами минутными(клокКраим) то и не надо городить часы реального времени для ардуины.
снимет обработку с сервера.... а если циклами минутными(клокКраим) то и не надо городить часы реального времени для ардуины.
-
- Сообщения: 949
- Зарегистрирован: Пт дек 06, 2013 11:30 am
- Откуда: Москва
- Благодарил (а): 68 раз
- Поблагодарили: 94 раза
Re: Эмитация рассвета
Обычно я все отдаю на мощности ардуины, но тут много вариантов использования светодиодной ленты, поэтому сценариями управляет Алиса.
А если такой же сценарий прописать на ардуине, то потом, просто отправляешь команду на начало будильника и он дальше сам крутится, главное обеспечить команды отмены и т.д. и обратную связь.
Я часы на ардуине так и не стал городить, просто Алиса периодически пересылает на ардуину сигнал точного времени.
А если такой же сценарий прописать на ардуине, то потом, просто отправляешь команду на начало будильника и он дальше сам крутится, главное обеспечить команды отмены и т.д. и обратную связь.
Я часы на ардуине так и не стал городить, просто Алиса периодически пересылает на ардуину сигнал точного времени.
-
- Сообщения: 198
- Зарегистрирован: Сб янв 16, 2016 12:18 am
- Откуда: Минск
- Благодарил (а): 16 раз
- Поблагодарили: 15 раз