使用Debian/群晖在Docker中编译&OTA升级DC1固件(补充hosts修改)

前言

之前在三木大佬出了DC1的固件时入手两个固件,当时只支持ha的api接口,后来因转向nodered,需要使用mqtt接入,在等待良久后总算等到三木大佬的新固件,因出差在外无法线刷,只能OTA升级,为此折腾良久特此记录升级过程。

Docker中安装esphome

Debian中安装

首先从https://github.com/Samuel-0-0/phicomm_dc1-esphome 下载项目将esphome/components/cat9554中的三个文件__init__.py、cat9554.cpp、cat9554.h放到自己知道的文件夹中(例如:/opt/esphome/cat9554);

将yaml文件夹中的secrets.yaml放入/opt/esphome/config(以上文件夹若没有可以先新建)。

从ssh登陆系统,执行

docker run -d --name esphome -p 6052:6052 -v /opt/esphome/config:/config -v /opt/esphome/cat9554:/usr/src/app/esphome/components/cat9554 esphome/esphome

若本地无esphome镜像会自动拉取,在看到下图类似提示即为运行成功

群晖中安装

新建cat9554和cofig文件夹,将__init__.py、cat9554.cpp、cat9554.h放入cat9554中,将secrets.yaml放入config中




打开docker,打开注册表搜索esphome,

选中第一个后点击下载
下载完成后点击映像,选中刚下载的esphome映像后点击启动

容器名称随意

点击高级设置-卷
添加cat9554和config文件夹

cat9554挂载到/usr/src/app/esphome/components/cat9554
config挂载到/config


切换到端口设置,添加6052端口,添加完成后点击应用,回到常规设置



点击应用即可完成esphome的安装。

web编辑固件yaml

使用浏览器访问IP+6052即可访问esphome的web界面,如下图


点击右上角+号增加配置



前三步可以任意填写(后面会直接用github中的yaml替换),最后提交完成添加

打开github中yaml文件夹
image
根据自己需要选择yaml文件,因为我要用mqtt,同时ha也还在用所以这里以dc1_homeassistant_mqtt.yaml为例子

打开文件,全选复制,回到web中点击edit,将复制的内容全部粘贴到这里

修改yaml文件17、19行,
image
将设备名称和mqtt的名称根据自己情况修改(我两个DC1,所以直接使用1,2结尾区分)
image
修改完成后点击save;

再修改config中的secrets.yaml文件


根据自己情况修改Wi-Fi的ssid和密码,mqtt服务器地址等信息(我的mqtt未设置加密,所以mqtt的用户和密码都是空)
image
保存后,回到web界面,点击upload

经过漫长的等待(视网络情况而定,本人网络较差)

最后可能会出现ERROR Error resolving IP address of phicomm_dc1_1.local. Is it connected to WiFi? (已补图)not find phicomm_dc1_1.local resolving啥的,具体忘记了


这时如果自建dns的话在dns中增加一条记录。
image
192.168.2.169 phicomm_dc1_1.local (192.168.2.169是我dc1_1的ip,这里需要设置成你需要升级固件的DC1的ip)
若无自建dns在服务器/群晖中修改hosts文件,Debian在/etc/hosts,如下图:
image
设置完成后再次点击upload,因为之前已经编译过一次,这次会很快,最后提示如下,表示正在升级
image
最后升级完成,可以开心的使用mqtt接入nodered了

nodered接入

效果如下



流程如下,导入后修改mqtt服务器、topic和几个dashboard节点。即可,如多个DC1可直接复制DC1_2的完整流程,然后修改DC1_2中的mqtt服务器、topic和几个dashboard节点。

附件为流程:DC1.json (33.2 KB)

结尾

个人感觉写的较为详细,特别感谢三木大佬和其他各位大佬为DC1做的如此优秀的固件。
PS:其中群晖部分是借群友:陌小桀 的群晖截图,在此感谢。

嗯,写的蛮详细的

感谢大佬耐心指导,明天拆机刷机一波试试

感谢知识的传递与分享 ,前次用树莓派没有编译成功,改天用群晖docker编译一次,在次感谢

感谢楼主分享。写的很详细,我的DC1 还没空刷。

我也是这么刷的,不过用的是HA_MQTT的版本,不通过NR就可以直接发现接入

upload时,有没有遇到这样的问题:

Creating BIN file “.pioenvs/phicomm_dc1_1/firmware.bin” using “.pioenvs/phicomm_dc1_1/firmware.elf”
======================== [SUCCESS] Took 155.37 seconds ========================
INFO Successfully compiled program.
INFO Resolving IP address of phicomm_dc1_1.local
INFO -> 192.168.1.102
INFO Uploading /config/build/phicomm_dc1_1/.pioenvs/phicomm_dc1_1/firmware.bin (436704 bytes)
ERROR Error auth result: Error: Authentication invalid. Is the password correct?

找到原因了,是ota的密码不一致导致。