diff --git a/README.md b/README.md index 514cf444..0420bb09 100644 --- a/README.md +++ b/README.md @@ -29,7 +29,12 @@ A 3d-printable housing can be found here: https://www.thingiverse.com/thing:4571 -##### Rolling - (2020-09-13) +##### Rolling - (2020-09-14) + +* Implementation of hostname in wlan.ini (`hostname = "HOSTNAME")` - Parameter is optional +* Bug correction DecimalShift + +2020-09-13 * Bug fixing DecimalShift (digits after comma) diff --git a/code/lib/connect_wlan/connect_wlan.cpp b/code/lib/connect_wlan/connect_wlan.cpp index da65a3fb..e39c75fc 100644 --- a/code/lib/connect_wlan/connect_wlan.cpp +++ b/code/lib/connect_wlan/connect_wlan.cpp @@ -100,7 +100,7 @@ static esp_err_t event_handler(void *ctx, system_event_t *event) return ESP_OK; } -void initialise_wifi(std::string _ssid, std::string _passphrase) +void initialise_wifi(std::string _ssid, std::string _passphrase, std::string _hostname) { ESP_ERROR_CHECK(esp_event_loop_init(event_handler, NULL) ); wifi_event_group = xEventGroupCreate(); @@ -123,10 +123,11 @@ void initialise_wifi(std::string _ssid, std::string _passphrase) } -void LoadWlanFromFile(std::string fn, std::string &_ssid, std::string &_passphrase) +void LoadWlanFromFile(std::string fn, std::string &_ssid, std::string &_passphrase, std::string &_hostname) { string line = ""; std::vector zerlegt; + _hostname = "iciruit"; FILE* pFile; fn = FormatFileName(fn); @@ -145,13 +146,22 @@ void LoadWlanFromFile(std::string fn, std::string &_ssid, std::string &_passphra // printf("%s", line.c_str()); zerlegt = ZerlegeZeile(line, "="); zerlegt[0] = trim(zerlegt[0], " "); - zerlegt[1] = trim(zerlegt[1], " "); + zerlegt[1] = trim(zerlegt[1], " "); + + if ((zerlegt.size() > 1) && (toUpper(zerlegt[0]) == "HOSTNAME")){ + _hostname = zerlegt[1]; + if ((_hostname[0] == '"') && (_hostname[_hostname.length()-1] == '"')){ + _hostname = _hostname.substr(1, _hostname.length()-2); + } + } + if ((zerlegt.size() > 1) && (toUpper(zerlegt[0]) == "SSID")){ _ssid = zerlegt[1]; if ((_ssid[0] == '"') && (_ssid[_ssid.length()-1] == '"')){ _ssid = _ssid.substr(1, _ssid.length()-2); } } + if ((zerlegt.size() > 1) && (toUpper(zerlegt[0]) == "PASSWORD")){ _passphrase = zerlegt[1]; if ((_passphrase[0] == '"') && (_passphrase[_passphrase.length()-1] == '"')){ diff --git a/code/lib/connect_wlan/connect_wlan.h b/code/lib/connect_wlan/connect_wlan.h index bacd91ac..faa5c57d 100644 --- a/code/lib/connect_wlan/connect_wlan.h +++ b/code/lib/connect_wlan/connect_wlan.h @@ -6,8 +6,8 @@ const int CONNECTED_BIT = BIT0; -void initialise_wifi(std::string _ssid, std::string _passphrase); +void initialise_wifi(std::string _ssid, std::string _passphrase, std::string _hostname); -void LoadWlanFromFile(std::string fn, std::string &_ssid, std::string &_passphrase); +void LoadWlanFromFile(std::string fn, std::string &_ssid, std::string &_passphrase, std::string &_hostname); #endif \ No newline at end of file diff --git a/code/lib/jomjol_flowcontroll/ClassFlowControll.cpp b/code/lib/jomjol_flowcontroll/ClassFlowControll.cpp index f9c49f2f..cc1a92a4 100644 --- a/code/lib/jomjol_flowcontroll/ClassFlowControll.cpp +++ b/code/lib/jomjol_flowcontroll/ClassFlowControll.cpp @@ -230,7 +230,7 @@ std::string ClassFlowControll::UpdatePrevalue(std::string _newvalue) if (flowpostprocessing) { flowpostprocessing->SavePreValue(zw); - return _newvalue; + return to_string(zw); } return std::string(); diff --git a/code/lib/jomjol_flowcontroll/ClassFlowPostProcessing.cpp b/code/lib/jomjol_flowcontroll/ClassFlowPostProcessing.cpp index 5da8e94c..178b28b7 100644 --- a/code/lib/jomjol_flowcontroll/ClassFlowPostProcessing.cpp +++ b/code/lib/jomjol_flowcontroll/ClassFlowPostProcessing.cpp @@ -19,8 +19,8 @@ string ClassFlowPostProcessing::GetPreValue() { if (((*ListFlowControll)[i])->name().compare("ClassFlowAnalog") == 0) { - int AnzahlNachkomma = ((ClassFlowAnalog*)(*ListFlowControll)[i])->AnzahlROIs(); - result = RundeOutput(PreValue, AnzahlNachkomma - DecimalShift); + int AnzahlAnalog = ((ClassFlowAnalog*)(*ListFlowControll)[i])->AnzahlROIs(); + result = RundeOutput(PreValue, AnzahlAnalog - DecimalShift); } } @@ -78,8 +78,8 @@ bool ClassFlowPostProcessing::LoadPreValue(void) { if (((*ListFlowControll)[i])->name().compare("ClassFlowAnalog") == 0) { - int AnzahlNachkomma = ((ClassFlowAnalog*)(*ListFlowControll)[i])->AnzahlROIs(); - ReturnValue = RundeOutput(Value, AnzahlNachkomma - DecimalShift); + int AnzahlAnalog = ((ClassFlowAnalog*)(*ListFlowControll)[i])->AnzahlROIs(); + ReturnValue = RundeOutput(Value, AnzahlAnalog - DecimalShift); ReturnValueNoError = ReturnValue; } } @@ -262,7 +262,7 @@ bool ClassFlowPostProcessing::doFlow(string zwtime) string zwvalue; bool isdigit = false; bool isanalog = false; - int AnzahlNachkomma = 0; + int AnzahlAnalog = 0; string zw; string error = ""; time_t imagetime = 0; @@ -282,7 +282,7 @@ bool ClassFlowPostProcessing::doFlow(string zwtime) { isanalog = true; analog = (*ListFlowControll)[i]->getReadout(); - AnzahlNachkomma = ((ClassFlowAnalog*)(*ListFlowControll)[i])->AnzahlROIs(); + AnzahlAnalog = ((ClassFlowAnalog*)(*ListFlowControll)[i])->AnzahlROIs(); } } @@ -329,6 +329,7 @@ bool ClassFlowPostProcessing::doFlow(string zwtime) return true; } +/* if (isdigit) { int lastanalog = -1; @@ -342,15 +343,19 @@ bool ClassFlowPostProcessing::doFlow(string zwtime) zw = zw + "."; if (isanalog) zw = zw + analog; + zw = ShiftDecimal(zw, DecimalShift); +*/ + + zw = ErsetzteN(ReturnRawValue); Value = std::stof(zw); - zwvalue = RundeOutput(Value, AnzahlNachkomma - DecimalShift); + zwvalue = RundeOutput(Value, AnzahlAnalog - DecimalShift); if ((!AllowNegativeRates) && (Value < PreValue)) { error = "Negative Rate - Returned old value - read value: " + zwvalue; Value = PreValue; - zwvalue = RundeOutput(Value, AnzahlNachkomma - DecimalShift); + zwvalue = RundeOutput(Value, AnzahlAnalog - DecimalShift); } else { @@ -358,7 +363,7 @@ bool ClassFlowPostProcessing::doFlow(string zwtime) { error = "Rate too high - Returned old value - read value: " + zwvalue; Value = PreValue; - zwvalue = RundeOutput(Value, AnzahlNachkomma - DecimalShift); + zwvalue = RundeOutput(Value, AnzahlAnalog - DecimalShift); } } @@ -394,18 +399,27 @@ string ClassFlowPostProcessing::RundeOutput(float _in, int _anzNachkomma){ } -string ClassFlowPostProcessing::ErsetzteN(string input, int lastvalueanalog = -1) +string ClassFlowPostProcessing::ErsetzteN(string input) { int posN, posPunkt; int pot, ziffer; float zw; posN = findDelimiterPos(input, "N"); - posPunkt = input.length(); + posPunkt = findDelimiterPos(input, "."); + if (posPunkt == std::string::npos){ + posPunkt = input.length(); + } while (posN != std::string::npos) { - pot = posPunkt - posN - 1; + if (posN < posPunkt) { + pot = posPunkt - posN - 1; + } + else { + pot = posPunkt - posN; + } + zw = PreValue / pow(10, pot); ziffer = ((int) zw) % 10; input[posN] = ziffer + 48; @@ -413,13 +427,11 @@ string ClassFlowPostProcessing::ErsetzteN(string input, int lastvalueanalog = -1 posN = findDelimiterPos(input, "N"); } -///////////////////////////// TestCode -/* - input = "10"; - posPunkt = input.length(); - PreValue = 9.5; - lastvalueanalog = 7; -*/ + return input; +} + +string ClassFlowPostProcessing::checkDigitConsistency(string input, int _decilamshift, int lastvalueanalog){ +/* if (checkDigitIncreaseConsistency && lastvalueanalog > -1) { int zifferIST; @@ -450,7 +462,7 @@ string ClassFlowPostProcessing::ErsetzteN(string input, int lastvalueanalog = -1 } - } +*/ return input; } diff --git a/code/lib/jomjol_flowcontroll/ClassFlowPostProcessing.h b/code/lib/jomjol_flowcontroll/ClassFlowPostProcessing.h index 5e0bb79e..e27dae32 100644 --- a/code/lib/jomjol_flowcontroll/ClassFlowPostProcessing.h +++ b/code/lib/jomjol_flowcontroll/ClassFlowPostProcessing.h @@ -28,7 +28,8 @@ protected: bool LoadPreValue(void); string ShiftDecimal(string in, int _decShift); - string ErsetzteN(string, int lastvalueanalog); + string ErsetzteN(string); + string checkDigitConsistency(string, int _decilamshift, int lastvalueanalog = -1); string RundeOutput(float _in, int _anzNachkomma); public: diff --git a/code/src/main.cpp b/code/src/main.cpp index c7849f37..9b5d4eba 100644 --- a/code/src/main.cpp +++ b/code/src/main.cpp @@ -113,11 +113,13 @@ extern "C" void app_main() LogFile.WriteToFile("Startsequence 03"); std::string ssid = ""; std::string password = ""; - LoadWlanFromFile("/sdcard/wlan.ini", ssid, password); + std::string hostname = ""; + + LoadWlanFromFile("/sdcard/wlan.ini", ssid, password, hostname); LogFile.WriteToFile("Startsequence 04"); printf("WLan: %s, %s\n", ssid.c_str(), password.c_str()); - initialise_wifi(ssid, password); + initialise_wifi(ssid, password, hostname); LogFile.WriteToFile("Startsequence 05"); TickType_t xDelay; diff --git a/firmware/firmware.bin b/firmware/firmware.bin index a3adfbed..221603e8 100644 Binary files a/firmware/firmware.bin and b/firmware/firmware.bin differ diff --git a/sd-card/wlan.ini b/sd-card/wlan.ini index f979b345..fac2d609 100644 --- a/sd-card/wlan.ini +++ b/sd-card/wlan.ini @@ -1,2 +1,4 @@ ssid = "SSID" -password = "PASSWORD" \ No newline at end of file +password = "PASSWORD" +hostname = "watermeter" +;hostname is optional \ No newline at end of file