From 4e039c2cc946d33e44fa5c0413b1f2da95be4379 Mon Sep 17 00:00:00 2001 From: Gunnar Skjold Date: Thu, 23 Jun 2022 08:10:57 +0200 Subject: [PATCH] Escape backslash in JSON --- src/mqtt/HomeAssistantMqttHandler.cpp | 4 +++- src/mqtt/JsonMqttHandler.cpp | 8 +++++--- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/mqtt/HomeAssistantMqttHandler.cpp b/src/mqtt/HomeAssistantMqttHandler.cpp index 485e0905..798dc8f9 100644 --- a/src/mqtt/HomeAssistantMqttHandler.cpp +++ b/src/mqtt/HomeAssistantMqttHandler.cpp @@ -25,6 +25,8 @@ bool HomeAssistantMqttHandler::publish(AmsData* data, AmsData* previousState, En ); mqtt->publish(topic + "/energy", json); } + String meterModel = data->getMeterModel(); + meterModel.replace("\\", "\\\\"); if(data->getListType() == 1) { // publish power counts snprintf_P(json, BufferSize, HA1_JSON, data->getActiveImportPower() @@ -34,7 +36,7 @@ bool HomeAssistantMqttHandler::publish(AmsData* data, AmsData* previousState, En snprintf_P(json, BufferSize, HA3_JSON, data->getListId().c_str(), data->getMeterId().c_str(), - data->getMeterModel().c_str(), + meterModel.c_str(), data->getActiveImportPower(), data->getReactiveImportPower(), data->getActiveExportPower(), diff --git a/src/mqtt/JsonMqttHandler.cpp b/src/mqtt/JsonMqttHandler.cpp index aa7c5dd9..b5d6103a 100644 --- a/src/mqtt/JsonMqttHandler.cpp +++ b/src/mqtt/JsonMqttHandler.cpp @@ -12,6 +12,8 @@ bool JsonMqttHandler::publish(AmsData* data, AmsData* previousState, EnergyAccou if(topic.isEmpty() || !mqtt->connected()) return false; + String meterModel = data->getMeterModel(); + meterModel.replace("\\", "\\\\"); if(data->getListType() == 1) { snprintf_P(json, BufferSize, JSON1_JSON, WiFi.macAddress().c_str(), @@ -39,7 +41,7 @@ bool JsonMqttHandler::publish(AmsData* data, AmsData* previousState, EnergyAccou hw->getTemperature(), data->getListId().c_str(), data->getMeterId().c_str(), - data->getMeterModel().c_str(), + meterModel.c_str(), data->getActiveImportPower(), data->getReactiveImportPower(), data->getActiveExportPower(), @@ -67,7 +69,7 @@ bool JsonMqttHandler::publish(AmsData* data, AmsData* previousState, EnergyAccou hw->getTemperature(), data->getListId().c_str(), data->getMeterId().c_str(), - data->getMeterModel().c_str(), + meterModel.c_str(), data->getActiveImportPower(), data->getReactiveImportPower(), data->getActiveExportPower(), @@ -100,7 +102,7 @@ bool JsonMqttHandler::publish(AmsData* data, AmsData* previousState, EnergyAccou hw->getTemperature(), data->getListId().c_str(), data->getMeterId().c_str(), - data->getMeterModel().c_str(), + meterModel.c_str(), data->getActiveImportPower(), data->getReactiveImportPower(), data->getActiveExportPower(),