[SYS] Remove unnecessaries ESP8266 ESP32 macros (#1931)
This commit is contained in:
1 parent
2065d57e11
commit
2645928dbd
11 files changed
+324
-505
No files matched your search
+1
-1
@@ -1748,4 +1748,4 @@ build_flags =
|
|||||||
'-DLED_SEND_RECEIVE_ON=0'
|
'-DLED_SEND_RECEIVE_ON=0'
|
||||||
'-DGateway_Name="OMG_ESP32_BLE"'
|
'-DGateway_Name="OMG_ESP32_BLE"'
|
||||||
'-DUSE_BLUFI=1'
|
'-DUSE_BLUFI=1'
|
||||||
custom_description = Regular BLE gateway with adaptive scanning activated, automatically adapts the scan parameters depending on your devices
|
custom_description = Regular BLE gateway based on esp-idf with adaptive scanning activated, automatically adapts the scan parameters depending on your devices
|
||||||
+8
-10
@@ -71,32 +71,30 @@ bool validFrequency(float mhz) {
|
|||||||
int currentReceiver = ACTIVE_NONE;
|
int currentReceiver = ACTIVE_NONE;
|
||||||
|
|
||||||
# if !defined(ZgatewayRFM69) && !defined(ZactuatorSomfy)
|
# if !defined(ZgatewayRFM69) && !defined(ZactuatorSomfy)
|
||||||
# if defined(ESP8266) || defined(ESP32)
|
|
||||||
// Check if a receiver is available
|
// Check if a receiver is available
|
||||||
bool validReceiver(int receiver) {
|
bool validReceiver(int receiver) {
|
||||||
switch (receiver) {
|
switch (receiver) {
|
||||||
# ifdef ZgatewayPilight
|
# ifdef ZgatewayPilight
|
||||||
case ACTIVE_PILIGHT:
|
case ACTIVE_PILIGHT:
|
||||||
return true;
|
return true;
|
||||||
# endif
|
# endif
|
||||||
# ifdef ZgatewayRF
|
# ifdef ZgatewayRF
|
||||||
case ACTIVE_RF:
|
case ACTIVE_RF:
|
||||||
return true;
|
return true;
|
||||||
# endif
|
# endif
|
||||||
# ifdef ZgatewayRTL_433
|
# ifdef ZgatewayRTL_433
|
||||||
case ACTIVE_RTL:
|
case ACTIVE_RTL:
|
||||||
return true;
|
return true;
|
||||||
# endif
|
# endif
|
||||||
# ifdef ZgatewayRF2
|
# ifdef ZgatewayRF2
|
||||||
case ACTIVE_RF2:
|
case ACTIVE_RF2:
|
||||||
return true;
|
return true;
|
||||||
# endif
|
# endif
|
||||||
default:
|
default:
|
||||||
Log.error(F("ERROR: stored receiver %d not available" CR), receiver);
|
Log.error(F("ERROR: stored receiver %d not available" CR), receiver);
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
# endif
|
|
||||||
# endif
|
# endif
|
||||||
|
|
||||||
void disableCurrentReceiver() {
|
void disableCurrentReceiver() {
|
||||||
|
|||||||
+194
-276
File diff suppressed because it is too large.
Load diff
@@ -66,7 +66,6 @@ uint32_t gc_checksum() {
|
|||||||
return checksum;
|
return checksum;
|
||||||
}
|
}
|
||||||
|
|
||||||
# if defined(ESP8266) || defined(ESP32)
|
|
||||||
void eeprom_setup() {
|
void eeprom_setup() {
|
||||||
EEPROM.begin(4096);
|
EEPROM.begin(4096);
|
||||||
pGC = (struct _GLOBAL_CONFIG*)EEPROM.getDataPtr();
|
pGC = (struct _GLOBAL_CONFIG*)EEPROM.getDataPtr();
|
||||||
@@ -84,14 +83,11 @@ void eeprom_setup() {
|
|||||||
EEPROM.commit();
|
EEPROM.commit();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
# endif
|
|
||||||
|
|
||||||
RFM69 radio;
|
RFM69 radio;
|
||||||
|
|
||||||
void setupRFM69(void) {
|
void setupRFM69(void) {
|
||||||
# if defined(ESP8266) || defined(ESP32)
|
|
||||||
eeprom_setup();
|
eeprom_setup();
|
||||||
# endif
|
|
||||||
int freq;
|
int freq;
|
||||||
static const char PROGMEM JSONtemplate[] =
|
static const char PROGMEM JSONtemplate[] =
|
||||||
R"({"msgType":"config","freq":%d,"rfm69hcw":%d,"netid":%d,"power":%d})";
|
R"({"msgType":"config","freq":%d,"rfm69hcw":%d,"netid":%d,"power":%d})";
|
||||||
|
|||||||
@@ -30,12 +30,7 @@
|
|||||||
WeatherStationDataRx wsdr(RF_WS_RECEIVER_GPIO, true);
|
WeatherStationDataRx wsdr(RF_WS_RECEIVER_GPIO, true);
|
||||||
|
|
||||||
void PairedDeviceAdded(byte newID) {
|
void PairedDeviceAdded(byte newID) {
|
||||||
# if defined(ESP8266) || defined(ESP32)
|
|
||||||
Serial.printf("ZgatewayWeatherStation: New device paired %d\r\n", newID);
|
Serial.printf("ZgatewayWeatherStation: New device paired %d\r\n", newID);
|
||||||
# else
|
|
||||||
Serial.print("ZgatewayWeatherStation: New device paired ");
|
|
||||||
Serial.println(newID, DEC);
|
|
||||||
# endif
|
|
||||||
StaticJsonDocument<JSON_MSG_BUFFER> RFdataBuffer;
|
StaticJsonDocument<JSON_MSG_BUFFER> RFdataBuffer;
|
||||||
JsonObject RFdata = RFdataBuffer.to<JsonObject>();
|
JsonObject RFdata = RFdataBuffer.to<JsonObject>();
|
||||||
RFdata["sensor"] = newID;
|
RFdata["sensor"] = newID;
|
||||||
|
|||||||
@@ -480,7 +480,6 @@ void pubMqttDiscovery() {
|
|||||||
"", "", "", "", false, // device name, device manufacturer, device model, device ID, retain
|
"", "", "", "", false, // device name, device manufacturer, device model, device ID, retain
|
||||||
stateClassMeasurement //State Class
|
stateClassMeasurement //State Class
|
||||||
);
|
);
|
||||||
# if defined(ESP8266) || defined(ESP32)
|
|
||||||
createDiscovery("sensor", //set Type
|
createDiscovery("sensor", //set Type
|
||||||
subjectSYStoMQTT, "SYS: Free memory", (char*)getUniqueId("freemem", "").c_str(), //set state_topic,name,uniqueId
|
subjectSYStoMQTT, "SYS: Free memory", (char*)getUniqueId("freemem", "").c_str(), //set state_topic,name,uniqueId
|
||||||
will_Topic, "data_size", "{{ value_json.freemem }}", //set availability_topic,device_class,value_template,
|
will_Topic, "data_size", "{{ value_json.freemem }}", //set availability_topic,device_class,value_template,
|
||||||
@@ -519,7 +518,7 @@ void pubMqttDiscovery() {
|
|||||||
stateClassNone, //State Class
|
stateClassNone, //State Class
|
||||||
"false", "true" //state_off, state_on
|
"false", "true" //state_off, state_on
|
||||||
);
|
);
|
||||||
# ifdef RGB_INDICATORS
|
# ifdef RGB_INDICATORS
|
||||||
createDiscovery("number", //set Type
|
createDiscovery("number", //set Type
|
||||||
subjectSYStoMQTT, "SYS: LED Brightness", (char*)getUniqueId("rgbb", "").c_str(), //set state_topic,name,uniqueId
|
subjectSYStoMQTT, "SYS: LED Brightness", (char*)getUniqueId("rgbb", "").c_str(), //set state_topic,name,uniqueId
|
||||||
will_Topic, "", "{{ (value_json.rgbb/2.55) | round(0) }}", //set availability_topic,device_class,value_template,
|
will_Topic, "", "{{ (value_json.rgbb/2.55) | round(0) }}", //set availability_topic,device_class,value_template,
|
||||||
@@ -529,9 +528,9 @@ void pubMqttDiscovery() {
|
|||||||
"", "", "", "", false, // device name, device manufacturer, device model, device ID, retain,
|
"", "", "", "", false, // device name, device manufacturer, device model, device ID, retain,
|
||||||
stateClassNone //State Class
|
stateClassNone //State Class
|
||||||
);
|
);
|
||||||
# endif
|
# endif
|
||||||
|
|
||||||
# ifdef ZdisplaySSD1306
|
# ifdef ZdisplaySSD1306
|
||||||
createDiscovery("switch", //set Type
|
createDiscovery("switch", //set Type
|
||||||
subjectSSD1306toMQTT, "SSD1306: Control", (char*)getUniqueId("onstate", "").c_str(), //set state_topic,name,uniqueId
|
subjectSSD1306toMQTT, "SSD1306: Control", (char*)getUniqueId("onstate", "").c_str(), //set state_topic,name,uniqueId
|
||||||
will_Topic, "", "{{ value_json.onstate }}", //set availability_topic,device_class,value_template,
|
will_Topic, "", "{{ value_json.onstate }}", //set availability_topic,device_class,value_template,
|
||||||
@@ -561,9 +560,9 @@ void pubMqttDiscovery() {
|
|||||||
"", "", "", "", false, // device name, device manufacturer, device model, device ID, retain
|
"", "", "", "", false, // device name, device manufacturer, device model, device ID, retain
|
||||||
stateClassNone //State Class
|
stateClassNone //State Class
|
||||||
);
|
);
|
||||||
# endif
|
# endif
|
||||||
|
|
||||||
# ifndef ESP32_ETHERNET
|
# ifndef ESP32_ETHERNET
|
||||||
createDiscovery("sensor", //set Type
|
createDiscovery("sensor", //set Type
|
||||||
subjectSYStoMQTT, "SYS: RSSI", (char*)getUniqueId("rssi", "").c_str(), //set state_topic,name,uniqueId
|
subjectSYStoMQTT, "SYS: RSSI", (char*)getUniqueId("rssi", "").c_str(), //set state_topic,name,uniqueId
|
||||||
will_Topic, "signal_strength", "{{ value_json.rssi }}", //set availability_topic,device_class,value_template,
|
will_Topic, "signal_strength", "{{ value_json.rssi }}", //set availability_topic,device_class,value_template,
|
||||||
@@ -573,7 +572,6 @@ void pubMqttDiscovery() {
|
|||||||
"", "", "", "", false, // device name, device manufacturer, device model, device ID, retain
|
"", "", "", "", false, // device name, device manufacturer, device model, device ID, retain
|
||||||
stateClassNone //State Class
|
stateClassNone //State Class
|
||||||
);
|
);
|
||||||
# endif
|
|
||||||
# endif
|
# endif
|
||||||
# if defined(ESP32) && !defined(NO_INT_TEMP_READING)
|
# if defined(ESP32) && !defined(NO_INT_TEMP_READING)
|
||||||
createDiscovery("sensor", //set Type
|
createDiscovery("sensor", //set Type
|
||||||
|
|||||||
@@ -49,12 +49,8 @@
|
|||||||
BME280 mySensor;
|
BME280 mySensor;
|
||||||
|
|
||||||
void setupZsensorBME280() {
|
void setupZsensorBME280() {
|
||||||
# if defined(ESP8266) || defined(ESP32)
|
|
||||||
// Allow custom pins on ESP Platforms
|
// Allow custom pins on ESP Platforms
|
||||||
Wire.begin(BME280_PIN_SDA, BME280_PIN_SCL);
|
Wire.begin(BME280_PIN_SDA, BME280_PIN_SCL);
|
||||||
# else
|
|
||||||
Wire.begin();
|
|
||||||
# endif
|
|
||||||
|
|
||||||
mySensor.settings.commInterface = I2C_MODE;
|
mySensor.settings.commInterface = I2C_MODE;
|
||||||
mySensor.settings.I2CAddress = BME280_i2c_addr;
|
mySensor.settings.I2CAddress = BME280_i2c_addr;
|
||||||
|
|||||||
@@ -57,9 +57,7 @@ void MeasureGPIOInput() {
|
|||||||
if ((millis() - lastDebounceTime) > GPIOInputDebounceDelay) {
|
if ((millis() - lastDebounceTime) > GPIOInputDebounceDelay) {
|
||||||
// whatever the reading is at, it's been there for longer than the debounce
|
// whatever the reading is at, it's been there for longer than the debounce
|
||||||
// delay, so take it as the actual current state:
|
// delay, so take it as the actual current state:
|
||||||
# if defined(ESP8266) || defined(ESP32)
|
|
||||||
yield();
|
yield();
|
||||||
# endif
|
|
||||||
# if defined(TRIGGER_GPIO) && INPUT_GPIO == TRIGGER_GPIO && !defined(ESPWifiManualSetup)
|
# if defined(TRIGGER_GPIO) && INPUT_GPIO == TRIGGER_GPIO && !defined(ESPWifiManualSetup)
|
||||||
if (reading == LOW) {
|
if (reading == LOW) {
|
||||||
if (resetTime == 0) {
|
if (resetTime == 0) {
|
||||||
|
|||||||
@@ -49,9 +49,7 @@ void MeasureGPIOKeyCode() {
|
|||||||
{
|
{
|
||||||
// whatever the reading is at, it's been there for longer than the debounce
|
// whatever the reading is at, it's been there for longer than the debounce
|
||||||
// delay, so take it as the actual current state:
|
// delay, so take it as the actual current state:
|
||||||
# if defined(ESP8266) || defined(ESP32)
|
|
||||||
yield();
|
yield();
|
||||||
# endif
|
|
||||||
// if the Input state has changed:
|
// if the Input state has changed:
|
||||||
if (latch > 0 && lastLatchStateGPIOKeyCode != latch) {
|
if (latch > 0 && lastLatchStateGPIOKeyCode != latch) {
|
||||||
int reading = digitalRead(GPIOKeyCode_D0_GPIO) | (digitalRead(GPIOKeyCode_D1_GPIO) << 1) | (digitalRead(GPIOKeyCode_D2_GPIO) << 2);
|
int reading = digitalRead(GPIOKeyCode_D0_GPIO) | (digitalRead(GPIOKeyCode_D1_GPIO) << 1) | (digitalRead(GPIOKeyCode_D2_GPIO) << 2);
|
||||||
|
|||||||
@@ -45,9 +45,7 @@ void MeasureHCSR501() {
|
|||||||
JsonObject HCSR501data = HCSR501dataBuffer.to<JsonObject>();
|
JsonObject HCSR501data = HCSR501dataBuffer.to<JsonObject>();
|
||||||
static int pirState = LOW;
|
static int pirState = LOW;
|
||||||
int PresenceValue = digitalRead(HCSR501_GPIO);
|
int PresenceValue = digitalRead(HCSR501_GPIO);
|
||||||
# if defined(ESP8266) || defined(ESP32)
|
|
||||||
yield();
|
yield();
|
||||||
# endif
|
|
||||||
if (PresenceValue == HIGH) {
|
if (PresenceValue == HIGH) {
|
||||||
if (pirState == LOW) {
|
if (pirState == LOW) {
|
||||||
//turned on
|
//turned on
|
||||||
|
|||||||
+116
-192
@@ -245,7 +245,6 @@ int failure_number_mqtt = 0; // number of failure connecting to MQTT
|
|||||||
unsigned long timer_led_measures = 0;
|
unsigned long timer_led_measures = 0;
|
||||||
static void* eClient = nullptr;
|
static void* eClient = nullptr;
|
||||||
static unsigned long last_ota_activity_millis = 0;
|
static unsigned long last_ota_activity_millis = 0;
|
||||||
#if defined(ESP8266) || defined(ESP32)
|
|
||||||
// Global struct to store live SYS configuration data
|
// Global struct to store live SYS configuration data
|
||||||
SYSConfig_s SYSConfig;
|
SYSConfig_s SYSConfig;
|
||||||
|
|
||||||
@@ -255,7 +254,6 @@ static bool mqtt_cert_validate = MQTT_CERT_VALIDATE_DEFAULT;
|
|||||||
static uint8_t mqtt_ss_index = MQTT_SECURE_SELF_SIGNED_INDEX_DEFAULT;
|
static uint8_t mqtt_ss_index = MQTT_SECURE_SELF_SIGNED_INDEX_DEFAULT;
|
||||||
static String mqtt_cert = "";
|
static String mqtt_cert = "";
|
||||||
static String ota_server_cert = "";
|
static String ota_server_cert = "";
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef ESP32
|
#ifdef ESP32
|
||||||
# include <ArduinoOTA.h>
|
# include <ArduinoOTA.h>
|
||||||
@@ -546,14 +544,11 @@ void pub(const char* topicori, const char* payload, bool retainFlag) {
|
|||||||
void pub(const char* topicori, JsonObject& data) {
|
void pub(const char* topicori, JsonObject& data) {
|
||||||
String dataAsString = "";
|
String dataAsString = "";
|
||||||
bool ret = sensor_Retain;
|
bool ret = sensor_Retain;
|
||||||
|
#if message_UTCtimestamp == true
|
||||||
#if defined(ESP8266) || defined(ESP32)
|
|
||||||
# if message_UTCtimestamp == true
|
|
||||||
data["UTCtime"] = UTCtimestamp();
|
data["UTCtime"] = UTCtimestamp();
|
||||||
# endif
|
#endif
|
||||||
# if message_unixtimestamp == true
|
#if message_unixtimestamp == true
|
||||||
data["unixtime"] = unixtimestamp();
|
data["unixtime"] = unixtimestamp();
|
||||||
# endif
|
|
||||||
#endif
|
#endif
|
||||||
if (data.containsKey("retain") && data["retain"].is<bool>()) {
|
if (data.containsKey("retain") && data["retain"].is<bool>()) {
|
||||||
ret = data["retain"];
|
ret = data["retain"];
|
||||||
@@ -760,26 +755,20 @@ bool cmpToMainTopic(const char* topicOri, const char* toAdd) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void delayWithOTA(long waitMillis) {
|
void delayWithOTA(long waitMillis) {
|
||||||
#if defined(ESP8266) || defined(ESP32)
|
|
||||||
long waitStep = 100;
|
long waitStep = 100;
|
||||||
for (long waitedMillis = 0; waitedMillis < waitMillis; waitedMillis += waitStep) {
|
for (long waitedMillis = 0; waitedMillis < waitMillis; waitedMillis += waitStep) {
|
||||||
# ifndef ESPWifiManualSetup
|
#ifndef ESPWifiManualSetup
|
||||||
# if defined(ESP8266) || defined(ESP32)
|
|
||||||
checkButton(); // check if a reset of wifi/mqtt settings is asked
|
checkButton(); // check if a reset of wifi/mqtt settings is asked
|
||||||
# endif
|
#endif
|
||||||
# endif
|
|
||||||
ArduinoOTA.handle();
|
ArduinoOTA.handle();
|
||||||
# if defined(ZwebUI) && defined(ESP32)
|
#if defined(ZwebUI) && defined(ESP32)
|
||||||
WebUILoop();
|
WebUILoop();
|
||||||
# endif
|
#endif
|
||||||
# ifdef ESP32
|
#ifdef ESP32
|
||||||
//esp_task_wdt_reset();
|
//esp_task_wdt_reset();
|
||||||
# endif
|
#endif
|
||||||
delay(waitStep);
|
delay(waitStep);
|
||||||
}
|
}
|
||||||
#else
|
|
||||||
delay(waitMillis);
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void SYSConfig_init() {
|
void SYSConfig_init() {
|
||||||
@@ -831,9 +820,7 @@ void SYSConfig_load() {}
|
|||||||
|
|
||||||
void connectMQTT() {
|
void connectMQTT() {
|
||||||
#ifndef ESPWifiManualSetup
|
#ifndef ESPWifiManualSetup
|
||||||
# if defined(ESP8266) || defined(ESP32)
|
|
||||||
checkButton(); // check if a reset of wifi/mqtt settings is asked
|
checkButton(); // check if a reset of wifi/mqtt settings is asked
|
||||||
# endif
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
Log.warning(F("MQTT connection..." CR));
|
Log.warning(F("MQTT connection..." CR));
|
||||||
@@ -898,9 +885,7 @@ void connectMQTT() {
|
|||||||
// ... We consider that OTA might be still active, and we sleep for a while, and giving
|
// ... We consider that OTA might be still active, and we sleep for a while, and giving
|
||||||
// OTA chance to proceed (ArduinoOTA.handle())
|
// OTA chance to proceed (ArduinoOTA.handle())
|
||||||
Log.warning(F("OTA might be still active (activity %d ms ago)" CR), millis_since_last_ota);
|
Log.warning(F("OTA might be still active (activity %d ms ago)" CR), millis_since_last_ota);
|
||||||
#if defined(ESP8266) || defined(ESP32)
|
|
||||||
ArduinoOTA.handle();
|
ArduinoOTA.handle();
|
||||||
#endif
|
|
||||||
delay(100);
|
delay(100);
|
||||||
}
|
}
|
||||||
ESPRestart(1);
|
ESPRestart(1);
|
||||||
@@ -1035,15 +1020,14 @@ void setup() {
|
|||||||
SetupIndicatorInfo();
|
SetupIndicatorInfo();
|
||||||
SetupIndicators(); // For RGB Leds
|
SetupIndicators(); // For RGB Leds
|
||||||
|
|
||||||
#if defined(ESP8266) || defined(ESP32)
|
#ifdef ESP8266
|
||||||
# ifdef ESP8266
|
# ifndef ZgatewaySRFB // if we are not in sonoff rf bridge case we apply the ESP8266 GPIO optimization
|
||||||
# ifndef ZgatewaySRFB // if we are not in sonoff rf bridge case we apply the ESP8266 GPIO optimization
|
|
||||||
Serial.end();
|
Serial.end();
|
||||||
Serial.begin(SERIAL_BAUD, SERIAL_8N1, SERIAL_TX_ONLY); // enable on ESP8266 to free some pin
|
Serial.begin(SERIAL_BAUD, SERIAL_8N1, SERIAL_TX_ONLY); // enable on ESP8266 to free some pin
|
||||||
# endif
|
# endif
|
||||||
# elif ESP32
|
#elif ESP32
|
||||||
xQueueMutex = xSemaphoreCreateMutex();
|
xQueueMutex = xSemaphoreCreateMutex();
|
||||||
# if DEFAULT_LOW_POWER_MODE != -1 // don't check preferences value if low power mode is not activated
|
# if DEFAULT_LOW_POWER_MODE != -1 // don't check preferences value if low power mode is not activated
|
||||||
preferences.begin(Gateway_Short_Name, false);
|
preferences.begin(Gateway_Short_Name, false);
|
||||||
if (preferences.isKey("lowpowermode")) {
|
if (preferences.isKey("lowpowermode")) {
|
||||||
lowpowermode = preferences.getUInt("lowpowermode", DEFAULT_LOW_POWER_MODE);
|
lowpowermode = preferences.getUInt("lowpowermode", DEFAULT_LOW_POWER_MODE);
|
||||||
@@ -1051,15 +1035,15 @@ void setup() {
|
|||||||
Log.notice(F("No lowpowermode config to load" CR));
|
Log.notice(F("No lowpowermode config to load" CR));
|
||||||
}
|
}
|
||||||
preferences.end();
|
preferences.end();
|
||||||
# endif
|
# endif
|
||||||
# if defined(ZboardM5STICKC) || defined(ZboardM5STICKCP) || defined(ZboardM5STACK) || defined(ZboardM5TOUGH)
|
# if defined(ZboardM5STICKC) || defined(ZboardM5STICKCP) || defined(ZboardM5STACK) || defined(ZboardM5TOUGH)
|
||||||
setupM5();
|
setupM5();
|
||||||
# endif
|
# endif
|
||||||
# if defined(ZdisplaySSD1306)
|
# if defined(ZdisplaySSD1306)
|
||||||
setupSSD1306();
|
setupSSD1306();
|
||||||
modules.add(ZdisplaySSD1306);
|
modules.add(ZdisplaySSD1306);
|
||||||
# endif
|
|
||||||
# endif
|
# endif
|
||||||
|
#endif
|
||||||
|
|
||||||
Log.notice(F("OpenMQTTGateway Version: " OMG_VERSION CR));
|
Log.notice(F("OpenMQTTGateway Version: " OMG_VERSION CR));
|
||||||
|
|
||||||
@@ -1067,82 +1051,74 @@ void setup() {
|
|||||||
* Deep-sleep for the ESP8266 & ESP32 we need some form of indicator that we have posted the measurements and am ready to deep sleep.
|
* Deep-sleep for the ESP8266 & ESP32 we need some form of indicator that we have posted the measurements and am ready to deep sleep.
|
||||||
* When woken set back to false.
|
* When woken set back to false.
|
||||||
*/
|
*/
|
||||||
# if defined(DEEP_SLEEP_IN_US) || defined(ESP32_EXT0_WAKE_PIN)
|
#if defined(DEEP_SLEEP_IN_US) || defined(ESP32_EXT0_WAKE_PIN)
|
||||||
ready_to_sleep = false;
|
ready_to_sleep = false;
|
||||||
# endif
|
#endif
|
||||||
|
|
||||||
# ifdef DEEP_SLEEP_IN_US
|
#ifdef DEEP_SLEEP_IN_US
|
||||||
# ifdef ESP8266
|
# ifdef ESP8266
|
||||||
Log.notice(F("Setting wake pin for deep sleep." CR));
|
Log.notice(F("Setting wake pin for deep sleep." CR));
|
||||||
pinMode(ESP8266_DEEP_SLEEP_WAKE_PIN, WAKEUP_PULLUP);
|
pinMode(ESP8266_DEEP_SLEEP_WAKE_PIN, WAKEUP_PULLUP);
|
||||||
# endif
|
# endif
|
||||||
# ifdef ESP32
|
# ifdef ESP32
|
||||||
Log.notice(F("Setting duration for deep sleep." CR));
|
Log.notice(F("Setting duration for deep sleep." CR));
|
||||||
if (esp_sleep_enable_timer_wakeup(DEEP_SLEEP_IN_US) != ESP_OK) {
|
if (esp_sleep_enable_timer_wakeup(DEEP_SLEEP_IN_US) != ESP_OK) {
|
||||||
Log.error(F("Failed to set deep sleep duration." CR));
|
Log.error(F("Failed to set deep sleep duration." CR));
|
||||||
}
|
}
|
||||||
# endif
|
|
||||||
# endif
|
# endif
|
||||||
|
#endif
|
||||||
|
|
||||||
# ifdef ESP32_EXT0_WAKE_PIN
|
#ifdef ESP32_EXT0_WAKE_PIN
|
||||||
Log.notice(F("Setting EXT0 Wakeup for deep sleep." CR));
|
Log.notice(F("Setting EXT0 Wakeup for deep sleep." CR));
|
||||||
if (esp_sleep_enable_ext0_wakeup(ESP32_EXT0_WAKE_PIN, ESP32_EXT0_WAKE_PIN_STATE) != ESP_OK) {
|
if (esp_sleep_enable_ext0_wakeup(ESP32_EXT0_WAKE_PIN, ESP32_EXT0_WAKE_PIN_STATE) != ESP_OK) {
|
||||||
Log.error(F("Failed to set deep sleep EXT0 Wakeup." CR));
|
Log.error(F("Failed to set deep sleep EXT0 Wakeup." CR));
|
||||||
}
|
}
|
||||||
# endif
|
#endif
|
||||||
# ifdef ESP32
|
#ifdef ESP32
|
||||||
//esp_task_wdt_init(GeneralTimeOut, true); //enable panic so ESP32 restarts
|
//esp_task_wdt_init(GeneralTimeOut, true); //enable panic so ESP32 restarts
|
||||||
# endif
|
#endif
|
||||||
/*
|
/*
|
||||||
The 2 modules below are not connection dependent so start them before the connectivity functions
|
The 2 modules below are not connection dependent so start them before the connectivity functions
|
||||||
Note that the ONOFF module need to start after the RN8209 so that the overCurrent function is launched after the setup of the sensor
|
Note that the ONOFF module need to start after the RN8209 so that the overCurrent function is launched after the setup of the sensor
|
||||||
*/
|
*/
|
||||||
# ifdef ZsensorRN8209
|
#ifdef ZsensorRN8209
|
||||||
setupRN8209();
|
setupRN8209();
|
||||||
modules.add(ZsensorRN8209);
|
modules.add(ZsensorRN8209);
|
||||||
# endif
|
#endif
|
||||||
# ifdef ZactuatorONOFF
|
#ifdef ZactuatorONOFF
|
||||||
setupONOFF();
|
setupONOFF();
|
||||||
modules.add(ZactuatorONOFF);
|
modules.add(ZactuatorONOFF);
|
||||||
# endif
|
#endif
|
||||||
|
|
||||||
# if defined(ESPWifiManualSetup)
|
#if defined(ESPWifiManualSetup)
|
||||||
setup_wifi();
|
setup_wifi();
|
||||||
# else
|
#else
|
||||||
if (loadConfigFromFlash()) {
|
if (loadConfigFromFlash()) {
|
||||||
Log.notice(F("Config loaded from flash" CR));
|
Log.notice(F("Config loaded from flash" CR));
|
||||||
# ifdef ESP32_ETHERNET
|
# ifdef ESP32_ETHERNET
|
||||||
setup_ethernet_esp32();
|
setup_ethernet_esp32();
|
||||||
# endif
|
# endif
|
||||||
if (!failSafeMode && !ethConnected) setupwifi(false);
|
if (!failSafeMode && !ethConnected) setupwifi(false);
|
||||||
} else {
|
} else {
|
||||||
# ifdef ESP32_ETHERNET
|
# ifdef ESP32_ETHERNET
|
||||||
setup_ethernet_esp32();
|
setup_ethernet_esp32();
|
||||||
# endif
|
# endif
|
||||||
Log.notice(F("No config in flash, launching wifi manager" CR));
|
Log.notice(F("No config in flash, launching wifi manager" CR));
|
||||||
// In failSafeMode we don't want to setup wifi manager as it has already been done before
|
// In failSafeMode we don't want to setup wifi manager as it has already been done before
|
||||||
if (!failSafeMode) setupwifi(false);
|
if (!failSafeMode) setupwifi(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
# endif
|
#endif
|
||||||
Log.trace(F("OpenMQTTGateway mac: %s" CR), WiFi.macAddress().c_str());
|
Log.trace(F("OpenMQTTGateway mac: %s" CR), WiFi.macAddress().c_str());
|
||||||
Log.trace(F("OpenMQTTGateway ip: %s" CR), WiFi.localIP().toString().c_str());
|
Log.trace(F("OpenMQTTGateway ip: %s" CR), WiFi.localIP().toString().c_str());
|
||||||
|
|
||||||
setOTA();
|
setOTA();
|
||||||
#else // In case of arduino platform
|
|
||||||
|
|
||||||
//Launch serial for debugging purposes
|
|
||||||
Serial.begin(SERIAL_BAUD);
|
|
||||||
//Begining ethernet connection in case of Arduino + W5100
|
|
||||||
setup_ethernet();
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(ZwebUI) && defined(ESP32)
|
#if defined(ZwebUI) && defined(ESP32)
|
||||||
WebUISetup();
|
WebUISetup();
|
||||||
modules.add(ZwebUI);
|
modules.add(ZwebUI);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(ESP8266) || defined(ESP32)
|
|
||||||
if (mqtt_secure) {
|
if (mqtt_secure) {
|
||||||
eClient = new WiFiClientSecure;
|
eClient = new WiFiClientSecure;
|
||||||
if (mqtt_cert_validate) {
|
if (mqtt_cert_validate) {
|
||||||
@@ -1154,12 +1130,9 @@ void setup() {
|
|||||||
} else {
|
} else {
|
||||||
eClient = new WiFiClient;
|
eClient = new WiFiClient;
|
||||||
}
|
}
|
||||||
#else
|
|
||||||
eClient = new EthernetClient;
|
|
||||||
#endif
|
|
||||||
client.setClient(*(Client*)eClient);
|
client.setClient(*(Client*)eClient);
|
||||||
|
|
||||||
#if defined(MDNS_SD) && (defined(ESP8266) || defined(ESP32))
|
#if defined(MDNS_SD)
|
||||||
Log.trace(F("Connecting to MQTT by mDNS without MQTT hostname" CR));
|
Log.trace(F("Connecting to MQTT by mDNS without MQTT hostname" CR));
|
||||||
connectMQTTmdns();
|
connectMQTTmdns();
|
||||||
#else
|
#else
|
||||||
@@ -1336,28 +1309,27 @@ void setup() {
|
|||||||
Log.notice(F("************** Setup OpenMQTTGateway end **************" CR));
|
Log.notice(F("************** Setup OpenMQTTGateway end **************" CR));
|
||||||
}
|
}
|
||||||
|
|
||||||
#if defined(ESP8266) || defined(ESP32)
|
|
||||||
// Bypass for ESP not reconnecting automaticaly the second time https://github.com/espressif/arduino-esp32/issues/2501
|
// Bypass for ESP not reconnecting automaticaly the second time https://github.com/espressif/arduino-esp32/issues/2501
|
||||||
bool wifi_reconnect_bypass() {
|
bool wifi_reconnect_bypass() {
|
||||||
# if defined(ESP32) && defined(USE_BLUFI)
|
#if defined(ESP32) && defined(USE_BLUFI)
|
||||||
extern bool omg_blufi_ble_connected;
|
extern bool omg_blufi_ble_connected;
|
||||||
if (omg_blufi_ble_connected) {
|
if (omg_blufi_ble_connected) {
|
||||||
Log.notice(F("BLUFI is connected, bypassing wifi reconnect" CR));
|
Log.notice(F("BLUFI is connected, bypassing wifi reconnect" CR));
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
# endif
|
#endif
|
||||||
uint8_t wifi_autoreconnect_cnt = 0;
|
uint8_t wifi_autoreconnect_cnt = 0;
|
||||||
# ifdef ESP32
|
#ifdef ESP32
|
||||||
while (WiFi.status() != WL_CONNECTED && wifi_autoreconnect_cnt < maxConnectionRetryNetwork) {
|
while (WiFi.status() != WL_CONNECTED && wifi_autoreconnect_cnt < maxConnectionRetryNetwork) {
|
||||||
# else
|
#else
|
||||||
while (WiFi.waitForConnectResult() != WL_CONNECTED && wifi_autoreconnect_cnt < maxConnectionRetryNetwork) {
|
while (WiFi.waitForConnectResult() != WL_CONNECTED && wifi_autoreconnect_cnt < maxConnectionRetryNetwork) {
|
||||||
# endif
|
#endif
|
||||||
Log.notice(F("Attempting Wifi connection with saved AP: %d" CR), wifi_autoreconnect_cnt);
|
Log.notice(F("Attempting Wifi connection with saved AP: %d" CR), wifi_autoreconnect_cnt);
|
||||||
|
|
||||||
WiFi.begin();
|
WiFi.begin();
|
||||||
# if (defined(ESP8266) || defined(ESP32)) && (defined(WifiGMode) || defined(WifiPower))
|
#if defined(WifiGMode) || defined(WifiPower)
|
||||||
setESPWifiProtocolTxPower();
|
setESPWifiProtocolTxPower();
|
||||||
# endif
|
#endif
|
||||||
delay(1000);
|
delay(1000);
|
||||||
wifi_autoreconnect_cnt++;
|
wifi_autoreconnect_cnt++;
|
||||||
}
|
}
|
||||||
@@ -1383,12 +1355,12 @@ void setOTA() {
|
|||||||
ErrorIndicatorON();
|
ErrorIndicatorON();
|
||||||
SendReceiveIndicatorON();
|
SendReceiveIndicatorON();
|
||||||
last_ota_activity_millis = millis();
|
last_ota_activity_millis = millis();
|
||||||
# ifdef ESP32
|
#ifdef ESP32
|
||||||
ProcessLock = true;
|
ProcessLock = true;
|
||||||
# ifdef ZgatewayBT
|
# ifdef ZgatewayBT
|
||||||
stopProcessing();
|
stopProcessing();
|
||||||
# endif
|
|
||||||
# endif
|
# endif
|
||||||
|
#endif
|
||||||
lpDisplayPrint("OTA in progress");
|
lpDisplayPrint("OTA in progress");
|
||||||
});
|
});
|
||||||
ArduinoOTA.onEnd([]() {
|
ArduinoOTA.onEnd([]() {
|
||||||
@@ -1401,9 +1373,9 @@ void setOTA() {
|
|||||||
});
|
});
|
||||||
ArduinoOTA.onProgress([](unsigned int progress, unsigned int total) {
|
ArduinoOTA.onProgress([](unsigned int progress, unsigned int total) {
|
||||||
Log.trace(F("Progress: %u%%\r" CR), (progress / (total / 100)));
|
Log.trace(F("Progress: %u%%\r" CR), (progress / (total / 100)));
|
||||||
# ifdef ESP32
|
#ifdef ESP32
|
||||||
//esp_task_wdt_reset();
|
//esp_task_wdt_reset();
|
||||||
# endif
|
#endif
|
||||||
last_ota_activity_millis = millis();
|
last_ota_activity_millis = millis();
|
||||||
});
|
});
|
||||||
ArduinoOTA.onError([](ota_error_t error) {
|
ArduinoOTA.onError([](ota_error_t error) {
|
||||||
@@ -1429,25 +1401,25 @@ void setOTA() {
|
|||||||
void setupTLS(bool self_signed, uint8_t index) {
|
void setupTLS(bool self_signed, uint8_t index) {
|
||||||
configTime(0, 0, NTP_SERVER);
|
configTime(0, 0, NTP_SERVER);
|
||||||
WiFiClientSecure* sClient = (WiFiClientSecure*)eClient;
|
WiFiClientSecure* sClient = (WiFiClientSecure*)eClient;
|
||||||
# if MQTT_SECURE_SELF_SIGNED
|
#if MQTT_SECURE_SELF_SIGNED
|
||||||
if (self_signed) {
|
if (self_signed) {
|
||||||
Log.notice(F("Using self signed cert index %u" CR), index);
|
Log.notice(F("Using self signed cert index %u" CR), index);
|
||||||
# if defined(ESP32)
|
# if defined(ESP32)
|
||||||
sClient->setCACert(certs_array[index].server_cert);
|
sClient->setCACert(certs_array[index].server_cert);
|
||||||
# if AWS_IOT
|
# if AWS_IOT
|
||||||
if (strcmp(mqtt_port, "443") == 0) {
|
if (strcmp(mqtt_port, "443") == 0) {
|
||||||
sClient->setAlpnProtocols(alpnProtocols);
|
sClient->setAlpnProtocols(alpnProtocols);
|
||||||
}
|
}
|
||||||
# endif
|
# endif
|
||||||
# if MQTT_SECURE_SELF_SIGNED_CLIENT
|
# if MQTT_SECURE_SELF_SIGNED_CLIENT
|
||||||
sClient->setCertificate(certs_array[index].client_cert);
|
sClient->setCertificate(certs_array[index].client_cert);
|
||||||
sClient->setPrivateKey(certs_array[index].client_key);
|
sClient->setPrivateKey(certs_array[index].client_key);
|
||||||
# endif
|
# endif
|
||||||
# elif defined(ESP8266)
|
# elif defined(ESP8266)
|
||||||
caCert.append(certs_array[index].server_cert);
|
caCert.append(certs_array[index].server_cert);
|
||||||
sClient->setTrustAnchors(&caCert);
|
sClient->setTrustAnchors(&caCert);
|
||||||
sClient->setBufferSizes(512, 512);
|
sClient->setBufferSizes(512, 512);
|
||||||
# if MQTT_SECURE_SELF_SIGNED_CLIENT
|
# if MQTT_SECURE_SELF_SIGNED_CLIENT
|
||||||
if (pClCert != nullptr) {
|
if (pClCert != nullptr) {
|
||||||
delete pClCert;
|
delete pClCert;
|
||||||
}
|
}
|
||||||
@@ -1457,32 +1429,27 @@ void setupTLS(bool self_signed, uint8_t index) {
|
|||||||
pClCert = new X509List(certs_array[index].client_cert);
|
pClCert = new X509List(certs_array[index].client_cert);
|
||||||
pClKey = new PrivateKey(certs_array[index].client_key);
|
pClKey = new PrivateKey(certs_array[index].client_key);
|
||||||
sClient->setClientRSACert(pClCert, pClKey);
|
sClient->setClientRSACert(pClCert, pClKey);
|
||||||
# endif
|
|
||||||
# endif
|
# endif
|
||||||
} else
|
|
||||||
# endif
|
# endif
|
||||||
|
} else
|
||||||
|
#endif
|
||||||
{
|
{
|
||||||
if (mqtt_cert.length() > 0) {
|
if (mqtt_cert.length() > 0) {
|
||||||
# if defined(ESP32)
|
#if defined(ESP32)
|
||||||
sClient->setCACert(mqtt_cert.c_str());
|
sClient->setCACert(mqtt_cert.c_str());
|
||||||
} else {
|
} else {
|
||||||
sClient->setCACert(certificate);
|
sClient->setCACert(certificate);
|
||||||
}
|
}
|
||||||
# elif defined(ESP8266)
|
#elif defined(ESP8266)
|
||||||
caCert.append(mqtt_cert.c_str());
|
caCert.append(mqtt_cert.c_str());
|
||||||
} else {
|
} else {
|
||||||
caCert.append(certificate);
|
caCert.append(certificate);
|
||||||
}
|
}
|
||||||
sClient->setTrustAnchors(&caCert);
|
sClient->setTrustAnchors(&caCert);
|
||||||
sClient->setBufferSizes(512, 512);
|
sClient->setBufferSizes(512, 512);
|
||||||
# endif
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#else
|
|
||||||
bool wifi_reconnect_bypass() {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Reboot for Reason Codes
|
Reboot for Reason Codes
|
||||||
@@ -1495,7 +1462,6 @@ bool wifi_reconnect_bypass() {
|
|||||||
7 - Parameters changed
|
7 - Parameters changed
|
||||||
8 - not enough memory to pursue
|
8 - not enough memory to pursue
|
||||||
*/
|
*/
|
||||||
#if defined(ESP8266) || defined(ESP32)
|
|
||||||
void ESPRestart(byte reason) {
|
void ESPRestart(byte reason) {
|
||||||
delay(1000);
|
delay(1000);
|
||||||
StaticJsonDocument<128> jsonBuffer;
|
StaticJsonDocument<128> jsonBuffer;
|
||||||
@@ -1505,15 +1471,12 @@ void ESPRestart(byte reason) {
|
|||||||
jsondata["uptime"] = uptime();
|
jsondata["uptime"] = uptime();
|
||||||
pub(subjectLOGtoMQTT, jsondata);
|
pub(subjectLOGtoMQTT, jsondata);
|
||||||
Log.warning(F("Rebooting for reason code %d" CR), reason);
|
Log.warning(F("Rebooting for reason code %d" CR), reason);
|
||||||
# if defined(ESP32)
|
#if defined(ESP32)
|
||||||
ESP.restart();
|
ESP.restart();
|
||||||
# elif defined(ESP8266)
|
#elif defined(ESP8266)
|
||||||
ESP.reset();
|
ESP.reset();
|
||||||
# endif
|
|
||||||
}
|
|
||||||
#else
|
|
||||||
void ESPRestart(byte reason) {}
|
|
||||||
#endif
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
#if defined(ESPWifiManualSetup)
|
#if defined(ESPWifiManualSetup)
|
||||||
void setup_wifi() {
|
void setup_wifi() {
|
||||||
@@ -1568,7 +1531,7 @@ void setup_wifi() {
|
|||||||
displayPrint("Wifi connected");
|
displayPrint("Wifi connected");
|
||||||
}
|
}
|
||||||
|
|
||||||
#elif defined(ESP8266) || defined(ESP32)
|
#else
|
||||||
|
|
||||||
WiFiManager wifiManager;
|
WiFiManager wifiManager;
|
||||||
|
|
||||||
@@ -1983,33 +1946,9 @@ void WiFiEvent(WiFiEvent_t event) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
# endif
|
# endif
|
||||||
#else // Arduino case
|
|
||||||
void setup_ethernet() {
|
|
||||||
# ifdef NetworkAdvancedSetup
|
|
||||||
IPAddress ip_adress;
|
|
||||||
IPAddress gateway_adress;
|
|
||||||
IPAddress subnet_adress;
|
|
||||||
IPAddress dns_adress;
|
|
||||||
ip.fromString(NET_IP);
|
|
||||||
gateway.fromString(NET_GW);
|
|
||||||
subnet.fromString(NET_MASK);
|
|
||||||
Dns.fromString(NET_DNS);
|
|
||||||
|
|
||||||
Log.trace(F("Adv eth cfg" CR));
|
|
||||||
Ethernet.begin(mac, ip, Dns, gateway, subnet);
|
|
||||||
# else
|
|
||||||
Log.trace(F("Spl eth cfg" CR));
|
|
||||||
Ethernet.begin(mac, ip);
|
|
||||||
# endif
|
|
||||||
if (Ethernet.hardwareStatus() == EthernetNoHardware) {
|
|
||||||
Log.error(F("Ethernet shield was not found." CR));
|
|
||||||
} else {
|
|
||||||
Log.trace(F("ip: %s " CR), Ethernet.localIP());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(MDNS_SD) && (defined(ESP8266) || defined(ESP32))
|
#if defined(MDNS_SD)
|
||||||
void connectMQTTmdns() {
|
void connectMQTTmdns() {
|
||||||
Log.trace(F("Browsing for MQTT service" CR));
|
Log.trace(F("Browsing for MQTT service" CR));
|
||||||
int n = MDNS.queryService("mqtt", "tcp");
|
int n = MDNS.queryService("mqtt", "tcp");
|
||||||
@@ -2033,9 +1972,7 @@ void connectMQTTmdns() {
|
|||||||
|
|
||||||
void loop() {
|
void loop() {
|
||||||
#ifndef ESPWifiManualSetup
|
#ifndef ESPWifiManualSetup
|
||||||
# if defined(ESP8266) || defined(ESP32)
|
|
||||||
checkButton(); // check if a reset of wifi/mqtt settings is asked
|
checkButton(); // check if a reset of wifi/mqtt settings is asked
|
||||||
# endif
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef ESP32
|
#ifdef ESP32
|
||||||
@@ -2051,15 +1988,11 @@ void loop() {
|
|||||||
SendReceiveIndicatorOFF();
|
SendReceiveIndicatorOFF();
|
||||||
}
|
}
|
||||||
|
|
||||||
#if defined(ESP8266) || defined(ESP32)
|
|
||||||
if (ethConnected || WiFi.status() == WL_CONNECTED) {
|
if (ethConnected || WiFi.status() == WL_CONNECTED) {
|
||||||
if (ethConnected && WiFi.status() == WL_CONNECTED) {
|
if (ethConnected && WiFi.status() == WL_CONNECTED) {
|
||||||
WiFi.disconnect(); // we disconnect the wifi as we are connected to ethernet
|
WiFi.disconnect(); // we disconnect the wifi as we are connected to ethernet
|
||||||
}
|
}
|
||||||
ArduinoOTA.handle();
|
ArduinoOTA.handle();
|
||||||
#else
|
|
||||||
if ((Ethernet.hardwareStatus() != EthernetW5100 && Ethernet.linkStatus() == LinkON) || (Ethernet.hardwareStatus() == EthernetW5100)) { //we are able to detect disconnection only on w5200 and w5500
|
|
||||||
#endif
|
|
||||||
failure_number_ntwk = 0;
|
failure_number_ntwk = 0;
|
||||||
#if defined(ZwebUI) && defined(ESP32)
|
#if defined(ZwebUI) && defined(ESP32)
|
||||||
WebUILoop();
|
WebUILoop();
|
||||||
@@ -2105,10 +2038,8 @@ void loop() {
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
if (now > (timer_sys_checks + (TimeBetweenCheckingSYS * 1000)) || !timer_sys_checks) {
|
if (now > (timer_sys_checks + (TimeBetweenCheckingSYS * 1000)) || !timer_sys_checks) {
|
||||||
#if defined(ESP8266) || defined(ESP32)
|
#if message_UTCtimestamp || message_unixtimestamp
|
||||||
# if message_UTCtimestamp || message_unixtimestamp
|
|
||||||
syncNTP();
|
syncNTP();
|
||||||
# endif
|
|
||||||
#endif
|
#endif
|
||||||
if (!timer_sys_checks) { // Update check at start up only
|
if (!timer_sys_checks) { // Update check at start up only
|
||||||
#if defined(ESP32) && defined(MQTT_HTTPS_FW_UPDATE)
|
#if defined(ESP32) && defined(MQTT_HTTPS_FW_UPDATE)
|
||||||
@@ -2324,7 +2255,6 @@ float intTemperatureRead() {
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(ESP8266) || defined(ESP32)
|
|
||||||
void syncNTP() {
|
void syncNTP() {
|
||||||
configTime(0, 0, NTP_SERVER);
|
configTime(0, 0, NTP_SERVER);
|
||||||
time_t now = time(nullptr);
|
time_t now = time(nullptr);
|
||||||
@@ -2359,21 +2289,19 @@ String UTCtimestamp() {
|
|||||||
void eraseAndRestart() {
|
void eraseAndRestart() {
|
||||||
Log.trace(F("Formatting requested, result: %d" CR), SPIFFS.format());
|
Log.trace(F("Formatting requested, result: %d" CR), SPIFFS.format());
|
||||||
|
|
||||||
# if defined(ESP8266)
|
#if defined(ESP8266)
|
||||||
WiFi.disconnect(true);
|
WiFi.disconnect(true);
|
||||||
# ifndef ESPWifiManualSetup
|
# ifndef ESPWifiManualSetup
|
||||||
wifiManager.resetSettings();
|
wifiManager.resetSettings();
|
||||||
# endif
|
# endif
|
||||||
delay(5000);
|
delay(5000);
|
||||||
ESP.reset();
|
ESP.reset();
|
||||||
# else
|
#else
|
||||||
//esp_task_wdt_delete(NULL);
|
//esp_task_wdt_delete(NULL);
|
||||||
nvs_flash_erase();
|
nvs_flash_erase();
|
||||||
ESP.restart();
|
ESP.restart();
|
||||||
# endif
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
String stateMeasures() {
|
String stateMeasures() {
|
||||||
StaticJsonDocument<JSON_MSG_BUFFER> SYSdata;
|
StaticJsonDocument<JSON_MSG_BUFFER> SYSdata;
|
||||||
@@ -2388,41 +2316,40 @@ String stateMeasures() {
|
|||||||
SYSdata["disc"] = SYSConfig.discovery;
|
SYSdata["disc"] = SYSConfig.discovery;
|
||||||
SYSdata["ohdisc"] = SYSConfig.ohdiscovery;
|
SYSdata["ohdisc"] = SYSConfig.ohdiscovery;
|
||||||
#endif
|
#endif
|
||||||
#if defined(ESP8266) || defined(ESP32)
|
|
||||||
SYSdata["env"] = ENV_NAME;
|
SYSdata["env"] = ENV_NAME;
|
||||||
uint32_t freeMem;
|
uint32_t freeMem;
|
||||||
uint32_t minFreeMem;
|
uint32_t minFreeMem;
|
||||||
freeMem = ESP.getFreeHeap();
|
freeMem = ESP.getFreeHeap();
|
||||||
# ifdef ZgatewayRTL_433
|
#ifdef ZgatewayRTL_433
|
||||||
// Some RTL_433 decoders have memory leak, this is a temporary workaround
|
// Some RTL_433 decoders have memory leak, this is a temporary workaround
|
||||||
if (freeMem < MinimumMemory) {
|
if (freeMem < MinimumMemory) {
|
||||||
Log.error(F("Not enough memory %d, restarting" CR), freeMem);
|
Log.error(F("Not enough memory %d, restarting" CR), freeMem);
|
||||||
ESPRestart(8);
|
ESPRestart(8);
|
||||||
}
|
}
|
||||||
# endif
|
#endif
|
||||||
SYSdata["freemem"] = freeMem;
|
SYSdata["freemem"] = freeMem;
|
||||||
SYSdata["mqttp"] = mqtt_port;
|
SYSdata["mqttp"] = mqtt_port;
|
||||||
SYSdata["mqtts"] = mqtt_secure;
|
SYSdata["mqtts"] = mqtt_secure;
|
||||||
SYSdata["msgprc"] = queueLengthSum;
|
SYSdata["msgprc"] = queueLengthSum;
|
||||||
SYSdata["msgblck"] = blockedMessages;
|
SYSdata["msgblck"] = blockedMessages;
|
||||||
SYSdata["maxq"] = maxQueueLength;
|
SYSdata["maxq"] = maxQueueLength;
|
||||||
# ifdef ESP32
|
#ifdef ESP32
|
||||||
minFreeMem = ESP.getMinFreeHeap();
|
minFreeMem = ESP.getMinFreeHeap();
|
||||||
SYSdata["minmem"] = minFreeMem;
|
SYSdata["minmem"] = minFreeMem;
|
||||||
# ifndef NO_INT_TEMP_READING
|
# ifndef NO_INT_TEMP_READING
|
||||||
SYSdata["tempc"] = round2(intTemperatureRead());
|
SYSdata["tempc"] = round2(intTemperatureRead());
|
||||||
# endif
|
|
||||||
SYSdata["freestck"] = uxTaskGetStackHighWaterMark(NULL);
|
|
||||||
# endif
|
# endif
|
||||||
|
SYSdata["freestck"] = uxTaskGetStackHighWaterMark(NULL);
|
||||||
|
#endif
|
||||||
|
|
||||||
SYSdata["eth"] = ethConnected;
|
SYSdata["eth"] = ethConnected;
|
||||||
if (ethConnected) {
|
if (ethConnected) {
|
||||||
# ifdef ESP32_ETHERNET
|
#ifdef ESP32_ETHERNET
|
||||||
SYSdata["mac"] = (char*)ETH.macAddress().c_str();
|
SYSdata["mac"] = (char*)ETH.macAddress().c_str();
|
||||||
SYSdata["ip"] = ip2CharArray(ETH.localIP());
|
SYSdata["ip"] = ip2CharArray(ETH.localIP());
|
||||||
ETH.fullDuplex() ? SYSdata["fd"] = (bool)"true" : SYSdata["fd"] = (bool)"false";
|
ETH.fullDuplex() ? SYSdata["fd"] = (bool)"true" : SYSdata["fd"] = (bool)"false";
|
||||||
SYSdata["linkspeed"] = (int)ETH.linkSpeed();
|
SYSdata["linkspeed"] = (int)ETH.linkSpeed();
|
||||||
# endif
|
#endif
|
||||||
} else {
|
} else {
|
||||||
SYSdata["rssi"] = (long)WiFi.RSSI();
|
SYSdata["rssi"] = (long)WiFi.RSSI();
|
||||||
SYSdata["SSID"] = (char*)WiFi.SSID().c_str();
|
SYSdata["SSID"] = (char*)WiFi.SSID().c_str();
|
||||||
@@ -2431,7 +2358,6 @@ String stateMeasures() {
|
|||||||
SYSdata["mac"] = (char*)WiFi.macAddress().c_str();
|
SYSdata["mac"] = (char*)WiFi.macAddress().c_str();
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
|
||||||
#ifdef ZgatewayBT
|
#ifdef ZgatewayBT
|
||||||
# ifdef ESP32
|
# ifdef ESP32
|
||||||
SYSdata["lowpowermode"] = (int)lowpowermode;
|
SYSdata["lowpowermode"] = (int)lowpowermode;
|
||||||
@@ -2860,50 +2786,49 @@ void MQTTtoSYS(char* topicOri, JsonObject& SYSdata) { // json object decoding
|
|||||||
if (cmpToMainTopic(topicOri, subjectMQTTtoSYSset)) {
|
if (cmpToMainTopic(topicOri, subjectMQTTtoSYSset)) {
|
||||||
bool restartESP = false;
|
bool restartESP = false;
|
||||||
Log.trace(F("MQTTtoSYS json" CR));
|
Log.trace(F("MQTTtoSYS json" CR));
|
||||||
#if defined(ESP8266) || defined(ESP32)
|
|
||||||
if (SYSdata.containsKey("cmd")) {
|
if (SYSdata.containsKey("cmd")) {
|
||||||
const char* cmd = SYSdata["cmd"];
|
const char* cmd = SYSdata["cmd"];
|
||||||
Log.notice(F("Command: %s" CR), cmd);
|
Log.notice(F("Command: %s" CR), cmd);
|
||||||
if (strstr(cmd, restartCmd) != NULL) { //restart
|
if (strstr(cmd, restartCmd) != NULL) { //restart
|
||||||
ESPRestart(5);
|
ESPRestart(5);
|
||||||
} else if (strstr(cmd, eraseCmd) != NULL) { //erase and restart
|
} else if (strstr(cmd, eraseCmd) != NULL) { //erase and restart
|
||||||
# ifndef ESPWifiManualSetup
|
#ifndef ESPWifiManualSetup
|
||||||
setupwifi(true);
|
setupwifi(true);
|
||||||
# endif
|
#endif
|
||||||
} else if (strstr(cmd, statusCmd) != NULL) { //erase and restart
|
} else if (strstr(cmd, statusCmd) != NULL) { //erase and restart
|
||||||
stateMeasures();
|
stateMeasures();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
# ifdef RGB_INDICATORS
|
#ifdef RGB_INDICATORS
|
||||||
if (SYSdata.containsKey("rgbb") && SYSdata["rgbb"].is<float>()) {
|
if (SYSdata.containsKey("rgbb") && SYSdata["rgbb"].is<float>()) {
|
||||||
if (SYSdata["rgbb"] >= 0 && SYSdata["rgbb"] <= 255) {
|
if (SYSdata["rgbb"] >= 0 && SYSdata["rgbb"] <= 255) {
|
||||||
SYSConfig.rgbbrightness = round2(SYSdata["rgbb"]);
|
SYSConfig.rgbbrightness = round2(SYSdata["rgbb"]);
|
||||||
leds.setBrightness(SYSConfig.rgbbrightness);
|
leds.setBrightness(SYSConfig.rgbbrightness);
|
||||||
leds.show();
|
leds.show();
|
||||||
# ifdef ZactuatorONOFF
|
# ifdef ZactuatorONOFF
|
||||||
updatePowerIndicator();
|
updatePowerIndicator();
|
||||||
# endif
|
# endif
|
||||||
Log.notice(F("RGB brightness: %d" CR), SYSConfig.rgbbrightness);
|
Log.notice(F("RGB brightness: %d" CR), SYSConfig.rgbbrightness);
|
||||||
stateMeasures();
|
stateMeasures();
|
||||||
} else {
|
} else {
|
||||||
Log.error(F("RGB brightness value invalid - ignoring command" CR));
|
Log.error(F("RGB brightness value invalid - ignoring command" CR));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
# endif
|
#endif
|
||||||
# ifdef ZmqttDiscovery
|
#ifdef ZmqttDiscovery
|
||||||
if (SYSdata.containsKey("ohdisc") && SYSdata["ohdisc"].is<bool>()) {
|
if (SYSdata.containsKey("ohdisc") && SYSdata["ohdisc"].is<bool>()) {
|
||||||
SYSConfig.ohdiscovery = SYSdata["ohdisc"];
|
SYSConfig.ohdiscovery = SYSdata["ohdisc"];
|
||||||
Log.notice(F("OpenHAB discovery: %T" CR), SYSConfig.ohdiscovery);
|
Log.notice(F("OpenHAB discovery: %T" CR), SYSConfig.ohdiscovery);
|
||||||
stateMeasures();
|
stateMeasures();
|
||||||
}
|
}
|
||||||
# endif
|
#endif
|
||||||
if (SYSdata.containsKey("wifi_ssid") && SYSdata.containsKey("wifi_pass")) {
|
if (SYSdata.containsKey("wifi_ssid") && SYSdata.containsKey("wifi_pass")) {
|
||||||
# ifdef ESP32
|
#ifdef ESP32
|
||||||
ProcessLock = true;
|
ProcessLock = true;
|
||||||
# ifdef ZgatewayBT
|
# ifdef ZgatewayBT
|
||||||
stopProcessing();
|
stopProcessing();
|
||||||
# endif
|
|
||||||
# endif
|
# endif
|
||||||
|
#endif
|
||||||
String prev_ssid = WiFi.SSID();
|
String prev_ssid = WiFi.SSID();
|
||||||
String prev_pass = WiFi.psk();
|
String prev_pass = WiFi.psk();
|
||||||
client.disconnect();
|
client.disconnect();
|
||||||
@@ -2911,18 +2836,18 @@ void MQTTtoSYS(char* topicOri, JsonObject& SYSdata) { // json object decoding
|
|||||||
|
|
||||||
Log.warning(F("Attempting connection to new AP %s" CR), (const char*)SYSdata["wifi_ssid"]);
|
Log.warning(F("Attempting connection to new AP %s" CR), (const char*)SYSdata["wifi_ssid"]);
|
||||||
WiFi.begin((const char*)SYSdata["wifi_ssid"], (const char*)SYSdata["wifi_pass"]);
|
WiFi.begin((const char*)SYSdata["wifi_ssid"], (const char*)SYSdata["wifi_pass"]);
|
||||||
# if (defined(ESP8266) || defined(ESP32)) && (defined(WifiGMode) || defined(WifiPower))
|
#if defined(WifiGMode) || defined(WifiPower)
|
||||||
setESPWifiProtocolTxPower();
|
setESPWifiProtocolTxPower();
|
||||||
# endif
|
#endif
|
||||||
WiFi.waitForConnectResult(WiFi_TimeOut * 1000);
|
WiFi.waitForConnectResult(WiFi_TimeOut * 1000);
|
||||||
|
|
||||||
if (WiFi.status() != WL_CONNECTED) {
|
if (WiFi.status() != WL_CONNECTED) {
|
||||||
Log.error(F("Failed to connect to new AP; falling back" CR));
|
Log.error(F("Failed to connect to new AP; falling back" CR));
|
||||||
WiFi.disconnect(true);
|
WiFi.disconnect(true);
|
||||||
WiFi.begin(prev_ssid.c_str(), prev_pass.c_str());
|
WiFi.begin(prev_ssid.c_str(), prev_pass.c_str());
|
||||||
# if (defined(ESP8266) || defined(ESP32)) && (defined(WifiGMode) || defined(WifiPower))
|
#if defined(WifiGMode) || defined(WifiPower)
|
||||||
setESPWifiProtocolTxPower();
|
setESPWifiProtocolTxPower();
|
||||||
# endif
|
#endif
|
||||||
}
|
}
|
||||||
restartESP = true;
|
restartESP = true;
|
||||||
}
|
}
|
||||||
@@ -2940,13 +2865,13 @@ void MQTTtoSYS(char* topicOri, JsonObject& SYSdata) { // json object decoding
|
|||||||
strncpy(ota_pass, SYSdata["gw_pass"], parameters_size);
|
strncpy(ota_pass, SYSdata["gw_pass"], parameters_size);
|
||||||
restartESP = true;
|
restartESP = true;
|
||||||
}
|
}
|
||||||
# ifndef ESPWifiManualSetup
|
#ifndef ESPWifiManualSetup
|
||||||
saveConfig();
|
saveConfig();
|
||||||
# endif
|
#endif
|
||||||
disconnectClient = true; // trigger reconnect in loop using the new topic/name
|
disconnectClient = true; // trigger reconnect in loop using the new topic/name
|
||||||
}
|
}
|
||||||
|
|
||||||
# ifdef MQTTsetMQTT
|
#ifdef MQTTsetMQTT
|
||||||
if (SYSdata.containsKey("mqtt_user") && SYSdata.containsKey("mqtt_pass")) {
|
if (SYSdata.containsKey("mqtt_user") && SYSdata.containsKey("mqtt_pass")) {
|
||||||
bool update_server = false;
|
bool update_server = false;
|
||||||
bool secure_connect = SYSdata["mqtt_secure"].as<bool>();
|
bool secure_connect = SYSdata["mqtt_secure"].as<bool>();
|
||||||
@@ -2959,7 +2884,7 @@ void MQTTtoSYS(char* topicOri, JsonObject& SYSdata) { // json object decoding
|
|||||||
Log.error(F("mqtt_server provided without mqtt_secure defined - ignoring command" CR));
|
Log.error(F("mqtt_server provided without mqtt_secure defined - ignoring command" CR));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
# if MQTT_SECURE_SELF_SIGNED
|
# if MQTT_SECURE_SELF_SIGNED
|
||||||
if (use_ss_cert) {
|
if (use_ss_cert) {
|
||||||
cert_index = SYSdata["mqtt_cert_index"].as<uint8_t>();
|
cert_index = SYSdata["mqtt_cert_index"].as<uint8_t>();
|
||||||
if (cert_index >= sizeof(certs_array) / sizeof(ss_certs)) {
|
if (cert_index >= sizeof(certs_array) / sizeof(ss_certs)) {
|
||||||
@@ -2967,14 +2892,14 @@ void MQTTtoSYS(char* topicOri, JsonObject& SYSdata) { // json object decoding
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
# endif
|
# endif
|
||||||
|
|
||||||
# ifdef ESP32
|
# ifdef ESP32
|
||||||
ProcessLock = true;
|
ProcessLock = true;
|
||||||
# ifdef ZgatewayBT
|
# ifdef ZgatewayBT
|
||||||
stopProcessing();
|
stopProcessing();
|
||||||
# endif
|
|
||||||
# endif
|
# endif
|
||||||
|
# endif
|
||||||
disconnectClient = false;
|
disconnectClient = false;
|
||||||
client.disconnect();
|
client.disconnect();
|
||||||
update_server = true;
|
update_server = true;
|
||||||
@@ -2996,12 +2921,12 @@ void MQTTtoSYS(char* topicOri, JsonObject& SYSdata) { // json object decoding
|
|||||||
|
|
||||||
client.setServer(SYSdata["mqtt_server"].as<const char*>(), SYSdata["mqtt_port"].as<unsigned int>());
|
client.setServer(SYSdata["mqtt_server"].as<const char*>(), SYSdata["mqtt_port"].as<unsigned int>());
|
||||||
} else {
|
} else {
|
||||||
# ifdef ESP32
|
# ifdef ESP32
|
||||||
ProcessLock = true;
|
ProcessLock = true;
|
||||||
# ifdef ZgatewayBT
|
# ifdef ZgatewayBT
|
||||||
stopProcessing();
|
stopProcessing();
|
||||||
# endif
|
|
||||||
# endif
|
# endif
|
||||||
|
# endif
|
||||||
disconnectClient = false;
|
disconnectClient = false;
|
||||||
client.disconnect();
|
client.disconnect();
|
||||||
}
|
}
|
||||||
@@ -3023,9 +2948,9 @@ void MQTTtoSYS(char* topicOri, JsonObject& SYSdata) { // json object decoding
|
|||||||
delete prev_client;
|
delete prev_client;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
# ifndef ESPWifiManualSetup
|
# ifndef ESPWifiManualSetup
|
||||||
saveConfig();
|
saveConfig();
|
||||||
# endif
|
# endif
|
||||||
} else {
|
} else {
|
||||||
if (update_server) {
|
if (update_server) {
|
||||||
if (prev_client != nullptr) {
|
if (prev_client != nullptr) {
|
||||||
@@ -3045,12 +2970,11 @@ void MQTTtoSYS(char* topicOri, JsonObject& SYSdata) { // json object decoding
|
|||||||
}
|
}
|
||||||
restartESP = true;
|
restartESP = true;
|
||||||
}
|
}
|
||||||
# endif
|
#endif
|
||||||
|
|
||||||
if (disconnectClient) {
|
if (disconnectClient) {
|
||||||
client.disconnect();
|
client.disconnect();
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef ZmqttDiscovery
|
#ifdef ZmqttDiscovery
|
||||||
if (SYSdata.containsKey("disc")) {
|
if (SYSdata.containsKey("disc")) {
|
||||||
@@ -3116,4 +3040,4 @@ String toString(uint32_t input) {
|
|||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
Reference in new issue
Block a user