Zprovozneni prikladu

This commit is contained in:
2021-03-05 07:41:14 +01:00
parent b608d36096
commit 1106aa060a
5 changed files with 42 additions and 73 deletions

View File

@ -8,11 +8,8 @@
# include <NetBIOS.h>
#endif
#include <ArduinoOTA.h>
#include <EEPROM.h>
#include <WiFiConfig.h>
#include <encipheredEEPROMStrings.h>
#define EEPROM_MAGIC 0xdeadbeef
#include <sysvars.hpp>
// Plati pro desticku Witty s modulem ESP-12E
#define PIN_FORCE_CONFIG 4
@ -20,34 +17,24 @@
//#define DEBUG_OUT(a) {}
#define DEBUG_OUT(a) Serial.print(a)
// Definice obsazeni EEPROM
#define elementSize(type, element) sizeof(((type *)0)->element)
#define countof(a) (sizeof(a) / sizeof(a[0]))
typedef struct {
uint32_t magic; // kontrola spravneho obsahu EEPROM
char devname[32 + 2]; // jmeno zarizeni (pro NBNS plati jen 16 znaku)
} eepromconfig_t;
#define EEPROM_SIZE (sizeof(wificonfigarea_t) + sizeof(eepromconfig_t) + 10) // velikost EEPROM oblasti (POZOR!!! zbytecnym zvetsovanim se zaroven zmensuje velikost RAM kvuli zrcadlu!!!)
#define EEPROM_WIFICONFIG_ORIGIN (EEPROM_SIZE - sizeof(wificonfigarea_t)) // pocatek oblasti, pouzivane WiFiConfig (alokovano odzadu)
#define EEPROM_CONFIG_ORIGIN (0)
char WiFiDeviceName[elementSize(eepromconfig_t, devname)]; // misto pro jmeno zarizeni (dodane do DNS, DHCP NBNS apod...)
char WiFiDeviceName[32]; // misto pro jmeno zarizeni (dodane do DNS, DHCP NBNS apod...)
#if defined(ARDUINO_ARCH_ESP8266)
ESP8266WebServer wwwserver(80); // webovy server
#else
WebServer wwwserver(80); // webovy server
#endif
String content;
static char MAINPAGE[] PROGMEM = R"=====(<!DOCTYPE HTML>
<html>
Hello world from ESP8266
<p>
</html>
)=====";
static void handleRoot(void)
{
content = F("<!DOCTYPE HTML>\n<html>Hello world from ESP8266");
content += F("<p>");
content += F("</html>");
wwwserver.send(200, "text/html", content);
wwwserver.send_P(200, "text/html", MAINPAGE);
}
void ICACHE_FLASH_ATTR wcb(wificonfigstate_t state)
@ -82,7 +69,7 @@ void ICACHE_FLASH_ATTR saveDevname(const char *param)
{
String p = param;
EES_storeString(EEPROM_CONFIG_ORIGIN + offsetof(eepromconfig_t, devname), elementSize(eepromconfig_t, devname), p);
svSetV(F("devname"), p);
}
void ICACHE_FLASH_ATTR setup()
@ -90,28 +77,16 @@ void ICACHE_FLASH_ATTR setup()
WiFiConfig wifi; // konfigurace ESP modulu
WiFiConfigUsrParameter devname("devname", "Jméno zařízení", (const char *)WiFiDeviceName, 32, saveDevname);
EEPROM.begin(EEPROM_SIZE); // zahajujeme praci s EEPROM
uint32_t magic;
EEPROM.get(EEPROM_CONFIG_ORIGIN + offsetof(eepromconfig_t, magic), magic);
if (EEPROM_MAGIC != magic) {
// EEPROM ma spatny obsah
for (unsigned int i = 0; i < EEPROM_SIZE; i++)
EEPROM.write(i, 0);
magic = EEPROM_MAGIC;
EEPROM.put(EEPROM_CONFIG_ORIGIN + offsetof(eepromconfig_t, magic), magic);
EEPROM.commit();
}
LittleFS.begin();
pinMode(PIN_FORCE_CONFIG, INPUT_PULLUP); // pin, co slouzi jako vstup tlacitka
int fc = digitalRead(PIN_FORCE_CONFIG); // pozadavek na vynucene vyvolani konfigurace
Serial.begin(115200);
String dn = EES_readString(EEPROM_CONFIG_ORIGIN + offsetof(eepromconfig_t, devname), elementSize(eepromconfig_t, devname));
String dn = svGetV<String>(F("devname"));
strcpy(WiFiDeviceName, dn.c_str());
wifi.addParameter(&devname);
if (WCR_OK != wifi.begin(EEPROM_WIFICONFIG_ORIGIN, fc, wcb)) // startujeme pripojeni
if (WCR_OK != wifi.begin(fc, wcb)) // startujeme pripojeni
ESP.restart();
wwwserver.on("/", handleRoot);