06-11-2025, 12:55 PM
Here is my YAML file.
Single channel package:
Base YAML:
Seller said calibration could be done, but I do not have appropriate equipment to do that.
Still, I am interested in returning this item if it cannot show accurate readings based on written claims.
Single channel package:
Code:
# Parameters:
# ph - phase
# ch - channel
# modbus_curr_addr - current address
# modbus_pwr_addr - power address
# modbus_energy_addr - energy address
# max_current - max. current
# led_id - ID of LED of a channel
# led_pos - LED position (single digit)
# modbus_ctrl_id - modbus controller id
# light_id - light component id
sensor:
# Current measurement
- platform: modbus_controller
modbus_controller_id: ${modbus_ctrl_id}
address: ${modbus_curr_addr}
register_type: holding
name: m30_${ph}_current_${ch}
id: m30_${ph}_current_${ch}
unit_of_measurement: A
accuracy_decimals: 3
value_type: U_WORD
filters:
- multiply: 0.00098
on_value:
- then:
- lambda: |-
float current = id(m30_${ph}_current_${ch}).state;
float red = (current - 0.0) / ${max_current};
float green = (${max_current} - current) / ${max_current};
float blue = 0.0;
auto call = id(M30_LED${ph}${ch}).turn_on();
call.set_brightness(0.6);
call.set_rgb(red, green, blue);
call.set_color_mode(ColorMode::RGB);
call.perform();
# Power measurement
- platform: modbus_controller
modbus_controller_id: ${modbus_ctrl_id}
address: ${modbus_pwr_addr}
register_type: holding
name: m30_${ph}_watt_${ch}
id: m30_${ph}_watt_${ch}
unit_of_measurement: W
accuracy_decimals: 1
value_type: U_WORD
filters:
- multiply: 0.1
# Energy measurement
- platform: modbus_controller
modbus_controller_id: ${modbus_ctrl_id}
address: ${modbus_energy_addr}
register_type: holding
name: m30_${ph}_energy_${ch}
id: m30_${ph}_energy_${ch}
unit_of_measurement: kWh
accuracy_decimals: 1
value_type: U_WORD
light:
- platform: partition
name: M30_LED${ph}${ch}
id: M30_LED${ph}${ch}
segments:
- id: ${light_id}
from: ${led_pos}
to: ${led_pos}Base YAML:
Code:
substitutions:
devicename: esp32-kincony-m30
friendly: esp32-kincony-m30
roottopic: device
max_current_range: "10"
packages:
# Core
base: !include common/common-base-eth.yaml
# Board
esp32dev: !include boards/esp32dev.yaml
# Channels
# phase 1
ph1ch1: !include {file: common/kincony-m30-chan.yaml, vars:{ph: "1", ch: "1", modbus_curr_addr: 100, modbus_pwr_addr: 111, modbus_energy_addr: 121, max_current: "10", led_id: "1", led_pos: 14, modbus_ctrl_id: "modbus_hub_m30", light_id: "light1"}}
ph1ch2: !include {file: common/kincony-m30-chan.yaml, vars:{ph: "1", ch: "2", modbus_curr_addr: 101, modbus_pwr_addr: 112, modbus_energy_addr: 122, max_current: "10", led_id: "2", led_pos: 13, modbus_ctrl_id: "modbus_hub_m30", light_id: "light1"}}
ph1ch3: !include {file: common/kincony-m30-chan.yaml, vars:{ph: "1", ch: "3", modbus_curr_addr: 102, modbus_pwr_addr: 113, modbus_energy_addr: 123, max_current: "10", led_id: "3", led_pos: 12, modbus_ctrl_id: "modbus_hub_m30", light_id: "light1"}}
ph1ch4: !include {file: common/kincony-m30-chan.yaml, vars:{ph: "1", ch: "4", modbus_curr_addr: 103, modbus_pwr_addr: 114, modbus_energy_addr: 124, max_current: "10", led_id: "4", led_pos: 11, modbus_ctrl_id: "modbus_hub_m30", light_id: "light1"}}
ph1ch5: !include {file: common/kincony-m30-chan.yaml, vars:{ph: "1", ch: "5", modbus_curr_addr: 104, modbus_pwr_addr: 115, modbus_energy_addr: 125, max_current: "10", led_id: "5", led_pos: 10, modbus_ctrl_id: "modbus_hub_m30", light_id: "light1"}}
ph1ch6: !include {file: common/kincony-m30-chan.yaml, vars:{ph: "1", ch: "6", modbus_curr_addr: 105, modbus_pwr_addr: 116, modbus_energy_addr: 126, max_current: "10", led_id: "6", led_pos: 9, modbus_ctrl_id: "modbus_hub_m30", light_id: "light1"}}
ph1ch7: !include {file: common/kincony-m30-chan.yaml, vars:{ph: "1", ch: "7", modbus_curr_addr: 106, modbus_pwr_addr: 117, modbus_energy_addr: 127, max_current: "10", led_id: "7", led_pos: 8, modbus_ctrl_id: "modbus_hub_m30", light_id: "light1"}}
ph1ch8: !include {file: common/kincony-m30-chan.yaml, vars:{ph: "1", ch: "8", modbus_curr_addr: 107, modbus_pwr_addr: 118, modbus_energy_addr: 128, max_current: "10", led_id: "8", led_pos: 7, modbus_ctrl_id: "modbus_hub_m30", light_id: "light1"}}
ph1ch9: !include {file: common/kincony-m30-chan.yaml, vars:{ph: "1", ch: "9", modbus_curr_addr: 108, modbus_pwr_addr: 119, modbus_energy_addr: 129, max_current: "10", led_id: "9", led_pos: 6, modbus_ctrl_id: "modbus_hub_m30", light_id: "light1"}}
ph1ch10: !include {file: common/kincony-m30-chan.yaml, vars:{ph: "1", ch: "10", modbus_curr_addr: 109, modbus_pwr_addr: 120, modbus_energy_addr: 130, max_current: "10", led_id: "10", led_pos: 5, modbus_ctrl_id: "modbus_hub_m30", light_id: "light1"}}
# phase 2
ph2ch1: !include {file: common/kincony-m30-chan.yaml, vars:{ph: "2", ch: "1", modbus_curr_addr: 200, modbus_pwr_addr: 211, modbus_energy_addr: 221, max_current: "10", led_id: "11", led_pos: 4, modbus_ctrl_id: "modbus_hub_m30", light_id: "light1"}}
ph2ch2: !include {file: common/kincony-m30-chan.yaml, vars:{ph: "2", ch: "2", modbus_curr_addr: 201, modbus_pwr_addr: 212, modbus_energy_addr: 222, max_current: "10", led_id: "12", led_pos: 3, modbus_ctrl_id: "modbus_hub_m30", light_id: "light1"}}
ph2ch3: !include {file: common/kincony-m30-chan.yaml, vars:{ph: "2", ch: "3", modbus_curr_addr: 202, modbus_pwr_addr: 213, modbus_energy_addr: 223, max_current: "10", led_id: "13", led_pos: 2, modbus_ctrl_id: "modbus_hub_m30", light_id: "light1"}}
ph2ch4: !include {file: common/kincony-m30-chan.yaml, vars:{ph: "2", ch: "4", modbus_curr_addr: 203, modbus_pwr_addr: 214, modbus_energy_addr: 224, max_current: "10", led_id: "14", led_pos: 1, modbus_ctrl_id: "modbus_hub_m30", light_id: "light1"}}
ph2ch5: !include {file: common/kincony-m30-chan.yaml, vars:{ph: "2", ch: "5", modbus_curr_addr: 204, modbus_pwr_addr: 215, modbus_energy_addr: 225, max_current: "10", led_id: "15", led_pos: 0, modbus_ctrl_id: "modbus_hub_m30", light_id: "light1"}}
ph2ch6: !include {file: common/kincony-m30-chan.yaml, vars:{ph: "2", ch: "6", modbus_curr_addr: 205, modbus_pwr_addr: 216, modbus_energy_addr: 226, max_current: "10", led_id: "16", led_pos: 15, modbus_ctrl_id: "modbus_hub_m30", light_id: "light1"}}
ph2ch7: !include {file: common/kincony-m30-chan.yaml, vars:{ph: "2", ch: "7", modbus_curr_addr: 206, modbus_pwr_addr: 217, modbus_energy_addr: 227, max_current: "10", led_id: "17", led_pos: 16, modbus_ctrl_id: "modbus_hub_m30", light_id: "light1"}}
<.... the rest of the channels ... >
# Voltage, temperature, energy sum, frequency (for 3 phases)
ph1: !include {file: common/kincony-m30-ph.yaml, vars:{ph: "1", modbus_voltage_addr: 110, modbus_temp_addr: 133, modbus_energy_sum_addr: 131, modbus_freq_addr: 132, modbus_ctrl_id: "modbus_hub_m30"}}
ph2: !include {file: common/kincony-m30-ph.yaml, vars:{ph: "2", modbus_voltage_addr: 210, modbus_temp_addr: 233, modbus_energy_sum_addr: 231, modbus_freq_addr: 232, modbus_ctrl_id: "modbus_hub_m30"}}
ph3: !include {file: common/kincony-m30-ph.yaml, vars:{ph: "3", modbus_voltage_addr: 310, modbus_temp_addr: 333, modbus_energy_sum_addr: 331, modbus_freq_addr: 332, modbus_ctrl_id: "modbus_hub_m30"}}
# Configuration >>
ethernet:
type: LAN8720
mdc_pin: GPIO23
mdio_pin: GPIO18
clk_mode: GPIO17_OUT
phy_addr: 0
uart:
id: modbus_uart
rx_pin: 32
tx_pin: 33
baud_rate: 115200
stop_bits: 1
data_bits: 8
parity: NONE
modbus:
id: modbus_hub
uart_id: modbus_uart
modbus_controller:
- id: modbus_hub_m30
address: 1
modbus_id: modbus_hub
update_interval: 5s
light:
- platform: esp32_rmt_led_strip
id: light1
rgb_order: GRB
pin: GPIO12
num_leds: 30
rmt_channel: 0
chipset: ws2812Seller said calibration could be done, but I do not have appropriate equipment to do that.
Still, I am interested in returning this item if it cannot show accurate readings based on written claims.

