esphome / esphome/feature-requests
Add sniff option to modbus component
- Dominant language
- No language data
- Stars
- 450
- Forks
- 29
- PR merge metrics
- No merged PRs in 30d
Description
**Describe the problem you have/What new integration you would like**
Heatpumps from Pumo-Radson/Mirai/Emmetti use a modbus based controller called [Febos Crono](https://emmeti.com/en/products/air-conditioning/residential-inverter-air-to-water-heat-pumps/air-to-water-heat-pump-mirai-smi-febos-4-0/febos-crono). The Febos Crono is a glorified room thermostat, optionally with wifi to connect to a closed vendor cloud environment that hosts a webapp. The Febos uses a 2-wire RS485 RTU modbus to talk to the heat pump and to an optional power integration module ([Febos Energy](https://emmeti.com/en/products/air-conditioning/residential-inverter-air-to-water-heat-pumps/air-to-water-heat-pump-mirai-smi-febos-4-0/febos-energy))
The Crono is the modbus client, it completely controls the heat pump settings such as schedule, temperatures, when to heat sanitary hot water etc. Both the heat pump and the optional energy monitor serve as servers. Modbus addresses are fixed, the heat pump has address 3 and the energy monitor has address 2, and the Febos Crono (client) has address 1.
**Please describe your use case for this integration and alternatives you've tried:**
I want to monitor and log the performance of the heat pump by sniffing the modbus communications. The current client already loops through all relevant registers and issues reads. Modbus RTU does not support multiple clients, and I want to monitor the modbus read requests and corresponding responses without interfering with communications. The current modbus component does not support sniffing the bus, it expects to either be a server or a client.
I like to be able to integrate the modbus sniffer in esphome/home assistant, so it would be easy for others to use/implement. I could of course sniff the bus (have a working rpi with a level shifter that monitors the modbus now and could publish e.g. to MQTT) but that feels like an unnecessary hack given the integration potential with esphome.
**Additional context**
Custom component that does something similar but does not use the modbus component: https://github.com/htvekov/solivia_esphome
Contributor guide
No contributing guide indexed for this repository
Research direction
Start by reading the existing ESPHome modbus component and the linked solivia_esphome custom component to understand how each handles Modbus RTU traffic. Compare the requested approach with the current client/server modes, then define how sniffed read requests and responses would be exposed without interfering with the bus. Done means the sniffer can be integrated into ESPHome and monitor the described heat-pump communications.
Written by the indexing model from the issue text.
Assessment
- Domain
- embedded-iot
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100