homebridge-eosstb 2.4.0-alpha.46 → 2.4.0-beta.1
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 +19 -255
- package/index.js +20 -0
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -4,271 +4,35 @@ All notable changes to this project will be documented in this file.
|
|
|
4
4
|
See the [Readme file](https://github.com/jsiegenthaler/homebridge-eosstb/blob/master/README.md) for full plugin documentation.
|
|
5
5
|
Please restart Homebridge after every plugin update.
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
## 2.4.0-beta.1 (2026-05-09)
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
This release represents a major rewrite of the plugin, significantly improving robustness, HAP compliance, and code quality throughout, and making it work for Switzerland.
|
|
10
10
|
|
|
11
|
-
|
|
12
|
-
|
|
11
|
+
- Added CH login support: Adapted the login sequence and updated config.schema.json to support the new Switzerland login method
|
|
12
|
+
- Overhauled HAP compliance: Full audit and rewrite of all HAP code for strict compliance
|
|
13
|
+
- Added support for Homebridge v2: Plugin now fully supports Homebridge 2.0.0+ and Node.js 24+; resolved breaking changes introduced by HAP-NodeJS v1 shipped with Homebridge v2
|
|
14
|
+
- Improved MQTT handling: Optimised mqtt code and added clean unsubscribe on plugin shutdown
|
|
15
|
+
- Improved channel list management: Master channel list refresh now runs once daily at a random time between 00:00–06:00
|
|
16
|
+
- Updated channel ConfiguredName to read-only
|
|
17
|
+
- Optimised handling of remote control and media control
|
|
18
|
+
- Improved robustness and startup
|
|
19
|
+
- Improved overall code quality
|
|
20
|
+
- Updated dependencies to current versions
|
|
13
21
|
|
|
14
|
-
|
|
15
|
-
authorizationService DONE
|
|
16
|
-
personalizationService DONE
|
|
17
|
-
purchaseService
|
|
18
|
-
recordingService
|
|
19
|
-
linearService
|
|
20
|
-
sessionService
|
|
22
|
+
## 2.3.9 (2026-05-09)
|
|
21
23
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
Behavious: SetMediaState from 0 to 1 will start playing.
|
|
27
|
-
Behavious: SetMediaState from 2 to 1 will start playing.
|
|
28
|
-
Behavious: SetMediaState from 1 to 2 will start playing.
|
|
29
|
-
unreliable, compare to webclient... this is driving me crazy!
|
|
30
|
-
might have to revert to sendKeys to set Play and Stop/Pause
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
CHECK
|
|
35
|
-
make sendKey logging consistent
|
|
36
|
-
|
|
37
|
-
CHECK
|
|
38
|
-
what are my issues with persistence?
|
|
39
|
-
Persisting the input state visibility between restarts would be good
|
|
40
|
-
Visibility cannot be set if the user has no WriteAccess to the channel list!!
|
|
41
|
-
Persistance test:
|
|
42
|
-
1. Hide the channel SRF info using Home app
|
|
43
|
-
2. Force-close and reopen the home app. Confirm channel is still hidden
|
|
44
|
-
3. Confirm the current visibility state in the plugin logs is correct
|
|
45
|
-
3. Restart the plugin
|
|
46
|
-
4. Observe the current visibility state in the plugin logs - does it get the right value from HomeKit HAP? If so, no persistance required.
|
|
47
|
-
|
|
48
|
-
Device name: this comes from backend
|
|
49
|
-
Channel name: overwrite not allowed - can we disable in HomeKit. Yes, but prevents setting visibility
|
|
50
|
-
|
|
51
|
-
CHALLENGE
|
|
52
|
-
The mostWatchedChannelList is not working
|
|
53
|
-
|
|
54
|
-
## 2.4.0-alpha.46 (2026-05-09)
|
|
55
|
-
- Fixed the issue with volume commands
|
|
56
|
-
|
|
57
|
-
## 2.4.0-alpha.45 (2026-05-09)
|
|
58
|
-
- Added some debugging to the volume commands to trace an issue
|
|
59
|
-
|
|
60
|
-
## 2.4.0-alpha.44 (2026-05-09)
|
|
61
|
-
- Fixed some log level issues
|
|
62
|
-
- Fixed issue with Remove volumeDown causing Unhandled error thrown inside write handler for characteristic
|
|
63
|
-
|
|
64
|
-
## 2.4.0-alpha.43 (2026-05-09)
|
|
65
|
-
- Bumped dependency "semver": "^7.8.0",
|
|
66
|
-
|
|
67
|
-
## 2.4.0-alpha.42 (2026-05-07)
|
|
68
|
-
- changed the name of hidden channels from HIDDEN_xx to HIDDENxx to stop the HAP-NodeJS WARNING: The accessory 'HIDDEN_32' has an invalid 'Name' characteristic
|
|
69
|
-
|
|
70
|
-
## 2.4.0-alpha.42 (2026-05-07)
|
|
71
|
-
- changed the name of hidden channels from HIDDEN_xx to HIDDENxx to stop the HAP-NodeJS WARNING: The accessory 'HIDDEN_32' has an invalid 'Name' characteristic
|
|
72
|
-
|
|
73
|
-
## 2.4.0-alpha.41 (2026-05-07)
|
|
74
|
-
- fixed typos in this change log
|
|
75
|
-
|
|
76
|
-
## 2.4.0-alpha.40 (2026-05-07)
|
|
77
|
-
- Changes to code to support HAP-NodeJS still works with Homebridge v1.11.x
|
|
78
|
-
- Reinstated engine "homebridge": "^1.11.4||^2.0.0",
|
|
79
|
-
|
|
80
|
-
## 2.4.0-alpha.39 (2026-05-07)
|
|
81
|
-
- fixed issues caused by HAP-NodeJS v1 released with Homebridge v2 where use of enums off the Characteristic class is no longer supported
|
|
82
|
-
- due to these HAP-NodeJS changes, support for Homebridge versions below 2.0.0 is no longer provided
|
|
83
|
-
- Bumped engine "homebridge": "^2.0.0",
|
|
24
|
+
- Fixed Error on Homebridge v2: Cannot read properties of undefined (reading 'STRING')
|
|
25
|
+
- Adapted hidden channel name to reduce warning messages with Homebridge v2
|
|
26
|
+
- Updated iOS and Homebridge version references in Readme
|
|
27
|
+
- Bumped engine "^1.11.4||^2.0.0",
|
|
84
28
|
- Bumped engine "node": "^24.15.0"
|
|
85
29
|
- Bumped dependency "axios": "^1.16.0",
|
|
86
30
|
- Bumped dependency "axios-cookiejar-support": "^7.0.0",
|
|
87
31
|
- Bumped dependency "mqtt": "^5.15.1",
|
|
88
|
-
- Bumped dependency "puppeteer-core": "^24.43.0",
|
|
89
32
|
- Bumped dependency "qs": "^6.15.1",
|
|
33
|
+
- Bumped dependency "semver": "^7.8.0",
|
|
90
34
|
- Bumped dependency "tough-cookie": "^6.0.1",
|
|
91
|
-
- Bumped dependency "ws": "^8.20.0"
|
|
92
|
-
|
|
93
|
-
## 2.4.0-alpha.38 (2026-03-07)
|
|
94
|
-
|
|
95
|
-
- changes to settargetmediastate & setMediaState
|
|
96
|
-
|
|
97
|
-
## 2.4.0-alpha.37 (2026-03-07)
|
|
98
|
-
|
|
99
|
-
- changes to settargetmediastate
|
|
100
|
-
|
|
101
|
-
## 2.4.0-alpha.36 (2026-03-07)
|
|
102
|
-
|
|
103
|
-
- changes to settargetmediastate
|
|
104
|
-
|
|
105
|
-
## 2.4.0-alpha.35 (2026-03-07)
|
|
106
|
-
|
|
107
|
-
- changes to settargetmediastate
|
|
108
|
-
|
|
109
|
-
## 2.4.0-alpha.34 (2026-03-07)
|
|
110
|
-
|
|
111
|
-
- changes to settargetmediastate
|
|
112
|
-
|
|
113
|
-
## 2.4.0-alpha.33 (2026-03-07)
|
|
114
|
-
|
|
115
|
-
- optimised getmqtttoken
|
|
116
|
-
- checked function of setTargetMediaState , needs testing, controlled by Eve
|
|
117
|
-
|
|
118
|
-
## 2.4.0-alpha.32 (2026-03-07)
|
|
119
|
-
|
|
120
|
-
- made all urls into proper url objects
|
|
121
|
-
- fixed issue with getMostWatchedChannels
|
|
122
|
-
|
|
123
|
-
## 2.4.0-alpha.31 (2026-03-07)
|
|
124
|
-
|
|
125
|
-
- change the master channel list refresh to once a day at a random time between 0000 and 0600. The user setting has no impact and can be removed
|
|
126
|
-
- cleaned up some more diagnostic logging
|
|
127
|
-
|
|
128
|
-
## 2.4.0-alpha.30 (2026-03-07)
|
|
129
|
-
|
|
130
|
-
- cleaned up some diagnostic logging
|
|
131
|
-
|
|
132
|
-
## 2.4.0-alpha.29 (2026-03-06)
|
|
133
|
-
|
|
134
|
-
- optimised refreshDeviceChannelList
|
|
135
|
-
|
|
136
|
-
## 2.4.0-alpha.28 (2026-03-06)
|
|
137
|
-
|
|
138
|
-
- fixed issue with detecting status, introduce 2 versions ago
|
|
139
|
-
|
|
140
|
-
## 2.4.0-alpha.27 (2026-03-06)
|
|
141
|
-
|
|
142
|
-
-- removed test code to detect plugin shutdown
|
|
143
|
-
|
|
144
|
-
## 2.4.0-alpha.26 (2026-03-06)
|
|
145
|
-
|
|
146
|
-
-- added test code to detect plugin shutdown
|
|
147
|
-
- added clean unsubscribe on plugin shutdown
|
|
148
|
-
|
|
149
|
-
## 2.4.0-alpha.25 (2026-03-05)
|
|
150
|
-
|
|
151
|
-
- fixed introduced bug in setRemoteKey
|
|
152
|
-
|
|
153
|
-
## 2.4.0-alpha.24 (2026-03-05)
|
|
154
|
-
|
|
155
|
-
- made channel ConfiguredName read only as the backend defines the channel name
|
|
156
|
-
|
|
157
|
-
## 2.4.0-alpha.23 (2026-03-05)
|
|
158
|
-
|
|
159
|
-
- optimised setRemoteKey
|
|
160
|
-
|
|
161
|
-
## 2.4.0-alpha.22 (2026-03-05)
|
|
162
|
-
|
|
163
|
-
- fixed error handling in refreshMasterChannelList
|
|
164
|
-
|
|
165
|
-
## 2.4.0-alpha.21 (2026-03-05)
|
|
166
|
-
|
|
167
|
-
- fixed logging bug in sendKey
|
|
168
|
-
|
|
169
|
-
## 2.4.0-alpha.20 (2026-03-05)
|
|
170
|
-
|
|
171
|
-
- improved accessory information display to show a better serialnumber
|
|
172
|
-
- updated set-top box model name for 2008C
|
|
173
|
-
- added more robustness to many calls in case we never get a configsvc response
|
|
174
|
-
- optimised the mqttDeviceStateHandler
|
|
175
|
-
- improved refreshMasterChannelList
|
|
176
|
-
- improved a lot of webservice calls, removing promises and going to try-catch
|
|
177
|
-
|
|
178
|
-
## 2.4.0-alpha.19 (2026-03-04)
|
|
179
|
-
|
|
180
|
-
- removed some dead code
|
|
181
|
-
- enabled handler for setClosedCaptions and setPictureMode, test control from Eve app
|
|
182
|
-
- improved send key logging
|
|
183
|
-
|
|
184
|
-
## 2.4.0-alpha.18 (2026-03-03)
|
|
185
|
-
|
|
186
|
-
- Fixed dislayOrder crash on startup - check this!
|
|
187
|
-
- Optimised post publishExternalAccessories HAP updates
|
|
188
|
-
- Changed all updateValue to updateCharacteristic post-publish to be more HAP compliant
|
|
189
|
-
|
|
190
|
-
## 2.4.0-alpha.17 (2026-03-03)
|
|
191
|
-
|
|
192
|
-
- Cleaned up the platform code
|
|
193
|
-
- Changed all get/set handlers to async
|
|
194
|
-
- Optimised all get/set handlers
|
|
195
|
-
- More HAP minor bug fixes and optimisations
|
|
196
|
-
|
|
197
|
-
## 2.4.0-alpha.16 (2026-03-03)
|
|
198
|
-
|
|
199
|
-
- Fixed bug: TypeError: this.prepareinputSourceServices is not a function
|
|
200
|
-
|
|
201
|
-
## 2.4.0-alpha.15 (2026-03-03)
|
|
202
|
-
|
|
203
|
-
- Renamed Current Channnel Id and Current Channel Name to Active Channel Id and Active Channel Name for consistency with Active Identifier
|
|
204
|
-
|
|
205
|
-
## 2.4.0-alpha.14 (2026-03-03)
|
|
206
|
-
|
|
207
|
-
- Optimised HAP code for strict compliance
|
|
208
|
-
- Removed debug logging
|
|
209
|
-
|
|
210
|
-
## 2.4.0-alpha.13 (2026-03-03)
|
|
211
|
-
|
|
212
|
-
- Fixes to logging of getInputName for diagnostics
|
|
213
|
-
|
|
214
|
-
## 2.4.0-alpha.12 (2026-03-03)
|
|
215
|
-
|
|
216
|
-
- More improvements to get ConfiguredName working properly on the Eve app (needs testing for both TV and Inputs)
|
|
217
|
-
|
|
218
|
-
## 2.4.0-alpha.11 (2026-03-03)
|
|
219
|
-
|
|
220
|
-
- Fixed logging bug in setInputName
|
|
221
|
-
|
|
222
|
-
## 2.4.0-alpha.10 (2026-03-03)
|
|
223
|
-
|
|
224
|
-
## 2.4.0-alpha.9 (2026-03-03)
|
|
225
|
-
|
|
226
|
-
## 2.4.0-alpha.8 (2026-03-03)
|
|
227
|
-
|
|
228
|
-
- More improvements to get ConfiguredName working properly on the Eve app (needs testing for both TV and Inputs)
|
|
229
|
-
|
|
230
|
-
## 2.4.0-alpha.7 (2026-03-03)
|
|
231
|
-
|
|
232
|
-
- Corrected some debug log levels
|
|
233
|
-
- Fixed ConfiguredName being empty on the Eve app (needs testing for both TV and Inputs)
|
|
234
|
-
|
|
235
|
-
## 2.4.0-alpha.6 (2026-03-02)
|
|
236
|
-
|
|
237
|
-
- Removed getMute and getVolume, these are not supported
|
|
238
|
-
- More code optimisations
|
|
239
|
-
|
|
240
|
-
## 2.4.0-alpha.5 (2026-03-02)
|
|
241
|
-
|
|
242
|
-
- More code performance improvements
|
|
243
|
-
- Improved all HAP code
|
|
244
|
-
|
|
245
|
-
## 2.4.0-alpha.4 (2026-03-02)
|
|
246
|
-
|
|
247
|
-
- Fixed self bug in volume control
|
|
248
|
-
|
|
249
|
-
## 2.4.0-alpha.4 (2026-03-02)
|
|
250
|
-
|
|
251
|
-
- Fixed self bug in volume control
|
|
252
|
-
|
|
253
|
-
## 2.4.0-alpha.3 (2026-03-02)
|
|
254
|
-
|
|
255
|
-
- Fixed new introduced bug with displayed channel being incorrect (offset by 1)
|
|
256
|
-
- Added "devMode": true support to config.json
|
|
257
|
-
|
|
258
|
-
## 2.4.0-alpha.2 (2026-03-01)
|
|
259
|
-
|
|
260
|
-
- Improved README.md text
|
|
261
|
-
- Improved config.schema.json description text
|
|
262
|
-
- Improved discovery of devices and accessory setup
|
|
263
|
-
- Improved mqtt handling
|
|
264
|
-
- Improved overall code robustness and fixed many small bugs
|
|
265
|
-
- Fixed spelling mistakes in comments
|
|
266
|
-
|
|
267
|
-
## 2.4.0-alpha.1 (2026-02-27)
|
|
268
|
-
|
|
269
|
-
- Adapted login sequence for CH
|
|
270
|
-
- Updated config.schema.json to support new CH login method and improced description texts
|
|
271
|
-
- Bumped dependency "axios": "^1.13.6",
|
|
35
|
+
- Bumped dependency "ws": "^8.20.0"
|
|
272
36
|
|
|
273
37
|
## 2.3.8 (2026-02-27)
|
|
274
38
|
|
package/index.js
CHANGED
|
@@ -4440,6 +4440,13 @@ class StbPlatform {
|
|
|
4440
4440
|
deviceId = mqttMessage.source;
|
|
4441
4441
|
stbState = mqttMessage.state;
|
|
4442
4442
|
|
|
4443
|
+
// Look up the per-device instance so we can read device-specific state
|
|
4444
|
+
// (e.g. previousPowerState) before the switch runs
|
|
4445
|
+
const deviceIndex = this.devices.findIndex(
|
|
4446
|
+
(device) => device.deviceId === deviceId,
|
|
4447
|
+
);
|
|
4448
|
+
const stbDevice = deviceIndex > -1 ? this.stbDevices[deviceIndex] : null;
|
|
4449
|
+
|
|
4443
4450
|
// Box setting: StandbyPowerConsumption = FastStart / ActiveStart / EcoSlowstart
|
|
4444
4451
|
// "Fast start": when turned off, goes to ONLINE_STANDBY and stays there. Box can be turned on via mqtt
|
|
4445
4452
|
// "Active start": when turned off, stays at ONLINE_STANDBY for 5min, then goes to OFFLINE_NETWORK_STANDBY. box can be turned on via ??
|
|
@@ -4448,6 +4455,18 @@ class StbPlatform {
|
|
|
4448
4455
|
case "ONLINE_RUNNING": // ONLINE_RUNNING: power is on
|
|
4449
4456
|
currStatusActive = Characteristic.Active.ACTIVE; // bool, 0 = not active, 1 = active
|
|
4450
4457
|
currPowerState = Characteristic.Active.ACTIVE;
|
|
4458
|
+
// Detect power-off → power-on transition per device.
|
|
4459
|
+
// Set PLAY immediately; CPE.uiStatus will overwrite with the
|
|
4460
|
+
// accurate speed-derived state shortly after.
|
|
4461
|
+
if (stbDevice?.previousPowerState === Characteristic.Active.INACTIVE) {
|
|
4462
|
+
currMediaState = Characteristic.CurrentMediaState.PLAY;
|
|
4463
|
+
if (this.debugLevel > 0) {
|
|
4464
|
+
this.log.warn(
|
|
4465
|
+
"mqttClient: STB status: power-on transition for %s, setting mediaState to PLAY",
|
|
4466
|
+
deviceId,
|
|
4467
|
+
);
|
|
4468
|
+
}
|
|
4469
|
+
}
|
|
4451
4470
|
break;
|
|
4452
4471
|
case "ONLINE_STANDBY": // ONLINE_STANDBY: power is off, device is on standby, still reachable over the network, can be turned on via mqtt.
|
|
4453
4472
|
currStatusActive = Characteristic.Active.ACTIVE; // bool, 0 = not active, 1 = active
|
|
@@ -5610,6 +5629,7 @@ class StbDevice {
|
|
|
5610
5629
|
this.currentStatusFault = Characteristic.StatusFault.NO_FAULT;
|
|
5611
5630
|
this.currentInUse = Characteristic.InUse.NOT_IN_USE;
|
|
5612
5631
|
this.currentPowerState = Characteristic.Active.INACTIVE;
|
|
5632
|
+
this.previousPowerState = Characteristic.Active.INACTIVE;
|
|
5613
5633
|
this.currentStatusActive = Characteristic.Active.INACTIVE;
|
|
5614
5634
|
|
|
5615
5635
|
this.currentChannelId = NO_CHANNEL_ID; // string eg SV09038
|
package/package.json
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"displayName": "Homebridge EOSSTB",
|
|
4
4
|
"description": "Add your set-top box to Homekit (for Telenet BE, Sunrise CH, UPC SK, Virgin Media GB & IE, Ziggo NL)",
|
|
5
5
|
"author": "Jochen Siegenthaler (https://github.com/jsiegenthaler/)",
|
|
6
|
-
"version": "2.4.0-
|
|
6
|
+
"version": "2.4.0-beta.1",
|
|
7
7
|
"platformname": "eosstb",
|
|
8
8
|
"dependencies": {
|
|
9
9
|
"axios": "^1.16.0",
|