ESP32 Batch OTA Update System

Global Update Policy

Master Updates Globally: ENABLED

Slave Updates Globally: DISABLED

Policy Code: , Set at: 2025-10-23 09:36:49

This is a global switch. Updates are only offered if enabled AND correctly assigned.
Current Active Assignments by Batch
Batch IDRelease NameM VerS VerAssignedDetails
1 0.0.12 0.0.12 None 2025-10-20 15:26:39
2 0.0.12 0.0.12 None 2025-10-20 15:26:39
7 0.0.12 0.0.12 None 2025-10-20 15:26:39
Firmware Releases
0.0.12 0.0.12 None 2025-10-20 15:26:39
0.0.9 0.0.9 None 2025-09-17 16:53:19
Firmware Rollout Status

Assigned Batches Progress:
Batch ID Total Devices Master Updated (0.0.12) Slave Updated (None)
1 0
0
0
2 0
0
0
7 0
0
0
* Total devices based on ACTIVE devices in `serial_deviceserial` table for that batch.

Assigned Batches Progress:
Batch ID Total Devices Master Updated (0.0.9) Slave Updated (None)
1 0
0
0
2 0
0
0
7 0
0
0
* Total devices based on ACTIVE devices in `serial_deviceserial` table for that batch.
Devices & Firmware Overrides
Clear
UID Serial Batch ID MAC Effective Firmware Assignment Actions
SG_005-5.5.5... SG_005 None 5.5.5.5 None
7YGAMONERVYX... SG006 None 54.43.B2:AB.25:C4 None
G9WX49YRDHVW... SG007 None EC.64.C9.5E.81.EC None
S6VEC0GBNUU7... SG008 None 24.58.7C.E4.11.94 None
5D.4B.49.49.... SG033 None 76.CD.H0.0C.EE.D9 None
23.EF.3C.DD.... SG082 None A1.B2.C3.D4.E5.F6 None
67.EA.D9.F8.... SG088 None AA.BB.CC.DD.EE.FF None
08.D3.3B.4F.... SG093 None 34.CD.B0.0C.EE.84 None
F2.AA.76.AC.... SG094 None A3.F9.4C.2D.B8.71 None
ED.20.8D.C0.... SG096 None 34.CD.B0.0C.EF.28 None
1E.28.79.62.... SG099 None 34.CD.B0.0C.EE.E4 None
E5.9F.AA.B3.... SG100 None 34.CD.B0.0C.EF.8C None
5D.4B.49.49.... SG101 None 32.CD.B0.0C.EE.E4 None
5D.4B.49.49.... SG102 None 66.CD.B0.0C.EE.E4 None
5D.4B.49.49.... SG103 None 66.CD.B0.0C.EE.D9 None
5D.4B.49.49.... SG120 None 76.CD.B0.0C.EE.D9 None
F1.F3.12.57.... SG122 None DC.DA.0C.3B.B3.C8 None
F1.F3.12.57.... SG124 None 34.DD.B0.0C.EE.FC None
0F.FF.3F.BB.... SG125 None 30.ED.A0.21.C9.FC None
8F.65.F8.24.... SG126 None 30.ED.A0.21.C9.C0 None
8F.65.F8.24.... SG128 None 34.DD.B0.0C.EE.FT None
4A.44.78.63.... SG130 None 30.ED.A0.21.C9.80 None
63.C1.A4.CD.... SG131 None 30.ED.A0.21.CA.04 None
SYPZKROSTQHM... SG081 1 90.89.78.67.56.56 Batch: 0.0.12
5B.5D.BB.6D.... SG134 1 30.ED.A0.21.C9.F8 Batch: 0.0.12
8A.D5.FD.FB.... 2C.C8.1B.A2.EA.88 2 2C:C8:1B:A2:EA:88 Batch: 0.0.12
DA.84.4B.5E.... 30.ED.A0.21.CA.2C 2 Batch: 0.0.12
32.70.D7.82.... SG003 2 30.ED.A0.21.CA.2C Batch: 0.0.12
1B.DC.7E.A5.... SG004 2 30.ED.A0.21.CA.08 Batch: 0.0.12
1A.A5.F0.1C.... SG095 2 E4.B0.63.BB.54.E0 Batch: 0.0.12
CB.95.4A.41.... SG098 2 34:CD:B0:0C:EF:8C Batch: 0.0.12
93.08.40.DC.... SG121 2 E4.B0.63.BB.55.54 Batch: 0.0.12
E3.6A.8A.CE.... SG123 2 34.cd.b0.0c.ee.fc Batch: 0.0.12
EB.48.4A.FB.... SG133 2 30.ED.A0.21.C9.E8 Batch: 0.0.12
45.87.04.15.... SG135 2 30.ED.A0.21.CA.3C Batch: 0.0.12
77.6B.65.4A.... SG136 2 30.ED.A0.21.C9.F0 Batch: 0.0.12
42.87.04.15.... SG137 2 30.ED.A0.21.C9.D8 Batch: 0.0.12
96.88.47.A8.... SG149 2 10.20.BA.61.8E.5C Batch: 0.0.12
F0.F1.CD.B3.... SG150 2 10.20.BA.61.8E.40 Batch: 0.0.12
4D.5D.49.06.... SG138 7 10.20.BA.60.74.BC Batch: 0.0.12
64.D1.DB.84.... SG139 7 10.20.BA.60.74.68 Batch: 0.0.12
D0.DD.94.FA.... SG140 7 10.20.BA.60.74.C0 Batch: 0.0.12
82.A5.5E.FF.... SG141 7 10.20.BA.60.74.B8 Batch: 0.0.12
22.ED.FB.7C.... SG142 7 10.20.BA.60.74.B4 Batch: 0.0.12
CA.49.98.FE.... SG143 7 10.20.BA.60.74.70 Batch: 0.0.12
85.53.C8.3D.... SG144 7 10.20.BA.60.74.C8 Batch: 0.0.12
23.F1.42.FF.... SG145 7 10.20.BA.60.74.78 Batch: 0.0.12
D9.1A.88.FC.... SG146 7 10.20.BA.60.74.C4 Batch: 0.0.12
03.7D.25.F0.... SG147 7 10.20.BA.60.74.CC Batch: 0.0.12
01.7E.7A.2D.... SG148 7 64.D1.DB.84.F3.EA Batch: 0.0.12
9C.39.5C.FF.... SG151 7 10.20.BA.61.8E.58 Batch: 0.0.12
B6.8B.4A.E1.... SG152 7 D8.3B.DA.95.50.C4 Batch: 0.0.12
3F.2C.D0.A0.... SG153 7 10.20.BA.61.8E.98 Batch: 0.0.12
A9.A6.A4.A9.... SG154 7 6A.B3.2B.E7.0D.BA Batch: 0.0.12
89.28.C5.F5.... SG155 7 30.ED.A0.21.C9.E4 Batch: 0.0.12
Shows ACTIVE devices from `serial_deviceserial`. Use dropdown to override firmware assignment per device.
API Update Request Log (Since Server Start)
Timestamp UID Batch ID Req M Ver Req S Ver Policy Target M Ver Target S Ver Offered Code Source Release ID
2025-10-23 14:20:40 64.D1.DB.84.... 7 0.0.11 0.0.1 10 0.0.12 None 10 Batch '7' (Release I 47
This log shows API checks since the server last started and is cleared on restart.
API Documentation
Check for Updates
POST /api/check_update
Content-Type: application/json

{
  "uid": "device-unique-id",
  "master_version": "current-master-version",
  "slave_version": "current-slave-version"
}
Response Format (Success)
{
  "update_status": "11", // Example: Master & Slave needed
  "reason": "Update available via Batch 'DEFAULT'.", // Explains outcome
  "master_firmware_url": "http://server/api/firmware/download/master/",
  "slave_firmware_url": "http://server/api/firmware/slave/"
}
Response Format (No Update / Error)
{
  "update_status": "00",
  "reason": "Device up-to-date or update disabled..." // Or other reasons
}
Download Master Firmware
GET /api/firmware/download/master/
Get Slave Firmware Metadata
GET /api/firmware/slave//info
Get Slave Firmware Chunk
GET /api/firmware/slave//chunk/
Report Update Status
POST /api/update_status
Content-Type: application/json

{
  "uid": "device-unique-id",
  "device_type": "master",  // or "slave"
  "status": "SUCCESS",      // or "FAILED"
  "version": "version_after_update_attempt",
  // Optional fields the device *could* send:
  "release_id": 123, // ID of the firmware it attempted
  "batch_id": "DEFAULT" // Batch ID at time of attempt
}