『瀚思彼岸』» 智能家居技术论坛

 找回密码
 立即注册
查看: 3801|回复: 10

[进阶教程] 安科瑞电表DDSL1352通过esphome接入homeassistant代码支持能源...

[复制链接]

43

主题

326

帖子

2734

积分

论坛DIY达人

积分
2734
金钱
2403
HASS币
50
发表于 2021-12-16 18:50:36 | 显示全部楼层 |阅读模式
本帖最后由 shadowba 于 2021-12-23 14:25 编辑

使用方法,建议8266直接使用仪表内的3.3v、rx、tx、gnd接上后即可,省去485转换具体如下图,严防触电!!!其它类的ttl电平设备可参考接入 微信图片_20211223142406.png
esphome:
  name: ddsf1352
  platform: ESP8266
  board: esp01_1m

# Enable logging
logger:

# Enable Home Assistant API
api:

ota:
  password: " "

wifi:
  ssid: " "
  password: " "

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "ddsf1352"
    password: "1234567890"
web_server:
  port: 80
captive_portal:
uart:
  id: mod_bus
  tx_pin: 4
  rx_pin: 5
  baud_rate: 9600
  stop_bits: 1

time:

  - platform: sntp
    timezone: "Asia/Shanghai"
    id: sntp_time
    servers: "time.windows.com"
modbus:
  flow_control_pin: 2
  id: modbus1

modbus_controller:
  - id: epever
    ## the Modbus device addr
    address: 0x1
    modbus_id: modbus1
    setup_priority: -10
sensor:
  - platform: wifi_signal
    name: "WiFi Signal ddsf1352"
    update_interval: 60s
  - platform: modbus_controller
    modbus_controller_id: epever
    id: input_voltage
    name: "Voltage"
    icon: "mdi:alpha-v-circle"
    address: 0xB
    unit_of_measurement: "V" ## for any other unit the value is returned in minutes
    register_type: read
    value_type: U_WORD
    accuracy_decimals: 1
    filters:
    - multiply: 0.1

  - platform: modbus_controller
    modbus_controller_id: epever
    id: input_current
    name: "Current"
    icon: "mdi:alpha-a-circle"
    address: 0xC
    unit_of_measurement: "A" ## for any other unit the value is returned in minutes
    register_type: read
    value_type: U_WORD
    accuracy_decimals: 2
    filters:
    - multiply: 0.01

  - platform: modbus_controller
    modbus_controller_id: epever
    id: input_factor
    name: "Factor"
    icon: "mdi:alpha-f-circle"
    address: 0x10
    unit_of_measurement: "Cos φ" ## for any other unit the value is returned in minutes
    register_type: read
    value_type: U_WORD
    accuracy_decimals: 2
    filters:
    - multiply: 0.001

  - platform: modbus_controller
    modbus_controller_id: epever
    id: frequency
    name: "Frequency"
    icon: "mdi:current-ac"
    address: 0x11
    unit_of_measurement: "Hz" ## for any other unit the value is returned in minutes
    register_type: read
    value_type: U_WORD
    accuracy_decimals: 0
    filters:
    - multiply: 0.01


  - platform: modbus_controller
    modbus_controller_id: epever
    id: array_rated_reactivepower
    name: "Reactivepower"
    icon: "mdi:alpha-w-circle"
    address: 0xE
    unit_of_measurement: "Var"
    register_type: read
    value_type: U_WORD
    accuracy_decimals: 0
    filters:
      - multiply: 1


  - platform: modbus_controller
    modbus_controller_id: epever
    id: array_rated_apparentpower
    name: "Apparentpower"
    icon: "mdi:alpha-s-circle"
    address: 0xF
    unit_of_measurement: "VA"
    register_type: read
    value_type: U_WORD
    accuracy_decimals: 0
    filters:
      - multiply: 1

  - platform: modbus_controller
    modbus_controller_id: epever
    id: Power
    name: "energy_power"
    icon: "mdi:ev-station"
    address: 0xD
    unit_of_measurement: "W"
    register_type: read
    value_type: U_WORD
    accuracy_decimals: 0
    filters:
      - multiply: 1

  - platform: modbus_controller
    modbus_controller_id: epever
    id: ENERGY_Total
    name: "energy_energy_total"
    icon: "mdi:alpha-t-circle"
    address: 0x0
    register_type: read
    value_type: U_DWORD
    accuracy_decimals: 2
    filters:
      - multiply: 0.01
    unit_of_measurement: kWh

  - platform: total_daily_energy
    name: "Total Daily Energy"
    power_id: Power
    accuracy_decimals: 2
    filters:
      - multiply: 0.001
    unit_of_measurement: kWh







评分

参与人数 1金钱 +16 收起 理由
sorrypqa + 16 感谢楼主分享!

查看全部评分

回复

使用道具 举报

75

主题

1976

帖子

8183

积分

元老级技术达人

积分
8183
金钱
6157
HASS币
430

活跃会员教程狂人

发表于 2021-12-16 19:31:28 | 显示全部楼层
牛逼,esphome果然是手艺人的好朋友
所有过往,皆为序章。
回复

使用道具 举报

43

主题

326

帖子

2734

积分

论坛DIY达人

积分
2734
金钱
2403
HASS币
50
 楼主| 发表于 2021-12-16 20:45:48 来自手机 | 显示全部楼层
咸味土豆 发表于 2021-12-16 19:31
牛逼,esphome果然是手艺人的好朋友

这是土豆大神指点的好啊
回复

使用道具 举报

73

主题

1165

帖子

6645

积分

论坛元老

Rank: 8Rank: 8

积分
6645
金钱
5475
HASS币
30
发表于 2021-12-17 04:07:16 | 显示全部楼层
请问现在的配置是用485的吗?
回复

使用道具 举报

75

主题

1976

帖子

8183

积分

元老级技术达人

积分
8183
金钱
6157
HASS币
430

活跃会员教程狂人

发表于 2021-12-17 21:35:49 | 显示全部楼层
shadowba 发表于 2021-12-16 20:45
这是土豆大神指点的好啊

互吹也不是这么搞的啊,我可没有指点你
所有过往,皆为序章。
回复

使用道具 举报

0

主题

10

帖子

55

积分

注册会员

Rank: 2

积分
55
金钱
45
HASS币
0
发表于 2021-12-18 19:16:13 | 显示全部楼层
咸味土豆 发表于 2021-12-17 21:35
互吹也不是这么搞的啊,我可没有指点你

两位大佬帮忙看看是什么问题呗
以下是ota打印的log日志
[18:54:33][W][modbus_controller:114]: Duplicate modbus command found
DEBUG sonoff_r2_dianbiao_api.local: Got message of type <class 'api_pb2.SubscribeLogsResponse'>: level: LOG_LEVEL_WARN
message: "\033[0;33m[W][modbus_controller:114]: Duplicate modbus command found\033[0m"

[18:54:33][W][modbus_controller:114]: Duplicate modbus command found
DEBUG sonoff_r2_dianbiao_api.local: Got message of type <class 'api_pb2.SubscribeLogsResponse'>: level: LOG_LEVEL_WARN
message: "\033[0;33m[W][modbus_controller:114]: Duplicate modbus command found\033[0m"

[18:54:33][W][modbus_controller:114]: Duplicate modbus command found
DEBUG sonoff_r2_dianbiao_api.local: Got message of type <class 'api_pb2.SubscribeLogsResponse'>: level: LOG_LEVEL_WARN
message: "\033[0;33m[W][modbus_controller:114]: Duplicate modbus command found\033[0m"

[18:54:33][W][modbus_controller:114]: Duplicate modbus command found
DEBUG sonoff_r2_dianbiao_api.local: Got message of type <class 'api_pb2.SubscribeLogsResponse'>: level: LOG_LEVEL_WARN
message: "\033[0;33m[W][modbus_controller:114]: Duplicate modbus command found\033[0m"

[18:54:33][W][modbus_controller:114]: Duplicate modbus command found
DEBUG sonoff_r2_dianbiao_api.local: Got message of type <class 'api_pb2.SubscribeLogsResponse'>: level: LOG_LEVEL_WARN
message: "\033[0;33m[W][modbus_controller:114]: Duplicate modbus command found\033[0m"

[18:54:33][W][modbus_controller:114]: Duplicate modbus command found
DEBUG sonoff_r2_dianbiao_api.local: Got message of type <class 'api_pb2.SubscribeLogsResponse'>: level: LOG_LEVEL_DEBUG
message: "\033[0;36m[D][modbus_controller:034]: Modbus command to device=43 register=0x0B countdown=0 removed from queue after send\033[0m"

[18:54:38][D][modbus_controller:034]: Modbus command to device=43 register=0x0B countdown=0 removed from queue after send

总是会报命令重复警告,我用sscom读取了 确实会一条命令发送5次然后发送下一条命令,设备用的nodemcu和sonoff的模块都试了确实不行 ,读取到发送命令是对的 ,我用的ttl to 485模块,单用模块使用电脑读取没问题,但只要插上8266的rx引脚,转接板的rx灯就不闪了,拔下rx引脚,转接板的rx灯就闪,感觉是命令已经发送,且电表也回复了,不知道为啥rx引脚好像没有办法接收

以下是我的yaml

esphome:
  name: $device_name
  platform: ESP8266
  board: esp01_1m
  #断电记忆,恢复上次的状态
  esp8266_restore_from_flash: yes
#----------------------------------------------------
  #指定编译临时文件存放位置
  build_path: build/$device_name
#----------------------------------------------------

#------- 一些自定义的配置,一般情况下只需要改这下面的内容 -------
substitutions:
  config_version: 'v2021.12.18.001'
  #设备名称(多个设备改成不一样的,API接入和ESPHOME容器会识别这个作为名称显示)
  device_name: sonoff_r2_dianbiao_api
  #如果SSID是隐藏的,设置为true
  wifi_fast_connect: 'false'
  #WiFi离线多久后重启设备,秒s/分钟min/小时h,不需要此功能设置为0s,建议设置0s,防止异常重启,或者设置的大一些
  wifi_reboot_timeout: 0s
  #与API服务端失去连接多久后重启设备,秒s/分钟min/小时h,不需要此功能设置为0s,建议设置0s,防止异常重启,或者设置的大一些
  api_reboot_timeout: 0s

#------- WIFI配置 -------
wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password
#----------需要设置静态地址的改下面的配置------------
#  manual_ip:
#    static_ip: 192.168.178.230
#    gateway: 192.168.178.1
#    subnet: 255.255.255.0
#    dns1: 1.1.1.1
#    dns2: 1.2.2.1
#--------------------------------------------------
  domain: .local
  reboot_timeout: $wifi_reboot_timeout
  power_save_mode: none
  fast_connect: $wifi_fast_connect
  #需要修改名字的时候,启用,OTA后禁用
  #use_address: ota.local
  
#------- WIFI AP配置 -------
  ap:
    ssid: $device_name
    password: "1234567890"
#对应的管理IP地址为192.168.4.1
captive_portal:

#---------不使用api与设备连接的话删除api配置---------
api:
  reboot_timeout: $api_reboot_timeout
#----------------------------------------------------

#------- OTA 空中升级配置 -------
ota:
  safe_mode: true
  password: !secret ota_password
#  port: 3286

#------- WEB后台,不建议使用 -------
#web_server:
#  port: 80
#  css_url: https://esphome.io/_static/webserver-v1.min.css
#  js_url: https://esphome.io/_static/webserver-v1.min.js
#----------------------------------------------------

#------- 深度休眠配置,一般情况下不建议使用,休眠后将无法远程控制设置 -------
#deep_sleep:
  #唤醒时间
#  run_duration: 50s
  #休眠时间
#  sleep_duration: 10min
#----------------------------------------------------

#------- 是否开启DEBUG模式,logger的level需至少设置为DEBUG -------
debug:

#-------打印log设置,注意实际输出端口为主板上面的log_tx,而不是刷机用到的tx-------
logger:
  #不同的log等级看到的信息详细程度不一样,信息量从少到多依次为
  # NONE、ERROR、WARN、INFO、DEBUG、VERBOSE、VERY_VERBOSE
  level: DEBUG
  #设置为0关闭通过UART的log输出
  baud_rate: 0
  #通过TTL看log信息,取消注释下面这行,读取接口为RX1,具体见模组接口说明图
  #hardware_uart: UART1

#external_components: #引入组件
#  - source:
#      type: git
#      url: https://github.com/esphome/esphome
#      ref: dev

#    components: [ modbus, modbus_controller ]

#串口参数
uart:
  id: mod_uart
  tx_pin: 1
  rx_pin: 3
  baud_rate: 9600
  #data_bits: 8
  stop_bits: 1

modbus:
  id: mod_bus
  #uart_id: mod_uart
  send_wait_time: 1000ms #命令发送间隔

modbus_controller:
  - id: acrel
    address: 0x2B #modbus从机地址
    modbus_id: mod_bus
    #command_throttle: 1000ms
    #setup_priority: -10
    update_interval: 10s #检查传感器间隔
   
sensor:
  #电压(V)
  - platform: modbus_controller
    modbus_controller_id: acrel
    id: voltage
    name: "Voltage"
    address: 0x000B
    unit_of_measurement: "V" #测量单位
    register_type: read
    value_type: U_DWORD #数据类型 U_DWORD U_WORD FP16 FP32
    accuracy_decimals: 1 #上报值时使用的小数精度
    filters:
      - multiply: 0.1

  #电流(A)
  - platform: modbus_controller
    modbus_controller_id: acrel
    id: current
    name: "Current"
    address: 0x000C
    unit_of_measurement: "A" #测量单位
    register_type: read
    value_type: U_DWORD #数据类型 U_DWORD U_WORD FP16 FP32
    accuracy_decimals: 2 #上报值时使用的小数精度
    filters:
      - multiply: 0.01

  #瞬时功率(W)
  - platform: modbus_controller
    modbus_controller_id: acrel
    id: active_power
    name: "Active power"
    address: 0x000D
    unit_of_measurement: "W" #测量单位
    register_type: read
    value_type: U_DWORD #数据类型 U_DWORD U_WORD FP16 FP32
    accuracy_decimals: 0 #上报值时使用的小数精度
    filters:
      - multiply: 1

  #电能(KWh)
  - platform: modbus_controller
    modbus_controller_id: acrel
    id: energy_total
    name: "ENERGY_Total"
    address: 0x0000
    unit_of_measurement: "KWh" #测量单位
    register_type: holding
    value_type: U_DWORD #数据类型 U_DWORD U_WORD FP16 FP32
    accuracy_decimals: 2 #上报值时使用的小数精度
    filters:
      - multiply: 0.01

  #频率(Hz)
  - platform: modbus_controller
    modbus_controller_id: acrel
    id: frequency
    name: "Frequency"
    address: 0x0011
    unit_of_measurement: "Hz" #测量单位
    register_type: read
    value_type: U_DWORD #数据类型 U_DWORD U_WORD FP16 FP32
    accuracy_decimals: 1 #上报值时使用的小数精度
    filters:
      - multiply: 0.01

  #功率因数(Cos φ)
  - platform: modbus_controller
    modbus_controller_id: acrel
    id: input_factor
    name: "Factor"
    address: 0x0010
    unit_of_measurement: "Cos φ" #测量单位
    register_type: read
    value_type: U_DWORD #数据类型 U_DWORD U_WORD FP16 FP32
    accuracy_decimals: 1 #上报值时使用的小数精度
    filters:
      - multiply: 0.001

  #无功功率(VAr)
  - platform: modbus_controller
    modbus_controller_id: acrel
    id: rated_reactivepower
    name: "Reactivepower"
    address: 0x000E #modbus寄存器地址
    unit_of_measurement: "VAr" #测量单位
    register_type: read
    value_type: U_DWORD #数据类型 U_DWORD U_WORD FP16 FP32
    accuracy_decimals: 0 #上报值时使用的小数精度
    filters:
      - multiply: 1
      
  #视在功率(VA)
  - platform: modbus_controller
    modbus_controller_id: acrel
    id: rated_apparentpower
    name: "Apparentpower"
    address: 0x000F #modbus寄存器地址
    unit_of_measurement: "VA" #测量单位
    register_type: read
    value_type: U_DWORD #数据类型 U_DWORD U_WORD FP16 FP32
    accuracy_decimals: 0 #上报值时使用的小数精度
    filters:
      - multiply: 1
回复

使用道具 举报

75

主题

1976

帖子

8183

积分

元老级技术达人

积分
8183
金钱
6157
HASS币
430

活跃会员教程狂人

发表于 2021-12-18 21:09:56 | 显示全部楼层
xbz0546 发表于 2021-12-18 19:16
两位大佬帮忙看看是什么问题呗
以下是ota打印的log日志
[18:54:33][W][modbus_controller:114]: Duplicat ...

我没有这玩意,抱歉,看看楼主能不能帮你了
所有过往,皆为序章。
回复

使用道具 举报

0

主题

10

帖子

55

积分

注册会员

Rank: 2

积分
55
金钱
45
HASS币
0
发表于 2021-12-19 09:16:55 | 显示全部楼层
咸味土豆 发表于 2021-12-18 21:09
我没有这玩意,抱歉,看看楼主能不能帮你了

好吧,感谢大佬
回复

使用道具 举报

43

主题

326

帖子

2734

积分

论坛DIY达人

积分
2734
金钱
2403
HASS币
50
 楼主| 发表于 2021-12-21 13:17:52 | 显示全部楼层
xbz0546 发表于 2021-12-18 19:16
两位大佬帮忙看看是什么问题呗
以下是ota打印的log日志
[18:54:33][W][modbus_controller:114]: Duplicat ...

esp8266 ttl不能大于3.3v,你先测一下电平是否匹配
回复

使用道具 举报

0

主题

10

帖子

55

积分

注册会员

Rank: 2

积分
55
金钱
45
HASS币
0
发表于 2021-12-22 12:01:29 | 显示全部楼层
shadowba 发表于 2021-12-21 13:17
esp8266 ttl不能大于3.3v,你先测一下电平是否匹配

我另一头用的ttl转485的板子,大佬,已经可以了,可能是我命令太多冲突了,把没用的删了删
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-11-27 21:46 , Processed in 1.051806 second(s), 38 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表