TinyOTA

From The TinkerNet Wiki
Jump to navigation Jump to search

platformio.ini

 1 [env:d1_mini_lite]
 2 platform = espressif8266
 3 board = d1_mini_lite
 4 framework = arduino
 5 monitor_speed = 115200
 6 build_flags =
 7     -D MPU=ESP8266
 8 
 9 [env:ESP32]
10 platform = espressif32
11 board = fm-devkit
12 framework = arduino
13 monitor_speed = 115200
14 build_flags =
15     -D MPU=ESP32
16 
17 [env:M3]                                    ; THIS ONE ACTUALLY WORKS!!!
18 platform = espressif8266
19 board = d1_mini
20 framework = arduino
21 monitor_speed = 115200
22 board_build.ldscript = eagle.flash.1m.ld
23 build_flags =
24     -D MPU=ESP8266
25 
26 [env:oops]                                  ; Use this one to "Monitor" if something borks...
27 platform = espressif8266
28 board = d1_mini
29 framework = arduino
30 monitor_speed = 78400

#includes, Defines, etc...

TopSecret.h

1 const char *host = "DEVICE NAME";
2 const char *ssid = "SSID";
3 const char *password = "PASSWORD";

The Code Itself

main.cpp

 1 #include <Arduino.h>
 2 
 3 /*
 4   To upload through terminal you can use: curl -F "image=@firmware.bin" esp8266-webupdate.local/update
 5 */
 6 
 7 #if MPU == ESP8266
 8 #include <ESP8266WebServer.h>
 9 #include <ESP8266HTTPUpdateServer.h>
10 
11 ESP8266WebServer httpServer(80);
12 ESP8266HTTPUpdateServer httpUpdater;
13 #elif MPU == ESP32
14 #include <WebServer.h>
15 #include <HTTPUpdateServer.h>
16 
17 WebServer httpServer(80);
18 HTTPUpdateServer httpUpdater;
19 #endif
20 
21 void WiFi_Setup();
22 
23 
24 
25 String TestPage =
26     "<H1>This</H1>"
27     "<H2>is only a</H2>"
28     "<H1>TEST!</H1>"
29     "<a href='/update'>Update Page</a>";
30 void handleRootPath();
31 
32 void setup(void) {
33 
34   Serial.begin(115200);
35   Serial.println();
36   Serial.println("Booting Sketch...");
37 
38 WiFi_Setup();
39 
40   httpUpdater.setup(&httpServer);
41   httpServer.begin();
42 
43 httpServer.on("/", handleRootPath);
44 
45   Serial.printf("HTTPUpdateServer ready! Open http://%s/update in your browser\n", WiFi.localIP().toString().c_str());
46 }
47 
48 void loop(void) {
49   httpServer.handleClient();
50 }
51 
52 void handleRootPath() {
53  
54   //  httpServer.send(200, "text/plain", "Hello world");
55    httpServer.send(200, "text/html", TestPage);
56  
57 }

WiFi.cpp

 1 #if MPU == ESP8266
 2 #include <ESP8266WiFi.h>
 3 #include <WiFiClient.h>
 4 #elif MPU == ESP32
 5 #include <WiFi.h>
 6 #include <WiFiClient.h>
 7 #endif
 8 
 9 #include "TopSecret.h"
10 
11 void WiFi_Setup()
12 {
13   WiFi.mode(WIFI_STA);
14   WiFi.begin(ssid, password);
15 
16   // Wait for connection
17   while (WiFi.status() != WL_CONNECTED)
18   {
19     delay(500);
20     Serial.print(".");
21   }
22   Serial.println("");
23   Serial.printf("Connected to %s\n", ssid);
24   Serial.printf("IP address: %s\n", WiFi.localIP().toString().c_str());
25 }