Подписаться YouTube

Монитор температуры для умного дома. Часть 1 | Xiaomi Smart Home Gateway 2 | Wemos | ECP8266

Текст видео

Всем, Привет. В этом видео я расскажу про свою самоделку “Монитор температуры для умного дома”.

Эта самоделка началась с того, что я решил настроить в своем доме, умный дом от фирмы Xiaomi и компании Акура. У технологии умного дома есть много преимуществ. Самое большое из них, на мой взгляд, в том, что можно менять поведение различных электрических устройств в доме, не меняя схему электропроводки. В общем, эта технология мне показалась привлекательной. Но еще на этапе планирования я заметил, что мне не хватает устройства, которое бы просто отображало температуру с некоторых произвольно выбранных датчиков.

Я бы хотел разместить несколько датчиков температуры на улице и видеть температуру с них на некоем экране, размещенном рядом с гардеробом, перед выходной дверью. Хотелось бы точно знать какая на улице погода, перед тем как одеваться. Среди умных устройств Xiaomi есть несколько часов с датчиком температуры. Вот, например одни из них. Эти часы мне понравились тем, что их экран сделан из электробумаги. Этот экран не светится в темноте, и часы с ним выглядят монолитными. Но они мне не подходят для реализации моей задумки. Потому, что они отображают температуру с датчиков расположенных в самих часах. Другие модели часов для умного дома работают по тому же принципу.

Компания акура выпускает датчики, которые измеряют температуру, влажность и атмосферное давление. При этом на события изменения показателей можно назначать различные автоматизации. Сами датчики собраны довольно удачно. Они компактные, работают от одной небольшой батарейки и расходуют ее заряд очень экономично. Это хорошая основа, которая в дальнейшем может дорабатываться и дополняться.

Существуют сторонние решения с внешними датчиками температуры. Они так же работают по радиоканалу и имеют монитор. Но они, не относящиеся к экосистеме умного дома. И мне не хотелось бы ставить еще одну систему, выполняющую ту же работу, но никак не связанную с основными автоматизациями.

Информацию с датчиков можно просмотреть через приложение Mi Home, на смартфоне, но доставать телефон, когда я одеваюсь неудобно. Мне хотелось бы, чтобы был экран, и на нем отображалась интересующая меня информация. Чтобы экран был всегда включен, и для получения информации не нужно было бы нажимать никакие кнопки. Таким образом, удобство использования должно быть максимальным, таким же высоким как у часов.

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

Для начала немного расскажу про то, как это должно работать.

Датчик температуры выглядит вот так. Он работает по беспроводному протоколу ZigBee, обмениваясь данными с центральным устройством умного дома, с hub. Дальнейшую обработку данных, и всю автоматизацию выполняет hub. Который, в свою очередь, связан с локальной сетью и интернетом по Wi-Fi.

В качестве hub для умного дома я решил использовать Xiaomi Gateway 2. Потому что только этот hub имеет режим разработчика и позволяет легко производить интеграцию со сторонними решениями и программами. А это как раз то, что мне нужно.

Для того, чтобы сделать такой монитор я решил использовать микроконтроллер WeMos d1 mini. Этот микроконтроллер основан на wi-fi модуле ESP8266 и, на мой взгляд, является одной из самых удачных реализаций модуля ESP8266.

В качестве монитора мне подойдет OLED дисплей с диагональю 1,3 дюйма. По размерам он очень близок к самому микроконтроллеру, потому конечное устройство можно будет сделать компактным и в тоже время с монитором достаточного размера, чтобы прочитать необходимую информацию.

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

Сейчас на дисплее отображается информация о температуре с двух датчиков, а так же информация об облачности за окном.

А на этом пока что все. До свидания, до встречи в следующих видео.

Пожалуй, на этом достаточно лирики. Перейдем к реализации данного проекта.

Первое что мне нужно было сделать, чтобы получить информацию с датчика температуры через hub Xiaomi - это включить режим разработчика на этом hub. Про то, как это сделать я снял отдельное видео. Ссылка на него будет в описании под этим видео.

Похоже, что протокол обмена данными, который используется в режиме разработчика называется green rice. В целом, он достаточно простой. Он реализован через обычный UDP сокет который открывается на порте 9898. Для обмена данными используется формат JSON. Запрос и ответ представляют собой строковые данные в этом формате. Н

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

В качестве ответа возвращается JSON с информацией, полученной с этого устройства.

Пример запроса

{"cmd":"read","sid":"12345678901234"}

Пример ответа

{"cmd":"read_ack","model":"weather.v1","sid":"12345678901234","short_id":1234,"data":"{\"voltage\":3005,\"temperature\":\"2342\",\"humidity\":\"7769\",\"pressure\":\"97590\"}"}

Как видите, в разделе data содержится строка, в которой содержится JSON с информацией, полученной от устройства. Наш датчик передает информацию о температуре, давлении, относительной влажности и напряжении батарейки.

Самый простой способ получить интересующий нас id датчика температуры это найти его в приложении Mi Home. После включения режима разработчика он будет отображаться в разделе. Шлюз - три точки – сведения – информация о шлюзе. В этом большом JSON-е нужно найти блок с именем нашего устройства. Id датчика и имя устройства выделены на картинке красным.

Этого уже достаточно. Остается только написать программу.

В дополнении к этой информации мне хотелось бы еще видеть, прогноз погоды и информацию об облачности. Но наш датчик не передает информацию об облачности. Что делать? Я решил использовать один из открытых и бесплатных сервисов в интернете для получения этой информации, который называется open weather map.

В завершении скажу, что на сбор информации, программирование и сборку самой самоделки у меня ушло около 16 часов времени. На монтаж этого видео около 36 часов.

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

Кстати говоря, точно такой же запрос можно отправлять и для получения информации с других устройств. Ответы будут похожими.

В итоге у меня получилось вот такое компактное устройство. Через micro USB провод оно подключено к зарядному устройству для мобильного телефона и больше для работы ничего не требует.