Make distance floats with one decimal (#17021)

This commit is contained in:
Theo Arends 2022-11-08 16:16:15 +01:00
parent 05b43fb143
commit 64ed79debc
5 changed files with 20 additions and 22 deletions

View File

@ -901,6 +901,7 @@ const char HTTP_SNS_RANGE_CHR[] PROGMEM = "{s}%s " D_RANGE "{
const char HTTP_SNS_RANGE[] PROGMEM = "{s}%s " D_RANGE "{m}%d" "{e}"; const char HTTP_SNS_RANGE[] PROGMEM = "{s}%s " D_RANGE "{m}%d" "{e}";
const char HTTP_SNS_DISTANCE[] PROGMEM = "{s}%s " D_DISTANCE "{m}%d " D_UNIT_MILLIMETER "{e}"; const char HTTP_SNS_DISTANCE[] PROGMEM = "{s}%s " D_DISTANCE "{m}%d " D_UNIT_MILLIMETER "{e}";
const char HTTP_SNS_DISTANCE_CM[] PROGMEM = "{s}%s " D_DISTANCE "{m}%s " D_UNIT_CENTIMETER "{e}"; const char HTTP_SNS_DISTANCE_CM[] PROGMEM = "{s}%s " D_DISTANCE "{m}%s " D_UNIT_CENTIMETER "{e}";
const char HTTP_SNS_F_DISTANCE_CM[] PROGMEM = "{s}%s " D_DISTANCE "{m}%1_f " D_UNIT_CENTIMETER "{e}";
const char HTTP_SNS_HALL_EFFECT[] PROGMEM = "{s}%s " D_HALL_EFFECT "{m}%d" "{e}"; const char HTTP_SNS_HALL_EFFECT[] PROGMEM = "{s}%s " D_HALL_EFFECT "{m}%d" "{e}";
const char HTTP_SNS_VOLTAGE[] PROGMEM = "{s}" D_VOLTAGE "{m}%s " D_UNIT_VOLT "{e}"; const char HTTP_SNS_VOLTAGE[] PROGMEM = "{s}" D_VOLTAGE "{m}%s " D_UNIT_VOLT "{e}";
const char HTTP_SNS_CURRENT[] PROGMEM = "{s}" D_CURRENT "{m}%s " D_UNIT_AMPERE "{e}"; const char HTTP_SNS_CURRENT[] PROGMEM = "{s}" D_CURRENT "{m}%s " D_UNIT_AMPERE "{e}";

View File

@ -190,19 +190,16 @@ void Sr04TReading(void) {
void Sr04Show(bool json) { void Sr04Show(bool json) {
if (SR04.valid) { // Check if read failed if (SR04.valid) { // Check if read failed
char distance_chr[33];
dtostrfd(SR04.distance, 3, distance_chr);
if(json) { if(json) {
ResponseAppend_P(PSTR(",\"SR04\":{\"" D_JSON_DISTANCE "\":%s}"), distance_chr); ResponseAppend_P(PSTR(",\"SR04\":{\"" D_JSON_DISTANCE "\":%1_f}"), &SR04.distance);
#ifdef USE_DOMOTICZ #ifdef USE_DOMOTICZ
if (0 == TasmotaGlobal.tele_period) { if (0 == TasmotaGlobal.tele_period) {
DomoticzSensor(DZ_COUNT, distance_chr); // Send distance as Domoticz Counter value DomoticzFloatSensor(DZ_COUNT, SR04.distance); // Send distance as Domoticz Counter value
} }
#endif // USE_DOMOTICZ #endif // USE_DOMOTICZ
#ifdef USE_WEBSERVER #ifdef USE_WEBSERVER
} else { } else {
WSContentSend_PD(HTTP_SNS_DISTANCE_CM, "SR04", distance_chr); WSContentSend_PD(HTTP_SNS_F_DISTANCE_CM, "SR04", &SR04.distance);
#endif // USE_WEBSERVER #endif // USE_WEBSERVER
} }
} }

View File

@ -32,7 +32,7 @@
#include <TasmotaSerial.h> #include <TasmotaSerial.h>
TasmotaSerial *HRXLSerial = nullptr; TasmotaSerial *HRXLSerial = nullptr;
uint32_t hrxl_distance_cm = 0; // distance, cm uint32_t hrxl_distance_mm = 0; // distance, mm
/*********************************************************************************************/ /*********************************************************************************************/
@ -62,17 +62,18 @@ void HRXLEverySecond(void) {
} }
} }
if (num_read > 1) { if (num_read > 1) {
hrxl_distance_cm = int(sum / num_read) / 10; // cm hrxl_distance_mm = int(sum / num_read); // mm
} }
} }
void HRXLShow(bool json) { void HRXLShow(bool json) {
char types[5] = "HRXL"; char types[5] = "HRXL";
float distance = (float)hrxl_distance_mm / 10; // cm
if (json) { if (json) {
ResponseAppend_P(PSTR(",\"%s\":{\"" D_JSON_DISTANCE "\":%d}"), types, hrxl_distance_cm); ResponseAppend_P(PSTR(",\"%s\":{\"" D_JSON_DISTANCE "\":%1_f}"), types, &distance);
#ifdef USE_WEBSERVER #ifdef USE_WEBSERVER
} else { } else {
WSContentSend_PD(HTTP_SNS_DISTANCE_CM, types, hrxl_distance_cm); WSContentSend_PD(HTTP_SNS_F_DISTANCE_CM, types, &distance);
#endif // USE_WEBSERVER #endif // USE_WEBSERVER
} }
} }

View File

@ -41,7 +41,7 @@ TasmotaSerial *DYPSerial = nullptr;
#define DYP_ABOVEMAX 4999 #define DYP_ABOVEMAX 4999
#define DYP_NOSENSOR 5999 #define DYP_NOSENSOR 5999
uint16_t DYPDistance = 0; // distance in centimeters uint16_t DYPDistance = 0; // distance in millimeters
/*********************************************************************************************/ /*********************************************************************************************/
@ -87,7 +87,7 @@ void DYPEverySecond(void) {
if (data > DYP_MAX) { if (data > DYP_MAX) {
data = DYP_ABOVEMAX; data = DYP_ABOVEMAX;
} }
DYPDistance = data / 10; // cm DYPDistance = data; // mm
} else { } else {
DYPDistance = DYP_CRCERROR; DYPDistance = DYP_CRCERROR;
} }
@ -97,11 +97,12 @@ void DYPEverySecond(void) {
void DYPShow(bool json) { void DYPShow(bool json) {
char types[4] = "DYP"; char types[4] = "DYP";
float distance = (float)DYPDistance / 10; // cm
if (json) { if (json) {
ResponseAppend_P(PSTR(",\"%s\":{\"" D_JSON_DISTANCE "\":%d}"), types, DYPDistance); ResponseAppend_P(PSTR(",\"%s\":{\"" D_JSON_DISTANCE "\":%1_f}"), types, &distance);
#ifdef USE_WEBSERVER #ifdef USE_WEBSERVER
} else { } else {
WSContentSend_PD(HTTP_SNS_DISTANCE_CM, types, DYPDistance); WSContentSend_PD(HTTP_SNS_F_DISTANCE_CM, types, &distance);
#endif // USE_WEBSERVER #endif // USE_WEBSERVER
} }
} }

View File

@ -185,24 +185,22 @@ const char HTTP_SNS_SIGNALSTRENGTH[] PROGMEM = "{s}%s " D_SIGNALSTRENGTH "{m}%d{
const char HTTP_SNS_CHIPTEMPERATURE[] PROGMEM = "{s}%s " D_CHIPTEMPERATURE "{m}%d " D_UNIT_DEGREE "%c{e}"; const char HTTP_SNS_CHIPTEMPERATURE[] PROGMEM = "{s}%s " D_CHIPTEMPERATURE "{m}%d " D_UNIT_DEGREE "%c{e}";
#endif // USE_WEBSERVER #endif // USE_WEBSERVER
void TfmpShow(bool json) void TfmpShow(bool json) {
{
char sensor_name[12]; char sensor_name[12];
strcpy_P(sensor_name, "TFminiPlus"); strcpy_P(sensor_name, "TFminiPlus");
char distance_chr[FLOATSZ]; float distance = (float)tfminiplus_sensor.distance; // cm
dtostrfd(tfminiplus_sensor.distance, 3, distance_chr);
if (json) { if (json) {
ResponseAppend_P(PSTR(",\"%s\":{\"" D_JSON_DISTANCE "\":\"%s\",\"" D_JSON_SIGNALSTRENGTH "\":\"%d\",\"" D_JSON_CHIPTEMPERATURE "\":%d}"), ResponseAppend_P(PSTR(",\"%s\":{\"" D_JSON_DISTANCE "\":\"%1_f\",\"" D_JSON_SIGNALSTRENGTH "\":\"%d\",\"" D_JSON_CHIPTEMPERATURE "\":%d}"),
sensor_name, distance_chr, tfminiplus_sensor.sigstrength, tfminiplus_sensor.chiptemp); sensor_name, &distance, tfminiplus_sensor.sigstrength, tfminiplus_sensor.chiptemp);
#ifdef USE_DOMOTICZ #ifdef USE_DOMOTICZ
if (0 == TasmotaGlobal.tele_period) { if (0 == TasmotaGlobal.tele_period) {
DomoticzSensor(DZ_COUNT, distance_chr); DomoticzFloatSensor(DZ_COUNT, distance);
} }
#endif // USE_DOMOTICZ #endif // USE_DOMOTICZ
#ifdef USE_WEBSERVER #ifdef USE_WEBSERVER
} else { } else {
WSContentSend_P(HTTP_SNS_DISTANCE_CM, sensor_name, distance_chr); WSContentSend_P(HTTP_SNS_F_DISTANCE_CM, sensor_name, &distance);
WSContentSend_P(HTTP_SNS_SIGNALSTRENGTH, sensor_name, tfminiplus_sensor.sigstrength); WSContentSend_P(HTTP_SNS_SIGNALSTRENGTH, sensor_name, tfminiplus_sensor.sigstrength);
WSContentSend_P(HTTP_SNS_CHIPTEMPERATURE, sensor_name, tfminiplus_sensor.chiptemp, TempUnit()); WSContentSend_P(HTTP_SNS_CHIPTEMPERATURE, sensor_name, tfminiplus_sensor.chiptemp, TempUnit());
#endif // USE_WEBSERVER #endif // USE_WEBSERVER