Revert "Merge pull request #1167 from haverland/fix_analogtodigital"

This reverts commit ba59c8ee66, reversing
changes made to 730006977c.
This commit is contained in:
jomjol
2022-10-14 18:12:11 +02:00
parent ba59c8ee66
commit 2ed3f4aa40
17 changed files with 753 additions and 626 deletions

View File

@@ -269,8 +269,7 @@ private:
std::unique_ptr< Rgb[] > _secondBuffer;
Rgb *_buffer;
SemaphoreHandle_t _finishedFlag;
// xSemaphoreHandle _finishedFlag;
xSemaphoreHandle _finishedFlag;
int _pixelPosition;
int _componentPosition;

View File

@@ -769,7 +769,7 @@ std::string unzip_new(std::string _in_zip_file, std::string _target_zip, std::st
zw = std::string(archive_filename);
printf("Rohfilename: %s\n", zw.c_str());
if (getFileType(zw) == "BIN")
if (toUpper(zw) == "FIRMWARE.BIN")
{
zw = _target_bin + zw;
ret = zw;

View File

@@ -35,7 +35,7 @@ string ClassFlowCNNGeneral::getReadout(int _analog = 0, bool _extendedResolution
if (GENERAL[_analog]->ROI.size() == 0)
return result;
if (debugdetailgeneral) LogFile.WriteToFile("ClassFlowCNNGeneral::getReadout _analog=" + std::to_string(_analog) + ", _extendedResolution=" + std::to_string(_extendedResolution) + ", prev=" + std::to_string(prev));
if (CNNType == Analogue || CNNType == Analogue100)
{
float zahl = GENERAL[_analog]->ROI[GENERAL[_analog]->ROI.size() - 1]->result_float;
@@ -147,6 +147,7 @@ int ClassFlowCNNGeneral::ZeigerEvalHybridNeu(float zahl, float zahl_vorgaenger,
if (AnalogerVorgaenger)
{
// result = ZeigerEvalAnalogToDigitNeu(zahl, eval_vorgaenger);
result = ZeigerEvalAnalogToDigitNeu(zahl, zahl_vorgaenger, eval_vorgaenger);
if (debugdetailgeneral) LogFile.WriteToFile("ClassFlowCNNGeneral::ZeigerEvalHybridNeu - Analoger Vorgänger, Bewertung über ZeigerEvalAnalogNeu = " + std::to_string(result) +
" zahl: " + std::to_string(zahl) + " zahl_vorgaenger = " + std::to_string(zahl_vorgaenger)+ " eval_vorgaenger = " + std::to_string(eval_vorgaenger) + " DigitalUnschaerfe = " + std::to_string(DigitalUnschaerfe));
@@ -215,22 +216,20 @@ int ClassFlowCNNGeneral::ZeigerEvalAnalogToDigitNeu(float zahl, float ziffer_vor
return result;
}
/* if ((ziffer_vorgaenger >= DigitalUebergangsbereichVorgaengerAnalogToDigit ) && (ziffer_vorgaenger <= (10.0 - DigitalUebergangsbereichVorgaengerAnalogToDigit)))
if ((ziffer_vorgaenger >= DigitalUebergangsbereichVorgaengerAnalogToDigit ) && (ziffer_vorgaenger <= (10.0 - DigitalUebergangsbereichVorgaengerAnalogToDigit)))
{
Bei DigitalUebergangsbereichVorgaengerAnalogToDigit verursacht runden weitere Fehler
// kein Ziffernwechsel, da Vorgänger weit genug weg ist (0+/-DigitalUebergangsbereichVorgaenger) --> zahl wird gerundet
if ((ergebnis_nachkomma <= 2) || (ergebnis_nachkomma >= 8)) // Band um die Ziffer --> Runden, da Ziffer im Rahmen Ungenauigkeit erreicht
result = ((int) trunc(zahl) + 10) % 10;
else
result = ((int) round(zahl) + 10) % 10;
result = ((int) trunc(zahl) + 10) % 10;
else
result = ((int) trunc(zahl) + 10) % 10;
if (debugdetailgeneral) LogFile.WriteToFile("ClassFlowCNNGeneral::ZeigerEvalAnalogToDigitNeu - kein Ziffernwechsel, da Vorkomma weit genug weg = " + std::to_string(result) +
" zahl: " + std::to_string(zahl) + " ziffer_vorgaenger = " + std::to_string(ziffer_vorgaenger) + " DigitalUnschaerfe = " + std::to_string(DigitalUnschaerfe));
return result;
}
*/
if (ziffer_vorgaenger <= 3 && eval_vorgaenger<9) // Nulldurchgang hat stattgefunden (!Bewertung über Prev_value und nicht Zahl!) --> hier aufrunden (2.8 --> 3, aber auch 3.1 --> 3)
if (ziffer_vorgaenger <= 1 && eval_vorgaenger<9) // Nulldurchgang hat stattgefunden (!Bewertung über Prev_value und nicht Zahl!) --> hier aufrunden (2.8 --> 3, aber auch 3.1 --> 3)
// aber Sonderfall ziffer_vorgaeger = 0.1 vor_vorgaenger 9.9 => eval_vorgaenger ist 9, damit hat Nulldurchgang nicht stattgefunden.
{
if (ergebnis_nachkomma > 5)
@@ -242,15 +241,10 @@ int ClassFlowCNNGeneral::ZeigerEvalAnalogToDigitNeu(float zahl, float ziffer_vor
return result;
}
// Vorlauf ziffer_vorgaenger <=9.9 und ergebnis_nachkomma >=0..1 (digits drehen nach umschalten nicht gleich weiter)
// Beispiel dig=4.0, ana=9.1 ==> dig=3
// Nachlauf ziffer_vorgaenger 0..2 und ergebnis_nachkomma 8..9
// Beispiel dig=6.8, ana=2.2 ==> dig=7
// dig=4.8, ana=5.5 => dig=4
// Aber zwischen ziffer_vorgaenger 3..8 keine Veränderung
if (ergebnis_nachkomma >= 1 || (ziffer_vorgaenger>3 && ziffer_vorgaenger<8) )
// bleibt nur >= 9.5 --> noch kein Nulldurchgang --> 2.8 --> 2, und 3.1 --> 2
// hier auf 4 reduziert, da erst ab Vorgänder 9 anfängt umzustellen. Bei 9.5 Vorgänger kann die aktuelle
// Zahl noch x.4 - x.5 sein.
if (ergebnis_nachkomma >= 4)
result = ergebnis_vorkomma;
else
result = (ergebnis_vorkomma - 1 + 10) % 10;

View File

@@ -28,7 +28,7 @@ protected:
float DigitalUnschaerfe = 0.2;
int DigitalBand = 3;
float DigitalAnalogerVorgaengerUebergangsbereich = 2;
// nicht mehr benötigt float DigitalUebergangsbereichVorgaengerAnalogToDigit = 1; // war vorher 2
float DigitalUebergangsbereichVorgaengerAnalogToDigit = 1; // war vorher 2
float DigitalUebergangsbereichVorgaenger = 0.7; // 9.3 - 0.7
float DigitalUebergangsbereichVorlauf = 9.7; // Vorlauf-Nulldurchgang passiert erst ab ca. 9.7

View File

@@ -404,7 +404,7 @@ string ClassFlowControll::GetPrevalue(std::string _number)
std::string ClassFlowControll::UpdatePrevalue(std::string _newvalue, std::string _numbers, bool _extern)
{
double zw;
float zw;
char* p;
_newvalue = trim(_newvalue);
@@ -416,7 +416,7 @@ std::string ClassFlowControll::UpdatePrevalue(std::string _newvalue, std::string
}
else
{
zw = strtod(_newvalue.c_str(), &p);
zw = strtof(_newvalue.c_str(), &p);
if (zw == 0)
return "- Error in String to Value Conversion!!! Must be of format value=123.456";
}

View File

@@ -35,7 +35,6 @@ std::string ClassFlowPostProcessing::GetJSON(std::string _id, std::string _mac,
else
json += " \"value\": \"\"," + _lineend;
json += " \"raw\": \"" + NUMBERS[i]->ReturnRawValue + "\"," + _lineend;
json += " \"pre\": \"" + NUMBERS[i]->ReturnPreValue + "\"," + _lineend;
json += " \"error\": \"" + NUMBERS[i]->ErrorMessageText + "\"," + _lineend;
if (NUMBERS[i]->ReturnRateValue.length() > 0)
json += " \"rate\": " + NUMBERS[i]->ReturnRateValue + "," + _lineend;
@@ -79,7 +78,7 @@ void ClassFlowPostProcessing::SetPreValue(double zw, string _numbers, bool _exte
if (NUMBERS[j]->name == _numbers)
{
NUMBERS[j]->PreValue = zw;
NUMBERS[j]->ReturnPreValue = RundeOutput(zw, NUMBERS[j]->Nachkomma);
NUMBERS[j]->ReturnPreValue = std::to_string(zw);
NUMBERS[j]->PreValueOkay = true;
if (_extern)
{

View File

@@ -52,7 +52,6 @@ static esp_err_t mqtt_event_handler_cb(esp_mqtt_event_handle_t event)
break;
case MQTT_EVENT_DISCONNECTED:
ESP_LOGI(TAG_INTERFACEMQTT, "MQTT_EVENT_DISCONNECTED");
esp_mqtt_client_reconnect(client);
break;
case MQTT_EVENT_SUBSCRIBED:
ESP_LOGI(TAG_INTERFACEMQTT, "MQTT_EVENT_SUBSCRIBED, msg_id=%d", event->msg_id);
@@ -100,6 +99,17 @@ bool MQTTInit(std::string _mqttURI, std::string _clientid, std::string _user, st
int _lzw = _zwmessage.length();
/* LWTContext = _LWTContext;
mqtt_cfg.uri = _mqttURI.c_str();
mqtt_cfg.client_id = _clientid.c_str();
mqtt_cfg.lwt_topic = _LWTContext.c_str();
mqtt_cfg.lwt_msg = _zwmessage.c_str();
mqtt_cfg.lwt_retain = 1;
mqtt_cfg.lwt_msg_len = _lzw;
mqtt_cfg.keepalive = _keepalive;
*/
esp_mqtt_client_config_t mqtt_cfg = {
.uri = _mqttURI.c_str(),
.client_id = _clientid.c_str(),
@@ -154,6 +164,39 @@ bool MQTTInit(std::string _mqttURI, std::string _clientid, std::string _user, st
return true;
}
/*
void MQTTReConnect(){
std::string _zwmessage = "connection lost";
int _lzw = _zwmessage.length();
>>>>>>> Stashed changes
client = esp_mqtt_client_init(&mqtt_cfg);
if (client)
{
if (esp_mqtt_client_register_event(client, esp_mmqtt_ID, mqtt_event_handler, client) != ESP_OK)
LogFile.WriteToFile("MQTT - Could not register event!");
if (esp_mqtt_client_start(client) != ESP_OK)
LogFile.WriteToFile("MQTT - Could not start client!");
<<<<<<< Updated upstream
if(MQTTPublish(_LWTContext, "", 1)) {
LogFile.WriteToFile("MQTT - Client init successful");
}
=======
if (mqtt_connected)
MQTTPublish(LWTContext, "", 1);
else
LogFile.WriteToFile("Problem with (Re)Connection not successful!");
>>>>>>> Stashed changes
}
else
{
LogFile.WriteToFile("MQTT - Could not Init client!");
}
}
*/
void MQTTdestroy() {
if (client != NULL) {