OTA (experimental)
This commit is contained in:
parent
0667ee5744
commit
fb7c32e5c8
@ -109,7 +109,7 @@ String BintrayClient::getLatestVersion() const
|
|||||||
const size_t bufferSize = 1024;
|
const size_t bufferSize = 1024;
|
||||||
if (jsonResult.length() > bufferSize)
|
if (jsonResult.length() > bufferSize)
|
||||||
{
|
{
|
||||||
ESP_LOGI(TAG, "Error: Could not parse JSON. Input data is too big!");
|
Serial.println("Error: Could parse JSON. Input data is too big!");
|
||||||
return version;
|
return version;
|
||||||
}
|
}
|
||||||
StaticJsonBuffer<bufferSize> jsonBuffer;
|
StaticJsonBuffer<bufferSize> jsonBuffer;
|
||||||
@ -118,7 +118,7 @@ String BintrayClient::getLatestVersion() const
|
|||||||
// Check for errors in parsing
|
// Check for errors in parsing
|
||||||
if (!root.success())
|
if (!root.success())
|
||||||
{
|
{
|
||||||
ESP_LOGI(TAG, "Error: Could not parse JSON!");
|
Serial.println("Error: Could not parse JSON!");
|
||||||
return version;
|
return version;
|
||||||
}
|
}
|
||||||
return root.get<String>("name");
|
return root.get<String>("name");
|
||||||
@ -133,7 +133,7 @@ String BintrayClient::getBinaryPath(const String &version) const
|
|||||||
const size_t bufferSize = 1024;
|
const size_t bufferSize = 1024;
|
||||||
if (jsonResult.length() > bufferSize)
|
if (jsonResult.length() > bufferSize)
|
||||||
{
|
{
|
||||||
ESP_LOGI(TAG, "Error: Could parse JSON. Input data is too big!");
|
Serial.println("Error: Could parse JSON. Input data is too big!");
|
||||||
return path;
|
return path;
|
||||||
}
|
}
|
||||||
StaticJsonBuffer<bufferSize> jsonBuffer;
|
StaticJsonBuffer<bufferSize> jsonBuffer;
|
||||||
@ -142,7 +142,7 @@ String BintrayClient::getBinaryPath(const String &version) const
|
|||||||
JsonObject &firstItem = root[0];
|
JsonObject &firstItem = root[0];
|
||||||
if (!root.success())
|
if (!root.success())
|
||||||
{ //Check for errors in parsing
|
{ //Check for errors in parsing
|
||||||
ESP_LOGI(TAG, "Error: Could not parse JSON!");
|
Serial.println("Error: Could not parse JSON!");
|
||||||
return path;
|
return path;
|
||||||
}
|
}
|
||||||
return "/" + getUser() + "/" + getRepository() + "/" + firstItem.get<String>("path");
|
return "/" + getUser() + "/" + getRepository() + "/" + firstItem.get<String>("path");
|
||||||
|
@ -29,7 +29,7 @@ package = ttgov21_old
|
|||||||
api_token = 2e10f923df5d47b9c7e25752510322a1d65ee997
|
api_token = 2e10f923df5d47b9c7e25752510322a1d65ee997
|
||||||
|
|
||||||
[common]
|
[common]
|
||||||
release_version = 6
|
release_version = 7
|
||||||
|
|
||||||
[ota]
|
[ota]
|
||||||
; build configuration based on Bintray and Wi-Fi settings
|
; build configuration based on Bintray and Wi-Fi settings
|
||||||
@ -42,14 +42,16 @@ build_flags =
|
|||||||
'-DBINTRAY_REPO="${bintray.repository}"'
|
'-DBINTRAY_REPO="${bintray.repository}"'
|
||||||
'-DBINTRAY_PACKAGE="${bintray.package}"'
|
'-DBINTRAY_PACKAGE="${bintray.package}"'
|
||||||
-DVERSION=${common.release_version}
|
-DVERSION=${common.release_version}
|
||||||
|
lib_deps_ota =
|
||||||
|
https://github.com/platformio/bintray-secure-ota.git
|
||||||
|
|
||||||
[common_env_data]
|
[common_env_data]
|
||||||
platform_espressif32 = espressif32@1.3.0
|
platform_espressif32 = espressif32@1.3.0
|
||||||
;platform_espressif32 = https://github.com/platformio/platform-espressif32.git#feature/stage
|
;platform_espressif32 = https://github.com/platformio/platform-espressif32.git#feature/stage
|
||||||
;board_build.partitions = no_ota.csv
|
|
||||||
board_build.partitions = min_spiffs.csv
|
board_build.partitions = min_spiffs.csv
|
||||||
lib_deps_all =
|
lib_deps_all =
|
||||||
ArduinoJson
|
ArduinoJson@^5.13.1
|
||||||
|
; ArduinoJson${ota.lib_deps_ota}
|
||||||
lib_deps_display =
|
lib_deps_display =
|
||||||
U8g2@>=2.23.16
|
U8g2@>=2.23.16
|
||||||
lib_deps_rgbled =
|
lib_deps_rgbled =
|
||||||
|
25
src/OTA.cpp
25
src/OTA.cpp
@ -15,10 +15,7 @@
|
|||||||
limitations under the License.
|
limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <WiFiClientSecure.h>
|
#include "OTA.h"
|
||||||
#include <Update.h>
|
|
||||||
#include <BintrayClient.h>
|
|
||||||
#include "ota.h"
|
|
||||||
|
|
||||||
const BintrayClient bintray(BINTRAY_USER, BINTRAY_REPO, BINTRAY_PACKAGE);
|
const BintrayClient bintray(BINTRAY_USER, BINTRAY_REPO, BINTRAY_PACKAGE);
|
||||||
|
|
||||||
@ -41,15 +38,20 @@ void start_ota_update() {
|
|||||||
|
|
||||||
WiFi.begin(WIFI_SSID, WIFI_PASS);
|
WiFi.begin(WIFI_SSID, WIFI_PASS);
|
||||||
|
|
||||||
while (WiFi.status() != WL_CONNECTED) {
|
int i = WIFI_MAX_TRY;
|
||||||
delay(2000);
|
while (i--) {
|
||||||
ESP_LOGI(TAG, "trying to connect to %s", WIFI_SSID);
|
ESP_LOGI(TAG, "trying to connect to %s", WIFI_SSID);
|
||||||
|
if (WiFi.status() == WL_CONNECTED)
|
||||||
|
break;
|
||||||
|
delay(5000);
|
||||||
}
|
}
|
||||||
|
if (i >= 0) {
|
||||||
|
ESP_LOGI(TAG, "connected to %s", WIFI_SSID);
|
||||||
|
checkFirmwareUpdates(); // gets and flashes new firmware and restarts
|
||||||
|
} else
|
||||||
|
ESP_LOGI(TAG, "could not connect to %s, rebooting.", WIFI_SSID);
|
||||||
|
|
||||||
ESP_LOGI(TAG, "connected to %s", WIFI_SSID);
|
ESP.restart(); // reached only if update was not successful or no wifi connect
|
||||||
|
|
||||||
checkFirmwareUpdates(); // gets and flashes new firmware and restarts
|
|
||||||
ESP.restart(); // reached only if update was not successful
|
|
||||||
|
|
||||||
} // start_ota_update
|
} // start_ota_update
|
||||||
|
|
||||||
@ -191,7 +193,8 @@ void processOTAUpdate(const String &version) {
|
|||||||
if (written == contentLength) {
|
if (written == contentLength) {
|
||||||
ESP_LOGI(TAG, "Written %d bytes successfully", written);
|
ESP_LOGI(TAG, "Written %d bytes successfully", written);
|
||||||
} else {
|
} else {
|
||||||
ESP_LOGI(TAG, "Written only %d of %d bytes, OTA update cancelled.", written, contentLength);
|
ESP_LOGI(TAG, "Written only %d of %d bytes, OTA update cancelled.",
|
||||||
|
written, contentLength);
|
||||||
// Retry??
|
// Retry??
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,9 +1,10 @@
|
|||||||
#ifndef OTA_H
|
#ifndef OTA_H
|
||||||
#define OTA_H
|
#define OTA_H
|
||||||
|
|
||||||
#include <Arduino.h>
|
|
||||||
#include <WiFi.h>
|
#include <WiFi.h>
|
||||||
#include "globals.h"
|
#include <WiFiClientSecure.h>
|
||||||
|
#include <Update.h>
|
||||||
|
#include <BintrayClient.h>
|
||||||
|
|
||||||
void checkFirmwareUpdates();
|
void checkFirmwareUpdates();
|
||||||
void processOTAUpdate(const String &version);
|
void processOTAUpdate(const String &version);
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
// Basic config
|
// Basic config
|
||||||
#include "globals.h"
|
#include "globals.h"
|
||||||
#include "senddata.h"
|
#include "senddata.h"
|
||||||
#include "ota.h"
|
#include "OTA.h"
|
||||||
|
|
||||||
// Local logging tag
|
// Local logging tag
|
||||||
static const char TAG[] = "main";
|
static const char TAG[] = "main";
|
||||||
|
@ -9,7 +9,7 @@
|
|||||||
#include "senddata.h"
|
#include "senddata.h"
|
||||||
#include "cyclic.h"
|
#include "cyclic.h"
|
||||||
#include "beacon_array.h"
|
#include "beacon_array.h"
|
||||||
#include "ota.h"
|
#include "OTA.h"
|
||||||
|
|
||||||
#include <esp_spi_flash.h> // needed for reading ESP32 chip attributes
|
#include <esp_spi_flash.h> // needed for reading ESP32 chip attributes
|
||||||
#include <esp_event_loop.h> // needed for Wifi event handler
|
#include <esp_event_loop.h> // needed for Wifi event handler
|
||||||
|
@ -63,6 +63,9 @@
|
|||||||
#define DISPLAYREFRESH_MS 40 // OLED refresh cycle in ms [default = 40] -> 1000/40 = 25 frames per second
|
#define DISPLAYREFRESH_MS 40 // OLED refresh cycle in ms [default = 40] -> 1000/40 = 25 frames per second
|
||||||
#define HOMECYCLE 30 // house keeping cycle in seconds [default = 30 secs]
|
#define HOMECYCLE 30 // house keeping cycle in seconds [default = 30 secs]
|
||||||
|
|
||||||
|
// OTA settings
|
||||||
|
#define WIFI_MAX_TRY 20 // maximum number of wifi connect attempts for OTA update [default = 20]
|
||||||
|
|
||||||
// LMIC settings
|
// LMIC settings
|
||||||
// define hardware independent LMIC settings here, settings of standard library in /lmic/config.h will be ignored
|
// define hardware independent LMIC settings here, settings of standard library in /lmic/config.h will be ignored
|
||||||
// define hardware specifics settings in platformio.ini as build_flag for hardware environment
|
// define hardware specifics settings in platformio.ini as build_flag for hardware environment
|
||||||
|
Loading…
Reference in New Issue
Block a user