跳转到内容

从 Tasmota 迁移

从之前的 Tasmota 设置迁移非常简单。您只需要让 ESPHome 为您生成一个固件,然后通过 Tasmota 的 Web 界面上传即可。

CAUTION

在 ESP32 上通过 OTA 从 Tasmota v12 或更高版本(带有 safeboot 分区)迁移时,需要在上传到设备的第一个 ESPHome 固件配置中添加 allow_partition_access: true 选项。 如果不这样做,您的设备将无法再进行 OTA 更新,导致软砖!

首先为您的设备创建一个配置。

检查设备上的 Tasmota 镜像变体,它可以告诉您拥有哪种类型的 ESP32。通常显示在 Tasmota Web 界面的右下角。

  • solo1:单核 ESP32
  • tasmota32:双核 ESP32
  • tasmota32xx:不同的 ESP32 变体,其中 xx 可以是例如 c3、c6、s2、s3。创建 ESPHome 配置时需选择正确的变体。

如果您拥有单核 ESP32 设备,则需要使用单核支持编译 ESPHome,否则将无法启动。为单核设备添加以下配置:

esp32:
...
framework:
type: esp-idf
sdkconfig_options:
CONFIG_FREERTOS_UNICORE: y

重要提示:从 Tasmota v12 或更高版本迁移时,请确保在配置的 ota 部分添加 allow_partition_access: true:

ota:
- platform: esphome
allow_partition_access: true

生成并下载固件镜像:

从设备卡片中:打开三点菜单并选择Install(安装)选项。

将打开一个新对话框。点击Manual download(手动下载)选项。

最后,在最后一个对话框中选择factory format(工厂格式,即之前的 “modern format”)。

固件的构建过程将开始,完成后镜像将自动下载。

从您的配置文件夹中运行

Terminal window
esphome compile <MY_DEVICE>.yaml

将 <MY_DEVICE>.yaml 替换为您的配置文件,然后进入 <MY_DEVICE>/.pioenvs/<MY_DEVICE>/ 文件夹。

在那里您会找到 firmware.bin 文件,这就是您要上传的固件。

要上传固件,请进入 Tasmota 的 Web 界面并找到 “Firmware Upgrade”(固件升级)部分。

在 “Upgrade by file upload”(通过文件上传升级)部分,选择您之前下载的固件。

如果一切顺利,您将看到 “Upload Successful”(上传成功)消息,ESPHome 将连接到您 .yaml 文件中配置的 WiFi 网络。🎉

Happy Hacking!

NOTE

使用 esp8266_pwm 输出 平台并从 Tasmota 切换过来时, 您需要给设备断电重启一次。之后 调光功能将正常工作,无需再次断电重启。

ESP8266 的存储空间非常有限。尝试上传过大的镜像会导致 升级过程失败。

Tasmota 8.2 引入了使用 gzip 压缩固件的升级方式,压缩后的固件体积更小, 升级过程更简单。

  • 如果您使用的是 Tasmota 8.2 或更高版本(推荐),您可能希望在上传前用 gzip 压缩从 ESPHome 生成的固件。

  • 如果您使用的是 8.2 之前的任何版本:首先从 Tasmota 仓库上传 tasmota-minimal.bin,然后上传从 ESPHome 生成的固件。

  • 或者,先将 Tasmota 升级到最新版本,然后使用第一种方法(gzip,推荐)。

    如果您使用的是 Tasmota 7.2+,可能需要在 Tasmota 控制台中运行命令 SetOption78 1 并重启设备,才能升级到 ESPHome。

您也可以使用 Tasmota 控制台,只需两条命令即可调用升级:

OtaUrl http://<MY-ESPHOME:6052>/download.bin?configuration=<MY_DEVICE>.yaml&file=firmware.bin&compressed=1
Upgrade 1

将 http://<MY-ESPHOME:6052>/ 替换为您的 ESPHome 安装的主机和端口,将 <MY_DEVICE>.yaml 替换为您的设备配置文件名。

如果因任何原因需要使用未压缩的镜像,只需从上述 URL 中移除 &compressed=1。

如果您从 Tasmota v12 或更高版本迁移了使用 safeboot 布局的 ESP32 设备,则需要在上传 ESPHome 后更新分区表。在此步骤完成之前无法进行常规 OTA 更新。较旧或非 safeboot 的 Tasmota 布局可能不需要此步骤。

CAUTION

在分区表更新过程中,如果电源中断或 ESP 被重置,存在设备变砖的风险,需要通过串口刷写来修复。请确保电源稳定。运行 esphome upload 命令后,更新通常可在 15 秒内完成。

IMPORTANT

从 Tasmota 迁移到 ESPHome 会更改 NVS 分区的位置,使存储在非易失性存储器中的所有配置数据失效。如果您之前使用 Captive Portal 或 Improv 配置了 WiFi 凭据,则需要在此步骤之前重新配置。这在迁移过程中只会发生一次:在直接方法和间接方法 A 和 B 的第一次成功的 esphome upload --partition-table 命令之后,或在间接方法 C 的最后一次 esphome upload --partition-table 命令之后。

NOTE

选择大小限制对当前运行应用来说过小的方法不会导致设备变砖。设备在写入闪存之前会验证新的分区表,如果运行的应用无法适应,则会拒绝上传并报错。您可以安全地使用下一个更大的方法重试。只有在已通过验证的分区表更新期间发生断电或重置,才会导致设备无法启动。

打开 ESPHome 日志。在日志的配置部分,检查运行应用的 Used size(已用大小)。这告诉您应该使用哪种方法。您只需完成以下方法之一的步骤。

下载:

要求:Used size 必须为 851968 bytes 或更小。在命令行中运行以下命令:

Terminal window
esphome upload --partition-table --file partitions_esphome.bin <MY_DEVICE>.yaml

下载:

要求:Used size 必须为 983040 bytes 或更小。在命令行中运行以下命令:

Terminal window
esphome upload --partition-table --file partitions_tasmota_migration_a.bin <MY_DEVICE>.yaml
esphome upload --partition-table --file partitions_esphome.bin <MY_DEVICE>.yaml

下载:

要求:Used size 必须为 1376256 bytes 或更小。在命令行中运行以下命令:

Terminal window
esphome upload --partition-table --file partitions_tasmota_migration_b1.bin <MY_DEVICE>.yaml
esphome upload --partition-table --file partitions_tasmota_migration_b2.bin <MY_DEVICE>.yaml
esphome upload --partition-table --file partitions_esphome.bin <MY_DEVICE>.yaml

下载:

要求:Used size 可以是任意大小,但在此过程中您必须安装一个大小为 851968 bytes 或更小的常规 OTA 更新。在命令行中运行以下命令:

Terminal window
esphome upload --partition-table --file partitions_tasmota_migration_c.bin <MY_DEVICE>.yaml

立即安装 OTA 应用更新:要达到 851968 bytes 或更小的目标大小,您可能需要从配置中移除除 esp32、esphome、logger、api、ota 和 wifi 之外的所有组件。通过 OTA 编译并安装 ESPHome。然后,在命令行中运行以下命令:

Terminal window
esphome upload --partition-table --file partitions_esphome.bin <MY_DEVICE>.yaml

ESP 在完成每个分区表更新后会自行重启。成功安装 partitions_esphome.bin 分区表后,该过程即完成。验证 ESPHome 日志中的分区表如下所示:

Partition table:
Name Type Subtype Address Size
otadata 0x1 0x0 0x9000 0x2000
phy_init 0x1 0x1 0xB000 0x1000
app0 0x0 0x10 0x10000 0x1C0000
app1 0x0 0x11 0x1D0000 0x1C0000
nvs 0x1 0x2 0x390000 0x70000

您现在可以从配置中移除 allow_partition_access: true 这一行,添加更多组件,并通过 OTA 安装 ESPHome 更新。