ESP32 BLE OTA Arduino

OP #7890668
Lesenswert?

Ich möchte auf dem ESP32 OTA nutzen. Nun gibt es verschiedene Möglichkeiten.

https://github.com/ayushsharma82/ElegantOTA

https://github.com/fbiego/ESP32_BLE_OTA_Arduino

https://github.com/michael-angerer/esp32_ble_ota

https://github.com/gb88/BLEOTA

Am besten gefällt mir die von (gb88) wegen der Sicherheit. Allerdings gibt es dazu keine App? Welche der Lösungen bietet sich an über einen Task im Hintergrund laufen zu lassen, so dass ein OTA während dem normalen Programm nebenher laufen kann, und dann nur ein Neustart ausgelöst wird?

#7890683
Lesenswert?

Ich nutze die Variante von fbiego. funktioniert soweit ohne Probleme.

Alexander schrieb:

elche der Lösungen bietet sich an über einen Task im Hintergrund laufen zu lassen, so dass ein OTA während dem normalen Programm nebenher laufen kann, und dann nur ein Neustart ausgelöst wird?

Wann der ESP das Update durchführen soll kannst du ja bestimmen. Letztlich wird das Update irgendwo hinkopiert (SD Karte/SPIFFS/FFAT) und dann der update prozess gestartet.

OP #7891977
Lesenswert?

Alexander schrieb:

https://github.com/gb88/BLEOTA/blob/nimble/examples/nimble/bleota_secure/bleota_secure.ino

Kann das mal jemand testen? Es sind zwei Zip's herunterzuladen und über Sketch -> Include Library -> Add .ZIP Library... zu installieren,

BLEOTA-nimble.zip https://github.com/gb88/BLEOTA/tree/nimble

NimBLE-Arduino.zip https://github.com/h2zero/NimBLE-Arduino/tree/a79941c

dann unter File -> Examples -> BLEOTA -> nimble -> bleota_secure -> die bleota_secure.ino zu öffnen.

Es kompiliert aber läuft nicht richtig auf dem ESP32 (Handyladegerät an USB). Es werden nur kryptische Zeichen angezeigt.

1
Manufacturer: H<�?
2
Model: <�?
3
HW Version: 8<�?
4
FW Version: (<�?

https://gb88.github.io/BLEOTA

OP #7894518
Lesenswert?

Ich hab es nicht weiter verfolgt, hängt in der Warteschleife - siehe Issues #21 und #16. Es könnte an meinem Android Chrome Browser liegen, muss das noch mal mit einem anderen Gerät testen.

https://github.com/gb88/BLEOTA/issues/21

Ich hab nun erstmal das ElegantOTA Lite verwendet, das geht über WLAN.

Dazu die folgenden Libraries installieren:

Dann in %UserProfile%\Documents\Arduino\libraries\ElegantOTA\src\ElegantOTA.h diese Zeile von 0 auf 1 ändern, sonst macht der Linker Probleme:

1
#define ELEGANTOTA_USE_ASYNC_WEBSERVER 1

Um das AsyncDemo.ino Sketch umzuschreiben von Client auf AP muss man nur die folgenden Zeilen ändern. Das raus löschen:

1
 <!   WiFi.mode(WIFI_STA);
2
 <!   WiFi.begin(ssid, password);
3
 <!   Serial.println("");
4
 <! 
5
 <!   // Wait for connection
6
 <!   while (WiFi.status() != WL_CONNECTED) {
7
 <!     delay(500);
8
 <!     Serial.print(".");
9
 <!   }
10
 <!   Serial.println("");
11
 <!   Serial.print("Connected to ");
12
 <!   Serial.println(ssid);
13
 <!   Serial.println(WiFi.localIP());

und durch das ersetzen:

1
 !>   WiFi.mode(WIFI_AP);
2
 !>   WiFi.softAP(ssid, password);
3
 !>   Serial.println("Access Point started");
4
      Serial.print("IP address: ");
5
 !>   Serial.println(WiFi.softAPIP());

Dann kann man sich verbinden, geht auf http://192.168.4.1/update und lädt die %Temp%\arduino\sketches\6C73C7CAA43FACF93DFB43A7254684DB\AsyncDemo.ino.bin hoch, geht schneller als Bluetooth.

In der main loop() ist nur eine Zeile. Die blockt bis zu 100ms könnte man noch auslagern in einen Task.

1
  ElegantOTA.loop();

Passwort steht als Klartext im Sketch, könnte man sicher noch base64 maskieren aber ich denke das reicht mir so als Sicherheit.

1
const char* ssid = "ESP32";
2
const char* password = "12345678";
OP #8055103
Lesenswert?

John P. schrieb:

Gibt es dazu Neuigkeiten?

BLE OTA funktioniert jetzt auch signiert, und BLE Verbindung ist mit 6-stelligen Passkey gesichert. Giovanni hat das Webinterface kräftig überarbeitet, und ich habe noch ein kleines Tool hinzugefügt als Spielerei:

Der ESP32 generiert Zertifikate automatisch, und mit einem Shell Script (unter Git für Windows) kann man sich die Dateien aus dem LittleFS zurückholen und damit OTA signieren. Liegt mit unter Tools.

NimBLE läuft nur erzwungen, musste in der Library rumpfuschen. Hier das funktioniernde Sketch.

https://github.com/aIecxs/BLEOTA/blob/nimble/examples/nimble/bleota_secure/bleota_secure.ino

: Bearbeitet durch User

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren