Skip to content

Commit a1c1f40

Browse files
committed
Fixed clearblade cert error
1 parent 1270d40 commit a1c1f40

6 files changed

Lines changed: 81 additions & 9 deletions

File tree

CHANGELOG.md

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,22 @@
22

33
All notable changes to homebridge-econet-rheem will be documented in this file.
44

5-
## 1.7.9
5+
## 1.7.10-beta.0
6+
7+
### Fixed
8+
- Embed clearblade certs to fix "unable to get local issuer certificate" errors
69

710
### Changed
811
- Updated dependencies
912

1013
### Notes
1114
Please consider giving this plugin a ⭐️ on [GitHub](https://github.com/mpatfield/homebridge-econet-rheem) if you're finding it useful!
1215

16+
## 1.7.9
17+
18+
### Changed
19+
- Updated dependencies
20+
1321
## 1.7.8 (2026-05-30)
1422

1523
### Fixed

package-lock.json

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
{
22
"name": "homebridge-econet-rheem",
33
"platform": "HomebridgeEconetRheem",
4-
"displayName": "Homebridge Econet Rheem",
4+
"displayName": "Econet Rheem",
55
"description": "Homebridge plugin for control of Rheem and Ruud thermostats and water heaters",
66
"type": "module",
7-
"version": "1.7.9",
7+
"version": "1.7.10-beta.0",
88
"homepage": "https://github.com/mpatfield/homebridge-econet-rheem#readme",
99
"repository": {
1010
"type": "git",

src/homebridge/settings.ts

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,3 +4,61 @@ export const PLUGIN_NAME = 'homebridge-econet-rheem';
44
export const CLEARBLADE_HOST = 'rheem.clearblade.com';
55
export const CLEARBLADE_KEY = 'e2e699cb0bb0bbb88fc8858cb5a401';
66
export const CLEARBLADE_SECRET = 'E2E699CB0BE6C6FADDB1B0BC9A20';
7+
8+
export const CLEARBLADE_CERT_ROOT =
9+
`
10+
-----BEGIN CERTIFICATE-----
11+
MIIDrzCCApegAwIBAgIQCDvgVpBCRrGhdWrJWZHHSjANBgkqhkiG9w0BAQUFADBh
12+
MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
13+
d3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBD
14+
QTAeFw0wNjExMTAwMDAwMDBaFw0zMTExMTAwMDAwMDBaMGExCzAJBgNVBAYTAlVT
15+
MRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5j
16+
b20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IENBMIIBIjANBgkqhkiG
17+
9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4jvhEXLeqKTTo1eqUKKPC3eQyaKl7hLOllsB
18+
CSDMAZOnTjC3U/dDxGkAV53ijSLdhwZAAIEJzs4bg7/fzTtxRuLWZscFs3YnFo97
19+
nh6Vfe63SKMI2tavegw5BmV/Sl0fvBf4q77uKNd0f3p4mVmFaG5cIzJLv07A6Fpt
20+
43C/dxC//AH2hdmoRBBYMql1GNXRor5H4idq9Joz+EkIYIvUX7Q6hL+hqkpMfT7P
21+
T19sdl6gSzeRntwi5m3OFBqOasv+zbMUZBfHWymeMr/y7vrTC0LUq7dBMtoM1O/4
22+
gdW7jVg/tRvoSSiicNoxBN33shbyTApOB6jtSj1etX+jkMOvJwIDAQABo2MwYTAO
23+
BgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUA95QNVbR
24+
TLtm8KPiGxvDl7I90VUwHwYDVR0jBBgwFoAUA95QNVbRTLtm8KPiGxvDl7I90VUw
25+
DQYJKoZIhvcNAQEFBQADggEBAMucN6pIExIK+t1EnE9SsPTfrgT1eXkIoyQY/Esr
26+
hMAtudXH/vTBH1jLuG2cenTnmCmrEbXjcKChzUyImZOMkXDiqw8cvpOp/2PV5Adg
27+
06O/nVsJ8dWO41P0jmP6P6fbtGbfYmbW0W5BjfIttep3Sp+dWOIrWcBAI+0tKIJF
28+
PnlUkiaY4IBIqDfv8NZ5YBberOgOzW6sRBc4L0na4UU+Krk2U886UAb3LujEV0ls
29+
YSEY1QSteDwsOoBrp+uvFRTp2InBuThs4pFsiv9kuXclVzDAGySj4dzp30d8tbQk
30+
CAUw7C29C79Fv1C5qfPrmAESrciIxpg0X40KPMbp1ZWVbd4=
31+
-----END CERTIFICATE-----
32+
`;
33+
34+
export const CLEARBLADE_CERT_INTERMEDIATE =
35+
`
36+
-----BEGIN CERTIFICATE-----
37+
MIIEvjCCA6agAwIBAgIQBtjZBNVYQ0b2ii+nVCJ+xDANBgkqhkiG9w0BAQsFADBh
38+
MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
39+
d3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBD
40+
QTAeFw0yMTA0MTQwMDAwMDBaFw0zMTA0MTMyMzU5NTlaME8xCzAJBgNVBAYTAlVT
41+
MRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxKTAnBgNVBAMTIERpZ2lDZXJ0IFRMUyBS
42+
U0EgU0hBMjU2IDIwMjAgQ0ExMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
43+
AQEAwUuzZUdwvN1PWNvsnO3DZuUfMRNUrUpmRh8sCuxkB+Uu3Ny5CiDt3+PE0J6a
44+
qXodgojlEVbbHp9YwlHnLDQNLtKS4VbL8Xlfs7uHyiUDe5pSQWYQYE9XE0nw6Ddn
45+
g9/n00tnTCJRpt8OmRDtV1F0JuJ9x8piLhMbfyOIJVNvwTRYAIuE//i+p1hJInuW
46+
raKImxW8oHzf6VGo1bDtN+I2tIJLYrVJmuzHZ9bjPvXj1hJeRPG/cUJ9WIQDgLGB
47+
Afr5yjK7tI4nhyfFK3TUqNaX3sNk+crOU6JWvHgXjkkDKa77SU+kFbnO8lwZV21r
48+
eacroicgE7XQPUDTITAHk+qZ9QIDAQABo4IBgjCCAX4wEgYDVR0TAQH/BAgwBgEB
49+
/wIBADAdBgNVHQ4EFgQUt2ui6qiqhIx56rTaD5iyxZV2ufQwHwYDVR0jBBgwFoAU
50+
A95QNVbRTLtm8KPiGxvDl7I90VUwDgYDVR0PAQH/BAQDAgGGMB0GA1UdJQQWMBQG
51+
CCsGAQUFBwMBBggrBgEFBQcDAjB2BggrBgEFBQcBAQRqMGgwJAYIKwYBBQUHMAGG
52+
GGh0dHA6Ly9vY3NwLmRpZ2ljZXJ0LmNvbTBABggrBgEFBQcwAoY0aHR0cDovL2Nh
53+
Y2VydHMuZGlnaWNlcnQuY29tL0RpZ2lDZXJ0R2xvYmFsUm9vdENBLmNydDBCBgNV
54+
HR8EOzA5MDegNaAzhjFodHRwOi8vY3JsMy5kaWdpY2VydC5jb20vRGlnaUNlcnRH
55+
bG9iYWxSb290Q0EuY3JsMD0GA1UdIAQ2MDQwCwYJYIZIAYb9bAIBMAcGBWeBDAEB
56+
MAgGBmeBDAECATAIBgZngQwBAgIwCAYGZ4EMAQIDMA0GCSqGSIb3DQEBCwUAA4IB
57+
AQCAMs5eC91uWg0Kr+HWhMvAjvqFcO3aXbMM9yt1QP6FCvrzMXi3cEsaiVi6gL3z
58+
ax3pfs8LulicWdSQ0/1s/dCYbbdxglvPbQtaCdB73sRD2Cqk3p5BJl+7j5nL3a7h
59+
qG+fh/50tx8bIKuxT8b1Z11dmzzp/2n3YWzW2fP9NsarA4h20ksudYbj/NhVfSbC
60+
EXffPgK2fPOre3qGNm+499iTcc+G33Mw+nur7SpZyEKEOxEXGlLzyQ4UfaJbcme6
61+
ce1XR2bFuAJKZTRei9AqPCCcUZlM51Ke92sRKw2Sfh3oius2FkOH6ipjv3U/697E
62+
A7sKPPcw7+uvTPyLNhBzPvOk
63+
-----END CERTIFICATE-----
64+
`;

src/model/http.ts

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
import axios, { AxiosRequestConfig, AxiosResponse, isAxiosError } from 'axios';
2+
import https from 'https';
3+
import tls from 'tls';
24

35
import { DeviceAuth, UserAuth } from './auth.js';
46

@@ -7,7 +9,7 @@ import { DeviceDetails, DeviceTokenData, EquipmentData, LocationsResponse, UserT
79

810
import { strings } from '../i18n/i18n.js';
911

10-
import { CLEARBLADE_HOST, CLEARBLADE_KEY, CLEARBLADE_SECRET } from '../homebridge/settings.js';
12+
import { CLEARBLADE_CERT_INTERMEDIATE, CLEARBLADE_CERT_ROOT, CLEARBLADE_HOST, CLEARBLADE_KEY, CLEARBLADE_SECRET } from '../homebridge/settings.js';
1113

1214
import { Log } from '../tools/log.js';
1315
import { DELAYS, MINUTE, SECOND } from '../tools/time.js';
@@ -53,6 +55,8 @@ export class EconetApi {
5355
private userAuth?: UserAuth;
5456
private retryIndex: number = 0;
5557

58+
private readonly httpsAgent = new https.Agent({ ca: [CLEARBLADE_CERT_ROOT, CLEARBLADE_CERT_INTERMEDIATE, ...tls.rootCertificates] });
59+
5660
private static instance?: EconetApi;
5761

5862
private constructor(private readonly dependency: EconetApiDependency) {
@@ -105,9 +109,9 @@ export class EconetApi {
105109
let config: AxiosRequestConfig;
106110
if (this.userAuth?.token) {
107111
const headers = { ...BASE_HEADERS, 'ClearBlade-UserToken': this.userAuth?.token };
108-
config = { headers: headers, timeout: HTTP_TIMEOUT };
112+
config = { headers: headers, timeout: HTTP_TIMEOUT, httpsAgent: this.httpsAgent };
109113
} else {
110-
config = { headers: BASE_HEADERS, timeout: HTTP_TIMEOUT };
114+
config = { headers: BASE_HEADERS, timeout: HTTP_TIMEOUT, httpsAgent: this.httpsAgent };
111115
}
112116

113117
try {

src/model/mqtt.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,15 @@ import { createHash } from 'crypto';
22
import { PrimitiveTypes } from 'homebridge';
33
import mqtt from 'mqtt';
44
import storage from 'node-persist';
5+
import tls from 'tls';
56

67
import { AuthType, DeviceAuth, UserAuth } from './auth.js';
78
import { MQTTKey } from './enums.js';
89
import { EconetApi } from './http.js';
910

1011
import { strings } from '../i18n/i18n.js';
1112

12-
import { CLEARBLADE_HOST, CLEARBLADE_KEY, PLATFORM_NAME } from '../homebridge/settings.js';
13+
import { CLEARBLADE_CERT_INTERMEDIATE, CLEARBLADE_CERT_ROOT, CLEARBLADE_HOST, CLEARBLADE_KEY, PLATFORM_NAME } from '../homebridge/settings.js';
1314

1415
import { Log, LogType } from '../tools/log.js';
1516
import { MINUTE, SECOND } from '../tools/time.js';
@@ -70,6 +71,7 @@ export class MQTT {
7071
username,
7172
clientId,
7273
password: CLEARBLADE_KEY,
74+
ca: [CLEARBLADE_CERT_ROOT, CLEARBLADE_CERT_INTERMEDIATE, ...tls.rootCertificates],
7375
rejectUnauthorized: true,
7476
keepalive: KEEPALIVE,
7577
reconnectPeriod: 0,

0 commit comments

Comments
 (0)