From 1f28bb7d5dfbb4954d49b959d8e5d1971052bbc9 Mon Sep 17 00:00:00 2001 From: Ray Jones Date: Thu, 11 Jul 2019 22:03:27 +1000 Subject: [PATCH] Added JSON IP query parameters --- AfterburnerCRC.exe | Bin 13312 -> 0 bytes Arduino/Afterburner/Afterburner.ino | 4 +- CRCgen/AfterBurnerCRC.cpp | Bin 11842 -> 7388 bytes CRCgen/Readme.txt | 11 ++++++ src/Afterburner/Afterburner.cpp | 4 +- src/Afterburner/src/Utility/BTC_JSON.cpp | 46 ++++++++++++++++++++++- src/Afterburner/src/Utility/BTC_JSON.h | 2 + src/Afterburner/src/WiFi/BTCWifi.cpp | 7 ++++ src/Afterburner/src/WiFi/BTCWifi.h | 1 + 9 files changed, 72 insertions(+), 3 deletions(-) delete mode 100644 AfterburnerCRC.exe create mode 100644 CRCgen/Readme.txt diff --git a/AfterburnerCRC.exe b/AfterburnerCRC.exe deleted file mode 100644 index efcdfcbea57a2d1e75f5cba73a2ccfe3e26362ab..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13312 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 KCH?32!2bc%8GBy< diff --git a/Arduino/Afterburner/Afterburner.ino b/Arduino/Afterburner/Afterburner.ino index 2e5318c..7e06a01 100644 --- a/Arduino/Afterburner/Afterburner.ino +++ b/Arduino/Afterburner/Afterburner.ino @@ -330,6 +330,7 @@ void setup() { NVstore.load(); initMQTTJSONmoderator(); // prevents JSON for MQTT unless requested + initIPJSONmoderator(); // prevents JSON for IP unless requested initTimerJSONmoderator(); // prevents JSON for timers unless requested @@ -742,7 +743,8 @@ void loop() ScreenManager.reqUpdate(); } - updateFilteredData(); + if(bHasHtrData) + updateFilteredData(); updateJSONclients(bReportJSONData); CommState.set(CommStates::Idle); NVstore.doSave(); // now is a good time to store to the NV storage, well away from any blue wire activity diff --git a/CRCgen/AfterBurnerCRC.cpp b/CRCgen/AfterBurnerCRC.cpp index cd215e4c9740d8baab0969df5c0705cae74ef81b..cfaaa7179c1de13f9882d3c229b16be99c832ef6 100644 GIT binary patch delta 77 zcmX>UbH{SRhsh$07kJ|td>Q;1To{}fLK%W5KW6maoW`?)4OMtEuW%|OW9{VQjIwAF Iho$R<0Cpb~v;Y7A literal 11842 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 diff --git a/CRCgen/Readme.txt b/CRCgen/Readme.txt new file mode 100644 index 0000000..bcc099d --- /dev/null +++ b/CRCgen/Readme.txt @@ -0,0 +1,11 @@ +AfterburnerCRC.cpp is used to append a CRC-16 value to the +compiled binary file. + +This CRC is used to confirm the binary image uploaded to the +Afterburner was genuinely intended for the Afterburner. + +Naively attempting to upload the direct compiled output binary +will result in rejection of the upload attempt. + +You will need to compile Afterburner.cpp and copy the resultant +executable to the repository root (adjacent to plaformio.ini) \ No newline at end of file diff --git a/src/Afterburner/Afterburner.cpp b/src/Afterburner/Afterburner.cpp index 2e5318c..7e06a01 100644 --- a/src/Afterburner/Afterburner.cpp +++ b/src/Afterburner/Afterburner.cpp @@ -330,6 +330,7 @@ void setup() { NVstore.load(); initMQTTJSONmoderator(); // prevents JSON for MQTT unless requested + initIPJSONmoderator(); // prevents JSON for IP unless requested initTimerJSONmoderator(); // prevents JSON for timers unless requested @@ -742,7 +743,8 @@ void loop() ScreenManager.reqUpdate(); } - updateFilteredData(); + if(bHasHtrData) + updateFilteredData(); updateJSONclients(bReportJSONData); CommState.set(CommStates::Idle); NVstore.doSave(); // now is a good time to store to the NV storage, well away from any blue wire activity diff --git a/src/Afterburner/src/Utility/BTC_JSON.cpp b/src/Afterburner/src/Utility/BTC_JSON.cpp index 9387267..570b18a 100644 --- a/src/Afterburner/src/Utility/BTC_JSON.cpp +++ b/src/Afterburner/src/Utility/BTC_JSON.cpp @@ -27,16 +27,17 @@ #include "../RTC/TimerManager.h" #include "../Bluetooth/BluetoothAbstract.h" #include "../WiFi/BTCWebServer.h" +#include "../WiFi/BTCWifi.h" #include "../cfg/BTCConfig.h" #include "macros.h" #include "../Protocol/Protocol.h" - char defaultJSONstr[64]; CModerator JSONmoderator; CTimerModerator TimerModerator; int timerConflict = 0; CModerator MQTTmoderator; +CModerator IPmoderator; CModerator GPIOmoderator; void validateTimer(int ID); @@ -179,6 +180,9 @@ void interpretJsonCommand(char* pLine) else if(strcmp("FanSensor", it->key) == 0) { setFanSensor(it->value.as()); } + else if(strcmp("IQuery", it->key) == 0) { + IPmoderator.reset(); // force IP params to be sent + } // MQTT parameters else if(strcmp("MQuery", it->key) == 0) { MQTTmoderator.reset(); // force MQTT params to be sent @@ -395,6 +399,26 @@ bool makeJSONStringMQTT(CModerator& moderator, char* opStr, int len) return bSend; } +bool makeJSONStringIP(CModerator& moderator, char* opStr, int len) +{ + StaticJsonBuffer<800> jsonBuffer; // create a JSON buffer on the stack + JsonObject& root = jsonBuffer.createObject(); // create object to add JSON commands to + + bool bSend = false; // reset should send flag + + bSend |= moderator.addJson("IP_AP", getWifiAPAddrStr(), root); + bSend |= moderator.addJson("IP_APMAC", getWifiAPMACStr(), root); + bSend |= moderator.addJson("IP_STA", getWifiSTAAddrStr(), root); + bSend |= moderator.addJson("IP_STAMAC", getWifiSTAMACStr(), root); + bSend |= moderator.addJson("IP_STASSID", getSSID().c_str(), root); + bSend |= moderator.addJson("IP_OTA", NVstore.getUserSettings().enableOTA, root); + + if(bSend) { + root.printTo(opStr, len); + } + + return bSend; +} void updateJSONclients(bool report) { @@ -477,6 +501,19 @@ void updateJSONclients(bool report) } } + // report MQTT params + { + if(makeJSONStringIP(IPmoderator, jsonStr, sizeof(jsonStr))) { + if (report) { + DebugPort.printf("JSON send: %s\r\n", jsonStr); + } + sendWebSocketString( jsonStr ); + std::string expand = jsonStr; + Expand(expand); + getBluetoothClient().send( expand.c_str() ); + } + } + { if(makeJSONStringGPIO(GPIOmoderator, jsonStr, sizeof(jsonStr))) { if (report) { @@ -501,6 +538,7 @@ void resetJSONmoderator() initTimerJSONmoderator(); #endif initMQTTJSONmoderator(); + initIPJSONmoderator(); GPIOmoderator.reset(); } @@ -510,6 +548,12 @@ void initMQTTJSONmoderator() makeJSONStringMQTT(MQTTmoderator, jsonStr, sizeof(jsonStr)); } +void initIPJSONmoderator() +{ + char jsonStr[800]; + makeJSONStringIP(IPmoderator, jsonStr, sizeof(jsonStr)); +} + void initTimerJSONmoderator() { char jsonStr[800]; diff --git a/src/Afterburner/src/Utility/BTC_JSON.h b/src/Afterburner/src/Utility/BTC_JSON.h index fcd5cbc..b42efa9 100644 --- a/src/Afterburner/src/Utility/BTC_JSON.h +++ b/src/Afterburner/src/Utility/BTC_JSON.h @@ -33,7 +33,9 @@ bool makeJSONTimerString(int channel, char* opStr, int len); bool makeJSONStringGPIO( CModerator& moderator, char* opStr, int len); void updateJSONclients(bool report); bool makeJSONStringMQTT(CModerator& moderator, char* opStr, int len); +bool makeJSONStringIP(CModerator& moderator, char* opStr, int len); void initMQTTJSONmoderator(); +void initIPJSONmoderator(); void initTimerJSONmoderator(); template diff --git a/src/Afterburner/src/WiFi/BTCWifi.cpp b/src/Afterburner/src/WiFi/BTCWifi.cpp index 3184c4e..80ad9d0 100644 --- a/src/Afterburner/src/WiFi/BTCWifi.cpp +++ b/src/Afterburner/src/WiFi/BTCWifi.cpp @@ -298,6 +298,13 @@ const char* getWifiSTAMACStr() return MACstr[0]; } +String getSSID() +{ + wifi_config_t conf; + esp_wifi_get_config(WIFI_IF_STA, &conf); + return String(reinterpret_cast(conf.sta.ssid)); +} + bool isWifiConnected() { return WiFi.status() == WL_CONNECTED; diff --git a/src/Afterburner/src/WiFi/BTCWifi.h b/src/Afterburner/src/WiFi/BTCWifi.h index 9c1162c..493f04b 100644 --- a/src/Afterburner/src/WiFi/BTCWifi.h +++ b/src/Afterburner/src/WiFi/BTCWifi.h @@ -30,6 +30,7 @@ const char* getWifiAPAddrStr(); const char* getWifiSTAAddrStr(); const char* getWifiAPMACStr(); const char* getWifiSTAMACStr(); +String getSSID(); bool isWifiConnected(); bool isWifiAP();