electricity_meter_abc_zrd

ElectricityMeter-ABC-DIY Zigbee TLSR8258

ElectricityMeter-ABC-DIY предназначен для дистанционного мониторинга многотарифных трехфазных счетчиков с последующей передачей показаний в Home Assistant.

Включает в себя схему оптопорта и Zigbee модуль ZTU от компани Tuya

Repository electricity_meter_abc_zrd



Описание

Железо

В проекте используется Zigbee модуль ZTU от компании Tuya на чипе TLSR8258F1KET32.

Схема

ElectricityMeter-ABC-DIY состоит из двух частей. Основной, на которой расположены оптопорт, usb разъем и питание. И модуль zigbee с датчиком температуры. Так сделано для универсальности. К оптопорту можно подключить практически что угодно (модуль на другом чипе, UART-USB преобразователь и т.д.).

Схема основной части с оптопортом. Схема zigbee на модуле ZTU.

Плата

Плата основной части (верх). Плата основной части (низ). Плата zigbee части на модуле ZTU (верх). Плата zigbee части на модуле ZTU (низ).

На гребенку выведены следующие пины модуля

Ссылки на проект в easyeda

Корпус

Корпус напечатан на 3D принтере.

STL файл основания

STL файл крышки

STL файл толкателя

STL файл шайбы

STL файл гайки

Готовое устройство


Компиляция

В описании используются скриншоты из проекта от однофазного счетчика, но сути это не меняет.

Скачиваем проект
Если скачали архивом, разворачиваем в какой-нибудь временной директории. Далее запускаем Eclipse. В левом верхнем углу нажимаем File, в развернувшемся меню выбираем Import

Далее выбираем Existing Project into Workspace и жмем Next.

В открывшемся окне по очереди выбираем

  1. Browse - находим директорию, куда скачали и развернули проект.
  2. Ставим галочку в Projects: на появившемся проекте.
  3. Ставим галочку на Copy projects into workspace
  4. Жмем Finish

Все, проект у нас в Эклипсе.

Далее нужен компилятор и кое-какие утилиты. Компилятор можно скачать у Telink’a. Установщик поставит IDE (правленый Эклипс) и компилятор с утилитами. Но мне такой винегрет не нравится, поэтому я пользуюсь обычным Эклипсом и makefile. Так же компилятор есть у Ai-Thinker. Там есть под Windows и под Linux. Так же советую скачать git bash for windows. Это позволит писать makefiles, которые будут прекрасно работать и под Windows и под Linux практически без редактирования. Еще понадобится Python, но я думаю, это не проблема. Не забудьте отредактировать в makefile и bootloader.makefile пути к компилятору, если он у вас лежит в другом месте.

Итак, компиляцию начинаем с bootloader. Собираем и прошиваем (как и чем шить чуть ниже). Если модуль пустой, то после прошивки bootloader'a модуль просто начнет моргать светодиодом. Это нормально.

Далее компилируем уже саму прошивку и прошиваем.

Если все прошло без ошибок, то модуль запустится и начнет работу.

И последнее - проект сделан таким образом, что его можно вообще собрать без IDE, обычнам make в командной строке.


Загрузка прошивки

Вопрос - как залить прошивку в модуль. Есть несколько вариантов. Самый простой, это приобрести у Telink их фирменный программатор.

Но он неоправдано дорого стоит. Есть другой, более бюджетный вариант. Заказываем модуль TB-04 или TB-03 от Ai-Thinker. Почему-то у самого производителя TB-04 не числится. Но на aliexpress их полно. В них применен TLSR8253. Паяем перемычку согласно фото.

И заливаем прошивку вот отсюда

Все, у нас есть недорогой программатор, который может загружать прошивки через SWS в модули от Telink’a. Пин D4 (SWM) программатора нужно соединить с пином SWS программируемого модуля, не забыть объединить земли и подкинуть питание на оба модуля.
Сама программа-прошивальщик лежит тут


Принцип работы

Устройство является роутером, питается от сети ~200 вольт и никогда не спит.
По умолчанию считывание показаний с электросчетчика происходит один раз в минуту. Изменить в большую сторону можно через интерфейс zigbee2mqtt во вкладке Exposes (подробней о настройках чуть ниже).

Reporting

Устройство высылает 19 “явных” отчетов. И 8 “скрытых” из интерфеса пользователя.

Явные отчеты

Настроить периоды отправки отчетов, если не устроят по умолчанию, можно в интерфейсе zigbee2mqtt во вкладке reporting(подробней о настройках чуть ниже).

Скрытые отчеты

Настроить периоды отправки “скрытых” отчетов нельзя. Они отпраляются принудительно перед одноименным значением. Например, изменилось напряжение сети. Перед отправкой отчета со значением напражения сети принудительно высылаются два отчета - множитель и делитель напряжения сети. И т.д. Связано с тем, что правильное значение высчитывается в конверторе и множитель и делитель должны быть уже определены до получения значения. В обычном варианте иногда отчеты по множителю или делителю приходили позже значения. В данной схеме с принудительными отчетами множитель и делитель всегда приходят раньше значения.

Светодиодная индикация режимов модуля

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

Память модуля, прошивка (firmware) и где хранится конфиг

Согласно спецификации на чип TLSR8258F1KAT32 при использовании bootloader'a память распределена следующим образом

	0x00000  Bootloader
	0x08000  Firmware
	0x77000  OTA Image
	0xE6000  NV
	0xFC000  U_Cfg_Info
	0xFE000  F_Cfg_Info
	0xFF000  MAC address
	0x100000 End Flash

bootloader ничего не умеет, кроме, как запускать прошивку с адреса 0x8000 и копировать прошивку из области загрузки в область старта при обновлении через ОТА (при обновлении рекомендуется выбрать счетчик No Device).

В конфиге сохраняютстя только настройки модуля. Конфиг записывается в NV (0xE6000) в модуле ZTU. Используется модуль NV_MODULE_APP с номером NV_ITEM_APP_USER_CFG (для понимания смотрите app_cfg.h и tl_zigbee_sdk/proj/drivers/drv_nv.h)

В электросчетчиках используются разные протоколы обмена. Дополнительную информацию смотрите в разделе по конкретному электросчетчику.


Настройка

В конфиг zigbee2mqtt configuration.yaml добавлять ничего не нужно. А конвертор electricity_meter_abc.js кладем в директорию external_converters, которую нужно создать в корне zigbee2mqtt.

Перегружаем zigbee2mqtt. Проверяем его лог, что он запустился и нормально работает.

Первоначальная настройка происходит через web-интерфейс zigbee2mqtt. Для начала нужно убедиться, что устройство в сети.

Если во вкладке devices его нет, нужно на ElectricityMeter-ABC-DIY нажать кнопку и удерживать нажатой не менее 5 секунд, пока не заморгает зеленый светодиод. Итак убедились, что устройство в сети, можно переходить к настройкам. Переходим к вкладке exposes устройства.

Видим, что в ячейке Device model preset выставлен счетчик No Device, т.е. никакой счетчик не выбран, считывание данных не происходит. Выбираем нужный счетчик из предложенных. По умолчанию период опроса счетчика - 1 минута. Если нужно больше (максимальное значение 255 минут), меняем настройку Device measurement preset.


Электросчетчики, поддерживаемые устройством

Трехфазный многотарифный счетчик Нартис-И300

Счетчик общается по протоколу СПОДЭС.

В настоящий момент устройство может прочитать из счетчика:

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


Если счетчик выбран и устройство примагничено к окошку оптопорта счетчика, то в exposes web-интерфейса zigbee2mqtt получим примерно такую картинку.

Если данные не считываются, есть несколько причин.


Home Assistant

В результате вы получите примерно вот такую картинку.

Связаться со мной можно в Telegram.

Если захотите отблагодарить автора, то это можно сделать через ЮMoney

История версий

Наверх