[Сценарии] Виртуальный датчик освещенности

Не требует установки программ или изменения файлов

Модераторы: immortal, newz20

Ответить
Dark_Veter
Сообщения: 295
Зарегистрирован: Вт апр 23, 2013 5:16 pm
Откуда: Брянск

[Сценарии] Виртуальный датчик освещенности

Сообщение Dark_Veter »

Всем привет! Недавно захотелось мне управлять подсветкой в зависимости от уровня освещения, а такого датчика у меня не оказалось. Вот тут: http://ab-log.ru/smart-house/video_came ... ght-sensor нашел пример получения уровня освещенности анализируя картинку с камеры наблюдения и чуть модифицировал код. Домашние камеры анализировать не стал, т.к. при включении освещения они будут показывать, что сейчас день, а уличных камер у меня нет, т.к. дом многоквартирный. Нашел сервис http://www.probkiizokna.ru/ В итоге получилась неплохая альтернатива датчику освещения. Может быть кому пригодится :-)

Код: Выделить всё

$camIds = array('7117', '11695', '10290', '8750');
$final = 0;
$count = 0;

for ($index = 0; $index < count($camIds); $index++) {
    $lightLevel = getLightLevel($camIds[$index]);
    if ($lightLevel == 11.38) {
        continue;
    }
    $final += $lightLevel;
    $count++;
}

$final = round($final / $count, 2);
sg('lightLevel', $final);
//echo $final;
//if ($final <= 5.83 && date('H') > 14) {
//    //Действия если стемнело;
//}

function getLightLevel($camId) {
    $url = 'http://sat01.probkiizokna.ru/prb/getsnapshot.php?id=' . $camId . '&s=3&q=' . rand();

    $im = @imagecreatefromjpeg($url);

    imagefilter($im, IMG_FILTER_GRAYSCALE);

    $rgb_tot = 0;

    for ($y = 0; $y < 480; $y++) {
        for ($x = 0; $x < 640; $x++) {
            $rgb = imagecolorat($im, $x, $y);
            $rgb_tot = $rgb + $rgb_tot;
        }
    }

    $result = round($rgb_tot / 307200, 0);
    $final = round($result / 1000000, 2);

    return $final;
}
 
Debian GNU/Linux 7.9 (wheezy), версия 0.9.0b, Connect
DiArt
Сообщения: 210
Зарегистрирован: Пт апр 12, 2013 2:27 pm
Откуда: Уфа

Re: Виртуальный датчик освеченности

Сообщение DiArt »

Отлично!
Работает, благодарю
Система на Неттоп 3Q Nettop Qoo!
(Intel Celeron J1800, 2x2410 МГц, 4096 Мб, HDD 1000 Гб, HDMI, VGA , Wi-Fi, Ethernet, Ubuntu 14.04.2)
Вторая система на Raspberry Pi 3.
D-Link DCS-930L/Broadlink RM2-Pro/BroadLink SP3 CC/Ginzzu HS-K07W
Я в CONNECT
Ivan
Сообщения: 1473
Зарегистрирован: Сб окт 12, 2013 11:03 pm

Re: Виртуальный датчик освеченности

Сообщение Ivan »

У камер есть авто баланс белого. Потому непонимаю как он правильно выдает освешенность.

В проэкте NarodMon можно читать публичеые датчики (если они есть в вашем городе)
Linux, Raspberry PI, MySensors
Connect: http://connect.smartliving.ru/profile/53
Мои проекты: http://smartliving.ru/profile/4
Dark_Veter
Сообщения: 295
Зарегистрирован: Вт апр 23, 2013 5:16 pm
Откуда: Брянск

Re: Виртуальный датчик освеченности

Сообщение Dark_Veter »

Если подобрать для себя значение переменной $final, то довольно правдоподобно получается.
Debian GNU/Linux 7.9 (wheezy), версия 0.9.0b, Connect
Hitman_dc
Сообщения: 8
Зарегистрирован: Сб май 04, 2013 8:39 am

Re: Виртуальный датчик освеченности

Сообщение Hitman_dc »

Dark_Veter писал(а):Всем привет! Недавно захотелось мне управлять подсветкой в зависимости от уровня освещения...
[/code]

В какое место вставлять режим светло?
Dark_Veter
Сообщения: 295
Зарегистрирован: Вт апр 23, 2013 5:16 pm
Откуда: Брянск

Re: Виртуальный датчик освеченности

Сообщение Dark_Veter »

Опытным путем найти значение свойства ThisComputer.lightLevel когда светло и когда темно, и затем в например в методе onNewMinute сравнивать значения полученные опытным путем с ThisComputer.lightLevel и в зависимости от результата выполнять действия если светло/если темно.
Debian GNU/Linux 7.9 (wheezy), версия 0.9.0b, Connect
Ответить