@homebridge-plugins/homebridge-smarthq 0.5.0-beta.4 → 0.5.0-beta.41
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/.github/ISSUE_TEMPLATE/config.yml +1 -1
- package/.github/copilot-instructions.md +361 -0
- package/.github/scripts/branch-helper.sh +41 -0
- package/.github/workflows/beta-release.yml +1 -1
- package/.github/workflows/release.yml +53 -17
- package/CHANGELOG.md +563 -18
- package/MATTER.md +304 -0
- package/README.md +15 -0
- package/config.schema.json +24 -5
- package/dist/devices/OpalIceMaker/Managers/OpalDescaleSvcManager.d.ts.map +1 -1
- package/dist/devices/OpalIceMaker/Managers/OpalDescaleSvcManager.js +3 -1
- package/dist/devices/OpalIceMaker/Managers/OpalDescaleSvcManager.js.map +1 -1
- package/dist/devices/OpalIceMaker/Managers/OpalFilterMaintenanceSvcManager.d.ts.map +1 -1
- package/dist/devices/OpalIceMaker/Managers/OpalFilterMaintenanceSvcManager.js +3 -1
- package/dist/devices/OpalIceMaker/Managers/OpalFilterMaintenanceSvcManager.js.map +1 -1
- package/dist/devices/OpalIceMaker/Managers/OpalPowerSvcManager.js +1 -1
- package/dist/devices/OpalIceMaker/Managers/OpalPowerSvcManager.js.map +1 -1
- package/dist/devices/OpalIceMaker/Managers/OpalProgressSvcManager.d.ts +1 -1
- package/dist/devices/OpalIceMaker/Managers/OpalProgressSvcManager.d.ts.map +1 -1
- package/dist/devices/OpalIceMaker/Managers/OpalProgressSvcManager.js +12 -5
- package/dist/devices/OpalIceMaker/Managers/OpalProgressSvcManager.js.map +1 -1
- package/dist/devices/OpalIceMaker/Managers/StatusManagers/OpalStatusBase.d.ts.map +1 -1
- package/dist/devices/OpalIceMaker/Managers/StatusManagers/OpalStatusBase.js +4 -2
- package/dist/devices/OpalIceMaker/Managers/StatusManagers/OpalStatusBase.js.map +1 -1
- package/dist/devices/OpalIceMaker/OpalDeviceBase.d.ts +3 -4
- package/dist/devices/OpalIceMaker/OpalDeviceBase.d.ts.map +1 -1
- package/dist/devices/OpalIceMaker/OpalDeviceBase.js +3 -18
- package/dist/devices/OpalIceMaker/OpalDeviceBase.js.map +1 -1
- package/dist/devices/advantium.d.ts +10 -0
- package/dist/devices/advantium.d.ts.map +1 -0
- package/dist/devices/advantium.js +75 -0
- package/dist/devices/advantium.js.map +1 -0
- package/dist/devices/airConditioner.d.ts +11 -2
- package/dist/devices/airConditioner.d.ts.map +1 -1
- package/dist/devices/airConditioner.js +111 -17
- package/dist/devices/airConditioner.js.map +1 -1
- package/dist/devices/beverageCenter.d.ts +10 -0
- package/dist/devices/beverageCenter.d.ts.map +1 -0
- package/dist/devices/beverageCenter.js +125 -0
- package/dist/devices/beverageCenter.js.map +1 -0
- package/dist/devices/clothesDryer.d.ts +21 -0
- package/dist/devices/clothesDryer.d.ts.map +1 -0
- package/dist/devices/clothesDryer.js +273 -0
- package/dist/devices/clothesDryer.js.map +1 -0
- package/dist/devices/clothesWasher.d.ts +21 -0
- package/dist/devices/clothesWasher.d.ts.map +1 -0
- package/dist/devices/clothesWasher.js +284 -0
- package/dist/devices/clothesWasher.js.map +1 -0
- package/dist/devices/coffeeMaker.d.ts +10 -0
- package/dist/devices/coffeeMaker.d.ts.map +1 -0
- package/dist/devices/coffeeMaker.js +79 -0
- package/dist/devices/coffeeMaker.js.map +1 -0
- package/dist/devices/device.d.ts +108 -13
- package/dist/devices/device.d.ts.map +1 -1
- package/dist/devices/device.js +381 -60
- package/dist/devices/device.js.map +1 -1
- package/dist/devices/dishwasher.d.ts +9 -3
- package/dist/devices/dishwasher.d.ts.map +1 -1
- package/dist/devices/dishwasher.js +164 -29
- package/dist/devices/dishwasher.js.map +1 -1
- package/dist/devices/hood.d.ts +41 -0
- package/dist/devices/hood.d.ts.map +1 -0
- package/dist/devices/hood.js +336 -0
- package/dist/devices/hood.js.map +1 -0
- package/dist/devices/microwave.d.ts +19 -0
- package/dist/devices/microwave.d.ts.map +1 -0
- package/dist/devices/microwave.js +147 -0
- package/dist/devices/microwave.js.map +1 -0
- package/dist/devices/oven.d.ts +9 -2
- package/dist/devices/oven.d.ts.map +1 -1
- package/dist/devices/oven.js +267 -43
- package/dist/devices/oven.js.map +1 -1
- package/dist/devices/refrigerator.d.ts +37 -2
- package/dist/devices/refrigerator.d.ts.map +1 -1
- package/dist/devices/refrigerator.js +583 -34
- package/dist/devices/refrigerator.js.map +1 -1
- package/dist/devices/waterFilter.d.ts +10 -0
- package/dist/devices/waterFilter.d.ts.map +1 -0
- package/dist/devices/waterFilter.js +67 -0
- package/dist/devices/waterFilter.js.map +1 -0
- package/dist/devices/waterHeater.d.ts +19 -0
- package/dist/devices/waterHeater.d.ts.map +1 -0
- package/dist/devices/waterHeater.js +161 -0
- package/dist/devices/waterHeater.js.map +1 -0
- package/dist/devices/waterSoftener.d.ts +10 -0
- package/dist/devices/waterSoftener.d.ts.map +1 -0
- package/dist/devices/waterSoftener.js +67 -0
- package/dist/devices/waterSoftener.js.map +1 -0
- package/dist/getAccessToken.d.ts.map +1 -1
- package/dist/getAccessToken.js +190 -2
- package/dist/getAccessToken.js.map +1 -1
- package/dist/platform.d.ts +32 -1
- package/dist/platform.d.ts.map +1 -1
- package/dist/platform.js +853 -151
- package/dist/platform.js.map +1 -1
- package/dist/platform.test.d.ts +2 -0
- package/dist/platform.test.d.ts.map +1 -0
- package/dist/platform.test.js +80 -0
- package/dist/platform.test.js.map +1 -0
- package/dist/settings.d.ts +24 -0
- package/dist/settings.d.ts.map +1 -1
- package/dist/settings.js +13 -0
- package/dist/settings.js.map +1 -1
- package/docs/assets/highlight.css +7 -0
- package/docs/assets/main.js +5 -5
- package/docs/assets/navigation.js +1 -0
- package/docs/assets/search.js +1 -0
- package/docs/assets/style.css +248 -226
- package/docs/classes/SmartHQPlatform.html +54 -56
- package/docs/hierarchy.html +1 -0
- package/docs/index.html +22 -12
- package/docs/interfaces/DeviceOptions.html +2 -3
- package/docs/interfaces/SmartHQPlatformConfig.html +6 -17
- package/docs/interfaces/SmartHqContext.html +6 -4
- package/docs/interfaces/SmartHqERDResponse.html +7 -8
- package/docs/interfaces/credentials.html +3 -4
- package/docs/interfaces/devicesConfig.html +9 -8
- package/docs/interfaces/options.html +7 -8
- package/docs/media/copilot-instructions.md +361 -0
- package/docs/modules.html +1 -2
- package/docs/variables/API_URL.html +1 -2
- package/docs/variables/ERD_CODES.html +1 -2
- package/docs/variables/ERD_TYPES.html +1 -2
- package/docs/variables/KEEPALIVE_TIMEOUT.html +1 -2
- package/docs/variables/LOGIN_URL.html +2 -3
- package/docs/variables/OAUTH2_CLIENT_ID.html +1 -2
- package/docs/variables/OAUTH2_CLIENT_SECRET.html +1 -2
- package/docs/variables/OAUTH2_REDIRECT_URI.html +1 -2
- package/docs/variables/PLATFORM_NAME.html +2 -3
- package/docs/variables/PLUGIN_NAME.html +2 -3
- package/docs/variables/SECURE_URL.html +2 -3
- package/docs/variables/default.html +1 -0
- package/package.json +22 -33
- package/typedoc.json +0 -4
- package/vitest.config.ts +6 -5
- package/.github/workflows/build.yml +0 -18
- package/.github/workflows/changerelease.yml +0 -11
- package/.github/workflows/labeler.yml +0 -9
- package/.github/workflows/release-drafter.yml +0 -14
- package/docs/assets/dmt/dmt-component-data.js +0 -1
- package/docs/assets/dmt/dmt-components.css +0 -20
- package/docs/assets/dmt/dmt-components.js +0 -67
- package/docs/assets/dmt/dmt-search.cmp +0 -0
- package/docs/assets/dmt/dmt-theme.css +0 -1
- package/docs/functions/default.html +0 -2
|
@@ -0,0 +1,361 @@
|
|
|
1
|
+
# GitHub Copilot Instructions for homebridge-smarthq
|
|
2
|
+
|
|
3
|
+
Always reference these instructions first and fallback to search or bash commands only when you encounter unexpected information that does not match the info here.
|
|
4
|
+
|
|
5
|
+
## Branch Management and PR Workflow
|
|
6
|
+
|
|
7
|
+
### Current Project State
|
|
8
|
+
|
|
9
|
+
- **Stable branch**: `latest` (version 0.4.0)
|
|
10
|
+
- **Active beta branch**: `beta-0.5.0` (currently at v0.5.0-beta.4)
|
|
11
|
+
- **Main development**: All new features and non-critical fixes should target `beta-0.5.0`
|
|
12
|
+
- **Critical patches**: For urgent fixes to stable release, may target new `beta-0.4.x` branch
|
|
13
|
+
|
|
14
|
+
### Branch Targeting Requirements
|
|
15
|
+
|
|
16
|
+
All pull requests **MUST** be directed to a beta branch first, never directly to the main branch (`latest`). This ensures proper testing and gradual release management.
|
|
17
|
+
|
|
18
|
+
### Beta Branch Creation
|
|
19
|
+
|
|
20
|
+
If no appropriate beta branch exists, create one based on the next possible version using semantic versioning:
|
|
21
|
+
|
|
22
|
+
1. **Current stable version**: Check `package.json` in the `latest` branch for the current stable version (currently 0.4.0)
|
|
23
|
+
2. **Current beta version**: Check if `beta-0.5.0` exists and is active (currently has v0.5.0-beta.4)
|
|
24
|
+
3. **Determine next version** based on change type:
|
|
25
|
+
- **Patch** (bug fixes): If working on 0.4.x patches → create `beta-0.4.1`
|
|
26
|
+
- **Minor** (new features): Use existing `beta-0.5.0` or create next minor version
|
|
27
|
+
- **Major** (breaking changes): 1.0.0 → create `beta-1.0.0`
|
|
28
|
+
|
|
29
|
+
4. **Create beta branch** from the latest stable branch (if needed):
|
|
30
|
+
```bash
|
|
31
|
+
git fetch origin
|
|
32
|
+
git checkout latest
|
|
33
|
+
git pull origin latest
|
|
34
|
+
git checkout -b beta-X.Y.Z
|
|
35
|
+
git push origin beta-X.Y.Z
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
**Current Status**: `beta-0.5.0` branch exists and is active with several beta releases (v0.5.0-beta.1 through v0.5.0-beta.4)
|
|
39
|
+
|
|
40
|
+
### Required Labels Before Assignment
|
|
41
|
+
|
|
42
|
+
Before assigning any issue to Copilot, the following labels **MUST** be set to determine the semantic version increment:
|
|
43
|
+
|
|
44
|
+
- **`patch`** - For bug fixes, security patches, documentation updates, and other non-feature changes
|
|
45
|
+
- **`minor`** - For new features, enhancements, and backwards-compatible additions
|
|
46
|
+
- **`major`** - For breaking changes, API changes, and backwards-incompatible modifications
|
|
47
|
+
|
|
48
|
+
### PR Workflow
|
|
49
|
+
|
|
50
|
+
1. **Check for appropriate beta branch**: Look for existing beta branches that match the intended version
|
|
51
|
+
2. **Create beta branch if needed**: If no appropriate beta branch exists, create one as described above
|
|
52
|
+
3. **Target the beta branch**: Always target PRs to the beta branch, not `latest`
|
|
53
|
+
4. **Use semantic versioning**: Ensure the target beta branch version aligns with the change type (patch/minor/major)
|
|
54
|
+
|
|
55
|
+
### Branch Naming Convention
|
|
56
|
+
|
|
57
|
+
- Main development branch: `latest`
|
|
58
|
+
- Beta branches: `beta-X.Y.Z` (e.g., `beta-0.5.0`, `beta-0.4.1`, `beta-1.0.0`)
|
|
59
|
+
- Feature branches: Follow standard naming (e.g., `feature/add-support-for-xyz`, `fix/bug-description`)
|
|
60
|
+
|
|
61
|
+
### Release Process
|
|
62
|
+
|
|
63
|
+
1. **Beta releases**: PRs merge to beta branches → trigger beta release workflow
|
|
64
|
+
2. **Stable releases**: Beta branches merge to `latest` → trigger main release workflow
|
|
65
|
+
|
|
66
|
+
### Examples
|
|
67
|
+
|
|
68
|
+
#### For a Bug Fix (patch):
|
|
69
|
+
- Label: `patch`
|
|
70
|
+
- Target branch: `beta-0.4.1` (for patches to stable 0.4.0) or `beta-0.5.0` (for patches to upcoming 0.5.0)
|
|
71
|
+
- If targeting patches to stable release, create `beta-0.4.1` from `latest`
|
|
72
|
+
- If targeting current development, use existing `beta-0.5.0`
|
|
73
|
+
|
|
74
|
+
#### For a New Feature (minor):
|
|
75
|
+
- Label: `minor`
|
|
76
|
+
- Target branch: `beta-0.5.0` (currently active beta branch)
|
|
77
|
+
- Use existing `beta-0.5.0` branch which is actively receiving minor updates
|
|
78
|
+
|
|
79
|
+
#### For Breaking Changes (major):
|
|
80
|
+
- Label: `major`
|
|
81
|
+
- Target branch: `beta-1.0.0` (if current beta is 0.5.0)
|
|
82
|
+
- Create `beta-1.0.0` from current `beta-0.5.0` or `latest` as appropriate
|
|
83
|
+
|
|
84
|
+
### Validation
|
|
85
|
+
|
|
86
|
+
Before creating any PR, ensure:
|
|
87
|
+
- [ ] Appropriate label (patch/minor/major) is set on the issue
|
|
88
|
+
- [ ] Target beta branch exists or has been created
|
|
89
|
+
- [ ] Beta branch version matches the semantic version implied by the label
|
|
90
|
+
- [ ] All changes are focused and minimal for the specific issue being addressed
|
|
91
|
+
|
|
92
|
+
This workflow ensures proper version management, thorough testing through beta releases, and maintains stability of the main codebase.
|
|
93
|
+
|
|
94
|
+
---
|
|
95
|
+
|
|
96
|
+
## Working Effectively
|
|
97
|
+
|
|
98
|
+
### Bootstrap, Build, and Test the Repository
|
|
99
|
+
|
|
100
|
+
- Install dependencies: `npm install` -- takes 45 seconds. Wait for completion.
|
|
101
|
+
- Build the plugin: `npm run build` -- takes 6 seconds. NEVER CANCEL. Set timeout to 15+ seconds.
|
|
102
|
+
- Test the plugin: `npm run test` -- takes 2 seconds. NEVER CANCEL. Set timeout to 10+ seconds.
|
|
103
|
+
- Lint the code: `npm run lint` -- takes 3 seconds. NEVER CANCEL. Set timeout to 10+ seconds.
|
|
104
|
+
- Generate documentation: `npm run docs` -- takes 7 seconds. NEVER CANCEL. Set timeout to 15+ seconds.
|
|
105
|
+
|
|
106
|
+
### Additional Development Commands
|
|
107
|
+
|
|
108
|
+
- Check for outdated dependencies: `npm run check` -- runs install + outdated check
|
|
109
|
+
- Watch mode for development: `npm run watch` -- builds, copies UI files, creates symlink, starts nodemon
|
|
110
|
+
- Test with coverage: `npm run test-coverage` -- runs tests with coverage report
|
|
111
|
+
- Watch tests continuously: `npm run test:watch` -- runs tests in watch mode
|
|
112
|
+
- Lint documentation: `npm run docs:lint` -- validates TypeDoc generation without output
|
|
113
|
+
- Apply docs theme: `npm run docs:theme` -- generates docs with default-modern theme
|
|
114
|
+
|
|
115
|
+
### Pre-publication Commands (for maintainers)
|
|
116
|
+
|
|
117
|
+
- `npm run prepublishOnly` -- runs full validation: lint + build + UI + docs + docs:lint + docs:theme
|
|
118
|
+
- `npm run postpublish` -- cleans build artifacts after publishing
|
|
119
|
+
|
|
120
|
+
### Node.js and Environment Requirements
|
|
121
|
+
|
|
122
|
+
- Node.js version: 20+ or 22+ or 24+ (currently using v20.19.4)
|
|
123
|
+
- npm version: 10+ (currently using v10.8.2)
|
|
124
|
+
- Homebridge version: 1.9.0+ or 2.0.0+
|
|
125
|
+
- Platform: Linux/macOS/Windows
|
|
126
|
+
|
|
127
|
+
## Validation
|
|
128
|
+
|
|
129
|
+
### Essential Pre-Commit Validation Steps
|
|
130
|
+
|
|
131
|
+
ALWAYS run these commands before committing changes to ensure CI passes:
|
|
132
|
+
|
|
133
|
+
- `npm run lint` -- must pass with zero errors
|
|
134
|
+
- `npm run build` -- must complete successfully
|
|
135
|
+
- `npm run test` -- tests should pass (network errors in sandbox are expected)
|
|
136
|
+
|
|
137
|
+
### Manual Testing Scenarios
|
|
138
|
+
|
|
139
|
+
After making code changes to the plugin:
|
|
140
|
+
|
|
141
|
+
- Verify the plugin builds without errors: `npm run build`
|
|
142
|
+
- Check that TypeScript compilation produces no errors
|
|
143
|
+
- Ensure UI files are copied to dist/homebridge-ui/public/
|
|
144
|
+
- Validate that the plugin exports are correct in dist/index.js
|
|
145
|
+
- Test that config schema validation works for required credentials
|
|
146
|
+
- Verify plugin registration: check that PLUGIN_NAME and PLATFORM_NAME constants are exported
|
|
147
|
+
- Validate TypeScript declaration files (.d.ts) are generated properly
|
|
148
|
+
- Test path alias resolution works (e.g., @opal/* imports resolve correctly)
|
|
149
|
+
|
|
150
|
+
### Expected Test Behavior
|
|
151
|
+
|
|
152
|
+
- Tests run with Vitest and should complete in ~2 seconds
|
|
153
|
+
- Network errors (ENOTFOUND accounts.brillion.geappliances.com) are EXPECTED in sandbox environments
|
|
154
|
+
- Tests validate plugin registration and settings functionality
|
|
155
|
+
- Test files: src/index.test.ts, src/settings.test.ts
|
|
156
|
+
|
|
157
|
+
## Project Structure and Key Locations
|
|
158
|
+
|
|
159
|
+
### Source Code Organization
|
|
160
|
+
|
|
161
|
+
- `/src/` -- TypeScript source code
|
|
162
|
+
- `/src/index.ts` -- main plugin entry point
|
|
163
|
+
- `/src/platform.ts` -- SmartHQPlatform class (main plugin logic)
|
|
164
|
+
- `/src/settings.ts` -- configuration constants and types
|
|
165
|
+
- `/src/devices/` -- device-specific implementations
|
|
166
|
+
- `/src/homebridge-ui/` -- custom Homebridge UI components
|
|
167
|
+
- `/dist/` -- compiled JavaScript output (generated by build)
|
|
168
|
+
- `/docs/` -- TypeDoc generated documentation
|
|
169
|
+
- `/node_modules/` -- npm dependencies (excluded from git)
|
|
170
|
+
|
|
171
|
+
### Key Device Types Supported
|
|
172
|
+
|
|
173
|
+
- Opal Ice Maker (primary device with scheduling and notifications)
|
|
174
|
+
- Air Conditioner
|
|
175
|
+
- Dishwasher
|
|
176
|
+
- Oven
|
|
177
|
+
- Refrigerator
|
|
178
|
+
|
|
179
|
+
### Configuration Files
|
|
180
|
+
|
|
181
|
+
- `package.json` -- project metadata, dependencies, and npm scripts
|
|
182
|
+
- `tsconfig.json` -- TypeScript compiler configuration
|
|
183
|
+
- `eslint.config.js` -- ESLint configuration using @antfu/eslint-config
|
|
184
|
+
- `vitest.config.ts` -- test runner configuration
|
|
185
|
+
- `config.schema.json` -- Homebridge plugin configuration schema
|
|
186
|
+
- `typedoc.json` -- documentation generation settings
|
|
187
|
+
|
|
188
|
+
### Build System Details
|
|
189
|
+
|
|
190
|
+
- TypeScript compiler (tsc) with path aliases using tsc-alias
|
|
191
|
+
- Path aliases: `@opal/*` maps to `src/devices/OpalIceMaker/*`
|
|
192
|
+
- Output target: ES2022 modules in dist/ directory
|
|
193
|
+
- Source maps and declaration files generated
|
|
194
|
+
- Custom UI files copied from src/homebridge-ui/public/ to dist/homebridge-ui/public/
|
|
195
|
+
|
|
196
|
+
## Timing Expectations and Timeouts
|
|
197
|
+
|
|
198
|
+
### Command Timing (Add 50% buffer for timeouts)
|
|
199
|
+
|
|
200
|
+
- `npm install` -- 45 seconds (timeout: 120 seconds)
|
|
201
|
+
- `npm run build` -- 6 seconds (timeout: 15 seconds)
|
|
202
|
+
- `npm run test` -- 2 seconds (timeout: 10 seconds)
|
|
203
|
+
- `npm run lint` -- 3 seconds (timeout: 10 seconds)
|
|
204
|
+
- `npm run docs` -- 7 seconds (timeout: 15 seconds)
|
|
205
|
+
- `npm run clean` -- instant (timeout: 5 seconds)
|
|
206
|
+
|
|
207
|
+
### CRITICAL TIMEOUT WARNINGS
|
|
208
|
+
|
|
209
|
+
- NEVER CANCEL any build or test command before the specified timeout
|
|
210
|
+
- Build may appear to hang during TypeScript compilation - this is normal
|
|
211
|
+
- Test network errors (DNS failures) are expected in sandbox environments
|
|
212
|
+
|
|
213
|
+
## Common Troubleshooting
|
|
214
|
+
|
|
215
|
+
### Build Issues
|
|
216
|
+
|
|
217
|
+
- If build fails, run `npm run clean` first to remove old artifacts
|
|
218
|
+
- Ensure Node.js version meets requirements (20+)
|
|
219
|
+
- Check that all dependencies are installed with `npm install`
|
|
220
|
+
|
|
221
|
+
### Test Issues
|
|
222
|
+
|
|
223
|
+
- Network errors during tests are expected in restricted environments
|
|
224
|
+
- Focus on test logic validation rather than network connectivity
|
|
225
|
+
- Tests should pass their core assertions despite unhandled network rejections
|
|
226
|
+
|
|
227
|
+
### Linting Issues
|
|
228
|
+
|
|
229
|
+
- Run `npm run lint:fix` to auto-fix many ESLint issues
|
|
230
|
+
- Common rules: curly braces, import sorting, unused variables
|
|
231
|
+
- Style guide enforces 1TBS brace style and consistent quote props
|
|
232
|
+
|
|
233
|
+
## Plugin-Specific Development Notes
|
|
234
|
+
|
|
235
|
+
### Homebridge Integration
|
|
236
|
+
|
|
237
|
+
- Plugin implements DynamicPlatformPlugin interface
|
|
238
|
+
- Registers as platform plugin with name "SmartHQ"
|
|
239
|
+
- Custom UI provided via homebridge-ui subdirectory
|
|
240
|
+
- Configuration schema supports credentials and device options
|
|
241
|
+
|
|
242
|
+
### SmartHQ API Integration
|
|
243
|
+
|
|
244
|
+
- Connects to GE Appliances SmartHQ cloud service
|
|
245
|
+
- Handles OAuth2 authentication flow
|
|
246
|
+
- Manages WebSocket connections for real-time updates
|
|
247
|
+
- Supports device scheduling and notification management
|
|
248
|
+
|
|
249
|
+
### Device Implementation Pattern
|
|
250
|
+
|
|
251
|
+
- Base device class in `/src/devices/device.ts`
|
|
252
|
+
- Device-specific classes extend base functionality
|
|
253
|
+
- ERD (Electronic Recipe Data) codes define device capabilities
|
|
254
|
+
- Platform registers accessories dynamically based on discovered devices
|
|
255
|
+
|
|
256
|
+
## CI/CD Integration
|
|
257
|
+
|
|
258
|
+
### GitHub Workflows
|
|
259
|
+
|
|
260
|
+
- Build workflow runs on push to latest branch and PRs
|
|
261
|
+
- Uses homebridge organization's reusable workflows
|
|
262
|
+
- Validates: build success, linting compliance, test execution
|
|
263
|
+
- Automated releases via changesets and GitHub Actions
|
|
264
|
+
|
|
265
|
+
### Quality Gates
|
|
266
|
+
|
|
267
|
+
- ESLint must pass with zero errors
|
|
268
|
+
- TypeScript compilation must succeed
|
|
269
|
+
- All tests must pass (ignoring expected network errors)
|
|
270
|
+
- Documentation generation must complete successfully
|
|
271
|
+
|
|
272
|
+
Always validate your changes against these criteria before pushing to ensure CI success.
|
|
273
|
+
|
|
274
|
+
|
|
275
|
+
### Current Project State
|
|
276
|
+
|
|
277
|
+
- **Stable branch**: `latest` (version 0.4.0)
|
|
278
|
+
- **Active beta branch**: `beta-0.5.0` (currently at v0.5.0-beta.4)
|
|
279
|
+
- **Main development**: All new features and non-critical fixes should target `beta-0.5.0`
|
|
280
|
+
- **Critical patches**: For urgent fixes to stable release, may target new `beta-0.4.x` branch
|
|
281
|
+
|
|
282
|
+
### Branch Targeting Requirements
|
|
283
|
+
|
|
284
|
+
All pull requests **MUST** be directed to a beta branch first, never directly to the main branch (`latest`). This ensures proper testing and gradual release management.
|
|
285
|
+
|
|
286
|
+
### Beta Branch Creation
|
|
287
|
+
|
|
288
|
+
If no appropriate beta branch exists, create one based on the next possible version using semantic versioning:
|
|
289
|
+
|
|
290
|
+
1. **Current stable version**: Check `package.json` in the `latest` branch for the current stable version (currently 0.4.0)
|
|
291
|
+
2. **Current beta version**: Check if `beta-0.5.0` exists and is active (currently has v0.5.0-beta.4)
|
|
292
|
+
3. **Determine next version** based on change type:
|
|
293
|
+
- **Patch** (bug fixes): If working on 0.4.x patches → create `beta-0.4.1`
|
|
294
|
+
- **Minor** (new features): Use existing `beta-0.5.0` or create next minor version
|
|
295
|
+
- **Major** (breaking changes): 1.0.0 → create `beta-1.0.0`
|
|
296
|
+
|
|
297
|
+
4. **Create beta branch** from the latest stable branch (if needed):
|
|
298
|
+
```bash
|
|
299
|
+
git fetch origin
|
|
300
|
+
git checkout latest
|
|
301
|
+
git pull origin latest
|
|
302
|
+
git checkout -b beta-X.Y.Z
|
|
303
|
+
git push origin beta-X.Y.Z
|
|
304
|
+
```
|
|
305
|
+
|
|
306
|
+
**Current Status**: `beta-0.5.0` branch exists and is active with several beta releases (v0.5.0-beta.1 through v0.5.0-beta.4)
|
|
307
|
+
|
|
308
|
+
### Required Labels Before Assignment
|
|
309
|
+
|
|
310
|
+
Before assigning any issue to Copilot, the following labels **MUST** be set to determine the semantic version increment:
|
|
311
|
+
|
|
312
|
+
- **`patch`** - For bug fixes, security patches, documentation updates, and other non-feature changes
|
|
313
|
+
- **`minor`** - For new features, enhancements, and backwards-compatible additions
|
|
314
|
+
- **`major`** - For breaking changes, API changes, and backwards-incompatible modifications
|
|
315
|
+
|
|
316
|
+
### PR Workflow
|
|
317
|
+
|
|
318
|
+
1. **Check for appropriate beta branch**: Look for existing beta branches that match the intended version
|
|
319
|
+
2. **Create beta branch if needed**: If no appropriate beta branch exists, create one as described above
|
|
320
|
+
3. **Target the beta branch**: Always target PRs to the beta branch, not `latest`
|
|
321
|
+
4. **Use semantic versioning**: Ensure the target beta branch version aligns with the change type (patch/minor/major)
|
|
322
|
+
|
|
323
|
+
### Branch Naming Convention
|
|
324
|
+
|
|
325
|
+
- Main development branch: `latest`
|
|
326
|
+
- Beta branches: `beta-X.Y.Z` (e.g., `beta-0.5.0`, `beta-0.4.1`, `beta-1.0.0`)
|
|
327
|
+
- Feature branches: Follow standard naming (e.g., `feature/add-support-for-xyz`, `fix/bug-description`)
|
|
328
|
+
|
|
329
|
+
### Release Process
|
|
330
|
+
|
|
331
|
+
1. **Beta releases**: PRs merge to beta branches → trigger beta release workflow
|
|
332
|
+
2. **Stable releases**: Beta branches merge to `latest` → trigger main release workflow
|
|
333
|
+
|
|
334
|
+
### Examples
|
|
335
|
+
|
|
336
|
+
#### For a Bug Fix (patch):
|
|
337
|
+
- Label: `patch`
|
|
338
|
+
- Target branch: `beta-0.4.1` (for patches to stable 0.4.0) or `beta-0.5.0` (for patches to upcoming 0.5.0)
|
|
339
|
+
- If targeting patches to stable release, create `beta-0.4.1` from `latest`
|
|
340
|
+
- If targeting current development, use existing `beta-0.5.0`
|
|
341
|
+
|
|
342
|
+
#### For a New Feature (minor):
|
|
343
|
+
- Label: `minor`
|
|
344
|
+
- Target branch: `beta-0.5.0` (currently active beta branch)
|
|
345
|
+
- Use existing `beta-0.5.0` branch which is actively receiving minor updates
|
|
346
|
+
|
|
347
|
+
#### For Breaking Changes (major):
|
|
348
|
+
- Label: `major`
|
|
349
|
+
- Target branch: `beta-1.0.0` (if current beta is 0.5.0)
|
|
350
|
+
- Create `beta-1.0.0` from current `beta-0.5.0` or `latest` as appropriate
|
|
351
|
+
|
|
352
|
+
### Validation
|
|
353
|
+
|
|
354
|
+
Before creating any PR, ensure:
|
|
355
|
+
- [ ] Appropriate label (patch/minor/major) is set on the issue
|
|
356
|
+
- [ ] Target beta branch exists or has been created
|
|
357
|
+
- [ ] Beta branch version matches the semantic version implied by the label
|
|
358
|
+
- [ ] All changes are focused and minimal for the specific issue being addressed
|
|
359
|
+
|
|
360
|
+
This workflow ensures proper version management, thorough testing through beta releases, and maintains stability of the main codebase.
|
|
361
|
+
|
package/docs/modules.html
CHANGED
|
@@ -1,2 +1 @@
|
|
|
1
|
-
<!DOCTYPE html><html class="default" lang="en" data-base="."><head><style>body { visibility: hidden; }</style><meta charset="utf-8"><meta http-equiv="x-ua-compatible" content="IE=edge"><title>@homebridge-plugins/homebridge-smarthq</title><meta name="description" content="Documentation for @homebridge-plugins/homebridge-smarthq"><meta name="viewport" content="width=device-width, initial-scale=1"><link rel="stylesheet" href="assets/style.css"><link rel="stylesheet" href="assets/highlight.css"><script defer="" src="assets/main.js"></script><script async="" src="assets/icons.js" id="tsd-icons-script"></script><link rel="stylesheet" href="assets/dmt/dmt-components.css"><link rel="stylesheet" href="assets/dmt/dmt-theme.css"><script src="assets/dmt/dmt-components.js" type="module"></script><noscript><style>body { visibility: visible; }</style></noscript></head><body><script>document.documentElement.dataset.theme = localStorage.getItem("tsd-theme") || "os";</script><div class="overlay"></div>
|
|
2
|
-
<main><header class="tsd-page-toolbar"><div class="tsd-toolbar-contents container"><div class="table-cell" id="tsd-search"><div class="field" id="dmt-search-main"></div><div class="field" id="dmt-toolbar"><a href="index.html" class="title">@homebridge-plugins/homebridge-smarthq</a></div></div><div class="table-cell" id="tsd-widgets"><a href="#" class="tsd-widget tsd-toolbar-icon menu no-caption" data-toggle="menu" aria-label="Menu"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><use href="assets/icons.svg#icon-menu"></use></svg></a></div></div></header><div class="container container-main" tabindex="-1"><div class="col-content"><div class="tsd-page-title"><ul class="tsd-breadcrumb"></ul><div class="dmt-title-header-flex"><h1>@homebridge-plugins/homebridge-smarthq</h1></div></div><details class="tsd-panel-group tsd-member-group tsd-accordion" open=""><summary class="tsd-accordion-summary" data-key="section-Classes"><h2><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="assets/icons.svg#icon-chevronDown"></use></svg> Classes</h2></summary><dl class="tsd-member-summaries"><dt class="tsd-member-summary"><a id="smarthqplatform" class="tsd-anchor"></a><span class="tsd-member-summary-name"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Class"><use href="assets/icons.svg#icon-128"></use></svg><a href="classes/SmartHQPlatform.html">SmartHQPlatform</a><a href="#smarthqplatform" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></span></dt><dd class="tsd-member-summary"></dd></dl></details><details class="tsd-panel-group tsd-member-group tsd-accordion" open=""><summary class="tsd-accordion-summary" data-key="section-Interfaces"><h2><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="assets/icons.svg#icon-chevronDown"></use></svg> Interfaces</h2></summary><dl class="tsd-member-summaries"><dt class="tsd-member-summary"><a id="credentials" class="tsd-anchor"></a><span class="tsd-member-summary-name"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Interface"><use href="assets/icons.svg#icon-256"></use></svg><a href="interfaces/credentials.html">credentials</a><a href="#credentials" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></span></dt><dd class="tsd-member-summary"></dd><dt class="tsd-member-summary"><a id="deviceoptions" class="tsd-anchor"></a><span class="tsd-member-summary-name"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Interface"><use href="assets/icons.svg#icon-256"></use></svg><a href="interfaces/DeviceOptions.html">DeviceOptions</a><a href="#deviceoptions" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></span></dt><dd class="tsd-member-summary"></dd><dt class="tsd-member-summary"><a id="devicesconfig" class="tsd-anchor"></a><span class="tsd-member-summary-name"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Interface"><use href="assets/icons.svg#icon-256"></use></svg><a href="interfaces/devicesConfig.html">devicesConfig</a><a href="#devicesconfig" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></span></dt><dd class="tsd-member-summary"></dd><dt class="tsd-member-summary"><a id="options" class="tsd-anchor"></a><span class="tsd-member-summary-name"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Interface"><use href="assets/icons.svg#icon-256"></use></svg><a href="interfaces/options.html">options</a><a href="#options" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></span></dt><dd class="tsd-member-summary"></dd><dt class="tsd-member-summary"><a id="smarthqcontext" class="tsd-anchor"></a><span class="tsd-member-summary-name"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Interface"><use href="assets/icons.svg#icon-256"></use></svg><a href="interfaces/SmartHqContext.html">SmartHqContext</a><a href="#smarthqcontext" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></span></dt><dd class="tsd-member-summary"></dd><dt class="tsd-member-summary"><a id="smarthqerdresponse" class="tsd-anchor"></a><span class="tsd-member-summary-name"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Interface"><use href="assets/icons.svg#icon-256"></use></svg><a href="interfaces/SmartHqERDResponse.html">SmartHqERDResponse</a><a href="#smarthqerdresponse" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></span></dt><dd class="tsd-member-summary"></dd><dt class="tsd-member-summary"><a id="smarthqplatformconfig" class="tsd-anchor"></a><span class="tsd-member-summary-name"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Interface"><use href="assets/icons.svg#icon-256"></use></svg><a href="interfaces/SmartHQPlatformConfig.html">SmartHQPlatformConfig</a><a href="#smarthqplatformconfig" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></span></dt><dd class="tsd-member-summary"></dd></dl></details><details class="tsd-panel-group tsd-member-group tsd-accordion" open=""><summary class="tsd-accordion-summary" data-key="section-Variables"><h2><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="assets/icons.svg#icon-chevronDown"></use></svg> Variables</h2></summary><dl class="tsd-member-summaries"><dt class="tsd-member-summary"><a id="api_url" class="tsd-anchor"></a><span class="tsd-member-summary-name"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Variable"><use href="assets/icons.svg#icon-32"></use></svg><a href="variables/API_URL.html">API_URL</a><a href="#api_url" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></span></dt><dd class="tsd-member-summary"></dd><dt class="tsd-member-summary"><a id="erd_codes" class="tsd-anchor"></a><span class="tsd-member-summary-name"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Variable"><use href="assets/icons.svg#icon-32"></use></svg><a href="variables/ERD_CODES.html">ERD_CODES</a><a href="#erd_codes" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></span></dt><dd class="tsd-member-summary"></dd><dt class="tsd-member-summary"><a id="erd_types" class="tsd-anchor"></a><span class="tsd-member-summary-name"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Variable"><use href="assets/icons.svg#icon-32"></use></svg><a href="variables/ERD_TYPES.html">ERD_TYPES</a><a href="#erd_types" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></span></dt><dd class="tsd-member-summary"></dd><dt class="tsd-member-summary"><a id="keepalive_timeout" class="tsd-anchor"></a><span class="tsd-member-summary-name"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Variable"><use href="assets/icons.svg#icon-32"></use></svg><a href="variables/KEEPALIVE_TIMEOUT.html">KEEPALIVE_TIMEOUT</a><a href="#keepalive_timeout" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></span></dt><dd class="tsd-member-summary"></dd><dt class="tsd-member-summary"><a id="login_url" class="tsd-anchor"></a><span class="tsd-member-summary-name"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Variable"><use href="assets/icons.svg#icon-32"></use></svg><a href="variables/LOGIN_URL.html">LOGIN_URL</a><a href="#login_url" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></span></dt><dd class="tsd-member-summary"></dd><dt class="tsd-member-summary"><a id="oauth2_client_id" class="tsd-anchor"></a><span class="tsd-member-summary-name"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Variable"><use href="assets/icons.svg#icon-32"></use></svg><a href="variables/OAUTH2_CLIENT_ID.html">OAUTH2_CLIENT_ID</a><a href="#oauth2_client_id" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></span></dt><dd class="tsd-member-summary"></dd><dt class="tsd-member-summary"><a id="oauth2_client_secret" class="tsd-anchor"></a><span class="tsd-member-summary-name"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Variable"><use href="assets/icons.svg#icon-32"></use></svg><a href="variables/OAUTH2_CLIENT_SECRET.html">OAUTH2_CLIENT_SECRET</a><a href="#oauth2_client_secret" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></span></dt><dd class="tsd-member-summary"></dd><dt class="tsd-member-summary"><a id="oauth2_redirect_uri" class="tsd-anchor"></a><span class="tsd-member-summary-name"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Variable"><use href="assets/icons.svg#icon-32"></use></svg><a href="variables/OAUTH2_REDIRECT_URI.html">OAUTH2_REDIRECT_URI</a><a href="#oauth2_redirect_uri" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></span></dt><dd class="tsd-member-summary"></dd><dt class="tsd-member-summary"><a id="platform_name" class="tsd-anchor"></a><span class="tsd-member-summary-name"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Variable"><use href="assets/icons.svg#icon-32"></use></svg><a href="variables/PLATFORM_NAME.html">PLATFORM_NAME</a><a href="#platform_name" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></span></dt><dd class="tsd-member-summary"></dd><dt class="tsd-member-summary"><a id="plugin_name" class="tsd-anchor"></a><span class="tsd-member-summary-name"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Variable"><use href="assets/icons.svg#icon-32"></use></svg><a href="variables/PLUGIN_NAME.html">PLUGIN_NAME</a><a href="#plugin_name" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></span></dt><dd class="tsd-member-summary"></dd><dt class="tsd-member-summary"><a id="secure_url" class="tsd-anchor"></a><span class="tsd-member-summary-name"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Variable"><use href="assets/icons.svg#icon-32"></use></svg><a href="variables/SECURE_URL.html">SECURE_URL</a><a href="#secure_url" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></span></dt><dd class="tsd-member-summary"></dd></dl></details><details class="tsd-panel-group tsd-member-group tsd-accordion" open=""><summary class="tsd-accordion-summary" data-key="section-Functions"><h2><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="assets/icons.svg#icon-chevronDown"></use></svg> Functions</h2></summary><dl class="tsd-member-summaries"><dt class="tsd-member-summary"><a id="default" class="tsd-anchor"></a><span class="tsd-member-summary-name"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Function"><use href="assets/icons.svg#icon-64"></use></svg><a href="functions/default.html">default</a><a href="#default" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></span></dt><dd class="tsd-member-summary"></dd></dl></details></div><div class="col-sidebar" tabindex="-1"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-accordion"><summary class="tsd-accordion-summary"><h3><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="assets/icons.svg#icon-chevronDown"></use></svg>Settings</h3></summary><div class="tsd-accordion-details"><div class="tsd-filter-visibility"><span class="settings-label">Member Visibility</span><ul id="tsd-filter-options"><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-inherited" name="inherited" checked=""><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Inherited</span></label></li></ul></div><div class="tsd-theme-toggle"><label class="settings-label" for="tsd-theme">Theme</label><select id="tsd-theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></div></div></details></div><details open="" class="tsd-accordion tsd-page-navigation"><summary class="tsd-accordion-summary"><h3><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="assets/icons.svg#icon-chevronDown"></use></svg>On This Page</h3></summary><div class="tsd-accordion-details" tabindex="-1"><details open="" class="tsd-accordion tsd-page-navigation-section"><summary class="tsd-accordion-summary" data-key="section-Classes"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="assets/icons.svg#icon-chevronDown"></use></svg>Classes</summary><div><a href="#smarthqplatform" class=""><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Class"><use href="assets/icons.svg#icon-128"></use></svg><span>SmartHQPlatform</span></a></div></details><details open="" class="tsd-accordion tsd-page-navigation-section"><summary class="tsd-accordion-summary" data-key="section-Interfaces"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="assets/icons.svg#icon-chevronDown"></use></svg>Interfaces</summary><div><a href="#credentials" class=""><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Interface"><use href="assets/icons.svg#icon-256"></use></svg><span>credentials</span></a><a href="#deviceoptions" class=""><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Interface"><use href="assets/icons.svg#icon-256"></use></svg><span>Device<wbr>Options</span></a><a href="#devicesconfig" class=""><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Interface"><use href="assets/icons.svg#icon-256"></use></svg><span>devices<wbr>Config</span></a><a href="#options" class=""><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Interface"><use href="assets/icons.svg#icon-256"></use></svg><span>options</span></a><a href="#smarthqcontext" class=""><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Interface"><use href="assets/icons.svg#icon-256"></use></svg><span>Smart<wbr>Hq<wbr>Context</span></a><a href="#smarthqerdresponse" class=""><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Interface"><use href="assets/icons.svg#icon-256"></use></svg><span>Smart<wbr>HqERDResponse</span></a><a href="#smarthqplatformconfig" class=""><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Interface"><use href="assets/icons.svg#icon-256"></use></svg><span>SmartHQPlatform<wbr>Config</span></a></div></details><details open="" class="tsd-accordion tsd-page-navigation-section"><summary class="tsd-accordion-summary" data-key="section-Variables"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="assets/icons.svg#icon-chevronDown"></use></svg>Variables</summary><div><a href="#api_url" class=""><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Variable"><use href="assets/icons.svg#icon-32"></use></svg><span>API_<wbr>URL</span></a><a href="#erd_codes" class=""><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Variable"><use href="assets/icons.svg#icon-32"></use></svg><span>ERD_<wbr>CODES</span></a><a href="#erd_types" class=""><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Variable"><use href="assets/icons.svg#icon-32"></use></svg><span>ERD_<wbr>TYPES</span></a><a href="#keepalive_timeout" class=""><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Variable"><use href="assets/icons.svg#icon-32"></use></svg><span>KEEPALIVE_<wbr>TIMEOUT</span></a><a href="#login_url" class=""><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Variable"><use href="assets/icons.svg#icon-32"></use></svg><span>LOGIN_<wbr>URL</span></a><a href="#oauth2_client_id" class=""><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Variable"><use href="assets/icons.svg#icon-32"></use></svg><span>OAUTH2_<wbr>CLIENT_<wbr>ID</span></a><a href="#oauth2_client_secret" class=""><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Variable"><use href="assets/icons.svg#icon-32"></use></svg><span>OAUTH2_<wbr>CLIENT_<wbr>SECRET</span></a><a href="#oauth2_redirect_uri" class=""><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Variable"><use href="assets/icons.svg#icon-32"></use></svg><span>OAUTH2_<wbr>REDIRECT_<wbr>URI</span></a><a href="#platform_name" class=""><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Variable"><use href="assets/icons.svg#icon-32"></use></svg><span>PLATFORM_<wbr>NAME</span></a><a href="#plugin_name" class=""><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Variable"><use href="assets/icons.svg#icon-32"></use></svg><span>PLUGIN_<wbr>NAME</span></a><a href="#secure_url" class=""><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Variable"><use href="assets/icons.svg#icon-32"></use></svg><span>SECURE_<wbr>URL</span></a></div></details><details open="" class="tsd-accordion tsd-page-navigation-section"><summary class="tsd-accordion-summary" data-key="section-Functions"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="assets/icons.svg#icon-chevronDown"></use></svg>Functions</summary><div><a href="#default" class=""><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Function"><use href="assets/icons.svg#icon-64"></use></svg><span>default</span></a></div></details></div></details></div><div class="site-menu" tabindex="-1"><nav class="tsd-navigation"><a href="modules.html" class="current">@homebridge-plugins/homebridge-smarthq</a><ul class="tsd-small-nested-navigation" id="tsd-nav-container"></ul></nav></div></div></div></main></body></html>
|
|
1
|
+
<!DOCTYPE html><html class="default" lang="en" data-base="./"><head><meta charset="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>@homebridge-plugins/homebridge-smarthq</title><meta name="description" content="Documentation for @homebridge-plugins/homebridge-smarthq"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="assets/style.css"/><link rel="stylesheet" href="assets/highlight.css"/><script defer src="assets/main.js"></script><script async src="assets/icons.js" id="tsd-icons-script"></script><script async src="assets/search.js" id="tsd-search-script"></script><script async src="assets/navigation.js" id="tsd-nav-script"></script></head><body><script>document.documentElement.dataset.theme = localStorage.getItem("tsd-theme") || "os";document.body.style.display="none";setTimeout(() => window.app?app.showPage():document.body.style.removeProperty("display"),500)</script><header class="tsd-page-toolbar"><div class="tsd-toolbar-contents container"><a href="index.html" class="title">@homebridge-plugins/homebridge-smarthq</a><div id="tsd-toolbar-links"></div><button id="tsd-search-trigger" class="tsd-widget" aria-label="Search"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><use href="assets/icons.svg#icon-search"></use></svg></button><dialog id="tsd-search" aria-label="Search"><input role="combobox" id="tsd-search-input" aria-controls="tsd-search-results" aria-autocomplete="list" aria-expanded="true" autocapitalize="off" autocomplete="off" placeholder="Search the docs" maxLength="100"/><ul role="listbox" id="tsd-search-results"></ul><div id="tsd-search-status" aria-live="polite" aria-atomic="true"><div>Preparing search index...</div></div></dialog><a href="#" class="tsd-widget menu" id="tsd-toolbar-menu-trigger" data-toggle="menu" aria-label="Menu"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><use href="assets/icons.svg#icon-menu"></use></svg></a></div></header><div class="container container-main"><div class="col-content"><div class="tsd-page-title"><ul class="tsd-breadcrumb" aria-label="Breadcrumb"></ul><h1>@homebridge-plugins/homebridge-smarthq</h1></div><details class="tsd-panel-group tsd-member-group tsd-accordion" open><summary class="tsd-accordion-summary" data-key="section-Classes"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="assets/icons.svg#icon-chevronDown"></use></svg><h2>Classes</h2></summary><dl class="tsd-member-summaries"><dt class="tsd-member-summary" id="smarthqplatform"><span class="tsd-member-summary-name"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Class"><use href="assets/icons.svg#icon-128"></use></svg><a href="classes/SmartHQPlatform.html">SmartHQPlatform</a><a href="#smarthqplatform" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></span></dt><dd class="tsd-member-summary"></dd></dl></details><details class="tsd-panel-group tsd-member-group tsd-accordion" open><summary class="tsd-accordion-summary" data-key="section-Interfaces"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="assets/icons.svg#icon-chevronDown"></use></svg><h2>Interfaces</h2></summary><dl class="tsd-member-summaries"><dt class="tsd-member-summary" id="credentials"><span class="tsd-member-summary-name"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Interface"><use href="assets/icons.svg#icon-256"></use></svg><a href="interfaces/credentials.html">credentials</a><a href="#credentials" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></span></dt><dd class="tsd-member-summary"></dd><dt class="tsd-member-summary" id="deviceoptions"><span class="tsd-member-summary-name"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Interface"><use href="assets/icons.svg#icon-256"></use></svg><a href="interfaces/DeviceOptions.html">DeviceOptions</a><a href="#deviceoptions" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></span></dt><dd class="tsd-member-summary"></dd><dt class="tsd-member-summary" id="devicesconfig"><span class="tsd-member-summary-name"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Interface"><use href="assets/icons.svg#icon-256"></use></svg><a href="interfaces/devicesConfig.html">devicesConfig</a><a href="#devicesconfig" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></span></dt><dd class="tsd-member-summary"></dd><dt class="tsd-member-summary" id="options"><span class="tsd-member-summary-name"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Interface"><use href="assets/icons.svg#icon-256"></use></svg><a href="interfaces/options.html">options</a><a href="#options" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></span></dt><dd class="tsd-member-summary"></dd><dt class="tsd-member-summary" id="smarthqcontext"><span class="tsd-member-summary-name"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Interface"><use href="assets/icons.svg#icon-256"></use></svg><a href="interfaces/SmartHqContext.html">SmartHqContext</a><a href="#smarthqcontext" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></span></dt><dd class="tsd-member-summary"></dd><dt class="tsd-member-summary" id="smarthqerdresponse"><span class="tsd-member-summary-name"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Interface"><use href="assets/icons.svg#icon-256"></use></svg><a href="interfaces/SmartHqERDResponse.html">SmartHqERDResponse</a><a href="#smarthqerdresponse" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></span></dt><dd class="tsd-member-summary"></dd><dt class="tsd-member-summary" id="smarthqplatformconfig"><span class="tsd-member-summary-name"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Interface"><use href="assets/icons.svg#icon-256"></use></svg><a href="interfaces/SmartHQPlatformConfig.html">SmartHQPlatformConfig</a><a href="#smarthqplatformconfig" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></span></dt><dd class="tsd-member-summary"></dd></dl></details><details class="tsd-panel-group tsd-member-group tsd-accordion" open><summary class="tsd-accordion-summary" data-key="section-Variables"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="assets/icons.svg#icon-chevronDown"></use></svg><h2>Variables</h2></summary><dl class="tsd-member-summaries"><dt class="tsd-member-summary" id="api_url"><span class="tsd-member-summary-name"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Variable"><use href="assets/icons.svg#icon-32"></use></svg><a href="variables/API_URL.html">API_URL</a><a href="#api_url" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></span></dt><dd class="tsd-member-summary"></dd><dt class="tsd-member-summary" id="default"><span class="tsd-member-summary-name"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Variable"><use href="assets/icons.svg#icon-32"></use></svg><a href="variables/default.html">default</a><a href="#default" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></span></dt><dd class="tsd-member-summary"></dd><dt class="tsd-member-summary" id="erd_codes"><span class="tsd-member-summary-name"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Variable"><use href="assets/icons.svg#icon-32"></use></svg><a href="variables/ERD_CODES.html">ERD_CODES</a><a href="#erd_codes" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></span></dt><dd class="tsd-member-summary"></dd><dt class="tsd-member-summary" id="erd_types"><span class="tsd-member-summary-name"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Variable"><use href="assets/icons.svg#icon-32"></use></svg><a href="variables/ERD_TYPES.html">ERD_TYPES</a><a href="#erd_types" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></span></dt><dd class="tsd-member-summary"></dd><dt class="tsd-member-summary" id="keepalive_timeout"><span class="tsd-member-summary-name"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Variable"><use href="assets/icons.svg#icon-32"></use></svg><a href="variables/KEEPALIVE_TIMEOUT.html">KEEPALIVE_TIMEOUT</a><a href="#keepalive_timeout" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></span></dt><dd class="tsd-member-summary"></dd><dt class="tsd-member-summary" id="login_url"><span class="tsd-member-summary-name"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Variable"><use href="assets/icons.svg#icon-32"></use></svg><a href="variables/LOGIN_URL.html">LOGIN_URL</a><a href="#login_url" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></span></dt><dd class="tsd-member-summary"></dd><dt class="tsd-member-summary" id="oauth2_client_id"><span class="tsd-member-summary-name"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Variable"><use href="assets/icons.svg#icon-32"></use></svg><a href="variables/OAUTH2_CLIENT_ID.html">OAUTH2_CLIENT_ID</a><a href="#oauth2_client_id" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></span></dt><dd class="tsd-member-summary"></dd><dt class="tsd-member-summary" id="oauth2_client_secret"><span class="tsd-member-summary-name"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Variable"><use href="assets/icons.svg#icon-32"></use></svg><a href="variables/OAUTH2_CLIENT_SECRET.html">OAUTH2_CLIENT_SECRET</a><a href="#oauth2_client_secret" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></span></dt><dd class="tsd-member-summary"></dd><dt class="tsd-member-summary" id="oauth2_redirect_uri"><span class="tsd-member-summary-name"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Variable"><use href="assets/icons.svg#icon-32"></use></svg><a href="variables/OAUTH2_REDIRECT_URI.html">OAUTH2_REDIRECT_URI</a><a href="#oauth2_redirect_uri" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></span></dt><dd class="tsd-member-summary"></dd><dt class="tsd-member-summary" id="platform_name"><span class="tsd-member-summary-name"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Variable"><use href="assets/icons.svg#icon-32"></use></svg><a href="variables/PLATFORM_NAME.html">PLATFORM_NAME</a><a href="#platform_name" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></span></dt><dd class="tsd-member-summary"></dd><dt class="tsd-member-summary" id="plugin_name"><span class="tsd-member-summary-name"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Variable"><use href="assets/icons.svg#icon-32"></use></svg><a href="variables/PLUGIN_NAME.html">PLUGIN_NAME</a><a href="#plugin_name" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></span></dt><dd class="tsd-member-summary"></dd><dt class="tsd-member-summary" id="secure_url"><span class="tsd-member-summary-name"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Variable"><use href="assets/icons.svg#icon-32"></use></svg><a href="variables/SECURE_URL.html">SECURE_URL</a><a href="#secure_url" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></span></dt><dd class="tsd-member-summary"></dd></dl></details></div><div class="col-sidebar"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-accordion"><summary class="tsd-accordion-summary"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="assets/icons.svg#icon-chevronDown"></use></svg><h3>Settings</h3></summary><div class="tsd-accordion-details"><div class="tsd-filter-visibility"><span class="settings-label">Member Visibility</span><ul id="tsd-filter-options"><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-inherited" name="inherited" checked/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Inherited</span></label></li></ul></div><div class="tsd-theme-toggle"><label class="settings-label" for="tsd-theme">Theme</label><select id="tsd-theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></div></div></details></div><details open class="tsd-accordion tsd-page-navigation"><summary class="tsd-accordion-summary"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="assets/icons.svg#icon-chevronDown"></use></svg><h3>On This Page</h3></summary><div class="tsd-accordion-details"><details open class="tsd-accordion tsd-page-navigation-section"><summary class="tsd-accordion-summary" data-key="section-Classes"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="assets/icons.svg#icon-chevronDown"></use></svg>Classes</summary><div><a href="#smarthqplatform"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Class"><use href="assets/icons.svg#icon-128"></use></svg><span>Smart<wbr/>HQ<wbr/>Platform</span></a></div></details><details open class="tsd-accordion tsd-page-navigation-section"><summary class="tsd-accordion-summary" data-key="section-Interfaces"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="assets/icons.svg#icon-chevronDown"></use></svg>Interfaces</summary><div><a href="#credentials"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Interface"><use href="assets/icons.svg#icon-256"></use></svg><span>credentials</span></a><a href="#deviceoptions"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Interface"><use href="assets/icons.svg#icon-256"></use></svg><span>Device<wbr/>Options</span></a><a href="#devicesconfig"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Interface"><use href="assets/icons.svg#icon-256"></use></svg><span>devices<wbr/>Config</span></a><a href="#options"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Interface"><use href="assets/icons.svg#icon-256"></use></svg><span>options</span></a><a href="#smarthqcontext"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Interface"><use href="assets/icons.svg#icon-256"></use></svg><span>Smart<wbr/>Hq<wbr/>Context</span></a><a href="#smarthqerdresponse"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Interface"><use href="assets/icons.svg#icon-256"></use></svg><span>Smart<wbr/>Hq<wbr/>ERD<wbr/>Response</span></a><a href="#smarthqplatformconfig"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Interface"><use href="assets/icons.svg#icon-256"></use></svg><span>Smart<wbr/>HQ<wbr/>Platform<wbr/>Config</span></a></div></details><details open class="tsd-accordion tsd-page-navigation-section"><summary class="tsd-accordion-summary" data-key="section-Variables"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="assets/icons.svg#icon-chevronDown"></use></svg>Variables</summary><div><a href="#api_url"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Variable"><use href="assets/icons.svg#icon-32"></use></svg><span>API_<wbr/>URL</span></a><a href="#default"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Variable"><use href="assets/icons.svg#icon-32"></use></svg><span>default</span></a><a href="#erd_codes"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Variable"><use href="assets/icons.svg#icon-32"></use></svg><span>ERD_<wbr/>CODES</span></a><a href="#erd_types"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Variable"><use href="assets/icons.svg#icon-32"></use></svg><span>ERD_<wbr/>TYPES</span></a><a href="#keepalive_timeout"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Variable"><use href="assets/icons.svg#icon-32"></use></svg><span>KEEPALIVE_<wbr/>TIMEOUT</span></a><a href="#login_url"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Variable"><use href="assets/icons.svg#icon-32"></use></svg><span>LOGIN_<wbr/>URL</span></a><a href="#oauth2_client_id"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Variable"><use href="assets/icons.svg#icon-32"></use></svg><span>OAUTH2_<wbr/>CLIENT_<wbr/>ID</span></a><a href="#oauth2_client_secret"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Variable"><use href="assets/icons.svg#icon-32"></use></svg><span>OAUTH2_<wbr/>CLIENT_<wbr/>SECRET</span></a><a href="#oauth2_redirect_uri"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Variable"><use href="assets/icons.svg#icon-32"></use></svg><span>OAUTH2_<wbr/>REDIRECT_<wbr/>URI</span></a><a href="#platform_name"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Variable"><use href="assets/icons.svg#icon-32"></use></svg><span>PLATFORM_<wbr/>NAME</span></a><a href="#plugin_name"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Variable"><use href="assets/icons.svg#icon-32"></use></svg><span>PLUGIN_<wbr/>NAME</span></a><a href="#secure_url"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Variable"><use href="assets/icons.svg#icon-32"></use></svg><span>SECURE_<wbr/>URL</span></a></div></details></div></details></div><div class="site-menu"><nav class="tsd-navigation"><a href="modules.html" class="current">@homebridge-plugins/homebridge-smarthq</a><ul class="tsd-small-nested-navigation" id="tsd-nav-container"><li>Loading...</li></ul></nav></div></div></div><footer></footer><div class="overlay"></div></body></html>
|
|
@@ -1,2 +1 @@
|
|
|
1
|
-
<!DOCTYPE html><html class="default" lang="en" data-base="
|
|
2
|
-
<main><header class="tsd-page-toolbar"><div class="tsd-toolbar-contents container"><div class="table-cell" id="tsd-search"><div class="field" id="dmt-search-main"></div><div class="field" id="dmt-toolbar"><a href="../index.html" class="title">@homebridge-plugins/homebridge-smarthq</a></div></div><div class="table-cell" id="tsd-widgets"><a href="#" class="tsd-widget tsd-toolbar-icon menu no-caption" data-toggle="menu" aria-label="Menu"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-menu"></use></svg></a></div></div></header><div class="container container-main" tabindex="-1"><div class="col-content"><div class="tsd-page-title"><ul class="tsd-breadcrumb"></ul><div class="dmt-title-header-flex"><h1>Variable API_URL<code class="tsd-tag">Const</code></h1></div></div><div class="tsd-signature"><span class="tsd-kind-variable">API_URL</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">"https://api.brillion.geappliances.com/v1/"</span><span class="tsd-signature-symbol"> = 'https://api.brillion.geappliances.com/v1/'</span></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/homebridge-plugins/homebridge-smarthq/blob/bdb75ea18e7522e5b5665f24e680468c70220bf8/src/settings.ts#L133">settings.ts:133</a></li></ul></aside></div><div class="col-sidebar" tabindex="-1"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-accordion"><summary class="tsd-accordion-summary"><h3><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>Settings</h3></summary><div class="tsd-accordion-details"><div class="tsd-filter-visibility"><span class="settings-label">Member Visibility</span><ul id="tsd-filter-options"><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-inherited" name="inherited" checked=""><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Inherited</span></label></li></ul></div><div class="tsd-theme-toggle"><label class="settings-label" for="tsd-theme">Theme</label><select id="tsd-theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></div></div></details></div></div><div class="site-menu" tabindex="-1"><nav class="tsd-navigation"><a href="../modules.html">@homebridge-plugins/homebridge-smarthq</a><ul class="tsd-small-nested-navigation" id="tsd-nav-container"></ul></nav></div></div></div></main></body></html>
|
|
1
|
+
<!DOCTYPE html><html class="default" lang="en" data-base="../"><head><meta charset="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>API_URL | @homebridge-plugins/homebridge-smarthq</title><meta name="description" content="Documentation for @homebridge-plugins/homebridge-smarthq"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script defer src="../assets/main.js"></script><script async src="../assets/icons.js" id="tsd-icons-script"></script><script async src="../assets/search.js" id="tsd-search-script"></script><script async src="../assets/navigation.js" id="tsd-nav-script"></script></head><body><script>document.documentElement.dataset.theme = localStorage.getItem("tsd-theme") || "os";document.body.style.display="none";setTimeout(() => window.app?app.showPage():document.body.style.removeProperty("display"),500)</script><header class="tsd-page-toolbar"><div class="tsd-toolbar-contents container"><a href="../index.html" class="title">@homebridge-plugins/homebridge-smarthq</a><div id="tsd-toolbar-links"></div><button id="tsd-search-trigger" class="tsd-widget" aria-label="Search"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-search"></use></svg></button><dialog id="tsd-search" aria-label="Search"><input role="combobox" id="tsd-search-input" aria-controls="tsd-search-results" aria-autocomplete="list" aria-expanded="true" autocapitalize="off" autocomplete="off" placeholder="Search the docs" maxLength="100"/><ul role="listbox" id="tsd-search-results"></ul><div id="tsd-search-status" aria-live="polite" aria-atomic="true"><div>Preparing search index...</div></div></dialog><a href="#" class="tsd-widget menu" id="tsd-toolbar-menu-trigger" data-toggle="menu" aria-label="Menu"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-menu"></use></svg></a></div></header><div class="container container-main"><div class="col-content"><div class="tsd-page-title"><ul class="tsd-breadcrumb" aria-label="Breadcrumb"><li><a href="" aria-current="page">API_URL</a></li></ul><h1>Variable API_URL<code class="tsd-tag">Const</code></h1></div><div class="tsd-signature"><span class="tsd-kind-variable">API_URL</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">"https://api.brillion.geappliances.com/v1/"</span><span class="tsd-signature-symbol"> = 'https://api.brillion.geappliances.com/v1/'</span></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/homebridge-plugins/homebridge-smarthq/blob/f46e39dd34d30dc69f9b14a9e6ef3e323be68ae6/src/settings.ts#L147">settings.ts:147</a></li></ul></aside></div><div class="col-sidebar"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-accordion"><summary class="tsd-accordion-summary"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg><h3>Settings</h3></summary><div class="tsd-accordion-details"><div class="tsd-filter-visibility"><span class="settings-label">Member Visibility</span><ul id="tsd-filter-options"><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-inherited" name="inherited" checked/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Inherited</span></label></li></ul></div><div class="tsd-theme-toggle"><label class="settings-label" for="tsd-theme">Theme</label><select id="tsd-theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></div></div></details></div></div><div class="site-menu"><nav class="tsd-navigation"><a href="../modules.html">@homebridge-plugins/homebridge-smarthq</a><ul class="tsd-small-nested-navigation" id="tsd-nav-container"><li>Loading...</li></ul></nav></div></div></div><footer></footer><div class="overlay"></div></body></html>
|
|
@@ -1,2 +1 @@
|
|
|
1
|
-
<!DOCTYPE html><html class="default" lang="en" data-base="
|
|
2
|
-
<main><header class="tsd-page-toolbar"><div class="tsd-toolbar-contents container"><div class="table-cell" id="tsd-search"><div class="field" id="dmt-search-main"></div><div class="field" id="dmt-toolbar"><a href="../index.html" class="title">@homebridge-plugins/homebridge-smarthq</a></div></div><div class="table-cell" id="tsd-widgets"><a href="#" class="tsd-widget tsd-toolbar-icon menu no-caption" data-toggle="menu" aria-label="Menu"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-menu"></use></svg></a></div></div></header><div class="container container-main" tabindex="-1"><div class="col-content"><div class="tsd-page-title"><ul class="tsd-breadcrumb"></ul><div class="dmt-title-header-flex"><h1>Variable ERD_CODES<code class="tsd-tag">Const</code></h1></div></div><div class="tsd-signature"><span class="tsd-kind-variable">ERD_CODES</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">Dictionary</span><span class="tsd-signature-symbol"><</span><span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">></span><span class="tsd-signature-symbol"> = ...</span></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/homebridge-plugins/homebridge-smarthq/blob/bdb75ea18e7522e5b5665f24e680468c70220bf8/src/settings.ts#L293">settings.ts:293</a></li></ul></aside></div><div class="col-sidebar" tabindex="-1"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-accordion"><summary class="tsd-accordion-summary"><h3><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>Settings</h3></summary><div class="tsd-accordion-details"><div class="tsd-filter-visibility"><span class="settings-label">Member Visibility</span><ul id="tsd-filter-options"><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-inherited" name="inherited" checked=""><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Inherited</span></label></li></ul></div><div class="tsd-theme-toggle"><label class="settings-label" for="tsd-theme">Theme</label><select id="tsd-theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></div></div></details></div></div><div class="site-menu" tabindex="-1"><nav class="tsd-navigation"><a href="../modules.html">@homebridge-plugins/homebridge-smarthq</a><ul class="tsd-small-nested-navigation" id="tsd-nav-container"></ul></nav></div></div></div></main></body></html>
|
|
1
|
+
<!DOCTYPE html><html class="default" lang="en" data-base="../"><head><meta charset="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>ERD_CODES | @homebridge-plugins/homebridge-smarthq</title><meta name="description" content="Documentation for @homebridge-plugins/homebridge-smarthq"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script defer src="../assets/main.js"></script><script async src="../assets/icons.js" id="tsd-icons-script"></script><script async src="../assets/search.js" id="tsd-search-script"></script><script async src="../assets/navigation.js" id="tsd-nav-script"></script></head><body><script>document.documentElement.dataset.theme = localStorage.getItem("tsd-theme") || "os";document.body.style.display="none";setTimeout(() => window.app?app.showPage():document.body.style.removeProperty("display"),500)</script><header class="tsd-page-toolbar"><div class="tsd-toolbar-contents container"><a href="../index.html" class="title">@homebridge-plugins/homebridge-smarthq</a><div id="tsd-toolbar-links"></div><button id="tsd-search-trigger" class="tsd-widget" aria-label="Search"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-search"></use></svg></button><dialog id="tsd-search" aria-label="Search"><input role="combobox" id="tsd-search-input" aria-controls="tsd-search-results" aria-autocomplete="list" aria-expanded="true" autocapitalize="off" autocomplete="off" placeholder="Search the docs" maxLength="100"/><ul role="listbox" id="tsd-search-results"></ul><div id="tsd-search-status" aria-live="polite" aria-atomic="true"><div>Preparing search index...</div></div></dialog><a href="#" class="tsd-widget menu" id="tsd-toolbar-menu-trigger" data-toggle="menu" aria-label="Menu"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-menu"></use></svg></a></div></header><div class="container container-main"><div class="col-content"><div class="tsd-page-title"><ul class="tsd-breadcrumb" aria-label="Breadcrumb"><li><a href="" aria-current="page">ERD_CODES</a></li></ul><h1>Variable ERD_CODES<code class="tsd-tag">Const</code></h1></div><div class="tsd-signature"><span class="tsd-kind-variable">ERD_CODES</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">Dictionary</span><span class="tsd-signature-symbol"><</span><span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">></span><span class="tsd-signature-symbol"> = ...</span></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/homebridge-plugins/homebridge-smarthq/blob/f46e39dd34d30dc69f9b14a9e6ef3e323be68ae6/src/settings.ts#L322">settings.ts:322</a></li></ul></aside></div><div class="col-sidebar"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-accordion"><summary class="tsd-accordion-summary"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg><h3>Settings</h3></summary><div class="tsd-accordion-details"><div class="tsd-filter-visibility"><span class="settings-label">Member Visibility</span><ul id="tsd-filter-options"><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-inherited" name="inherited" checked/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Inherited</span></label></li></ul></div><div class="tsd-theme-toggle"><label class="settings-label" for="tsd-theme">Theme</label><select id="tsd-theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></div></div></details></div></div><div class="site-menu"><nav class="tsd-navigation"><a href="../modules.html">@homebridge-plugins/homebridge-smarthq</a><ul class="tsd-small-nested-navigation" id="tsd-nav-container"><li>Loading...</li></ul></nav></div></div></div><footer></footer><div class="overlay"></div></body></html>
|