Difference between revisions of "TinyOTA"

From The TinkerNet Wiki
Jump to navigation Jump to search
 
(14 intermediate revisions by the same user not shown)
Line 10: Line 10:
 
     -D MPU=ESP8266
 
     -D MPU=ESP8266
  
[env:M3]                         // THIS ONE ACTUALLY WORKS!!!
+
[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]                     //  Use this one to "Monitor" if something borks...
+
[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 = "Device Name";
+
const char *host = "DEVICE NAME";
 
const char *ssid = "SSID";
 
const char *ssid = "SSID";
const char *password = "Password";
+
const char *password = "PASSWORD";
 
</syntaxhighlight>
 
</syntaxhighlight>
  
==The Code Itself==
+
===Functions.h===
 
 
===main.cpp===
 
  
 
<syntaxhighlight lang="cpp" line="1">
 
<syntaxhighlight lang="cpp" line="1">
#include <Arduino.h>
+
void WiFi_Setup();
 +
void HTTP_Setup();
 +
void HTTP_loop();
 +
void  Actual_Setup();
 +
void  Actual_loop();
 +
</syntaxhighlight>
  
#include <ESP8266WebServer.h>
+
==The Code Itself==
#include <ESP8266HTTPUpdateServer.h>
 
  
void WiFi_Setup();
+
===main.cpp===
  
 +
There's not actually very much here.
  
ESP8266WebServer httpServer(80);
+
Nearly everything is handled in the other CPP files.
ESP8266HTTPUpdateServer httpUpdater;
 
  
String TestPage =
+
<syntaxhighlight lang="cpp" line="1">
    "<H1>This</H1>"
+
#include <Arduino.h>
    "<H2>is only a</H2>"
 
    "<H1>TEST!</H1>"
 
    "<a href='/update'>Update Page</a>";
 
void handleRootPath();
 
  
void setup(void) {
+
#include "Functions.h"
  
 +
void setup(void)
 +
{
 
   Serial.begin(115200);
 
   Serial.begin(115200);
 
   Serial.println();
 
   Serial.println();
   Serial.println("Booting Sketch...");
+
   Serial.println("Booting Up...");
  
WiFi_Setup();
+
  WiFi_Setup();
 +
  HTTP_Setup();
 +
  Actual_Setup();
  
  httpUpdater.setup(&httpServer);
+
   Serial.println("Ready...");
  httpServer.begin();
 
 
 
httpServer.on("/", handleRootPath);
 
 
 
   Serial.printf("HTTPUpdateServer ready! Open http://%s/update in your browser\n", WiFi.localIP().toString().c_str());
 
 
}
 
}
  
void loop(void) {
+
void loop(void)
   httpServer.handleClient();
+
{
}
+
   HTTP_loop();
 
+
  Actual_loop();
void handleRootPath() {
 
 
  httpServer.send(200, "text/plain", "Hello world");
 
 
 
}
 
}
 
</syntaxhighlight>
 
</syntaxhighlight>
  
 
===WiFi.cpp===
 
===WiFi.cpp===
 +
 +
This is where your WiFi gets configured.
  
 
<syntaxhighlight lang="cpp" line="1">
 
<syntaxhighlight lang="cpp" line="1">
Line 91: Line 95:
 
#include <ESP8266WiFi.h>
 
#include <ESP8266WiFi.h>
 
#include <WiFiClient.h>
 
#include <WiFiClient.h>
 
// #include <ESPAsyncTCP.h>
 
// const char *MPUtype = "ESP8266";
 
 
#elif MPU == ESP32
 
#elif MPU == ESP32
 
#include <WiFi.h>
 
#include <WiFi.h>
 
#include <WiFiClient.h>
 
#include <WiFiClient.h>
// #include <ESPmDNS.h>
 
// const char *MPUtype = "ESP32";
 
 
#endif
 
#endif
  
Line 117: 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 00:40, 8 May 2021

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 }