Эмитация рассвета

Использование системы в различных ситуациях, вопросы программирования сценариев.

Модератор: immortal

PAV
Сообщения: 970
Зарегистрирован: Пт дек 06, 2013 11:30 am
Откуда: Москва

Эмитация рассвета

Сообщение PAV »

Очень меня впечатлил световой будильник от филипс, который за 30 мин до подъема потихоньку увеличивает яркость лампы и создает как бы рассвет - вставать легче на порядок.
Решил ребенку сделать, тем более у него светодиодная подсветка.
Понятно, что могу тупо яркость желтого цвета увеличивать (как, кстати?), но хочется еще и правильный свет :)
Никто не разрабатывал тему, какого цвета рассвет ????? ;)
triada13
Сообщения: 242
Зарегистрирован: Вт мар 11, 2014 8:36 pm
Откуда: Челябинск

Re: Эмитация рассвета

Сообщение triada13 »

Посмотри в Connect у msh555, он себе делал вроде.
Majordomo на Orange Pi Zero.
ErmolenkoM
Сообщения: 560
Зарегистрирован: Ср сен 04, 2013 10:31 am
Откуда: Самара
Контактная информация:

Re: Эмитация рассвета

Сообщение 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));
}  
У меня НооЛайт. Лампочка - накиливания: у нее самый большой диапазон яркостей из всего что пробовал. Получается хорошо.
aka msh555
Cubian на Cubietruck, Connect
RomanSl
Сообщения: 2
Зарегистрирован: Чт окт 22, 2015 9:06 am

Re: Эмитация рассвета

Сообщение RomanSl »

Ноолайт если через шлюз работает там есть уже реализованная функция рассвет закат.
PAV
Сообщения: 970
Зарегистрирован: Пт дек 06, 2013 11:30 am
Откуда: Москва

Re: Эмитация рассвета

Сообщение 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, чтобы можно было получить, например, желтый цвет разной яркости.
Обновлю, как что накопаю.
OlegM
Сообщения: 97
Зарегистрирован: Пт май 15, 2015 3:28 pm

Re: Эмитация рассвета

Сообщение 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);
 
Плавное выключение происходит приятно, но на время выключения света МД ждет завершение внешнего скрипта и только после того как он выполняется до конца дает что либо делать дальше. Как можно сделать, чтобы он выполнял скрипт, но при этом сам МД был доступен на выполнение других операций?

Второй вопрос

Хотелось бы с кнопки управлять димером при быстром нажатии включалось/выключалось, при долгом нажатии увеличивалось/уменьшалось пока не отпустишь. Кто нибудь писал такой метод? Если есть какие соображения по этому вопросу - поделитесь пожалуйста. :)


Управление Мега-Д.
Аватара пользователя
foxvlad
Сообщения: 287
Зарегистрирован: Пн сен 22, 2014 3:18 pm
Откуда: Сочи
Контактная информация:

Re: Эмитация рассвета

Сообщение 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

*** Сообщение запрещено. Спам в имени отправителя. Сообщение похоже на спам. ***
flair
Сообщения: 198
Зарегистрирован: Сб янв 16, 2016 12:18 am
Откуда: Минск

Re: Эмитация рассвета

Сообщение flair »

тот же вопрос... пока мыслю отдать димирование будильника ардуине.... но как ей передать начало отсчета...?
снимет обработку с сервера.... а если циклами минутными(клокКраим) то и не надо городить часы реального времени для ардуины.
PAV
Сообщения: 970
Зарегистрирован: Пт дек 06, 2013 11:30 am
Откуда: Москва

Re: Эмитация рассвета

Сообщение PAV »

Обычно я все отдаю на мощности ардуины, но тут много вариантов использования светодиодной ленты, поэтому сценариями управляет Алиса.

А если такой же сценарий прописать на ардуине, то потом, просто отправляешь команду на начало будильника и он дальше сам крутится, главное обеспечить команды отмены и т.д. и обратную связь.

Я часы на ардуине так и не стал городить, просто Алиса периодически пересылает на ардуину сигнал точного времени.
flair
Сообщения: 198
Зарегистрирован: Сб янв 16, 2016 12:18 am
Откуда: Минск

Re: Эмитация рассвета

Сообщение flair »

Осталось малое... Сгенерировать скетч)
Ответить