Skip to content

Commit ce56b86

Browse files
Fixed HomeAssistant integration (#45)
* Update MQTTManager.cpp Fixed state of charging_current_limit control. * Fixed HomeAssistant auto discovery Increased PayloadBuffer from 512 to 1024 Corrected uniq_id to unique_id Made unique_id really unique Formatted DiscoveryTopic JSON for readability
1 parent 4c27438 commit ce56b86

File tree

1 file changed

+81
-19
lines changed

1 file changed

+81
-19
lines changed

src/Components/MQTT/MQTTManager.cpp

Lines changed: 81 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ namespace MQTTManager
2424
IWallbox *gWallbox = nullptr;
2525
uint8_t gCurValueIndex = 0;
2626
char TopicBuffer[128];
27-
char PayloadBuffer[512];
27+
char PayloadBuffer[1024];
2828
PrefixedString gMqttTopic(128);
2929

3030
constexpr uint16_t NumMqttPublishedValues = 10;
@@ -67,47 +67,109 @@ namespace MQTTManager
6767
// Publish Home Assistant MQTT discovery messages
6868
PublishHomeAssistantDiscoveryTopic(
6969
"homeassistant/binary_sensor/%/is_vehicle_connected/config",
70-
R"({"name":"Vehicle connected","device_class":"plug","state_topic":"%/is_vehicle_connected","payload_on":"1","payload_off":"0","unique_id":"%_is_vehicle_connected","object_id":"is_vehicle_connected","device":{"identifiers":["%"],"name":"%","model":"EnergyControl","manufacturer":"Heidelberg"}})");
70+
R"({
71+
"name":"Vehicle connected",
72+
"device_class":"plug",
73+
"state_topic":"%/is_vehicle_connected",
74+
"payload_on":"1",
75+
"payload_off":"0",
76+
"unique_id":"%_is_vehicle_connected",
77+
"object_id":"%_is_vehicle_connected",
78+
"device":{"identifiers":["%"],"name":"%","model":"EnergyControl","manufacturer":"Heidelberg"}})");
7179

7280
PublishHomeAssistantDiscoveryTopic(
7381
"homeassistant/binary_sensor/%/is_vehicle_charging/config",
74-
R"({"name":"Vehicle charging","device_class":"battery_charging","state_topic":"%/is_vehicle_charging","payload_on":"1","payload_off":"0","unique_id":"%_is_vehicle_charging","object_id":"is_vehicle_charging","device":{"identifiers":["%"],"name":"%","model":"EnergyControl","manufacturer":"Heidelberg"}})");
82+
R"({
83+
"name":"Vehicle charging",
84+
"device_class":"battery_charging",
85+
"state_topic":"%/is_vehicle_charging",
86+
"payload_on":"1",
87+
"payload_off":"0",
88+
"unique_id":"%_is_vehicle_charging",
89+
"object_id":"%_is_vehicle_charging",
90+
"device":{"identifiers":["%"],"name":"%","model":"EnergyControl","manufacturer":"Heidelberg"}})");
7591

7692
PublishHomeAssistantDiscoveryTopic(
7793
"homeassistant/sensor/%/charging_power/config",
78-
R"({"name":"Charging power","device_class":"power","state_topic":"%/charging_power","unique_id":"%_charging_power","object_id":"charging_power","unit_of_measurement":"W","device":{"identifiers":["%"],"name":"%","model":"EnergyControl","manufacturer":"Heidelberg"}})");
94+
R"({
95+
"name":"Charging power",
96+
"device_class":"power",
97+
"state_topic":"%/charging_power",
98+
"unique_id":"%_charging_power",
99+
"object_id":"%_charging_power",
100+
"unit_of_measurement":"W",
101+
"device":{"identifiers":["%"],"name":"%","model":"EnergyControl","manufacturer":"Heidelberg"}})");
79102

80103
PublishHomeAssistantDiscoveryTopic(
81104
"homeassistant/sensor/%/charging_current/config",
82-
R"({"name":"Charging current","device_class":"current","state_topic":"%/charging_current/phase1","unique_id":"%_charging_current","object_id":"charging_current","unit_of_measurement":"A","device":{"identifiers":["%"],"name":"%","model":"EnergyControl","manufacturer":"Heidelberg"}})");
105+
R"({
106+
"name":"Charging current",
107+
"device_class":"current",
108+
"state_topic":"%/charging_current/phase1",
109+
"unique_id":"%_charging_current",
110+
"object_id":"%_charging_current",
111+
"unit_of_measurement":"A",
112+
"device":{"identifiers":["%"],"name":"%","model":"EnergyControl","manufacturer":"Heidelberg"}})");
83113

84114
PublishHomeAssistantDiscoveryTopic(
85115
"homeassistant/sensor/%/charging_current_limit/config",
86-
R"({"name":"Charging current limit","device_class":"current","state_topic":"%/charging_current_limit","unique_id":"%_charging_current_limit","object_id":"charging_current_limit","unit_of_measurement":"A","device":{"identifiers":["%"],"name":"%","model":"EnergyControl","manufacturer":"Heidelberg"}})");
116+
R"({
117+
"name":"Charging current limit",
118+
"device_class":"current",
119+
"state_topic":"%/charging_current_limit",
120+
"unique_id":"%_charging_current_limit",
121+
"object_id":"%_charging_current_limit",
122+
"unit_of_measurement":"A",
123+
"device":{"identifiers":["%"],"name":"%","model":"EnergyControl","manufacturer":"Heidelberg"}})");
87124

88125
PublishHomeAssistantDiscoveryTopic(
89126
"homeassistant/sensor/%/energy_meter/config",
90-
R"({"name":"Energy meter","device_class":"energy","state_topic":"%/energy_meter","state_class":"total_increasing","unique_id":"%_energy_meter","object_id":"energy_meter","unit_of_measurement":"kWh","device":{"identifiers":["%"],"name":"%","model":"EnergyControl","manufacturer":"Heidelberg"}})");
127+
R"({
128+
"name":"Energy meter",
129+
"device_class":"energy",
130+
"state_topic":"%/energy_meter",
131+
"state_class":"total_increasing",
132+
"unique_id":"%_energy_meter",
133+
"object_id":"%_energy_meter",
134+
"unit_of_measurement":"kWh",
135+
"device":{"identifiers":["%"],"name":"%","model":"EnergyControl","manufacturer":"Heidelberg"}})");
91136

92137
PublishHomeAssistantDiscoveryTopic(
93138
"homeassistant/sensor/%/temperature/config",
94-
R"({"name":"Temperature","device_class":"temperature","state_topic":"%/temperature","unique_id":"%_temperature","object_id":"temperature","unit_of_measurement":"°C","device":{"identifiers":["%"],"name":"%","model":"EnergyControl","manufacturer":"Heidelberg"}})");
139+
R"({
140+
"name":"Temperature",
141+
"device_class":"temperature",
142+
"state_topic":"%/temperature",
143+
"unique_id":"%_temperature",
144+
"object_id":"%_temperature",
145+
"unit_of_measurement":"°C",
146+
"device":{"identifiers":["%"],"name":"%","model":"EnergyControl","manufacturer":"Heidelberg"}})");
95147

96148
PublishHomeAssistantDiscoveryTopic(
97-
"homeassistant/switch/%/enable_charging/config",
149+
"homeassistant/switch/%/control_enable_charging/config",
98150
R"({
99-
"name": "Enable Charging",
100-
"state_topic": "%/enable_charging",
101-
"command_topic": "%/control/enable_charging",
102-
"unique_id": "%_enable_charging_switch",
103-
"object_id": "enable_charging",
104-
"payload_on": "ON",
105-
"payload_off": "OFF",
106-
"device":{"identifiers":["%"],"name":"%","model":"EnergyControl","manufacturer":"Heidelberg"}})");
151+
"name":"Enable Charging",
152+
"state_topic":"%/enable_charging",
153+
"command_topic":"%/control/enable_charging",
154+
"unique_id":"%control_enable_charging",
155+
"object_id":"%control_enable_charging",
156+
"payload_on":"ON",
157+
"payload_off":"OFF",
158+
"device":{"identifiers":["%"],"name":"%","model":"EnergyControl","manufacturer":"Heidelberg"}})");
107159

108160
PublishHomeAssistantDiscoveryTopic(
109-
"homeassistant/number/%/charging_current_limit/config",
110-
R"({"name": "Charging Current Limit", "command_topic": "%/control/charging_current_limit", "state_topic": "%/status/charging_current_limit", "min": 6, "max": 16, "step": 1, "unit_of_measurement": "A", "uniq_id": "heidelbridge_charging_current_limit", "device":{"identifiers":["%"],"name":"%","model":"EnergyControl","manufacturer":"Heidelberg"}})");
161+
"homeassistant/number/%/control_charging_current_limit/config",
162+
R"({
163+
"name":"Charging Current Limit",
164+
"command_topic":"%/control/charging_current_limit",
165+
"state_topic":"%/charging_current_limit",
166+
"min":6,
167+
"max":16,
168+
"step":1,
169+
"unit_of_measurement":"A",
170+
"unique_id":"%_control_charging_current_limit",
171+
"object_id":"%_control_charging_current_limit",
172+
"device":{"identifiers":["%"],"name":"%","model":"EnergyControl","manufacturer":"Heidelberg"}})");
111173
}
112174

113175
// Publishes various MQTT status messages based on the current value index.

0 commit comments

Comments
 (0)