further doing
This commit is contained in:
parent
32f559aeba
commit
db6cd39b01
@ -60,6 +60,35 @@ void brightnessAdjustmentCallback();
|
||||
void brightnessFadingCallback();
|
||||
void iotWebConfLoopCallback();
|
||||
|
||||
|
||||
const char* ntpServer = "pool.ntp.org";
|
||||
const long gmtOffset_sec = 3600; //ToDo changable from user
|
||||
const int daylightOffset_sec = 3600;
|
||||
struct tm timeinfo;
|
||||
|
||||
volatile int currentSec = 59;
|
||||
volatile int currentMin = 1;
|
||||
volatile int currentHour = 2;
|
||||
volatile bool NTPreachable = false;
|
||||
|
||||
volatile int MAX_BRIGHTNESS = 200;
|
||||
#ifdef LDR_PIN
|
||||
// variable for storing the potentiometer value
|
||||
volatile unsigned int ldrValue = 0;
|
||||
volatile unsigned int targetBrightness = MAX_BRIGHTNESS;
|
||||
#endif
|
||||
|
||||
// WebPortal
|
||||
const char thingName[] = "NTP-Clock-RGBLED";
|
||||
const char wifiInitialApPassword[] = "12345678";
|
||||
#define STRING_LEN 63
|
||||
#define NUMBER_LEN 4
|
||||
// -- Maximal length the input-range attributes can have.
|
||||
//#define COLOR_ATTR_LENGTH 60
|
||||
// -- Configuration specific key. The value should be modified if config structure was changed.
|
||||
#define CONFIG_VERSION "V1.1.8"
|
||||
|
||||
|
||||
#ifdef RGBW
|
||||
#define MINIMAL_BRIGHTNESS 5
|
||||
#define LDR_SCALE 4
|
||||
@ -119,9 +148,9 @@ void transformHtmltoStrip(RgbwColor* outputColor, char* sInput) {
|
||||
//Serial.printf("StripColor: R:%i G:%i B:%i W:%i\n", stripColor.R, stripColor.G, stripColor.B, stripColor.W);
|
||||
memcpy(outputColor, &stripColor, sizeof(stripColor));
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
#else
|
||||
#ifndef RGBW
|
||||
#define MINIMAL_BRIGHTNESS 20
|
||||
#define LDR_SCALE 16
|
||||
#define colorSaturation 192
|
||||
@ -169,34 +198,6 @@ void transformHtmltoStrip(RgbColor* outputColor, char* sInput) {
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
const char* ntpServer = "pool.ntp.org";
|
||||
const long gmtOffset_sec = 3600; //ToDo changable from user
|
||||
const int daylightOffset_sec = 3600;
|
||||
struct tm timeinfo;
|
||||
|
||||
volatile int currentSec = 59;
|
||||
volatile int currentMin = 1;
|
||||
volatile int currentHour = 2;
|
||||
volatile bool NTPreachable = false;
|
||||
|
||||
volatile int MAX_BRIGHTNESS = 200;
|
||||
#ifdef LDR_PIN
|
||||
// variable for storing the potentiometer value
|
||||
volatile unsigned int ldrValue = 0;
|
||||
volatile unsigned int targetBrightness = MAX_BRIGHTNESS;
|
||||
#endif
|
||||
|
||||
// WebPortal
|
||||
const char thingName[] = "NTP-Clock-RGBLED";
|
||||
const char wifiInitialApPassword[] = "12345678";
|
||||
#define STRING_LEN 63
|
||||
#define NUMBER_LEN 4
|
||||
// -- Maximal length the input-range attributes can have.
|
||||
//#define COLOR_ATTR_LENGTH 60
|
||||
// -- Configuration specific key. The value should be modified if config structure was changed.
|
||||
#define CONFIG_VERSION "V1.1.8"
|
||||
|
||||
DNSServer dnsServer;
|
||||
WebServer server(80);
|
||||
#ifdef ESP8266
|
||||
@ -279,6 +280,36 @@ iotwebconf::ColorTParameter hourMarkingColorParam =
|
||||
label("Stundenmarkierung").
|
||||
defaultValue("#787878").
|
||||
build();
|
||||
const char CUSTOMHTML_SCRIPT_INNER[] PROGMEM = "\n\
|
||||
function colorCh(id)\n\
|
||||
{\n\
|
||||
var x=document.getElementById(id);\n\
|
||||
var s=document.getElementById(id + 'Val');\n\
|
||||
s.innerHTML = x.value;\n\
|
||||
}\n\n\
|
||||
document.addEventListener('DOMContentLoaded', function(event) {\n\
|
||||
let elements = document.querySelectorAll('input[type=\"password\"]');\n\
|
||||
for (let p of elements) {\n\
|
||||
let btn = document.createElement('INPUT'); btn.type = 'button'; btn.value = '🔓'; btn.style.width = 'auto'; p.style.width = '80%'; p.parentNode.insertBefore(btn,p.nextSibling);\n\
|
||||
btn.onclick = function() { if (p.type === 'password') { p.type = 'text'; btn.value = '🔒'; } else { p.type = 'password'; btn.value = '🔓'; } }\n\
|
||||
};\n\
|
||||
});\n";
|
||||
|
||||
// -- We need to create our custom HtmlFormatProvider to add some javasripts.
|
||||
class CustomHtmlFormatProvider : public iotwebconf::HtmlFormatProvider
|
||||
{
|
||||
protected:
|
||||
String getScriptInner() override
|
||||
{
|
||||
return
|
||||
HtmlFormatProvider::getScriptInner() +
|
||||
String(FPSTR(CUSTOMHTML_SCRIPT_INNER));
|
||||
}
|
||||
|
||||
};
|
||||
// -- Javascript block will be added to the header.
|
||||
//const char CUSTOMHTML_BODY_INNER[] PROGMEM = " <link rel='icon' href='data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 100 100%22><text y=%22.9em%22 font-size=%2290%22>🎯</text></svg>'>";
|
||||
//const char CUSTOMHTML_BODY_INNER[] PROGMEM = " <link rel='icon' src='data:image/png;base64,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'/>";
|
||||
|
||||
// -- An instance must be created from the class defined above.
|
||||
CustomHtmlFormatProvider customHtmlFormatProvider;
|
||||
@ -292,84 +323,3 @@ Task brightnessFading(333, TASK_FOREVER, &brightnessFadingCallback);
|
||||
#endif
|
||||
Task iotwebconfLoop(1000, TASK_FOREVER, &iotWebConfLoopCallback);
|
||||
Scheduler runner;
|
||||
|
||||
void setup() {
|
||||
#ifdef LDR_PIN
|
||||
pinMode(LDR_PIN, INPUT_PULLUP);
|
||||
#endif
|
||||
pinMode(DATA_PIN, OUTPUT);
|
||||
|
||||
Serial.begin(SERIAL_BAUD);
|
||||
Serial.flush();
|
||||
delay(100);
|
||||
Serial.println();
|
||||
Serial.print("\n\n\nCPU Frequency is: ");
|
||||
#ifdef ESP8266
|
||||
Serial.print(ESP.getCpuFreqMHz());
|
||||
Serial.println(" Mhz");
|
||||
Serial.print("Chip ID: ");
|
||||
Serial.println(ESP.getFlashChipId());
|
||||
#elif defined(ESP32)
|
||||
setCpuFrequencyMhz(160);
|
||||
Serial.print(getCpuFrequencyMhz()); //Get CPU clock
|
||||
Serial.println(" Mhz");
|
||||
uint32_t Freq = getXtalFrequencyMhz();
|
||||
Serial.print("XTAL Freq = ");
|
||||
Serial.print(Freq);
|
||||
uint32_t chipId = 0;
|
||||
for (int i = 0; i < 17; i = i + 8) {
|
||||
chipId |= ((ESP.getEfuseMac() >> (40 - i)) & 0xff) << i;
|
||||
}
|
||||
|
||||
Serial.printf("ESP32 Chip model = %s Rev %d\n", ESP.getChipModel(), ESP.getChipRevision());
|
||||
Serial.printf("This chip has %d cores\n", ESP.getChipCores());
|
||||
Serial.print("Chip ID: "); Serial.println(chipId);
|
||||
#endif
|
||||
Serial.print("MAC address: ");
|
||||
Serial.println(WiFi.macAddress()); //Get CPU clock
|
||||
|
||||
#ifdef RGBW
|
||||
Serial.println("RGBW");
|
||||
#else
|
||||
Serial.println("RGB");
|
||||
#endif
|
||||
|
||||
strip.Begin();
|
||||
strip.ClearTo(white);
|
||||
strip.SetBrightness( MINIMAL_BRIGHTNESS );
|
||||
strip.Show();
|
||||
|
||||
runner.init();
|
||||
runner.addTask(ledRefresh);
|
||||
runner.addTask(clockTick);
|
||||
#ifdef LDR_PIN
|
||||
runner.addTask(brightnessAdjustment);
|
||||
runner.addTask(brightnessFading);
|
||||
#endif
|
||||
runner.addTask(bootAnim);
|
||||
runner.addTask(iotwebconfLoop);
|
||||
bootAnim.enable();
|
||||
iotwebconfLoop.enable();
|
||||
|
||||
iotWebConf_Setup();
|
||||
//Serial.end();
|
||||
#ifdef ESP8266
|
||||
ESP.wdtDisable();
|
||||
ESP.wdtEnable(1000);
|
||||
#endif
|
||||
#if defined(ESP32)
|
||||
#endif
|
||||
}
|
||||
|
||||
void loop()
|
||||
{
|
||||
runner.execute();
|
||||
yield();
|
||||
#ifdef ESP8266
|
||||
ESP.wdtFeed();
|
||||
#endif
|
||||
/*
|
||||
while (Serial.available())
|
||||
Serial.read();
|
||||
*/
|
||||
}
|
||||
|
@ -1,33 +1,3 @@
|
||||
const char CUSTOMHTML_SCRIPT_INNER[] PROGMEM = "\n\
|
||||
function colorCh(id)\n\
|
||||
{\n\
|
||||
var x=document.getElementById(id);\n\
|
||||
var s=document.getElementById(id + 'Val');\n\
|
||||
s.innerHTML = x.value;\n\
|
||||
}\n\n\
|
||||
document.addEventListener('DOMContentLoaded', function(event) {\n\
|
||||
let elements = document.querySelectorAll('input[type=\"password\"]');\n\
|
||||
for (let p of elements) {\n\
|
||||
let btn = document.createElement('INPUT'); btn.type = 'button'; btn.value = '🔓'; btn.style.width = 'auto'; p.style.width = '80%'; p.parentNode.insertBefore(btn,p.nextSibling);\n\
|
||||
btn.onclick = function() { if (p.type === 'password') { p.type = 'text'; btn.value = '🔒'; } else { p.type = 'password'; btn.value = '🔓'; } }\n\
|
||||
};\n\
|
||||
});\n";
|
||||
|
||||
// -- We need to create our custom HtmlFormatProvider to add some javasripts.
|
||||
class CustomHtmlFormatProvider : public iotwebconf::HtmlFormatProvider
|
||||
{
|
||||
protected:
|
||||
String getScriptInner() override
|
||||
{
|
||||
return
|
||||
HtmlFormatProvider::getScriptInner() +
|
||||
String(FPSTR(CUSTOMHTML_SCRIPT_INNER));
|
||||
}
|
||||
|
||||
};
|
||||
// -- Javascript block will be added to the header.
|
||||
//const char CUSTOMHTML_BODY_INNER[] PROGMEM = " <link rel='icon' href='data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 100 100%22><text y=%22.9em%22 font-size=%2290%22>🎯</text></svg>'>";
|
||||
//const char CUSTOMHTML_BODY_INNER[] PROGMEM = " <link rel='icon' src='data:image/png;base64,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'/>";
|
||||
|
||||
/**
|
||||
Handle web requests to "/" path.
|
||||
|
81
main.ino
Normal file
81
main.ino
Normal file
@ -0,0 +1,81 @@
|
||||
|
||||
void setup() {
|
||||
#ifdef LDR_PIN
|
||||
pinMode(LDR_PIN, INPUT_PULLUP);
|
||||
#endif
|
||||
pinMode(DATA_PIN, OUTPUT);
|
||||
|
||||
Serial.begin(SERIAL_BAUD);
|
||||
Serial.flush();
|
||||
delay(100);
|
||||
Serial.println();
|
||||
Serial.print("\n\n\nCPU Frequency is: ");
|
||||
#ifdef ESP8266
|
||||
Serial.print(ESP.getCpuFreqMHz());
|
||||
Serial.println(" Mhz");
|
||||
Serial.print("Chip ID: ");
|
||||
Serial.println(ESP.getFlashChipId());
|
||||
#elif defined(ESP32)
|
||||
setCpuFrequencyMhz(160);
|
||||
Serial.print(getCpuFrequencyMhz()); //Get CPU clock
|
||||
Serial.println(" Mhz");
|
||||
uint32_t Freq = getXtalFrequencyMhz();
|
||||
Serial.print("XTAL Freq = ");
|
||||
Serial.print(Freq);
|
||||
uint32_t chipId = 0;
|
||||
for (int i = 0; i < 17; i = i + 8) {
|
||||
chipId |= ((ESP.getEfuseMac() >> (40 - i)) & 0xff) << i;
|
||||
}
|
||||
|
||||
Serial.printf("ESP32 Chip model = %s Rev %d\n", ESP.getChipModel(), ESP.getChipRevision());
|
||||
Serial.printf("This chip has %d cores\n", ESP.getChipCores());
|
||||
Serial.print("Chip ID: "); Serial.println(chipId);
|
||||
#endif
|
||||
Serial.print("MAC address: ");
|
||||
Serial.println(WiFi.macAddress()); //Get CPU clock
|
||||
|
||||
#ifdef RGBW
|
||||
Serial.println("RGBW");
|
||||
#else
|
||||
Serial.println("RGB");
|
||||
#endif
|
||||
|
||||
strip.Begin();
|
||||
strip.ClearTo(white);
|
||||
strip.SetBrightness( MINIMAL_BRIGHTNESS );
|
||||
strip.Show();
|
||||
|
||||
runner.init();
|
||||
runner.addTask(ledRefresh);
|
||||
runner.addTask(clockTick);
|
||||
#ifdef LDR_PIN
|
||||
runner.addTask(brightnessAdjustment);
|
||||
runner.addTask(brightnessFading);
|
||||
#endif
|
||||
runner.addTask(bootAnim);
|
||||
runner.addTask(iotwebconfLoop);
|
||||
bootAnim.enable();
|
||||
iotwebconfLoop.enable();
|
||||
|
||||
iotWebConf_Setup();
|
||||
//Serial.end();
|
||||
#ifdef ESP8266
|
||||
ESP.wdtDisable();
|
||||
ESP.wdtEnable(1000);
|
||||
#endif
|
||||
#if defined(ESP32)
|
||||
#endif
|
||||
}
|
||||
|
||||
void loop()
|
||||
{
|
||||
runner.execute();
|
||||
yield();
|
||||
#ifdef ESP8266
|
||||
ESP.wdtFeed();
|
||||
#endif
|
||||
/*
|
||||
while (Serial.available())
|
||||
Serial.read();
|
||||
*/
|
||||
}
|
Loading…
Reference in New Issue
Block a user