Budget: 20000 UAH Deadline: 30 days
Good day, if you have all the documentation with the set of commands, I am ready to complete your task
Breadboard
ESP32-S3-ETH
RS-485 TTL modules HW-519 — 4 pcs.
Multiplexers: HW-178 or CJMCU-4051
M-Bus master to TTL converter
DC-DC converter 24V → 5V
Power supply 24V 3A
Temperature sensor XY-MD02
2 water meters with M-Bus overlays
Sharky 775 heat meter with M-Bus module
NIK meters:
NIK 2100 AP6T.2200.MC.11
NIK 2307 0.5s ART T.1620.MC.22
Manufacturer documentation on the RS-485 protocol (for meter operation)
Controller: ESP32-S3-ETH
Available UARTs: 3 hardware UARTs
Converters:
5 x RS485-TTL (HW-519 or compatible)
1 x M-Bus-TTL Master
Multiplexer: HW-178 or CJMCU-4051
Additional modules: DC-DC, temperature/environment sensors
One UART (UART1 or another available) of ESP32 is used for reading from 6 channels via the multiplexer.
The multiplexer switches access to one of the 6 converters at any given time.
Multiplexer switching logic is implemented through 3 GPIO (S0, S1, S2).
Scanning devices on M-Bus: identifying active addresses
Polling each M-Bus device by its unique address (identifier)
Collecting and parsing consumption values or other indicators
Scanning each of the 5 RS-485 channels for devices (can be implemented via polling known addresses or NIK protocols)
Polling each device on the channel (address, model)
Supporting requests for NIK 2100 and NIK 2307 (details in notes)
All results should be structured in JSON format, for example :
{
"data": [
{
"device": "NIK 2100 AP6T.2200.MC.11",
"id": "1234567890",
"type": "rs485-1",
"value": "128.45",
"timestamp": "2025-05-05T12:34:56"
}
// ...other devices
]
}
The final format will be determined during collaboration
Output file in .ino format for Arduino framework (for PlatformIO or Arduino IDE)
Implement polling loop:
Polling interval — configurable (e.g., once every 5 minutes)
Store JSON results in RAM (output via Serial, UART, or Ethernet)
Timestamps — via RTC or NTP (if needed)
Ready and tested .ino firmware file that:
polls all 6 channels (M-Bus and RS485-1…5)
generates valid JSON with device data
outputs JSON via Serial
2. Firmware documentation
Notes:
Additional information regarding RS-485 operation for NIK meters:
NIK 2100 AP6T.2200.MC.11 and NIK 2307 0.5s ART T.1620.MC.22 use a protocol based on IEC 62056-46, -53, -61, -62 standards, which involves HDLC framing and COSEM/DLMS data structures.
Communication with the meter includes stages:
Initialization of connection (sending SNRM frame and receiving UA response).
Authorization via AARQ packet with password (user, operator, or administrator).
Processing AARE response to verify authorization.
After authorization — exchanging GET requests using OBIS codes to read indicators.
Ending session with DISC packet.
Authorization uses a 16-byte password transmitted in the AARQ field. Access type (user/operator/admin) is set in the user ID.
After 5 unsuccessful authorization attempts with the same ID, access is blocked for 30 minutes.
All packets are wrapped in HDLC structure with CRC checksums (calculated with 16-bit CRC, algorithm provided in the documentation).
Meter addressing is done in HDLC format based on serial number (conversion algorithm also provided in the documentation).
Note that not all meters may respond to address scans — in such cases, polling by a known list of serial numbers is possible.
Budget: 20000 UAH Deadline: 30 days
Good day, if you have all the documentation with the set of commands, I am ready to complete your task
это на ПК даже будет довольно сложно реализовать, а вы хотите на ЕСП32 что бы фрилансер сделал
нанимайте команду какуюто или фирму
Добрый день!
Для этого проекта ESP 32 будет явно слабовата для стандарта DLMS/COSEM запроса. Если взять RPI можно продолжить разговор...