homebridge-tryfi 1.1.0 → 1.1.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 +13 -0
- package/dist/platform.d.ts.map +1 -1
- package/dist/platform.js +58 -2
- package/dist/platform.js.map +1 -1
- package/package.json +1 -1
- package/src/platform.ts +63 -4
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,19 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
|
|
5
|
+
## [1.1.1] - 2026-01-21
|
|
6
|
+
|
|
7
|
+
### Fixed
|
|
8
|
+
- **Smart Error Handling**: Improved handling of transient API errors
|
|
9
|
+
- 502/503/504 errors now logged as warnings instead of errors
|
|
10
|
+
- Automatic re-authentication on 401/403 errors with immediate retry
|
|
11
|
+
- Cleaner log output for common transient failures
|
|
12
|
+
- Plugin continues polling even if TryFi API is temporarily unavailable
|
|
13
|
+
|
|
14
|
+
### Changed
|
|
15
|
+
- Error messages are now more descriptive and actionable
|
|
16
|
+
- Reduced log spam during temporary API outages
|
|
17
|
+
|
|
5
18
|
## [1.1.0] - 2026-01-21
|
|
6
19
|
|
|
7
20
|
### Added
|
package/dist/platform.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"platform.d.ts","sourceRoot":"","sources":["../src/platform.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,GAAG,EACH,qBAAqB,EACrB,MAAM,EACN,iBAAiB,EACjB,cAAc,EACd,OAAO,EACP,cAAc,EACf,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACjC,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAE9C;;GAEG;AACH,qBAAa,aAAc,YAAW,qBAAqB;aAavC,GAAG,EAAE,MAAM;aAEX,aAAa,EAAE,GAAG;IAdpC,SAAgB,OAAO,EAAE,OAAO,OAAO,CAAC;IACxC,SAAgB,cAAc,EAAE,OAAO,cAAc,CAAC;IAEtD,SAAgB,MAAM,EAAE,mBAAmB,CAAC;IAC5C,SAAgB,WAAW,EAAE,iBAAiB,EAAE,CAAM;IACtD,SAAgB,iBAAiB,EAAE,GAAG,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAa;IAEjF,SAAgB,QAAQ,EAAE,QAAQ,CAAC;IACnC,SAAgB,GAAG,EAAE,QAAQ,CAAC;IAC9B,OAAO,CAAC,eAAe,CAAC,CAAiB;gBAGvB,GAAG,EAAE,MAAM,EAC3B,MAAM,EAAE,cAAc,EACN,aAAa,EAAE,GAAG;IA2BpC;;OAEG;IACH,kBAAkB,CAAC,SAAS,EAAE,iBAAiB;IAK/C;;OAEG;IACG,eAAe;
|
|
1
|
+
{"version":3,"file":"platform.d.ts","sourceRoot":"","sources":["../src/platform.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,GAAG,EACH,qBAAqB,EACrB,MAAM,EACN,iBAAiB,EACjB,cAAc,EACd,OAAO,EACP,cAAc,EACf,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACjC,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAE9C;;GAEG;AACH,qBAAa,aAAc,YAAW,qBAAqB;aAavC,GAAG,EAAE,MAAM;aAEX,aAAa,EAAE,GAAG;IAdpC,SAAgB,OAAO,EAAE,OAAO,OAAO,CAAC;IACxC,SAAgB,cAAc,EAAE,OAAO,cAAc,CAAC;IAEtD,SAAgB,MAAM,EAAE,mBAAmB,CAAC;IAC5C,SAAgB,WAAW,EAAE,iBAAiB,EAAE,CAAM;IACtD,SAAgB,iBAAiB,EAAE,GAAG,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAa;IAEjF,SAAgB,QAAQ,EAAE,QAAQ,CAAC;IACnC,SAAgB,GAAG,EAAE,QAAQ,CAAC;IAC9B,OAAO,CAAC,eAAe,CAAC,CAAiB;gBAGvB,GAAG,EAAE,MAAM,EAC3B,MAAM,EAAE,cAAc,EACN,aAAa,EAAE,GAAG;IA2BpC;;OAEG;IACH,kBAAkB,CAAC,SAAS,EAAE,iBAAiB;IAK/C;;OAEG;IACG,eAAe;IAwHrB;;OAEG;IACH,OAAO,CAAC,YAAY;IAgBpB;;OAEG;YACW,WAAW;IA2DzB;;OAEG;IACH,QAAQ;CAKT"}
|
package/dist/platform.js
CHANGED
|
@@ -115,7 +115,26 @@ class TryFiPlatform {
|
|
|
115
115
|
this.startPolling();
|
|
116
116
|
}
|
|
117
117
|
catch (error) {
|
|
118
|
-
|
|
118
|
+
// Handle different error types during discovery
|
|
119
|
+
if (error.response?.status) {
|
|
120
|
+
const status = error.response.status;
|
|
121
|
+
// Transient server errors - warn and start polling anyway (will retry)
|
|
122
|
+
if (status === 502 || status === 503 || status === 504) {
|
|
123
|
+
this.log.warn(`TryFi API temporarily unavailable (${status}) during startup`);
|
|
124
|
+
this.log.warn('Will continue to retry during polling');
|
|
125
|
+
this.startPolling(); // Start polling anyway, will retry
|
|
126
|
+
return;
|
|
127
|
+
}
|
|
128
|
+
// Authentication errors
|
|
129
|
+
if (status === 401 || status === 403) {
|
|
130
|
+
this.log.error('Authentication failed - please check your username and password');
|
|
131
|
+
return;
|
|
132
|
+
}
|
|
133
|
+
this.log.error(`Failed to discover TryFi devices (HTTP ${status}):`, error.message);
|
|
134
|
+
}
|
|
135
|
+
else {
|
|
136
|
+
this.log.error('Failed to discover TryFi devices:', error.message || error);
|
|
137
|
+
}
|
|
119
138
|
}
|
|
120
139
|
}
|
|
121
140
|
/**
|
|
@@ -152,7 +171,44 @@ class TryFiPlatform {
|
|
|
152
171
|
this.log.debug(`Updated ${pets.length} collar(s)`);
|
|
153
172
|
}
|
|
154
173
|
catch (error) {
|
|
155
|
-
|
|
174
|
+
// Handle different error types appropriately
|
|
175
|
+
if (error.response?.status) {
|
|
176
|
+
const status = error.response.status;
|
|
177
|
+
// Transient server errors (502, 503, 504) - just warn and retry next interval
|
|
178
|
+
if (status === 502 || status === 503 || status === 504) {
|
|
179
|
+
this.log.warn(`TryFi API temporarily unavailable (${status}), will retry on next poll`);
|
|
180
|
+
return;
|
|
181
|
+
}
|
|
182
|
+
// Authentication errors (401, 403) - try to re-authenticate
|
|
183
|
+
if (status === 401 || status === 403) {
|
|
184
|
+
this.log.warn('Authentication expired, attempting to re-login...');
|
|
185
|
+
try {
|
|
186
|
+
await this.tryfiApi.login();
|
|
187
|
+
this.log.info('Successfully re-authenticated with TryFi');
|
|
188
|
+
// Try polling again immediately after re-auth
|
|
189
|
+
const allPets = await this.tryfiApi.getPets();
|
|
190
|
+
const ignoredPets = (this.config.ignoredPets || []).map(name => name.toLowerCase());
|
|
191
|
+
const pets = allPets.filter(pet => !ignoredPets.includes(pet.name.toLowerCase()));
|
|
192
|
+
for (const pet of pets) {
|
|
193
|
+
const accessory = this.collarAccessories.get(pet.petId);
|
|
194
|
+
if (accessory) {
|
|
195
|
+
accessory.updatePetData(pet);
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
this.log.debug(`Updated ${pets.length} collar(s) after re-auth`);
|
|
199
|
+
}
|
|
200
|
+
catch (reAuthError) {
|
|
201
|
+
this.log.error('Failed to re-authenticate with TryFi:', reAuthError);
|
|
202
|
+
}
|
|
203
|
+
return;
|
|
204
|
+
}
|
|
205
|
+
// Other HTTP errors
|
|
206
|
+
this.log.error(`TryFi API error (${status}):`, error.message);
|
|
207
|
+
}
|
|
208
|
+
else {
|
|
209
|
+
// Network errors, timeouts, etc.
|
|
210
|
+
this.log.error('Failed to poll TryFi API:', error.message || error);
|
|
211
|
+
}
|
|
156
212
|
}
|
|
157
213
|
}
|
|
158
214
|
/**
|
package/dist/platform.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"platform.js","sourceRoot":"","sources":["../src/platform.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"platform.js","sourceRoot":"","sources":["../src/platform.ts"],"names":[],"mappings":";;;AASA,+BAAiC;AACjC,2CAAmD;AAGnD;;GAEG;AACH,MAAa,aAAa;IAaN;IAEA;IAdF,OAAO,CAAiB;IACxB,cAAc,CAAwB;IAEtC,MAAM,CAAsB;IAC5B,WAAW,GAAwB,EAAE,CAAC;IACtC,iBAAiB,GAAsC,IAAI,GAAG,EAAE,CAAC;IAEjE,QAAQ,CAAW;IACnB,GAAG,CAAW,CAAC,0BAA0B;IACjD,eAAe,CAAkB;IAEzC,YACkB,GAAW,EAC3B,MAAsB,EACN,aAAkB;QAFlB,QAAG,GAAH,GAAG,CAAQ;QAEX,kBAAa,GAAb,aAAa,CAAK;QAElC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC;QAC9C,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,cAAc,CAAC;QAE5D,0CAA0C;QAC1C,IAAI,CAAC,MAAM,GAAG,MAA6B,CAAC;QAE5C,kBAAkB;QAClB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;YACnD,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,oDAAoD,CAAC,CAAC;YACrE,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;QAC7C,CAAC;QAED,oBAAoB;QACpB,IAAI,CAAC,QAAQ,GAAG,IAAI,cAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;QAC9E,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,0BAA0B;QAEpD,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,iCAAiC,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;QAE/D,mFAAmF;QACnF,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,oBAAoB,EAAE,GAAG,EAAE;YAC/C,GAAG,CAAC,KAAK,CAAC,sCAAsC,CAAC,CAAC;YAClD,IAAI,CAAC,eAAe,EAAE,CAAC;QACzB,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,kBAAkB,CAAC,SAA4B;QAC7C,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,+BAA+B,EAAE,SAAS,CAAC,WAAW,CAAC,CAAC;QACtE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACnC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,eAAe;QACnB,IAAI,CAAC;YACH,qBAAqB;YACrB,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;YAC5B,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;YAE9C,6CAA6C;YAC7C,MAAM,WAAW,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;YACpF,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;YAElF,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC3B,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;gBAClD,IAAI,YAAY,GAAG,CAAC,EAAE,CAAC;oBACrB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,YAAY,gCAAgC,CAAC,CAAC;gBAC1E,CAAC;YACH,CAAC;YAED,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,IAAI,CAAC,MAAM,kBAAkB,CAAC,CAAC;YAE3D,2BAA2B;YAC3B,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAAU,CAAC;YAE3C,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;gBACvB,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBAEhC,wCAAwC;gBACxC,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBAE7D,oCAAoC;gBACpC,MAAM,iBAAiB,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAC7C,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,KAAK,IAAI,CACvC,CAAC;gBAEF,IAAI,iBAAiB,EAAE,CAAC;oBACtB,6BAA6B;oBAC7B,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,0CAA0C,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;oBACpE,iBAAiB,CAAC,OAAO,CAAC,GAAG,GAAG,GAAG,CAAC;oBAEpC,kCAAkC;oBAClC,MAAM,eAAe,GAAG,IAAI,gCAAoB,CAC9C,IAAI,EACJ,iBAAiB,EACjB,GAAG,CACJ,CAAC;oBACF,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,eAAe,CAAC,CAAC;oBAEvD,sBAAsB;oBACtB,IAAI,CAAC,aAAa,CAAC,yBAAyB,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC;gBACpE,CAAC;qBAAM,CAAC;oBACN,uBAAuB;oBACvB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,uBAAuB,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;oBAEjD,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;oBAC3E,SAAS,CAAC,OAAO,CAAC,GAAG,GAAG,GAAG,CAAC;oBAE5B,kCAAkC;oBAClC,MAAM,eAAe,GAAG,IAAI,gCAAoB,CAAC,IAAI,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC;oBACvE,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,eAAe,CAAC,CAAC;oBAEvD,yBAAyB;oBACzB,IAAI,CAAC,aAAa,CAAC,2BAA2B,CAAC,kBAAkB,EAAE,OAAO,EAAE;wBAC1E,SAAS;qBACV,CAAC,CAAC;oBACH,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBACnC,CAAC;YACH,CAAC;YAED,mDAAmD;YACnD,MAAM,mBAAmB,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CACjD,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,gBAAgB,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CACnE,CAAC;YAEF,IAAI,mBAAmB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACnC,IAAI,CAAC,GAAG,CAAC,IAAI,CACX,YAAY,mBAAmB,CAAC,MAAM,kCAAkC,CACzE,CAAC;gBACF,IAAI,CAAC,aAAa,CAAC,6BAA6B,CAC9C,kBAAkB,EAClB,OAAO,EACP,mBAAmB,CACpB,CAAC;gBAEF,2BAA2B;gBAC3B,KAAK,MAAM,SAAS,IAAI,mBAAmB,EAAE,CAAC;oBAC5C,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;oBAClD,IAAI,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC;wBACf,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;oBACpC,CAAC;oBACD,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;gBAC9D,CAAC;YACH,CAAC;YAED,4BAA4B;YAC5B,IAAI,CAAC,YAAY,EAAE,CAAC;QACtB,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,gDAAgD;YAChD,IAAI,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;gBAC3B,MAAM,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC;gBAErC,uEAAuE;gBACvE,IAAI,MAAM,KAAK,GAAG,IAAI,MAAM,KAAK,GAAG,IAAI,MAAM,KAAK,GAAG,EAAE,CAAC;oBACvD,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,sCAAsC,MAAM,kBAAkB,CAAC,CAAC;oBAC9E,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAC;oBACvD,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,mCAAmC;oBACxD,OAAO;gBACT,CAAC;gBAED,wBAAwB;gBACxB,IAAI,MAAM,KAAK,GAAG,IAAI,MAAM,KAAK,GAAG,EAAE,CAAC;oBACrC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,iEAAiE,CAAC,CAAC;oBAClF,OAAO;gBACT,CAAC;gBAED,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,0CAA0C,MAAM,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;YACtF,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,mCAAmC,EAAE,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,CAAC;YAC9E,CAAC;QACH,CAAC;IACH,CAAC;IAED;;OAEG;IACK,YAAY;QAClB,MAAM,eAAe,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC;QACnE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,0BAA0B,eAAe,GAAG,IAAI,UAAU,CAAC,CAAC;QAE1E,8BAA8B;QAC9B,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YACzB,aAAa,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QACtC,CAAC;QAED,sCAAsC;QACtC,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,IAAI,CAAC,eAAe,GAAG,WAAW,CAAC,GAAG,EAAE;YACtC,IAAI,CAAC,WAAW,EAAE,CAAC;QACrB,CAAC,EAAE,eAAe,CAAC,CAAC;IACtB,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,WAAW;QACvB,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;YAE9C,6CAA6C;YAC7C,MAAM,WAAW,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;YACpF,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;YAElF,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;gBACvB,MAAM,SAAS,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBACxD,IAAI,SAAS,EAAE,CAAC;oBACd,SAAS,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;gBAC/B,CAAC;YACH,CAAC;YAED,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,IAAI,CAAC,MAAM,YAAY,CAAC,CAAC;QACrD,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,6CAA6C;YAC7C,IAAI,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;gBAC3B,MAAM,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC;gBAErC,8EAA8E;gBAC9E,IAAI,MAAM,KAAK,GAAG,IAAI,MAAM,KAAK,GAAG,IAAI,MAAM,KAAK,GAAG,EAAE,CAAC;oBACvD,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,sCAAsC,MAAM,4BAA4B,CAAC,CAAC;oBACxF,OAAO;gBACT,CAAC;gBAED,4DAA4D;gBAC5D,IAAI,MAAM,KAAK,GAAG,IAAI,MAAM,KAAK,GAAG,EAAE,CAAC;oBACrC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,mDAAmD,CAAC,CAAC;oBACnE,IAAI,CAAC;wBACH,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;wBAC5B,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAC;wBAC1D,8CAA8C;wBAC9C,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;wBAC9C,MAAM,WAAW,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;wBACpF,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;wBAClF,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;4BACvB,MAAM,SAAS,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;4BACxD,IAAI,SAAS,EAAE,CAAC;gCACd,SAAS,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;4BAC/B,CAAC;wBACH,CAAC;wBACD,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,IAAI,CAAC,MAAM,0BAA0B,CAAC,CAAC;oBACnE,CAAC;oBAAC,OAAO,WAAW,EAAE,CAAC;wBACrB,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,uCAAuC,EAAE,WAAW,CAAC,CAAC;oBACvE,CAAC;oBACD,OAAO;gBACT,CAAC;gBAED,oBAAoB;gBACpB,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,oBAAoB,MAAM,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;YAChE,CAAC;iBAAM,CAAC;gBACN,iCAAiC;gBACjC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,2BAA2B,EAAE,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,CAAC;YACtE,CAAC;QACH,CAAC;IACH,CAAC;IAED;;OAEG;IACH,QAAQ;QACN,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YACzB,aAAa,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QACtC,CAAC;IACH,CAAC;CACF;AAtQD,sCAsQC"}
|
package/package.json
CHANGED
package/src/platform.ts
CHANGED
|
@@ -161,8 +161,29 @@ export class TryFiPlatform implements DynamicPlatformPlugin {
|
|
|
161
161
|
|
|
162
162
|
// Start polling for updates
|
|
163
163
|
this.startPolling();
|
|
164
|
-
} catch (error) {
|
|
165
|
-
|
|
164
|
+
} catch (error: any) {
|
|
165
|
+
// Handle different error types during discovery
|
|
166
|
+
if (error.response?.status) {
|
|
167
|
+
const status = error.response.status;
|
|
168
|
+
|
|
169
|
+
// Transient server errors - warn and start polling anyway (will retry)
|
|
170
|
+
if (status === 502 || status === 503 || status === 504) {
|
|
171
|
+
this.log.warn(`TryFi API temporarily unavailable (${status}) during startup`);
|
|
172
|
+
this.log.warn('Will continue to retry during polling');
|
|
173
|
+
this.startPolling(); // Start polling anyway, will retry
|
|
174
|
+
return;
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
// Authentication errors
|
|
178
|
+
if (status === 401 || status === 403) {
|
|
179
|
+
this.log.error('Authentication failed - please check your username and password');
|
|
180
|
+
return;
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
this.log.error(`Failed to discover TryFi devices (HTTP ${status}):`, error.message);
|
|
184
|
+
} else {
|
|
185
|
+
this.log.error('Failed to discover TryFi devices:', error.message || error);
|
|
186
|
+
}
|
|
166
187
|
}
|
|
167
188
|
}
|
|
168
189
|
|
|
@@ -204,8 +225,46 @@ export class TryFiPlatform implements DynamicPlatformPlugin {
|
|
|
204
225
|
}
|
|
205
226
|
|
|
206
227
|
this.log.debug(`Updated ${pets.length} collar(s)`);
|
|
207
|
-
} catch (error) {
|
|
208
|
-
|
|
228
|
+
} catch (error: any) {
|
|
229
|
+
// Handle different error types appropriately
|
|
230
|
+
if (error.response?.status) {
|
|
231
|
+
const status = error.response.status;
|
|
232
|
+
|
|
233
|
+
// Transient server errors (502, 503, 504) - just warn and retry next interval
|
|
234
|
+
if (status === 502 || status === 503 || status === 504) {
|
|
235
|
+
this.log.warn(`TryFi API temporarily unavailable (${status}), will retry on next poll`);
|
|
236
|
+
return;
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
// Authentication errors (401, 403) - try to re-authenticate
|
|
240
|
+
if (status === 401 || status === 403) {
|
|
241
|
+
this.log.warn('Authentication expired, attempting to re-login...');
|
|
242
|
+
try {
|
|
243
|
+
await this.tryfiApi.login();
|
|
244
|
+
this.log.info('Successfully re-authenticated with TryFi');
|
|
245
|
+
// Try polling again immediately after re-auth
|
|
246
|
+
const allPets = await this.tryfiApi.getPets();
|
|
247
|
+
const ignoredPets = (this.config.ignoredPets || []).map(name => name.toLowerCase());
|
|
248
|
+
const pets = allPets.filter(pet => !ignoredPets.includes(pet.name.toLowerCase()));
|
|
249
|
+
for (const pet of pets) {
|
|
250
|
+
const accessory = this.collarAccessories.get(pet.petId);
|
|
251
|
+
if (accessory) {
|
|
252
|
+
accessory.updatePetData(pet);
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
this.log.debug(`Updated ${pets.length} collar(s) after re-auth`);
|
|
256
|
+
} catch (reAuthError) {
|
|
257
|
+
this.log.error('Failed to re-authenticate with TryFi:', reAuthError);
|
|
258
|
+
}
|
|
259
|
+
return;
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
// Other HTTP errors
|
|
263
|
+
this.log.error(`TryFi API error (${status}):`, error.message);
|
|
264
|
+
} else {
|
|
265
|
+
// Network errors, timeouts, etc.
|
|
266
|
+
this.log.error('Failed to poll TryFi API:', error.message || error);
|
|
267
|
+
}
|
|
209
268
|
}
|
|
210
269
|
}
|
|
211
270
|
|