Difference between revisions of "TinyOTA"
		
		
		
		
		
		
		Jump to navigation
		Jump to search
		
				
		
		
		
		
		
		
		
	
| (15 intermediate revisions by the same user not shown) | |||
| Line 10: | Line 10: | ||
|      -D MPU=ESP8266 |      -D MPU=ESP8266 | ||
| − | [env:M3]  | + | [env:ESP32] | 
| + | platform = espressif32 | ||
| + | board = fm-devkit | ||
| + | framework = arduino | ||
| + | monitor_speed = 115200 | ||
| + | build_flags = | ||
| + |     -D MPU=ESP32 | ||
| + | |||
| + | [env:M3]                                    ; THIS ONE ACTUALLY WORKS!!! | ||
| platform = espressif8266 | platform = espressif8266 | ||
| board = d1_mini | board = d1_mini | ||
| Line 19: | Line 27: | ||
|      -D MPU=ESP8266 |      -D MPU=ESP8266 | ||
| − | [env:oops]  | + | [env:oops]                                  ; Use this one to "Monitor" if something borks... | 
| platform = espressif8266 | platform = espressif8266 | ||
| board = d1_mini | board = d1_mini | ||
| Line 29: | Line 37: | ||
| ===TopSecret.h=== | ===TopSecret.h=== | ||
| + | |||
| <syntaxhighlight lang="cpp" line="1"> | <syntaxhighlight lang="cpp" line="1"> | ||
| − | const char *host = " | + | const char *host = "DEVICE NAME"; | 
| const char *ssid = "SSID"; | const char *ssid = "SSID"; | ||
| − | const char *password = " | + | const char *password = "PASSWORD"; | 
| + | </syntaxhighlight> | ||
| + | |||
| + | ===Functions.h=== | ||
| + | |||
| + | <syntaxhighlight lang="cpp" line="1"> | ||
| + | void WiFi_Setup(); | ||
| + | void HTTP_Setup(); | ||
| + | void HTTP_loop(); | ||
| + | void  Actual_Setup(); | ||
| + | void  Actual_loop(); | ||
| </syntaxhighlight> | </syntaxhighlight> | ||
| Line 39: | Line 58: | ||
| ===main.cpp=== | ===main.cpp=== | ||
| − | + | There's not actually very much here. | |
| − | |||
| − | |||
| − | + | Nearly everything is handled in the other CPP files. | |
| + | <syntaxhighlight lang="cpp" line="1"> | ||
| + | #include <Arduino.h> | ||
| − | + | #include "Functions.h" | |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| + | void setup(void) | ||
| + | { | ||
|    Serial.begin(115200); |    Serial.begin(115200); | ||
|    Serial.println(); |    Serial.println(); | ||
| − |    Serial.println("Booting  | + |    Serial.println("Booting Up..."); | 
| − | WiFi_Setup(); | + |   WiFi_Setup(); | 
| + |   HTTP_Setup(); | ||
| + |   Actual_Setup(); | ||
| − | + |    Serial.println("Ready..."); | |
| − | |||
| − | |||
| − | |||
| − | |||
| − |    Serial. | ||
| } | } | ||
| − | void loop(void) { | + | void loop(void) | 
| − | + | { | |
| − | + |    HTTP_loop(); | |
| − | + |   Actual_loop(); | |
| − | |||
| − | |||
| − | |||
| − | |||
| } | } | ||
| </syntaxhighlight> | </syntaxhighlight> | ||
| ===WiFi.cpp=== | ===WiFi.cpp=== | ||
| + | |||
| + | This is where your WiFi gets configured. | ||
| <syntaxhighlight lang="cpp" line="1"> | <syntaxhighlight lang="cpp" line="1"> | ||
| Line 89: | Line 95: | ||
| #include <ESP8266WiFi.h> | #include <ESP8266WiFi.h> | ||
| #include <WiFiClient.h> | #include <WiFiClient.h> | ||
| − | |||
| − | |||
| − | |||
| #elif MPU == ESP32 | #elif MPU == ESP32 | ||
| #include <WiFi.h> | #include <WiFi.h> | ||
| #include <WiFiClient.h> | #include <WiFiClient.h> | ||
| − | |||
| − | |||
| #endif | #endif | ||
| Line 115: | Line 116: | ||
|    Serial.printf("Connected to %s\n", ssid); |    Serial.printf("Connected to %s\n", ssid); | ||
|    Serial.printf("IP address: %s\n", WiFi.localIP().toString().c_str()); |    Serial.printf("IP address: %s\n", WiFi.localIP().toString().c_str()); | ||
| + | } | ||
| + | </syntaxhighlight> | ||
| + | |||
| + | ===HTTP.cpp=== | ||
| + | |||
| + | This is where your HTTP OTA and any other HTTPcode belongs. | ||
| + | |||
| + | <syntaxhighlight lang="cpp" line="1"> | ||
| + | #include <Arduino.h> | ||
| + | |||
| + | #if MPU == ESP8266 | ||
| + | #include <ESP8266WebServer.h> | ||
| + | #include <ESP8266HTTPUpdateServer.h> | ||
| + | |||
| + | ESP8266WebServer httpServer(80); | ||
| + | ESP8266HTTPUpdateServer httpUpdater; | ||
| + | #elif MPU == ESP32 | ||
| + | #include <WebServer.h> | ||
| + | #include <HTTPUpdateServer.h> | ||
| + | |||
| + | WebServer httpServer(80); | ||
| + | HTTPUpdateServer httpUpdater; | ||
| + | #endif | ||
| + | |||
| + | String TestPage = | ||
| + |     "<H1>This</H1>" | ||
| + |     "<H2>is only a</H2>" | ||
| + |     "<H1>TEST!</H1>" | ||
| + |     "<a href='/update'>Update Page</a>"; | ||
| + | void handleRootPath(); | ||
| + | |||
| + | void HTTP_Setup() | ||
| + | { | ||
| + |     httpUpdater.setup(&httpServer); | ||
| + |     httpServer.begin(); | ||
| + | |||
| + |     httpServer.on("/", handleRootPath); | ||
| + | |||
| + |     Serial.printf("HTTPUpdateServer ready! Open http://%s/update in your browser\n", WiFi.localIP().toString().c_str()); | ||
| + | } | ||
| + | |||
| + | void HTTP_loop() | ||
| + | { | ||
| + |     httpServer.handleClient(); | ||
| + | } | ||
| + | |||
| + | void handleRootPath() | ||
| + | { | ||
| + |     //  httpServer.send(200, "text/plain", "Hello world"); | ||
| + |     httpServer.send(200, "text/html", TestPage); | ||
| + | } | ||
| + | </syntaxhighlight> | ||
| + | |||
| + | ===Actual.cpp=== | ||
| + | |||
| + | This is where all the stuff normally found in <code>setup()</code> and <code>loop()</code> of your typical Arduino sketch gets put. | ||
| + | |||
| + | <syntaxhighlight lang="cpp" line="1"> | ||
| + | void  Actual_Setup() | ||
| + | { | ||
| + | |||
| + | } | ||
| + | |||
| + | void  Actual_loop() | ||
| + | { | ||
| + | |||
| } | } | ||
| </syntaxhighlight> | </syntaxhighlight> | ||
Latest revision as of 01:40, 8 May 2021
Contents
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";
Functions.h
1 void WiFi_Setup();
2 void HTTP_Setup();
3 void HTTP_loop();
4 void  Actual_Setup();
5 void  Actual_loop();
The Code Itself
main.cpp
There's not actually very much here.
Nearly everything is handled in the other CPP files.
 1 #include <Arduino.h>
 2 
 3 #include "Functions.h"
 4 
 5 void setup(void)
 6 {
 7   Serial.begin(115200);
 8   Serial.println();
 9   Serial.println("Booting Up...");
10 
11   WiFi_Setup();
12   HTTP_Setup();
13   Actual_Setup();
14 
15   Serial.println("Ready...");
16 }
17 
18 void loop(void)
19 {
20   HTTP_loop();
21   Actual_loop();
22 }
WiFi.cpp
This is where your WiFi gets configured.
 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 }
HTTP.cpp
This is where your HTTP OTA and any other HTTPcode belongs.
 1 #include <Arduino.h>
 2 
 3 #if MPU == ESP8266
 4 #include <ESP8266WebServer.h>
 5 #include <ESP8266HTTPUpdateServer.h>
 6 
 7 ESP8266WebServer httpServer(80);
 8 ESP8266HTTPUpdateServer httpUpdater;
 9 #elif MPU == ESP32
10 #include <WebServer.h>
11 #include <HTTPUpdateServer.h>
12 
13 WebServer httpServer(80);
14 HTTPUpdateServer httpUpdater;
15 #endif
16 
17 String TestPage =
18     "<H1>This</H1>"
19     "<H2>is only a</H2>"
20     "<H1>TEST!</H1>"
21     "<a href='/update'>Update Page</a>";
22 void handleRootPath();
23 
24 void HTTP_Setup()
25 {
26     httpUpdater.setup(&httpServer);
27     httpServer.begin();
28 
29     httpServer.on("/", handleRootPath);
30 
31     Serial.printf("HTTPUpdateServer ready! Open http://%s/update in your browser\n", WiFi.localIP().toString().c_str());
32 }
33 
34 void HTTP_loop()
35 {
36     httpServer.handleClient();
37 }
38 
39 void handleRootPath()
40 {
41     //  httpServer.send(200, "text/plain", "Hello world");
42     httpServer.send(200, "text/html", TestPage);
43 }
Actual.cpp
This is where all the stuff normally found in setup() and loop() of your typical Arduino sketch gets put.
1 void  Actual_Setup()
2 {
3 
4 }
5 
6 void  Actual_loop()
7 {
8     
9 }
