esphome可以提供了一个集成的编译环境,同时他又可以通过无线方式更新firmware,这无疑方便了我们的开发工作。
istoreos商店没有提供esphome,所以我们需要自己用‘类似’命令行的方式来安装,
1. 拉取esphome镜像
依次点击左侧边栏Docker
-> 镜像
,输入esphome/esphome:latest
点击拉取
,会出现一个loading的弹出式提示框,等待一段时间就拉好了
2. 创建esphome容器
这里我们直接用命令行的方式,依次点击左侧边栏Docker
-> 容器
,这里可以看到一些我们已经创建好的容器,点击下面的添加
,我们在解析CLI输入下面的command:
docker run -d --name="esphome" \
-e TZ=Asia/Shanghai \
-v /overlay/Configs/esphome:/config \
-v /run/udev:/run/udev
--privileged \
--restart=always \
--net=host \
esphome/esphome:latest
[外链图片转存中…(img-0ZMFTvAx-1719559081587)]
点击提交
,然后微调一下,再点击下面的提交
就可以了。
然后再回到刚才的Docker
-> 容器
界面,选中刚创建的esphome,点击下面的启动,我们就已经成功将esphome
的docker环境部署好了。
3. 浏览esphome页面
浏览器打开,你的<istoreos IP>: 6052, 就可以看到我们刚部署好的esphome。这里我自己创建一个esp32s3的例程,整体就是下面的样子。
[外链图片转存中…(img-9uCN4kGE-1719559081588)]
第一次打开这个页面,他会让你填你的wifi和密码,这个一定要填对,而且尽量使用长期的wifi名字,避免后期,部署好了以后还要拿下来再恢复出厂设置。
4. 编译&烧写程序
我建议第一次编译程序的时候选manually download,选择factory模式,然后把你设备连接到你的电脑上,注意,这里说的电脑不是你部署esphome那个机器,而是一台自带浏览器的电脑,是不是在istoreos的局域网也无所谓,是真正的离线下载。
而第一次的程序下进去以后,我们后面就可以用wirelessly的方式download。
[外链图片转存中…(img-5VD3JGT2-1719559081588)]
贴一个完整的wirelessly更新固件的log在这里
INFO ESPHome 2024.6.4
INFO Reading configuration /config/esp32s3.yaml...
INFO Generating C++ source...
INFO Compiling app...
Processing esp32s3 (board: esp32-s3-devkitc-1; framework: arduino; platform: platformio/espressif32@5.4.0)
--------------------------------------------------------------------------------
HARDWARE: ESP32S3 240MHz, 320KB RAM, 8MB Flash
- toolchain-riscv32-esp @ 8.4.0+2021r2-patch5
- toolchain-xtensa-esp32s3 @ 8.4.0+2021r2-patch5
Dependency Graph
|-- AsyncTCP-esphome @ 2.1.3
|-- WiFi @ 2.0.0
|-- FS @ 2.0.0
|-- Update @ 2.0.0
|-- ESPAsyncWebServer-esphome @ 3.2.2
|-- DNSServer @ 2.0.0
|-- ESPmDNS @ 2.0.0
|-- noise-c @ 0.1.4
RAM: [= ] 12.5% (used 40876 bytes from 327680 bytes)
Flash: [===== ] 46.5% (used 853041 bytes from 1835008 bytes)
========================= [SUCCESS] Took 17.11 seconds =========================
INFO Successfully compiled program.
INFO Connecting to 192.168.31.195
INFO Uploading /config/.esphome/build/esp32s3/.pioenvs/esp32s3/firmware.bin (853424 bytes)
Uploading: [============================================================] 100% Done...
INFO Upload took 5.36 seconds, waiting for result...
INFO OTA successful
INFO Successfully uploaded program.
INFO Starting log output from 192.168.31.195 using esphome API
INFO Successfully connected to esp32s3 @ 192.168.31.195 in 7.230s
INFO Successful handshake with esp32s3 @ 192.168.31.195 in 0.060s
[22:07:05][I][app:100]: ESPHome version 2024.6.4 compiled on Jun 27 2024, 20:36:26
[22:07:05][C][wifi:599]: WiFi:
[22:07:05][C][wifi:427]: Local MAC: 12:34:56:78:9a:bc
[22:07:05][C][wifi:432]: SSID: [redacted]
[22:07:05][C][wifi:435]: IP Address: 192.168.31.195
[22:07:05][C][wifi:439]: BSSID: [redacted]
[22:07:05][C][wifi:440]: Hostname: 'esp32s3'
[22:07:05][C][wifi:442]: Signal strength: -37 dB ▂▄▆█
[22:07:05][C][wifi:446]: Channel: 1
[22:07:05][C][wifi:447]: Subnet: 255.255.255.0
[22:07:05][C][wifi:448]: Gateway: 192.168.31.1
[22:07:05][C][wifi:449]: DNS1: 192.168.31.1
[22:07:05][C][wifi:450]: DNS2: 0.0.0.0
[22:07:05][C][logger:185]: Logger:
[22:07:05][C][logger:186]: Level: DEBUG
[22:07:05][C][logger:188]: Log Baud Rate: 115200
[22:07:05][C][logger:189]: Hardware UART: USB_CDC
[22:07:05][C][captive_portal:088]: Captive Portal:
[22:07:05][C][mdns:115]: mDNS:
[22:07:05][C][mdns:116]: Hostname: esp32s3
[22:07:05][C][esphome.ota:073]: Over-The-Air updates:
[22:07:05][C][esphome.ota:074]: Address: esp32s3.local:3232
[22:07:05][C][esphome.ota:075]: Version: 2
[22:07:05][C][esphome.ota:078]: Password configured
[22:07:05][C][safe_mode:018]: Safe Mode:
[22:07:05][C][safe_mode:020]: Boot considered successful after 60 seconds
[22:07:05][C][safe_mode:021]: Invoke after 10 boot attempts
[22:07:05][C][safe_mode:023]: Remain in safe mode for 300 seconds
[22:07:05][C][api:139]: API Server:
[22:07:05][C][api:140]: Address: esp32s3.local:6053
[22:07:05][C][api:142]: Using noise encryption: YES
[22:07:09][D][api:102]: Accepted 192.168.31.153
[22:07:09][D][api.connection:1375]: Home Assistant 2024.6.4 (192.168.31.153): Connected successfully
[22:07:57][I][safe_mode:041]: Boot seems successful; resetting boot loop counter
[22:07:57][D][esp32.preferences:114]: Saving 1 preferences to flash...
[22:07:57][D][esp32.preferences:143]: Saving 1 preferences to flash: 0 cached, 1 written, 0 failed
INFO ESPHome 2024.6.4
INFO Reading configuration /config/esp32s3.yaml...
INFO Starting log output from 192.168.31.195 using esphome API
INFO Successfully connected to esp32s3 @ 192.168.31.195 in 0.154s
INFO Successful handshake with esp32s3 @ 192.168.31.195 in 0.053s
[22:15:16][I][app:100]: ESPHome version 2024.6.4 compiled on Jun 27 2024, 20:36:26
[22:15:16][C][wifi:599]: WiFi:
[22:15:16][C][wifi:427]: Local MAC: 74:4D:BD:7F:2A:20
[22:15:16][C][wifi:432]: SSID: [redacted]
[22:15:16][C][wifi:435]: IP Address: 192.168.31.195
[22:15:16][C][wifi:439]: BSSID: [redacted]
[22:15:16][C][wifi:440]: Hostname: 'esp32s3'
[22:15:16][C][wifi:442]: Signal strength: -42 dB ▂▄▆█
[22:15:16][C][wifi:446]: Channel: 1
[22:15:16][C][wifi:447]: Subnet: 255.255.255.0
[22:15:16][C][wifi:448]: Gateway: 192.168.31.1
[22:15:16][C][wifi:449]: DNS1: 192.168.31.1
[22:15:16][C][wifi:450]: DNS2: 0.0.0.0
[22:15:16][C][logger:185]: Logger:
[22:15:16][C][logger:186]: Level: DEBUG
[22:15:16][C][logger:188]: Log Baud Rate: 115200
[22:15:16][C][logger:189]: Hardware UART: USB_CDC
[22:15:16][C][captive_portal:088]: Captive Portal:
[22:15:16][C][mdns:115]: mDNS:
[22:15:16][C][mdns:116]: Hostname: esp32s3
[22:15:16][C][esphome.ota:073]: Over-The-Air updates:
[22:15:16][C][esphome.ota:074]: Address: esp32s3.local:3232
[22:15:16][C][esphome.ota:075]: Version: 2
[22:15:16][C][esphome.ota:078]: Password configured
[22:15:16][C][safe_mode:018]: Safe Mode:
[22:15:16][C][safe_mode:020]: Boot considered successful after 60 seconds
[22:15:16][C][safe_mode:021]: Invoke after 10 boot attempts
[22:15:16][C][safe_mode:023]: Remain in safe mode for 300 seconds
[22:15:16][C][api:139]: API Server:
[22:15:16][C][api:140]: Address: esp32s3.local:6053
[22:15:16][C][api:142]: Using noise encryption: YES