homebridge-plugin-klares4 1.1.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.
Files changed (48) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +203 -0
  3. package/config.schema.json +206 -0
  4. package/dist/accessories/cover-accessory.d.ts +21 -0
  5. package/dist/accessories/cover-accessory.d.ts.map +1 -0
  6. package/dist/accessories/cover-accessory.js +128 -0
  7. package/dist/accessories/cover-accessory.js.map +1 -0
  8. package/dist/accessories/light-accessory.d.ts +16 -0
  9. package/dist/accessories/light-accessory.d.ts.map +1 -0
  10. package/dist/accessories/light-accessory.js +78 -0
  11. package/dist/accessories/light-accessory.js.map +1 -0
  12. package/dist/accessories/scenario-accessory.d.ts +13 -0
  13. package/dist/accessories/scenario-accessory.d.ts.map +1 -0
  14. package/dist/accessories/scenario-accessory.js +55 -0
  15. package/dist/accessories/scenario-accessory.js.map +1 -0
  16. package/dist/accessories/sensor-accessory.d.ts +24 -0
  17. package/dist/accessories/sensor-accessory.d.ts.map +1 -0
  18. package/dist/accessories/sensor-accessory.js +128 -0
  19. package/dist/accessories/sensor-accessory.js.map +1 -0
  20. package/dist/accessories/thermostat-accessory.d.ts +21 -0
  21. package/dist/accessories/thermostat-accessory.d.ts.map +1 -0
  22. package/dist/accessories/thermostat-accessory.js +215 -0
  23. package/dist/accessories/thermostat-accessory.js.map +1 -0
  24. package/dist/accessories/zone-accessory.d.ts +18 -0
  25. package/dist/accessories/zone-accessory.d.ts.map +1 -0
  26. package/dist/accessories/zone-accessory.js +99 -0
  27. package/dist/accessories/zone-accessory.js.map +1 -0
  28. package/dist/index.d.ts +4 -0
  29. package/dist/index.d.ts.map +1 -0
  30. package/dist/index.js +7 -0
  31. package/dist/index.js.map +1 -0
  32. package/dist/platform.d.ts +69 -0
  33. package/dist/platform.d.ts.map +1 -0
  34. package/dist/platform.js +345 -0
  35. package/dist/platform.js.map +1 -0
  36. package/dist/settings.d.ts +3 -0
  37. package/dist/settings.d.ts.map +1 -0
  38. package/dist/settings.js +6 -0
  39. package/dist/settings.js.map +1 -0
  40. package/dist/types.d.ts +82 -0
  41. package/dist/types.d.ts.map +1 -0
  42. package/dist/types.js +3 -0
  43. package/dist/types.js.map +1 -0
  44. package/dist/websocket-client.d.ts +57 -0
  45. package/dist/websocket-client.d.ts.map +1 -0
  46. package/dist/websocket-client.js +991 -0
  47. package/dist/websocket-client.js.map +1 -0
  48. package/package.json +64 -0
@@ -0,0 +1,82 @@
1
+ export interface KseniaDevice {
2
+ id: string;
3
+ type: 'light' | 'cover' | 'thermostat' | 'sensor' | 'zone' | 'scenario';
4
+ name: string;
5
+ description: string;
6
+ status?: any;
7
+ }
8
+ export interface KseniaLight extends KseniaDevice {
9
+ type: 'light';
10
+ brightness?: number;
11
+ on: boolean;
12
+ dimmable: boolean;
13
+ }
14
+ export interface KseniaCover extends KseniaDevice {
15
+ type: 'cover';
16
+ position: number;
17
+ targetPosition?: number;
18
+ state: 'stopped' | 'opening' | 'closing';
19
+ }
20
+ export interface KseniaThermostat extends KseniaDevice {
21
+ type: 'thermostat';
22
+ currentTemperature: number;
23
+ targetTemperature: number;
24
+ mode: 'off' | 'heat' | 'cool' | 'auto';
25
+ humidity?: number;
26
+ }
27
+ export interface KseniaSensor extends KseniaDevice {
28
+ type: 'sensor';
29
+ sensorType: 'temperature' | 'humidity' | 'light' | 'motion' | 'contact';
30
+ value: number;
31
+ unit?: string;
32
+ }
33
+ export interface KseniaZone extends KseniaDevice {
34
+ type: 'zone';
35
+ armed: boolean;
36
+ bypassed: boolean;
37
+ fault: boolean;
38
+ open: boolean;
39
+ }
40
+ export interface KseniaScenario extends KseniaDevice {
41
+ type: 'scenario';
42
+ active: boolean;
43
+ }
44
+ export interface KseniaMessage {
45
+ SENDER: string;
46
+ RECEIVER: string;
47
+ CMD: string;
48
+ ID: string;
49
+ PAYLOAD_TYPE: string;
50
+ PAYLOAD: any;
51
+ TIMESTAMP: string;
52
+ CRC_16: string;
53
+ }
54
+ export interface KseniaWebSocketOptions {
55
+ debug?: boolean;
56
+ reconnectInterval?: number;
57
+ heartbeatInterval?: number;
58
+ }
59
+ export interface KseniaOutputData {
60
+ ID: string;
61
+ DES: string;
62
+ TYPE: string;
63
+ STATUS: string;
64
+ POS?: string;
65
+ ENABLED: string;
66
+ }
67
+ export interface KseniaZoneData {
68
+ ID: string;
69
+ DES: string;
70
+ TYPE: string;
71
+ STATUS: string;
72
+ ENABLED: string;
73
+ }
74
+ export interface KseniaSensorData {
75
+ ID: string;
76
+ DES: string;
77
+ TYPE: string;
78
+ VALUE: string;
79
+ UNIT?: string;
80
+ ENABLED: string;
81
+ }
82
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js ADDED
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,57 @@
1
+ import { Logger } from 'homebridge';
2
+ import { KseniaWebSocketOptions, KseniaDevice } from './types';
3
+ export declare class KseniaWebSocketClient {
4
+ private readonly ip;
5
+ private readonly port;
6
+ private readonly useHttps;
7
+ private readonly sender;
8
+ private readonly pin;
9
+ private readonly log;
10
+ private readonly options;
11
+ private ws?;
12
+ private isConnected;
13
+ private idLogin?;
14
+ private heartbeatTimer?;
15
+ private reconnectTimer?;
16
+ onDeviceDiscovered?: (device: KseniaDevice) => void;
17
+ onDeviceStatusUpdate?: (device: KseniaDevice) => void;
18
+ onConnected?: () => void;
19
+ onDisconnected?: () => void;
20
+ private devices;
21
+ constructor(ip: string, port: number, useHttps: boolean, sender: string, pin: string, log: Logger, options?: KseniaWebSocketOptions);
22
+ connect(): Promise<void>;
23
+ private login;
24
+ private handleMessage;
25
+ private handleLoginResponse;
26
+ private requestSystemData;
27
+ private handleReadResponse;
28
+ private handleRealtimeResponse;
29
+ private handleStatusUpdate;
30
+ private parseZoneData;
31
+ private parseOutputData;
32
+ private parseSensorData;
33
+ private parseScenarioData;
34
+ private determineOutputType;
35
+ private determineSensorType;
36
+ private updateOutputStatuses;
37
+ private updateSensorStatuses;
38
+ private updateZoneStatuses;
39
+ private mapCoverPosition;
40
+ private mapCoverState;
41
+ switchLight(lightId: string, on: boolean): Promise<void>;
42
+ dimLight(lightId: string, brightness: number): Promise<void>;
43
+ moveCover(coverId: string, position: number): Promise<void>;
44
+ setThermostatMode(thermostatId: string, mode: 'off' | 'heat' | 'cool' | 'auto'): Promise<void>;
45
+ setThermostatTemperature(thermostatId: string, temperature: number): Promise<void>;
46
+ triggerScenario(scenarioId: string): Promise<void>;
47
+ private sendKseniaCommand;
48
+ private buildPayload;
49
+ private sendMessage;
50
+ private calculateCRC16;
51
+ private startHeartbeat;
52
+ private scheduleReconnect;
53
+ disconnect(): void;
54
+ private mapThermostatMode;
55
+ private updateSystemTemperatures;
56
+ }
57
+ //# sourceMappingURL=websocket-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"websocket-client.d.ts","sourceRoot":"","sources":["../src/websocket-client.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAEpC,OAAO,EAEH,sBAAsB,EACtB,YAAY,EAIf,MAAM,SAAS,CAAC;AAEjB,qBAAa,qBAAqB;IAiB1B,OAAO,CAAC,QAAQ,CAAC,EAAE;IACnB,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,GAAG;IACpB,OAAO,CAAC,QAAQ,CAAC,GAAG;IACpB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAtB5B,OAAO,CAAC,EAAE,CAAC,CAAY;IACvB,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,OAAO,CAAC,CAAS;IACzB,OAAO,CAAC,cAAc,CAAC,CAAiB;IACxC,OAAO,CAAC,cAAc,CAAC,CAAiB;IAGjC,kBAAkB,CAAC,EAAE,CAAC,MAAM,EAAE,YAAY,KAAK,IAAI,CAAC;IACpD,oBAAoB,CAAC,EAAE,CAAC,MAAM,EAAE,YAAY,KAAK,IAAI,CAAC;IACtD,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;IACzB,cAAc,CAAC,EAAE,MAAM,IAAI,CAAC;IAGnC,OAAO,CAAC,OAAO,CAAwC;gBAGlC,EAAE,EAAE,MAAM,EACV,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,OAAO,EACjB,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,sBAA2B;IAU5C,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;YAoDvB,KAAK;IAoBnB,OAAO,CAAC,aAAa;IAkDrB,OAAO,CAAC,mBAAmB;YAWb,iBAAiB;IAgD/B,OAAO,CAAC,kBAAkB;IAmI1B,OAAO,CAAC,sBAAsB;IAuB9B,OAAO,CAAC,kBAAkB;IA8B1B,OAAO,CAAC,aAAa;IAerB,OAAO,CAAC,eAAe;IAiDvB,OAAO,CAAC,eAAe;IAiBvB,OAAO,CAAC,iBAAiB;IAYzB,OAAO,CAAC,mBAAmB;IAuC3B,OAAO,CAAC,mBAAmB;IAS3B,OAAO,CAAC,oBAAoB;IAiF5B,OAAO,CAAC,oBAAoB;IAyC5B,OAAO,CAAC,kBAAkB;IAuB1B,OAAO,CAAC,gBAAgB;IAqBxB,OAAO,CAAC,aAAa;IA2BR,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAkBxD,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAgB5D,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA6B3D,iBAAiB,CAAC,YAAY,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAkB9F,wBAAwB,CAAC,YAAY,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAUlF,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;YAcjD,iBAAiB;IA4C/B,OAAO,CAAC,YAAY;YASN,WAAW;IAYzB,OAAO,CAAC,cAAc;IAoCtB,OAAO,CAAC,cAAc;IAgBtB,OAAO,CAAC,iBAAiB;IAclB,UAAU,IAAI,IAAI;IAczB,OAAO,CAAC,iBAAiB;IAsBzB,OAAO,CAAC,wBAAwB;CAuDnC"}