Оптопорт счетчиков, реализация програмирование.

Подключение исполнительных устройств, датчиков, контроллеров.

Модератор: immortal

Ответить
VladPTZ
Сообщения: 382
Зарегистрирован: Вт май 31, 2016 6:56 pm
Откуда: Россия Карелия Петрозаводск
Благодарил (а): 93 раза
Поблагодарили: 55 раз

Оптопорт счетчиков, реализация програмирование.

Сообщение VladPTZ » Чт фев 06, 2020 11:44 am

Пред история идеи.
Приобрел я себе в квартиру электросчетчик энергомера се102м с целью интеграции с MD при помощи модуля энергомера, но как потом выяснилось, продавец мне впарил счетчик без интерфейса rs485 (одна буква в названии модели отличается), типа сам дурак у всех такие других в продаже нет. Пришлось оставить, благо хотя бы на нем есть оптопорт.
Как посже выяснилось считыватель оптопорта не смотря на простоту и дешевизну конструкции, стоит не адекватных денег в разы привыкающею стоимость счетчика, и стоит больше 3000 т р, и длина USB провода и ограничение USB интерфейса не позволяют протянуть его через всю квартиру чтобы подключить к серверу мд.
Схем рабочего оптопорта я в интернете не нашел, пробовал изобрести велосипед, не получилось. Через три года дошли руки, и осцилограф появился.
Нашел схему http://vad-7.blogspot.com/2017/02/Mercu ... -IrDA.html
Собрал, счетчик не читается, как выяснилось оптопрот и irda на счетчиках это разные не совместимые протоколы.

Попался в руки считыватель оптопорта заводского исполнения на пару часов для пробы, счетчик успешно прочитался программой admintolls http://www.energomera.ru/ru/support/download/meters
Внутри этот девайс не сложен и выглядит вот так.
photo_2020-02-03_11-58-57.jpg
photo_2020-02-03_11-58-57.jpg (78.84 КБ) 735 просмотров
После анализа данной схемы, стало понятней в каком направлении двигаться.
Схема состоит из передающего ИК диода который через резистор напрямую подключен к микросхеме usb -uart конвертера ftdi232 а приемник реализован на фотодиоде и предположительно компараторе GT92.
На GT92 документации не нашел, может кто видел документацию на этот чип?
Очень похожая схема у датчика припядствия для ардуино https://aliexpress.ru/item/32813355026. ... b201603_53

Вот его схема
photo_2018-11-21_18-46-58.jpg
photo_2018-11-21_18-46-58.jpg (61.41 КБ) 730 просмотров
Немного переделал этот датчик под считыватель, отпаял минус у передающего ИК диода и подключил его на вход TX . Отпаял конденсатор который стоит параллельно приемному ик диоду чтобы не искажал принимаемый сигнал иначе не работало, выход data подключил к входу rx платы ftdi232.
IMG_20200206_120131.jpg
IMG_20200206_120131.jpg (1.61 МБ) 722 просмотра
Плату ftdi232 использую вот такую https://aliexpress.ru/item/32826575637. ... b201603_53
Для проверки работоспособности схемы запускаю программу putty выбираю СОМ порт выставляю скорость 9600, далее ставим на против ик приемо передающих диодов зеркало и переменным резисторов на плате добиваемся в putty стабильной передачи без искажений символов и текстов с клавиатуры.
Теперь можно пробовать подключиться к с счетчику энергомера се102м программой AdminTools и к счетчику Меркури1 236 программой с конфигурирования https://www.incotexcom.ru/support/soft
В моем случаю с меркурия боле мене стабильное считывания показаний происходит примерно в 3 см от счетчика, с энергомерой сложнее, стоит в щите и расстояние подобрать трудно, считывание проиходит три раза из десяти попыток.

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

Дальнейшее развитие идеи это подключить считыватель к esp8266 и написать код чтобы esp считывала параметры напряжения мощность, текущие показания и т. и передавало их в мд по http запросу меняя свойства объекта.
вот лог обмена приложения admintools со счетчиком

Код: Выделить всё

Запрос
05.02.2020 22:15:14.810
2F 3F 21 0D 0A                                            /?!..

Ответ
05.02.2020 22:15:15.028
7F 0F 6A 77 7C 2F 45 4B                                   .jw|/EK

Ответ
05.02.2020 22:15:15.138
54 35 43 45 31 30 32 4D 76 30 31 0D 0A                    T5CE102Mv01..

Запрос
05.02.2020 22:15:15.153
06 30 35 31 0D 0A                                         .051..

Ответ
05.02.2020 22:15:15.372
07 30 35 31 63 61 01 50 30                                .051ca.P0

Ответ
05.02.2020 22:15:15.466
02 28 31 30 39 31 31 31 33 38 36 29 03 24                 .(109111386).$

Запрос
05.02.2020 22:15:15.482
01 50 31 02 28 37 37 37 37 37 37 29 03 21                 .P1.(777777).!

Ответ
05.02.2020 22:15:15.700
60 54 6C 30 6F 6A 60 64 06                                `Tl0oj`d.

Запрос
05.02.2020 22:15:15.794
01 52 31 02 53 4E 55 4D 42 28 29 03 5E                    .R1.SNUMB().^

Ответ
05.02.2020 22:15:15.810
60 3A 7E 30 3E 7F 55 2D 0A 29 6D 58                       `:~0>U-.)mX

Ответ
05.02.2020 22:15:16.075
02 53 4E 55 4D 42 28 30 31 30 35 31 30 31 30 39           .SNUMB(010384109
31 31 31 33 38 36 29 0D 0A 03 65                          111665)...e

Запрос
05.02.2020 22:15:16.091
01 42 30 03 75                                            .B0.u
Видео с полезным материалом https://www.youtube.com/watch?v=38w19u8 ... =22&t=675s
Последний раз редактировалось VladPTZ Пт мар 06, 2020 8:14 am, всего редактировалось 1 раз.
Сервер МД на x86 micro pc ssd + HDD, OC Debian, терминал Xiaomi Redmi note 7
Мои исходники для мд управляемых устройств https://github.com/vgamaev/ESPMDDEVICE
VladPTZ
Сообщения: 382
Зарегистрирован: Вт май 31, 2016 6:56 pm
Откуда: Россия Карелия Петрозаводск
Благодарил (а): 93 раза
Поблагодарили: 55 раз

Re: Оптопорт счетчиков, реализация програмирование.

Сообщение VladPTZ » Вт фев 11, 2020 10:01 pm

Покопавшись в Интернете нашел код http://arduino.ru/forum/programmirovani ... ent-350800 и доделал вот такой код для ардуины чтения счетчика Энергомера СE102М
https://github.com/vgamaev/Energomera-C ... Energomera
Вот что читает со счетчика.

Код: Выделить всё

ET0PE   7288.43------>7288.43
VOLTA   216.72------>216.72
POWEP   0.349126------>0.35
FREQU   50.01------>50.01
CURRE   1.689------>1.69
COS_f   0------>0.00

ET0PE   7288.43------>7288.43
VOLTA   218.55------>218.55
POWEP   0.343947------>0.34
FREQU   49.99------>49.99
CURRE   1.632------>1.63
COS_f   0------>0.00

ET0PE   7288.43------>7288.43
VOLTA   220.06------>220.06
POWEP   0.331969------>0.33
FREQU   49.98------>49.98
CURRE   1.615------>1.61
COS_f   0------>0.00

ET0PE   7288.44------>7288.44
VOLTA   221.13------>221.13
POWEP   0.331894------>0.33
FREQU   50.00------>50.00
CURRE   1.597------>1.60
COS_f   0------>0.00

ET0PE   7288.44------>7288.44
VOLTA   220.30------>220.30
POWEP   0.331338------>0.33
FREQU   49.99------>49.99
CURRE   1.587------>1.59
COS_f   0------>0.00
Значения аолучаю как строку так и float
Сервер МД на x86 micro pc ssd + HDD, OC Debian, терминал Xiaomi Redmi note 7
Мои исходники для мд управляемых устройств https://github.com/vgamaev/ESPMDDEVICE
VladPTZ
Сообщения: 382
Зарегистрирован: Вт май 31, 2016 6:56 pm
Откуда: Россия Карелия Петрозаводск
Благодарил (а): 93 раза
Поблагодарили: 55 раз

Re: Оптопорт счетчиков, реализация програмирование.

Сообщение VladPTZ » Ср фев 19, 2020 8:15 am

Написал прошивку для ESP8266, которая отображает показания, такие как текущее значение кв час, напряжение сети, потребляемая мощность, сила тока, частота сети, счетчика на своей странице и передает показания с MajorDomo записывая свойства в заданном web интерфейсе объекта. Устройство работает по wifi не каких проводов, переходников до сервера тянуть и подключать не надо.
Показания читаются через оптопорт счетчика, через RS 485 не проверял так как у меня такого интерфейса нет.
https://github.com/vgamaev/ESPMDDEVICE
Вложения
200009500823_3306.jpg
200009500823_3306.jpg (87.74 КБ) 547 просмотров
Сервер МД на x86 micro pc ssd + HDD, OC Debian, терминал Xiaomi Redmi note 7
Мои исходники для мд управляемых устройств https://github.com/vgamaev/ESPMDDEVICE
svetozar161
Сообщения: 70
Зарегистрирован: Пт янв 13, 2017 11:48 pm
Благодарил (а): 6 раз
Поблагодарили: 3 раза

Re: Оптопорт счетчиков, реализация програмирование.

Сообщение svetozar161 » Пт фев 21, 2020 12:34 am

Здравствуйте. Поясните пожалуйста, как и что прописать в мажордомо, чтобы увидеть хоть какие-то показания счетчика. Счетчик у меня CE102, подключил через адаптер RS485 TTL но ничего не происходит. На вашей главной странице все по нулям.
VladPTZ
Сообщения: 382
Зарегистрирован: Вт май 31, 2016 6:56 pm
Откуда: Россия Карелия Петрозаводск
Благодарил (а): 93 раза
Поблагодарили: 55 раз

Re: Оптопорт счетчиков, реализация програмирование.

Сообщение VladPTZ » Пт фев 21, 2020 9:52 am

В МД нужно создать объект например Enetgomera и прописать имя этого объекта в устройстве во вкладке setup, свойства объекта должны создаться сами, такие как ET0PE , VOLTA , POWEP , CURRE , COS_t, если не создается то создать руками.
У вас счетчик просто CE102 или как у меня CE102М ? Если без М то у них не совместимые протоколы.
Нашел пример библиотеки для CE102 без M https://github.com/semiotproject/Energomera-CE102-lib , возможно с нее сможете выковырять запросы и доработать код под свой счетчик.
Еще момент, как я понял при обмене со счетчиком по интерфейсу RS485 помимо rx, tx участвует еще и контакт DTR, в моем коде это 15 контакт.
https://github.com/vgamaev/ESPMDDEVICE/ ... MERA.h#L42

Описание протокола да CE102
https://www.google.com/url?sa=t&source= ... Si3x7BBsCj
Описание протокола для CE102M
https://www.google.com/url?sa=t&source= ... UrCXBELje0
Сервер МД на x86 micro pc ssd + HDD, OC Debian, терминал Xiaomi Redmi note 7
Мои исходники для мд управляемых устройств https://github.com/vgamaev/ESPMDDEVICE
VladPTZ
Сообщения: 382
Зарегистрирован: Вт май 31, 2016 6:56 pm
Откуда: Россия Карелия Петрозаводск
Благодарил (а): 93 раза
Поблагодарили: 55 раз

Re: Оптопорт счетчиков, реализация програмирование.

Сообщение VladPTZ » Чт мар 05, 2020 9:57 am

1.jpg
1.jpg (59.18 КБ) 306 просмотров
В итоге получилось вот такое устройство, осталось только поставить его в щиток в подъезде и подклбчить питание.
Сервер МД на x86 micro pc ssd + HDD, OC Debian, терминал Xiaomi Redmi note 7
Мои исходники для мд управляемых устройств https://github.com/vgamaev/ESPMDDEVICE
Ответить