KWS-303L
KWS-303L
Configuration for the KWS-303L Energy Meter – a compact, 1-module DIN-rail, Modbus-based device used for monitoring electrical parameters such as voltage, current (rated at 40 A), power, and more. This configuration enables seamless integration of the KWS-303L into ESPHome-based projects.
KWS-303L Energy Meter

KWS-303L Energy Meter in ESPHome

Features
- Real-time Monitoring – Measure voltage, current, power, energy, frequency, and more.
- Alarm Support – Detect over-voltage, under-voltage, over-current, and over-temperature conditions.
- Configurable Limits – Set thresholds for voltage, current, power, and temperature.
- Multi-device Support – Connect multiple meters to the same RS-485 bus.
- Relay Control – Control the onboard relay to switch loads on or off.
Note: This is not a protection device. Use it for monitoring purposes only.
Manufacturer Documentation
For technical specifications, refer to the official user manual (source: http://kowsi.cn/):
KWS-303L User Manual
Important: The manufacturer does not publish register mappings for this device. This configuration is based on reverse engineering efforts, primarily by baldale – many thanks – and community contributions.
ESPHome Integration
Prerequisites
Ensure UART and Modbus are configured in your ESPHome YAML. For example:
# Configure the UART interface for RS-485 communication and initialise Modbus.
# This example uses an ESP8266 NodeMCU Devkit v0.9 with a MAX485 module.
uart:
  - id: uart_rs_485
    tx_pin: 14
    rx_pin: 12
    baud_rate: 9600
    parity: "EVEN"
    stop_bits: 1
modbus:
  - id: kws_modbus
    uart_id: uart_rs_485
    flow_control_pin: 13
Using kws303l.yaml directly from GitHub repository
packages:
  meter1:
    url: https://github.com/BieleckiLtd/KWS-303L-ESPHome
    files:
      - path: kws303l.yaml
        vars:
          modbus_id: kws_modbus
          slave_addr: 1
Known Issues
- Alarms cannot be cleared programmatically.
- Over-power alarm always reports code 0(no alarm).
- Some alarm codes are undocumented or unclear.
- Energy limit setting is unreliable.
- No known register for changing the display language.