В этой статье я подробно расскажу как самому собрать и настроить датчик углекислого газа CO2 с нативной поддержкой Apple HomeKit.
Также благодаря функции «обратный HomeKit», это устройство можно использовать локально в HomeAssistant и SprutHub.
Нам понадобится:
Датчик CO2 — конкретно Wi-Fi версия круглого датчика.
USB TTL CONVERTER CH340G — или любой другой.
ESP12s — конкретно ESP12s, есть множество модификаций этого модуля. Конечно же можно использовать и ESP12f, но тогда придётся подтягивать пины EN, RST и GPIO13.
Обратите внимание, что китайцы любят через некоторое время например, изменить версию печатной платы или прислать нет то, что изображено на их картинке, так что я не даю гарантии, что вам придёт именно то, что я описываю в статье, все комплектующие я заказывал по указанным ссылкам.
Припаиваем провода между USB TTL и ESP12s:
3V3 -> VCC
TX -> RX
RX -> TX
GND -> GPIO0
GND -> GND
Подключаем USB TTL CONVERTER в порт USB компьютера, заранее нужно установить драйвера вашего USB конвертора, если драйверов нет, воспользуйтесь поиском в интернете, так как на рынке представлено много различных конверторов, и драйвера к каждому разные.
Я подготовил архив с настроенной программой для прошивки и самой прошивкой.
Скачиваем Haa_Nodemcu_Flasher.zip
На всякий случай прикрепляю скрин настроек, если вы что-то случайно изменили.
Во вкладке «Advanced» оставляем всё как на скрине.
Во вкладке «Config» выбрана версия прошивки haa_v10. Ниже расскажу, почему я использую именно эту версию прошивки, а не более новые.
Во вкладке «Operation» выбираем COM Port вашего конвертера
Далее нажимаем кнопку «Flash(F)»
Начнется запись прошивки, после успешной записи, в левом нижнем углу появится зелёная галочка, а в правом сообщение «Ready».
Разбираем устройство и аккуратно выпаиваем старый модуль Wi-Fi
Припаиваем нашу уже прошитую ESP12s
Собираем устройство обратно и подключаем к питанию.
Приступаем к настройке. Так как настройка на прошивке Home Accessory Architect (HAA) на всех устройств одинаковая, ниже представленные скрины указаны на примере аксессуара «Переключатель», тип аксессуара будет зависеть от установленного на него текстового скрипта в JSON формате.
В настройках телефона, во вкладке Wi-Fi, должна появиться сеть HAA-******, подключаемся к ней и открываем страницу конфигурации по адресу http://192.168.4.1:4567
В поле MEPLHAA Script вставляем текстовый скрипт в JSON формате.
Скрипт датчика CO2:
- {"c":{"ul":[15,20],"r":[{"n":0,"s":9600}]},"a":[{"t":15,"dt":[3],"es":[{"t":10}]},{"t":80,"h":0,"n":24,"pt":[["55AA03070008020200040000"]],"ff":0.1,"dt":[2,0],"tg":[1,1],"y0":[{"0":{"m":[[1,1],[2]],"r":[{"g":5,"v":0}]},"v":0},{"0":{"m":[[1,2],[2]],"r":[{"g":5,"v":0}]},"v":120},{"0":{"m":[[1,3],[2]],"r":[{"g":5,"v":0}]},"v":155},{"0":{"m":[[1,4],[2]],"r":[{"g":5,"v":0}]},"v":185},{"0":{"m":[[1,5],[2,1]],"r":[{"g":5,"v":1}]},"v":250}]}]}
выбираем вашу Wi-Fi сеть, воодим от неё пароль и нажимаем кнопку Save. На экране должно появиться сообщение «ОК».
Далее подключаемся обратно к вашему Wi-Fi и заходим в приложение Дом, нажимаем «Добавить аксессуар» и вместо сканирования кода нажимаем «Другие параметры...»
Выбираем в списке ваш аксессуар и вводим код сопряжения, на прошивке НАА он одинаковый: 0218-2017
Ждем добавления аксессуара, далее выбираем комнату, имя аксессуара и т.д.
Аксессуар успешно добавлен в приложение Дом
Почему я использую версию прошивки «Home Accessory Architect v11.7.1 Peregrine»?
На мой взгляд это самая стабильная версия, в ней достаточно всех функций для активного использования Apple HomeKit.
В этой версии можно использовать графический конфигуратор, отключены OTA обновления, которые могут привести к случайному отказу устройства при неудачном обновлении, и нужно будет заново выпаивать esp, прошивать и припаивать обратно.
Ваше право выбирать версии прошивки, обратите внимание, если вы будете использовать более новые версии, а конкретно после версии 12, в скрипте нужно будет дополнительно объявлять конфигурацию «io», представленный мною MEPLHAA Script (JSON) на версиях 12 и выше работать не будет, если вы всё же хотите использовать новые версии прошивки, вот ссылка на репозиторий информации о миграции Migration Guide for HAA V12 Merlin, также существует Конвертер старых скриптов в новые версии Merlin 12 с простыми аксессуарами типа «Переключатель» или «Замок» он легко справится, а аксессуары которые работают через UART, я не уверен.
Вернемся к нашему устройству. Так выглядит наш аксессуар Датчик CO2 в приложении Дом:
При превышении указанных в конфигурации показаний, в телефон придет уведомление о высоких показаниях CO2, а датчик начнется светиться синим цветом. Порог высоких показаний — 250 единиц, значения можно корректировать в конфигурации.
Внутри корпуса установлен настоящий CO2 NDIR датчик.
Часто дешевые варианты таких датчиков еще показывают VOC. И если Вы видите, что датчик умеет показывать VOC, то скорее всего там CO2 липовый. То есть он измеряется датчиком VOC. А измерения эти производятся математически из VOC и получается “погода на марсе”.
Мониторингом показаний датчика в приложении дом выступают показания «Плотность диоксида серы».
Прошивка HAA поддерживает показания до 1000 единиц, тем самым показания CO2 скорректированы на 1000 меньше (например если в приложении показания датчика 186, то по факту показания являются 1186).
Немного расскажу про сам скрипт.
Данный аксессуар работает общением двух MCU в тандеме через UART. Датчик получает информацию, отправляет показания в TuyaMCU, а ESP обрабатывает показания и отправляет их в приложение Дом.
Важные моменты в скрипте:
- "pt":[["55AA03070008020200040000"]] Шеснатеричный код показаний от TuyaMCU
-
- {"0":{"m":[[1,1],[2]],"r":[{"g":5,"v":0}]},"v":0}, Качество воздуха отличное "v":0
- {"0":{"m":[[1,2],[2]],"r":[{"g":5,"v":0}]},"v":120}, Качество воздуха нормальное "v":120
- {"0":{"m":[[1,3],[2]],"r":[{"g":5,"v":0}]},"v":155}, Качество воздуха приемлемое "v":155
- {"0":{"m":[[1,4],[2]],"r":[{"g":5,"v":0}]},"v":185}, Качество воздуха низкое "v":185
- {"0":{"m":[[1,5],[2,1]],"r":[{"g":5,"v":1}]},"v":250}]}]} Качество воздуха плохое "v":250, а "g":5,"v":1 включает подсветку датчика
Вы можете изменить показания, например чтобы в приложении показывало Качество воздуха нормальное не 120, а 90 или сделать позже время срабатывания Качество воздуха плохое с 250 на 350.
Для удобства редактирования скрипта, рекомендую использовать графический конфигуратор HAA Json Configurator
Весь скрипт датчика CO2:
- {"c":{"ul":[15,20],"r":[{"n":0,"s":9600}]},"a":[{"t":15,"dt":[3],"es":[{"t":10}]},{"t":80,"h":0,"n":24,"pt":[["55AA03070008020200040000"]],"ff":0.1,"dt":[2,0],"tg":[1,1],"y0":[{"0":{"m":[[1,1],[2]],"r":[{"g":5,"v":0}]},"v":0},{"0":{"m":[[1,2],[2]],"r":[{"g":5,"v":0}]},"v":120},{"0":{"m":[[1,3],[2]],"r":[{"g":5,"v":0}]},"v":155},{"0":{"m":[[1,4],[2]],"r":[{"g":5,"v":0}]},"v":185},{"0":{"m":[[1,5],[2,1]],"r":[{"g":5,"v":1}]},"v":250}]}]}
Если вдруг при настройке вы ошиблись с паролем или нужно отредактировать скрипт, ниже представлена инструкция по сбросу:
1. Отключаем Wi-Fi роутер из розетки и оставляем его выключенным.
2. Отключаем сам аксессуар от питания и обратно включаем (перезагружаем). Для сброса настроек аксессуара, у вас будет 15 секунд для выполнения всех действий. Если вы не уложились в это время, повторите всё заново с пункта 2.
3. Переводим контроллер в режим сброса:
Подключаем контроллер к питанию на 2 секунды, выключаем питание на 2 секунды и включаем снова.
4. Зайдите в настройки Wi-Fi и подключитесь к сети HAA-******
5. Откройте меню в браузере по адресу http://192.168.4.1:4567
4. Далее в меню нужно отметить ниже представленные галочки:
1 — Reset HomeKit ID
2 — Remove WiFi Settings
3 — Save
(Не нажимайте галочку Reset Settings — эта функция стирает скрипт)
5. В меню отобразиться сообщение «OK».
6. Включаем Wi-Fi роутер и теперь можно повторно подключать аксессуар к Wi-Fi.
Можно пойти простым путём, если вы знаете IP адрес устройства, который назначил ему ваш Wi-Fi роутер, тогда подключаем аксессуар к питанию на 2 секунды, выключаем питание на 2 секунды и включаем снова, и переходим по IP адресу устройства и вконце дописываем порт :4567
Например http://192.168.0.24:4567