@coffeerunhobby/mcp-ha-connect 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.dockerignore +8 -0
- package/.env.example +149 -0
- package/.gitattributes +30 -0
- package/Dockerfile +33 -0
- package/LICENSE +21 -0
- package/README.md +394 -0
- package/dist/config.d.ts +33 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +183 -0
- package/dist/config.js.map +1 -0
- package/dist/haClient/automations.d.ts +67 -0
- package/dist/haClient/automations.d.ts.map +1 -0
- package/dist/haClient/automations.js +181 -0
- package/dist/haClient/automations.js.map +1 -0
- package/dist/haClient/config.d.ts +28 -0
- package/dist/haClient/config.d.ts.map +1 -0
- package/dist/haClient/config.js +38 -0
- package/dist/haClient/config.js.map +1 -0
- package/dist/haClient/devices.d.ts +219 -0
- package/dist/haClient/devices.d.ts.map +1 -0
- package/dist/haClient/devices.js +506 -0
- package/dist/haClient/devices.js.map +1 -0
- package/dist/haClient/entities.d.ts +35 -0
- package/dist/haClient/entities.d.ts.map +1 -0
- package/dist/haClient/entities.js +97 -0
- package/dist/haClient/entities.js.map +1 -0
- package/dist/haClient/events.d.ts +138 -0
- package/dist/haClient/events.d.ts.map +1 -0
- package/dist/haClient/events.js +344 -0
- package/dist/haClient/events.js.map +1 -0
- package/dist/haClient/history.d.ts +26 -0
- package/dist/haClient/history.d.ts.map +1 -0
- package/dist/haClient/history.js +54 -0
- package/dist/haClient/history.js.map +1 -0
- package/dist/haClient/index.d.ts +153 -0
- package/dist/haClient/index.d.ts.map +1 -0
- package/dist/haClient/index.js +223 -0
- package/dist/haClient/index.js.map +1 -0
- package/dist/haClient/request.d.ts +34 -0
- package/dist/haClient/request.d.ts.map +1 -0
- package/dist/haClient/request.js +93 -0
- package/dist/haClient/request.js.map +1 -0
- package/dist/haClient/services.d.ts +22 -0
- package/dist/haClient/services.d.ts.map +1 -0
- package/dist/haClient/services.js +39 -0
- package/dist/haClient/services.js.map +1 -0
- package/dist/haClient/states.d.ts +26 -0
- package/dist/haClient/states.d.ts.map +1 -0
- package/dist/haClient/states.js +53 -0
- package/dist/haClient/states.js.map +1 -0
- package/dist/haClient/updates.d.ts +22 -0
- package/dist/haClient/updates.d.ts.map +1 -0
- package/dist/haClient/updates.js +48 -0
- package/dist/haClient/updates.js.map +1 -0
- package/dist/haClient.d.ts +97 -0
- package/dist/haClient.d.ts.map +1 -0
- package/dist/haClient.js +344 -0
- package/dist/haClient.js.map +1 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +92 -0
- package/dist/index.js.map +1 -0
- package/dist/localAI/index.d.ts +37 -0
- package/dist/localAI/index.d.ts.map +1 -0
- package/dist/localAI/index.js +73 -0
- package/dist/localAI/index.js.map +1 -0
- package/dist/localAI/prompts.d.ts +20 -0
- package/dist/localAI/prompts.d.ts.map +1 -0
- package/dist/localAI/prompts.js +48 -0
- package/dist/localAI/prompts.js.map +1 -0
- package/dist/localAI/providers/base.d.ts +51 -0
- package/dist/localAI/providers/base.d.ts.map +1 -0
- package/dist/localAI/providers/base.js +80 -0
- package/dist/localAI/providers/base.js.map +1 -0
- package/dist/localAI/providers/ollama.d.ts +22 -0
- package/dist/localAI/providers/ollama.d.ts.map +1 -0
- package/dist/localAI/providers/ollama.js +63 -0
- package/dist/localAI/providers/ollama.js.map +1 -0
- package/dist/localAI/providers/openai.d.ts +23 -0
- package/dist/localAI/providers/openai.d.ts.map +1 -0
- package/dist/localAI/providers/openai.js +63 -0
- package/dist/localAI/providers/openai.js.map +1 -0
- package/dist/localAI/types.d.ts +61 -0
- package/dist/localAI/types.d.ts.map +1 -0
- package/dist/localAI/types.js +6 -0
- package/dist/localAI/types.js.map +1 -0
- package/dist/ollamaClient.d.ts +37 -0
- package/dist/ollamaClient.d.ts.map +1 -0
- package/dist/ollamaClient.js +110 -0
- package/dist/ollamaClient.js.map +1 -0
- package/dist/resources/index.d.ts +11 -0
- package/dist/resources/index.d.ts.map +1 -0
- package/dist/resources/index.js +238 -0
- package/dist/resources/index.js.map +1 -0
- package/dist/server/common.d.ts +9 -0
- package/dist/server/common.d.ts.map +1 -0
- package/dist/server/common.js +27 -0
- package/dist/server/common.js.map +1 -0
- package/dist/server/eventSubscription.d.ts +53 -0
- package/dist/server/eventSubscription.d.ts.map +1 -0
- package/dist/server/eventSubscription.js +257 -0
- package/dist/server/eventSubscription.js.map +1 -0
- package/dist/server/http.d.ts +12 -0
- package/dist/server/http.d.ts.map +1 -0
- package/dist/server/http.js +491 -0
- package/dist/server/http.js.map +1 -0
- package/dist/server/rateLimiter.d.ts +70 -0
- package/dist/server/rateLimiter.d.ts.map +1 -0
- package/dist/server/rateLimiter.js +156 -0
- package/dist/server/rateLimiter.js.map +1 -0
- package/dist/server/sse.d.ts +32 -0
- package/dist/server/sse.d.ts.map +1 -0
- package/dist/server/sse.js +76 -0
- package/dist/server/sse.js.map +1 -0
- package/dist/server/stdio.d.ts +8 -0
- package/dist/server/stdio.d.ts.map +1 -0
- package/dist/server/stdio.js +16 -0
- package/dist/server/stdio.js.map +1 -0
- package/dist/server/stream.d.ts +26 -0
- package/dist/server/stream.d.ts.map +1 -0
- package/dist/server/stream.js +81 -0
- package/dist/server/stream.js.map +1 -0
- package/dist/server.d.ts +8 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +30 -0
- package/dist/server.js.map +1 -0
- package/dist/tools/callService.d.ts +8 -0
- package/dist/tools/callService.d.ts.map +1 -0
- package/dist/tools/callService.js +100 -0
- package/dist/tools/callService.js.map +1 -0
- package/dist/tools/getClient.d.ts +8 -0
- package/dist/tools/getClient.d.ts.map +1 -0
- package/dist/tools/getClient.js +94 -0
- package/dist/tools/getClient.js.map +1 -0
- package/dist/tools/getDevice.d.ts +8 -0
- package/dist/tools/getDevice.d.ts.map +1 -0
- package/dist/tools/getDevice.js +94 -0
- package/dist/tools/getDevice.js.map +1 -0
- package/dist/tools/getEntitiesByDomain.d.ts +8 -0
- package/dist/tools/getEntitiesByDomain.d.ts.map +1 -0
- package/dist/tools/getEntitiesByDomain.js +80 -0
- package/dist/tools/getEntitiesByDomain.js.map +1 -0
- package/dist/tools/getState.d.ts +8 -0
- package/dist/tools/getState.d.ts.map +1 -0
- package/dist/tools/getState.js +90 -0
- package/dist/tools/getState.js.map +1 -0
- package/dist/tools/getStates.d.ts +8 -0
- package/dist/tools/getStates.d.ts.map +1 -0
- package/dist/tools/getStates.js +70 -0
- package/dist/tools/getStates.js.map +1 -0
- package/dist/tools/index.d.ts +9 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +9 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/listClients.d.ts +8 -0
- package/dist/tools/listClients.d.ts.map +1 -0
- package/dist/tools/listClients.js +73 -0
- package/dist/tools/listClients.js.map +1 -0
- package/dist/tools/listDevices.d.ts +8 -0
- package/dist/tools/listDevices.d.ts.map +1 -0
- package/dist/tools/listDevices.js +73 -0
- package/dist/tools/listDevices.js.map +1 -0
- package/dist/tools/listSites.d.ts +8 -0
- package/dist/tools/listSites.d.ts.map +1 -0
- package/dist/tools/listSites.js +67 -0
- package/dist/tools/listSites.js.map +1 -0
- package/dist/tools/registry.d.ts +9 -0
- package/dist/tools/registry.d.ts.map +1 -0
- package/dist/tools/registry.js +1382 -0
- package/dist/tools/registry.js.map +1 -0
- package/dist/tools/searchDevices.d.ts +8 -0
- package/dist/tools/searchDevices.d.ts.map +1 -0
- package/dist/tools/searchDevices.js +84 -0
- package/dist/tools/searchDevices.js.map +1 -0
- package/dist/tools/searchEntities.d.ts +8 -0
- package/dist/tools/searchEntities.d.ts.map +1 -0
- package/dist/tools/searchEntities.js +80 -0
- package/dist/tools/searchEntities.js.map +1 -0
- package/dist/types/entity.d.ts +98 -0
- package/dist/types/entity.d.ts.map +1 -0
- package/dist/types/entity.js +2 -0
- package/dist/types/entity.js.map +1 -0
- package/dist/types/errors.d.ts +16 -0
- package/dist/types/errors.d.ts.map +1 -0
- package/dist/types/errors.js +32 -0
- package/dist/types/errors.js.map +1 -0
- package/dist/types/haConfig.d.ts +8 -0
- package/dist/types/haConfig.d.ts.map +1 -0
- package/dist/types/haConfig.js +2 -0
- package/dist/types/haConfig.js.map +1 -0
- package/dist/types/index.d.ts +6 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +2 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/request.d.ts +7 -0
- package/dist/types/request.d.ts.map +1 -0
- package/dist/types/request.js +2 -0
- package/dist/types/request.js.map +1 -0
- package/dist/types/serviceCall.d.ts +18 -0
- package/dist/types/serviceCall.d.ts.map +1 -0
- package/dist/types/serviceCall.js +2 -0
- package/dist/types/serviceCall.js.map +1 -0
- package/dist/types.d.ts +2 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +3 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/config-validations.d.ts +12 -0
- package/dist/utils/config-validations.d.ts.map +1 -0
- package/dist/utils/config-validations.js +43 -0
- package/dist/utils/config-validations.js.map +1 -0
- package/dist/utils/logger.d.ts +24 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +94 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/wrapper.d.ts +8 -0
- package/dist/wrapper.d.ts.map +1 -0
- package/dist/wrapper.js +301 -0
- package/dist/wrapper.js.map +1 -0
- package/docker-compose.yml +17 -0
- package/docs/CHANGELOG.md +86 -0
- package/docs/LOCAL_CLIENT.md +268 -0
- package/docs/SSE_API.md +341 -0
- package/eslint.config.js +33 -0
- package/n8n/ai-agent-safety-monitor.json +355 -0
- package/openapi.json +166 -0
- package/package.json +51 -0
- package/src/config.ts +260 -0
- package/src/haClient/automations.ts +217 -0
- package/src/haClient/config.ts +41 -0
- package/src/haClient/devices.ts +653 -0
- package/src/haClient/entities.ts +128 -0
- package/src/haClient/events.ts +456 -0
- package/src/haClient/history.ts +68 -0
- package/src/haClient/index.ts +287 -0
- package/src/haClient/request.ts +127 -0
- package/src/haClient/services.ts +45 -0
- package/src/haClient/states.ts +60 -0
- package/src/haClient/updates.ts +58 -0
- package/src/index.ts +99 -0
- package/src/localAI/index.ts +88 -0
- package/src/localAI/prompts.ts +50 -0
- package/src/localAI/providers/base.ts +120 -0
- package/src/localAI/providers/ollama.ts +78 -0
- package/src/localAI/providers/openai.ts +86 -0
- package/src/localAI/types.ts +67 -0
- package/src/resources/index.ts +266 -0
- package/src/server/common.ts +38 -0
- package/src/server/eventSubscription.ts +318 -0
- package/src/server/http.ts +546 -0
- package/src/server/rateLimiter.ts +195 -0
- package/src/server/sse.ts +120 -0
- package/src/server/stdio.ts +22 -0
- package/src/server/stream.ts +113 -0
- package/src/tools/callService.ts +114 -0
- package/src/tools/getEntitiesByDomain.ts +92 -0
- package/src/tools/getState.ts +103 -0
- package/src/tools/getStates.ts +80 -0
- package/src/tools/index.ts +9 -0
- package/src/tools/registry.ts +1521 -0
- package/src/tools/searchEntities.ts +92 -0
- package/src/types/entity.ts +110 -0
- package/src/types/errors.ts +33 -0
- package/src/types/haConfig.ts +7 -0
- package/src/types/index.ts +5 -0
- package/src/types/request.ts +6 -0
- package/src/types/serviceCall.ts +18 -0
- package/src/types.ts +2 -0
- package/src/utils/config-validations.ts +46 -0
- package/src/utils/logger.ts +114 -0
- package/src/wrapper.ts +340 -0
- package/tests/config.test.ts +332 -0
- package/tests/haClient/automations.test.ts +133 -0
- package/tests/haClient/config.test.ts +96 -0
- package/tests/haClient/entities.test.ts +188 -0
- package/tests/haClient/history.test.ts +170 -0
- package/tests/haClient/index.test.ts +221 -0
- package/tests/haClient/request.test.ts +217 -0
- package/tests/haClient/services.test.ts +120 -0
- package/tests/haClient/states.test.ts +119 -0
- package/tests/haClient/updates.test.ts +193 -0
- package/tests/index.test.ts +164 -0
- package/tests/localAI/index.test.ts +168 -0
- package/tests/localAI/ollama.test.ts +187 -0
- package/tests/localAI/openai.test.ts +257 -0
- package/tests/server/common.test.ts +64 -0
- package/tests/server/http.test.ts +326 -0
- package/tests/server/sse.test.ts +240 -0
- package/tests/server/stdio.test.ts +102 -0
- package/tests/server/stream.test.ts +287 -0
- package/tests/tools/registry.test.ts +355 -0
- package/tests/utils/config-validations.test.ts +289 -0
- package/tests/utils/logger.test.ts +327 -0
- package/tsconfig.json +25 -0
- package/vitest.config.ts +26 -0
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Home Assistant API Client
|
|
3
|
+
* Main client class that composes all operation modules
|
|
4
|
+
*/
|
|
5
|
+
import type { EnvironmentConfig } from '../config.js';
|
|
6
|
+
import type { Entity, ServiceCallData, ServiceCallResponse, Automation, AutomationConfig, DomainSummary, HaVersion, LogbookEntry, UpdateInfo } from '../types/index.js';
|
|
7
|
+
import { DeviceOperations } from './devices.js';
|
|
8
|
+
/**
|
|
9
|
+
* Main client for interacting with the Home Assistant API.
|
|
10
|
+
* Organized with dedicated operation classes for each domain.
|
|
11
|
+
*/
|
|
12
|
+
export declare class HaClient {
|
|
13
|
+
private readonly request;
|
|
14
|
+
private readonly stateOps;
|
|
15
|
+
private readonly serviceOps;
|
|
16
|
+
private readonly entityOps;
|
|
17
|
+
private readonly automationOps;
|
|
18
|
+
private readonly historyOps;
|
|
19
|
+
private readonly updateOps;
|
|
20
|
+
private readonly configOps;
|
|
21
|
+
readonly devices: DeviceOperations;
|
|
22
|
+
constructor(config: EnvironmentConfig);
|
|
23
|
+
/**
|
|
24
|
+
* Get all states (entities)
|
|
25
|
+
*/
|
|
26
|
+
getStates(): Promise<Entity[]>;
|
|
27
|
+
/**
|
|
28
|
+
* Get state of a specific entity
|
|
29
|
+
*/
|
|
30
|
+
getState(entityId: string): Promise<Entity | null>;
|
|
31
|
+
/**
|
|
32
|
+
* Get all sensors (sensor.* and binary_sensor.* entities)
|
|
33
|
+
*/
|
|
34
|
+
getAllSensors(): Promise<Entity[]>;
|
|
35
|
+
/**
|
|
36
|
+
* Call a service
|
|
37
|
+
*/
|
|
38
|
+
callService(data: ServiceCallData): Promise<ServiceCallResponse>;
|
|
39
|
+
/**
|
|
40
|
+
* Restart Home Assistant
|
|
41
|
+
*/
|
|
42
|
+
restartServer(): Promise<void>;
|
|
43
|
+
/**
|
|
44
|
+
* Get entities filtered by domain
|
|
45
|
+
*/
|
|
46
|
+
getEntitiesByDomain(domain: string): Promise<Entity[]>;
|
|
47
|
+
/**
|
|
48
|
+
* Search entities by name or entity_id
|
|
49
|
+
*/
|
|
50
|
+
searchEntities(query: string): Promise<Entity[]>;
|
|
51
|
+
/**
|
|
52
|
+
* Get domain summary with entity counts and state breakdown
|
|
53
|
+
*/
|
|
54
|
+
getDomainSummary(domain: string): Promise<DomainSummary>;
|
|
55
|
+
/**
|
|
56
|
+
* List entities with optional filtering
|
|
57
|
+
*/
|
|
58
|
+
listEntities(options?: {
|
|
59
|
+
domain?: string;
|
|
60
|
+
search?: string;
|
|
61
|
+
limit?: number;
|
|
62
|
+
state?: string;
|
|
63
|
+
}): Promise<Entity[]>;
|
|
64
|
+
/**
|
|
65
|
+
* Get all automations
|
|
66
|
+
*/
|
|
67
|
+
getAutomations(): Promise<Automation[]>;
|
|
68
|
+
/**
|
|
69
|
+
* Get a single automation by entity_id
|
|
70
|
+
*/
|
|
71
|
+
getAutomation(entityId: string): Promise<Automation | null>;
|
|
72
|
+
/**
|
|
73
|
+
* Trigger an automation manually
|
|
74
|
+
*/
|
|
75
|
+
triggerAutomation(entityId: string, variables?: Record<string, unknown>): Promise<ServiceCallResponse>;
|
|
76
|
+
/**
|
|
77
|
+
* Enable an automation
|
|
78
|
+
*/
|
|
79
|
+
enableAutomation(entityId: string): Promise<ServiceCallResponse>;
|
|
80
|
+
/**
|
|
81
|
+
* Disable an automation
|
|
82
|
+
*/
|
|
83
|
+
disableAutomation(entityId: string): Promise<ServiceCallResponse>;
|
|
84
|
+
/**
|
|
85
|
+
* Toggle an automation
|
|
86
|
+
*/
|
|
87
|
+
toggleAutomation(entityId: string): Promise<ServiceCallResponse>;
|
|
88
|
+
/**
|
|
89
|
+
* Reload all automations from configuration
|
|
90
|
+
*/
|
|
91
|
+
reloadAutomations(): Promise<void>;
|
|
92
|
+
/**
|
|
93
|
+
* Create a new automation
|
|
94
|
+
*/
|
|
95
|
+
createAutomation(config: AutomationConfig): Promise<{
|
|
96
|
+
id: string;
|
|
97
|
+
}>;
|
|
98
|
+
/**
|
|
99
|
+
* Update an existing automation
|
|
100
|
+
*/
|
|
101
|
+
updateAutomation(automationId: string, config: Partial<AutomationConfig>): Promise<void>;
|
|
102
|
+
/**
|
|
103
|
+
* Delete an automation
|
|
104
|
+
*/
|
|
105
|
+
deleteAutomation(automationId: string): Promise<void>;
|
|
106
|
+
/**
|
|
107
|
+
* Get automation execution trace
|
|
108
|
+
*/
|
|
109
|
+
getAutomationTrace(entityId: string): Promise<unknown[]>;
|
|
110
|
+
/**
|
|
111
|
+
* Get historical data for an entity
|
|
112
|
+
*/
|
|
113
|
+
getHistory(entityId: string, hours?: number): Promise<Entity[][]>;
|
|
114
|
+
/**
|
|
115
|
+
* Get system log entries from the logbook
|
|
116
|
+
*/
|
|
117
|
+
getSystemLog(options?: {
|
|
118
|
+
hours?: number;
|
|
119
|
+
entity_id?: string;
|
|
120
|
+
}): Promise<LogbookEntry[]>;
|
|
121
|
+
/**
|
|
122
|
+
* Get available updates by checking update.* entities
|
|
123
|
+
*/
|
|
124
|
+
getAvailableUpdates(): Promise<{
|
|
125
|
+
updates: UpdateInfo[];
|
|
126
|
+
entities: Entity[];
|
|
127
|
+
}>;
|
|
128
|
+
/**
|
|
129
|
+
* Get config
|
|
130
|
+
*/
|
|
131
|
+
getConfig(): Promise<Record<string, unknown>>;
|
|
132
|
+
/**
|
|
133
|
+
* Check API (health check)
|
|
134
|
+
*/
|
|
135
|
+
checkApi(): Promise<{
|
|
136
|
+
message: string;
|
|
137
|
+
}>;
|
|
138
|
+
/**
|
|
139
|
+
* Get Home Assistant version and configuration info
|
|
140
|
+
*/
|
|
141
|
+
getVersion(): Promise<HaVersion>;
|
|
142
|
+
}
|
|
143
|
+
export { RequestHandler } from './request.js';
|
|
144
|
+
export { StateOperations } from './states.js';
|
|
145
|
+
export { ServiceOperations } from './services.js';
|
|
146
|
+
export { EntityOperations } from './entities.js';
|
|
147
|
+
export { AutomationOperations } from './automations.js';
|
|
148
|
+
export { HistoryOperations } from './history.js';
|
|
149
|
+
export { UpdateOperations } from './updates.js';
|
|
150
|
+
export { ConfigOperations } from './config.js';
|
|
151
|
+
export { DeviceOperations } from './devices.js';
|
|
152
|
+
export type { LightControlOptions, ClimateControlOptions, MediaPlayerControlOptions, CoverControlOptions, FanControlOptions } from './devices.js';
|
|
153
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/haClient/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,223 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Home Assistant API Client
|
|
3
|
+
* Main client class that composes all operation modules
|
|
4
|
+
*/
|
|
5
|
+
import { logger } from '../utils/logger.js';
|
|
6
|
+
import { AutomationOperations } from './automations.js';
|
|
7
|
+
import { ConfigOperations } from './config.js';
|
|
8
|
+
import { DeviceOperations } from './devices.js';
|
|
9
|
+
import { EntityOperations } from './entities.js';
|
|
10
|
+
import { HistoryOperations } from './history.js';
|
|
11
|
+
import { RequestHandler } from './request.js';
|
|
12
|
+
import { ServiceOperations } from './services.js';
|
|
13
|
+
import { StateOperations } from './states.js';
|
|
14
|
+
import { UpdateOperations } from './updates.js';
|
|
15
|
+
/**
|
|
16
|
+
* Main client for interacting with the Home Assistant API.
|
|
17
|
+
* Organized with dedicated operation classes for each domain.
|
|
18
|
+
*/
|
|
19
|
+
export class HaClient {
|
|
20
|
+
request;
|
|
21
|
+
stateOps;
|
|
22
|
+
serviceOps;
|
|
23
|
+
entityOps;
|
|
24
|
+
automationOps;
|
|
25
|
+
historyOps;
|
|
26
|
+
updateOps;
|
|
27
|
+
configOps;
|
|
28
|
+
devices;
|
|
29
|
+
constructor(config) {
|
|
30
|
+
logger.debug('Initializing HaClient');
|
|
31
|
+
// Initialize request handler
|
|
32
|
+
this.request = new RequestHandler({
|
|
33
|
+
baseUrl: config.baseUrl,
|
|
34
|
+
token: config.token,
|
|
35
|
+
timeout: config.timeout,
|
|
36
|
+
strictSsl: config.strictSsl,
|
|
37
|
+
});
|
|
38
|
+
// Initialize operation modules with dependencies
|
|
39
|
+
this.stateOps = new StateOperations(this.request);
|
|
40
|
+
this.serviceOps = new ServiceOperations(this.request);
|
|
41
|
+
this.entityOps = new EntityOperations(this.stateOps);
|
|
42
|
+
this.automationOps = new AutomationOperations(this.stateOps, this.serviceOps, this.request);
|
|
43
|
+
this.historyOps = new HistoryOperations(this.request);
|
|
44
|
+
this.updateOps = new UpdateOperations(this.entityOps);
|
|
45
|
+
this.configOps = new ConfigOperations(this.request);
|
|
46
|
+
this.devices = new DeviceOperations(this.serviceOps, this.stateOps);
|
|
47
|
+
logger.info('HaClient initialized');
|
|
48
|
+
}
|
|
49
|
+
// ===== State Operations =====
|
|
50
|
+
/**
|
|
51
|
+
* Get all states (entities)
|
|
52
|
+
*/
|
|
53
|
+
async getStates() {
|
|
54
|
+
return this.stateOps.getStates();
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Get state of a specific entity
|
|
58
|
+
*/
|
|
59
|
+
async getState(entityId) {
|
|
60
|
+
return this.stateOps.getState(entityId);
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Get all sensors (sensor.* and binary_sensor.* entities)
|
|
64
|
+
*/
|
|
65
|
+
async getAllSensors() {
|
|
66
|
+
return this.stateOps.getAllSensors();
|
|
67
|
+
}
|
|
68
|
+
// ===== Service Operations =====
|
|
69
|
+
/**
|
|
70
|
+
* Call a service
|
|
71
|
+
*/
|
|
72
|
+
async callService(data) {
|
|
73
|
+
return this.serviceOps.callService(data);
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Restart Home Assistant
|
|
77
|
+
*/
|
|
78
|
+
async restartServer() {
|
|
79
|
+
return this.serviceOps.restartServer();
|
|
80
|
+
}
|
|
81
|
+
// ===== Entity Operations =====
|
|
82
|
+
/**
|
|
83
|
+
* Get entities filtered by domain
|
|
84
|
+
*/
|
|
85
|
+
async getEntitiesByDomain(domain) {
|
|
86
|
+
return this.entityOps.getEntitiesByDomain(domain);
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Search entities by name or entity_id
|
|
90
|
+
*/
|
|
91
|
+
async searchEntities(query) {
|
|
92
|
+
return this.entityOps.searchEntities(query);
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Get domain summary with entity counts and state breakdown
|
|
96
|
+
*/
|
|
97
|
+
async getDomainSummary(domain) {
|
|
98
|
+
return this.entityOps.getDomainSummary(domain);
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* List entities with optional filtering
|
|
102
|
+
*/
|
|
103
|
+
async listEntities(options = {}) {
|
|
104
|
+
return this.entityOps.listEntities(options);
|
|
105
|
+
}
|
|
106
|
+
// ===== Automation Operations =====
|
|
107
|
+
/**
|
|
108
|
+
* Get all automations
|
|
109
|
+
*/
|
|
110
|
+
async getAutomations() {
|
|
111
|
+
return this.automationOps.getAutomations();
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Get a single automation by entity_id
|
|
115
|
+
*/
|
|
116
|
+
async getAutomation(entityId) {
|
|
117
|
+
return this.automationOps.getAutomation(entityId);
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Trigger an automation manually
|
|
121
|
+
*/
|
|
122
|
+
async triggerAutomation(entityId, variables) {
|
|
123
|
+
return this.automationOps.triggerAutomation(entityId, variables);
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Enable an automation
|
|
127
|
+
*/
|
|
128
|
+
async enableAutomation(entityId) {
|
|
129
|
+
return this.automationOps.enableAutomation(entityId);
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Disable an automation
|
|
133
|
+
*/
|
|
134
|
+
async disableAutomation(entityId) {
|
|
135
|
+
return this.automationOps.disableAutomation(entityId);
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Toggle an automation
|
|
139
|
+
*/
|
|
140
|
+
async toggleAutomation(entityId) {
|
|
141
|
+
return this.automationOps.toggleAutomation(entityId);
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Reload all automations from configuration
|
|
145
|
+
*/
|
|
146
|
+
async reloadAutomations() {
|
|
147
|
+
return this.automationOps.reloadAutomations();
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Create a new automation
|
|
151
|
+
*/
|
|
152
|
+
async createAutomation(config) {
|
|
153
|
+
return this.automationOps.createAutomation(config);
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Update an existing automation
|
|
157
|
+
*/
|
|
158
|
+
async updateAutomation(automationId, config) {
|
|
159
|
+
return this.automationOps.updateAutomation(automationId, config);
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* Delete an automation
|
|
163
|
+
*/
|
|
164
|
+
async deleteAutomation(automationId) {
|
|
165
|
+
return this.automationOps.deleteAutomation(automationId);
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* Get automation execution trace
|
|
169
|
+
*/
|
|
170
|
+
async getAutomationTrace(entityId) {
|
|
171
|
+
return this.automationOps.getAutomationTrace(entityId);
|
|
172
|
+
}
|
|
173
|
+
// ===== History Operations =====
|
|
174
|
+
/**
|
|
175
|
+
* Get historical data for an entity
|
|
176
|
+
*/
|
|
177
|
+
async getHistory(entityId, hours = 24) {
|
|
178
|
+
return this.historyOps.getHistory(entityId, hours);
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* Get system log entries from the logbook
|
|
182
|
+
*/
|
|
183
|
+
async getSystemLog(options = {}) {
|
|
184
|
+
return this.historyOps.getSystemLog(options);
|
|
185
|
+
}
|
|
186
|
+
// ===== Update Operations =====
|
|
187
|
+
/**
|
|
188
|
+
* Get available updates by checking update.* entities
|
|
189
|
+
*/
|
|
190
|
+
async getAvailableUpdates() {
|
|
191
|
+
return this.updateOps.getAvailableUpdates();
|
|
192
|
+
}
|
|
193
|
+
// ===== Config Operations =====
|
|
194
|
+
/**
|
|
195
|
+
* Get config
|
|
196
|
+
*/
|
|
197
|
+
async getConfig() {
|
|
198
|
+
return this.configOps.getConfig();
|
|
199
|
+
}
|
|
200
|
+
/**
|
|
201
|
+
* Check API (health check)
|
|
202
|
+
*/
|
|
203
|
+
async checkApi() {
|
|
204
|
+
return this.configOps.checkApi();
|
|
205
|
+
}
|
|
206
|
+
/**
|
|
207
|
+
* Get Home Assistant version and configuration info
|
|
208
|
+
*/
|
|
209
|
+
async getVersion() {
|
|
210
|
+
return this.configOps.getVersion();
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
// Re-export operation classes for testing
|
|
214
|
+
export { RequestHandler } from './request.js';
|
|
215
|
+
export { StateOperations } from './states.js';
|
|
216
|
+
export { ServiceOperations } from './services.js';
|
|
217
|
+
export { EntityOperations } from './entities.js';
|
|
218
|
+
export { AutomationOperations } from './automations.js';
|
|
219
|
+
export { HistoryOperations } from './history.js';
|
|
220
|
+
export { UpdateOperations } from './updates.js';
|
|
221
|
+
export { ConfigOperations } from './config.js';
|
|
222
|
+
export { DeviceOperations } from './devices.js';
|
|
223
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/haClient/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* HTTP Request Handler for Home Assistant API
|
|
3
|
+
* Handles authentication and HTTP requests
|
|
4
|
+
*/
|
|
5
|
+
import type { RequestOptions } from '../types/index.js';
|
|
6
|
+
export interface RequestHandlerConfig {
|
|
7
|
+
baseUrl: string;
|
|
8
|
+
token: string;
|
|
9
|
+
timeout: number;
|
|
10
|
+
strictSsl: boolean;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* HTTP request handler for Home Assistant API calls.
|
|
14
|
+
*/
|
|
15
|
+
export declare class RequestHandler {
|
|
16
|
+
private httpsAgent?;
|
|
17
|
+
private baseUrl;
|
|
18
|
+
private token;
|
|
19
|
+
private timeout;
|
|
20
|
+
constructor(config: RequestHandlerConfig);
|
|
21
|
+
/**
|
|
22
|
+
* Make authenticated request to Home Assistant API
|
|
23
|
+
*/
|
|
24
|
+
request<T>(path: string, options?: RequestOptions): Promise<T>;
|
|
25
|
+
/**
|
|
26
|
+
* Make a GET request
|
|
27
|
+
*/
|
|
28
|
+
get<T>(path: string, params?: Record<string, string | number>): Promise<T>;
|
|
29
|
+
/**
|
|
30
|
+
* Make a POST request
|
|
31
|
+
*/
|
|
32
|
+
post<T>(path: string, body?: unknown): Promise<T>;
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=request.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"request.d.ts","sourceRoot":"","sources":["../../src/haClient/request.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAIxD,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,OAAO,CAAC;CACpB;AAED;;GAEG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,UAAU,CAAC,CAAc;IACjC,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,OAAO,CAAS;gBAEZ,MAAM,EAAE,oBAAoB;IAcxC;;OAEG;IACG,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,cAAmB,GAAG,OAAO,CAAC,CAAC,CAAC;IAsExE;;OAEG;IACG,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAIhF;;OAEG;IACG,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC;CAGxD"}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* HTTP Request Handler for Home Assistant API
|
|
3
|
+
* Handles authentication and HTTP requests
|
|
4
|
+
*/
|
|
5
|
+
import https from 'https';
|
|
6
|
+
import { AuthenticationError, ApiError } from '../types/index.js';
|
|
7
|
+
import { logger } from '../utils/logger.js';
|
|
8
|
+
/**
|
|
9
|
+
* HTTP request handler for Home Assistant API calls.
|
|
10
|
+
*/
|
|
11
|
+
export class RequestHandler {
|
|
12
|
+
httpsAgent;
|
|
13
|
+
baseUrl;
|
|
14
|
+
token;
|
|
15
|
+
timeout;
|
|
16
|
+
constructor(config) {
|
|
17
|
+
this.baseUrl = config.baseUrl;
|
|
18
|
+
this.token = config.token;
|
|
19
|
+
this.timeout = config.timeout;
|
|
20
|
+
// Create HTTPS agent with custom SSL settings
|
|
21
|
+
if (!config.strictSsl) {
|
|
22
|
+
this.httpsAgent = new https.Agent({
|
|
23
|
+
rejectUnauthorized: false,
|
|
24
|
+
});
|
|
25
|
+
logger.warn('SSL certificate validation is disabled');
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Make authenticated request to Home Assistant API
|
|
30
|
+
*/
|
|
31
|
+
async request(path, options = {}) {
|
|
32
|
+
const url = new URL(`${this.baseUrl}/api${path}`);
|
|
33
|
+
// Add query parameters
|
|
34
|
+
if (options.params) {
|
|
35
|
+
Object.entries(options.params).forEach(([key, value]) => {
|
|
36
|
+
url.searchParams.append(key, String(value));
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
const headers = {
|
|
40
|
+
'Authorization': `Bearer ${this.token}`,
|
|
41
|
+
'Content-Type': 'application/json',
|
|
42
|
+
...options.headers,
|
|
43
|
+
};
|
|
44
|
+
logger.debug('Making API request', {
|
|
45
|
+
method: options.method ?? 'GET',
|
|
46
|
+
path,
|
|
47
|
+
params: options.params,
|
|
48
|
+
});
|
|
49
|
+
try {
|
|
50
|
+
const response = await fetch(url.toString(), {
|
|
51
|
+
method: options.method ?? 'GET',
|
|
52
|
+
headers,
|
|
53
|
+
body: options.body ? JSON.stringify(options.body) : undefined,
|
|
54
|
+
// @ts-expect-error - agent is valid but not in types
|
|
55
|
+
agent: this.httpsAgent,
|
|
56
|
+
signal: AbortSignal.timeout(this.timeout),
|
|
57
|
+
});
|
|
58
|
+
if (!response.ok) {
|
|
59
|
+
const errorText = await response.text();
|
|
60
|
+
if (response.status === 401) {
|
|
61
|
+
throw new AuthenticationError('Invalid Home Assistant token', { status: response.status, body: errorText });
|
|
62
|
+
}
|
|
63
|
+
throw new ApiError(`API request failed: ${response.statusText}`, response.status, { path, body: errorText });
|
|
64
|
+
}
|
|
65
|
+
// Handle empty responses
|
|
66
|
+
const contentType = response.headers.get('content-type');
|
|
67
|
+
if (!contentType?.includes('application/json')) {
|
|
68
|
+
return {};
|
|
69
|
+
}
|
|
70
|
+
const data = await response.json();
|
|
71
|
+
return data;
|
|
72
|
+
}
|
|
73
|
+
catch (error) {
|
|
74
|
+
if (error instanceof AuthenticationError || error instanceof ApiError) {
|
|
75
|
+
throw error;
|
|
76
|
+
}
|
|
77
|
+
throw new ApiError(`Request failed: ${error instanceof Error ? error.message : String(error)}`, 500, { path });
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Make a GET request
|
|
82
|
+
*/
|
|
83
|
+
async get(path, params) {
|
|
84
|
+
return this.request(path, { params });
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Make a POST request
|
|
88
|
+
*/
|
|
89
|
+
async post(path, body) {
|
|
90
|
+
return this.request(path, { method: 'POST', body });
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
//# sourceMappingURL=request.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"request.js","sourceRoot":"","sources":["../../src/haClient/request.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Service Operations for Home Assistant API
|
|
3
|
+
* Handles service calls and server management
|
|
4
|
+
*/
|
|
5
|
+
import type { ServiceCallData, ServiceCallResponse } from '../types/index.js';
|
|
6
|
+
import type { RequestHandler } from './request.js';
|
|
7
|
+
/**
|
|
8
|
+
* Service-related operations for the Home Assistant API.
|
|
9
|
+
*/
|
|
10
|
+
export declare class ServiceOperations {
|
|
11
|
+
private readonly request;
|
|
12
|
+
constructor(request: RequestHandler);
|
|
13
|
+
/**
|
|
14
|
+
* Call a service
|
|
15
|
+
*/
|
|
16
|
+
callService(data: ServiceCallData): Promise<ServiceCallResponse>;
|
|
17
|
+
/**
|
|
18
|
+
* Restart Home Assistant
|
|
19
|
+
*/
|
|
20
|
+
restartServer(): Promise<void>;
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=services.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"services.d.ts","sourceRoot":"","sources":["../../src/haClient/services.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAE9E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAEnD;;GAEG;AACH,qBAAa,iBAAiB;IAChB,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAAP,OAAO,EAAE,cAAc;IAEpD;;OAEG;IACG,WAAW,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAgBtE;;OAEG;IACG,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;CAOrC"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Service Operations for Home Assistant API
|
|
3
|
+
* Handles service calls and server management
|
|
4
|
+
*/
|
|
5
|
+
import { logger } from '../utils/logger.js';
|
|
6
|
+
/**
|
|
7
|
+
* Service-related operations for the Home Assistant API.
|
|
8
|
+
*/
|
|
9
|
+
export class ServiceOperations {
|
|
10
|
+
request;
|
|
11
|
+
constructor(request) {
|
|
12
|
+
this.request = request;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Call a service
|
|
16
|
+
*/
|
|
17
|
+
async callService(data) {
|
|
18
|
+
logger.info('Calling service', {
|
|
19
|
+
domain: data.domain,
|
|
20
|
+
service: data.service,
|
|
21
|
+
hasTarget: !!data.target,
|
|
22
|
+
});
|
|
23
|
+
const path = `/services/${data.domain}/${data.service}`;
|
|
24
|
+
const body = {
|
|
25
|
+
...data.service_data,
|
|
26
|
+
...data.target,
|
|
27
|
+
};
|
|
28
|
+
return await this.request.post(path, body);
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Restart Home Assistant
|
|
32
|
+
*/
|
|
33
|
+
async restartServer() {
|
|
34
|
+
logger.warn('Restarting Home Assistant');
|
|
35
|
+
await this.request.post('/services/homeassistant/restart', {});
|
|
36
|
+
logger.info('Home Assistant restart initiated');
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=services.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"services.js","sourceRoot":"","sources":["../../src/haClient/services.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAG5C;;GAEG;AACH,MAAM,OAAO,iBAAiB;IACC;IAA7B,YAA6B,OAAuB;QAAvB,YAAO,GAAP,OAAO,CAAgB;IAAG,CAAC;IAExD;;OAEG;IACH,KAAK,CAAC,WAAW,CAAC,IAAqB;QACrC,MAAM,CAAC,IAAI,CAAC,iBAAiB,EAAE;YAC7B,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM;SACzB,CAAC,CAAC;QAEH,MAAM,IAAI,GAAG,aAAa,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;QACxD,MAAM,IAAI,GAAG;YACX,GAAG,IAAI,CAAC,YAAY;YACpB,GAAG,IAAI,CAAC,MAAM;SACf,CAAC;QAEF,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAsB,IAAI,EAAE,IAAI,CAAC,CAAC;IAClE,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,aAAa;QACjB,MAAM,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;QAEzC,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,iCAAiC,EAAE,EAAE,CAAC,CAAC;QAE/D,MAAM,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC;IAClD,CAAC;CACF"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* State Operations for Home Assistant API
|
|
3
|
+
* Handles entity state retrieval
|
|
4
|
+
*/
|
|
5
|
+
import type { Entity } from '../types/index.js';
|
|
6
|
+
import type { RequestHandler } from './request.js';
|
|
7
|
+
/**
|
|
8
|
+
* State-related operations for the Home Assistant API.
|
|
9
|
+
*/
|
|
10
|
+
export declare class StateOperations {
|
|
11
|
+
private readonly request;
|
|
12
|
+
constructor(request: RequestHandler);
|
|
13
|
+
/**
|
|
14
|
+
* Get all states (entities)
|
|
15
|
+
*/
|
|
16
|
+
getStates(): Promise<Entity[]>;
|
|
17
|
+
/**
|
|
18
|
+
* Get state of a specific entity
|
|
19
|
+
*/
|
|
20
|
+
getState(entityId: string): Promise<Entity | null>;
|
|
21
|
+
/**
|
|
22
|
+
* Get all sensors (sensor.* and binary_sensor.* entities)
|
|
23
|
+
*/
|
|
24
|
+
getAllSensors(): Promise<Entity[]>;
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=states.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"states.d.ts","sourceRoot":"","sources":["../../src/haClient/states.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAGhD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAEnD;;GAEG;AACH,qBAAa,eAAe;IACd,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAAP,OAAO,EAAE,cAAc;IAEpD;;OAEG;IACG,SAAS,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAOpC;;OAEG;IACG,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAexD;;OAEG;IACG,aAAa,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;CAYzC"}
|