智能电表 DDSU666 接入 HomeAssistant 详细安装教程

 

DDSU666电表RS485 + ESP32 + ESPHome + HomeAssistant

本方案是使用 正泰 DDSU666 带 RS485 通讯的电表,添加一个 ESPHome 模块连接到 HomeAssistant 智能家居系统,在线查看电压、电流、功率等数据。

最终选择此方案原因:

  • 导轨式安装方便小巧
  • 数据在本地随便自己折腾
  • 精度有足够保障及安全性

考虑过的方案:

立新 DDS238-2 这款有可以直接使用渡鸦APP控制,不过数据是直接到他们的服务器,再通过 APP 查看,同步到 HA 比较麻烦。优势是可以远程拉闸,不过这个对于我使用价值不大。价格 140元左右相对较贵。

安培那种 DIY 的也有,不过那种精度和安全性就没法和品牌的比了。

数据加入 HA 都需要一个 485 转换模块,才能将电表数据传输给 HA 设备,通过 Wi-Fi 或 网线 或 其他,我选择了最简单的 Wi-Fi 无线也方便。

所以这一套系统的基本结构就是:

电表 + 485转换模块 + 模块电源

485 模块都不便宜,还要供电电源也不小,网上找了很多方案都不太满意。

最后是看到这个大佬 的教程做的,应该是最小化了,安装后简洁美观。

我买的这个电表是 Modbus-RTU 协议,直接使用,其他协议不懂如何调试。注意正泰 DDSU666 这个电表有其他协议,购买请咨询一下客服,购买 Modbus 协议的。

 

准备工作

打印 PCB 板

去大佬 Github 中找到 EDA 文件下载,解压后里面有 3个文件,找到 1-PCB_PCB_ESP485.json 这个文件需要用到。

1、打开 网站注册登陆后,选择菜单 文件 > 打开 > 立创EDA ;

2、选择刚刚的 1-PCB_PCB_ESP485.json 文件,打开后可以看到 PCB板了,接着选择菜单 制造 > PCB制版文件Gerber > 生成 将这个文件保存到电脑;

3、进入下单网址 这里是同一个账号,使用 Windows 系统安装 PC小助手 进去下单可以免费包邮样板 5片。下单需要的 PCB 文件就是刚刚保存的 Gerber 文件,不清楚可以在线客服咨询。

购买硬件

 

名称 型号 数量
ESP-C3-13U 4M 1
AMS1117-3.3 稳压电源芯片降压IC AMS1117-3.3 1
MAX13487EESA SOIC-8 / 1
0603贴片电阻 4.7KΩ / 1
0603贴片电容 50V 100NF ±10% / 1
2.4G内置柔性FPC软天线 IPEX接头 1
220V转5V700mA电源模块 5V700mA 1
正泰DDSU666 5-80A ModBus 1
正泰模数化插座 AC30-103 1
尖嘴元件镊子 弯嘴 1
热缩管 直径5mm 1
40P彩排杜邦线 公对母 1
CH341A编程器 / 1
电烙铁(要有尖烙铁头) / 1
电线(连接电表强电) 6平方 1

 

智能电表 DDSU666 接入 HomeAssistant 详细安装教程
购买元器件
智能电表 DDSU666 接入 HomeAssistant 详细安装教程
电表 和 数字插座

 

刷固件

对于我这样的小白这个地方折腾了很久,从来没有刷过一头雾水。折腾了很久,最后是安装下面流程顺利完成。

ESPHome

安装这个错误很多次,很多不能用各种报错。Windows10 命令安装后不能编译,后来使用 R2S(OpenWrt)中的 Docker 安装 ESPHome 还是无法编译,最后使用 macOS 系统安装 Docker 再安装 ESPHome 后终于编译成功了。

ESPHome 文件

esphome:   name: esp32_c3   platform: ESP32   board: esp32-c3-devkitm-1   platformio_options:     platform: https://github.com/platformio/platform-espressif32.git#feature/arduino-upstream     platform_packages:       - framework-arduinoespressif32@https://github.com/espressif/arduino-esp32.git#2.0.0     board_build.variant: esp32c3     board_build.f_cpu: 160000000L     board_build.f_flash: 40000000L     upload_protocol: esptool     board_build.flash_mode: dio  wifi:   ssid: "#你的WIFI名称#"   password: "#你的WIFI密码#"  captive_portal:  logger:  api:   password: '#api密码,简单好记就行#'  ota:   password: '#ota密码,可以跟上面一样#'  web_server:   port: 80    time:   - platform: sntp     id: esp485_time    uart:   id: esp485_uart   rx_pin: 18   tx_pin: 19   baud_rate: 9600   data_bits: 8   stop_bits: 1  modbus:   id: esp485_modbus   send_wait_time: 200ms  modbus_controller:   - id: esp485_modbus_controller     modbus_id: esp485_modbus     address: 0x01 #设备地址码(一般是1根据实际情况填)#     command_throttle: 200ms     setup_priority: -10     update_interval: 10s  sensor:   - platform: modbus_controller     modbus_controller_id: esp485_modbus_controller     id: esp485_modbus_u     name: "U"     address: 0x2000     register_count: 2     unit_of_measurement: "V"     register_type: holding     value_type: FP32     accuracy_decimals: 1     device_class: voltage        - platform: modbus_controller     modbus_controller_id: esp485_modbus_controller     id: esp485_modbus_i     name: "I"     address: 0x2002     register_count: 2     unit_of_measurement: "A"     register_type: holding     value_type: FP32     accuracy_decimals: 3     device_class: current        - platform: modbus_controller     modbus_controller_id: esp485_modbus_controller     id: esp485_modbus_p     name: "P"     address: 0x2004     register_count: 2     unit_of_measurement: "W"     register_type: holding     value_type: FP32     accuracy_decimals: 1     filters:       - multiply: 1000     device_class: power        - platform: modbus_controller     modbus_controller_id: esp485_modbus_controller     id: esp485_modbus_q     name: "Q"     address: 0x2006     register_count: 2     unit_of_measurement: "var"     register_type: holding     value_type: FP32     accuracy_decimals: 1     filters:       - multiply: 1000     device_class: power        - platform: modbus_controller     modbus_controller_id: esp485_modbus_controller     id: esp485_modbus_s     name: "S"     address: 0x2008     register_count: 2     unit_of_measurement: "VA"     register_type: holding     value_type: FP32     accuracy_decimals: 1     filters:       - multiply: 1000     device_class: power        - platform: modbus_controller     modbus_controller_id: esp485_modbus_controller     id: esp485_modbus_pf     name: "PF"     address: 0x200A     register_count: 2     register_type: holding     value_type: FP32     accuracy_decimals: 3     device_class: power_factor        - platform: modbus_controller     modbus_controller_id: esp485_modbus_controller     id: esp485_modbus_freq     name: "Freq"     address: 0x200E     register_count: 2     unit_of_measurement: "Hz"     register_type: holding     value_type: FP32     accuracy_decimals: 2        - platform: modbus_controller     modbus_controller_id: esp485_modbus_controller     id: esp485_modbus_ep     name: "Ep"     address: 0x4000     register_count: 2     unit_of_measurement: "kWh"     register_type: holding     value_type: FP32     accuracy_decimals: 2     device_class: energy     state_class: total_increasing  

 

安装 Docker

使用 macOS 安装 (点击进入有其他系统安装方法)

$ brew install --cask --appdir=/Applications docker

 

安装 ESPHome 及 编译固件

使用刚刚安装好的 Docker 安装 ESPHome 容器

下载镜像文件

docker pull esphome/esphome:latest

 

运行,端口 6052,打开网页

docker run -d -p 6052:6052 esphome/esphome  # 打开网页 http://localhost:6052/

 

添加设备

根据提示输入名称、Wi-Fi、芯片类型 创建完成

创建后点击卡片 EDIT 编辑,删除其中代码,将上面的 ESPHome 代码复制进去,记得修改其中的Wi-Fi及密码信息,点击保存。

继续操作点击 Insta > Manual download

编译成功会输出 INFO Successfully compiled program. 并自动下载 bin 文件。

将下载文件 esp32_c3.bin 改名成 firmware.bin 等会刷机会用到

 

智能电表 DDSU666 接入 HomeAssistant 详细安装教程
固件编译中
智能电表 DDSU666 接入 HomeAssistant 详细安装教程
成功后自动下载

 

esptool.py 安装

 

Python3 安装

使用 Windows10 到 官方网站下一个 Python3 版本文件直接安装,安装时需要勾选 PATH 。(eg:安装的 Python 3.8.7(64-bit) 版本,勾选 Add Python 3.8 to PATH)

# 命令窗口输入 py 查看是否安装成功  C:UsersCarl>py Python 3.8.7 (tags/v3.8.7:6503f05, Dec 21 2020, 17:59:51) [MSC v.1928 64 bit (AMD64)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>>  # 输入 exit() 退出

 

CH34X 驱动安装

使用 Windows10 系统安装,首先安装刷机设备需要的驱动,购买 CH341 时找卖家要一个驱动文件,安装就可以了。可以在 开始 > 右键 > 设备管理器 > 端口COM 中看到设备及端口号,记住这个端口,比如:COM3。

根据自己使用的刷机设备安装对应驱动即可。

安装 esptool.py

Windows10 打开CMD命令窗口,输入:

pip install esptool    .... 等待安装完成    # 最后输出下面代码成功  Installing collected packages: esptool 	Running setup.py install for esptool ... done Successfully installed esptool-3.2

 

可以在刷写固件前先执行擦除固件

esptool.py --port COM4(你的端口) erase_flash

 

刷写固件

 

芯片接线

刷机设备对应接芯片 3.3VGND

刷机设备 TX 接芯片 RXD,刷机设备 RX 接芯片 TXD

芯片 IO9 接一根线备用,在刷机时需要接刷机设备 GND

接线参考图片

智能电表 DDSU666 接入 HomeAssistant 详细安装教程
注意接线不要短路
智能电表 DDSU666 接入 HomeAssistant 详细安装教程
刷机设备接线

 

写入固件

Windows10 桌面新建文件夹 esp32 ,去 Github 下载 firmware 文件夹中 3个固件,并将文件放到刚刚创建好的esp32文件夹中,还有刚刚编译成功的改名固件 firmware.bin 也放在这个文件夹,共有以下 4个固件。

boot_app0.bin / bootloader_dout_40m.bin / partitions.bin / firmware.bin

其他系统刷机根据自己情况选择。

 

刷写固件前,将 IO09 接到刷机设备 GND ,再插入电脑 USB。

# esptool.py 命令应该是全局命令 # 进入固件所在目录  cd /xxx/xxx/  # 命令窗口粘贴以下命令回车运行  esptool.py --chip esp32c3 --port COM3(改成你的端口) --baud 460800 --before default_reset --after hard_reset write_flash -z --flash_mode dout --flash_freq 40m --flash_size detect 0x0000 bootloader_dout_40m.bin 0x8000 partitions.bin 0xe000 boot_app0.bin 0x10000 firmware.bin

 

智能电表 DDSU666 接入 HomeAssistant 详细安装教程
固件写入成功

 

查看是否成功

固件刷写完成后,从电脑拔下刷写设备,将刚刚接地的 IO9 线断开接地,再次插入电脑 USB 通电,等待一会。

登陆你的路由器(刚刚填写Wi-Fi密码的路由器),查找到新连网设备 esp32 ,找到设备 IP 地址复制。

在浏览器中打开此 IP 地址,如果成功加载下面页面并显示正常,就是说明刷写固件成功了,接下来焊接芯片连接电表。

 

智能电表 DDSU666 接入 HomeAssistant 详细安装教程
浏览器打开页面表示写入成功
  • 数据是没有的,接电表后才有数据
  • 下次可以直接在线升级固件,不用刷机了,点击“选择文件”上传更新就好了。

 

焊接芯片和安装

焊接芯片和元器件

焊接芯片时注意不要有虚焊,PCB板质量一般容易掉焊盘,把握好温度。

连接电源模块和芯片板

电源模块可以用绝缘胶包起来防止短路

智能电表 DDSU666 接入 HomeAssistant 详细安装教程
焊接元器件 小心操作

 

改造数字插座

数字插座铜片用的热缩管包起来绝缘作用,电源 L N 线是焊接在铜片上,需要用刀片对塑料外壳做小加工以更好的盖合外壳。芯片下面用了双面胶粘在外壳上,其实不沾也可以,只要做好了绝缘工作。

智能电表 DDSU666 接入 HomeAssistant 详细安装教程
485模块 + 电源模块

 

连接模块和电表

esp32 模块 rs485 通讯线 A(黄),B(橙)依次接正泰电表 24 和 25 端口。

智能电表 DDSU666 接入 HomeAssistant 详细安装教程
485模块连接电表通讯

测试功能

先用家中插座接电源测试功能完整性,如果能够获取电表数据并正常显示说明刷写固件成功了,并且焊接没有问题。

 

装入电箱

⚠️ 强电危险操作,请勿模仿

经过测试没有问题后,断开家中总闸开关,一定要确认家中强电接线情况,并且用测电笔经过检测电压情况,准备工作做好后,按照下面指示图接线,一定不能接错。

 

智能电表 DDSU666 接入 HomeAssistant 详细安装教程

 

产品说明书接线方法(我购买的上图升级款,就是下图中 5(80)A 款)

智能电表 DDSU666 接入 HomeAssistant 详细安装教程

我是按照上图中接线

 

自己购买的 6平方电线,接入户空气开关输出端,再接到电表输入端(下面),电表输出端(上面)再接到空开旁边的欠压保护器的输入端(下面)。

智能电表 DDSU666 接入 HomeAssistant 详细安装教程
强电接线有危险,断开总开

数字插座 零N 火L 线接到上面电表旁的空气漏保开关输出端。

esp32 模块 rs485 通讯线 A B 依次接电表 24 25 端口。

数字插座引出黑色天线,尽量不要遮挡以防信号不好。

智能电表 DDSU666 接入 HomeAssistant 详细安装教程
检查是否工作正常

通电后可以看到智能电表已经在工作了,按 蓝色箭头 按钮可以依次切换显示的各种数据信息,说明书有详细说明。这款电表带背光,一段时间后自动熄灭。

智能电表 DDSU666 接入 HomeAssistant 详细安装教程
整体美观整洁也安全

看起来简洁美观,也有安全保障。

 

配置 HomeAssistant

完成这些操作后,打开 HomeAssistant 后台,进入配置应该就能看到新的 esp32-c3 设备,直接添加就行了,可以在能源中设置相关信息。

智能电表 DDSU666 接入 HomeAssistant 详细安装教程
电表数据

可以在 配置 – 能源 中设置一个电费价格,我设置的固定价格,不会弄阶梯价格。

智能电表 DDSU666 接入 HomeAssistant 详细安装教程
设置电价

下载文件

CH34x_Install_V1.5.pkg(macOS 10.15 安装无效)

DDSU666 电表说明书.pdf

esp-c3-13u 规格书.pdf

ESP32-C3 资料

GitHub库文件:ESP485-main



微信扫描下方的二维码阅读更多精彩内容

智能电表 DDSU666 接入 HomeAssistant 详细安装教程


感谢对大飞哥的支持

相关新闻

联系电话

13888888888

微信
微信
返回顶部