请注意:工具也要更新到新版本,否则可能会出现问题!前期因按过重启按钮的,可能导致固件损坏,必须重新线刷!老版本的,可能无法OTA,也要重新线刷一次。
修复诸多问题,现在可以正常使用了!
目前功能情况:
断电保持功能正常
总开关关闭,其他开关同步关闭
总开关关闭的情况下,开启其他开关,总开关会打开
LOGO灯和总开关联动,同时开、关
增加连接的SSID信息,以及当前设备的IP地址
斐讯DC1插座利用ESPHOME自制固件方式接入开源智能家居平台
WHY
众所周知的原因,斐讯服务器已经不能正常访问,插座的APP控制已经无法正常实现,需要有另外的方式实现插座的控制。
已有的方法为内网劫持实现,具体可参考这里。
这次要实现的是通过一个自定义的固件,来完整实现DC1联网控制。
请关注github项目
接入方法
按照下面的方法更新固件
Home Assistant中添加esphome组件
输入dc1对应的ip地址
配置lovelace
更新固件方法
请勿带市电操作!!!危险自负!!!
TTL接线方法
1、拆主控板
用到的工具
拆板步骤
如果插座刚通过电,拆的时候千万不要去摸电路板,电容带电!!!
2、主控板接线
用到的TTL工具
任选一个即可
接线方法
固件编译及刷固件方法
0、前置条件
请确认已经按照本方法连接好TTL工具,并且TTL工具驱动已经正确安装。
1、下载固件配置文件(下方右键另存为)
固件版本定义:
dc1_homeassistant:相对稳定版本,用于接入Home Assistant
dc1_homeassistant_test:测试版本,用于接入Home Assistant
dc1_mqtt:相对稳定版本,用于接入mqtt平台
dc1_mqtt_test:测试版本,用于接入mqtt平台
Python
配置文件对应版本更新历史
dc1_homeassistant:
v2019.03.28.002:
编译固件前请更新esphome及esphome-core到最新版本!
1、优化按钮,解决重启问题
dc1_homeassistant_test:
dc1_mqtt:无
dc1_mqtt_test:无
1
2
3
4
5
6
7
8
9
10
11
12
13
配置文件对应版本更新历史
dc1_homeassistant:
v2019.03.28.002:
编译固件前请更新esphome及esphome-core到最新版本!
1、优化按钮,解决重启问题
dc1_homeassistant_test:
dc1_mqtt:无
dc1_mqtt_test:无
2、修改固件配置文件
按照自己的情况修改配置文件中substitutions内的参数。其他的配置如果不是很了解就不要去修改了。
Python
#--------------------- 只需要改这下面的内容 ---------------------
substitutions:
#WiFi芯片版本,型号中带B的为csm64f02_b,不带B的为csm64f02
board_model: csm64f02
#设备名称(多个dc1改成不一样的)
device_name: phicomm_dc1
#WiFi_SSID名称
wifi_ssid: '2L'
#WiFi密码
wifi_password: '1122334455'
#如果SSID是隐藏的,设置为true
wifi_fast_connect: 'false'
#WiFi离线多久后重启设备,秒s/分钟min/小时h,不需要此功能设置为0s
wifi_reboot_timeout: 600s
#OTA密码
ota_password: '123456'
#与客户端(如Home Assistant)失去连接多久后重启设备,秒s/分钟min/小时h,不需要此功能设置为0s
api_reboot_timeout: 600s
#电量统计的数据更新时间,秒s/分钟min/小时h
cse7766_update_interval: 1s
#--------------------- 只需要改这上面的内容 ---------------------
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#--------------------- 只需要改这下面的内容 ---------------------
substitutions:
#WiFi芯片版本,型号中带B的为csm64f02_b,不带B的为csm64f02
board_model:csm64f02
#设备名称(多个dc1改成不一样的)
device_name:phicomm_dc1
#WiFi_SSID名称
wifi_ssid:'2L'
#WiFi密码
wifi_password:'1122334455'
#如果SSID是隐藏的,设置为true
wifi_fast_connect:'false'
#WiFi离线多久后重启设备,秒s/分钟min/小时h,不需要此功能设置为0s
wifi_reboot_timeout:600s
#OTA密码
ota_password:'123456'
#与客户端(如Home Assistant)失去连接多久后重启设备,秒s/分钟min/小时h,不需要此功能设置为0s
api_reboot_timeout:600s
#电量统计的数据更新时间,秒s/分钟min/小时h
cse7766_update_interval:1s
#--------------------- 只需要改这上面的内容 ---------------------
关于WiFi模组版本的选择,请查看下图,找出自己对应的芯片版本即可。
看红色箭头的位置,带B的为csm64f02_b,不带B的为csm64f02
3、搭建编译环境及刷固件
因platformio需要python2.7的环境,所以python2.7为必须。
Windows 系统
自搭环境版:点此查看
免搭建直接用版本:点此查看
MacOS
MacOS自带python2.7,所以无需再安装。
从此处下载esphome(打开页面后,右上角「 Clone or download 」 → 「 Download ZIP 」),下载后解压缩。
打开终端,执行如下命令:(如需python虚拟环境,请自行配置virtualenv)
Python
# 进入esphome的setup.py所在目录
cd xxxxx
# 编译 esphome
# 如提示权限不足,命令前加上sudo
python setup.py build
# 安装 esphome
python setup.py install
# 进入配置文件所在目录
cd xxxxx
# 编译固件(xxxxx.yaml为你的配置文件名字)
esphome xxxxx.yaml compile
# 刷固件(线刷或者OTA皆可)
esphome xxxxx.yaml upload
1
2
3
4
5
6
7
8
9
10
11
12
13
# 进入esphome的setup.py所在目录
cdxxxxx
# 编译 esphome
# 如提示权限不足,命令前加上sudo
pythonsetup.pybuild
# 安装 esphome
pythonsetup.pyinstall
# 进入配置文件所在目录
cdxxxxx
# 编译固件(xxxxx.yaml为你的配置文件名字)
esphomexxxxx.yamlcompile
# 刷固件(线刷或者OTA皆可)
esphomexxxxx.yamlupload
Linux
与MacOS类似,参考MacOS的方法
Docker
docker版本暂无
开发过程回顾
1、已知的一些硬件资料
WiFi模组
WiFi模组使用的是芯海的CSM64F02,经过分析,这款模组和乐鑫的ESP-WROOM-02是一样的。
U7
经过分析,这是一颗IO扩展类的芯片,具体型号暂时未知,可能是cat9554的变种。
U11
这是一颗电量统计用的芯片,具体型号为CSE7766。
继电器
继电器使用的是永能家用继电器YX201系列的产品,控制电压为5V。
2、各芯片引脚对应关系
主控制板正面
主控制板背面
WHY
众所周知的原因,斐讯服务器已经不能正常访问,插座的APP控制已经无法正常实现,需要有另外的方式实现插座的控制。
已有的方法为内网劫持实现,具体可参考这里。
这次要实现的是通过一个自定义的固件,来完整实现DC1联网控制。
为什么选择ESPHome制作固件
ESPHome是一个只需写几行配置文件就可以实现ESP8266/ESP32接入智能家居系统的强大开源项目。其极高的可扩展性和易用性是本次选择的主要原因。
已支持接入的开源智能家居平台
以下排序随机,不分优劣。合适自己的就好。
1、Home Assistant
Home Assistant 是一款基于 Python 的智能家居开源系统,支持众多品牌的智能家居设备,可以轻松实现设备的语音控制、自动化等。
接入方法
Home Assistant中[设置]-[集成]-添加esphome组件
输入dc1对应的ip地址
配置lovelace
2、ioBroker
ioBroker是基于nodejs的物联网的集成平台,为物联网设备提供核心服务,系统管理和统一操作方式。
接入方法
待补充
3、其他支持mqtt的平台
理论上来说,只要是支持mqtt的平台都可以实现接入。
接入方法
待补充
TODO LIST
分析硬件,获得主要芯片的资料
确定各引脚对应关系
获得原版固件的log信息(启动、控制)
控制实现推演
用逻辑分析仪分析U7的I2C数据
分析U7的IO逻辑
编写U7控制驱动程序
电量统计芯片CSE7766功能的实现
编写测试固件
按钮及网络控制功能完善
断电记忆功能完善
MQTT部分完善
可能存在的BUG
可能会出现开关重置的现象,怀疑是wifi模块重启或者是CAT9554驱动的bug,未验证
正在进行中
迁移到新版ESPHOME
开发过程回顾
1、已知的一些硬件资料
WiFi模组
WiFi模组使用的是芯海的CSM64F02,经过分析,这款模组和乐鑫的ESP-WROOM-02是一样的。
U7
经过分析,这是一颗IO扩展类的芯片,具体型号暂时未知,可能是cat9554的变种。
U11
这是一颗电量统计用的芯片,具体型号为CSE7766。
继电器
继电器使用的是永能家用继电器YX201系列的产品,控制电压为5V。
2、各芯片引脚对应关系
主控制板正面
主控制板背面
致谢
以下排名不分先后,为随机。
killadm: 导出原始固件,提供WiFi芯片对比图,主控制板WiFi模块、U7移除后的PCB照片,U7逻辑分析数据采集
老妖:U7驱动编写,U7逻辑分析
实验幼儿园小二班扛把子: 测试引脚走向
Heller、巴山耗子: 初期资料整理
风中的summer: 提供清晰的电路板照片,拆机过程照片
OttoWinter:esphome的作者
致谢
以下排名不分先后,为随机。
killadm: 导出原始固件,提供WiFi芯片对比图,主控制板WiFi模块、U7移除后的PCB照片,U7逻辑分析数据采集
老妖:U7驱动编写,U7逻辑分析
实验幼儿园小二班扛把子: 测试引脚走向
Heller、巴山耗子: 初期资料整理
风中的summer: 提供清晰的电路板照片,拆机过程照片
OttoWinter:esphome的作者
免责申明
以上纯属个人爱好,因为使用上述方法造成的任何问题,不承担任何责任。
部分图片来源于网络,如果涉及版权,请通知删除