mirror of
https://github.com/arendst/Tasmota.git
synced 2025-07-23 10:46:31 +00:00
Add support for WiZMote with WiFi disabled
This commit is contained in:
parent
f383c877c6
commit
a2af12c969
@ -52,11 +52,18 @@ bool QuickEspNow::begin (uint8_t channel, uint32_t wifi_interface, bool synchron
|
|||||||
|
|
||||||
void QuickEspNow::stop () {
|
void QuickEspNow::stop () {
|
||||||
DEBUG_INFO (QESPNOW_TAG, "-------------> ESP-NOW STOP");
|
DEBUG_INFO (QESPNOW_TAG, "-------------> ESP-NOW STOP");
|
||||||
vTaskDelete (espnowTxTask);
|
if (espnowTxTask) {
|
||||||
vTaskDelete (espnowRxTask);
|
vTaskDelete (espnowTxTask);
|
||||||
|
espnowTxTask = nullptr;
|
||||||
|
}
|
||||||
|
if (espnowRxTask) {
|
||||||
|
vTaskDelete (espnowRxTask);
|
||||||
|
espnowRxTask = nullptr;
|
||||||
|
}
|
||||||
esp_now_unregister_recv_cb ();
|
esp_now_unregister_recv_cb ();
|
||||||
esp_now_unregister_send_cb ();
|
esp_now_unregister_send_cb ();
|
||||||
esp_now_deinit ();
|
esp_now_deinit ();
|
||||||
|
followWiFiChannel = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool QuickEspNow::readyToSendData () {
|
bool QuickEspNow::readyToSendData () {
|
||||||
|
@ -85,6 +85,7 @@ void QuickEspNow::stop () {
|
|||||||
esp_now_unregister_recv_cb ();
|
esp_now_unregister_recv_cb ();
|
||||||
esp_now_unregister_send_cb ();
|
esp_now_unregister_send_cb ();
|
||||||
esp_now_deinit ();
|
esp_now_deinit ();
|
||||||
|
followWiFiChannel = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool QuickEspNow::readyToSendData () {
|
bool QuickEspNow::readyToSendData () {
|
||||||
|
@ -30,7 +30,7 @@ struct WizMote {
|
|||||||
int rssi;
|
int rssi;
|
||||||
uint8_t index;
|
uint8_t index;
|
||||||
uint8_t battery_level;
|
uint8_t battery_level;
|
||||||
bool active;
|
uint8_t active;
|
||||||
} WizMote;
|
} WizMote;
|
||||||
|
|
||||||
/*********************************************************************************************\
|
/*********************************************************************************************\
|
||||||
@ -146,19 +146,36 @@ void EspNowDataReceived(uint8_t* mac, uint8_t* data, uint8_t len, signed int rss
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*********************************************************************************************\
|
|
||||||
*
|
|
||||||
\*********************************************************************************************/
|
|
||||||
|
|
||||||
void EspNowInit(void) {
|
void EspNowInit(void) {
|
||||||
if (!WizMote.active) {
|
if (0 == Settings->flag4.network_wifi) { // WiFi Off
|
||||||
quickEspNow.onDataRcvd(EspNowDataReceived);
|
if (WizMote.active != 2) {
|
||||||
#ifdef ESP32
|
uint32_t channel = 1;
|
||||||
// quickEspNow.setWiFiBandwidth (WIFI_IF_STA, WIFI_BW_HT20); // Only needed for ESP32 in case you need coexistence with ESP8266 in the same network
|
|
||||||
|
quickEspNow.stop();
|
||||||
|
delay(500); // Allow time to finish stopped WiFi by WifiDisable()
|
||||||
|
WiFi.mode(WIFI_STA);
|
||||||
|
#if defined ESP32
|
||||||
|
WiFi.disconnect(false, true);
|
||||||
|
#elif defined ESP8266
|
||||||
|
WiFi.disconnect(false);
|
||||||
#endif //ESP32
|
#endif //ESP32
|
||||||
if (quickEspNow.begin()) {
|
quickEspNow.onDataRcvd(EspNowDataReceived);
|
||||||
AddLog(LOG_LEVEL_INFO, PSTR("NOW: ESP-NOW started"));
|
if (quickEspNow.begin(channel)) { // Specify channel if no connected WiFi
|
||||||
WizMote.active = true;
|
AddLog(LOG_LEVEL_INFO, PSTR("NOW: ESP-NOW started on channel %d"), channel);
|
||||||
|
WizMote.active = 2;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else { // WiFi On
|
||||||
|
if (TasmotaGlobal.global_state.wifi_down) {
|
||||||
|
WizMote.active = 0;
|
||||||
|
}
|
||||||
|
else if (WizMote.active != 1) {
|
||||||
|
quickEspNow.stop();
|
||||||
|
quickEspNow.onDataRcvd(EspNowDataReceived);
|
||||||
|
if (quickEspNow.begin()) {
|
||||||
|
AddLog(LOG_LEVEL_INFO, PSTR("NOW: ESP-NOW started"));
|
||||||
|
WizMote.active = 1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -172,16 +189,9 @@ bool Xdrv77(uint32_t function) {
|
|||||||
|
|
||||||
bool result = false;
|
bool result = false;
|
||||||
|
|
||||||
/*
|
if (FUNC_EVERY_SECOND == function) {
|
||||||
if (FUNC_INIT == function) {
|
|
||||||
EspNowInit();
|
EspNowInit();
|
||||||
}
|
}
|
||||||
*/
|
|
||||||
if (FUNC_NETWORK_UP == function) {
|
|
||||||
if (!TasmotaGlobal.global_state.wifi_down) {
|
|
||||||
EspNowInit();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (WizMote.active) {
|
else if (WizMote.active) {
|
||||||
switch (function) {
|
switch (function) {
|
||||||
case FUNC_LOOP:
|
case FUNC_LOOP:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user