diff --git a/Arduino/BTCDieselHeater/.vscode/arduino.json b/Arduino/BTCDieselHeater/.vscode/arduino.json index 0a06502..10cccb6 100644 --- a/Arduino/BTCDieselHeater/.vscode/arduino.json +++ b/Arduino/BTCDieselHeater/.vscode/arduino.json @@ -3,5 +3,5 @@ "port": "192.168.0.108", "sketch": "BTCDieselHeater.ino", "output": "..\\build", - "configuration": "PSRAM=disabled,PartitionScheme=default,FlashMode=qio,FlashFreq=80,FlashSize=4M,UploadSpeed=921600,DebugLevel=none" + "configuration": "PSRAM=disabled,PartitionScheme=min_spiffs,FlashMode=qio,FlashFreq=80,FlashSize=4M,UploadSpeed=921600,DebugLevel=none" } \ No newline at end of file diff --git a/Arduino/BTCDieselHeater/BTCConfig.h b/Arduino/BTCDieselHeater/BTCConfig.h index 306b581..8d29295 100644 --- a/Arduino/BTCDieselHeater/BTCConfig.h +++ b/Arduino/BTCDieselHeater/BTCConfig.h @@ -11,6 +11,8 @@ #define USE_BLE_BLUETOOTH 0 #define USE_CLASSIC_BLUETOOTH 0 +#define USE_WIFI 1 + /////////////////////////////////////////////////////////////////////////////// // limit rate of Bluetooth delivery from enthusiastic OEM controllers diff --git a/Arduino/BTCDieselHeater/BTCDieselHeater.ino b/Arduino/BTCDieselHeater/BTCDieselHeater.ino index 63d767f..01c45db 100644 --- a/Arduino/BTCDieselHeater/BTCDieselHeater.ino +++ b/Arduino/BTCDieselHeater/BTCDieselHeater.ino @@ -170,10 +170,12 @@ void setup() { // this is the usual USB connection to a PC // DO THIS BEFORE WE TRY AND SEND DEBUG INFO! DebugPort.begin(115200); - + +#if USE_WIFI == 1 initWifi(WiFi_TriggerPin, FAILEDSSID, FAILEDPASSWORD); initOTA(); initWebServer(); +#endif pinMode(ListenOnlyPin, INPUT_PULLUP); // pin to enable passive mode pinMode(LED_Pin, OUTPUT); // On board LED indicator @@ -225,9 +227,12 @@ void setup() { void loop() { unsigned long timenow = millis(); + +#if USE_WIFI == 1 doWiFiManager(); DoOTA(); doWebServer(); +#endif // check for test commands received from PC Over USB if(DebugPort.available()) { @@ -430,6 +435,7 @@ void loop() // do some monitoring of the heater state variable // if abnormal transitions, introduce a smart error! + // This will also cancel ON/OFF requests if runstate in startup/shutdown SmartError.monitor(HeaterFrame1); // echo heater reponse data to Bluetooth client diff --git a/Arduino/BTCDieselHeater/BluetoothESP32.cpp b/Arduino/BTCDieselHeater/BluetoothESP32.cpp index cc31e56..ab62d5a 100644 --- a/Arduino/BTCDieselHeater/BluetoothESP32.cpp +++ b/Arduino/BTCDieselHeater/BluetoothESP32.cpp @@ -56,6 +56,7 @@ void CBluetoothESP32Classic::init() { _rxLine.clear(); + DebugPort.println("Initialising ESP32 Classic Bluetooth"); if(!SerialBT.begin("ESPHEATER")) { DebugPort.println("An error occurred initialising Bluetooth"); diff --git a/Arduino/BTCDieselHeater/SmartError.cpp b/Arduino/BTCDieselHeater/SmartError.cpp index c76bfe3..7a477ab 100644 --- a/Arduino/BTCDieselHeater/SmartError.cpp +++ b/Arduino/BTCDieselHeater/SmartError.cpp @@ -1,4 +1,5 @@ #include "SmartError.h" +#include "TxManage.h" CSmartError::CSmartError() { @@ -80,6 +81,19 @@ CSmartError::monitor(unsigned char newRunState) } } + if(m_prevRunState != newRunState) { + // check for transition to startup + // - force cancellation of an on request if we generated it + if(newRunState == 2) { + TxManage.queueOnRequest(false); // ensure ON request is cancelled + } + // check for transition to shutdown + // - force cancellation of an off request if we generated it + if(newRunState == 7) { + TxManage.queueOffRequest(false); // ensure OFF request is cancelled + } + } + m_prevRunState = newRunState; } diff --git a/Arduino/BTCDieselHeater/TxManage.cpp b/Arduino/BTCDieselHeater/TxManage.cpp index f95d233..3766e8c 100644 --- a/Arduino/BTCDieselHeater/TxManage.cpp +++ b/Arduino/BTCDieselHeater/TxManage.cpp @@ -42,15 +42,17 @@ void CTxManage::begin() } void -CTxManage::queueOnRequest() +CTxManage::queueOnRequest(bool set) { - m_bOnReq = true; + m_bOnReq = set; // allow cancel via heater frame decode + m_bOffReq = false; } void -CTxManage::queueOffRequest() +CTxManage::queueOffRequest(bool set) { - m_bOffReq = true; + m_bOffReq = set; // allow cancel via heater frame decode + m_bOnReq = false; } void @@ -77,11 +79,11 @@ CTxManage::PrepareFrame(const CProtocol& basisFrame, bool isBTCmaster) } else { if(m_bOnReq) { - m_bOnReq = false; +// m_bOnReq = false; // requires cancel via queueOnRequest(false) m_TxFrame.onCommand(); } if(m_bOffReq) { - m_bOffReq = false; +// m_bOffReq = false; // requires cancel via queueOffRequest(false) m_TxFrame.offCommand(); } } diff --git a/Arduino/BTCDieselHeater/TxManage.h b/Arduino/BTCDieselHeater/TxManage.h index 4cb2f0c..343bd3a 100644 --- a/Arduino/BTCDieselHeater/TxManage.h +++ b/Arduino/BTCDieselHeater/TxManage.h @@ -9,8 +9,8 @@ class CTxManage public: CTxManage(int TxGatePin, HardwareSerial& serial); - void queueOnRequest(); - void queueOffRequest(); + void queueOnRequest(bool set = true); // use false to remove repeating command + void queueOffRequest(bool set = true); // use false to remove repeating command void queueRawCommand(unsigned char val); void PrepareFrame(const CProtocol& Frame, bool isBTCmaster); void Start(unsigned long timenow);