Страница 1 из 1

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

Добавлено: Ср мар 18, 2015 3:41 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;
}
 

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

Добавлено: Ср мар 18, 2015 8:27 pm
DiArt
Отлично!
Работает, благодарю

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

Добавлено: Ср мар 18, 2015 8:33 pm
Ivan
У камер есть авто баланс белого. Потому непонимаю как он правильно выдает освешенность.

В проэкте NarodMon можно читать публичеые датчики (если они есть в вашем городе)

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

Добавлено: Чт мар 19, 2015 5:02 pm
Dark_Veter
Если подобрать для себя значение переменной $final, то довольно правдоподобно получается.

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

Добавлено: Пн апр 06, 2015 1:50 am
Hitman_dc
Dark_Veter писал(а):Всем привет! Недавно захотелось мне управлять подсветкой в зависимости от уровня освещения...
[/code]

В какое место вставлять режим светло?

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

Добавлено: Пн апр 06, 2015 11:51 am
Dark_Veter
Опытным путем найти значение свойства ThisComputer.lightLevel когда светло и когда темно, и затем в например в методе onNewMinute сравнивать значения полученные опытным путем с ThisComputer.lightLevel и в зависимости от результата выполнять действия если светло/если темно.