[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' '-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
-2
View File
@@ -71,7 +71,6 @@ 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) {
@@ -97,7 +96,6 @@ bool validReceiver(int receiver) {
return false; return false;
} }
# endif # endif
# endif
void disableCurrentReceiver() { void disableCurrentReceiver() {
Log.trace(F("disableCurrentReceiver: %d" CR), currentReceiver); Log.trace(F("disableCurrentReceiver: %d" CR), currentReceiver);
+2 -84
View File
@@ -29,7 +29,6 @@
#ifdef ZgatewayIR #ifdef ZgatewayIR
# if defined(ESP8266) || defined(ESP32)
# include <IRrecv.h> // Needed if you want to receive IR commands. # include <IRrecv.h> // Needed if you want to receive IR commands.
# include <IRremoteESP8266.h> # include <IRremoteESP8266.h>
# include <IRsend.h> // Needed if you want to send IR commands. # 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); IRrecv irrecv(IR_RECEIVER_GPIO);
# endif # endif
IRsend irsend(IR_EMITTER_GPIO, IR_EMITTER_INVERTED); 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) // IR protocol bits definition for Arduino (for ESP8266 they are defined in IRRemoteESP8266.h)
# ifndef NEC_BITS # ifndef NEC_BITS
@@ -98,10 +92,8 @@ uint64_t getUInt64fromHex(char const* str) {
} }
void setupIR() { void setupIR() {
//IR init parameters //IR init parameters
# if defined(ESP8266) || defined(ESP32)
irsend.begin(); irsend.begin();
# endif
irrecv.enableIRIn(); // Start the receiver irrecv.enableIRIn(); // Start the receiver
@@ -125,35 +117,24 @@ void IRtoMQTT() {
IRdata["value"] = (SIGNAL_SIZE_UL_ULL)(results.value); IRdata["value"] = (SIGNAL_SIZE_UL_ULL)(results.value);
IRdata["protocol"] = (int)(results.decode_type); IRdata["protocol"] = (int)(results.decode_type);
IRdata["bits"] = (int)(results.bits); IRdata["bits"] = (int)(results.bits);
# if defined(ESP8266) || defined(ESP32) //resultToHexidecimal is only available with IRremoteESP8266
IRdata["hex"] = resultToHexidecimal(&results); IRdata["hex"] = resultToHexidecimal(&results);
IRdata["protocol_name"] = typeToString(results.decode_type, false); IRdata["protocol_name"] = typeToString(results.decode_type, false);
# endif
String rawCode = ""; String rawCode = "";
// Dump data // Dump data
for (uint16_t i = 1; i < results.rawlen; i++) { for (uint16_t i = 1; i < results.rawlen; i++) {
# if defined(ESP8266) || defined(ESP32)
if (i % 100 == 0) if (i % 100 == 0)
yield(); // Preemptive yield every 100th entry to feed the WDT. yield(); // Preemptive yield every 100th entry to feed the WDT.
rawCode = rawCode + (results.rawbuf[i] * RAWTICK); rawCode = rawCode + (results.rawbuf[i] * RAWTICK);
# else
rawCode = rawCode + (results.rawbuf[i] * USECPERTICK);
# endif
if (i < results.rawlen - 1) if (i < results.rawlen - 1)
rawCode = rawCode + ","; // ',' not needed on last one rawCode = rawCode + ","; // ',' not needed on last one
} }
IRdata["raw"] = rawCode; IRdata["raw"] = rawCode;
// if needed we directly resend the raw code // if needed we directly resend the raw code
# ifdef RawDirectForward # ifdef RawDirectForward
# if defined(ESP8266) || defined(ESP32)
uint16_t rawsend[results.rawlen]; uint16_t rawsend[results.rawlen];
for (uint16_t i = 1; i < results.rawlen; i++) { for (uint16_t i = 1; i < results.rawlen; i++) {
if (i % 100 == 0) if (i % 100 == 0)
yield(); // Preemptive yield every 100th entry to feed the WDT. 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]; rawsend[i] = results.rawbuf[i];
} }
irsend.sendRaw(rawsend, results.rawlen, RawFrequency); irsend.sendRaw(rawsend, results.rawlen, RawFrequency);
@@ -232,12 +213,8 @@ void MQTTtoIR(char* topicOri, JsonObject& IRdata) {
# ifdef IR_RAW # ifdef IR_RAW
if (strcmp(protocol_name, "Raw") == 0) { // sending Raw data if (strcmp(protocol_name, "Raw") == 0) { // sending Raw data
Log.trace(F("Raw" CR)); Log.trace(F("Raw" CR));
//buffer allocation from char datacallback //buffer allocation from char datacallback
# if defined(ESP8266) || defined(ESP32)
uint16_t Raw[count + 1]; uint16_t Raw[count + 1];
# else
unsigned int Raw[count + 1];
# endif
String value = ""; String value = "";
int j = 0; int j = 0;
for (int i = 0; i < s; i++) { 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); Log.notice(F("Sending IR signal with %s" CR), protocol_name);
if (valueBITS == 0) if (valueBITS == 0)
valueBITS = NEC_BITS; valueBITS = NEC_BITS;
# if defined(ESP8266) || defined(ESP32)
irsend.sendNEC(data, valueBITS, valueRPT); irsend.sendNEC(data, valueBITS, valueRPT);
# else
for (int i = 0; i <= valueRPT; i++)
irsend.sendNEC(data, valueBITS);
# endif
signalSent = true; 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 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); Log.notice(F("Sending IR signal with %s" CR), protocol_name);
if (valueBITS == 0) if (valueBITS == 0)
valueBITS = WHYNTER_BITS; valueBITS = WHYNTER_BITS;
# if defined(ESP8266) || defined(ESP32)
irsend.sendWhynter(data, valueBITS, valueRPT); irsend.sendWhynter(data, valueBITS, valueRPT);
# else
for (int i = 0; i <= valueRPT; i++)
irsend.sendWhynter(data, valueBITS);
# endif
return true; return true;
} }
# endif # 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); Log.notice(F("Sending IR signal with %s" CR), protocol_name);
if (valueBITS == 0) if (valueBITS == 0)
valueBITS = LG_BITS; valueBITS = LG_BITS;
# if defined(ESP8266) || defined(ESP32)
irsend.sendLG(data, valueBITS, valueRPT); irsend.sendLG(data, valueBITS, valueRPT);
# else
for (int i = 0; i <= valueRPT; i++)
irsend.sendLG(data, valueBITS);
# endif
return true; return true;
} }
# endif # endif
# ifdef IR_SONY # ifdef IR_SONY
if (strcmp(protocol_name, "SONY") == 0) { if (strcmp(protocol_name, "SONY") == 0) {
Log.notice(F("Sending IR signal with %s" CR), protocol_name); Log.notice(F("Sending IR signal with %s" CR), protocol_name);
# if defined(ESP8266) || defined(ESP32)
if (valueBITS == 0) if (valueBITS == 0)
valueBITS = SONY_20_BITS; valueBITS = SONY_20_BITS;
irsend.sendSony(data, valueBITS, valueRPT); 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; return true;
} }
# endif # 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); Log.notice(F("Sending IR signal with %s" CR), protocol_name);
if (valueBITS == 0) if (valueBITS == 0)
valueBITS = DISH_BITS; valueBITS = DISH_BITS;
# if defined(ESP8266) || defined(ESP32)
irsend.sendDISH(data, valueBITS, valueRPT); irsend.sendDISH(data, valueBITS, valueRPT);
# else
for (int i = 0; i <= valueRPT; i++)
irsend.sendDISH(data, valueBITS);
# endif
return true; return true;
} }
# endif # 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); Log.notice(F("Sending IR signal with %s" CR), protocol_name);
if (valueBITS == 0) if (valueBITS == 0)
valueBITS = RC5_BITS; valueBITS = RC5_BITS;
# if defined(ESP8266) || defined(ESP32)
irsend.sendRC5(data, valueBITS, valueRPT); irsend.sendRC5(data, valueBITS, valueRPT);
# else
for (int i = 0; i <= valueRPT; i++)
irsend.sendRC5(data, valueBITS);
# endif
return true; return true;
} }
# endif # 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); Log.notice(F("Sending IR signal with %s" CR), protocol_name);
if (valueBITS == 0) if (valueBITS == 0)
valueBITS = RC6_MODE0_BITS; valueBITS = RC6_MODE0_BITS;
# if defined(ESP8266) || defined(ESP32)
irsend.sendRC6(data, valueBITS, valueRPT); irsend.sendRC6(data, valueBITS, valueRPT);
# else
for (int i = 0; i <= valueRPT; i++)
irsend.sendRC6(data, valueBITS);
# endif
return true; return true;
} }
# endif # 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); Log.notice(F("Sending IR signal with %s" CR), protocol_name);
if (valueBITS == 0) if (valueBITS == 0)
valueBITS = SHARP_BITS; valueBITS = SHARP_BITS;
# if defined(ESP8266) || defined(ESP32)
irsend.sendSharpRaw(data, valueBITS, valueRPT); irsend.sendSharpRaw(data, valueBITS, valueRPT);
# else
for (int i = 0; i <= valueRPT; i++)
irsend.sendSharpRaw(data, valueBITS);
# endif
return true; return true;
} }
# endif # 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); Log.notice(F("Sending IR signal with %s" CR), protocol_name);
if (valueBITS == 0) if (valueBITS == 0)
valueBITS = SAMSUNG_BITS; valueBITS = SAMSUNG_BITS;
# if defined(ESP8266) || defined(ESP32)
irsend.sendSAMSUNG(data, valueBITS, valueRPT); irsend.sendSAMSUNG(data, valueBITS, valueRPT);
# else
for (int i = 0; i <= valueRPT; i++)
irsend.sendSAMSUNG(data, valueBITS);
# endif
return true; return true;
} }
# endif # 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); Log.notice(F("Sending IR signal with %s" CR), protocol_name);
if (valueBITS == 0) if (valueBITS == 0)
valueBITS = JVC_BITS; valueBITS = JVC_BITS;
# if defined(ESP8266) || defined(ESP32)
irsend.sendJVC(data, valueBITS, valueRPT); irsend.sendJVC(data, valueBITS, valueRPT);
# else
for (int i = 0; i <= valueRPT; i++)
irsend.sendJVC(data, valueBITS);
# endif
return true; return true;
} }
# endif # endif
# ifdef IR_PANASONIC # ifdef IR_PANASONIC
if (strcmp(protocol_name, "PANASONIC") == 0) { if (strcmp(protocol_name, "PANASONIC") == 0) {
# if defined(ESP8266) || defined(ESP32)
Log.notice(F("Sending IR signal with %s" CR), protocol_name); Log.notice(F("Sending IR signal with %s" CR), protocol_name);
if (valueBITS == 0) if (valueBITS == 0)
valueBITS = PANASONIC_BITS; valueBITS = PANASONIC_BITS;
irsend.sendPanasonic(PanasonicAddress, data, valueBITS, valueRPT); irsend.sendPanasonic(PanasonicAddress, data, valueBITS, valueRPT);
# else
for (int i = 0; i <= valueRPT; i++)
irsend.sendPanasonic(PanasonicAddress, data);
# endif
return true; return true;
} }
# endif # endif
# if defined(ESP8266) || defined(ESP32)
# ifdef IR_COOLIX # ifdef IR_COOLIX
if (strcmp(protocol_name, "COOLIX") == 0) { if (strcmp(protocol_name, "COOLIX") == 0) {
Log.trace(F("Sending %s:" CR), protocol_name); Log.trace(F("Sending %s:" CR), protocol_name);
@@ -1394,6 +1313,5 @@ bool sendIdentifiedProtocol(const char* protocol_name, SIGNAL_SIZE_UL_ULL data,
# endif # endif
Log.warning(F("Unknown IR protocol" CR)); Log.warning(F("Unknown IR protocol" CR));
return false; return false;
# endif
} }
#endif #endif
-4
View File
@@ -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})";
-5
View File
@@ -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;
-2
View File
@@ -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,
@@ -574,7 +573,6 @@ void pubMqttDiscovery() {
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
subjectSYStoMQTT, "SYS: Internal temperature", (char*)getUniqueId("tempc", "").c_str(), //set state_topic,name,uniqueId subjectSYStoMQTT, "SYS: Internal temperature", (char*)getUniqueId("tempc", "").c_str(), //set state_topic,name,uniqueId
-4
View File
@@ -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;
-2
View File
@@ -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) {
-2
View File
@@ -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);
-2
View File
@@ -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
+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; 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,13 +1020,12 @@ 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);
@@ -1059,7 +1043,7 @@ void setup() {
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,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. * 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);
@@ -1082,33 +1066,33 @@ void setup() {
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
@@ -1124,25 +1108,17 @@ void setup() {
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,7 +1401,7 @@ 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)
@@ -1460,29 +1432,24 @@ void setupTLS(bool self_signed, uint8_t index) {
# endif # endif
# endif # endif
} else } else
# endif #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 # endif
SYSdata["freestck"] = uxTaskGetStackHighWaterMark(NULL); SYSdata["freestck"] = uxTaskGetStackHighWaterMark(NULL);
# endif #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,21 +2786,20 @@ 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"]);
@@ -2889,21 +2814,21 @@ void MQTTtoSYS(char* topicOri, JsonObject& SYSdata) { // json object decoding
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>();
@@ -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")) {