homebridge-gsh 4.2.0-beta.9 → 4.2.1-beta.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
@@ -12,6 +12,7 @@ All notable changes to `homebridge-gsh` will be documented in this file. This pr
12
12
 
13
13
  - Doorbell support - doorbell presses are sent to Google Home as notifications (no video streaming). #103
14
14
  - Fan speed control for fans #92
15
+ - Named fan speeds - "Set Bedroom Fan to low / medium / high" or "speed 2". Fans with 2-10 Rotation Speed steps (from `minStep`) get one named speed per step, other fans get low / medium / high presets at 33 / 66 / 100%. Percentage control still works. Say "Hey Google, sync my devices" after updating. See [Fan Voice Commands](README.md#fan-voice-commands). #92
15
16
 
16
17
  ### Fixes
17
18
 
package/README.md CHANGED
@@ -40,8 +40,10 @@ Control your supported [Homebridge](https://github.com/homebridge/homebridge) ac
40
40
  - On / Off
41
41
  - Brightness
42
42
  - Color (Hue/Saturation)
43
- - Fan (On / Off)
44
- - Fan v2 (On / Off)
43
+ - Fan / Fan v2
44
+ - On / Off
45
+ - Fan Speed (percentage and named speeds, see [Fan Voice Commands](#fan-voice-commands))
46
+ - Reverse (when the fan supports Rotation Direction)
45
47
  - Window
46
48
  - Window Coverings
47
49
  - Door
@@ -100,6 +102,32 @@ This plugin **must** only be configured on one Homebridge instance on your netwo
100
102
  - all instances must be running [in insecure mode](https://github.com/homebridge/homebridge-config-ui-x/wiki/Enabling-Accessory-Control)
101
103
  - all instances must have the same PIN defined in the `config.json`
102
104
 
105
+ ## Fan Voice Commands
106
+
107
+ Fans that expose a Rotation Speed characteristic can be controlled by percentage or by named speed. The named speeds come from the Rotation Speed `minStep`:
108
+
109
+ | Fan reports | Named speeds |
110
+ |---|---|
111
+ | `minStep` of 1 or none (continuous) | `low` (33%), `medium` (66%), `high` (100%) |
112
+ | 2 steps (e.g. `minStep` 50) | `low`, `high` |
113
+ | 3 steps (e.g. `minStep` 33.33) | `low`, `medium`, `high` |
114
+ | 4 to 10 steps (e.g. `minStep` 16.67 for a 6-speed fan) | `speed 1` … `speed N` |
115
+
116
+ Example commands, using a fan named "Bedroom Fan":
117
+
118
+ - "Hey Google, turn on / turn off Bedroom Fan"
119
+ - "Hey Google, set Bedroom Fan to low / medium / high"
120
+ - "Hey Google, set Bedroom Fan to speed 2" (also "level 2"; "low" / "minimum" and "high" / "maximum" always pick the lowest and highest speed)
121
+ - "Hey Google, set Bedroom Fan to 40 percent"
122
+ - "Hey Google, what speed is Bedroom Fan on?"
123
+ - "Hey Google, reverse Bedroom Fan" (only if the fan supports Rotation Direction)
124
+
125
+ _Notes:_
126
+
127
+ - _Use "turn off" to stop the fan. Off is handled by On / Off, not as a named speed._
128
+ - _"Increase / decrease fan speed" is not supported yet._
129
+ - _Named speeds are English only. After updating, say "Hey Google, sync my devices" so Google picks up the new speeds._
130
+
103
131
  ## Known Issues
104
132
 
105
133
  1. Only one Homebridge instance can be linked to an account (even across different local networks). You will experience unintended results if you try and link more than one instance to the same account.
@@ -1,6 +1,12 @@
1
- import { ServiceType } from '@homebridge/hap-client';
1
+ import { CharacteristicType, ServiceType } from '@homebridge/hap-client';
2
2
  import type { SmartHomeV1ExecuteRequestCommands, SmartHomeV1ExecuteResponseCommands } from 'actions-on-google';
3
3
  import { ghToHap, ghToHap_t } from './ghToHapTypes.js';
4
+ interface FanSpeedStep {
5
+ name: string;
6
+ value: number;
7
+ synonyms: string[];
8
+ }
9
+ export declare function getFanSpeedSteps(rotationSpeed?: CharacteristicType): FanSpeedStep[] | undefined;
4
10
  declare abstract class FanBase extends ghToHap implements ghToHap_t {
5
11
  protected abstract readonly onCharacteristic: string;
6
12
  protected abstract coerce(on: boolean): boolean | number;
package/dist/types/fan.js CHANGED
@@ -1,12 +1,73 @@
1
1
  import { Characteristic } from '../hap-types.js';
2
2
  import { ghToHap } from './ghToHapTypes.js';
3
+ const MAX_NAMED_SPEEDS = 10;
4
+ const DEFAULT_PRESET_COUNT = 3;
5
+ function stepNames(index, count) {
6
+ const n = index + 1;
7
+ const numbered = [`speed ${n}`, `level ${n}`];
8
+ if (count === 3) {
9
+ return [
10
+ { name: 'low', synonyms: ['low', 'minimum', ...numbered] },
11
+ { name: 'medium', synonyms: ['medium', 'mid', ...numbered] },
12
+ { name: 'high', synonyms: ['high', 'maximum', ...numbered] },
13
+ ][index];
14
+ }
15
+ if (count === 2) {
16
+ return [
17
+ { name: 'low', synonyms: ['low', 'minimum', ...numbered] },
18
+ { name: 'high', synonyms: ['high', 'maximum', ...numbered] },
19
+ ][index];
20
+ }
21
+ const synonyms = [...numbered, `${n}`];
22
+ if (index === 0) {
23
+ synonyms.push('low', 'minimum');
24
+ }
25
+ if (index === count - 1) {
26
+ synonyms.push('high', 'maximum');
27
+ }
28
+ return { name: `speed_${n}`, synonyms };
29
+ }
30
+ export function getFanSpeedSteps(rotationSpeed) {
31
+ if (!rotationSpeed) {
32
+ return undefined;
33
+ }
34
+ const min = rotationSpeed.minValue ?? 0;
35
+ const max = rotationSpeed.maxValue ?? 100;
36
+ const stepCount = rotationSpeed.minStep && rotationSpeed.minStep > 0
37
+ ? Math.round((max - min) / rotationSpeed.minStep)
38
+ : 0;
39
+ const stepped = stepCount >= 2 && stepCount <= MAX_NAMED_SPEEDS;
40
+ if (!stepped && stepCount === 1) {
41
+ return undefined;
42
+ }
43
+ const count = stepped ? stepCount : DEFAULT_PRESET_COUNT;
44
+ const increment = stepped ? rotationSpeed.minStep : (max - min) / count;
45
+ const steps = [];
46
+ for (let i = 1; i <= count; i++) {
47
+ const raw = min + i * increment;
48
+ const value = i === count ? max : stepped ? Math.round(raw * 100) / 100 : Math.floor(raw);
49
+ steps.push({ value, ...stepNames(i - 1, count) });
50
+ }
51
+ return steps;
52
+ }
3
53
  class FanBase extends ghToHap {
4
54
  sync(service) {
5
55
  const traits = ['action.devices.traits.OnOff'];
6
56
  const attributes = {};
7
- if (service.serviceCharacteristics.find(x => x.uuid === Characteristic.RotationSpeed)) {
57
+ const rotationSpeed = service.serviceCharacteristics.find(x => x.uuid === Characteristic.RotationSpeed);
58
+ if (rotationSpeed) {
8
59
  traits.push('action.devices.traits.FanSpeed');
9
60
  attributes.supportsFanSpeedPercent = true;
61
+ const steps = getFanSpeedSteps(rotationSpeed);
62
+ if (steps) {
63
+ attributes.availableFanSpeeds = {
64
+ speeds: steps.map(step => ({
65
+ speed_name: step.name,
66
+ speed_values: [{ speed_synonym: step.synonyms, lang: 'en' }],
67
+ })),
68
+ ordered: true,
69
+ };
70
+ }
10
71
  }
11
72
  if (service.serviceCharacteristics.find(x => x.uuid === Characteristic.RotationDirection)) {
12
73
  attributes.reversible = true;
@@ -27,7 +88,12 @@ class FanBase extends ghToHap {
27
88
  };
28
89
  const rotationSpeed = service.serviceCharacteristics.find(x => x.uuid === Characteristic.RotationSpeed);
29
90
  if (rotationSpeed) {
30
- response.currentFanSpeedPercent = Number(rotationSpeed.value) || 0;
91
+ const current = Number(rotationSpeed.value) || 0;
92
+ response.currentFanSpeedPercent = current;
93
+ const steps = getFanSpeedSteps(rotationSpeed);
94
+ if (steps) {
95
+ response.currentFanSpeedSetting = steps.reduce((best, step) => Math.abs(step.value - current) < Math.abs(best.value - current) ? step : best).name;
96
+ }
31
97
  }
32
98
  return response;
33
99
  }
@@ -44,8 +110,8 @@ class FanBase extends ghToHap {
44
110
  }
45
111
  case 'action.devices.commands.SetFanSpeed': {
46
112
  const params = command.execution[0].params;
113
+ const rotationSpeed = service.serviceCharacteristics.find(x => x.uuid === Characteristic.RotationSpeed);
47
114
  if (params.fanSpeedPercent !== undefined) {
48
- const rotationSpeed = service.serviceCharacteristics.find(x => x.uuid === Characteristic.RotationSpeed);
49
115
  if (!rotationSpeed) {
50
116
  return { ids: [service.uniqueId], status: 'ERROR', debugString: 'RotationSpeed not supported' };
51
117
  }
@@ -53,9 +119,14 @@ class FanBase extends ghToHap {
53
119
  return { ids: [service.uniqueId], status: 'SUCCESS' };
54
120
  }
55
121
  if (params.fanSpeed) {
56
- return { ids: [service.uniqueId], status: 'ERROR', debugString: 'named fan speeds not supported' };
122
+ const step = getFanSpeedSteps(rotationSpeed)?.find(x => x.name === params.fanSpeed);
123
+ if (!rotationSpeed || !step) {
124
+ return { ids: [service.uniqueId], status: 'ERROR', debugString: `unsupported fan speed ${params.fanSpeed}` };
125
+ }
126
+ await rotationSpeed.setValue(step.value);
127
+ return { ids: [service.uniqueId], status: 'SUCCESS' };
57
128
  }
58
- return { ids: [service.uniqueId], status: 'ERROR', debugString: 'missing fanSpeedPercent' };
129
+ return { ids: [service.uniqueId], status: 'ERROR', debugString: 'missing fanSpeed or fanSpeedPercent' };
59
130
  }
60
131
  case 'action.devices.commands.Reverse': {
61
132
  const directionChar = service.serviceCharacteristics.find(x => x.uuid === Characteristic.RotationDirection);
@@ -1 +1 @@
1
- {"version":3,"file":"fan.js","sourceRoot":"","sources":["../../src/types/fan.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fan.js","sourceRoot":"","sources":["../../src/types/fan.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "homebridge-gsh",
3
3
  "displayName": "Homebridge Google Smart Home",
4
4
  "type": "module",
5
- "version": "4.2.0-beta.9",
5
+ "version": "4.2.1-beta.0",
6
6
  "description": "Google Smart Home",
7
7
  "homepage": "https://github.com/homebridge-plugins/homebridge-gsh/blob/latest/README.md",
8
8
  "license": "GPL-3.0",