@@ -25,6 +25,7 @@ SOFTWARE.
2525#include " MqttManager.h"
2626#include " SimulatedChargePointConfig.h"
2727#include " Topics.h"
28+ #include " MeterSimulator.h"
2829#include " json.h"
2930
3031#include < cstring>
@@ -131,12 +132,28 @@ void MqttManager::mqttMessageReceived(const char* topic, const std::string& mess
131132 connector_data.car_ready = ready.GetBool ();
132133 }
133134 }
134- if (payload.HasMember (" consumption " ))
135+ if (payload.HasMember (" consumption_l1 " ))
135136 {
136- rapidjson::Value& consumption = payload[" consumption " ];
137- if (consumption .IsFloat ())
137+ rapidjson::Value& consumption_l1 = payload[" consumption_l1 " ];
138+ if (consumption_l1 .IsFloat ())
138139 {
139- connector_data.car_consumption = consumption.GetFloat ();
140+ connector_data.car_consumption_l1 = consumption_l1.GetFloat ();
141+ }
142+ }
143+ if (payload.HasMember (" consumption_l2" ))
144+ {
145+ rapidjson::Value& consumption_l2 = payload[" consumption_l2" ];
146+ if (consumption_l2.IsFloat ())
147+ {
148+ connector_data.car_consumption_l2 = consumption_l2.GetFloat ();
149+ }
150+ }
151+ if (payload.HasMember (" consumption_l3" ))
152+ {
153+ rapidjson::Value& consumption_l3 = payload[" consumption_l3" ];
154+ if (consumption_l3.IsFloat ())
155+ {
156+ connector_data.car_consumption_l3 = consumption_l3.GetFloat ();
140157 }
141158 }
142159 }
@@ -270,7 +287,9 @@ void MqttManager::updateData(std::vector<ConnectorData>& connectors) const
270287 const ConnectorData& mqtt_data = m_connectors[connector.id - 1u ];
271288 connector.car_cable_capacity = mqtt_data.car_cable_capacity ;
272289 connector.car_ready = mqtt_data.car_ready ;
273- connector.car_consumption = mqtt_data.car_consumption ;
290+ connector.car_consumption_l1 = mqtt_data.car_consumption_l1 ;
291+ connector.car_consumption_l2 = mqtt_data.car_consumption_l2 ;
292+ connector.car_consumption_l3 = mqtt_data.car_consumption_l3 ;
274293 connector.fault_pending = mqtt_data.fault_pending ;
275294 }
276295}
@@ -303,6 +322,7 @@ void MqttManager::publishData(const std::vector<ConnectorData>& connectors)
303322 std::stringstream topic;
304323 topic << m_connectors_topic << connector.id << " /status" ;
305324
325+
306326 // Create the JSON message
307327 rapidjson::Document msg;
308328 msg.Parse (" {}" );
@@ -315,11 +335,33 @@ void MqttManager::publishData(const std::vector<ConnectorData>& connectors)
315335 msg.AddMember (rapidjson::StringRef (" max_setpoint" ), rapidjson::Value (connector.max_setpoint ), msg.GetAllocator ());
316336 msg.AddMember (rapidjson::StringRef (" ocpp_setpoint" ), rapidjson::Value (connector.ocpp_setpoint ), msg.GetAllocator ());
317337 msg.AddMember (rapidjson::StringRef (" setpoint" ), rapidjson::Value (connector.setpoint ), msg.GetAllocator ());
318- msg.AddMember (rapidjson::StringRef (" consumption" ), rapidjson::Value (connector.consumption ), msg.GetAllocator ());
319- msg.AddMember (rapidjson::StringRef (" car_consumption" ), rapidjson::Value (connector.car_consumption ), msg.GetAllocator ());
338+ msg.AddMember (rapidjson::StringRef (" car_consumption_l1" ), rapidjson::Value (connector.car_consumption_l1 ), msg.GetAllocator ());
339+ msg.AddMember (rapidjson::StringRef (" car_consumption_l2" ), rapidjson::Value (connector.car_consumption_l2 ), msg.GetAllocator ());
340+ msg.AddMember (rapidjson::StringRef (" car_consumption_l3" ), rapidjson::Value (connector.car_consumption_l3 ), msg.GetAllocator ());
320341 msg.AddMember (rapidjson::StringRef (" car_cable_capacity" ), rapidjson::Value (connector.car_cable_capacity ), msg.GetAllocator ());
321342 msg.AddMember (rapidjson::StringRef (" car_ready" ), rapidjson::Value (connector.car_ready ), msg.GetAllocator ());
322343
344+ std::vector<float > currents = connector.meter ->getCurrents ();
345+ unsigned int nb_phases = connector.meter ->getNumberOfPhases ();
346+ if (nb_phases == 1 )
347+ {
348+ msg.AddMember (rapidjson::StringRef (" consumption_l1" ), rapidjson::Value (currents[0 ]), msg.GetAllocator ());
349+ msg.AddMember (rapidjson::StringRef (" consumption_l2" ), rapidjson::Value (0 ), msg.GetAllocator ());
350+ msg.AddMember (rapidjson::StringRef (" consumption_l3" ), rapidjson::Value (0 ), msg.GetAllocator ());
351+ }
352+ else if (nb_phases == 2 )
353+ {
354+ msg.AddMember (rapidjson::StringRef (" consumption_l1" ), rapidjson::Value (currents[0 ]), msg.GetAllocator ());
355+ msg.AddMember (rapidjson::StringRef (" consumption_l2" ), rapidjson::Value (currents[1 ]), msg.GetAllocator ());
356+ msg.AddMember (rapidjson::StringRef (" consumption_l3" ), rapidjson::Value (0 ), msg.GetAllocator ());
357+ }
358+ else if (nb_phases == 3 )
359+ {
360+ msg.AddMember (rapidjson::StringRef (" consumption_l1" ), rapidjson::Value (currents[0 ]), msg.GetAllocator ());
361+ msg.AddMember (rapidjson::StringRef (" consumption_l2" ), rapidjson::Value (currents[1 ]), msg.GetAllocator ());
362+ msg.AddMember (rapidjson::StringRef (" consumption_l3" ), rapidjson::Value (currents[2 ]), msg.GetAllocator ());
363+ }
364+
323365 rapidjson::StringBuffer buffer;
324366 rapidjson::Writer<rapidjson::StringBuffer> writer (buffer);
325367 msg.Accept (writer);
0 commit comments