[SYS] Remove unnecessaries ESP8266 ESP32 macros (#1931)

This commit is contained in:
Florian authored and GitHub committed 2024-04-12 17:13:11 -05:00
1 parent 2065d57e11
commit 2645928dbd
11 files changed
+78 -259

No files matched your search

+1 -1
View File
@@ -1748,4 +1748,4 @@ build_flags =
'-DLED_SEND_RECEIVE_ON=0'
'-DGateway_Name="OMG_ESP32_BLE"'
'-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
-2
View File
@@ -71,7 +71,6 @@ bool validFrequency(float mhz) {
int currentReceiver = ACTIVE_NONE;
# if !defined(ZgatewayRFM69) && !defined(ZactuatorSomfy)
# if defined(ESP8266) || defined(ESP32)
// Check if a receiver is available
bool validReceiver(int receiver) {
switch (receiver) {
@@ -97,7 +96,6 @@ bool validReceiver(int receiver) {
return false;
}
# endif
# endif
void disableCurrentReceiver() {
Log.trace(F("disableCurrentReceiver: %d" CR), currentReceiver);
+2 -84
View File
@@ -29,7 +29,6 @@
#ifdef ZgatewayIR
# if defined(ESP8266) || defined(ESP32)
# include <IRrecv.h> // Needed if you want to receive IR commands.
# include <IRremoteESP8266.h>
# include <IRsend.h> // Needed if you want to send IR commands.
@@ -40,11 +39,6 @@ IRrecv irrecv(IR_RECEIVER_GPIO, 1024, 15U, true);
IRrecv irrecv(IR_RECEIVER_GPIO);
# endif
IRsend irsend(IR_EMITTER_GPIO, IR_EMITTER_INVERTED);
# else
# include <IRremote.h>
IRrecv irrecv(IR_RECEIVER_GPIO);
IRsend irsend; //connect IR emitter pin to D9 on arduino, you need to comment #define IR_USE_TIMER2 and uncomment #define IR_USE_TIMER1 on library IRremote.h so as to free pin D3 for RF RECEIVER PIN
# endif
// IR protocol bits definition for Arduino (for ESP8266 they are defined in IRRemoteESP8266.h)
# ifndef NEC_BITS
@@ -98,10 +92,8 @@ uint64_t getUInt64fromHex(char const* str) {
}
void setupIR() {
//IR init parameters
# if defined(ESP8266) || defined(ESP32)
//IR init parameters
irsend.begin();
# endif
irrecv.enableIRIn(); // Start the receiver
@@ -125,35 +117,24 @@ void IRtoMQTT() {
IRdata["value"] = (SIGNAL_SIZE_UL_ULL)(results.value);
IRdata["protocol"] = (int)(results.decode_type);
IRdata["bits"] = (int)(results.bits);
# if defined(ESP8266) || defined(ESP32) //resultToHexidecimal is only available with IRremoteESP8266
IRdata["hex"] = resultToHexidecimal(&results);
IRdata["protocol_name"] = typeToString(results.decode_type, false);
# endif
String rawCode = "";
// Dump data
for (uint16_t i = 1; i < results.rawlen; i++) {
# if defined(ESP8266) || defined(ESP32)
if (i % 100 == 0)
yield(); // Preemptive yield every 100th entry to feed the WDT.
rawCode = rawCode + (results.rawbuf[i] * RAWTICK);
# else
rawCode = rawCode + (results.rawbuf[i] * USECPERTICK);
# endif
if (i < results.rawlen - 1)
rawCode = rawCode + ","; // ',' not needed on last one
}
IRdata["raw"] = rawCode;
// if needed we directly resend the raw code
# ifdef RawDirectForward
# if defined(ESP8266) || defined(ESP32)
uint16_t rawsend[results.rawlen];
for (uint16_t i = 1; i < results.rawlen; i++) {
if (i % 100 == 0)
yield(); // Preemptive yield every 100th entry to feed the WDT.
# else
unsigned int rawsend[results.rawlen];
for (int i = 1; i < results.rawlen; i++) {
# endif
rawsend[i] = results.rawbuf[i];
}
irsend.sendRaw(rawsend, results.rawlen, RawFrequency);
@@ -232,12 +213,8 @@ void MQTTtoIR(char* topicOri, JsonObject& IRdata) {
# ifdef IR_RAW
if (strcmp(protocol_name, "Raw") == 0) { // sending Raw data
Log.trace(F("Raw" CR));
//buffer allocation from char datacallback
# if defined(ESP8266) || defined(ESP32)
//buffer allocation from char datacallback
uint16_t Raw[count + 1];
# else
unsigned int Raw[count + 1];
# endif
String value = "";
int j = 0;
for (int i = 0; i < s; i++) {
@@ -262,12 +239,7 @@ void MQTTtoIR(char* topicOri, JsonObject& IRdata) {
Log.notice(F("Sending IR signal with %s" CR), protocol_name);
if (valueBITS == 0)
valueBITS = NEC_BITS;
# if defined(ESP8266) || defined(ESP32)
irsend.sendNEC(data, valueBITS, valueRPT);
# else
for (int i = 0; i <= valueRPT; i++)
irsend.sendNEC(data, valueBITS);
# endif
signalSent = true;
}
if (signalSent) { // we acknowledge the sending by publishing the value to an acknowledgement topic, for the moment even if it is a signal repetition we acknowledge also
@@ -300,12 +272,7 @@ bool sendIdentifiedProtocol(const char* protocol_name, SIGNAL_SIZE_UL_ULL data,
Log.notice(F("Sending IR signal with %s" CR), protocol_name);
if (valueBITS == 0)
valueBITS = WHYNTER_BITS;
# if defined(ESP8266) || defined(ESP32)
irsend.sendWhynter(data, valueBITS, valueRPT);
# else
for (int i = 0; i <= valueRPT; i++)
irsend.sendWhynter(data, valueBITS);
# endif
return true;
}
# endif
@@ -314,28 +281,16 @@ bool sendIdentifiedProtocol(const char* protocol_name, SIGNAL_SIZE_UL_ULL data,
Log.notice(F("Sending IR signal with %s" CR), protocol_name);
if (valueBITS == 0)
valueBITS = LG_BITS;
# if defined(ESP8266) || defined(ESP32)
irsend.sendLG(data, valueBITS, valueRPT);
# else
for (int i = 0; i <= valueRPT; i++)
irsend.sendLG(data, valueBITS);
# endif
return true;
}
# endif
# ifdef IR_SONY
if (strcmp(protocol_name, "SONY") == 0) {
Log.notice(F("Sending IR signal with %s" CR), protocol_name);
# if defined(ESP8266) || defined(ESP32)
if (valueBITS == 0)
valueBITS = SONY_20_BITS;
irsend.sendSony(data, valueBITS, valueRPT);
# else
if (valueBITS == 0)
valueBITS = SONY_12_BITS;
for (int i = 0; i <= valueRPT; i++)
irsend.sendSony(data, valueBITS);
# endif
return true;
}
# endif
@@ -344,12 +299,7 @@ bool sendIdentifiedProtocol(const char* protocol_name, SIGNAL_SIZE_UL_ULL data,
Log.notice(F("Sending IR signal with %s" CR), protocol_name);
if (valueBITS == 0)
valueBITS = DISH_BITS;
# if defined(ESP8266) || defined(ESP32)
irsend.sendDISH(data, valueBITS, valueRPT);
# else
for (int i = 0; i <= valueRPT; i++)
irsend.sendDISH(data, valueBITS);
# endif
return true;
}
# endif
@@ -358,12 +308,7 @@ bool sendIdentifiedProtocol(const char* protocol_name, SIGNAL_SIZE_UL_ULL data,
Log.notice(F("Sending IR signal with %s" CR), protocol_name);
if (valueBITS == 0)
valueBITS = RC5_BITS;
# if defined(ESP8266) || defined(ESP32)
irsend.sendRC5(data, valueBITS, valueRPT);
# else
for (int i = 0; i <= valueRPT; i++)
irsend.sendRC5(data, valueBITS);
# endif
return true;
}
# endif
@@ -372,12 +317,7 @@ bool sendIdentifiedProtocol(const char* protocol_name, SIGNAL_SIZE_UL_ULL data,
Log.notice(F("Sending IR signal with %s" CR), protocol_name);
if (valueBITS == 0)
valueBITS = RC6_MODE0_BITS;
# if defined(ESP8266) || defined(ESP32)
irsend.sendRC6(data, valueBITS, valueRPT);
# else
for (int i = 0; i <= valueRPT; i++)
irsend.sendRC6(data, valueBITS);
# endif
return true;
}
# endif
@@ -386,12 +326,7 @@ bool sendIdentifiedProtocol(const char* protocol_name, SIGNAL_SIZE_UL_ULL data,
Log.notice(F("Sending IR signal with %s" CR), protocol_name);
if (valueBITS == 0)
valueBITS = SHARP_BITS;
# if defined(ESP8266) || defined(ESP32)
irsend.sendSharpRaw(data, valueBITS, valueRPT);
# else
for (int i = 0; i <= valueRPT; i++)
irsend.sendSharpRaw(data, valueBITS);
# endif
return true;
}
# endif
@@ -400,12 +335,7 @@ bool sendIdentifiedProtocol(const char* protocol_name, SIGNAL_SIZE_UL_ULL data,
Log.notice(F("Sending IR signal with %s" CR), protocol_name);
if (valueBITS == 0)
valueBITS = SAMSUNG_BITS;
# if defined(ESP8266) || defined(ESP32)
irsend.sendSAMSUNG(data, valueBITS, valueRPT);
# else
for (int i = 0; i <= valueRPT; i++)
irsend.sendSAMSUNG(data, valueBITS);
# endif
return true;
}
# endif
@@ -414,31 +344,20 @@ bool sendIdentifiedProtocol(const char* protocol_name, SIGNAL_SIZE_UL_ULL data,
Log.notice(F("Sending IR signal with %s" CR), protocol_name);
if (valueBITS == 0)
valueBITS = JVC_BITS;
# if defined(ESP8266) || defined(ESP32)
irsend.sendJVC(data, valueBITS, valueRPT);
# else
for (int i = 0; i <= valueRPT; i++)
irsend.sendJVC(data, valueBITS);
# endif
return true;
}
# endif
# ifdef IR_PANASONIC
if (strcmp(protocol_name, "PANASONIC") == 0) {
# if defined(ESP8266) || defined(ESP32)
Log.notice(F("Sending IR signal with %s" CR), protocol_name);
if (valueBITS == 0)
valueBITS = PANASONIC_BITS;
irsend.sendPanasonic(PanasonicAddress, data, valueBITS, valueRPT);
# else
for (int i = 0; i <= valueRPT; i++)
irsend.sendPanasonic(PanasonicAddress, data);
# endif
return true;
}
# endif
# if defined(ESP8266) || defined(ESP32)
# ifdef IR_COOLIX
if (strcmp(protocol_name, "COOLIX") == 0) {
Log.trace(F("Sending %s:" CR), protocol_name);
@@ -1394,6 +1313,5 @@ bool sendIdentifiedProtocol(const char* protocol_name, SIGNAL_SIZE_UL_ULL data,
# endif
Log.warning(F("Unknown IR protocol" CR));
return false;
# endif
}
#endif
-4
View File
@@ -66,7 +66,6 @@ uint32_t gc_checksum() {
return checksum;
}
# if defined(ESP8266) || defined(ESP32)
void eeprom_setup() {
EEPROM.begin(4096);
pGC = (struct _GLOBAL_CONFIG*)EEPROM.getDataPtr();
@@ -84,14 +83,11 @@ void eeprom_setup() {
EEPROM.commit();
}
}
# endif
RFM69 radio;
void setupRFM69(void) {
# if defined(ESP8266) || defined(ESP32)
eeprom_setup();
# endif
int freq;
static const char PROGMEM JSONtemplate[] =
R"({"msgType":"config","freq":%d,"rfm69hcw":%d,"netid":%d,"power":%d})";
-5
View File
@@ -30,12 +30,7 @@
WeatherStationDataRx wsdr(RF_WS_RECEIVER_GPIO, true);
void PairedDeviceAdded(byte newID) {
# if defined(ESP8266) || defined(ESP32)
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;
JsonObject RFdata = RFdataBuffer.to<JsonObject>();
RFdata["sensor"] = newID;
-2
View File
@@ -480,7 +480,6 @@ void pubMqttDiscovery() {
"", "", "", "", false, // device name, device manufacturer, device model, device ID, retain
stateClassMeasurement //State Class
);
# if defined(ESP8266) || defined(ESP32)
createDiscovery("sensor", //set Type
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,
@@ -574,7 +573,6 @@ void pubMqttDiscovery() {
stateClassNone //State Class
);
# endif
# endif
# if defined(ESP32) && !defined(NO_INT_TEMP_READING)
createDiscovery("sensor", //set Type
subjectSYStoMQTT, "SYS: Internal temperature", (char*)getUniqueId("tempc", "").c_str(), //set state_topic,name,uniqueId
-4
View File
@@ -49,12 +49,8 @@
BME280 mySensor;
void setupZsensorBME280() {
# if defined(ESP8266) || defined(ESP32)
// Allow custom pins on ESP Platforms
Wire.begin(BME280_PIN_SDA, BME280_PIN_SCL);
# else
Wire.begin();
# endif
mySensor.settings.commInterface = I2C_MODE;
mySensor.settings.I2CAddress = BME280_i2c_addr;
-2
View File
@@ -57,9 +57,7 @@ void MeasureGPIOInput() {
if ((millis() - lastDebounceTime) > GPIOInputDebounceDelay) {
// whatever the reading is at, it's been there for longer than the debounce
// delay, so take it as the actual current state:
# if defined(ESP8266) || defined(ESP32)
yield();
# endif
# if defined(TRIGGER_GPIO) && INPUT_GPIO == TRIGGER_GPIO && !defined(ESPWifiManualSetup)
if (reading == LOW) {
if (resetTime == 0) {
-2
View File
@@ -49,9 +49,7 @@ void MeasureGPIOKeyCode() {
{
// whatever the reading is at, it's been there for longer than the debounce
// delay, so take it as the actual current state:
# if defined(ESP8266) || defined(ESP32)
yield();
# endif
// if the Input state has changed:
if (latch > 0 && lastLatchStateGPIOKeyCode != latch) {
int reading = digitalRead(GPIOKeyCode_D0_GPIO) | (digitalRead(GPIOKeyCode_D1_GPIO) << 1) | (digitalRead(GPIOKeyCode_D2_GPIO) << 2);
-2
View File
@@ -45,9 +45,7 @@ void MeasureHCSR501() {
JsonObject HCSR501data = HCSR501dataBuffer.to<JsonObject>();
static int pirState = LOW;
int PresenceValue = digitalRead(HCSR501_GPIO);
# if defined(ESP8266) || defined(ESP32)
yield();
# endif
if (PresenceValue == HIGH) {
if (pirState == LOW) {
//turned on
+75 -151
View File
@@ -245,7 +245,6 @@ int failure_number_mqtt = 0; // number of failure connecting to MQTT
unsigned long timer_led_measures = 0;
static void* eClient = nullptr;
static unsigned long last_ota_activity_millis = 0;
#if defined(ESP8266) || defined(ESP32)
// Global struct to store live SYS configuration data
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 String mqtt_cert = "";
static String ota_server_cert = "";
#endif
#ifdef ESP32
# include <ArduinoOTA.h>
@@ -546,14 +544,11 @@ void pub(const char* topicori, const char* payload, bool retainFlag) {
void pub(const char* topicori, JsonObject& data) {
String dataAsString = "";
bool ret = sensor_Retain;
#if defined(ESP8266) || defined(ESP32)
# if message_UTCtimestamp == true
#if message_UTCtimestamp == true
data["UTCtime"] = UTCtimestamp();
# endif
# if message_unixtimestamp == true
#endif
#if message_unixtimestamp == true
data["unixtime"] = unixtimestamp();
# endif
#endif
if (data.containsKey("retain") && data["retain"].is<bool>()) {
ret = data["retain"];
@@ -760,26 +755,20 @@ bool cmpToMainTopic(const char* topicOri, const char* toAdd) {
}
void delayWithOTA(long waitMillis) {
#if defined(ESP8266) || defined(ESP32)
long waitStep = 100;
for (long waitedMillis = 0; waitedMillis < waitMillis; waitedMillis += waitStep) {
# ifndef ESPWifiManualSetup
# if defined(ESP8266) || defined(ESP32)
#ifndef ESPWifiManualSetup
checkButton(); // check if a reset of wifi/mqtt settings is asked
# endif
# endif
#endif
ArduinoOTA.handle();
# if defined(ZwebUI) && defined(ESP32)
#if defined(ZwebUI) && defined(ESP32)
WebUILoop();
# endif
# ifdef ESP32
#endif
#ifdef ESP32
//esp_task_wdt_reset();
# endif
#endif
delay(waitStep);
}
#else
delay(waitMillis);
#endif
}
void SYSConfig_init() {
@@ -831,9 +820,7 @@ void SYSConfig_load() {}
void connectMQTT() {
#ifndef ESPWifiManualSetup
# if defined(ESP8266) || defined(ESP32)
checkButton(); // check if a reset of wifi/mqtt settings is asked
# endif
#endif
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
// OTA chance to proceed (ArduinoOTA.handle())
Log.warning(F("OTA might be still active (activity %d ms ago)" CR), millis_since_last_ota);
#if defined(ESP8266) || defined(ESP32)
ArduinoOTA.handle();
#endif
delay(100);
}
ESPRestart(1);
@@ -1035,13 +1020,12 @@ void setup() {
SetupIndicatorInfo();
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
Serial.end();
Serial.begin(SERIAL_BAUD, SERIAL_8N1, SERIAL_TX_ONLY); // enable on ESP8266 to free some pin
# endif
# elif ESP32
#elif ESP32
xQueueMutex = xSemaphoreCreateMutex();
# if DEFAULT_LOW_POWER_MODE != -1 // don't check preferences value if low power mode is not activated
preferences.begin(Gateway_Short_Name, false);
@@ -1059,7 +1043,7 @@ void setup() {
setupSSD1306();
modules.add(ZdisplaySSD1306);
# endif
# endif
#endif
Log.notice(F("OpenMQTTGateway Version: " OMG_VERSION CR));
@@ -1067,11 +1051,11 @@ 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.
* 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;
# endif
#endif
# ifdef DEEP_SLEEP_IN_US
#ifdef DEEP_SLEEP_IN_US
# ifdef ESP8266
Log.notice(F("Setting wake pin for deep sleep." CR));
pinMode(ESP8266_DEEP_SLEEP_WAKE_PIN, WAKEUP_PULLUP);
@@ -1082,33 +1066,33 @@ void setup() {
Log.error(F("Failed to set deep sleep duration." CR));
}
# endif
# endif
#endif
# ifdef ESP32_EXT0_WAKE_PIN
#ifdef ESP32_EXT0_WAKE_PIN
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) {
Log.error(F("Failed to set deep sleep EXT0 Wakeup." CR));
}
# endif
# ifdef ESP32
#endif
#ifdef ESP32
//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
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();
modules.add(ZsensorRN8209);
# endif
# ifdef ZactuatorONOFF
#endif
#ifdef ZactuatorONOFF
setupONOFF();
modules.add(ZactuatorONOFF);
# endif
#endif
# if defined(ESPWifiManualSetup)
#if defined(ESPWifiManualSetup)
setup_wifi();
# else
#else
if (loadConfigFromFlash()) {
Log.notice(F("Config loaded from flash" CR));
# ifdef ESP32_ETHERNET
@@ -1124,25 +1108,17 @@ void setup() {
if (!failSafeMode) setupwifi(false);
}
# endif
#endif
Log.trace(F("OpenMQTTGateway mac: %s" CR), WiFi.macAddress().c_str());
Log.trace(F("OpenMQTTGateway ip: %s" CR), WiFi.localIP().toString().c_str());
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)
WebUISetup();
modules.add(ZwebUI);
#endif
#if defined(ESP8266) || defined(ESP32)
if (mqtt_secure) {
eClient = new WiFiClientSecure;
if (mqtt_cert_validate) {
@@ -1154,12 +1130,9 @@ void setup() {
} else {
eClient = new WiFiClient;
}
#else
eClient = new EthernetClient;
#endif
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));
connectMQTTmdns();
#else
@@ -1336,28 +1309,27 @@ void setup() {
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
bool wifi_reconnect_bypass() {
# if defined(ESP32) && defined(USE_BLUFI)
#if defined(ESP32) && defined(USE_BLUFI)
extern bool omg_blufi_ble_connected;
if (omg_blufi_ble_connected) {
Log.notice(F("BLUFI is connected, bypassing wifi reconnect" CR));
return true;
}
# endif
#endif
uint8_t wifi_autoreconnect_cnt = 0;
# ifdef ESP32
#ifdef ESP32
while (WiFi.status() != WL_CONNECTED && wifi_autoreconnect_cnt < maxConnectionRetryNetwork) {
# else
#else
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);
WiFi.begin();
# if (defined(ESP8266) || defined(ESP32)) && (defined(WifiGMode) || defined(WifiPower))
#if defined(WifiGMode) || defined(WifiPower)
setESPWifiProtocolTxPower();
# endif
#endif
delay(1000);
wifi_autoreconnect_cnt++;
}
@@ -1383,12 +1355,12 @@ void setOTA() {
ErrorIndicatorON();
SendReceiveIndicatorON();
last_ota_activity_millis = millis();
# ifdef ESP32
#ifdef ESP32
ProcessLock = true;
# ifdef ZgatewayBT
stopProcessing();
# endif
# endif
#endif
lpDisplayPrint("OTA in progress");
});
ArduinoOTA.onEnd([]() {
@@ -1401,9 +1373,9 @@ void setOTA() {
});
ArduinoOTA.onProgress([](unsigned int progress, unsigned int total) {
Log.trace(F("Progress: %u%%\r" CR), (progress / (total / 100)));
# ifdef ESP32
#ifdef ESP32
//esp_task_wdt_reset();
# endif
#endif
last_ota_activity_millis = millis();
});
ArduinoOTA.onError([](ota_error_t error) {
@@ -1429,7 +1401,7 @@ void setOTA() {
void setupTLS(bool self_signed, uint8_t index) {
configTime(0, 0, NTP_SERVER);
WiFiClientSecure* sClient = (WiFiClientSecure*)eClient;
# if MQTT_SECURE_SELF_SIGNED
#if MQTT_SECURE_SELF_SIGNED
if (self_signed) {
Log.notice(F("Using self signed cert index %u" CR), index);
# if defined(ESP32)
@@ -1460,29 +1432,24 @@ void setupTLS(bool self_signed, uint8_t index) {
# endif
# endif
} else
# endif
#endif
{
if (mqtt_cert.length() > 0) {
# if defined(ESP32)
#if defined(ESP32)
sClient->setCACert(mqtt_cert.c_str());
} else {
sClient->setCACert(certificate);
}
# elif defined(ESP8266)
#elif defined(ESP8266)
caCert.append(mqtt_cert.c_str());
} else {
caCert.append(certificate);
}
sClient->setTrustAnchors(&caCert);
sClient->setBufferSizes(512, 512);
# endif
#endif
}
}
#else
bool wifi_reconnect_bypass() {
return true;
}
#endif
/*
Reboot for Reason Codes
@@ -1495,7 +1462,6 @@ bool wifi_reconnect_bypass() {
7 - Parameters changed
8 - not enough memory to pursue
*/
#if defined(ESP8266) || defined(ESP32)
void ESPRestart(byte reason) {
delay(1000);
StaticJsonDocument<128> jsonBuffer;
@@ -1505,15 +1471,12 @@ void ESPRestart(byte reason) {
jsondata["uptime"] = uptime();
pub(subjectLOGtoMQTT, jsondata);
Log.warning(F("Rebooting for reason code %d" CR), reason);
# if defined(ESP32)
#if defined(ESP32)
ESP.restart();
# elif defined(ESP8266)
#elif defined(ESP8266)
ESP.reset();
# endif
}
#else
void ESPRestart(byte reason) {}
#endif
}
#if defined(ESPWifiManualSetup)
void setup_wifi() {
@@ -1568,7 +1531,7 @@ void setup_wifi() {
displayPrint("Wifi connected");
}
#elif defined(ESP8266) || defined(ESP32)
#else
WiFiManager wifiManager;
@@ -1983,33 +1946,9 @@ void WiFiEvent(WiFiEvent_t event) {
}
}
# 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
#if defined(MDNS_SD) && (defined(ESP8266) || defined(ESP32))
#if defined(MDNS_SD)
void connectMQTTmdns() {
Log.trace(F("Browsing for MQTT service" CR));
int n = MDNS.queryService("mqtt", "tcp");
@@ -2033,9 +1972,7 @@ void connectMQTTmdns() {
void loop() {
#ifndef ESPWifiManualSetup
# if defined(ESP8266) || defined(ESP32)
checkButton(); // check if a reset of wifi/mqtt settings is asked
# endif
#endif
#ifdef ESP32
@@ -2051,15 +1988,11 @@ void loop() {
SendReceiveIndicatorOFF();
}
#if defined(ESP8266) || defined(ESP32)
if (ethConnected || WiFi.status() == WL_CONNECTED) {
if (ethConnected && WiFi.status() == WL_CONNECTED) {
WiFi.disconnect(); // we disconnect the wifi as we are connected to ethernet
}
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;
#if defined(ZwebUI) && defined(ESP32)
WebUILoop();
@@ -2105,10 +2038,8 @@ void loop() {
#endif
}
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();
# endif
#endif
if (!timer_sys_checks) { // Update check at start up only
#if defined(ESP32) && defined(MQTT_HTTPS_FW_UPDATE)
@@ -2324,7 +2255,6 @@ float intTemperatureRead() {
}
#endif
#if defined(ESP8266) || defined(ESP32)
void syncNTP() {
configTime(0, 0, NTP_SERVER);
time_t now = time(nullptr);
@@ -2359,21 +2289,19 @@ String UTCtimestamp() {
void eraseAndRestart() {
Log.trace(F("Formatting requested, result: %d" CR), SPIFFS.format());
# if defined(ESP8266)
#if defined(ESP8266)
WiFi.disconnect(true);
# ifndef ESPWifiManualSetup
wifiManager.resetSettings();
# endif
delay(5000);
ESP.reset();
# else
#else
//esp_task_wdt_delete(NULL);
nvs_flash_erase();
ESP.restart();
# endif
}
#endif
}
String stateMeasures() {
StaticJsonDocument<JSON_MSG_BUFFER> SYSdata;
@@ -2388,41 +2316,40 @@ String stateMeasures() {
SYSdata["disc"] = SYSConfig.discovery;
SYSdata["ohdisc"] = SYSConfig.ohdiscovery;
#endif
#if defined(ESP8266) || defined(ESP32)
SYSdata["env"] = ENV_NAME;
uint32_t freeMem;
uint32_t minFreeMem;
freeMem = ESP.getFreeHeap();
# ifdef ZgatewayRTL_433
#ifdef ZgatewayRTL_433
// Some RTL_433 decoders have memory leak, this is a temporary workaround
if (freeMem < MinimumMemory) {
Log.error(F("Not enough memory %d, restarting" CR), freeMem);
ESPRestart(8);
}
# endif
#endif
SYSdata["freemem"] = freeMem;
SYSdata["mqttp"] = mqtt_port;
SYSdata["mqtts"] = mqtt_secure;
SYSdata["msgprc"] = queueLengthSum;
SYSdata["msgblck"] = blockedMessages;
SYSdata["maxq"] = maxQueueLength;
# ifdef ESP32
#ifdef ESP32
minFreeMem = ESP.getMinFreeHeap();
SYSdata["minmem"] = minFreeMem;
# ifndef NO_INT_TEMP_READING
SYSdata["tempc"] = round2(intTemperatureRead());
# endif
SYSdata["freestck"] = uxTaskGetStackHighWaterMark(NULL);
# endif
#endif
SYSdata["eth"] = ethConnected;
if (ethConnected) {
# ifdef ESP32_ETHERNET
#ifdef ESP32_ETHERNET
SYSdata["mac"] = (char*)ETH.macAddress().c_str();
SYSdata["ip"] = ip2CharArray(ETH.localIP());
ETH.fullDuplex() ? SYSdata["fd"] = (bool)"true" : SYSdata["fd"] = (bool)"false";
SYSdata["linkspeed"] = (int)ETH.linkSpeed();
# endif
#endif
} else {
SYSdata["rssi"] = (long)WiFi.RSSI();
SYSdata["SSID"] = (char*)WiFi.SSID().c_str();
@@ -2431,7 +2358,6 @@ String stateMeasures() {
SYSdata["mac"] = (char*)WiFi.macAddress().c_str();
}
#endif
#ifdef ZgatewayBT
# ifdef ESP32
SYSdata["lowpowermode"] = (int)lowpowermode;
@@ -2860,21 +2786,20 @@ void MQTTtoSYS(char* topicOri, JsonObject& SYSdata) { // json object decoding
if (cmpToMainTopic(topicOri, subjectMQTTtoSYSset)) {
bool restartESP = false;
Log.trace(F("MQTTtoSYS json" CR));
#if defined(ESP8266) || defined(ESP32)
if (SYSdata.containsKey("cmd")) {
const char* cmd = SYSdata["cmd"];
Log.notice(F("Command: %s" CR), cmd);
if (strstr(cmd, restartCmd) != NULL) { //restart
ESPRestart(5);
} else if (strstr(cmd, eraseCmd) != NULL) { //erase and restart
# ifndef ESPWifiManualSetup
#ifndef ESPWifiManualSetup
setupwifi(true);
# endif
#endif
} else if (strstr(cmd, statusCmd) != NULL) { //erase and restart
stateMeasures();
}
}
# ifdef RGB_INDICATORS
#ifdef RGB_INDICATORS
if (SYSdata.containsKey("rgbb") && SYSdata["rgbb"].is<float>()) {
if (SYSdata["rgbb"] >= 0 && SYSdata["rgbb"] <= 255) {
SYSConfig.rgbbrightness = round2(SYSdata["rgbb"]);
@@ -2889,21 +2814,21 @@ void MQTTtoSYS(char* topicOri, JsonObject& SYSdata) { // json object decoding
Log.error(F("RGB brightness value invalid - ignoring command" CR));
}
}
# endif
# ifdef ZmqttDiscovery
#endif
#ifdef ZmqttDiscovery
if (SYSdata.containsKey("ohdisc") && SYSdata["ohdisc"].is<bool>()) {
SYSConfig.ohdiscovery = SYSdata["ohdisc"];
Log.notice(F("OpenHAB discovery: %T" CR), SYSConfig.ohdiscovery);
stateMeasures();
}
# endif
#endif
if (SYSdata.containsKey("wifi_ssid") && SYSdata.containsKey("wifi_pass")) {
# ifdef ESP32
#ifdef ESP32
ProcessLock = true;
# ifdef ZgatewayBT
stopProcessing();
# endif
# endif
#endif
String prev_ssid = WiFi.SSID();
String prev_pass = WiFi.psk();
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"]);
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();
# endif
#endif
WiFi.waitForConnectResult(WiFi_TimeOut * 1000);
if (WiFi.status() != WL_CONNECTED) {
Log.error(F("Failed to connect to new AP; falling back" CR));
WiFi.disconnect(true);
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();
# endif
#endif
}
restartESP = true;
}
@@ -2940,13 +2865,13 @@ void MQTTtoSYS(char* topicOri, JsonObject& SYSdata) { // json object decoding
strncpy(ota_pass, SYSdata["gw_pass"], parameters_size);
restartESP = true;
}
# ifndef ESPWifiManualSetup
#ifndef ESPWifiManualSetup
saveConfig();
# endif
#endif
disconnectClient = true; // trigger reconnect in loop using the new topic/name
}
# ifdef MQTTsetMQTT
#ifdef MQTTsetMQTT
if (SYSdata.containsKey("mqtt_user") && SYSdata.containsKey("mqtt_pass")) {
bool update_server = false;
bool secure_connect = SYSdata["mqtt_secure"].as<bool>();
@@ -3045,12 +2970,11 @@ void MQTTtoSYS(char* topicOri, JsonObject& SYSdata) { // json object decoding
}
restartESP = true;
}
# endif
#endif
if (disconnectClient) {
client.disconnect();
}
#endif
#ifdef ZmqttDiscovery
if (SYSdata.containsKey("disc")) {