diff --git a/backend/lib/mqtt/capabilities/AutoEmptyDockManualTriggerCapabilityMqttHandle.js b/backend/lib/mqtt/capabilities/AutoEmptyDockManualTriggerCapabilityMqttHandle.js index 3cff405e9d..f2a8181da5 100644 --- a/backend/lib/mqtt/capabilities/AutoEmptyDockManualTriggerCapabilityMqttHandle.js +++ b/backend/lib/mqtt/capabilities/AutoEmptyDockManualTriggerCapabilityMqttHandle.js @@ -1,6 +1,9 @@ const CapabilityMqttHandle = require("./CapabilityMqttHandle"); const Command = require("../common/Commands"); +const Commands = require("../common/Commands"); +const ComponentType = require("../homeassistant/ComponentType"); const DataType = require("../homie/DataType"); +const InLineHassComponent = require("../homeassistant/components/InLineHassComponent"); const PropertyMqttHandle = require("../handles/PropertyMqttHandle"); class AutoEmptyDockManualTriggerCapabilityMqttHandle extends CapabilityMqttHandle { @@ -27,6 +30,23 @@ class AutoEmptyDockManualTriggerCapabilityMqttHandle extends CapabilityMqttHandl setter: async (value) => { await this.capability.triggerAutoEmpty(); } + }).also((prop) => { + this.controller.withHass((hass) => { + prop.attachHomeAssistantComponent( + new InLineHassComponent({ + hass: hass, + robot: this.robot, + name: this.capability.getType(), + friendlyName: "Trigger Auto Empty Dock", + componentType: ComponentType.BUTTON, + autoconf: { + command_topic: `${prop.getBaseTopic()}/set`, + payload_press: Commands.BASIC.PERFORM, + icon: "mdi:delete-restore" + } + }) + ); + }); })); } } diff --git a/backend/lib/mqtt/capabilities/LocateCapabilityMqttHandle.js b/backend/lib/mqtt/capabilities/LocateCapabilityMqttHandle.js index 95a4158d20..8be4ccdde7 100644 --- a/backend/lib/mqtt/capabilities/LocateCapabilityMqttHandle.js +++ b/backend/lib/mqtt/capabilities/LocateCapabilityMqttHandle.js @@ -1,6 +1,10 @@ const CapabilityMqttHandle = require("./CapabilityMqttHandle"); const Command = require("../common/Commands"); +const Commands = require("../common/Commands"); +const ComponentType = require("../homeassistant/ComponentType"); const DataType = require("../homie/DataType"); +const EntityCategory = require("../homeassistant/EntityCategory"); +const InLineHassComponent = require("../homeassistant/components/InLineHassComponent"); const PropertyMqttHandle = require("../handles/PropertyMqttHandle"); class LocateCapabilityMqttHandle extends CapabilityMqttHandle { @@ -27,6 +31,25 @@ class LocateCapabilityMqttHandle extends CapabilityMqttHandle { setter: async (value) => { await this.capability.locate(); } + }).also((prop) => { + this.controller.withHass((hass) => { + prop.attachHomeAssistantComponent( + new InLineHassComponent({ + hass: hass, + robot: this.robot, + name: this.capability.getType(), + friendlyName: "Play locate sound", + componentType: ComponentType.BUTTON, + autoconf: { + command_topic: `${prop.getBaseTopic()}/set`, + payload_press: Commands.BASIC.PERFORM, + icon: "mdi:map-marker-question", + enabled_by_default: false, + entity_category: EntityCategory.DIAGNOSTIC + } + }) + ); + }); })); } }