Счетчик импульсов Zigbee

Практически все современные приборы учета имеют импульсный выход, счетчики воды, газа и т.д. Это позволяет организовать удаленное получение показаний и автоматизированную отправку этих данных в сбытовые компании.

Существует множество вариантов таких интерфейсов, как фабричных так и DIY. Очень интересный проект Waterius в котором реализована работа с различными типами устройств и передачей данных через WiFi. Часть этого устройства ответственного за подсчет импульсов я использовал для своего проекта. Устройство имеет два канала для счетчиков и канал для датчика протечки, предназначено для работы в сети zigbee, питается от двух элементов ААА.

Для подсчета импульсов применен микроконтроллер attiny85V (обратите внимание на индекс «V», эта модификация работает от 1,8 вольт). Работа возможна как со счетчиками с «сухими контактами», так и со счетчиками с интерфейсом НАМУР. Датчик протечки в виде двух контактов можно подключить к соответствующему разъему на плате, в прошивке реализован биндинг на это событие, т.е. можно напрямую управлять реле/приводом. За zigbee часть отвечает проверенный модуль E18-MS1-PCB.

На плате предусмотрено место для установки сенсоров DS18B20, BME280 и SHT30. Соответственно если не распаивать часть схемы отвечающую за подсчет импульсов, то плату можно так же использовать например как уличный термометр. Есть возможность использовать держатели ААА батарей с различной полярностью, для этого на плате есть перемычки, которые надо распаять в соответствии с имеющейся у вас моделью.

Плата разработана в EasyEDA и заказана в JLCPCB

Сборка не должна вызвать затруднений, после окончания пайки обязательно тщательно промыть плату, желательно в УЗ ванне. В качестве разъемов можно использовать не только зажимные, но и винтовые клеммы с шагом 2,54мм. или разъемы типа JST

Устройство в режиме счета и спящем модуле zigbee потребляет всего 7 мка.

Прошивку для устройства написал @aggsoft, автор конфигуратора PTVO. Загрузить прошивку в attiny85V можно различными способами, через arduino, USBasp или Pickit. Для этого на плате выведен интерфейс, прошивать с установленными элементами питания.

Правильно собранное устройство после регистрации в сети готово  к эксплуатации. В SLS Gateway стройство выглядит так

Счетчикам можно прописать начальное значение вписав его в поле «Value», так же можно выставить интервал получения данных, выставляется в минутах. Так как модуль zigbee постоянно находится в глубоком сне, после изменения данных в течении 3 секунд его необходимо разбудить с помощью сервисной кнопки, чтобы он получил измененные значения.

В zigbee2mqtt устройство так же поддерживается через внешний конвертер, начальные значения счетчиков можно отправлять через MQTT в топик …./set/l5. Положительное значение изменит состояние счетчика, отрицательное изменит интервал отправки данных.Для изготовления корпуса устройства использовал набор сантехнических изделийВ качестве основы используется муфта для 32мм трубы.Корпус получился дешевым, герметичным и удобным для монтажа прямо на трубы в месте установки счетчиков.

Для желающих повторить, все необходимые файлы в архиве.

Устройство можно обсудить в профильном чате zigbee в телеграм.

Запись опубликована в рубрике handmade, Железо с метками , , , , . Добавьте в закладки постоянную ссылку.

59 комментариев на «Счетчик импульсов Zigbee»

  1. Павел Валерьевич Шувалов говорит:

    круто как всегда!

  2. Павел говорит:

    Круто! А устройство с внешним питанием можете сделать? 🙂 Не хочется о батарейках думать.

  3. Александр Серьга говорит:

    А реализацию такой платы не планируете? Какова ее примерная стоимость?

    • Jager говорит:

      Я не собираю на продажу ничего. Но есть люди которые собирают и продают устройства с этого сайта, обитают они здесь https://t.me/zigberu

  4. Иван говорит:

    Отлично! Думаю многие ждали. Возможно ли не отправлять ZigBee модуль в сон , а держать на связи, при условии использования внешнего источника питания? Или сразу передавать данные при изменении значения счётчика ?

    • Jager говорит:

      Вам нужно попробовать собрать самому прошивку из PTVO с нужными вам параметрами.

  5. Петр говорит:

    Как, простите, файл «attiny85_19.hex» прошить в Arduino IDE?

    • Jager говорит:

      Его надо прошивать в attiny, arduino ide один из инструментов для этого.

      • Петр говорит:

        Вы, наверное не поняли вопрос. В среде ардуино конечно же можно написать скетч и залить в Attiny, но .hex файл она не воспринимает. Для этого нужны другие программы. Мне кажется, что фразу про ардуино пока не выложен скетч нужно убрать из текста.

        • Jager говорит:

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

  6. Георгий Ткаченко говорит:

    Очень круто, класс, давно ждали.
    А сделаете адаптер со светодиода на ваш модуль, чтобы считать мерцания счётчиков со светодиодом?

  7. Stanislav говорит:

    А можно выложить исходники прошивки под attiny и сс2530 что-бы при необходимости можно было допилить прошивку?

    • Jager говорит:

      Исходники attiny есть на сайте проекта waterius, прошивка для сс2530 закрытая.

  8. user202 говорит:

    Теперь чтобы собрать устройство еще нужно заплатить 200р за прошивку от PTVO? Или прошивку из архива просто заливать в свое устройство?

    • Jager говорит:

      В статье нет ни слова про «заплатить» и при этом приложена прошивка. Но вы делаете какие то свои выводы…

  9. Vladimir говорит:

    спасибо за отличную работу. А с таким будет работать? http://gazovik33.ru/f/schetchik_grand_16_pasport.pdf

    • Jager говорит:

      Нет, в этом счетчике не «сухой контакт».

      • Vladimir говорит:

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

        • Jager говорит:

          Сложно что то сказать, не зная как там у вас в счетчике реализовано.

      • Igor говорит:

        То есть счетчики на базе датчиков Холла никак не получится использовать?

  10. Антон говорит:

    а в Z2mqtt на стиках поддерживается уже устройство?

  11. Андрей говорит:

    Добрый день.
    Где можно взять внешний конвертер для Z2M?

  12. Павел говорит:

    Здравствуйте. Подскажите, пожалуйста, а в чём принципиальное отличие от того устройства (waterius), которое взято за основу? Только в том, что вместо модуля wi-fi используется ZigBee?
    Интересует потому что хочу на квартире, которую сдаю, установить подобный модуль. Там, естественно, нет никаких умных домов. Только сетка wi-fi.

    • Jager говорит:

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

  13. Михаил говорит:

    Добрый день!
    Смотрю прошивки сс2530 и attiny поменялись. Что то добавили?

  14. Alleon говорит:

    Подскажите пожалуйста, если нужно переспарить — перепрошивать заново?

    • Jager говорит:

      Нет. Нажать и удерживать кнопку 10 сек. или спять/подать питание 3 раза с интервалом 2 сек.

  15. Oleg Vin говорит:

    Знаю в чатах уже ведутся разговоры, но пока не знаю точно. Есть ли намерение сделать универсальный модуль cc2530 + attiny или что угодно через uart на батарейках. Чтоб можно было делать свои девайсы и писать прошивку по сбору и обработке данных на arduino ide, а передавать данные через zigbee.

  16. Alleon говорит:

    «Положительное значение изменит состояние счетчика, отрицательное изменит интервал отправки данных». Отрицательное в минутах?
    После выхода из сна, модуль передаст показания, которые были изменены в период неактивности?

    • Jager говорит:
      1. Да, в минутах
      2. Конечно передаст, в противном случае какой смысл в этом устройстве.
  17. Alleon говорит:

    В SLS почему-то не появляются counter_1 и counter_2, хотя в HA в Z2M с внешним конвертером есть «l3» и «l5». Не могу здесь прикрепить скрин.

    • Jager говорит:

      Кнопку нажмите

      • Alleon говорит:

        Нажимал неоднократно. Перепрошил attiny, появились counter_1 и counter_2 в SLS. Но изменить показания не даёт, как в SLS, так и в Z2M. Причем в HA сразу ошибка, а в SLS всплывает надпись о завершении. Но числа не появляются. Два устройства.

  18. Андрей говорит:

    Будет ли работать через ZHA? Или обязательно через Z2mqtt

  19. Alleon говорит:

    Вот такая ошибка постоянно:

    Writing | ################################################## | 100% 3.64s
    avrdude: 4052 bytes of flash written
    avrdude: verifying flash memory against attiny85_19.hex:
    avrdude: load data flash data from input file attiny85_19.hex:
    avrdude: input file attiny85_19.hex auto detected as Intel Hex
    avrdude: input file attiny85_19.hex contains 4052 bytes
    avrdude: reading on-chip flash data:
    Reading | ################################################## | 100% 3.25s
    avrdude: verifying …
    avrdude: verification error, first mismatch at byte 0x0000
    0x00 != 0x1e
    avrdude: verification error; content mismatcha

  20. Алексей Ежков говорит:

    Шлю в zigbee2mqtt/cold_water/set/l3 значение 36554, но при этом устанавливается {«battery»:100,»device_l3″:»0A»,»device_l5″:»0A»,»l3″:4294938368,»l5″:0,»last_seen»:»2021-06-10T22:16:43+03:00″,»linkquality»:0,»state_l6″:»OFF»,»voltage»:3100}
    Что это за баг такой?

    • Jager говорит:

      Если собирали сами, то обновите прошивку attiny. Если покупали, то обращайтесь к продавцу.

  21. Павел Гельмер говорит:

    Добрый день! подскажите а будет этот счетчик работать с датчиком расхода жидкости YF-S402B?

    • Jager говорит:

      Нет. В нем датчик Холла, и кроме этого огромное количество импульсов на литр (2800) attiny долго не проживет.

  22. Сергей говорит:

    Скажите пожалуйста! Нет в планах добавить к счетчику 2 внешних температурных датчика для контроля t воды?

  23. Руслан говорит:

    Здравствуйте. При запуске в home assistant zigbe2mqtt выдаёт вот такую ошибку :

    (node:330) UnhandledPromiseRejectionWarning: TypeError: e.battery_voltage is not a function
    (Use node --trace-warnings ... to show where the warning was created)
    (node:330) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag --unhandled-rejections=strict (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 1)
    (node:330) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.
    Закомментировал в конвертере вот эту строку

    // e.battery_voltage(),

    zigbee2mqtt запустился и счётчик работает. За что она отвечает ?
    И вот эта строка за что отвечает?
    fz.legacy = ptvo_switch.meta.tuyaThermostatPreset;

    • Ptvo говорит:

      Или у вас старая версия z2m, и там нет такой функции. Или наоборот, новая версия где эту функцию убрали.
      Строка отвечает за совместимость конвертера с очень старыми версиями z2m.

  24. Alexandr Shapenkov говорит:

    Подскажите пожалуйста, в оригинальном waterius’e насколько я понял, attiny регулярно просыпается и смотрит потенциал на входах со счетчиков. Раз в сутки она будит esp, которая запрашивает по uart показания у attiny и шлет их на сервер, потом засыпает снова. Причем этот интервал — раз в сутки, в оригинальном вотериусе не настраивается, кроме изменения прошивки. Если часть с attiny взята из вотериуса без изменений, то как происходит взаимодействие с зигби модулем? Точнее, как настраивается интервал передачи показаний. Зигби модуль сам просыпается и запрашивает показания? Или зигби модуль также будится attitny, тогда это должно происходить раз в сутки.

    • Jager говорит:

      Прошивка attiny была модифицирована для управления интервалом пробуждение модуля zigbee для передачи данных.

      • Андрей говорит:

        А можно исходники прошивки для attiny? Хочу реализовать отправку не совсем по расписанию для реализации кейса определения факта использования воды

        • Jager говорит:

          Насколько мне известно ватериус теперь тоже умеет менять интервал 🙂 смотрите с версии 0.10.1 https://github.com/dontsovcmc/waterius/releases

          • Андрей говорит:

            Это мне известно. Мне как бы не интервал поменять а вообще алгоритм выхода на связь.
            У ватериуса код открыт и я могу поправить как мне нужно, только с ESP это будет жутко неэффективно по потреблению.

            Или вы хотите сказать что протокол обмена тиньки не изменен и прошивка от Ватериуса будет работать со схемой ZigBee? Не верится, т.к. протокол у Ватериуса менялся

          • Jager говорит:

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

  25. Александр говорит:

    Спасибо за девайс!
    Подскажите, будет ли он работать со счётчиком газа СГБМ-1,6Д ?
    Там импульс 15мс

    Коротко описание счётчика:
    В конструкции электронного блока применяется оптрон типа KRC357NT, позволяющий применять дистанционный съем показаний, который выдает импульс не менее 15мс во внешнюю сеть учета на каждые 10 литров прошедшего газа со следующими параметрами:

    - ток внешней цепи оптрона не более 3 мА;
    - напряжение на внешней цепи оптрона не более 60 В.

    • Jager говорит:

      Сложно сказать однозначно. По идее счетчику на входе нужен «сухой контакт», например геркон. С оптроном надо пробовать.

Добавить комментарий