From 3a11274af1948ded1d363438959c3befa6a141fe Mon Sep 17 00:00:00 2001 From: Tevon Strand-Brown Date: Thu, 12 Dec 2024 16:45:34 -0800 Subject: [PATCH] Added basic alarm control --- src/index.ts | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/src/index.ts b/src/index.ts index 6177503..aa090fc 100644 --- a/src/index.ts +++ b/src/index.ts @@ -136,6 +136,10 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => { return formatToolCall(controlClimate(request.params.arguments as { entity_id: TRawEntityIds, temperature: number })); case "control_cover": return formatToolCall(controlCover(request.params.arguments as { entity_id: TRawEntityIds, state: string, position?: number })); + case "control_switch": + return formatToolCall(controlSwitch(request.params.arguments as { entity_id: TRawEntityIds, state: string })); + case "control_alarm_control_panel": + return formatToolCall(controlAlarmControlPanel(request.params.arguments as { entity_id: TRawEntityIds, state: string })); } return formatToolCall({ @@ -155,6 +159,40 @@ runServer().catch((error) => { process.exit(1); }); +const controlSwitch = async (params: { entity_id: TRawEntityIds, state: string }) => { + if (params.state === "on") { + return hass.hass.call.switch.turn_on({ + entity_id: params.entity_id, + }) + } + return hass.hass.call.switch.turn_off({ + entity_id: params.entity_id, + }) +} + +const controlAlarmControlPanel = async (params: { entity_id: TRawEntityIds, state: string }) => { + if (params.state === "arm_away") { + return hass.hass.call.alarm_control_panel.alarm_arm_away({ + entity_id: params.entity_id, + }) + } + if (params.state === "disarm") { + return hass.hass.call.alarm_control_panel.alarm_disarm({ + entity_id: params.entity_id, + }) + } + if (params.state === "arm_home") { + return hass.hass.call.alarm_control_panel.alarm_arm_home({ + entity_id: params.entity_id, + }) + } + if (params.state === "arm_night") { + return hass.hass.call.alarm_control_panel.alarm_arm_night({ + entity_id: params.entity_id, + }) + } +} + const controlLight = async (params: { entity_id: TRawEntityIds, state: string, brightness?: number }) => { if (params.state === "on") { return hass.hass.call.light.turn_on({