Yeni: Yapay zekâ güvenlik duvarı tüm platformu izliyor ve her olayı sade bir dille açıklıyor. Nasıl çalıştığını görün

Yanıt: Sahada zaten kurulu ESP32 kartlarının bölüm tablosunu OTA'yı açmadan önce okuma

Yapay zekâ tarafından English dilinden çevrildi ·

Bir yüklenici firmasının sayaç kartlarında tam olarak bu durum yaşandı. Çalışan firmware’e sorabilirsiniz: ESP-IDF’deki partition API’si Arduino çekirdeğinde de sorunsuz çalışıyor. Ulaşabildiğiniz kartlara (kendi partinizden olanlara) tek bir derleme gönderin ya da diğerlerinin depoya gelmesini bekleyin; bağlandıktan sonra tabloyu bir kez client attributes olarak raporlayacak:

#include "esp_partition.h"

void reportPartitions() {
  String json = "{";
  esp_partition_iterator_t it =
      esp_partition_find(ESP_PARTITION_TYPE_ANY, ESP_PARTITION_SUBTYPE_ANY, NULL);
  bool first = true;
  while (it != NULL) {
    const esp_partition_t *p = esp_partition_get(it);
    if (!first) json += ",";
    json += ""part." + String(p->label) + "":"" +
            String(p->address, HEX) + "/" + String(p->size) + """;
    first = false;
    it = esp_partition_next(it);
  }
  esp_partition_iterator_release(it);
  json += "}";
  mqtt.publish("v1/attributes", json.c_str());
}

Ardından Attributes sekmesinde, Client scope altında her kart için part.app0, part.app1, part.otadata vb. görünecek. Görmek istediğiniz şey: iki uygulama alanı (ota_0 ve ota_1, Arduino tablolarında app0/app1 olarak geçer) ile otadata, her biri imajınızdan en az o kadar büyük olmalı. Tek bir app0 3 MB görüp app1 yoksa, bu “Huge APP” şemasıdır, OTA yapılamaz.Yeni derleme gönderemediğiniz kartlar için emily’nin yöntemi depoda işe yarar:

esptool.py --port /dev/ttyUSB0 read_flash 0x8000 0xc00 pt.bin
python gen_esp32part.py pt.bin

Yanlış şemaya sahip kartların, iki alanlı bir tabloyla bir kez USB üzerinden yeniden flaşlanması gerekir. Bundan sonra OTA kalıcı olarak çalışır.

Timestamps in UTC or it didn't happen.
Kabul edilen çözüm♥ 1