Get settings for SIM800L from flash memmory; Fix SIM800L after refactoring

Signed-off-by: Martin Kolací <martin.kolaci@lmc.eu>
This commit is contained in:
Martin Kolací
2020-12-01 14:05:37 +01:00
parent 47dee76877
commit 2c6c0e6dca
2 changed files with 50 additions and 29 deletions

View File

@@ -139,6 +139,11 @@ typedef struct {
byte lcdBrightness; // 0 - auto, 1 .. 100% byte lcdBrightness; // 0 - auto, 1 .. 100%
byte debugScreen; // 0 - off, 1 - on byte debugScreen; // 0 - off, 1 - on
byte predrawnChargingGraphs; // 0 - off, 1 - on byte predrawnChargingGraphs; // 0 - off, 1 - on
#ifdef SIM800L_ENABLED
char gprsApn[64];
char remoteApiSrvr[64];
char remoteApiKey[13];
#endif //SIM800L_ENABLED
} SETTINGS_STRUC; } SETTINGS_STRUC;

View File

@@ -201,13 +201,13 @@ bool loadSettings() {
// Default OBD adapter MAC and UUID's // Default OBD adapter MAC and UUID's
tmpStr = "00:00:00:00:00:00"; // Pair via menu (middle button) tmpStr = "00:00:00:00:00:00"; // Pair via menu (middle button)
tmpStr.toCharArray(liveData->settings.obdMacAddress, 18); tmpStr.toCharArray(liveData->settings.obdMacAddress, tmpStr.length() + 1);
tmpStr = "000018f0-0000-1000-8000-00805f9b34fb"; // Default UUID's for VGate iCar Pro BLE4 adapter tmpStr = "000018f0-0000-1000-8000-00805f9b34fb"; // Default UUID's for VGate iCar Pro BLE4 adapter
tmpStr.toCharArray(liveData->settings.serviceUUID, 37); tmpStr.toCharArray(liveData->settings.serviceUUID, tmpStr.length() + 1);
tmpStr = "00002af0-0000-1000-8000-00805f9b34fb"; tmpStr = "00002af0-0000-1000-8000-00805f9b34fb";
tmpStr.toCharArray(liveData->settings.charTxUUID, 37); tmpStr.toCharArray(liveData->settings.charTxUUID, tmpStr.length() + 1);
tmpStr = "00002af1-0000-1000-8000-00805f9b34fb"; tmpStr = "00002af1-0000-1000-8000-00805f9b34fb";
tmpStr.toCharArray(liveData->settings.charRxUUID, 37); tmpStr.toCharArray(liveData->settings.charRxUUID, tmpStr.length() + 1);
liveData->settings.displayRotation = 1; // 1,3 liveData->settings.displayRotation = 1; // 1,3
liveData->settings.distanceUnit = 'k'; liveData->settings.distanceUnit = 'k';
@@ -218,6 +218,15 @@ bool loadSettings() {
liveData->settings.debugScreen = 0; liveData->settings.debugScreen = 0;
liveData->settings.predrawnChargingGraphs = 1; liveData->settings.predrawnChargingGraphs = 1;
#ifdef SIM800L_ENABLED
tmpStr = "internet.t-mobile.cz";
tmpStr.toCharArray(liveData->settings.gprsApn, tmpStr.length() + 1);
tmpStr = "http://api.example.com";
tmpStr.toCharArray(liveData->settings.remoteApiSrvr, tmpStr.length() + 1);
tmpStr = "example";
tmpStr.toCharArray(liveData->settings.remoteApiKey, tmpStr.length() + 1);
#endif //SIM800L_ENABLED
// Load settings and replace default values // Load settings and replace default values
Serial.println("Reading settings from eeprom."); Serial.println("Reading settings from eeprom.");
EEPROM.begin(sizeof(SETTINGS_STRUC)); EEPROM.begin(sizeof(SETTINGS_STRUC));
@@ -281,7 +290,7 @@ bool initStructure() {
liveData->params.automatickShutdownTimer = 0; liveData->params.automatickShutdownTimer = 0;
#ifdef SIM800L_ENABLED #ifdef SIM800L_ENABLED
liveData->params.lastDataSent = 0; liveData->params.lastDataSent = 0;
liveData->params.sim800l_enabled = true; liveData->params.sim800l_enabled = false;
#endif //SIM800L_ENABLED #endif //SIM800L_ENABLED
liveData->params.ignitionOn = false; liveData->params.ignitionOn = false;
liveData->params.ignitionOnPrevious = false; liveData->params.ignitionOnPrevious = false;
@@ -1826,9 +1835,7 @@ bool startBleScan() {
SIM800L SIM800L
*/ */
#ifdef SIM800L_ENABLED #ifdef SIM800L_ENABLED
bool sim800lSetup() { bool sim800lSetup() {
const char APN[] = "internet.t-mobile.cz";
Serial.println("Setting SIM800L module"); Serial.println("Setting SIM800L module");
SoftwareSerial* serial = new SoftwareSerial(SIM800L_RX, SIM800L_TX); SoftwareSerial* serial = new SoftwareSerial(SIM800L_RX, SIM800L_TX);
serial->begin(9600); serial->begin(9600);
@@ -1842,20 +1849,22 @@ bool sim800lSetup() {
} }
if(!sim800l_ready) { if(!sim800l_ready) {
params.sim800l_enabled = false; Serial.println("Problem to initialize SIM800L module");
Serial.println("Problem to initialize SIM800L module - module disabled");
} else { } else {
Serial.println("SIM800L - Setup Complete!"); Serial.println("SIM800L module initialized");
Serial.println("Setting GPRS connection");
Serial.print("Setting GPRS APN to: ");
Serial.println(liveData->settings.gprsApn);
bool sim800l_gprs = sim800l->setupGPRS(APN); bool sim800l_gprs = sim800l->setupGPRS(liveData->settings.gprsApn);
for(uint8_t i = 0; i < 5 && !sim800l_gprs; i++) { for(uint8_t i = 0; i < 5 && !sim800l_gprs; i++) {
Serial.println("Problem to set GPRS connection, retry in 1 sec"); Serial.println("Problem to set GPRS connection, retry in 1 sec");
delay(1000); delay(1000);
sim800l_gprs = sim800l->setupGPRS(APN); sim800l_gprs = sim800l->setupGPRS(liveData->settings.gprsApn);
} }
if(sim800l_gprs) { if(sim800l_gprs) {
liveData->params.sim800l_enabled = true;
Serial.println("GPRS OK"); Serial.println("GPRS OK");
} else { } else {
Serial.println("Problem to set GPRS"); Serial.println("Problem to set GPRS");
@@ -1892,23 +1901,30 @@ bool sendDataViaGPRS() {
StaticJsonDocument<250> jsonData; StaticJsonDocument<250> jsonData;
jsonData["soc"] = params.socPerc; jsonData["akey"] = liveData->settings.remoteApiKey;
jsonData["soh"] = params.sohPerc; jsonData["soc"] = liveData->params.socPerc;
jsonData["batK"] = params.batPowerKw; jsonData["soh"] = liveData->params.sohPerc;
jsonData["batA"] = params.batPowerAmp; jsonData["batK"] = liveData->params.batPowerKw;
jsonData["batV"] = params.batVoltage; jsonData["batA"] = liveData->params.batPowerAmp;
jsonData["auxV"] = params.auxVoltage; jsonData["batV"] = liveData->params.batVoltage;
jsonData["MinC"] = params.batMinC; jsonData["auxV"] = liveData->params.auxVoltage;
jsonData["MaxC"] = params.batMaxC; jsonData["MinC"] = liveData->params.batMinC;
jsonData["InlC"] = params.batInletC; jsonData["MaxC"] = liveData->params.batMaxC;
jsonData["fan"] = params.batFanStatus; jsonData["InlC"] = liveData->params.batInletC;
jsonData["cumCh"] = params.cumulativeEnergyChargedKWh; jsonData["fan"] = liveData->params.batFanStatus;
jsonData["cumD"] = params.cumulativeEnergyDischargedKWh; jsonData["cumCh"] = liveData->params.cumulativeEnergyChargedKWh;
jsonData["cumD"] = liveData->params.cumulativeEnergyDischargedKWh;
char payload[200]; char payload[200];
serializeJson(jsonData, payload); serializeJson(jsonData, payload);
uint16_t rc = sim800l->doPost("http://api.example.com", "application/json", payload, 10000, 10000); Serial.print("Sending payload: ");
Serial.println(payload);
Serial.print("Remote API server: ");
Serial.println(liveData->settings.remoteApiSrvr);
uint16_t rc = sim800l->doPost(liveData->settings.remoteApiSrvr, "application/json", payload, 10000, 10000);
if(rc == 200) { if(rc == 200) {
Serial.println(F("HTTP POST successful")); Serial.println(F("HTTP POST successful"));
} else { } else {
@@ -2069,9 +2085,9 @@ void loop() {
} }
#ifdef SIM800L_ENABLED #ifdef SIM800L_ENABLED
if(params.lastDataSent + SIM800L_TIMER < params.currentTime && params.sim800l_enabled) { if(liveData->params.lastDataSent + SIM800L_TIMER < liveData->params.currentTime && liveData->params.sim800l_enabled) {
sendDataViaGPRS(); sendDataViaGPRS();
params.lastDataSent = params.currentTime; liveData->params.lastDataSent = liveData->params.currentTime;
} }
#endif //SIM800L_ENABLED #endif //SIM800L_ENABLED