homebridge-philips-airplus-cloud 0.3.5 → 0.3.6

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
@@ -2,6 +2,10 @@
2
2
 
3
3
  The Home Assistant integration in `custom_components/` is unchanged from upstream and keeps its own history.
4
4
 
5
+ ## 0.3.6 — 2026-10-11
6
+
7
+ - Components (Sleep, Air Quality, Filter, Pre-filter, Display) are no longer linked to the purifier by default. The Home app draws linked components as controls of the purifier without their names; unlinked ones get their own labelled tile in the purifier's combined view. Existing links are removed on startup. Set `linkComponents: true` to link them again.
8
+
5
9
  ## 0.3.5 — 2026-10-11
6
10
 
7
11
  - Option `labelRefresh`: if the Home app does not show the labels under the purifier's components in its combined view, set any new value and restart. About 40 s after startup the plugin renames the components in two steps (long name, then short label), replaying the rename that made Home show the labels before. Names set in the Home app are replaced by the defaults.
package/README.md CHANGED
@@ -80,6 +80,7 @@ The refresh token rotates on every use; the plugin keeps the current one in `<ho
80
80
  | `filterSensors` | `true` | Show filter and pre-filter status |
81
81
  | `sleepSwitch` | `true` | Show the Sleep mode switch |
82
82
  | `sleepSwitchStyle` | `switch` | `purifier` shows the Sleep control as a second air purifier (purifier icon in Home) that only turns Sleep on/off |
83
+ | `linkComponents` | `false` | Link Sleep, air quality and filters to the purifier. Off: each gets its own labelled tile in the purifier's combined view. On: Home shows them as controls inside the purifier, without labels |
83
84
  | `displayLight` | `true` | Show the display light |
84
85
  | `displayLightProperty` | — | Property key of the display light, if it is not detected (see the `Status properties reported by the device` log line) |
85
86
  | `logDeviceData` | `false` | Diagnostics: at startup, log every port and the cloud shadow the purifier publishes |
@@ -91,6 +91,12 @@
91
91
  ],
92
92
  "description": "'Air purifier' shows Sleep with the purifier icon in the Home app; it only turns Sleep mode on and off."
93
93
  },
94
+ "linkComponents": {
95
+ "title": "Link components to the purifier",
96
+ "type": "boolean",
97
+ "default": false,
98
+ "description": "Off (default): Sleep, air quality and filters get their own labelled tile in the purifier's combined view. On: the Home app shows them as controls inside the purifier, without labels."
99
+ },
94
100
  "displayLight": {
95
101
  "title": "Show the display light as a dimmable light",
96
102
  "type": "boolean",
@@ -173,6 +179,7 @@
173
179
  "filterSensors",
174
180
  "sleepSwitch",
175
181
  "sleepSwitchStyle",
182
+ "linkComponents",
176
183
  "displayLight",
177
184
  "displayLightProperty",
178
185
  "filterChangeThreshold",
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "homebridge-philips-airplus-cloud",
3
3
  "displayName": "Philips Air+",
4
- "version": "0.3.5",
4
+ "version": "0.3.6",
5
5
  "description": "Homebridge plugin for Philips Air+ / PureProtect air purifiers via the Philips (Versuni) cloud — the same MQTT protocol used by the Air+ app and Google Home.",
6
6
  "main": "src/index.js",
7
7
  "license": "MIT",
package/src/accessory.js CHANGED
@@ -238,8 +238,14 @@ class PurifierAccessory {
238
238
  s.setCharacteristic(Characteristic.ConfiguredName, label);
239
239
  }
240
240
  }
241
- if (link && this.purifier && s !== this.purifier && !this.purifier.linkedServices.includes(s)) {
242
- this.purifier.addLinkedService(s);
241
+ // linkComponents (default off): linked components are drawn by the Home
242
+ // app as controls of the purifier, without their names; unlinked ones get
243
+ // their own labelled tile in the purifier's combined view.
244
+ if (this.purifier && s !== this.purifier) {
245
+ const linked = this.purifier.linkedServices.includes(s);
246
+ const want = link && this.platform.config.linkComponents === true;
247
+ if (want && !linked) this.purifier.addLinkedService(s);
248
+ if (!want && linked) this.purifier.removeLinkedService(s);
243
249
  }
244
250
  return s;
245
251
  }