diff --git a/src/classes/IoTScenario.cpp b/src/classes/IoTScenario.cpp index 7abce5f8..34b6eb0f 100644 --- a/src/classes/IoTScenario.cpp +++ b/src/classes/IoTScenario.cpp @@ -342,7 +342,8 @@ enum SysOp { sysop_getIP, sysop_mqttPub, sysop_getUptime, - sysop_mqttIsConnect + sysop_mqttIsConnect, + sysop_wifiIsConnect }; IoTValue sysExecute(SysOp command, std::vector ¶m) { @@ -446,6 +447,9 @@ IoTValue sysExecute(SysOp command, std::vector ¶m) { case sysop_mqttIsConnect: value.valD = mqttIsConnect(); break; + case sysop_wifiIsConnect: + value.valD = isNetworkActive(); + break; } return value; @@ -502,6 +506,8 @@ class SysCallExprAST : public ExprAST { operation = sysop_getUptime; else if (Callee == F("mqttIsConnect")) operation = sysop_mqttIsConnect; + else if (Callee == F("wifiIsConnect")) + operation = sysop_wifiIsConnect; else operation = sysop_notfound; } diff --git a/src/modules/exec/BrokerMQTT/BrokerMQTT.cpp b/src/modules/exec/BrokerMQTT/BrokerMQTT.cpp index 6176b3ee..91c2b99a 100644 --- a/src/modules/exec/BrokerMQTT/BrokerMQTT.cpp +++ b/src/modules/exec/BrokerMQTT/BrokerMQTT.cpp @@ -121,6 +121,8 @@ bool _global_debug = false; clientMqtt->loop(); if (picoMqtt) picoMqtt->loop(); + if (!clientMqtt && !picoMqtt) + vTaskDelete(NULL); // picoMqtt.loop(); // vTaskDelayUntil(&xLastWakeTime, pdMS_TO_TICKS(5)); } @@ -213,9 +215,11 @@ bool _global_debug = false; ~BrokerMQTT() { - vTaskDelete(brokerTask); - delete picoMqtt; - delete clientMqtt; + //vTaskDelete(brokerTask); + if (picoMqtt) + delete picoMqtt; + if (clientMqtt) + delete clientMqtt; } }; }