From: aaronk6 Date: Sun, 17 Mar 2024 22:33:54 +0000 (+0000) Subject: Fixed multiple devices getting merged in Home Assistant X-Git-Tag: 4.3.5^2~20^2 X-Git-Url: http://git.ipfire.org/gitweb/?a=commitdiff_plain;h=refs%2Fpull%2F1911%2Fhead;p=thirdparty%2Fshairport-sync.git Fixed multiple devices getting merged in Home Assistant --- diff --git a/mqtt.c b/mqtt.c index cc85e039..addf04f6 100644 --- a/mqtt.c +++ b/mqtt.c @@ -101,6 +101,7 @@ void on_connect(struct mosquitto *mosq, __attribute__((unused)) void *userdata, void send_autodiscovery_messages(struct mosquitto *mosq) { const char *device_name = config.service_name; const char *device_id = config.airplay_device_id ? config.airplay_device_id : config.service_name; + const char *device_id_no_colons = str_replace(device_id, ":", ""); const char *sw_version = get_version_string(); const char *model = "shairport-sync"; const char *model_friendly = "Shairport Sync"; @@ -189,9 +190,9 @@ void send_autodiscovery_messages(struct mosquitto *mosq) { bool is_binary_sensor = (strcmp(sensors[i], "active") == 0 || strcmp(sensors[i], "playing") == 0); bool is_volume_sensor = strcmp(sensors[i], "volume") == 0; - snprintf(topic, sizeof(topic), "%s/%ssensor/%s/%s_%s/config", + snprintf(topic, sizeof(topic), "%s/%ssensor/%s_%s/%s/config", autodiscovery_prefix, is_binary_sensor ? "binary_" : "", - model, device_name, sensors[i]); + model, device_id_no_colons, sensors[i]); snprintf(id_string, sizeof(id_string), "%s_%s_%s", model, device_name, sensors[i]);