mirror of
https://github.com/adrianjagielak/home-assistant-futurehome.git
synced 2026-01-18 15:45:38 +00:00
Add support for pairing new devices
This commit is contained in:
@@ -32,93 +32,9 @@ import { user_code__components } from '../services/user_code';
|
||||
import { water_heater__components } from '../services/water_heater';
|
||||
import { abbreviateHaMqttKeys } from './abbreviate_ha_mqtt_keys';
|
||||
import { ha } from './globals';
|
||||
import { HaDeviceConfig } from './ha_device_config';
|
||||
import { HaMqttComponent } from './mqtt_components/_component';
|
||||
|
||||
type HaDeviceConfig = {
|
||||
/**
|
||||
* Information about the device this sensor is a part of to tie it into the [device registry](https://developers.home-assistant.io/docs/device_registry_index/).
|
||||
* Only works when [`unique_id`](#unique_id) is set.
|
||||
* At least one of identifiers or connections must be present to identify the device.
|
||||
*/
|
||||
device?: {
|
||||
/**
|
||||
* A link to the webpage that can manage the configuration of this device.
|
||||
* Can be either an `http://`, `https://` or an internal `homeassistant://` URL.
|
||||
*/
|
||||
configuration_url?: string;
|
||||
|
||||
/**
|
||||
* A list of connections of the device to the outside world as a list of tuples `[connection_type, connection_identifier]`.
|
||||
* For example the MAC address of a network interface:
|
||||
* `"connections": [["mac", "02:5b:26:a8:dc:12"]]`.
|
||||
*/
|
||||
connections?: Array<[string, string]>;
|
||||
|
||||
/**
|
||||
* The hardware version of the device.
|
||||
*/
|
||||
hw_version?: string;
|
||||
|
||||
/**
|
||||
* A list of IDs that uniquely identify the device.
|
||||
* For example a serial number.
|
||||
*/
|
||||
identifiers?: string | string[];
|
||||
|
||||
/**
|
||||
* The manufacturer of the device.
|
||||
*/
|
||||
manufacturer?: string;
|
||||
|
||||
/**
|
||||
* The model of the device.
|
||||
*/
|
||||
model?: string;
|
||||
|
||||
/**
|
||||
* The model identifier of the device.
|
||||
*/
|
||||
model_id?: string;
|
||||
|
||||
/**
|
||||
* The name of the device.
|
||||
*/
|
||||
name?: string;
|
||||
|
||||
/**
|
||||
* The serial number of the device.
|
||||
*/
|
||||
serial_number?: string;
|
||||
|
||||
/**
|
||||
* Suggest an area if the device isn’t in one yet.
|
||||
*/
|
||||
suggested_area?: string;
|
||||
|
||||
/**
|
||||
* The firmware version of the device.
|
||||
*/
|
||||
sw_version?: string;
|
||||
|
||||
/**
|
||||
* Identifier of a device that routes messages between this device and Home Assistant.
|
||||
* Examples of such devices are hubs, or parent devices of a sub-device.
|
||||
* This is used to show device topology in Home Assistant.
|
||||
*/
|
||||
via_device?: string;
|
||||
};
|
||||
origin: {
|
||||
name: 'futurehome';
|
||||
support_url: 'https://github.com/adrianjagielak/home-assistant-futurehome';
|
||||
};
|
||||
components: {
|
||||
[key: string]: HaMqttComponent;
|
||||
};
|
||||
state_topic: string;
|
||||
availability_topic: string;
|
||||
qos: number;
|
||||
};
|
||||
|
||||
export type ServiceComponentsCreationResult = {
|
||||
components: { [key: string]: HaMqttComponent };
|
||||
commandHandlers?: CommandHandlers;
|
||||
@@ -348,7 +264,7 @@ export function haPublishDevice(parameters: {
|
||||
const availabilityTopic = `${topicPrefix}/availability`;
|
||||
const config: HaDeviceConfig = {
|
||||
device: {
|
||||
identifiers: parameters.vinculumDeviceData.id.toString(),
|
||||
identifiers: `futurehome_${parameters.hubId}_${parameters.vinculumDeviceData.id}`,
|
||||
name:
|
||||
parameters.vinculumDeviceData?.client?.name ??
|
||||
parameters.vinculumDeviceData?.modelAlias ??
|
||||
@@ -366,7 +282,7 @@ export function haPublishDevice(parameters: {
|
||||
serial_number:
|
||||
parameters.deviceInclusionReport?.product_hash ?? undefined,
|
||||
hw_version: parameters.deviceInclusionReport?.hw_ver ?? undefined,
|
||||
via_device: 'todo_hub_id',
|
||||
via_device: `futurehome_${parameters.hubId}_hub`,
|
||||
},
|
||||
origin: {
|
||||
name: 'futurehome',
|
||||
|
||||
Reference in New Issue
Block a user