iotas-ts 1.3.0 → 2.0.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/CHANGELOG.md CHANGED
@@ -1,5 +1,41 @@
1
1
  # Changelog
2
2
 
3
+ ## [2.0.0](https://github.com/mezaugusto/iotas-ts/compare/v1.4.0...v2.0.0) (2026-04-13)
4
+
5
+
6
+ ### ⚠ BREAKING CHANGES
7
+
8
+ * :sparkles: Use fire-and-forget for feature update ([#8](https://github.com/mezaugusto/iotas-ts/issues/8))
9
+
10
+ ### Features
11
+
12
+ * :art: export thresholds ([#12](https://github.com/mezaugusto/iotas-ts/issues/12)) ([8b56a7a](https://github.com/mezaugusto/iotas-ts/commit/8b56a7a81361b680f32b5b0d6eb716e3904075bf))
13
+ * :art: extract shared IOTAS domain logic from plugin integrations ([#10](https://github.com/mezaugusto/iotas-ts/issues/10)) ([342bc0f](https://github.com/mezaugusto/iotas-ts/commit/342bc0fa4fb94540029e5a34ae91878085cbe39d))
14
+ * :art: Implement write barriers for feature updates ([#14](https://github.com/mezaugusto/iotas-ts/issues/14)) ([aed365d](https://github.com/mezaugusto/iotas-ts/commit/aed365d46317dcec9d6998611e5d3fda796ef2c3))
15
+ * :sparkles: Implement allow/deny listing devices ([#6](https://github.com/mezaugusto/iotas-ts/issues/6)) ([0ef03c5](https://github.com/mezaugusto/iotas-ts/commit/0ef03c5ccf6acb9ffcf1238d69352625d5b9f5cd))
16
+ * :sparkles: Implement thermostat fan mode ([#18](https://github.com/mezaugusto/iotas-ts/issues/18)) ([1f8ed8f](https://github.com/mezaugusto/iotas-ts/commit/1f8ed8f6eaba0885fbdf9cef910bb04b998ae013))
17
+ * :sparkles: Initial abstraction from homebridge plugin ([#1](https://github.com/mezaugusto/iotas-ts/issues/1)) ([8907c54](https://github.com/mezaugusto/iotas-ts/commit/8907c54d69be6c3f3d8702da8412b26bc6a62298))
18
+ * :sparkles: Use fire-and-forget for feature update ([#8](https://github.com/mezaugusto/iotas-ts/issues/8)) ([b144cc7](https://github.com/mezaugusto/iotas-ts/commit/b144cc7f5a277df1a945b7a36cae07beddec70ff))
19
+
20
+
21
+ ### Bug Fixes
22
+
23
+ * :memo: add logs for reauth ([#16](https://github.com/mezaugusto/iotas-ts/issues/16)) ([62fb068](https://github.com/mezaugusto/iotas-ts/commit/62fb068c14bf0ce40588d6eea91bc3c7dbe9a2d8))
24
+
25
+ ## [1.4.0](https://github.com/mezaugusto/iotas-ts/compare/v1.3.1...v1.4.0) (2026-04-13)
26
+
27
+
28
+ ### Features
29
+
30
+ * :sparkles: Implement thermostat fan mode ([#18](https://github.com/mezaugusto/iotas-ts/issues/18)) ([1f8ed8f](https://github.com/mezaugusto/iotas-ts/commit/1f8ed8f6eaba0885fbdf9cef910bb04b998ae013))
31
+
32
+ ## [1.3.1](https://github.com/mezaugusto/iotas-ts/compare/v1.3.0...v1.3.1) (2026-04-13)
33
+
34
+
35
+ ### Bug Fixes
36
+
37
+ * :memo: add logs for reauth ([#16](https://github.com/mezaugusto/iotas-ts/issues/16)) ([62fb068](https://github.com/mezaugusto/iotas-ts/commit/62fb068c14bf0ce40588d6eea91bc3c7dbe9a2d8))
38
+
3
39
  ## [1.3.0](https://github.com/mezaugusto/iotas-ts/compare/v1.2.0...v1.3.0) (2026-04-13)
4
40
 
5
41
 
package/README.md ADDED
@@ -0,0 +1,115 @@
1
+ # iotas-ts
2
+
3
+ [![npm](https://img.shields.io/npm/v/iotas-ts)](https://www.npmjs.com/package/iotas-ts)
4
+
5
+ TypeScript client library for the [IOTAS](https://www.iotashome.com/) smart home platform. Provides API access, device discovery, feature caching with background polling, and shared utilities for building IOTAS integrations.
6
+
7
+ Used by [homebridge-iotas](https://github.com/mezaugusto/homebridge-iotas) and [matterbridge-iotas](https://github.com/mezaugusto/matterbridge-iotas).
8
+
9
+ ## Features
10
+
11
+ - **API Client** — authenticate, discover rooms/devices/features, read/write feature values
12
+ - **Feature Cache** — background polling with per-device write barriers, subscription model for push updates
13
+ - **Device Quirks** — automatic handling of Z-Wave reliability issues and lock timing
14
+ - **Thermostat Utilities** — mode parsing, temperature conversion (°F ↔ °C)
15
+ - **Device Helpers** — serial number, manufacturer/model extraction, feature lookups
16
+ - **Shared Constants** — thermostat defaults, battery threshold
17
+
18
+ ## Installation
19
+
20
+ ```bash
21
+ npm install iotas-ts
22
+ ```
23
+
24
+ Requires Node.js ^20.18.0, ^22.10.0, or ^24.0.0. ESM only.
25
+
26
+ ## Quick Start
27
+
28
+ ```typescript
29
+ import { IotasClient, FeatureCache } from 'iotas-ts';
30
+
31
+ // Create a client
32
+ const client = IotasClient.withCredentials(logger, 'email', 'password');
33
+
34
+ // Discover devices
35
+ const rooms = await client.getRooms();
36
+
37
+ // Set up cached polling
38
+ const cache = new FeatureCache(logger, client, { pollIntervalMs: 5000 });
39
+ cache.seed(rooms);
40
+
41
+ // Subscribe to changes
42
+ cache.subscribe(['featureId1', 'featureId2'], (changed) => {
43
+ for (const [id, value] of changed) {
44
+ console.log(`Feature ${id} changed to ${value}`);
45
+ }
46
+ });
47
+
48
+ cache.start();
49
+
50
+ // Write a value (updates cache + sends API request)
51
+ cache.writeThrough('featureId1', 1);
52
+ ```
53
+
54
+ ## API
55
+
56
+ ### IotasClient
57
+
58
+ High-level API client with JWT authentication, token refresh, and unit resolution.
59
+
60
+ | Method | Description |
61
+ |---|---|
62
+ | `withCredentials(log, email, password, unit?)` | Factory method |
63
+ | `getRooms()` | Discover all rooms, devices, and features |
64
+ | `getFeature(id)` | Look up a single feature by ID |
65
+ | `updateFeature(id, value)` | Send a PUT to update a feature value |
66
+
67
+ ### FeatureCache
68
+
69
+ Background polling cache with write barriers and change subscriptions.
70
+
71
+ | Method | Description |
72
+ |---|---|
73
+ | `seed(rooms)` | Populate cache from a rooms snapshot |
74
+ | `get(featureId)` | Read cached value (synchronous) |
75
+ | `set(featureId, value)` | Update cache locally with write barrier |
76
+ | `writeThrough(featureId, value)` | Update cache + send API request |
77
+ | `subscribe(featureIds, callback)` | Watch for changes, returns disposer |
78
+ | `start()` / `stop()` / `reset()` | Polling lifecycle |
79
+
80
+ **Write barriers** prevent stale poll data from overwriting recent writes. Barriers are per-device: locks get a 15-second window (they take ~10s to actuate), other devices get 5 seconds. If a poll confirms the pending value, the barrier clears early.
81
+
82
+ ### Utilities
83
+
84
+ | Export | Description |
85
+ |---|---|
86
+ | `Temperature.toCelsius(f)` / `.toFahrenheit(c)` | Temperature conversion |
87
+ | `filterDevices(rooms, options)` | Allow/deny list filtering |
88
+ | `getSerialNumber(device)` / `getManufacturer(device)` / `getModel(device)` | Device metadata |
89
+ | `findFeatureByCategory(device, category)` | Find feature by category |
90
+ | `findFeatureByEventType(device, eventType)` | Find feature by event type |
91
+ | `isReadOnlyCategory(category)` / `isSupportedDevice(device)` | Device predicates |
92
+ | `parseThermostatModes(values)` / `getThermostatModeAt(modes, index)` | Thermostat mode helpers |
93
+
94
+ ### Shared Constants
95
+
96
+ | Constant | Value | Description |
97
+ |---|---|---|
98
+ | `DEFAULT_CURRENT_TEMPERATURE_F` | `70` | Fallback current temperature |
99
+ | `DEFAULT_HEAT_SETPOINT_F` | `68` | Default heating setpoint |
100
+ | `DEFAULT_COOL_SETPOINT_F` | `76` | Default cooling setpoint |
101
+ | `LOW_BATTERY_THRESHOLD` | `20` | Battery level % for low warning |
102
+
103
+ ## Development
104
+
105
+ ```bash
106
+ npm run build # Clean build (rm -rf dist && tsc)
107
+ npm run lint # ESLint
108
+ npm run format # Prettier format
109
+ npm run format:check # Prettier check
110
+ npm test # Build then run: tsc && node --test dist/test/*.test.js
111
+ ```
112
+
113
+ ## License
114
+
115
+ [Apache-2.0](LICENSE)
@@ -83,6 +83,7 @@ export class IotasSession {
83
83
  this.refreshToken = data.refresh;
84
84
  this.token = data.jwt;
85
85
  this.onTokensChanged?.({ jwt: this.token, refresh: this.refreshToken });
86
+ this.log.info('Authentication with IOTAS successful');
86
87
  return this.token;
87
88
  }
88
89
  catch (error) {
@@ -123,7 +124,7 @@ export class IotasSession {
123
124
  return this.token;
124
125
  }
125
126
  catch (error) {
126
- this.log.error('Token refresh error:', error instanceof Error ? error.message : String(error));
127
+ this.log.warn('Token refresh failed, falling back to full re-authentication:', error instanceof Error ? error.message : String(error));
127
128
  this.authenticateRequest = null;
128
129
  return this.authenticateWithRetry();
129
130
  }
@@ -1 +1 @@
1
- {"version":3,"file":"session.js","sourceRoot":"","sources":["../../../src/api/session.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"session.js","sourceRoot":"","sources":["../../../src/api/session.ts"],"names":[],"mappings":"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"}
@@ -3,6 +3,7 @@ export declare const EventTypeName: {
3
3
  readonly Level: "Level";
4
4
  readonly Temperature: "Temperature";
5
5
  readonly ThermostatMode: "ThermostatMode";
6
+ readonly FanMode: "FanMode";
6
7
  readonly Lock: "Lock";
7
8
  };
8
9
  export type EventTypeName = (typeof EventTypeName)[keyof typeof EventTypeName];
@@ -16,6 +17,9 @@ export declare const FeatureCategory: {
16
17
  readonly Battery: "battery";
17
18
  readonly Humidity: "humidity";
18
19
  readonly Motion: "motion";
20
+ readonly FanMode: "fan_mode";
21
+ readonly AutoRelock: "auto_relock";
22
+ readonly AutoRelockTimeout: "auto_relock_timeout";
19
23
  readonly DoorState: "door_state";
20
24
  };
21
25
  export type FeatureCategory = (typeof FeatureCategory)[keyof typeof FeatureCategory];
@@ -3,6 +3,7 @@ export const EventTypeName = {
3
3
  Level: 'Level',
4
4
  Temperature: 'Temperature',
5
5
  ThermostatMode: 'ThermostatMode',
6
+ FanMode: 'FanMode',
6
7
  Lock: 'Lock',
7
8
  };
8
9
  export const FeatureCategory = {
@@ -15,6 +16,9 @@ export const FeatureCategory = {
15
16
  Battery: 'battery',
16
17
  Humidity: 'humidity',
17
18
  Motion: 'motion',
19
+ FanMode: 'fan_mode',
20
+ AutoRelock: 'auto_relock',
21
+ AutoRelockTimeout: 'auto_relock_timeout',
18
22
  DoorState: 'door_state',
19
23
  };
20
24
  export const FeatureTypeName = {
@@ -46,6 +50,7 @@ export const DISCOVERY_EVENT_TYPES = new Set([
46
50
  EventTypeName.OnOff,
47
51
  EventTypeName.Level,
48
52
  EventTypeName.ThermostatMode,
53
+ EventTypeName.FanMode,
49
54
  EventTypeName.Lock,
50
55
  ]);
51
56
  //# sourceMappingURL=constants.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,KAAK,EAAE,OAAO;IACd,KAAK,EAAE,OAAO;IACd,WAAW,EAAE,aAAa;IAC1B,cAAc,EAAE,gBAAgB;IAChC,IAAI,EAAE,MAAM;CACJ,CAAC;AAGX,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,KAAK,EAAE,OAAO;IACd,IAAI,EAAE,MAAM;IACZ,kBAAkB,EAAE,qBAAqB;IACzC,YAAY,EAAE,gBAAgB;IAC9B,YAAY,EAAE,gBAAgB;IAC9B,cAAc,EAAE,iBAAiB;IACjC,OAAO,EAAE,SAAS;IAClB,QAAQ,EAAE,UAAU;IACpB,MAAM,EAAE,QAAQ;IAChB,SAAS,EAAE,YAAY;CACf,CAAC;AAGX,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,KAAK,EAAE,OAAO;IACd,aAAa,EAAE,gBAAgB;IAC/B,OAAO,EAAE,SAAS;CACV,CAAC;AAGX,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,MAAM,EAAE,QAAQ;IAChB,MAAM,EAAE,QAAQ;IAChB,YAAY,EAAE,eAAe;IAC7B,IAAI,EAAE,MAAM;IACZ,UAAU,EAAE,YAAY;IACxB,IAAI,EAAE,MAAM;CACJ,CAAC;AAGX,MAAM,oBAAoB,GAAG,IAAI,GAAG,CAAS,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC;AAE5E,MAAM,UAAU,gBAAgB,CAAC,KAAa;IAC5C,OAAO,oBAAoB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACzC,CAAC;AAED,MAAM,CAAC,MAAM,oBAAoB,GAAwB,IAAI,GAAG,CAAC;IAC/D,eAAe,CAAC,kBAAkB;IAClC,eAAe,CAAC,OAAO;IACvB,eAAe,CAAC,QAAQ;IACxB,eAAe,CAAC,MAAM;IACtB,eAAe,CAAC,SAAS;CAC1B,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,qBAAqB,GAAwB,IAAI,GAAG,CAAC;IAChE,aAAa,CAAC,WAAW;IACzB,aAAa,CAAC,KAAK;IACnB,aAAa,CAAC,KAAK;IACnB,aAAa,CAAC,cAAc;IAC5B,aAAa,CAAC,IAAI;CACnB,CAAC,CAAC"}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,KAAK,EAAE,OAAO;IACd,KAAK,EAAE,OAAO;IACd,WAAW,EAAE,aAAa;IAC1B,cAAc,EAAE,gBAAgB;IAChC,OAAO,EAAE,SAAS;IAClB,IAAI,EAAE,MAAM;CACJ,CAAC;AAGX,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,KAAK,EAAE,OAAO;IACd,IAAI,EAAE,MAAM;IACZ,kBAAkB,EAAE,qBAAqB;IACzC,YAAY,EAAE,gBAAgB;IAC9B,YAAY,EAAE,gBAAgB;IAC9B,cAAc,EAAE,iBAAiB;IACjC,OAAO,EAAE,SAAS;IAClB,QAAQ,EAAE,UAAU;IACpB,MAAM,EAAE,QAAQ;IAChB,OAAO,EAAE,UAAU;IACnB,UAAU,EAAE,aAAa;IACzB,iBAAiB,EAAE,qBAAqB;IACxC,SAAS,EAAE,YAAY;CACf,CAAC;AAGX,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,KAAK,EAAE,OAAO;IACd,aAAa,EAAE,gBAAgB;IAC/B,OAAO,EAAE,SAAS;CACV,CAAC;AAGX,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,MAAM,EAAE,QAAQ;IAChB,MAAM,EAAE,QAAQ;IAChB,YAAY,EAAE,eAAe;IAC7B,IAAI,EAAE,MAAM;IACZ,UAAU,EAAE,YAAY;IACxB,IAAI,EAAE,MAAM;CACJ,CAAC;AAGX,MAAM,oBAAoB,GAAG,IAAI,GAAG,CAAS,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC;AAE5E,MAAM,UAAU,gBAAgB,CAAC,KAAa;IAC5C,OAAO,oBAAoB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACzC,CAAC;AAED,MAAM,CAAC,MAAM,oBAAoB,GAAwB,IAAI,GAAG,CAAC;IAC/D,eAAe,CAAC,kBAAkB;IAClC,eAAe,CAAC,OAAO;IACvB,eAAe,CAAC,QAAQ;IACxB,eAAe,CAAC,MAAM;IACtB,eAAe,CAAC,SAAS;CAC1B,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,qBAAqB,GAAwB,IAAI,GAAG,CAAC;IAChE,aAAa,CAAC,WAAW;IACzB,aAAa,CAAC,KAAK;IACnB,aAAa,CAAC,KAAK;IACnB,aAAa,CAAC,cAAc;IAC5B,aAAa,CAAC,OAAO;IACrB,aAAa,CAAC,IAAI;CACnB,CAAC,CAAC"}
@@ -0,0 +1,10 @@
1
+ export declare enum FanMode {
2
+ AutoLow = 0,
3
+ OnLow = 1,
4
+ Circulate = 2,
5
+ Unknown = -1
6
+ }
7
+ export declare function parseFanModeString(modeStr: string): FanMode;
8
+ export declare function parseFanModes(valuesString?: string): FanMode[];
9
+ export declare function getFanModeAt(modes: FanMode[], index: number): FanMode;
10
+ export declare function findFanModeIndex(modes: FanMode[], mode: FanMode): number;
@@ -0,0 +1,36 @@
1
+ export var FanMode;
2
+ (function (FanMode) {
3
+ FanMode[FanMode["AutoLow"] = 0] = "AutoLow";
4
+ FanMode[FanMode["OnLow"] = 1] = "OnLow";
5
+ FanMode[FanMode["Circulate"] = 2] = "Circulate";
6
+ FanMode[FanMode["Unknown"] = -1] = "Unknown";
7
+ })(FanMode || (FanMode = {}));
8
+ export function parseFanModeString(modeStr) {
9
+ const lower = modeStr.toLowerCase().trim();
10
+ if (lower.includes('auto')) {
11
+ return FanMode.AutoLow;
12
+ }
13
+ if (lower.includes('on')) {
14
+ return FanMode.OnLow;
15
+ }
16
+ if (lower.includes('circulate')) {
17
+ return FanMode.Circulate;
18
+ }
19
+ return FanMode.Unknown;
20
+ }
21
+ export function parseFanModes(valuesString) {
22
+ if (!valuesString) {
23
+ return [];
24
+ }
25
+ return valuesString.split(':').map(parseFanModeString);
26
+ }
27
+ export function getFanModeAt(modes, index) {
28
+ if (index < 0 || index >= modes.length) {
29
+ return FanMode.AutoLow;
30
+ }
31
+ return modes[index];
32
+ }
33
+ export function findFanModeIndex(modes, mode) {
34
+ return modes.indexOf(mode);
35
+ }
36
+ //# sourceMappingURL=fan.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fan.js","sourceRoot":"","sources":["../../src/fan.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,OAKX;AALD,WAAY,OAAO;IACjB,2CAAW,CAAA;IACX,uCAAS,CAAA;IACT,+CAAa,CAAA;IACb,4CAAY,CAAA;AACd,CAAC,EALW,OAAO,KAAP,OAAO,QAKlB;AAED,MAAM,UAAU,kBAAkB,CAAC,OAAe;IAChD,MAAM,KAAK,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC;IAC3C,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3B,OAAO,OAAO,CAAC,OAAO,CAAC;IACzB,CAAC;IACD,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACzB,OAAO,OAAO,CAAC,KAAK,CAAC;IACvB,CAAC;IACD,IAAI,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;QAChC,OAAO,OAAO,CAAC,SAAS,CAAC;IAC3B,CAAC;IACD,OAAO,OAAO,CAAC,OAAO,CAAC;AACzB,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,YAAqB;IACjD,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,OAAO,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;AACzD,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,KAAgB,EAAE,KAAa;IAC1D,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;QACvC,OAAO,OAAO,CAAC,OAAO,CAAC;IACzB,CAAC;IACD,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC;AACtB,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,KAAgB,EAAE,IAAa;IAC9D,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAC7B,CAAC"}
@@ -8,5 +8,7 @@ export type { DeviceFilterOptions } from './utils.js';
8
8
  export { EventTypeName, FeatureCategory, FeatureTypeName, DeviceCategory, isDeviceCategory, READ_ONLY_CATEGORIES, DISCOVERY_EVENT_TYPES, } from './constants.js';
9
9
  export { getSerialNumber, getManufacturer, getModel, findFeatureByCategory, findFeatureByEventType } from './device.js';
10
10
  export { isReadOnlyCategory, isSupportedFeature, isDiscoverableFeature, isSupportedDevice } from './predicates.js';
11
- export { ThermostatMode, parseThermostatModes, getThermostatModeAt, findThermostatModeIndex, } from './thermostat.js';
11
+ export { ThermostatMode, parseThermostatModes, getThermostatModeAt, findThermostatModeIndex } from './thermostat.js';
12
+ export { FanMode, parseFanModeString, parseFanModes, getFanModeAt, findFanModeIndex } from './fan.js';
13
+ export { autoRelockSeconds, isAutoRelockEnabled } from './lock.js';
12
14
  export { DEFAULT_CURRENT_TEMPERATURE_F, DEFAULT_HEAT_SETPOINT_F, DEFAULT_COOL_SETPOINT_F, LOW_BATTERY_THRESHOLD, } from './defaults.js';
package/dist/src/index.js CHANGED
@@ -4,6 +4,8 @@ export { Temperature, filterDevices } from './utils.js';
4
4
  export { EventTypeName, FeatureCategory, FeatureTypeName, DeviceCategory, isDeviceCategory, READ_ONLY_CATEGORIES, DISCOVERY_EVENT_TYPES, } from './constants.js';
5
5
  export { getSerialNumber, getManufacturer, getModel, findFeatureByCategory, findFeatureByEventType } from './device.js';
6
6
  export { isReadOnlyCategory, isSupportedFeature, isDiscoverableFeature, isSupportedDevice } from './predicates.js';
7
- export { ThermostatMode, parseThermostatModes, getThermostatModeAt, findThermostatModeIndex, } from './thermostat.js';
7
+ export { ThermostatMode, parseThermostatModes, getThermostatModeAt, findThermostatModeIndex } from './thermostat.js';
8
+ export { FanMode, parseFanModeString, parseFanModes, getFanModeAt, findFanModeIndex } from './fan.js';
9
+ export { autoRelockSeconds, isAutoRelockEnabled } from './lock.js';
8
10
  export { DEFAULT_CURRENT_TEMPERATURE_F, DEFAULT_HEAT_SETPOINT_F, DEFAULT_COOL_SETPOINT_F, LOW_BATTERY_THRESHOLD, } from './defaults.js';
9
11
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAEnD,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAcvD,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAGxD,OAAO,EACL,aAAa,EACb,eAAe,EACf,eAAe,EACf,cAAc,EACd,gBAAgB,EAChB,oBAAoB,EACpB,qBAAqB,GACtB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,QAAQ,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAExH,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEnH,OAAO,EACL,cAAc,EACd,oBAAoB,EACpB,mBAAmB,EACnB,uBAAuB,GACxB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,6BAA6B,EAC7B,uBAAuB,EACvB,uBAAuB,EACvB,qBAAqB,GACtB,MAAM,eAAe,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAEnD,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAcvD,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAGxD,OAAO,EACL,aAAa,EACb,eAAe,EACf,eAAe,EACf,cAAc,EACd,gBAAgB,EAChB,oBAAoB,EACpB,qBAAqB,GACtB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,QAAQ,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAExH,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEnH,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAErH,OAAO,EAAE,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAEtG,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAEnE,OAAO,EACL,6BAA6B,EAC7B,uBAAuB,EACvB,uBAAuB,EACvB,qBAAqB,GACtB,MAAM,eAAe,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function autoRelockSeconds(enabled: number, timeoutSeconds: number): number;
2
+ export declare function isAutoRelockEnabled(seconds: number): number;
@@ -0,0 +1,7 @@
1
+ export function autoRelockSeconds(enabled, timeoutSeconds) {
2
+ return enabled === 1 ? timeoutSeconds : 0;
3
+ }
4
+ export function isAutoRelockEnabled(seconds) {
5
+ return seconds > 0 ? 1 : 0;
6
+ }
7
+ //# sourceMappingURL=lock.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lock.js","sourceRoot":"","sources":["../../src/lock.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,iBAAiB,CAAC,OAAe,EAAE,cAAsB;IACvE,OAAO,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5C,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,OAAe;IACjD,OAAO,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7B,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "iotas-ts",
3
- "version": "1.3.0",
3
+ "version": "2.0.0",
4
4
  "description": "Wrapper around the IOTAS API for use in matterbridge and homebridge ",
5
5
  "author": "Augusto Meza <mezaugusto@proton.me>",
6
6
  "license": "Apache-2.0",