Browse Source

Merge pull request #126 from stefan123t/main

fix #114 ntp server and port in setup
pull/127/head
lumapu 2 years ago
committed by GitHub
parent
commit
2a749f6379
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 23
      tools/esp8266/app.cpp
  2. 10
      tools/esp8266/defines.h
  3. 0
      tools/esp8266/html/convert.py
  4. 2
      tools/esp8266/html/h/setup_html.h
  5. 6
      tools/esp8266/html/setup.html
  6. 4
      tools/esp8266/main.cpp
  7. 6
      tools/esp8266/main.h

23
tools/esp8266/app.cpp

@ -110,7 +110,6 @@ void app::setup(uint32_t timeout) {
mSys->Radio.pinIrq = RF24_IRQ_PIN; mSys->Radio.pinIrq = RF24_IRQ_PIN;
} }
// nrf24 amplifier power // nrf24 amplifier power
mEep->read(ADDR_RF24_AMP_PWR, &mSys->Radio.AmplifierPower); mEep->read(ADDR_RF24_AMP_PWR, &mSys->Radio.AmplifierPower);
@ -125,6 +124,12 @@ void app::setup(uint32_t timeout) {
mSerialDebug = (tmp == 0x01); mSerialDebug = (tmp == 0x01);
mSys->Radio.mSerialDebug = mSerialDebug; mSys->Radio.mSerialDebug = mSerialDebug;
// ntp
char ntpAddr[NTP_ADDR_LEN];
uint16_t ntpPort;
mEep->read(ADDR_NTP_ADDR, ntpAddr, NTP_ADDR_LEN);
mEep->read(ADDR_NTP_PORT, &ntpPort);
// TODO set ntpAddr & ntpPort in main
// mqtt // mqtt
uint16_t mqttPort; uint16_t mqttPort;
@ -379,6 +384,7 @@ void app::loop(void) {
yield(); yield();
if(mSerialDebug) if(mSerialDebug)
DPRINTLN(DBG_DEBUG, F("app:loop WiFi WiFi.status ") + String(WiFi.status()) );
DPRINTLN(DBG_INFO, F("Requesting Inverter SN ") + String(iv->serial.u64, HEX)); DPRINTLN(DBG_INFO, F("Requesting Inverter SN ") + String(iv->serial.u64, HEX));
if(iv->devControlRequest){ if(iv->devControlRequest){
if(mSerialDebug) if(mSerialDebug)
@ -614,6 +620,13 @@ void app::showSetup(void) {
mEep->read(ADDR_SER_DEBUG, &tmp); mEep->read(ADDR_SER_DEBUG, &tmp);
html.replace(F("{SER_DBG_CB}"), (tmp == 0x01) ? "checked" : ""); html.replace(F("{SER_DBG_CB}"), (tmp == 0x01) ? "checked" : "");
char ntpAddr[NTP_ADDR_LEN] = {0};
uint16_t ntpPort;
mEep->read(ADDR_NTP_ADDR, ntpAddr, NTP_ADDR_LEN);
mEep->read(ADDR_NTP_PORT, &ntpPort);
html.replace(F("{NTP_ADDR}"), String(ntpAddr));
html.replace(F("{NTP_PORT}"), String(ntpPort));
char mqttAddr[MQTT_ADDR_LEN] = {0}; char mqttAddr[MQTT_ADDR_LEN] = {0};
uint16_t mqttPort; uint16_t mqttPort;
mEep->read(ADDR_MQTT_ADDR, mqttAddr, MQTT_ADDR_LEN); mEep->read(ADDR_MQTT_ADDR, mqttAddr, MQTT_ADDR_LEN);
@ -961,6 +974,14 @@ void app::saveValues(bool webSend = true) {
mSys->Radio.AmplifierPower = mWeb->arg("rf24Power").toInt() & 0x03; mSys->Radio.AmplifierPower = mWeb->arg("rf24Power").toInt() & 0x03;
mEep->write(ADDR_RF24_AMP_PWR, mSys->Radio.AmplifierPower); mEep->write(ADDR_RF24_AMP_PWR, mSys->Radio.AmplifierPower);
// ntp
char ntpAddr[NTP_ADDR_LEN] = {0};
uint16_t ntpPort;
mWeb->arg("ntpAddr").toCharArray(ntpAddr, NTP_ADDR_LEN);
ntpPort = mWeb->arg("ntpPort").toInt();
mEep->write(ADDR_NTP_ADDR, ntpAddr, NTP_ADDR_LEN);
mEep->write(ADDR_NTP_PORT, ntpPort);
// mqtt // mqtt
char mqttAddr[MQTT_ADDR_LEN] = {0}; char mqttAddr[MQTT_ADDR_LEN] = {0};
uint16_t mqttPort; uint16_t mqttPort;

10
tools/esp8266/defines.h

@ -21,7 +21,7 @@
//------------------------------------- //-------------------------------------
#define VERSION_MAJOR 0 #define VERSION_MAJOR 0
#define VERSION_MINOR 5 #define VERSION_MINOR 5
#define VERSION_PATCH 1 #define VERSION_PATCH 2
//------------------------------------- //-------------------------------------
@ -59,6 +59,9 @@ typedef struct {
#define RF24_AMP_PWR_LEN 1 #define RF24_AMP_PWR_LEN 1
#define NTP_ADDR_LEN 32 // DNS Name
#define NTP_PORT_LEN 2 // uint16_t
#define MQTT_ADDR_LEN 32 // DNS Name #define MQTT_ADDR_LEN 32 // DNS Name
#define MQTT_USER_LEN 16 #define MQTT_USER_LEN 16
#define MQTT_PWD_LEN 32 #define MQTT_PWD_LEN 32
@ -92,7 +95,10 @@ typedef struct {
#define ADDR_INV_MAX_RTRY ADDR_INV_INTERVAL + INV_INTERVAL_LEN #define ADDR_INV_MAX_RTRY ADDR_INV_INTERVAL + INV_INTERVAL_LEN
#define ADDR_INV_PWR_LIM ADDR_INV_MAX_RTRY + INV_MAX_RTRY_LEN #define ADDR_INV_PWR_LIM ADDR_INV_MAX_RTRY + INV_MAX_RTRY_LEN
#define ADDR_MQTT_ADDR ADDR_INV_PWR_LIM + INV_PWR_LIM_LEN #define ADDR_NTP_ADDR ADDR_INV_MAX_RTRY + INV_MAX_RTRY_LEN
#define ADDR_NTP_PORT ADDR_NTP_ADDR + NTP_ADDR_LEN
#define ADDR_MQTT_ADDR ADDR_NTP_PORT + NTP_PORT_LEN
#define ADDR_MQTT_USER ADDR_MQTT_ADDR + MQTT_ADDR_LEN #define ADDR_MQTT_USER ADDR_MQTT_ADDR + MQTT_ADDR_LEN
#define ADDR_MQTT_PWD ADDR_MQTT_USER + MQTT_USER_LEN #define ADDR_MQTT_PWD ADDR_MQTT_USER + MQTT_USER_LEN
#define ADDR_MQTT_TOPIC ADDR_MQTT_PWD + MQTT_PWD_LEN #define ADDR_MQTT_TOPIC ADDR_MQTT_PWD + MQTT_PWD_LEN

0
tools/esp8266/html/convert.py

2
tools/esp8266/html/h/setup_html.h

@ -1,4 +1,4 @@
#ifndef __SETUP_HTML_H__ #ifndef __SETUP_HTML_H__
#define __SETUP_HTML_H__ #define __SETUP_HTML_H__
const char setup_html[] PROGMEM = "<!doctype html><html><head><title>Setup - {DEVICE}</title><link rel=\"stylesheet\" type=\"text/css\" href=\"style.css\"/><meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"><script type=\"text/javascript\">function toggle(name, hide) {var elm = document.getElementsByName(name)[0];if(hide) {if(!elm.classList.contains(\"hide\")) elm.classList.add(\"hide\");}else elm.classList.remove('hide');}function load() {document.querySelectorAll('input[name^=\"inv\"][name$=\"Addr\"]').forEach(elm =>{elm.addEventListener(\"keyup\", (e) =>{serial = elm.value.substring(0,4);iv = elm.name.substring(3,4);max = 0;for(i=0;i<4;i++) {toggle(\"inv\"+iv+\"ModPwr\"+i, true);toggle(\"inv\"+iv+\"ModName\"+i, true);}toggle(\"lbl\"+iv+\"ModPwr\", true);toggle(\"lbl\"+iv+\"ModName\", true);if(serial == \"1161\") max = 4;else if(serial == \"1141\") max = 2;else if(serial == \"1121\") max = 1;for(i=0;i<max;i++) {toggle(\"inv\"+iv+\"ModPwr\"+i, false);toggle(\"inv\"+iv+\"ModName\"+i, false);}if(max != 0) {toggle(\"lbl\"+iv+\"ModPwr\", false);toggle(\"lbl\"+iv+\"ModName\", false);}});evt = document.createEvent(\"HTMLEvents\");evt.initEvent(\"keyup\", false, true);elm.dispatchEvent(evt);});}</script></head><body onload=\"load()\"><h1>Setup</h1><div id=\"setup\" class=\"content\"><div id=\"content\"><p>Enter the credentials to your prefered WiFi station. After rebooting the device tries to connect with this information. </p><form method=\"post\" action=\"{IP}/save\"><p class=\"des\">WiFi</p><label for=\"ssid\">SSID</label><input type=\"text\" class=\"text\" name=\"ssid\" value=\"{SSID}\"/><label for=\"pwd\">Password</label><input type=\"password\" class=\"text\" name=\"pwd\" value=\"{PWD}\"/><p class=\"des\">Device Host Name</p><label for=\"device\">Device Name</label><input type=\"text\" class=\"text\" name=\"device\" value=\"{DEVICE}\"/><a class=\"erase\" href=\"/erase\">ERASE SETTINGS (not WiFi)</a><p class=\"des\">Inverter</p>{INVERTERS}<br/><p class=\"subdes\">General</p><label for=\"invInterval\">Interval [s]</label><input type=\"text\" class=\"text\" name=\"invInterval\" value=\"{INV_INTVL}\"/><label for=\"invRetry\">Max retries per Payload</label><input type=\"text\" class=\"text\" name=\"invRetry\" value=\"{INV_RETRIES}\"/><p class=\"des\">Pinout (Wemos)</p>{PINOUT}<p class=\"des\">Radio (NRF24L01+)</p><label for=\"rf24Power\">Amplifier Power Level</label><select name=\"rf24Power\">{RF24}</select><p class=\"des\">MQTT</p><label for=\"mqttAddr\">Broker / Server IP</label><input type=\"text\" class=\"text\" name=\"mqttAddr\" value=\"{MQTT_ADDR}\"/><label for=\"mqttPort\">Port</label><input type=\"text\" class=\"text\" name=\"mqttPort\" value=\"{MQTT_PORT}\"/><label for=\"mqttUser\">Username (optional)</label><input type=\"text\" class=\"text\" name=\"mqttUser\" value=\"{MQTT_USER}\"/><label for=\"mqttPwd\">Password (optional)</label><input type=\"text\" class=\"text\" name=\"mqttPwd\" value=\"{MQTT_PWD}\"/><label for=\"mqttTopic\">Topic</label><input type=\"text\" class=\"text\" name=\"mqttTopic\" value=\"{MQTT_TOPIC}\"/><label for=\"mqttIntvl\">Interval [s] (read-only)</label><input type=\"text\" class=\"text\" name=\"mqttIntvl\" value=\"{MQTT_INTVL}\" readonly/><p class=\"des\">Serial Console</p><label for=\"serEn\">print inverter data</label><input type=\"checkbox\" class=\"cb\" name=\"serEn\" {SER_VAL_CB}/><br/><label for=\"serDbg\">print RF24 debug</label><input type=\"checkbox\" class=\"cb\" name=\"serDbg\" {SER_DBG_CB}/><br/><label for=\"serIntvl\">Interval [s]</label><input type=\"text\" class=\"text\" name=\"serIntvl\" value=\"{SER_INTVL}\"/><p class=\"des\">&nbsp;</p><label for=\"reboot\">Reboot device after successful save</label><input type=\"checkbox\" class=\"cb\" name=\"reboot\" checked/><input type=\"submit\" value=\"save\" class=\"btn\" /></form></div></div><div id=\"footer\"><p class=\"left\"><a href=\"{IP}/\">Home</a></p><p class=\"left\"><a href=\"{IP}/update\">Update Firmware</a></p><p class=\"right\">AHOY - {VERSION}</p><p class=\"right\"><a href=\"{IP}/factory\">Factory Reset</a></p><p class=\"right\"><a href=\"{IP}/reboot\">Reboot</a></p></div></body></html>"; const char setup_html[] PROGMEM = "<!doctype html><html><head><title>Setup - {DEVICE}</title><link rel=\"stylesheet\" type=\"text/css\" href=\"style.css\"/><meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"><script type=\"text/javascript\">function toggle(name, hide) {var elm = document.getElementsByName(name)[0];if(hide) {if(!elm.classList.contains(\"hide\")) elm.classList.add(\"hide\");}else elm.classList.remove('hide');}function load() {document.querySelectorAll('input[name^=\"inv\"][name$=\"Addr\"]').forEach(elm =>{elm.addEventListener(\"keyup\", (e) =>{serial = elm.value.substring(0,4);iv = elm.name.substring(3,4);max = 0;for(i=0;i<4;i++) {toggle(\"inv\"+iv+\"ModPwr\"+i, true);toggle(\"inv\"+iv+\"ModName\"+i, true);}toggle(\"lbl\"+iv+\"ModPwr\", true);toggle(\"lbl\"+iv+\"ModName\", true);if(serial == \"1161\") max = 4;else if(serial == \"1141\") max = 2;else if(serial == \"1121\") max = 1;for(i=0;i<max;i++) {toggle(\"inv\"+iv+\"ModPwr\"+i, false);toggle(\"inv\"+iv+\"ModName\"+i, false);}if(max != 0) {toggle(\"lbl\"+iv+\"ModPwr\", false);toggle(\"lbl\"+iv+\"ModName\", false);}});evt = document.createEvent(\"HTMLEvents\");evt.initEvent(\"keyup\", false, true);elm.dispatchEvent(evt);});}</script></head><body onload=\"load()\"><h1>Setup</h1><div id=\"setup\" class=\"content\"><div id=\"content\"><p>Enter the credentials to your prefered WiFi station. After rebooting the device tries to connect with this information. </p><form method=\"post\" action=\"{IP}/save\"><p class=\"des\">WiFi</p><label for=\"ssid\">SSID</label><input type=\"text\" class=\"text\" name=\"ssid\" value=\"{SSID}\"/><label for=\"pwd\">Password</label><input type=\"password\" class=\"text\" name=\"pwd\" value=\"{PWD}\"/><p class=\"des\">Device Host Name</p><label for=\"device\">Device Name</label><input type=\"text\" class=\"text\" name=\"device\" value=\"{DEVICE}\"/><a class=\"erase\" href=\"/erase\">ERASE SETTINGS (not WiFi)</a><p class=\"des\">Inverter</p>{INVERTERS}<br/><p class=\"subdes\">General</p><label for=\"invInterval\">Interval [s]</label><input type=\"text\" class=\"text\" name=\"invInterval\" value=\"{INV_INTVL}\"/><label for=\"invRetry\">Max retries per Payload</label><input type=\"text\" class=\"text\" name=\"invRetry\" value=\"{INV_RETRIES}\"/><p class=\"des\">Pinout (Wemos)</p>{PINOUT}<p class=\"des\">Radio (NRF24L01+)</p><label for=\"rf24Power\">Amplifier Power Level</label><select name=\"rf24Power\">{RF24}</select><p class=\"des\">NTP Server</p><label for=\"ntpAddr\">NTP Server / IP</label><input type=\"text\" class=\"text\" name=\"ntpAddr\" value=\"{NTP_ADDR}\"/><label for=\"ntpPort\">NTP Port</label><input type=\"text\" class=\"text\" name=\"ntpPort\" value=\"{NTP_PORT}\"/><p class=\"des\">MQTT</p><label for=\"mqttAddr\">Broker / Server IP</label><input type=\"text\" class=\"text\" name=\"mqttAddr\" value=\"{MQTT_ADDR}\"/><label for=\"mqttPort\">Port</label><input type=\"text\" class=\"text\" name=\"mqttPort\" value=\"{MQTT_PORT}\"/><label for=\"mqttUser\">Username (optional)</label><input type=\"text\" class=\"text\" name=\"mqttUser\" value=\"{MQTT_USER}\"/><label for=\"mqttPwd\">Password (optional)</label><input type=\"text\" class=\"text\" name=\"mqttPwd\" value=\"{MQTT_PWD}\"/><label for=\"mqttTopic\">Topic</label><input type=\"text\" class=\"text\" name=\"mqttTopic\" value=\"{MQTT_TOPIC}\"/><label for=\"mqttIntvl\">Interval [s] (read-only)</label><input type=\"text\" class=\"text\" name=\"mqttIntvl\" value=\"{MQTT_INTVL}\" readonly/><p class=\"des\">Serial Console</p><label for=\"serEn\">print inverter data</label><input type=\"checkbox\" class=\"cb\" name=\"serEn\" {SER_VAL_CB}/><br/><label for=\"serDbg\">print RF24 debug</label><input type=\"checkbox\" class=\"cb\" name=\"serDbg\" {SER_DBG_CB}/><br/><label for=\"serIntvl\">Interval [s]</label><input type=\"text\" class=\"text\" name=\"serIntvl\" value=\"{SER_INTVL}\"/><p class=\"des\">&nbsp;</p><label for=\"reboot\">Reboot device after successful save</label><input type=\"checkbox\" class=\"cb\" name=\"reboot\" checked/><input type=\"submit\" value=\"save\" class=\"btn\" /></form></div></div><div id=\"footer\"><p class=\"left\"><a href=\"{IP}/\">Home</a></p><p class=\"left\"><a href=\"{IP}/update\">Update Firmware</a></p><p class=\"right\">AHOY - {VERSION}</p><p class=\"right\"><a href=\"{IP}/factory\">Factory Reset</a></p><p class=\"right\"><a href=\"{IP}/reboot\">Reboot</a></p></div></body></html>";
#endif /*__SETUP_HTML_H__*/ #endif /*__SETUP_HTML_H__*/

6
tools/esp8266/html/setup.html

@ -83,6 +83,12 @@
<label for="rf24Power">Amplifier Power Level</label> <label for="rf24Power">Amplifier Power Level</label>
<select name="rf24Power">{RF24}</select> <select name="rf24Power">{RF24}</select>
<p class="des">NTP Server</p>
<label for="ntpAddr">NTP Server / IP</label>
<input type="text" class="text" name="ntpAddr" value="{NTP_ADDR}"/>
<label for="ntpPort">NTP Port</label>
<input type="text" class="text" name="ntpPort" value="{NTP_PORT}"/>
<p class="des">MQTT</p> <p class="des">MQTT</p>
<label for="mqttAddr">Broker / Server IP</label> <label for="mqttAddr">Broker / Server IP</label>
<input type="text" class="text" name="mqttAddr" value="{MQTT_ADDR}"/> <input type="text" class="text" name="mqttAddr" value="{MQTT_ADDR}"/>

4
tools/esp8266/main.cpp

@ -396,8 +396,8 @@ time_t Main::getNtpTime(void) {
uint8_t buf[NTP_PACKET_SIZE]; uint8_t buf[NTP_PACKET_SIZE];
uint8_t retry = 0; uint8_t retry = 0;
WiFi.hostByName (TIMESERVER_NAME, timeServer); WiFi.hostByName(NTP_SERVER_NAME, timeServer);
mUdp->begin(TIME_LOCAL_PORT); mUdp->begin(NTP_LOCAL_PORT);
sendNTPpacket(timeServer); sendNTPpacket(timeServer);

6
tools/esp8266/main.h

@ -26,9 +26,9 @@
const byte mDnsPort = 53; const byte mDnsPort = 53;
/* TIMESERVER CONFIG */ /* NTP TIMESERVER CONFIG */
#define TIMESERVER_NAME "pool.ntp.org" #define NTP_SERVER_NAME "pool.ntp.org"
#define TIME_LOCAL_PORT 8888 #define NTP_LOCAL_PORT 8888
#define NTP_PACKET_SIZE 48 #define NTP_PACKET_SIZE 48
#define TIMEZONE 1 // Central European time +1 #define TIMEZONE 1 // Central European time +1

Loading…
Cancel
Save