Скрыть объявление
На нашем форуме недоступен просмотр изображений для неавторизованных пользователей. Если Вы уже зарегистрированы на нашем форуме, то можете войти. Если у Вас еще нет аккаунта, мы будем рады, если Вы к нам присоединитесь. Зарегистрироваться Вы можете здесь.

Дистанционное снятие показаний электросчетчика Меркурий

Тема в разделе "Умный дом", создана пользователем vad7, 17 мар 2017.

  1. vad7

    vad7 Авторитетный участник сообщества

    Сообщения:
    398
    Симпатии:
    48
    Многотарифные 3-х фазные электро-счетчики Меркурий 231 АТ (230) имеют ИК интерфейс, через который можно снимать показания, изменять параметры счетчика, корректировать время.
    Со счетчика можно считать достаточно много данных.

    Для этого используется модуль на базе esp8266, который выступает еще в качестве веб-сервера. Он также занимается отправкой данных на IoT сервер, автоматически корректирует время, строит графики - по дням, по часам, по минутам.

    Я использовал старый модуль esp01 из этого проекта, только перепаял флеш память на 16 Мбайт.
    Память используется для постройки графиков и сохранения истории.
    В ней хранится два циклических буфера - по дням на 7680 дней и детальное потребление до конца памяти (для флеши 4 Мбайта - 2136 дней).

    Для хранения текущих указателей и других переменных массива истории используется 30 байт вечной памяти FRAM.
    В принципе, можно было обойтись и без нее, но раз она уже у меня была распаяна, почему бы ее не использовать.

    Web1.jpg

    Графики строятся с помощью библиотеки D3.js:

    Web4.jpg

    Web6.jpg Web3.jpg

    Схема:
    PowerMeter-IrDA.jpg

    Подробнее здесь: Устройства для дома на микроконтроллерах: Дистанционное снятие показаний электросчетчика Меркурий

    Прошивка здесь: Releases · vad7/PowerMeter-IrDA · GitHub
     
    Последнее редактирование: 12 апр 2017
    Lstt, aloika и pvvx нравится это.
  2. Сергей_Ф

    Сергей_Ф Moderator Команда форума

    Сообщения:
    2.148
    Симпатии:
    226
    Замечательно. Можно увидеть конструктив? Чем питается устройство? Что надо сделать, если отказаться от FRAM?
     
  3. vad7

    vad7 Авторитетный участник сообщества

    Сообщения:
    398
    Симпатии:
    48
    Фото в сборе к сожалений нет, есть только по частям.
    Конструктив простейший - к esp01 припаяна платка на макетке с MCP2120, а к ней на проводах подсоединена платка с ИК сенсором TFDU4100.

    1.jpg

    IrDa_sensor_case_printed.jpg

    Питание - микромодуль.

    Отказаться от FRAM - дописать логику программы, чтобы при включении определяла текущие указатели в кольцевых буферах и время фактического отключения питания со счетчика, чтобы рассчитать смещение времени.
     
    Последнее редактирование: 17 мар 2017
  4. aloika

    aloika Активный участник сообщества

    Сообщения:
    367
    Симпатии:
    25
    Отличный проект!
    Работает ли ОТА? Стабильно ли?
     
  5. pvvx

    pvvx Активный участник сообщества

    Сообщения:
    8.475
    Симпатии:
    1.274
    Через диод подключить питание на RTC RAM от мелкого элемента-батарейки на 1.25В...
    FRAM безусловно лучше, в любых сборщиках и при расчетах статистики. Тем более цена давно низкая. А вот мелких уже не купить, в основном идут от 16 килобайт. С большими объемами, чем 128 кило, в корпусах не для "кухонного" паяльника. Такая ветка.
    Туда обычно сохраняют текущий кольцевой посекундный график, а так-же статистику по записям в flash. Как раз 16 кило - это минималка для обычного логгера с кольцевым буфером основных записей на год от десятка датчиков... Иначе вам придется при старте собирать кучу последних записей из Flash для вычисления среднего за последнюю неделю, месяц и другие интервалы графиков, а выключение питания будет приводить к потере-выпадениям к шагу записи в Flash. Выйдет не профессиональное, а ардуиновское решение. FRAM дешевле и практичнее супервайзера с UPS.
    Данная система, как вижу построена на web-свалке, а она имеет корни именно от таких систем с FRAM + FLASH, которые уже работают более 15 лет непрерывно, но на контроллере попроще - обслуживание web до 4-х клиентов одновременно и показания по 16 датчикам с выбором показа графиком или распечаткой для принтера, ну и LAN с прямым выходом в глобальный Инет (вместо WiFi и "роутеров с бредмаурами", т.к. стабилен на 1000%), RAM 16 килобайт у MCU всего :)..
    Дизайн web немного другой:
    Снимок1330.gif
    - все слова в меню кликабельны и вызывают переключение или другую страницу... Остальное - "ком. тайна".
    С ESP достичь такой стабильности в процессе 2-х лет тестов не удалось, сейчас и пилю RTL SDK для замены тех устройств на более новые с расширенными показаниями и возможностями, иначе придется использовать что-то более дорогое, а оно серийное... Может vad7 удастся допилить ESP (?)...
    Да, c только Flash есть ещё одна особенность - время стирания сектора и записи блока. Если проц работает тоже из неё, тогда реакция системы становиться с этим интервалом, что не всегда применимо, к примеру в том-же ModBus RS-485, чтобы полностью обеспечить стандарт. Придется лепить или вторую Flash, или куски кода с зависимым временем реакции (ответа) должны сидеть в RAM. FRAM частично решает эти проблемы, т.к. можно отложить операцию с Flash.
    SD для нормальных устройств не годятся - причин много, пример:

    Во-первых, проблемы вызвали SD-карты памяти, которые при работе часто давали сбои, для восстановления работоспособности карт их приходилось переформатировать и записывать образ системы повторно.
    Источник <Диапазон рабочих температур Raspberry Pi. Результаты тестов>
     
    Последнее редактирование: 17 мар 2017
  6. pvvx

    pvvx Активный участник сообщества

    Сообщения:
    8.475
    Симпатии:
    1.274
    @vad7 - а зачем стоит MCP2120? Встроенный IR режим в UART не работает?
     
  7. vad7

    vad7 Авторитетный участник сообщества

    Сообщения:
    398
    Симпатии:
    48
    @pvvx, есть то есть, но не работает ни фига. А разбираться нет ни времени ни желания.

    Простое добавление UART_IRDA_EN не включает генерацию вообще. Если добавить UART_IRDA_TX_EN, то генерация начинается, выводит какую-то ерунду.
     
    Последнее редактирование: 20 мар 2017
  8. Lstt

    Lstt Новичок

    Сообщения:
    64
    Симпатии:
    4
    Есть ли возможность варианта отказаться от FRAM, которую иногда трудно найти за пределами МКАД?
    Планируется ли внедрение возможности передачи информации на MQTT сервер и подписку на топики? Вообще было бы супер!
    Если было на Arduino, попытался бы изменить сам, а на Eclipse, увы, не умею..:)
     
    Последнее редактирование: 21 мар 2017
  9. vad7

    vad7 Авторитетный участник сообщества

    Сообщения:
    398
    Симпатии:
    48
    @Lstt, нет, пока не планирую - сделал для себя, на текущий момент хватает. Единственное, позже добавлю график по месяцам и выбор года/периода. Щас это не актуально, так как данных еще мало собралось.

    На алиэкспресс, где и брал, памяти FM24C04 (512 байт) много и стоит копейки. Есть даже в дип корпусе.
     
    Lstt нравится это.
  10. Lstt

    Lstt Новичок

    Сообщения:
    64
    Симпатии:
    4
    Ок, закажу FM24c04 c Taobao..Мне оттуда проще..
     
  11. Lstt

    Lstt Новичок

    Сообщения:
    64
    Симпатии:
    4
    Вы имеете ввиду, переработать код, убирая обращения по i2c? А как правильно запитать RTC память в случае с NodeMCU?
     
  12. vad7

    vad7 Авторитетный участник сообщества

    Сообщения:
    398
    Симпатии:
    48
    @nikolz, @Lstt - ага, выпаять феном у модуля крышку, умудриться припаять на VDD_RTC проводок к батарейке.
    Офигительно просто.
    Хотя тут вот прочел на сайте espressif, что он NC, то есть облом:
    VDD_RTC is a reserved pin and powered by internal LDO.
    Thus, it can just be NC.


    UART IrDA у esp8266 с багом, глотает биты у второго байта и далее:
    esp9266_irda_bug.jpg
     
    Последнее редактирование: 27 мар 2017
  13. pvvx

    pvvx Активный участник сообщества

    Сообщения:
    8.475
    Симпатии:
    1.274
    Чтобы данные сохраняло - зачем вообще FRAM и подобные?
    Всё уже проверенно пару лет назад. Сброс питания RTC в ESP8266 заведен на чипселект - внутренний LDO при этом не работает. Диод и батарейка типа AG13 спасают дело RTC, т.к. чип с браком, но данное решение его обходит.

    Вам хоть сто раз писать, всё равно глухи. Чтобы получить достоверные данные, необходимо ПОСТОЯННО опрашивать внешние датчики и при опросе хоть в 1 сек их не записать циклически в Flash объемом менее 128 Мегабайт, чтобы не перекрыть допустимый максимум ресурса записи Flash. Она после 10-ти тысяч записей/стираний в одну ячейку будет страдать вашей болезнью – быстрой забывчивостью. Логгеров вы ни разу в жизни не делали и их проблем не знаете. Для этого их описал для вас в предыдущих сообщениях данной темы, но приходиться повторять - быстрая забывчивость у вас?

    При отключении питания данные от счетчика не нужны, но пропуск последних влияет на общую картину. Снимать раз в минуту данные не фильтруя/усредняя за период – это не датчик и не статистика, а глупые разрозненные точки неизвестно о чем. Тормозить запрос показаний пользователю за последний период, путем быстрого перебора половины flash для расчета сумм и усреднения - никто, кроме вас так не делает. Их надо иметь всегда готовыми и рассчитанными. Если реакция устройства на действия пользователя более 0.2 секунд – это значит, что кнопка будет разбита или его надо постучать молотком – отвалилось что-то. Расчет последних усреднений при обрыве питания без записи в FRAM тоже сорвется и при последующем включении поздно махать руками, перелопачивая всю flash, да у контроллера нет столько ресурсов, чтобы поддерживать множественные алгоритмы восстановления данных после обрыва и для рабочего цикла… Дешевле поставить FRAM– будет меньше объем кода и ошибок в ПО.
     
    Последнее редактирование: 27 мар 2017
  14. Lstt

    Lstt Новичок

    Сообщения:
    64
    Симпатии:
    4
    Для себя вижу ещё более простой вариант - банально, опрос счётчика с определенным интервалом (например, раз в минуту) и (при наличии внешнего сервера-контроллера) посылка данных (напругу, мощность и т.д.) по MQTT на этот сервак(контроллер). Там данные сохраняются в SQL . А там уже можно делать, чего душа пожелает - запрос со смартфона через Telegram (любые цифры статистики) и т.д.
    Естественно, при наличии, внешнего сервака..Я использую IOBroker - ioBroker – Automate your life , ioBroker Forum - Русскоязычные форумы
     
    Последнее редактирование: 28 мар 2017
  15. vad7

    vad7 Авторитетный участник сообщества

    Сообщения:
    398
    Симпатии:
    48
  16. vad7

    vad7 Авторитетный участник сообщества

    Сообщения:
    398
    Симпатии:
    48
    Так это наоборот усложнение получается:
    Ручная обработка ИК,
    Сторонние сервера для хранения данных, которые могут быть также обесточены, если дома, и не доступны или внезапно платны, если внешние.
    В моем случае ничего, кроме собранного устройства не нужно.

    Отсутствие энергонезависимой памяти усложняет код, и не факт, что проще - купить и припаять FRAM или пытаться ее "заменить".
    Вот сделал я двухстадийный ОТА для флеши 512к, и хотя там пару строчек кода, а припаять флеш на 16Мб оказалось проще.
     
  17. pvvx

    pvvx Активный участник сообщества

    Сообщения:
    8.475
    Симпатии:
    1.274
    Если переводите разговор об общем понятии устройств логгирования – то у нас нет среды для её создания. Эта область IoT ещё не сформирована. Ни один ESP в неё не вписывается, т.к. это удел устройств с несколькими мегабайтами RAM. В его составе должен быть web-сервер на несколько подключений любых стандартных на сегодняшний день устройств, позволяющий производить конфигурацию устройства и вывод статистики работы устройства за всю жизнь в графическом и текстовом виде. Никакие внешние сервера при этом не требуются и не нужны для набора статистики. Управление и слияние с внешним миром – это другая задача и зависит от пипа устройства. Статистика нужна любому современному устройству, от лампочки, аккумулятора до холодильника или автомобиля. Не имеет смысла содержание их данных на внешних серверах.
    Web-свалка - это только кусочек зачаток таких систем. Ваши же движения идут в обратную сторону, чтобы удалить время создания структуры таких систем и затормозить прогресс :)

    Наиболее близким по возможностям и поддержки класса IoT устройств находящегося между простым передающим датчиком и системой на OpenWRT или Линукс счас является mbed. Другие структуры и среды разработки очень далеки от этого. Mbed пока дает и формирует только уровень api. Тоже ещё далеко, но он всё же ближе к цели, чем другие. :p Так что забудьте о всяких Arduino, Lua и прочих – это игрушки, нашлепки над системой, для других задач, даже не IoT. Им до формирования функциональности в IoT дальше всех.

    Не сформировано ещё основного набора концепций api с минимальными ресурсами системы (RAM от 1 до 16 МВ, Flash от 8 до 128 МВ) –
    1. Конфигуратора настроек подключения устройства к внешним системам – управления драйверами типа WiFi, NFС и т.д. для активации соединения.
    2. Дисковой системы для хранения файлов и сопровождения логгирования (объемы от десятка МВ).
    3. Системы минимальных стандартных сетевых драйверов для обеспечения соединения с любым устройством (DHCP, mDNS, NETBIOS, …).
    4. Стеков сетевых протоколов TCPcHTTP + TSL/SSL с многопользовательской поддержкой.
    5. Управления многозадачностью (apiдля RTOS)
    6. Api для Web, websocket и прочим серверам и клиентам.
    7. Api для драйверов контроллеров периферии работающей по DMA (SPI, I2С, PCM, ...)
    На сегодня это формируется только в Mbed. Web-свалка - это первый вариант пробы создания общей структуры на конроллере, который не совсем годиться для этого. По этому имеет многие ограничения и специфику, например - переносимость на другие устройства. Но её цель не в том, а в демонстрации, что это возможно на ограниченных ресурсах (а не на луникс со своими заморочками долгой загрузки) и она её выполнила на 1000%. :p
    А вот ваших вариантов решений пока не видно - одни стенания и предложения горбатых решений, уводящих от построения и развития концепций для устройств IoT. :)
    Тут уж ничего не поделать, если вы слепы и не видите тенденций движения и развития в IoT. На следующий год как раз уже все MCU с WiFi и прочими системами связи будут иметь необходимый минимум аппаратной части для данного класса устройств. Этот класс будет востребован на сроки не менее 15 лет развития IoT. ESP8266 или ESP-32S в них не входит и являются мертворожденными вариантами для IoT.
    PS: Под концепции описываемого класса счас и пытаюсь перелопатить SDK от RTL871x с 2.5МВ RAM. Но уже ожидаются более подходящие микроконтроллеры... :p Наиболее близкие решения к данному классу рынок выпускал в виде роутеров - там есть система web и конфигурации связи с внешним миром. Больше там ничего нет и требует дополнений, а имеющая часть реализации не имеет стандартизированного api.
    Я не думаю, что вы справитесь с современными SoC, т.к. процессор там самая последняя часть по приоритету, а более важными являются интегрированные в SoC решения и необходимый для их поддержки объем RAM и Flash. Для “телепузиков” это уже непроходимый объем информации как связать все потроха и вызывает у них "перегрузку мозгу" и стенания, вроде ваших. :)
    Так што решение @vad7 находится в правильном направлении, но реализовать всё нормально не позволяет убогость и качество ESP8266. И нефиг выдумывать какие-то костыли к нему, т.к. оно собрано из того что есть с учетом описываемого :p
    Ой как сложно поставить FRAM... :) :) Надо выдумывать внешние сервера и другие глупости, которые для основного функционирования данного устройства вообще не нужны, а вписать передачу накопленных данных - дело пяти минут.
     
    Последнее редактирование: 29 мар 2017
  18. pvvx

    pvvx Активный участник сообщества

    Сообщения:
    8.475
    Симпатии:
    1.274
    Да-да-да - всё выкинуть, т.к. любимая Arduino на любимом глюке ESP8266 не позволяет сделать нормального решения. :) Лучше заплатить провайдерам и за обслуживание вешними серверами раз в 100 больше, чем просто добавить один раз сотню руб в стоимость устройства и взять подходящий SoC. Привычка жить в кредит (оплачивать потом во много раз больше)? :)
    Без наблюдающего папочки с выплатами ему жить уже никак (по другому не пробовали)? :) Кому нужны нежизнеспособные, зависящие от внешнего мира устройства? Природа не создает таких – у неё все имеют определенный уровень автономности.
    Дайте мне бесплатный сервер, способный собирать статистику с приемом данных от 1000 точек в секунду и покажите когда это будет доступно для пропускной способности сети для каждого устройства в доме, считая от каждой лампочки :)
    Выборка по одной точке в сек с обычного счетчика электроэнергии - это не является правильными данными и по ней невозможно получить правильные показания потребления. Что-то счетчик так не делает, а отслеживает каждые 3 фазы полуволны 50 Гц - минимум 300 точек в сек. :p
    При вашем методе за сутки наберется расхождение с показаниями счетчика в более 10%.
    В связи с имеющимся интерфейсом связи у счетчика вам нельзя пропускать ни одного импульса ИК с него. И т.к. у вас Arduino в мозгах, понятно, что это невозможно на ней и вы ищите халявные, кое как сделанные, решения предоставленные для дальнейшего получения прибыли от вас сторонними держателями серверов. Главная цель которых - посадить на иглу :) Наверняка каким-то боком кормитесь от данного направления посредников и предложение использовать внешние сервера является очередной рекламой их недоработанного сервиса, не позволяющего обеспечить требуемой функциональности. :)
     
    Последнее редактирование: 29 мар 2017
  19. pvvx

    pvvx Активный участник сообщества

    Сообщения:
    8.475
    Симпатии:
    1.274
    Это ваше видение. Оно в корне неверно и подобрано под ваши условия и недальновидность, с желанием получить только халяву и не развиваться далее. Уже давно вы тут пропагандируете решения ухода от развития - всё новое вам страшно, чуждо, и воспринимаете с трудом. А основные цели форума в обучении, а не как за 5 минут сделать что-то кривое. :p
    Обучение подразумевает предоставление альтернативных решений на выбор и умение их использовать. От вас решений и вариантов не исходит. Волочитесь далее, ничего не понимая :)
    Вот чё вы вперлись в данную тему? Тут вашего ничего нет, а хаять может любой. :p
    Мы тут как-бы создаем новые направления на имеющихся наших разработках, а не создаем халяву под ваши условия для сборки за пять минут на кухне безграмотными в электронике, вроде вас . :)
     
    Последнее редактирование: 29 мар 2017
  20. pvvx

    pvvx Активный участник сообщества

    Сообщения:
    8.475
    Симпатии:
    1.274
    Автор @vad7 тут описывает, что не так в филармонии, предоставляя своё решение на имеющихся кусках. Вы что тут предоставили, чтобы выяснить, как далее вести дальнейшее развитие хоть темы IoT на простых SoC?
    Свой понос про Остапов? :)
     

Поделиться этой страницей