Skip to content

Commit d9ec111

Browse files
authored
Fixed duplicate deviceuid in HA when using ethernet (#1025)
1 parent e3a1aa7 commit d9ec111

File tree

3 files changed

+10
-14
lines changed

3 files changed

+10
-14
lines changed

lib/HomeAssistantMqttHandler/include/HomeAssistantMqttHandler.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,13 +15,13 @@
1515
class HomeAssistantMqttHandler : public AmsMqttHandler {
1616
public:
1717
#if defined(AMS_REMOTE_DEBUG)
18-
HomeAssistantMqttHandler(MqttConfig& mqttConfig, RemoteDebug* debugger, char* buf, uint8_t boardType, HomeAssistantConfig config, HwTools* hw, AmsFirmwareUpdater* updater) : AmsMqttHandler(mqttConfig, debugger, buf, updater) {
18+
HomeAssistantMqttHandler(MqttConfig& mqttConfig, RemoteDebug* debugger, char* buf, uint8_t boardType, HomeAssistantConfig config, HwTools* hw, AmsFirmwareUpdater* updater, char* hostname) : AmsMqttHandler(mqttConfig, debugger, buf, updater) {
1919
#else
2020
HomeAssistantMqttHandler(MqttConfig& mqttConfig, Stream* debugger, char* buf, uint8_t boardType, HomeAssistantConfig config, HwTools* hw) : AmsMqttHandler(mqttConfig, debugger, buf) {
2121
#endif
2222
this->boardType = boardType;
2323
this->hw = hw;
24-
setHomeAssistantConfig(config);
24+
setHomeAssistantConfig(config, hostname);
2525
};
2626
bool publish(AmsData* data, AmsData* previousState, EnergyAccounting* ea, PriceService* ps);
2727
bool publishTemperatures(AmsConfiguration*, HwTools*);
@@ -36,7 +36,7 @@ class HomeAssistantMqttHandler : public AmsMqttHandler {
3636

3737
uint8_t getFormat();
3838

39-
void setHomeAssistantConfig(HomeAssistantConfig config);
39+
void setHomeAssistantConfig(HomeAssistantConfig config, char* hostname);
4040
private:
4141
uint8_t boardType;
4242

lib/HomeAssistantMqttHandler/src/HomeAssistantMqttHandler.cpp

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
#include <esp_task_wdt.h>
2020
#endif
2121

22-
void HomeAssistantMqttHandler::setHomeAssistantConfig(HomeAssistantConfig config) {
22+
void HomeAssistantMqttHandler::setHomeAssistantConfig(HomeAssistantConfig config, char* hostname) {
2323
l1Init = l2Init = l2eInit = l3Init = l3eInit = l4Init = l4eInit = rtInit = rteInit = pInit = sInit = rInit = fInit = false;
2424

2525
pubTopic = String(mqttConfig.publishTopic);
@@ -38,14 +38,6 @@ void HomeAssistantMqttHandler::setHomeAssistantConfig(HomeAssistantConfig config
3838
deviceModel = boardTypeToString(boardType);
3939
manufacturer = boardManufacturerToString(boardType);
4040

41-
char hostname[32];
42-
#if defined(ESP8266)
43-
strcpy(hostname, WiFi.hostname().c_str());
44-
#elif defined(ESP32)
45-
strcpy(hostname, WiFi.getHostname());
46-
#endif
47-
48-
stripNonAscii((uint8_t*) hostname, 32, false);
4941
deviceUid = String(hostname); // Maybe configurable in the future?
5042

5143
if(strlen(config.discoveryHostname) > 0) {

src/AmsToMqttBridge.cpp

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1631,8 +1631,10 @@ void MQTT_connect() {
16311631
case 4: {
16321632
HomeAssistantConfig haconf;
16331633
config.getHomeAssistantConfig(haconf);
1634+
NetworkConfig network;
1635+
ch->getCurrentConfig(network);
16341636
HomeAssistantMqttHandler* hamh = (HomeAssistantMqttHandler*) &mqttHandler;
1635-
hamh->setHomeAssistantConfig(haconf);
1637+
hamh->setHomeAssistantConfig(haconf, network.hostname);
16361638
break;
16371639
}
16381640
}
@@ -1658,7 +1660,9 @@ void MQTT_connect() {
16581660
case 4:
16591661
HomeAssistantConfig haconf;
16601662
config.getHomeAssistantConfig(haconf);
1661-
mqttHandler = new HomeAssistantMqttHandler(mqttConfig, &Debug, (char*) commonBuffer, sysConfig.boardType, haconf, &hw, &updater);
1663+
NetworkConfig network;
1664+
ch->getCurrentConfig(network);
1665+
mqttHandler = new HomeAssistantMqttHandler(mqttConfig, &Debug, (char*) commonBuffer, sysConfig.boardType, haconf, &hw, &updater, network.hostname);
16621666
break;
16631667
case 255:
16641668
mqttHandler = new PassthroughMqttHandler(mqttConfig, &Debug, (char*) commonBuffer, &updater);

0 commit comments

Comments
 (0)