From 1db00821036ba1311f5813d8963911e588716e73 Mon Sep 17 00:00:00 2001 From: Gunnar Skjold Date: Thu, 6 Jun 2024 18:09:33 +0200 Subject: [PATCH] Added export price sensor to HA payload --- .../src/HomeAssistantMqttHandler.cpp | 27 ++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/lib/HomeAssistantMqttHandler/src/HomeAssistantMqttHandler.cpp b/lib/HomeAssistantMqttHandler/src/HomeAssistantMqttHandler.cpp index b517bc1b..83c73c5c 100644 --- a/lib/HomeAssistantMqttHandler/src/HomeAssistantMqttHandler.cpp +++ b/lib/HomeAssistantMqttHandler/src/HomeAssistantMqttHandler.cpp @@ -299,7 +299,7 @@ bool HomeAssistantMqttHandler::publishPrices(PriceService* ps) { } } - snprintf_P(json+pos, BufferSize-pos, PSTR("\"min\":%.4f,\"max\":%.4f,\"cheapest1hr\":\"%s\",\"cheapest3hr\":\"%s\",\"cheapest6hr\":\"%s\"}}"), + pos += snprintf_P(json+pos, BufferSize-pos, PSTR("\"min\":%.4f,\"max\":%.4f,\"cheapest1hr\":\"%s\",\"cheapest3hr\":\"%s\",\"cheapest6hr\":\"%s\"}"), min == INT16_MAX ? 0.0 : min, max == INT16_MIN ? 0.0 : max, ts1hr, @@ -307,6 +307,16 @@ bool HomeAssistantMqttHandler::publishPrices(PriceService* ps) { ts6hr ); + float val = ps->getValueForHour(PRICE_DIRECTION_EXPORT, now, 0); + if(val == PRICE_NO_VALUE) { + pos += snprintf_P(json+pos, BufferSize-pos, PSTR(",\"exportprices\":{\"0\":null}")); + } else { + pos += snprintf_P(json+pos, BufferSize-pos, PSTR(",\"exportprices\":{\"0\":%.4f}"), val); + } + + json[pos++] = '}'; + json[pos] = '\0'; + bool ret = mqtt.publish(topic + "/prices", json, true, 0); loop(); return ret; @@ -531,6 +541,21 @@ void HomeAssistantMqttHandler::publishPriceSensors(PriceService* ps) { prInit[i] = true; } + float exportPrice = ps->getValueForHour(PRICE_DIRECTION_EXPORT, 0); + if(exportPrice != PRICE_NO_VALUE) { + char path[20]; + snprintf(path, 20, "exportprices['%d']", 0); + HomeAssistantSensor sensor = { + "Export price current hour", + PriceSensor.topic, + path, + PriceSensor.ttl, + uom.c_str(), + PriceSensor.devcl, + "total" + }; + publishSensor(sensor); + } } void HomeAssistantMqttHandler::publishSystemSensors() {