mirror of
https://github.com/anklimov/lighthub
synced 2025-12-06 11:49:51 +03:00
ip save
This commit is contained in:
@@ -24,7 +24,7 @@
|
|||||||
export FLAGS="$FLAGS -DESP_WIFI_AP=MYAP"
|
export FLAGS="$FLAGS -DESP_WIFI_AP=MYAP"
|
||||||
export FLAGS="$FLAGS -DESP_WIFI_PWD=MYPWD"
|
export FLAGS="$FLAGS -DESP_WIFI_PWD=MYPWD"
|
||||||
export FLAGS="$FLAGS -DDHT_DISABLE"
|
export FLAGS="$FLAGS -DDHT_DISABLE"
|
||||||
export FLAGS="$FLAGS -DW5100_RESET_PIN=5"
|
export FLAGS="$FLAGS -DRESET_PIN=5"
|
||||||
export FLAGS="$FLAGS -DDHCP_RETRY_INTERVAL=60000"
|
export FLAGS="$FLAGS -DDHCP_RETRY_INTERVAL=60000"
|
||||||
export PLATFORMIO_BUILD_FLAGS="$FLAGS"
|
export PLATFORMIO_BUILD_FLAGS="$FLAGS"
|
||||||
echo PLATFORMIO_BUILD_FLAGS=$PLATFORMIO_BUILD_FLAGS
|
echo PLATFORMIO_BUILD_FLAGS=$PLATFORMIO_BUILD_FLAGS
|
||||||
|
|||||||
@@ -215,10 +215,9 @@ lan_status lanLoop() {
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
switch (lanStatus) {
|
switch (lanStatus) {
|
||||||
case INITIAL_STATE: {
|
case INITIAL_STATE:
|
||||||
onInitialStateInitLAN();
|
onInitialStateInitLAN();
|
||||||
break;
|
break;
|
||||||
}
|
|
||||||
|
|
||||||
case HAVE_IP_ADDRESS:
|
case HAVE_IP_ADDRESS:
|
||||||
if (!configOk)
|
if (!configOk)
|
||||||
@@ -382,12 +381,12 @@ void ip_ready_config_loaded_connecting_to_broker() {
|
|||||||
Serial.print(mqttClient.state());
|
Serial.print(mqttClient.state());
|
||||||
Serial.println(F(" try again in 5 seconds"));
|
Serial.println(F(" try again in 5 seconds"));
|
||||||
nextLanCheckTime = millis() + 5000;
|
nextLanCheckTime = millis() + 5000;
|
||||||
#ifdef W5100_RESET_PIN
|
#ifdef RESET_PIN
|
||||||
mqttErrorRate++;
|
mqttErrorRate++;
|
||||||
if(mqttErrorRate>50){
|
if(mqttErrorRate>50){
|
||||||
Serial.print(F("Too many MQTT connection errors. Restart LAN"));
|
Serial.print(F("Too many MQTT connection errors. Restart LAN"));
|
||||||
mqttErrorRate=0;
|
mqttErrorRate=0;
|
||||||
resetW5100();
|
resetHard();
|
||||||
lanStatus=INITIAL_STATE;
|
lanStatus=INITIAL_STATE;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -422,16 +421,16 @@ void onInitialStateInitLAN() {
|
|||||||
IPAddress ip, dns, gw, mask;
|
IPAddress ip, dns, gw, mask;
|
||||||
int res = 1;
|
int res = 1;
|
||||||
Serial.println(F("Starting lan"));
|
Serial.println(F("Starting lan"));
|
||||||
if (loadFlash(OFFSET_IP, ip)) {
|
if (ipLoadFromFlash(OFFSET_IP, ip)) {
|
||||||
Serial.print("Loaded from flash IP:");
|
Serial.print("Loaded from flash IP:");
|
||||||
printIPAddress(ip);
|
printIPAddress(ip);
|
||||||
if (loadFlash(OFFSET_DNS, dns)) {
|
if (ipLoadFromFlash(OFFSET_DNS, dns)) {
|
||||||
Serial.print(" DNS:");
|
Serial.print(" DNS:");
|
||||||
printIPAddress(dns);
|
printIPAddress(dns);
|
||||||
if (loadFlash(OFFSET_GW, gw)) {
|
if (ipLoadFromFlash(OFFSET_GW, gw)) {
|
||||||
Serial.print(" GW:");
|
Serial.print(" GW:");
|
||||||
printIPAddress(gw);
|
printIPAddress(gw);
|
||||||
if (loadFlash(OFFSET_MASK, mask)) {
|
if (ipLoadFromFlash(OFFSET_MASK, mask)) {
|
||||||
Serial.print(" MASK:");
|
Serial.print(" MASK:");
|
||||||
printIPAddress(mask);
|
printIPAddress(mask);
|
||||||
Ethernet.begin(mac, ip, dns, gw, mask);
|
Ethernet.begin(mac, ip, dns, gw, mask);
|
||||||
@@ -440,7 +439,7 @@ void onInitialStateInitLAN() {
|
|||||||
} else Ethernet.begin(mac, ip);
|
} else Ethernet.begin(mac, ip);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
Serial.print("No IP data found in flash");
|
Serial.println("No IP data found in flash");
|
||||||
wdt_dis();
|
wdt_dis();
|
||||||
res = Ethernet.begin(mac, 12000);
|
res = Ethernet.begin(mac, 12000);
|
||||||
wdt_en();
|
wdt_en();
|
||||||
@@ -452,8 +451,8 @@ void onInitialStateInitLAN() {
|
|||||||
Serial.print(F("'ip [ip[,dns[,gw[,subnet]]]]' - set static IP\n"));
|
Serial.print(F("'ip [ip[,dns[,gw[,subnet]]]]' - set static IP\n"));
|
||||||
lanStatus = AWAITING_ADDRESS;//-10;
|
lanStatus = AWAITING_ADDRESS;//-10;
|
||||||
nextLanCheckTime = millis() + DHCP_RETRY_INTERVAL;
|
nextLanCheckTime = millis() + DHCP_RETRY_INTERVAL;
|
||||||
#ifdef W5100_RESET_PIN
|
#ifdef RESET_PIN
|
||||||
resetW5100();
|
resetHard();
|
||||||
#endif
|
#endif
|
||||||
} else {
|
} else {
|
||||||
Serial.print(F("Got IP address:"));
|
Serial.print(F("Got IP address:"));
|
||||||
@@ -467,10 +466,10 @@ void onInitialStateInitLAN() {
|
|||||||
|
|
||||||
void (*softRebootFunc)(void) = 0;
|
void (*softRebootFunc)(void) = 0;
|
||||||
|
|
||||||
void resetW5100() {
|
void resetHard() {
|
||||||
#ifdef W5100_RESET_PIN
|
#ifdef RESET_PIN
|
||||||
Serial.print(F("Reset Wiznet5100 shield with digital pin "));
|
Serial.print(F("Reset Wiznet5100 shield with digital pin "));
|
||||||
Serial.println(QUOTE(W5100_RESET_PIN));
|
Serial.println(QUOTE(RESET_PIN));
|
||||||
delay(50);
|
delay(50);
|
||||||
pinMode(W5100_RESET_PIN, OUTPUT);
|
pinMode(W5100_RESET_PIN, OUTPUT);
|
||||||
digitalWrite(W5100_RESET_PIN,LOW);
|
digitalWrite(W5100_RESET_PIN,LOW);
|
||||||
@@ -727,19 +726,45 @@ void cmdFunctionSave(int arg_cnt, char **args)
|
|||||||
|
|
||||||
void cmdFunctionIp(int arg_cnt, char **args)
|
void cmdFunctionIp(int arg_cnt, char **args)
|
||||||
//(char* tokens)
|
//(char* tokens)
|
||||||
{ IPAddress ip0 (0,0,0,0);
|
{
|
||||||
|
IPAddress ip0(0, 0, 0, 0);
|
||||||
IPAddress ip;
|
IPAddress ip;
|
||||||
DNSClient dns;
|
DNSClient dns;
|
||||||
switch (arg_cnt) {
|
switch (arg_cnt) {
|
||||||
case 5: if (dns.inet_aton(args[4],ip)) saveFlash(OFFSET_MASK,ip); else saveFlash(OFFSET_MASK,ip0);
|
case 5:
|
||||||
case 4: if (dns.inet_aton(args[3],ip)) saveFlash(OFFSET_GW,ip); else saveFlash(OFFSET_GW,ip0);
|
if (dns.inet_aton(args[4], ip)) saveFlash(OFFSET_MASK, ip);
|
||||||
case 3: if (dns.inet_aton(args[2],ip)) saveFlash(OFFSET_DNS,ip); else saveFlash(OFFSET_DNS,ip0);
|
else saveFlash(OFFSET_MASK, ip0);
|
||||||
case 2: if (dns.inet_aton(args[1],ip)) saveFlash(OFFSET_IP,ip); else saveFlash(OFFSET_IP,ip0);
|
case 4:
|
||||||
|
if (dns.inet_aton(args[3], ip)) saveFlash(OFFSET_GW, ip);
|
||||||
|
else saveFlash(OFFSET_GW, ip0);
|
||||||
|
case 3:
|
||||||
|
if (dns.inet_aton(args[2], ip)) saveFlash(OFFSET_DNS, ip);
|
||||||
|
else saveFlash(OFFSET_DNS, ip0);
|
||||||
|
case 2:
|
||||||
|
if (dns.inet_aton(args[1], ip)) saveFlash(OFFSET_IP, ip);
|
||||||
|
else saveFlash(OFFSET_IP, ip0);
|
||||||
break;
|
break;
|
||||||
case 1: //dynamic IP
|
case 1:
|
||||||
saveFlash(OFFSET_IP,ip0);
|
IPAddress current_ip = Ethernet.localIP();
|
||||||
|
IPAddress current_mask = Ethernet.subnetMask();
|
||||||
|
IPAddress current_gw = Ethernet.gatewayIP();
|
||||||
|
IPAddress current_dns = Ethernet.dnsServerIP();
|
||||||
|
saveFlash(OFFSET_IP, current_ip);
|
||||||
|
saveFlash(OFFSET_MASK, current_mask);
|
||||||
|
saveFlash(OFFSET_GW, current_gw);
|
||||||
|
saveFlash(OFFSET_DNS, current_dns);
|
||||||
|
Serial.print(F("Saved current config(ip,dns,gw,subnet):"));
|
||||||
|
printIPAddress(current_ip);
|
||||||
|
Serial.print(F(" ,"));
|
||||||
|
printIPAddress(current_dns);
|
||||||
|
Serial.print(F(" ,"));
|
||||||
|
printIPAddress(current_gw);
|
||||||
|
Serial.print(F(" ,"));
|
||||||
|
printIPAddress(current_mask);
|
||||||
|
Serial.println(F(";"));
|
||||||
|
|
||||||
}
|
}
|
||||||
Serial.println(F("Saved"));
|
Serial.println(F("Saved"));
|
||||||
}
|
}
|
||||||
|
|
||||||
void cmdFunctionClearEEPROM(int arg_cnt, char **args){
|
void cmdFunctionClearEEPROM(int arg_cnt, char **args){
|
||||||
@@ -808,7 +833,7 @@ void saveFlash(short n, IPAddress& ip) {
|
|||||||
for(int i=0;i<4;i++) EEPROM.write(n++,ip[i]);
|
for(int i=0;i<4;i++) EEPROM.write(n++,ip[i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
int loadFlash(short n, IPAddress& ip) {
|
int ipLoadFromFlash(short n, IPAddress &ip) {
|
||||||
for(int i=0;i<4;i++) ip[i]=EEPROM.read(n++);
|
for(int i=0;i<4;i++) ip[i]=EEPROM.read(n++);
|
||||||
if (ip[0] && (ip[0] != 0xff)) return 1;
|
if (ip[0] && (ip[0] != 0xff)) return 1;
|
||||||
return 0;
|
return 0;
|
||||||
@@ -859,7 +884,7 @@ lan_status getConfig(int arg_cnt, char **args)
|
|||||||
if (!root) {
|
if (!root) {
|
||||||
Serial.println(F("Config parsing failed"));
|
Serial.println(F("Config parsing failed"));
|
||||||
nextLanCheckTime = millis() + 15000;
|
nextLanCheckTime = millis() + 15000;
|
||||||
return -11;
|
return READ_RE_CONFIG;//-11;
|
||||||
} else {
|
} else {
|
||||||
// char *outstr = aJson.print(root);
|
// char *outstr = aJson.print(root);
|
||||||
// Serial.println(outstr);
|
// Serial.println(outstr);
|
||||||
@@ -1092,9 +1117,9 @@ void printFirmwareVersionAndBuildOptions() {
|
|||||||
Serial.println(F("(+)SDCARD"));
|
Serial.println(F("(+)SDCARD"));
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef W5100_RESET_PIN
|
#ifdef RESET_PIN
|
||||||
Serial.print(F("(+)HARDRESET on pin="));
|
Serial.print(F("(+)HARDRESET on pin="));
|
||||||
Serial.println(F(QUOTE(W5100_RESET_PIN)));
|
Serial.println(F(QUOTE(RESET_PIN)));
|
||||||
#else
|
#else
|
||||||
Serial.println("(-)HARDRESET, using soft");
|
Serial.println("(-)HARDRESET, using soft");
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -161,7 +161,7 @@ int loadFlash(short n, char *str, short l=32);
|
|||||||
|
|
||||||
void saveFlash(short n, IPAddress& ip);
|
void saveFlash(short n, IPAddress& ip);
|
||||||
|
|
||||||
int loadFlash(short n, IPAddress& ip);
|
int ipLoadFromFlash(short n, IPAddress &ip);
|
||||||
|
|
||||||
lan_status getConfig(int arg_cnt=0, char **args=NULL);
|
lan_status getConfig(int arg_cnt=0, char **args=NULL);
|
||||||
|
|
||||||
@@ -199,7 +199,7 @@ bool IsThermostat(const aJsonObject *item);
|
|||||||
|
|
||||||
bool disabledDisconnected(const aJsonObject *thermoExtensionArray, int thermoLatestCommand);
|
bool disabledDisconnected(const aJsonObject *thermoExtensionArray, int thermoLatestCommand);
|
||||||
|
|
||||||
void resetW5100();
|
void resetHard();
|
||||||
|
|
||||||
void onInitialStateInitLAN();
|
void onInitialStateInitLAN();
|
||||||
|
|
||||||
|
|||||||
@@ -10,8 +10,8 @@
|
|||||||
[platformio]
|
[platformio]
|
||||||
src_dir = lighthub
|
src_dir = lighthub
|
||||||
env_default =
|
env_default =
|
||||||
; megaatmega2560
|
megaatmega2560
|
||||||
due
|
; due
|
||||||
; esp8266
|
; esp8266
|
||||||
; megaatmega2560-5500
|
; megaatmega2560-5500
|
||||||
; due-5500
|
; due-5500
|
||||||
|
|||||||
Reference in New Issue
Block a user