- PVSM.RU - https://www.pvsm.ru -

Делаем домашнее освещение чуть-чуть умнее

Делаем домашнее освещение чуть-чуть умнее - 1

Про пользу f.lux уже в той [1] или иной [2] степени несколько раз писали [3] и на хабре, и на гиктаймсе. Попробовав в работе эту программу некоторое время назад, у меня возник вопрос — как быть с остальным освещением в комнате? Слишком уж сильно по ночам выбивается из общего, тёплого света ламп накаливания, оранжевый экран монитора.

Постараемся исправить это досадное недоразумение.

Disclaimer

Автор текста не понимает в полной мере, как устроено человеческое зрение, и будут ли описываемые ниже операции полезны или вредны для него. Так же за бортом остаются аспекты тестирования показателей [4] светодиодных ламп на предмет их качества. Их было решено принять за «удовлетворительные», спасибо AlexeyNadezhin [5] и Tiberius [6] за соответствующие исследования.

Закупаемся лампами

Беглый анализ рынка показал, что выбирать есть из чего. Начиная со сверхбютжетных «ноунейм» китайских ламп, заканчивая стоящими совсем уже нескромных денег Belkin и Philips. В результате, было решено за основу взять лампочки Yeelight Smart Led Bulb, выпускаемые под брендом Xiaomi. Их плюсом является возможность функционировать без какого-либо дополнительного оборудования из категории «умный дом» и возможность автономной работы, без привязки к серверам управления компании (после некоторых ухищрений).

На момент написания статьи стоимость одной лампы составляет порядка $20.

Программная часть

Писать код для управления лампами будем на python, под него существует уже готовый модуль [7], позволяющий передавать управляющие команды этим лампам. Также существует документ [8], подробно описывающий api. Таким образом, остаётся лишь дописать небольшой веб-сервер для того, чтобы принимать команды управления от f.lux.

Однако, сперва нужно инициализировать Smart Bulb. Проводим инициализацию ламп через фирменное приложение MiHome [9] и добиваемся появления значка Yeelight Color Bulb в интерфейсе приложения. Проблемы с подключением могут возникнуть из-за dns и выбора сервера по умолчанию. Они решаются прописыванием в dns записи 8.8.8.8 и выбором сервера China (Mainland).

Делаем домашнее освещение чуть-чуть умнее - 2

Так-же требуется разблокировать возможность прямого обращения к устройствам, активировав на них Developer Mode, посредством второго приложения, Yeelight [10]. После всех этих операций лампы появляются в сети и к ним уже можно обращаться.

Делаем домашнее освещение чуть-чуть умнее - 3

В связи с нежеланием рассказывать умным лампочкам пароли от Wi-Fi, они переезжают в отдельную подсеть, с отдельным SSID и без доступа к интернету.

Итак, лампы висят в сети, в приложении они ушли в оффлайн и можно попробовать передавать на них управляющие команды.

Интеграция с f.lux

f.lux умеет отправлять данные об изменении цветовой температуры и яркости на заданный URL. Данные прилетают в виде post-запроса вида:

POST /room_1?ct=6500&bri=0.800000 HTTP/1.1

Делаем домашнее освещение чуть-чуть умнее - 4

Напишем небольшой веб-сервер на bottle, обрабатывающий эти параметры:

from bottle import run, post, request
from yeelight import Bulb


@post('/room_1')
def room_handler():
    post_dict = request.query.decode()
    if 'ct' in post_dict and 'bri' in post_dict:
        ct = int(post_dict['ct'])
        bri = int(float(post_dict['bri']) * 100)

        bulb.set_color_temp(ct)
        bulb.set_brightness(bri)


bulb = Bulb("%lamp_ip%")
run(host='0.0.0.0', port=8080)

Конечный результат

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

Делаем домашнее освещение чуть-чуть умнее - 5

Делаем домашнее освещение чуть-чуть умнее - 6

Делаем домашнее освещение чуть-чуть умнее - 7

Автор: ekzi

Источник [11]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/python/266782

Ссылки в тексте:

[1] той: https://geektimes.ru/post/165549/

[2] иной: https://geektimes.ru/post/53729/

[3] писали: https://habrahabr.ru/post/220009/

[4] тестирования показателей: https://geektimes.ru/company/lamptest/blog/291253/

[5] AlexeyNadezhin: https://geektimes.ru/users/alexeynadezhin/

[6] Tiberius: https://geektimes.ru/users/tiberius/

[7] модуль: https://github.com/skorokithakis/python-yeelight

[8] документ: http://www.yeelight.com/download/Yeelight_Inter-Operation_Spec.pdf

[9] MiHome: https://play.google.com/store/apps/details?id=com.xiaomi.smarthome

[10] Yeelight: https://play.google.com/store/apps/details?id=com.yeelight.cherry&hl=ru

[11] Источник: https://geektimes.ru/post/294385/