ESP8266_Basic - Library

 


 

Mitlerweile gibt es viele sehr nützliche Librarys für den ESP8266. Damit beim Erstellen des eigenen Sketches nicht jedes mal von vorne begonnen werden muss, machte es Sinn alle Grundfunktionen des ESP8266 in einer Library zusammenzufassen.

Die ESP8266_Basic umfasst die folgenden Grundfunktionen:

 

  • FS-FileSystem zur Ablage der Konfiguration,
  • Accesspoint mit WEB-Interface zur Erstkonfiguration oder falls der WiFi-Connect nicht innerhalb von 10 Sekunden erfolgt,
  • WEB-Interface zum Ändern der aktuellen Konfiguration und zur Statusüberprüfung,
  • OTA-Flashen über WEB-Upload,
  • MQTT publish / subcribe dissector zum besseren handeln der Topics.

 

Der eigene Sketch wird so weitestgehend von den Grundfunktionen entlastet.

 

ESP8266_template.ino

#include <ESP8266_Basic.h>
ESP8266_Basic espClient;
 
void setup() {
  Serial.begin(115200);
  Serial.println("");
 
  espClient.start_WiFi_connections();
}

void loop() {

  espClient.handle_connections();
}

 


 

Downloads

 

Neben der ESP8266_Basic-Library wird noch der MQTT pubsubclient von Nick O'Leary benötigt:

 

 


 

WEB-Interface

 

WEB-Konfiguration

ESP8266 Basic WEB IF

HTTP-Update

ESP8266 Basic HTTP Update

 


 

MQTT Topics

 

Topics::Topics()
{/* MQTT subcribe TopicTree struct !!define TreeDepht in .h!!!
[x] mqttDeviceName
¦
¦-[0] WiFiConfig
¦ ¦-[00] WEBserver
¦ ¦ ¦-[000] Username
¦ ¦ +-[001] Password
¦ ¦-[01] Accesspoint
¦ ¦ ¦-[010] SSID
¦ ¦ +-[011] Password
¦ ¦-[02] WiFi
¦ ¦ ¦-[020] SSID
¦ ¦ ¦-[021] Password
¦ ¦ +-[022] IP
¦ +-[03] MQTT
¦ ¦-[030] Server
¦ ¦-[031] Port
¦ +-[032] Status
¦
¦-[1] Control
¦ ¦-[10] ESP8266
¦ ¦ ¦-[100] Reboot
¦ ¦ +-[101] ShowConfig
*/
sub.E1.count = sub_e1;

sub.E2.count = sub_e2;
sub.E3.count = sub_e3;

sub.E1.item[0] = "WiFiConfig";
sub.E2.item[0][0] = "WEBserver";
sub.E3.item[0][0][0] = "Username";
sub.E3.item[0][0][1] = "Password";
sub.E2.item[0][1] = "Accesspoint";
sub.E3.item[0][1][0] = "SSID";
sub.E3.item[0][1][1] = "Password";
sub.E2.item[0][2] = "WiFi";
sub.E3.item[0][2][0] = "SSID";
sub.E3.item[0][2][1] = "Password";
sub.E3.item[0][2][2] = "IP";
sub.E2.item[0][3] = "MQTT";
sub.E3.item[0][3][0] = "Server";
sub.E3.item[0][3][1] = "Port";
sub.E3.item[0][3][2] = "Status";

sub.E1.item[1] = "Control";
sub.E2.item[1][0] = "ESP8266";
sub.E3.item[1][0][0] = "Reboot";
sub.E3.item[1][0][1] = "ShowConfig";

 

Durch die Struktirierung des TopicTrees können die ankommenden subscribes einfach wieder ausgefiltert werden.

 

if (dissectResult.found){
    if (dissectResult.itemPath == "1/0/0"){
      if (strcmp(value, "Reboot") == 0){
        ESP.reset();
      }
    }
    if (dissectResult.itemPath == "1/0/1"){
      pubConfig();
    }
  }

 


 

FlowChart

 

ESP8266 Basic FlowChart

 


 

Aktuell ist das Ganze noch in der alphaPhase, läuft jedoch schon recht gut, daher habe ich es für erste Tests schon online gestellt.

 

Noch was wichtiges:

Der ESP-Core hat Probleme mit einem ESP.reset() bzw. ESP.restart() nach dem seriellen Flashen.
Als work around muss direkt nach dem seriellen Flashen der ESP einmal über den Reset-Taster neu gstartet werden, dann läuft der Softwarereset nach dem Flashen über OTA oder dem Aufruf über das WEB-IF fehlerfrei durch.

Manchmal muss der ESP aber auch noch durch Wegnahme der Versorgungsspannung resetet werden. Soll ein bekanntes Problem sein.... mal beobachten.

 

 

Kommentare (0)

Cancel or