Страница 1 из 2
Эмитация рассвета
Добавлено: Пн окт 26, 2015 11:17 pm
PAV
Очень меня впечатлил световой будильник от филипс, который за 30 мин до подъема потихоньку увеличивает яркость лампы и создает как бы рассвет - вставать легче на порядок.
Решил ребенку сделать, тем более у него светодиодная подсветка.
Понятно, что могу тупо яркость желтого цвета увеличивать (как, кстати?), но хочется еще и правильный свет

Никто не разрабатывал тему, какого цвета рассвет ?????

Re: Эмитация рассвета
Добавлено: Вт окт 27, 2015 8:26 am
triada13
Посмотри в Connect у msh555, он себе делал вроде.
Re: Эмитация рассвета
Добавлено: Вт окт 27, 2015 9:07 am
ErmolenkoM
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));
}
У меня НооЛайт. Лампочка - накиливания: у нее самый большой диапазон яркостей из всего что пробовал. Получается хорошо.
Re: Эмитация рассвета
Добавлено: Ср окт 28, 2015 12:23 pm
RomanSl
Ноолайт если через шлюз работает там есть уже реализованная функция рассвет закат.
Re: Эмитация рассвета
Добавлено: Чт окт 29, 2015 9:52 pm
PAV
В общем так. Как я писал в вопросе, у меня все подключено через ардуину.
Оказалось, что ШИМ естейственно регулирует яркость линейно, А НАШ ГЛАЗ видит изменение логарифмически. Т.е., если будет линейное изменение яркости, то нам все видится не плавно, резко набирается яркость, а потом не меняется.
Для того чтобы все было плавненько я использовал следующую формулу в экселе: =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";}
Ind пусто
В 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, чтобы можно было получить, например, желтый цвет разной яркости.
Обновлю, как что накопаю.
Re: Эмитация рассвета
Добавлено: Пт окт 30, 2015 4:00 am
OlegM
Есть пару вопросов.
Поскольку в МД обновление сценариев происходит раз в секунду, написал внешний скрипт на 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);
Плавное выключение происходит приятно, но на время выключения света МД ждет завершение внешнего скрипта и только после того как он выполняется до конца дает что либо делать дальше. Как можно сделать, чтобы он выполнял скрипт, но при этом сам МД был доступен на выполнение других операций?
Второй вопрос
Хотелось бы с кнопки управлять димером при быстром нажатии включалось/выключалось, при долгом нажатии увеличивалось/уменьшалось пока не отпустишь. Кто нибудь писал такой метод? Если есть какие соображения по этому вопросу - поделитесь пожалуйста.
Управление Мега-Д.
Re: Эмитация рассвета
Добавлено: Чт янв 14, 2016 1:06 am
foxvlad
OlegM писал(а):Есть пару вопросов.
Поскольку в МД обновление сценариев происходит раз в секунду, написал внешний скрипт на 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);
Плавное выключение происходит приятно, но на время выключения света МД ждет завершение внешнего скрипта и только после того как он выполняется до конца дает что либо делать дальше. Как можно сделать, чтобы он выполнял скрипт, но при этом сам МД был доступен на выполнение других операций?
Второй вопрос
Хотелось бы с кнопки управлять димером при быстром нажатии включалось/выключалось, при долгом нажатии увеличивалось/уменьшалось пока не отпустишь. Кто нибудь писал такой метод? Если есть какие соображения по этому вопросу - поделитесь пожалуйста.
Управление Мега-Д.
http://okbit.ru/blog/umnyij-dom/modul-d ... -volt.html
*** Сообщение запрещено. Спам в имени отправителя. Сообщение похоже на спам. ***
Re: Эмитация рассвета
Добавлено: Пн фев 15, 2016 12:44 am
flair
тот же вопрос... пока мыслю отдать димирование будильника ардуине.... но как ей передать начало отсчета...?
снимет обработку с сервера.... а если циклами минутными(клокКраим) то и не надо городить часы реального времени для ардуины.
Re: Эмитация рассвета
Добавлено: Пн фев 15, 2016 8:32 am
PAV
Обычно я все отдаю на мощности ардуины, но тут много вариантов использования светодиодной ленты, поэтому сценариями управляет Алиса.
А если такой же сценарий прописать на ардуине, то потом, просто отправляешь команду на начало будильника и он дальше сам крутится, главное обеспечить команды отмены и т.д. и обратную связь.
Я часы на ардуине так и не стал городить, просто Алиса периодически пересылает на ардуину сигнал точного времени.
Re: Эмитация рассвета
Добавлено: Пн фев 15, 2016 9:14 am
flair
Осталось малое... Сгенерировать скетч)