请注意:工具也要更新到新版本,否则可能会出现问题!前期因按过重启按钮的,可能导致固件损坏,必须重新线刷!老版本的,可能无法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平台
1 2 3 4 5 6 7 8 9 10 11 12 13 |
配置文件对应版本更新历史 <span class="hljs-selector-tag">dc1_homeassistant</span>: <span class="hljs-selector-tag">v2019</span><span class="hljs-selector-class">.03</span><span class="hljs-selector-class">.28</span><span class="hljs-selector-class">.002</span>: 编译固件前请更新<span class="hljs-selector-tag">esphome</span>及<span class="hljs-selector-tag">esphome-core</span>到最新版本! 1、优化按钮,解决重启问题 <span class="hljs-selector-tag">dc1_homeassistant_test</span>: <span class="hljs-selector-tag">dc1_mqtt</span>:无 <span class="hljs-selector-tag">dc1_mqtt_test</span>:无 |
2、修改固件配置文件
按照自己的情况修改配置文件中substitutions内的参数。其他的配置如果不是很了解就不要去修改了。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
<span class="hljs-comment">#--------------------- 只需要改这下面的内容 ---------------------</span> <span class="hljs-attr">substitutions:</span> <span class="hljs-comment">#WiFi芯片版本,型号中带B的为csm64f02_b,不带B的为csm64f02</span> <span class="hljs-attr">board_model:</span> <span class="hljs-string">csm64f02</span> <span class="hljs-comment">#设备名称(多个dc1改成不一样的)</span> <span class="hljs-attr">device_name:</span> <span class="hljs-string">phicomm_dc1</span> <span class="hljs-comment">#WiFi_SSID名称</span> <span class="hljs-attr">wifi_ssid:</span> <span class="hljs-string">'2L'</span> <span class="hljs-comment">#WiFi密码</span> <span class="hljs-attr">wifi_password:</span> <span class="hljs-string">'1122334455'</span> <span class="hljs-comment">#如果SSID是隐藏的,设置为true</span> <span class="hljs-attr">wifi_fast_connect:</span> <span class="hljs-string">'false'</span> <span class="hljs-comment">#WiFi离线多久后重启设备,秒s/分钟min/小时h,不需要此功能设置为0s</span> <span class="hljs-attr">wifi_reboot_timeout:</span> <span class="hljs-number">600</span><span class="hljs-string">s</span> <span class="hljs-comment">#OTA密码</span> <span class="hljs-attr">ota_password:</span> <span class="hljs-string">'123456'</span> <span class="hljs-comment">#与客户端(如Home Assistant)失去连接多久后重启设备,秒s/分钟min/小时h,不需要此功能设置为0s</span> <span class="hljs-attr">api_reboot_timeout:</span> <span class="hljs-number">600</span><span class="hljs-string">s</span> <span class="hljs-comment">#电量统计的数据更新时间,秒s/分钟min/小时h</span> <span class="hljs-attr">cse7766_update_interval:</span> <span class="hljs-number">1</span><span class="hljs-string">s</span> <span class="hljs-comment">#--------------------- 只需要改这上面的内容 ---------------------</span> |
关于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)
12345678910111213 <span class="hljs-comment"># 进入esphome的setup.py所在目录</span><span class="hljs-built_in">cd</span> xxxxx<span class="hljs-comment"># 编译 esphome</span><span class="hljs-comment"># 如提示权限不足,命令前加上sudo</span>python setup.py build<span class="hljs-comment"># 安装 esphome</span>python setup.py install<span class="hljs-comment"># 进入配置文件所在目录</span><span class="hljs-built_in">cd</span> xxxxx<span class="hljs-comment"># 编译固件(xxxxx.yaml为你的配置文件名字)</span>esphome xxxxx.yaml compile<span class="hljs-comment"># 刷固件(线刷或者OTA皆可)</span>esphome xxxxx.yaml upload
- 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 的智能家居开源系统,支持众多品牌的智能家居设备,可以轻松实现设备的语音控制、自动化等。
接入方法
- 按照TTL接线方法接线
- 按照固件编译及刷固件方法更新固件
- 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的作者
免责申明
以上纯属个人爱好,因为使用上述方法造成的任何问题,不承担任何责任。
部分图片来源于网络,如果涉及版权,请通知删除
转载请注明:徐自远的乱七八糟小站 » [4月1日更新!!]斐讯DC1插座自制固件接入ha