homebridge-pax-calima 2.3.1 → 2.3.2
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/README.md +155 -14
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,27 +1,168 @@
|
|
|
1
1
|
# homebridge-pax-calima
|
|
2
2
|
|
|
3
|
-
Homebridge
|
|
3
|
+
**Homebridge 2.0 Ready** · [npm](https://www.npmjs.com/package/homebridge-pax-calima) · [GitHub](https://github.com/JayC68/homebridge-pax-calima)
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
Full HomeKit integration for **Pax Calima** (Scandinavia) and **Vent-Axia Svara** (UK) Bluetooth LE bathroom extractor fans. These are hardware-identical and use the exact same BLE protocol and MAC prefix (`58:2b:db`).
|
|
6
|
+
|
|
7
|
+
---
|
|
6
8
|
|
|
7
9
|
## Features
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
10
|
+
|
|
11
|
+
| Feature | Detail |
|
|
12
|
+
|---|---|
|
|
13
|
+
| **Auto-discovery** | Finds all Pax/Svara fans automatically — no MAC address needed |
|
|
14
|
+
| **Fan speed indicator** | Displays current RPM as 0–100% in Apple Home |
|
|
15
|
+
| **Fan speed control** | Speed slider available — see wiring note below |
|
|
16
|
+
| **Humidity sensor** | Live readings, updates every 10 seconds |
|
|
17
|
+
| **Temperature sensor** | Live readings, updates every 10 seconds |
|
|
18
|
+
| **Light sensor** | Live readings in lux, updates every 10 seconds |
|
|
19
|
+
| **Boost button** | Stateless programmable switch — triggers temporary high-speed boost |
|
|
20
|
+
| **Silent Hours** | Toggle switch — prevents fan boosting during scheduled quiet periods |
|
|
21
|
+
| **Automations** | Full support — trigger on humidity, temperature or light thresholds |
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
## Requirements
|
|
26
|
+
|
|
27
|
+
- Homebridge `^1.6.0` or `^2.0.0`
|
|
28
|
+
- Node.js `>= 18`
|
|
29
|
+
- A Bluetooth LE adapter on the Homebridge host (built-in or USB dongle)
|
|
30
|
+
|
|
31
|
+
### Raspberry Pi / Homebridge OS setup
|
|
32
|
+
|
|
33
|
+
The `noble` BLE library requires elevated network capabilities. Run **once** after installation:
|
|
34
|
+
|
|
35
|
+
```bash
|
|
36
|
+
sudo setcap cap_net_raw+eip /opt/homebridge/bin/node
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
If Bluetooth shows as `poweredOff` after this, unblock the radio:
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
sudo rfkill unblock bluetooth
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
---
|
|
19
46
|
|
|
20
47
|
## Installation
|
|
21
48
|
|
|
22
49
|
### Via Homebridge UI (recommended)
|
|
23
|
-
Search for **Pax Calima** or **Svara** and
|
|
50
|
+
Search for **Pax Calima** or **Svara** and click Install.
|
|
24
51
|
|
|
25
52
|
### Via Terminal
|
|
26
53
|
```bash
|
|
27
54
|
npm install -g homebridge-pax-calima
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
---
|
|
58
|
+
|
|
59
|
+
## Configuration
|
|
60
|
+
|
|
61
|
+
Auto-discovery requires **no configuration**. The plugin finds any fan with MAC address starting `58:2b:db` automatically and registers it with a default name.
|
|
62
|
+
|
|
63
|
+
To set a **custom name** or **PIN** for a specific fan, add an entry to the `fans` array:
|
|
64
|
+
|
|
65
|
+
```json
|
|
66
|
+
{
|
|
67
|
+
"platform": "PaxCalima",
|
|
68
|
+
"name": "Pax Calima / Vent-Axia Svara",
|
|
69
|
+
"fans": [
|
|
70
|
+
{
|
|
71
|
+
"name": "Wetroom Fan",
|
|
72
|
+
"mac": "58:2b:db:xx:xx:xx",
|
|
73
|
+
"pin": "012345"
|
|
74
|
+
}
|
|
75
|
+
]
|
|
76
|
+
}
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
The `fans` array is entirely optional. Omit it to use auto-discovery with default names and PIN `012345`.
|
|
80
|
+
|
|
81
|
+
---
|
|
82
|
+
|
|
83
|
+
## Accessories in Apple Home
|
|
84
|
+
|
|
85
|
+
Each discovered fan appears in the Home app as a single accessory with the following tiles:
|
|
86
|
+
|
|
87
|
+
- **Fan** — displays current speed; slider available (see wiring note below)
|
|
88
|
+
- **Boost** — programmable button for temporary high-speed boost
|
|
89
|
+
- **Silent Hours** — switch to suppress automatic boosting during quiet periods
|
|
90
|
+
- **Humidity** — current relative humidity (%)
|
|
91
|
+
- **Temperature** — current temperature (°C)
|
|
92
|
+
- **Light** — current ambient light level (lux)
|
|
93
|
+
|
|
94
|
+
> Note: Accessories appear in the **Home app**, not in the Homebridge UI accessories tab. This is correct behaviour for child bridge plugins.
|
|
95
|
+
|
|
96
|
+
---
|
|
97
|
+
|
|
98
|
+
## Fan Speed Control — Wiring Mode Note
|
|
99
|
+
|
|
100
|
+
The Pax Calima and Vent-Axia Svara support two wiring modes, selected at installation time:
|
|
101
|
+
|
|
102
|
+
**Intermittent mode** — the fan is off by default and triggered by humidity, light, or a timer. In this mode BLE speed commands are fully respected and the speed slider in Apple Home controls the fan directly.
|
|
103
|
+
|
|
104
|
+
**Always-on (trickle) mode** — the fan runs continuously at a speed determined by its onboard controller, typically set via the official app or physical dial. In this mode BLE speed writes are accepted by the fan but the onboard firmware immediately reasserts its own speed. The slider will appear to have no effect.
|
|
105
|
+
|
|
106
|
+
If your fan is wired in always-on mode, the speed slider will reflect the current RPM accurately but cannot override the onboard setpoint. The sensors and automations remain fully functional regardless of wiring mode — for bathroom and wetroom use this is the primary value of the integration, enabling powerful Apple Home automations based on live humidity, temperature and light readings.
|
|
107
|
+
|
|
108
|
+
To enable full speed control, consult your fan's installation guide to switch to intermittent wiring mode.
|
|
109
|
+
|
|
110
|
+
---
|
|
111
|
+
|
|
112
|
+
## Sensor Notes
|
|
113
|
+
|
|
114
|
+
The Svara's light sensor detects occupancy via light movement and shadows rather than acting as a calibrated lux meter. Readings may vary slightly from a reference device depending on mounting position — this is expected.
|
|
115
|
+
|
|
116
|
+
Humidity and temperature automations work well natively in the Home app. For lux-based automations, use a third-party app such as **Eve** or **Hesperus** which support lux thresholds and sync back to HomeKit.
|
|
117
|
+
|
|
118
|
+
---
|
|
119
|
+
|
|
120
|
+
## Troubleshooting
|
|
121
|
+
|
|
122
|
+
**Fan not discovered**
|
|
123
|
+
- Confirm BLE is active: run `hciconfig` on the Pi — look for `UP RUNNING`
|
|
124
|
+
- If it shows `RF-KILL`: run `sudo rfkill unblock bluetooth`
|
|
125
|
+
- Confirm `setcap` targets the correct Node binary: `/opt/homebridge/bin/node`
|
|
126
|
+
|
|
127
|
+
**Authentication failed**
|
|
128
|
+
- Default PIN is `012345`. If you set a custom PIN in the official Pax/Svara app, add the fan to the `fans` config array with the correct PIN.
|
|
129
|
+
|
|
130
|
+
**Speed slider has no effect**
|
|
131
|
+
- Your fan is likely wired in always-on mode. See the wiring note above. All sensors and automations are unaffected.
|
|
132
|
+
|
|
133
|
+
**Accessories not appearing in Home app**
|
|
134
|
+
- Remove the accessory cache via Homebridge UI → (plugin settings) → Remove Accessory Cache, then restart Homebridge
|
|
135
|
+
|
|
136
|
+
---
|
|
137
|
+
|
|
138
|
+
## Release Notes
|
|
139
|
+
|
|
140
|
+
### 2.3.2
|
|
141
|
+
- **Documented:** Fan speed control behaviour in always-on vs intermittent wiring modes — the slider correctly reflects current RPM in both modes; in always-on mode the onboard firmware reasserts its own speed setpoint after each BLE write
|
|
142
|
+
- **Confirmed:** All sensors (humidity, temperature, light, RPM) accurate and stable
|
|
143
|
+
- **Improved:** README wiring mode explanation, troubleshooting entry for speed slider, sensor automation guidance
|
|
144
|
+
|
|
145
|
+
### 2.3.1
|
|
146
|
+
- **Investigated:** Correct control characteristic identified (`1488a757...`) via live BLE dump
|
|
147
|
+
- **Added:** Diagnostic logging of control characteristic on every poll and before/after writes
|
|
148
|
+
- **Fixed:** `writeSpeed` pauses poll cycle to avoid BLE conflicts during writes
|
|
149
|
+
|
|
150
|
+
### 2.3.0
|
|
151
|
+
- **Published:** Stable sensor readings verified against real-world reference device
|
|
152
|
+
- **Fixed:** Auth characteristic discovery on first connection after restart
|
|
153
|
+
|
|
154
|
+
### 2.2.1
|
|
155
|
+
- **Fixed:** Sensors no longer stuck after restart — polling deferred until BLE is ready
|
|
156
|
+
- **Fixed:** Poll interval 30s → 10s for responsive shower humidity tracking
|
|
157
|
+
- **Fixed:** Overlapping poll guard prevents concurrent BLE connections
|
|
158
|
+
- **Fixed:** Multi Mode and Heat Distribution switches removed — not applicable for UK use
|
|
159
|
+
- **Fixed:** Duplicate accessory registration on restart resolved
|
|
160
|
+
- **Fixed:** Switch UUID collision resolved with explicit subtypes
|
|
161
|
+
|
|
162
|
+
### 2.1.0
|
|
163
|
+
- **Fixed:** Correct sensor characteristic UUIDs and byte mappings confirmed via live device
|
|
164
|
+
- **Fixed:** BLE refactored to connect → auth → read → disconnect → repeat pattern
|
|
165
|
+
- **Fixed:** UUID matching on Linux noble
|
|
166
|
+
|
|
167
|
+
### 1.0.x
|
|
168
|
+
- Initial working releases
|