mirror of
				https://github.com/esphome/esphome.git
				synced 2025-10-29 22:24:26 +00:00 
			
		
		
		
	[mqtt] Add extended device info (#7194)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
This commit is contained in:
		| @@ -150,12 +150,40 @@ bool MQTTComponent::send_discovery_() { | ||||
|         const std::string &node_area = App.get_area(); | ||||
|  | ||||
|         JsonObject device_info = root.createNestedObject(MQTT_DEVICE); | ||||
|         device_info[MQTT_DEVICE_IDENTIFIERS] = get_mac_address(); | ||||
|         const auto mac = get_mac_address(); | ||||
|         device_info[MQTT_DEVICE_IDENTIFIERS] = mac; | ||||
|         device_info[MQTT_DEVICE_NAME] = node_friendly_name; | ||||
|         device_info[MQTT_DEVICE_SW_VERSION] = "esphome v" ESPHOME_VERSION " " + App.get_compilation_time(); | ||||
| #ifdef ESPHOME_PROJECT_NAME | ||||
|         device_info[MQTT_DEVICE_SW_VERSION] = ESPHOME_PROJECT_VERSION " (ESPHome " ESPHOME_VERSION ")"; | ||||
|         const char *model = std::strchr(ESPHOME_PROJECT_NAME, '.'); | ||||
|         if (model == nullptr) {  // must never happen but check anyway | ||||
|           device_info[MQTT_DEVICE_MODEL] = ESPHOME_BOARD; | ||||
|           device_info[MQTT_DEVICE_MANUFACTURER] = ESPHOME_PROJECT_NAME; | ||||
|         } else { | ||||
|           device_info[MQTT_DEVICE_MODEL] = model + 1; | ||||
|           device_info[MQTT_DEVICE_MANUFACTURER] = std::string(ESPHOME_PROJECT_NAME, model - ESPHOME_PROJECT_NAME); | ||||
|         } | ||||
| #else | ||||
|         device_info[MQTT_DEVICE_SW_VERSION] = ESPHOME_VERSION " (" + App.get_compilation_time() + ")"; | ||||
|         device_info[MQTT_DEVICE_MODEL] = ESPHOME_BOARD; | ||||
|         device_info[MQTT_DEVICE_MANUFACTURER] = "espressif"; | ||||
|         device_info[MQTT_DEVICE_SUGGESTED_AREA] = node_area; | ||||
| #if defined(USE_ESP8266) || defined(USE_ESP32) | ||||
|         device_info[MQTT_DEVICE_MANUFACTURER] = "Espressif"; | ||||
| #elif defined(USE_RP2040) | ||||
|         device_info[MQTT_DEVICE_MANUFACTURER] = "Raspberry Pi"; | ||||
| #elif defined(USE_BK72XX) | ||||
|         device_info[MQTT_DEVICE_MANUFACTURER] = "Beken"; | ||||
| #elif defined(USE_RTL87XX) | ||||
|         device_info[MQTT_DEVICE_MANUFACTURER] = "Realtek"; | ||||
| #elif defined(USE_HOST) | ||||
|         device_info[MQTT_DEVICE_MANUFACTURER] = "Host"; | ||||
| #endif | ||||
| #endif | ||||
|         if (!node_area.empty()) { | ||||
|           device_info[MQTT_DEVICE_SUGGESTED_AREA] = node_area; | ||||
|         } | ||||
|  | ||||
|         device_info[MQTT_DEVICE_CONNECTIONS][0][0] = "mac"; | ||||
|         device_info[MQTT_DEVICE_CONNECTIONS][0][1] = mac; | ||||
|       }, | ||||
|       this->qos_, discovery_info.retain); | ||||
| } | ||||
|   | ||||
| @@ -62,6 +62,7 @@ constexpr const char *const MQTT_DEVICE_MODEL = "mdl"; | ||||
| constexpr const char *const MQTT_DEVICE_NAME = "name"; | ||||
| constexpr const char *const MQTT_DEVICE_SUGGESTED_AREA = "sa"; | ||||
| constexpr const char *const MQTT_DEVICE_SW_VERSION = "sw"; | ||||
| constexpr const char *const MQTT_DEVICE_HW_VERSION = "hw"; | ||||
| constexpr const char *const MQTT_DOCKED_TEMPLATE = "dock_tpl"; | ||||
| constexpr const char *const MQTT_DOCKED_TOPIC = "dock_t"; | ||||
| constexpr const char *const MQTT_EFFECT_COMMAND_TOPIC = "fx_cmd_t"; | ||||
| @@ -322,6 +323,7 @@ constexpr const char *const MQTT_DEVICE_MODEL = "model"; | ||||
| constexpr const char *const MQTT_DEVICE_NAME = "name"; | ||||
| constexpr const char *const MQTT_DEVICE_SUGGESTED_AREA = "suggested_area"; | ||||
| constexpr const char *const MQTT_DEVICE_SW_VERSION = "sw_version"; | ||||
| constexpr const char *const MQTT_DEVICE_HW_VERSION = "hw_version"; | ||||
| constexpr const char *const MQTT_DOCKED_TEMPLATE = "docked_template"; | ||||
| constexpr const char *const MQTT_DOCKED_TOPIC = "docked_topic"; | ||||
| constexpr const char *const MQTT_EFFECT_COMMAND_TOPIC = "effect_command_topic"; | ||||
|   | ||||
		Reference in New Issue
	
	Block a user