add Temperature_div100 for BMP280

This commit is contained in:
Tester23
2023-12-17 21:12:27 +01:00
parent dfebee47d2
commit 6cabc45b67
5 changed files with 41 additions and 2 deletions

View File

@@ -79,6 +79,6 @@ void BMP280_OnEverySecond() {
void BMP280_AppendInformationToHTTPIndexPage(http_request_t* request)
{
hprintf255(request, "<h2>BMP280 Temperature=%f C, Pressure=%f hPa</h2>", g_temperature*0.01f, g_pressure*0.01f);
hprintf255(request, "<h2>BMP280 Temperature=%.2f C, Pressure=%.2f hPa</h2>", g_temperature*0.01f, g_pressure*0.01f);
}

View File

@@ -41,6 +41,8 @@ bool CHANNEL_IsTemperature(int type) {
return true;
if (type == ChType_Temperature_div10)
return true;
if (type == ChType_Temperature_div100)
return true;
return false;
}
bool CHANNEL_GetGenericOfType(float *out, bool (*checker)(int type)) {

View File

@@ -418,6 +418,26 @@ int http_fn_index(http_request_t* request) {
hprintf255(request, "Temperature Channel %s value %.2f C<br>", CHANNEL_GetLabel(i), fValue);
poststr(request, "</td></tr>");
}
else if (channelType == ChType_Pressure_div100) {
iValue = CHANNEL_Get(i);
fValue = iValue * 0.01f;
poststr(request, "<tr><td>");
hprintf255(request, "Pressure Channel %s value %.2f hPa<br>", CHANNEL_GetLabel(i), fValue);
poststr(request, "</td></tr>");
}
else if (channelType == ChType_Temperature_div100) {
iValue = CHANNEL_Get(i);
fValue = iValue * 0.01f;
poststr(request, "<tr><td>");
hprintf255(request, "Temperature Channel %s value %.2f C<br>", CHANNEL_GetLabel(i), fValue);
poststr(request, "</td></tr>");
}
else if (channelType == ChType_Humidity) {
@@ -2038,6 +2058,15 @@ void doHomeAssistantDiscovery(const char* topic, http_request_t* request) {
discoveryQueued = true;
}
break;
case ChType_Temperature_div100:
{
dev_info = hass_init_sensor_device_info(TEMPERATURE_SENSOR, i, 2, 2, 1);
MQTT_QueuePublish(topic, dev_info->channel, hass_build_discovery_json(dev_info), OBK_PUBLISH_FLAG_RETAIN);
hass_free_device_info(dev_info);
discoveryQueued = true;
}
break;
case ChType_Humidity:
{
dev_info = hass_init_sensor_device_info(HUMIDITY_SENSOR, i, -1, -1, 1);

View File

@@ -1058,6 +1058,7 @@ float CHANNEL_GetFinalValue(int channel) {
case ChType_Voltage_div100:
case ChType_PowerFactor_div100:
case ChType_Pressure_div100:
case ChType_Temperature_div100:
dVal = (float)iVal / 100;
break;
case ChType_PowerFactor_div1000:
@@ -1878,7 +1879,7 @@ const char* g_channelTypeNames[] = {
"Frequency_div10",
"PowerFactor_div100",
"Pressure_div100",
"error",
"Temperature_div100",
"error",
"error",
"error",

View File

@@ -894,6 +894,13 @@ typedef enum channelType_e {
//chandetail:"file":"new_pins.h",
//chandetail:"driver":""}
ChType_Pressure_div100,
//chandetail:{"name":"Temperature_div100",
//chandetail:"title":"TODO",
//chandetail:"descr":"Just like humidity_div100, but for temperature.",
//chandetail:"enum":"ChType_Temperature_div100",
//chandetail:"file":"new_pins.h",
//chandetail:"driver":""}
ChType_Temperature_div100,
//chandetail:{"name":"Max",
//chandetail:"title":"TODO",
//chandetail:"descr":"This is the current total number of available channel types.",