Купить Smart home Xiaomi датчик Mi Temperature and Humidity Monitor в каталоге интернет магазина М.Видео по выгодной цене с доставкой, отзывы, фотографии — Москва

Обзор датчика температуры и влажности от компании Xiaomi, выпускаемый под суббрендом Mijia.

Mi Temperature and Humidity monitor

Хотите поддерживать здоровый микроклимат дома и комфортную для вас температуру воды и воздуха? Специальный датчик Mi Temperature and Humidity monitor вам очень в этом поможет.

Комплект поставки и внешний вид

Комплект поставки

В комплекте – инструкция на китайском, датчик и дополнительный двусторонний скотч. В общем стандартный набор для устройств Xiaomi.

Инструкция на китайском, устройство и двусторонний скотч

Сам датчик очень компактный, его габариты всего 36 х 11,5 мм, что позволяет незаметно разместить его в любом месте квартиры. Корпус устройства выполнен из устойчивого к UV-лучам пластика, благодаря которому он не выцветает на протяжении длительного времени. Сверху расположена кнопка сопряжения со шлюзом, а снизу – отверстие для забора воздуха. Сзади – отсек для батарейки CR2032, от которой он может работать 1-2 года благодаря использованию энергоэффективного протокола Zigbee. Есть Zigbee, должен быть и соответствующий шлюз (например Xiaomi Gateway 2), не забываем об этом, без него получить информацию с устройства не получится. Подробнее с Zigbee можно ознакомиться в статье “Zigbee в умном доме”.

датчик температуры Сяоми

В основе Xiaomi Mi temperature and humidity sensor лежит сенсор от производителя Sensirion, обеспечивающий высокую точность измерения показателей окружающей среды с погрешностью до ±0,3°С для температуры и ±3% для влажности. Судя по найденной в интернете информации, в устройстве используется сенсор SHT30, работающий в температурном диапазоне от -40 до +125°C (стоит учитывать, что остальные элементы датчика работают в более узком температурном диапазоне, так что не стоит пытаться использовать его в бане или при температурах близких к -40°С, ограничьтесь рекомендованными Сяоми условиями). Полные спецификации сенсора, если интересно, можно найти на сайте Sensirion.

По заверениям производителя эксплуатация датчика температуры и влажности Xiaomi Mijia возможна в температурном диапазоне от -20 до +60°С, при этом, у него отсутствует влагозащита и он не предназначен для работы на улице. Что делать, если ну очень хочется повесить его за окном? Возьмите пластиковую бутылку или герметичную коробку и разместите в ней, судя по опыту пользователей все должно работать (если точнее – у кого-то работает, у кого-то умирает через некоторое время), главное чтобы температура не опускалась ниже -20°С. Тем не менее производитель не рекомендует использовать устройство подобным образом и для данных целей лучше поискать другие приборы.

Вступление

Я не мог обойти вниманием эту новинку, и конечно же при первой возможности заказал её. На момент оформления заказа, с учетом поинтов он обошелся почти в $23, сейчас цена уже поинтереснее.

Скрин оплаченного счета

2eedd1.jpg

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

Первые проблемы

Как часто бывает с примерами из Интернета, код не заработал. А ведь так хотелось… Очевидно, что нужно разбираться с этим дальше.

Не смотря на то, что у меня в закромах лежат всякие ESP32, по основному роду деятельности я прикладной разработчик. Ковыряюсь с железками (как и многие, я полагаю) только в качестве хобби. Потому достаточно быстро пришло понимание того, что без закапывания в детали дальше продвинуться не получится. Потому пришлось изучить код, немного спецификацию BLE и понять как это устроено. По результатам разбирательств пришло некоторое понимание того, как оно работает, ну и сразу же захотелось этим с кем-нибудь поделиться.

Особенности

Погодная станция для дома – это такое устройство, которое с помощью сенсоров определяет текущую температуру, влажность и атмосферное давление в помещении и на улице.

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

Данные приборы можно условно разделить на две группы: погодные станции и термометры-гигрометры.

  1. У метеостанций довольно широкий функционал – кроме основных показателей, они умеют определять направление и скорость ветра, количество осадков, выпавших в течение дня, и еще некоторые данные, такие как фазы луны или время восхода и заката солнца. Связь с сенсорами может осуществляться по кабелю или быть беспроводной (радиоканал либо Bluetooth-соединение). Провода уходят в прошлое, так как они существенно затрудняют монтаж датчиков и ограничивают их расположение длиной проводов.
  2. Термогигрометры, показывают только два параметра – это температура и влажность. Но они не менее распространены, чем метеостанции. Многим пользователям достаточно текущей температуры и влажности.

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

Внешний вид датчика температуры и влажности Xiaomi

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

Питается датчик от батарейки CR2032. Для замены батарейки необходимо повернуть заднюю крышку на 10 градусов против часовой стрелки.

 Полные характеристики устройства:

Где заказывал?

Как и сказал выше, заказал его на AliExpress здесь:

ТЕРМОМЕТР-ГИГРОМЕТР

Отмечу, что очень непривычно быстро дошел до меня. Обычно посылки едут около 3 недель, эта умудрилась приехать через 10 дней после заказа. Еще один важный нюанс – цена. На момент моей покупки (у вас скорее всего цена будет другая, т.к. я брал еще и с купонами) одно устройство обходилось примерно в 400 рублей. НО если брать набором из 4 штук – весь комплект обойдется в 800 рублей (по 200 руб. за штуку). Разумеется, взял набор. Хоть и переплатил больше планируемого, зато обвешал всю квартиру датчиками, да еще и на подарок один остался. Да, это очень приятный подарок.

Xiaomi Mijia 2 - Комплект из 4 коробок

Как оно работает

Обычно устройства BLE умеют работать в 2-х режимах. Назовем их широковещательный (discover mode) и подключенный (connection mode). В широковещательном режиме устройство может рассылать пакеты, позволяющие другим Bluetooth устройствам обнаружить его и установить соединение при необходимости. При дальнейшем установлении соединения устройства могут обмениваться данными и командами. Некоторые устройства упаковывают какие-то данные о себе прямо в широковещательные пакеты. Это некоторым образом упрощает взамодействие с устройством, а также в числе прочих средств позволяет экономить энергию.

Сенсор Xiaomi умеет работать в двух режимах, и в Интернетах можно найти примеры работы как с широковещательными пакетами так и в режиме соединения. В найденном ранее руководстве используется вариант подслушивания широковещательных пакетов. Достаточно просто чтобы можно было быстро разобраться. Осталось только выяснить, что же не так.

Подключение датчика температуры и влажности Xiaomi в MiHome

Как подключить датчик температуры и влажности Xiaomi

Подключение к шлюзу и добавление в Mi Home стандартно для подобных устройств:

  • Нажимаем +;
  • Выбираем датчик в списке устройств;
  • Следуем указаниям в приложении.

Сразу же после добавления в Mi Home, в верхней части приложения, под именем дома, начнут отображаться текущие значения измеряемых показателей. Также они отобразятся и под иконкой датчика в списке устройств, что очень удобно и избавляет от необходимости постоянно открывать плагин.

Отображение значений в плагине

Что в комплекте?

  • Сам термометр-гигрометр.
  • Батарейка CR2032 (она установлена под крышкой).
  • Двусторонний скотч (очень приятное дополнение, можно сразу лепить куда угодно).
  • Инструкция (она на китайском, прикладывать сюда не буду, опишу как есть).

Xiaomi Mijia 2 - Комплектация

Так что все-таки сломалось?

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

void initBluetooth(){ BLEDevice::init(«»); pBLEScan = BLEDevice::getScan(); //create new scan pBLEScan->setAdvertisedDeviceCallbacks(new MyAdvertisedDeviceCallbacks()); pBLEScan->setActiveScan(true); //active scan uses more power, but get results faster pBLEScan->setInterval(0x50); pBLEScan->setWindow(0x30);}

Пакеты от устройств обрабатываются в этой функции:

void onResult(BLEAdvertisedDevice advertisedDevice) { if (advertisedDevice.haveName() && advertisedDevice.haveServiceData() && !advertisedDevice.getName().compare(«MJ_HT_V1»)) { std::string strServiceData = advertisedDevice.getServiceData(); uint8_t cServiceData[100]; char charServiceData[100]; strServiceData.copy((char *)cServiceData, strServiceData.length(), 0); Serial.printf(«nnAdvertised Device: %sn», advertisedDevice.toString().c_str()); for (int i=0;i<strServiceData.length();i++) { sprintf(&charServiceData[i*2], «%02x», cServiceData[i]); } std::stringstream ss; ss << «fe95» << charServiceData; Serial.print(«Payload:»); Serial.println(ss.str().c_str()); char eventLog[256]; unsigned long value, value2; char charValue[5] = {0,}; switch (cServiceData[11]) { case 0x04: sprintf(charValue, «%02X%02X», cServiceData[15], cServiceData[14]); value = strtol(charValue, 0, 16); if(METRIC) { current_temperature = (float)value/10; }else { current_temperature = CelciusToFahrenheit((float)value/10); } displayTemperature(); break; case 0x06: sprintf(charValue, «%02X%02X», cServiceData[15], cServiceData[14]); value = strtol(charValue, 0, 16); current_humidity = (float)value/10; displayHumidity(); Serial.printf(«HUMIDITY_EVENT: %s, %dn», charValue, value); break; case 0x0A: sprintf(charValue, «%02X», cServiceData[14]); value = strtol(charValue, 0, 16); Serial.printf(«BATTERY_EVENT: %s, %dn», charValue, value); break; case 0x0D: sprintf(charValue, «%02X%02X», cServiceData[15], cServiceData[14]); value = strtol(charValue, 0, 16); if(METRIC) { current_temperature = (float)value/10; }else { current_temperature = CelciusToFahrenheit((float)value/10); } displayTemperature(); Serial.printf(«TEMPERATURE_EVENT: %s, %dn», charValue, value); sprintf(charValue, «%02X%02X», cServiceData[17], cServiceData[16]); value2 = strtol(charValue, 0, 16); current_humidity = (float)value2/10; displayHumidity(); Serial.printf(«HUMIDITY_EVENT: %s, %dn», charValue, value2); break; } } }

Очевидно, проблема где-то здесь.

Основное действие в этом коде происходит в конструкции switch, где проверяется значение 11го байта в service data массиве. Проблема только в том, что в моем случае массив данных был меньше 11 байт. Осталось выяснить почему.

Каждый advertising пакет помимо информации о возможности соединения с устройством может содержать пакет данных (payload). Этот пакет содержит расширенные данные об устройстве, также данные о сервисах, которые поддерживает устройство. В одном пакете может быть информация о нескольких сервисах. Типичный payload моих устройств выглядит так (это отдельные байты в шестнадцатиричной системе счисления):

020106121695fe5020aa01ab9f0231342d580a10014309094d4a5f48545f563105030f180a180916ffffc8b33f8a48db

Информация здесь кодируется достаточно просто. Первый байт (в примере 0x02) задает размер блока в байтах. За ним следует байт, который указыает назначение блока (подробно о типах блоков здесь). Затем следуют данные в зависимости от типа блока. Ну и дальше все повторяется (опять появляется длина блока) пока не закончится пакет данных.

Нас больше всего интересют блоки с типом 0x16, которые отвеают за service data, т.е. за данные, описывающие отдельные функции устройства. В нашем примере таких блоков 2:

121695fe5020aa01ab9f0231342d580a1001430916ffffc8b33f8a48db

Если присмотреться поближе, то можно заметить, что 11й байт в первом блоке очень похож, на тот, что ожидает наш switch (0x0A). А второй блок как раз похож на тот, слишком короткий блок, на который мы ссылались в начале. Похоже здесь и порылась собака. Похоже, что наш код ожидает видеть первый блок, а получает второй.

Плагин устройства

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

Сухо, влажно, холодно или жарко?

Из интересного – вся история измерений сохраняется в приложении. Достаточно нажать на температуру или на влажность на главном экране и перед нами предстанут графики со значениями за день, неделю или за месяц.

История измерений

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

История измерений при просмотре через шлюз

Также на главном экране находится и кнопка «Автоматизация», при нажатии на которую открывается окно с тремя вкладками:

  • Подборка. Тут должны быть примеры различных сценариев, но доступен почему-то только один – запуск увлажнителя воздуха в зависимости от показаний влажности в помещении. Остальные сценарии придумывайте сами:).
  • Автоматизация. На данной вкладке мы составляем сценарии с использованием датчика, который выступает в качестве условия. На выбор доступно 4 варианта – ниже/выше заданной температуры и ниже/выше заданной влажности с шагом в один градус / один процент. Например можно реализовать следующий сценарий совместно с двумя умными розетками – если при возвращении с работы домой (с 18:30 до 19:00, например) в квартире дубак (температура ниже 18 градусов), то включить две розетки: к первой подключен обогреватель, а ко второй – чайник для подогрева воды для чая:).
  • И последняя вкладка – отчеты, представляющая из себя журнал сработавших автоматизаций.

Настройки сценариев WSDCGQ01LM

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

Настройка датчика температуры Xiaomi

Немного про частоту обновления показателей – Xiaomi temperature humidity sensor отправляет данные в приложение или раз в час или если показатели изменились более чем на 0.5 градусов / 6%.

Возможности управления Mi Smart Home Temperature Xiaomi Sensor:

  • Получение актуальной информации о температуре и влажности;
  • Доступ к данным, полученным в течение суток, недели или месяца;
  • Установка оптимальных настроек, при превышении/понижении которых, датчик сигнализирует пользователю. Он сообщает об этом миганием светодиода и звуковой сигнализацией;
  • Создание сети из нескольких девайсов, у каждого из которого будет собственное имя и индивидуальные настройки.
Показатель влажности Xiaomi Mi Smart Home Temperature/Humidity Sensor в приложении Mi Home
Рейтинг
( 1 оценка, среднее 5 из 5 )
Загрузка ...