本帖最后由 kaka0992 于 2025-9-4 08:47 编辑
电表用的德力西的ddsu6606
代码参考了这个https://bbs.hassbian.com/thread-19761-1-1.html,接单个电表没有问题,现在需要接5个电表,让AI帮忙写的修改版,刷上固件后一路都识别不了了,大神帮忙看看问题出在哪
substitutions:
device_name: esp485
esphome:
name: ${device_name}
# platformio_options:
# board_build.flash_mode: dio
# board_build.mcu: esp32c3
esp32:
board: esp32-c3-devkitm-1
framework:
type: arduino
logger:
api:
ota:
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
fast_connect: on
web_server:
port: 80
button:
- platform: restart
name: ${device_name}_reboot
time:
- platform: sntp
id: ${device_name}_time
uart:
id: ${device_name}_uart
rx_pin: 18
tx_pin: 19
baud_rate: 2400
data_bits: 8
stop_bits: 1
parity: EVEN
modbus:
id: ${device_name}_modbus
send_wait_time: 200ms
modbus_controller:
- id: ${device_name}_modbus_controller
modbus_id: ${device_name}_modbus
address: 0x01
command_throttle: 200ms
setup_priority: -10
update_interval: 10s
text_sensor:
- platform: wifi_info
ip_address:
name: ${device_name}_ip
mac_address:
name: ${device_name}_mac
sensor:
- platform: uptime
name: ${device_name}_uptime
- platform: wifi_signal
name: ${device_name}_signal
update_interval: 60s
#当前电压
- platform: modbus_controller
modbus_controller_id: ${device_name}_modbus_controller
id: ${device_name}_u
name: ${device_name}_u
address: 0x0300
register_count: 1
unit_of_measurement: V
register_type: holding
value_type: U_WORD
accuracy_decimals: 1
device_class: voltage
filters:
- multiply: 0.1
#当前电流
- platform: modbus_controller
modbus_controller_id: ${device_name}_modbus_controller
id: ${device_name}_i
name: ${device_name}_i
address: 0x0303
register_count: 1
unit_of_measurement: A
register_type: holding
value_type: U_WORD
accuracy_decimals: 2
device_class: current
filters:
- multiply: 0.01
#瞬时A相有功功率
- platform: modbus_controller
modbus_controller_id: ${device_name}_modbus_controller
id: ${device_name}_s
name: ${device_name}_s
address: 0x0306
register_count: 1
unit_of_measurement: kW
register_type: holding
value_type: U_WORD
accuracy_decimals: 2
filters:
- multiply: 0.01
device_class: power
- platform: modbus_controller
modbus_controller_id: ${device_name}_modbus_controller
id: ${device_name}_ep
name: ${device_name}_ep
address: 0x000A
register_count: 2
unit_of_measurement: kWh
register_type: holding
value_type: S_DWORD
accuracy_decimals: 2
device_class: energy
state_class: total_increasing
filters:
- multiply: 0.01
- median:
window_size: 3
send_every: 3
AI修改的5路版本
substitutions:
device_name: esp32_485_5p
# 定义5个电能表的名称
meter1_name: "energy_meter_1"
meter2_name: "energy_meter_2"
meter3_name: "energy_meter_3"
meter4_name: "energy_meter_4"
meter5_name: "energy_meter_5"
esphome:
name: ${device_name}
esp32:
board: esp32-s3-devkitm-1
framework:
type: arduino
# 日志
logger:
level: DEBUG
# WiFi
wifi:
ssid: "8888"
password: "8888"
# API 供 Home Assistant 使用
api:
# OTA 更新
ota:
- platform: esphome
button:
- platform: restart
name: ${device_name}_reboot
time:
- platform: sntp
id: ${device_name}_time
# UART (RS485 转换) - 所有电表共享
uart:
id: ${device_name}_uart
tx_pin: 18 # TXD
rx_pin: 19 # RXD
baud_rate: 2400 # 根据电表实际波特率调整
data_bits: 8
stop_bits: 1
parity: EVEN # 电表常用偶校验
modbus:
id: ${device_name}_modbus
send_wait_time: 200ms
# 五路Modbus控制器,地址从0x01到0x05
modbus_controller:
- id: ${meter1_name}_controller
modbus_id: ${device_name}_modbus
address: 0x01
command_throttle: 200ms
setup_priority: -10
update_interval: 10s
- id: ${meter2_name}_controller
modbus_id: ${device_name}_modbus
address: 0x02
command_throttle: 200ms
setup_priority: -10
update_interval: 10s
- id: ${meter3_name}_controller
modbus_id: ${device_name}_modbus
address: 0x03
command_throttle: 200ms
setup_priority: -10
update_interval: 10s
- id: ${meter4_name}_controller
modbus_id: ${device_name}_modbus
address: 0x04
command_throttle: 200ms
setup_priority: -10
update_interval: 10s
- id: ${meter5_name}_controller
modbus_id: ${device_name}_modbus
address: 0x05
command_throttle: 200ms
setup_priority: -10
update_interval: 10s
text_sensor:
- platform: wifi_info
ip_address:
name: ${device_name}_ip
mac_address:
name: ${device_name}_mac
sensor:
# 系统传感器
- platform: uptime
name: ${device_name}_uptime
- platform: wifi_signal
name: ${device_name}_signal
update_interval: 60s
# DHT11 温湿度
- platform: dht
pin: 13
model: DHT11
temperature:
name: "${device_name} Temperature"
accuracy_decimals: 1
humidity:
name: "${device_name} Humidity"
accuracy_decimals: 1
update_interval: 30s
# 第一路电能表 (地址0x01)
- platform: modbus_controller
modbus_controller_id: ${meter1_name}_controller
id: ${meter1_name}_u
name: "${meter1_name}_voltage"
address: 0x0300
register_count: 1
unit_of_measurement: V
register_type: holding
value_type: U_WORD
accuracy_decimals: 1
device_class: voltage
filters:
- multiply: 0.1
- platform: modbus_controller
modbus_controller_id: ${meter1_name}_controller
id: ${meter1_name}_i
name: "${meter1_name}_current"
address: 0x0303
register_count: 1
unit_of_measurement: A
register_type: holding
value_type: U_WORD
accuracy_decimals: 2
device_class: current
filters:
- multiply: 0.01
- platform: modbus_controller
modbus_controller_id: ${meter1_name}_controller
id: ${meter1_name}_s
name: "${meter1_name}_power"
address: 0x0306
register_count: 1
unit_of_measurement: kW
register_type: holding
value_type: U_WORD
accuracy_decimals: 2
device_class: power
filters:
- multiply: 0.01
- platform: modbus_controller
modbus_controller_id: ${meter1_name}_controller
id: ${meter1_name}_ep
name: "${meter1_name}_energy"
address: 0x000A
register_count: 2
unit_of_measurement: kWh
register_type: holding
value_type: S_DWORD
accuracy_decimals: 2
device_class: energy
state_class: total_increasing
filters:
- multiply: 0.01
- median:
window_size: 3
send_every: 3
# 第二路电能表 (地址0x02)
- platform: modbus_controller
modbus_controller_id: ${meter2_name}_controller
id: ${meter2_name}_u
name: "${meter2_name}_voltage"
address: 0x0300
register_count: 1
unit_of_measurement: V
register_type: holding
value_type: U_WORD
accuracy_decimals: 1
device_class: voltage
filters:
- multiply: 0.1
- platform: modbus_controller
modbus_controller_id: ${meter2_name}_controller
id: ${meter2_name}_i
name: "${meter2_name}_current"
address: 0x0303
register_count: 1
unit_of_measurement: A
register_type: holding
value_type: U_WORD
accuracy_decimals: 2
device_class: current
filters:
- multiply: 0.01
- platform: modbus_controller
modbus_controller_id: ${meter2_name}_controller
id: ${meter2_name}_s
name: "${meter2_name}_power"
address: 0x0306
register_count: 1
unit_of_measurement: kW
register_type: holding
value_type: U_WORD
accuracy_decimals: 2
device_class: power
filters:
- multiply: 0.01
- platform: modbus_controller
modbus_controller_id: ${meter2_name}_controller
id: ${meter2_name}_ep
name: "${meter2_name}_energy"
address: 0x000A
register_count: 2
unit_of_measurement: kWh
register_type: holding
value_type: S_DWORD
accuracy_decimals: 2
device_class: energy
state_class: total_increasing
filters:
- multiply: 0.01
- median:
window_size: 3
send_every: 3
# 第三路电能表 (地址0x03)
- platform: modbus_controller
modbus_controller_id: ${meter3_name}_controller
id: ${meter3_name}_u
name: "${meter3_name}_voltage"
address: 0x0300
register_count: 1
unit_of_measurement: V
register_type: holding
value_type: U_WORD
accuracy_decimals: 1
device_class: voltage
filters:
- multiply: 0.1
- platform: modbus_controller
modbus_controller_id: ${meter3_name}_controller
id: ${meter3_name}_i
name: "${meter3_name}_current"
address: 0x0303
register_count: 1
unit_of_measurement: A
register_type: holding
value_type: U_WORD
accuracy_decimals: 2
device_class: current
filters:
- multiply: 0.01
- platform: modbus_controller
modbus_controller_id: ${meter3_name}_controller
id: ${meter3_name}_s
name: "${meter3_name}_power"
address: 0x0306
register_count: 1
unit_of_measurement: kW
register_type: holding
value_type: U_WORD
accuracy_decimals: 2
device_class: power
filters:
- multiply: 0.01
- platform: modbus_controller
modbus_controller_id: ${meter3_name}_controller
id: ${meter3_name}_ep
name: "${meter3_name}_energy"
address: 0x000A
register_count: 2
unit_of_measurement: kWh
register_type: holding
value_type: S_DWORD
accuracy_decimals: 2
device_class: energy
state_class: total_increasing
filters:
- multiply: 0.01
- median:
window_size: 3
send_every: 3
# 第四路电能表 (地址0x04)
- platform: modbus_controller
modbus_controller_id: ${meter4_name}_controller
id: ${meter4_name}_u
name: "${meter4_name}_voltage"
address: 0x0300
register_count: 1
unit_of_measurement: V
register_type: holding
value_type: U_WORD
accuracy_decimals: 1
device_class: voltage
filters:
- multiply: 0.1
- platform: modbus_controller
modbus_controller_id: ${meter4_name}_controller
id: ${meter4_name}_i
name: "${meter4_name}_current"
address: 0x0303
register_count: 1
unit_of_measurement: A
register_type: holding
value_type: U_WORD
accuracy_decimals: 2
device_class: current
filters:
- multiply: 0.01
- platform: modbus_controller
modbus_controller_id: ${meter4_name}_controller
id: ${meter4_name}_s
name: "${meter4_name}_power"
address: 0x0306
register_count: 1
unit_of_measurement: kW
register_type: holding
value_type: U_WORD
accuracy_decimals: 2
device_class: power
filters:
- multiply: 0.01
- platform: modbus_controller
modbus_controller_id: ${meter4_name}_controller
id: ${meter4_name}_ep
name: "${meter4_name}_energy"
address: 0x000A
register_count: 2
unit_of_measurement: kWh
register_type: holding
value_type: S_DWORD
accuracy_decimals: 2
device_class: energy
state_class: total_increasing
filters:
- multiply: 0.01
- median:
window_size: 3
send_every: 3
# 第五路电能表 (地址0x05)
- platform: modbus_controller
modbus_controller_id: ${meter5_name}_controller
id: ${meter5_name}_u
name: "${meter5_name}_voltage"
address: 0x0300
register_count: 1
unit_of_measurement: V
register_type: holding
value_type: U_WORD
accuracy_decimals: 1
device_class: voltage
filters:
- multiply: 0.1
- platform: modbus_controller
modbus_controller_id: ${meter5_name}_controller
id: ${meter5_name}_i
name: "${meter5_name}_current"
address: 0x0303
register_count: 1
unit_of_measurement: A
register_type: holding
value_type: U_WORD
accuracy_decimals: 2
device_class: current
filters:
- multiply: 0.01
- platform: modbus_controller
modbus_controller_id: ${meter5_name}_controller
id: ${meter5_name}_s
name: "${meter5_name}_power"
address: 0x0306
register_count: 1
unit_of_measurement: kW
register_type: holding
value_type: U_WORD
accuracy_decimals: 2
device_class: power
filters:
- multiply: 0.01
- platform: modbus_controller
modbus_controller_id: ${meter5_name}_controller
id: ${meter5_name}_ep
name: "${meter5_name}_energy"
address: 0x000A
register_count: 2
unit_of_measurement: kWh
register_type: holding
value_type: S_DWORD
accuracy_decimals: 2
device_class: energy
state_class: total_increasing
filters:
- multiply: 0.01
- median:
window_size: 3
send_every: 3
|