Symptom
One or more Modbus devices (for example, energy meters) show communication errors or don’t respond. This often happens when:
- Adding multiple devices to the same bus
- Configuring a new device with factory default settings
- Two devices accidentally have the same Slave ID
Cause
Every Modbus device on the same bus must have a unique Slave ID. Most devices ship with a factory default ID (often 1), causing collisions when multiple devices are connected.
Solution
Step 1: Identify the Collision
- Go to Settings → Hardware and check which Modbus devices show errors
- Note the Slave IDs configured in TapHome
- Check if any two devices share the same ID
Step 2: Isolate the Device
If you can’t communicate with the device:
- Disconnect all other Modbus devices from the bus temporarily
- Leave only the device you want to reconfigure
- This ensures you can communicate with it
Step 3: Change the Slave ID
The Slave ID can be changed in one of two ways:
Option A: Via TapHome Service settings
- Open the Modbus device in TapHome
- Go to Service settings
- Look for a Service actions related to Slave ID
- Set a unique ID (e.g., 5, 10, 15 for different devices)
- Save the settings
Option B: Via device’s own interface
Some Modbus devices have their own menu or configuration interface. Refer to the device’s documentation for instructions on how to change the Slave ID.
The Slave ID is stored in the device’s internal memory. This is different from the communication settings in TapHome.
Step 4: Update TapHome Configuration
After changing the device’s Slave ID:
- Go to the device’s communication settings in TapHome
- Update the Slave ID to match the new value you just set
- The device should now communicate without errors
Step 5: Reconnect Other Devices
- Reconnect the other Modbus devices to the bus
- Verify each device has a unique Slave ID
- All devices should now communicate properly
Best Practice for Multiple Devices
When setting up multiple Modbus devices:
- Connect one device at a time
- Change its Slave ID to a unique value before connecting the next device
- Use a numbering scheme (e.g., 10, 11, 12… or 5, 10, 15…)
- Avoid Slave ID 1 as it’s the common factory default