
Снимаем показания счётчика воды «Бетар» по RS-485 и «МИР» по BLE с помощью ESP32
Maikl747 7 минут назад Снимаем показания счётчика воды «Бетар» по RS-485 и «МИР» по BLE с помощью ESP32 Средний 48 мин 83 Arduino * Беспроводные технологии * Инженерные системы * Промышленное программирование * Умный...
Anthropic — What company has the best second artificial intelligence model at the end of June?
В сфере искусственного интеллекта произошло заметное событие. Maikl747 7 минут назад Снимаем показания счётчика воды «Бетар» по RS-485 и «МИР» по BLE с помощью ESP32 Средний 48 мин 83 Arduino * Беспроводные технологии * Инженерные системы * Промышленное программирование * Умный дом В предыдущей статье я рассматривал реализацию снятия показаний счётчика электроэнергии МИР С-05. 10–230-5(80)‑G2Z1B‑KNQ‑S-D по Bluetooth (в то время как официально API нигде не опубликован) с помощью Raspberry Pi. Конечно использовать малинку для такой задачи это стрельба из пушки по воробьям - поэтому в продолжении темы я решил перейти на ESP32.
Так как рядом со счётчиком у меня находится Ethernet коммутатор, то я решил обойтись без Wi-Fi и для этих целей приобрёл ESP32 ETH01 с Ethernet-портом. При всех плюсах такого решения есть и минус - нет type-c/microUSV и кнопок. Поэтому шить приходится через TTL и переводить в режим прошивки замыканием пина IOO на GND.
Технические детали
К счастью у него оказался вагон встроенной памяти в размере 8 мегабайт, поэтому для моей задачи вполне хватит. И можно даже ещё нагрузить... Для ускорения написания статьи картинку нарисовал с помощью нейронкиОднако при адаптации кода от малинки к Arduino IDE возникли проблемы.
МИР не отдавал все значения одним коротким бинарным кадром. Обмен представлял собой многошаговую последовательность с подключением, авторизацией и чтением “экранных страниц”. Рабочий механизм BLE включал: Подключение к MAC счётчика.
Запись 0x01 в характеристику B3F7. Передачу PIN-кода в D24A в little-endian формате. Подписку на notify характеристики FEC2.
Отраслевые последствия
Отправку команд чтения. Обработку notify-ответов в CP1251/текстовом виде. Первые реализации опрашивали МИР фиксированной последовательностью команд: “энергия”, несколько раз “следующая страница”, затем “параметры”.
Но лог показал, что счётчик ведёт себя как меню с плавающей текущей позицией. В одном цикле после команды энергии могли прийти (t1 - дневной тариф, t2 - ночной тариф):total → T2 → T1 в другом: total → T1 → total → T1 в третьем: total → T1 → total → T2Из-за этого фиксированное количество команд next иногда пропускало T1 или T2. Парсер был не виноват: когда строка реально содержала прям.
1, он парсил T1; когда содержала прям. Проблема была именно в навигации по страницам МИР. В логе было видно, что один цикл мог завершиться с t2=null, хотя total и T1 были получены.
Этот прогресс даёт важные сигналы о будущем отрасли, и технологический мир внимательно наблюдает.





