Nouveau : le pare-feu IA surveille toute la plateforme et explique chaque incident en termes simples. Découvrez comment ça marche

Réponse à : Lecture de la table de partitions des ESP32 déjà déployés avant d'activer l'OTA

Traduit de English par IA ·

Nous avons eu exactement ce cas avec des cartes compteurs installées par un prestataire. Vous pouvez interroger le firmware en cours : l’API de partitions d’ESP-IDF fonctionne très bien depuis le core Arduino. Envoyez un build aux cartes que vous pouvez atteindre (celles de votre propre lot), ou attendez que les autres soient au dépôt ; il remontera la table en attributs client une fois, après la connexion :

#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());
}

Ensuite, dans l’onglet Attributes, scope Client, vous verrez part.app0, part.app1, part.otadata etc. pour chaque carte. Ce qu’il faut voir : deux slots applicatifs (ota_0 et ota_1, appelés app0/app1 dans les tables Arduino) plus otadata, chacun au moins aussi grand que votre image. Si vous ne voyez qu’un seul app0 de 3 Mo et pas d’app1, c’est le schéma « Huge APP », pas d’OTA possible.Pour les cartes sur lesquelles vous ne pouvez pas envoyer un nouveau build, la méthode d’emily fonctionne au dépôt :

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

Les cartes avec le mauvais schéma nécessitent un reflash USB unique avec une table à deux slots. Ensuite, l’OTA fonctionnera durablement.

Timestamps in UTC or it didn't happen.
Solution acceptée♥ 1