mirror of https://github.com/arendst/Tasmota.git
Merge pull request #17041 from s-hadinger/func_network_up
Added ``FUNC_NETWORK_UP`` and ``FUNC_NETWORK_DOWN`` events
This commit is contained in:
commit
082380a800
2
API.md
2
API.md
|
@ -51,6 +51,8 @@ FUNC_SET_CHANNELS | | 2 | | | 1 |
|
||||||
FUNC_SET_SCHEME | | | | | x |
|
FUNC_SET_SCHEME | | | | | x |
|
||||||
FUNC_HOTPLUG_SCAN | | | x | | |
|
FUNC_HOTPLUG_SCAN | | | x | | |
|
||||||
FUNC_DEVICE_GROUP_ITEM | | x | | | |
|
FUNC_DEVICE_GROUP_ITEM | | x | | | |
|
||||||
|
FUNC_NETWORK_UP | | 1 | 2 | 3 | 4 | Wifi or ETH network just went up (received even if webserver is not enabled)
|
||||||
|
FUNC_NETWORK_DOWN | | 1 | 2 | 3 | 4 | Wifi or ETH network just went down (received even if webserver is not enabled)
|
||||||
|
|
||||||
The numbers represent the sequence of execution
|
The numbers represent the sequence of execution
|
||||||
|
|
||||||
|
|
|
@ -7,6 +7,7 @@ All notable changes to this project will be documented in this file.
|
||||||
### Added
|
### Added
|
||||||
- Support for Plantower PMSx003T AQI models with temperature and humidity (#16971)
|
- Support for Plantower PMSx003T AQI models with temperature and humidity (#16971)
|
||||||
- Support for Dingtian x595/x165 shift register based relay boards by Barbudor (#17032)
|
- Support for Dingtian x595/x165 shift register based relay boards by Barbudor (#17032)
|
||||||
|
- Added ``FUNC_NETWORK_UP`` and ``FUNC_NETWORK_DOWN`` events
|
||||||
|
|
||||||
### Breaking Changed
|
### Breaking Changed
|
||||||
|
|
||||||
|
|
|
@ -387,7 +387,8 @@ enum XsnsFunctions {FUNC_SETTINGS_OVERRIDE, FUNC_PIN_STATE, FUNC_I2C_INIT, FUNC_
|
||||||
FUNC_RULES_PROCESS, FUNC_TELEPERIOD_RULES_PROCESS, FUNC_SERIAL, FUNC_FREE_MEM, FUNC_BUTTON_PRESSED, FUNC_BUTTON_MULTI_PRESSED,
|
FUNC_RULES_PROCESS, FUNC_TELEPERIOD_RULES_PROCESS, FUNC_SERIAL, FUNC_FREE_MEM, FUNC_BUTTON_PRESSED, FUNC_BUTTON_MULTI_PRESSED,
|
||||||
FUNC_WEB_ADD_BUTTON, FUNC_WEB_ADD_CONSOLE_BUTTON, FUNC_WEB_ADD_MANAGEMENT_BUTTON, FUNC_WEB_ADD_MAIN_BUTTON,
|
FUNC_WEB_ADD_BUTTON, FUNC_WEB_ADD_CONSOLE_BUTTON, FUNC_WEB_ADD_MANAGEMENT_BUTTON, FUNC_WEB_ADD_MAIN_BUTTON,
|
||||||
FUNC_WEB_GET_ARG, FUNC_WEB_ADD_HANDLER, FUNC_SET_CHANNELS, FUNC_SET_SCHEME, FUNC_HOTPLUG_SCAN, FUNC_TIME_SYNCED,
|
FUNC_WEB_GET_ARG, FUNC_WEB_ADD_HANDLER, FUNC_SET_CHANNELS, FUNC_SET_SCHEME, FUNC_HOTPLUG_SCAN, FUNC_TIME_SYNCED,
|
||||||
FUNC_DEVICE_GROUP_ITEM };
|
FUNC_DEVICE_GROUP_ITEM,
|
||||||
|
FUNC_NETWORK_UP, FUNC_NETWORK_DOWN };
|
||||||
|
|
||||||
enum AddressConfigSteps { ADDR_IDLE, ADDR_RECEIVE, ADDR_SEND };
|
enum AddressConfigSteps { ADDR_IDLE, ADDR_RECEIVE, ADDR_SEND };
|
||||||
|
|
||||||
|
|
|
@ -21,10 +21,6 @@ extern "C" {
|
||||||
extern struct rst_info resetInfo;
|
extern struct rst_info resetInfo;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef USE_KNX
|
|
||||||
bool knx_started = false;
|
|
||||||
#endif // USE_KNX
|
|
||||||
|
|
||||||
/*********************************************************************************************\
|
/*********************************************************************************************\
|
||||||
* Watchdog extension (https://github.com/esp8266/Arduino/issues/1532)
|
* Watchdog extension (https://github.com/esp8266/Arduino/issues/1532)
|
||||||
\*********************************************************************************************/
|
\*********************************************************************************************/
|
||||||
|
|
|
@ -1569,76 +1569,79 @@ void Every250mSeconds(void)
|
||||||
WifiDisable();
|
WifiDisable();
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 3: // Every x.75 second
|
case 3:
|
||||||
if (!TasmotaGlobal.global_state.network_down) {
|
{
|
||||||
|
// is there a network state change since last time, if so send events to modules
|
||||||
|
static bool network_was_down = true; // keep track of the previous state of network
|
||||||
|
bool network_state_changed = (network_was_down != (bool)TasmotaGlobal.global_state.network_down); // network state changed from last tick
|
||||||
|
network_was_down = TasmotaGlobal.global_state.network_down;
|
||||||
|
|
||||||
|
if (!TasmotaGlobal.global_state.network_down) {
|
||||||
#ifdef FIRMWARE_MINIMAL
|
#ifdef FIRMWARE_MINIMAL
|
||||||
#ifdef CONFIG_IDF_TARGET_ESP32C3
|
#ifdef CONFIG_IDF_TARGET_ESP32C3
|
||||||
if (OtaFactoryRead()) {
|
if (OtaFactoryRead()) {
|
||||||
OtaFactoryWrite(false);
|
OtaFactoryWrite(false);
|
||||||
TasmotaGlobal.ota_state_flag = 3;
|
TasmotaGlobal.ota_state_flag = 3;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
if (1 == RtcSettings.ota_loader) {
|
if (1 == RtcSettings.ota_loader) {
|
||||||
RtcSettings.ota_loader = 0;
|
RtcSettings.ota_loader = 0;
|
||||||
TasmotaGlobal.ota_state_flag = 3;
|
TasmotaGlobal.ota_state_flag = 3;
|
||||||
}
|
}
|
||||||
#endif // FIRMWARE_MINIMAL
|
#endif // FIRMWARE_MINIMAL
|
||||||
|
|
||||||
#ifdef USE_DISCOVERY
|
#ifdef USE_DISCOVERY
|
||||||
StartMdns();
|
StartMdns();
|
||||||
#endif // USE_DISCOVERY
|
#endif // USE_DISCOVERY
|
||||||
|
|
||||||
#ifdef USE_WEBSERVER
|
#ifdef USE_WEBSERVER
|
||||||
if (Settings->webserver) {
|
if (Settings->webserver) {
|
||||||
|
|
||||||
#ifdef ESP8266
|
#ifdef ESP8266
|
||||||
if (!WifiIsInManagerMode()) { StartWebserver(Settings->webserver, WiFi.localIP()); }
|
if (!WifiIsInManagerMode()) { StartWebserver(Settings->webserver, WiFi.localIP()); }
|
||||||
#endif // ESP8266
|
#endif // ESP8266
|
||||||
#ifdef ESP32
|
#ifdef ESP32
|
||||||
#ifdef USE_ETHERNET
|
#ifdef USE_ETHERNET
|
||||||
StartWebserver(Settings->webserver, (EthernetLocalIP()) ? EthernetLocalIP() : WiFi.localIP());
|
StartWebserver(Settings->webserver, (EthernetLocalIP()) ? EthernetLocalIP() : WiFi.localIP());
|
||||||
#else
|
#else
|
||||||
StartWebserver(Settings->webserver, WiFi.localIP());
|
StartWebserver(Settings->webserver, WiFi.localIP());
|
||||||
#endif
|
#endif
|
||||||
#endif // ESP32
|
#endif // ESP32
|
||||||
|
|
||||||
#ifdef USE_DISCOVERY
|
#ifdef USE_DISCOVERY
|
||||||
#ifdef WEBSERVER_ADVERTISE
|
#ifdef WEBSERVER_ADVERTISE
|
||||||
MdnsAddServiceHttp();
|
MdnsAddServiceHttp();
|
||||||
#endif // WEBSERVER_ADVERTISE
|
#endif // WEBSERVER_ADVERTISE
|
||||||
#endif // USE_DISCOVERY
|
#endif // USE_DISCOVERY
|
||||||
} else {
|
|
||||||
StopWebserver();
|
} else {
|
||||||
}
|
StopWebserver();
|
||||||
#ifdef USE_EMULATION
|
}
|
||||||
if (Settings->flag2.emulation) { UdpConnect(); }
|
|
||||||
#endif // USE_EMULATION
|
|
||||||
#endif // USE_WEBSERVER
|
#endif // USE_WEBSERVER
|
||||||
|
|
||||||
#ifdef USE_DEVICE_GROUPS
|
#ifdef USE_DEVICE_GROUPS
|
||||||
DeviceGroupsStart();
|
DeviceGroupsStart();
|
||||||
#endif // USE_DEVICE_GROUPS
|
#endif // USE_DEVICE_GROUPS
|
||||||
|
|
||||||
#ifdef USE_KNX
|
// send FUNC_NETWORK_UP to all modules
|
||||||
if (!knx_started && Settings->flag.knx_enabled) { // CMND_KNX_ENABLED
|
if (network_state_changed) {
|
||||||
KNXStart();
|
// AddLog(LOG_LEVEL_DEBUG_MORE, PSTR("WIF: Sending FUNC_NETWORK_UP"));
|
||||||
knx_started = true;
|
XdrvXsnsCall(FUNC_NETWORK_UP);
|
||||||
}
|
}
|
||||||
#endif // USE_KNX
|
|
||||||
|
|
||||||
MqttCheck();
|
MqttCheck();
|
||||||
} else {
|
} else {
|
||||||
#ifdef USE_EMULATION
|
|
||||||
UdpDisconnect();
|
|
||||||
#endif // USE_EMULATION
|
|
||||||
|
|
||||||
#ifdef USE_DEVICE_GROUPS
|
#ifdef USE_DEVICE_GROUPS
|
||||||
DeviceGroupsStop();
|
DeviceGroupsStop();
|
||||||
#endif // USE_DEVICE_GROUPS
|
#endif // USE_DEVICE_GROUPS
|
||||||
|
|
||||||
#ifdef USE_KNX
|
// send FUNC_NETWORK_UP to all modules
|
||||||
knx_started = false;
|
if (network_state_changed) {
|
||||||
#endif // USE_KNX
|
// AddLog(LOG_LEVEL_DEBUG_MORE, PSTR("WIF: Sending FUNC_NETWORK_DOWN"));
|
||||||
|
XdrvXsnsCall(FUNC_NETWORK_DOWN);
|
||||||
|
}
|
||||||
|
} // Every x.75 second
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1415,6 +1415,12 @@ bool Xdrv03(uint32_t function)
|
||||||
case FUNC_COMMAND:
|
case FUNC_COMMAND:
|
||||||
result = DecodeCommand(kEnergyCommands, EnergyCommand);
|
result = DecodeCommand(kEnergyCommands, EnergyCommand);
|
||||||
break;
|
break;
|
||||||
|
case FUNC_NETWORK_UP:
|
||||||
|
XnrgCall(FUNC_NETWORK_UP);
|
||||||
|
break;
|
||||||
|
case FUNC_NETWORK_DOWN:
|
||||||
|
XnrgCall(FUNC_NETWORK_DOWN);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
|
|
|
@ -3428,6 +3428,12 @@ bool Xdrv04(uint32_t function)
|
||||||
case FUNC_BUTTON_MULTI_PRESSED:
|
case FUNC_BUTTON_MULTI_PRESSED:
|
||||||
result = XlgtCall(FUNC_BUTTON_MULTI_PRESSED);
|
result = XlgtCall(FUNC_BUTTON_MULTI_PRESSED);
|
||||||
break;
|
break;
|
||||||
|
case FUNC_NETWORK_UP:
|
||||||
|
XlgtCall(FUNC_NETWORK_UP);
|
||||||
|
break;
|
||||||
|
case FUNC_NETWORK_DOWN:
|
||||||
|
XlgtCall(FUNC_NETWORK_DOWN);
|
||||||
|
break;
|
||||||
#ifdef USE_WEBSERVER
|
#ifdef USE_WEBSERVER
|
||||||
case FUNC_WEB_ADD_MAIN_BUTTON:
|
case FUNC_WEB_ADD_MAIN_BUTTON:
|
||||||
XlgtCall(FUNC_WEB_ADD_MAIN_BUTTON);
|
XlgtCall(FUNC_WEB_ADD_MAIN_BUTTON);
|
||||||
|
|
|
@ -52,6 +52,8 @@ uint8_t Settings->knx_CB_param[MAX_KNX_CB] Type of Output (set relay,
|
||||||
|
|
||||||
#include <esp-knx-ip.h> // KNX Library
|
#include <esp-knx-ip.h> // KNX Library
|
||||||
|
|
||||||
|
bool knx_started = false;
|
||||||
|
|
||||||
address_t KNX_physs_addr; // Physical KNX address of this device
|
address_t KNX_physs_addr; // Physical KNX address of this device
|
||||||
address_t KNX_addr; // KNX Address converter variable
|
address_t KNX_addr; // KNX Address converter variable
|
||||||
|
|
||||||
|
@ -1329,6 +1331,15 @@ bool Xdrv11(uint32_t function)
|
||||||
case FUNC_PRE_INIT:
|
case FUNC_PRE_INIT:
|
||||||
KNX_INIT();
|
KNX_INIT();
|
||||||
break;
|
break;
|
||||||
|
case FUNC_NETWORK_UP:
|
||||||
|
if (!knx_started && Settings->flag.knx_enabled) { // CMND_KNX_ENABLED
|
||||||
|
KNXStart();
|
||||||
|
knx_started = true;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case FUNC_NETWORK_DOWN:
|
||||||
|
knx_started = false;
|
||||||
|
break;
|
||||||
// case FUNC_SET_POWER:
|
// case FUNC_SET_POWER:
|
||||||
// break;
|
// break;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1162,6 +1162,12 @@ bool Xdrv20(uint32_t function)
|
||||||
case FUNC_WEB_ADD_HANDLER:
|
case FUNC_WEB_ADD_HANDLER:
|
||||||
WebServer_on(PSTR("/description.xml"), HandleUpnpSetupHue);
|
WebServer_on(PSTR("/description.xml"), HandleUpnpSetupHue);
|
||||||
break;
|
break;
|
||||||
|
case FUNC_NETWORK_UP:
|
||||||
|
UdpConnect();
|
||||||
|
break;
|
||||||
|
case FUNC_NETWORK_DOWN:
|
||||||
|
UdpDisconnect();
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
|
|
|
@ -354,6 +354,12 @@ bool Xdrv21(uint32_t function)
|
||||||
WebServer_on(PSTR("/metainfoservice.xml"), HandleUpnpMetaService);
|
WebServer_on(PSTR("/metainfoservice.xml"), HandleUpnpMetaService);
|
||||||
WebServer_on(PSTR("/setup.xml"), HandleUpnpSetupWemo);
|
WebServer_on(PSTR("/setup.xml"), HandleUpnpSetupWemo);
|
||||||
break;
|
break;
|
||||||
|
case FUNC_NETWORK_UP:
|
||||||
|
UdpConnect();
|
||||||
|
break;
|
||||||
|
case FUNC_NETWORK_DOWN:
|
||||||
|
UdpDisconnect();
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
|
|
|
@ -453,6 +453,12 @@ bool Xdrv21(uint32_t function)
|
||||||
numOfWemoSwitch++;
|
numOfWemoSwitch++;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case FUNC_NETWORK_UP:
|
||||||
|
UdpConnect();
|
||||||
|
break;
|
||||||
|
case FUNC_NETWORK_DOWN:
|
||||||
|
UdpDisconnect();
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
|
|
Loading…
Reference in New Issue