homebridge-adt-pulse 3.0.0-beta.9 → 3.0.0
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/LICENSE +198 -12
- package/README.md +168 -106
- package/build/config.schema.json +18 -13
- package/build/src/lib/accessory.js +441 -122
- package/build/src/lib/accessory.js.map +1 -1
- package/build/src/lib/api.js +177 -232
- package/build/src/lib/api.js.map +1 -1
- package/build/src/lib/detect.js +188 -240
- package/build/src/lib/detect.js.map +1 -1
- package/build/src/lib/items.js +337 -0
- package/build/src/lib/items.js.map +1 -0
- package/build/src/lib/platform.js +198 -38
- package/build/src/lib/platform.js.map +1 -1
- package/build/src/lib/regex.js +2 -2
- package/build/src/lib/regex.js.map +1 -1
- package/build/src/lib/schema.js +4 -3
- package/build/src/lib/schema.js.map +1 -1
- package/build/src/lib/utility.js +277 -38
- package/build/src/lib/utility.js.map +1 -1
- package/build/src/scripts/repl.js +14 -8
- package/build/src/scripts/repl.js.map +1 -1
- package/build/src/scripts/test-api.js +6 -6
- package/build/src/scripts/test-api.js.map +1 -1
- package/config.schema.json +18 -13
- package/package.json +25 -15
package/LICENSE
CHANGED
|
@@ -1,15 +1,201 @@
|
|
|
1
|
-
|
|
1
|
+
Apache License
|
|
2
|
+
Version 2.0, January 2004
|
|
3
|
+
http://www.apache.org/licenses/
|
|
2
4
|
|
|
3
|
-
|
|
5
|
+
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
|
4
6
|
|
|
5
|
-
|
|
6
|
-
purpose with or without fee is hereby granted, provided that the above
|
|
7
|
-
copyright notice and this permission notice appear in all copies.
|
|
7
|
+
1. Definitions.
|
|
8
8
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
9
|
+
"License" shall mean the terms and conditions for use, reproduction,
|
|
10
|
+
and distribution as defined by Sections 1 through 9 of this document.
|
|
11
|
+
|
|
12
|
+
"Licensor" shall mean the copyright owner or entity authorized by
|
|
13
|
+
the copyright owner that is granting the License.
|
|
14
|
+
|
|
15
|
+
"Legal Entity" shall mean the union of the acting entity and all
|
|
16
|
+
other entities that control, are controlled by, or are under common
|
|
17
|
+
control with that entity. For the purposes of this definition,
|
|
18
|
+
"control" means (i) the power, direct or indirect, to cause the
|
|
19
|
+
direction or management of such entity, whether by contract or
|
|
20
|
+
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
|
21
|
+
outstanding shares, or (iii) beneficial ownership of such entity.
|
|
22
|
+
|
|
23
|
+
"You" (or "Your") shall mean an individual or Legal Entity
|
|
24
|
+
exercising permissions granted by this License.
|
|
25
|
+
|
|
26
|
+
"Source" form shall mean the preferred form for making modifications,
|
|
27
|
+
including but not limited to software source code, documentation
|
|
28
|
+
source, and configuration files.
|
|
29
|
+
|
|
30
|
+
"Object" form shall mean any form resulting from mechanical
|
|
31
|
+
transformation or translation of a Source form, including but
|
|
32
|
+
not limited to compiled object code, generated documentation,
|
|
33
|
+
and conversions to other media types.
|
|
34
|
+
|
|
35
|
+
"Work" shall mean the work of authorship, whether in Source or
|
|
36
|
+
Object form, made available under the License, as indicated by a
|
|
37
|
+
copyright notice that is included in or attached to the work
|
|
38
|
+
(an example is provided in the Appendix below).
|
|
39
|
+
|
|
40
|
+
"Derivative Works" shall mean any work, whether in Source or Object
|
|
41
|
+
form, that is based on (or derived from) the Work and for which the
|
|
42
|
+
editorial revisions, annotations, elaborations, or other modifications
|
|
43
|
+
represent, as a whole, an original work of authorship. For the purposes
|
|
44
|
+
of this License, Derivative Works shall not include works that remain
|
|
45
|
+
separable from, or merely link (or bind by name) to the interfaces of,
|
|
46
|
+
the Work and Derivative Works thereof.
|
|
47
|
+
|
|
48
|
+
"Contribution" shall mean any work of authorship, including
|
|
49
|
+
the original version of the Work and any modifications or additions
|
|
50
|
+
to that Work or Derivative Works thereof, that is intentionally
|
|
51
|
+
submitted to Licensor for inclusion in the Work by the copyright owner
|
|
52
|
+
or by an individual or Legal Entity authorized to submit on behalf of
|
|
53
|
+
the copyright owner. For the purposes of this definition, "submitted"
|
|
54
|
+
means any form of electronic, verbal, or written communication sent
|
|
55
|
+
to the Licensor or its representatives, including but not limited to
|
|
56
|
+
communication on electronic mailing lists, source code control systems,
|
|
57
|
+
and issue tracking systems that are managed by, or on behalf of, the
|
|
58
|
+
Licensor for the purpose of discussing and improving the Work, but
|
|
59
|
+
excluding communication that is conspicuously marked or otherwise
|
|
60
|
+
designated in writing by the copyright owner as "Not a Contribution."
|
|
61
|
+
|
|
62
|
+
"Contributor" shall mean Licensor and any individual or Legal Entity
|
|
63
|
+
on behalf of whom a Contribution has been received by Licensor and
|
|
64
|
+
subsequently incorporated within the Work.
|
|
65
|
+
|
|
66
|
+
2. Grant of Copyright License. Subject to the terms and conditions of
|
|
67
|
+
this License, each Contributor hereby grants to You a perpetual,
|
|
68
|
+
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
|
69
|
+
copyright license to reproduce, prepare Derivative Works of,
|
|
70
|
+
publicly display, publicly perform, sublicense, and distribute the
|
|
71
|
+
Work and such Derivative Works in Source or Object form.
|
|
72
|
+
|
|
73
|
+
3. Grant of Patent License. Subject to the terms and conditions of
|
|
74
|
+
this License, each Contributor hereby grants to You a perpetual,
|
|
75
|
+
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
|
76
|
+
(except as stated in this section) patent license to make, have made,
|
|
77
|
+
use, offer to sell, sell, import, and otherwise transfer the Work,
|
|
78
|
+
where such license applies only to those patent claims licensable
|
|
79
|
+
by such Contributor that are necessarily infringed by their
|
|
80
|
+
Contribution(s) alone or by combination of their Contribution(s)
|
|
81
|
+
with the Work to which such Contribution(s) was submitted. If You
|
|
82
|
+
institute patent litigation against any entity (including a
|
|
83
|
+
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
|
84
|
+
or a Contribution incorporated within the Work constitutes direct
|
|
85
|
+
or contributory patent infringement, then any patent licenses
|
|
86
|
+
granted to You under this License for that Work shall terminate
|
|
87
|
+
as of the date such litigation is filed.
|
|
88
|
+
|
|
89
|
+
4. Redistribution. You may reproduce and distribute copies of the
|
|
90
|
+
Work or Derivative Works thereof in any medium, with or without
|
|
91
|
+
modifications, and in Source or Object form, provided that You
|
|
92
|
+
meet the following conditions:
|
|
93
|
+
|
|
94
|
+
(a) You must give any other recipients of the Work or
|
|
95
|
+
Derivative Works a copy of this License; and
|
|
96
|
+
|
|
97
|
+
(b) You must cause any modified files to carry prominent notices
|
|
98
|
+
stating that You changed the files; and
|
|
99
|
+
|
|
100
|
+
(c) You must retain, in the Source form of any Derivative Works
|
|
101
|
+
that You distribute, all copyright, patent, trademark, and
|
|
102
|
+
attribution notices from the Source form of the Work,
|
|
103
|
+
excluding those notices that do not pertain to any part of
|
|
104
|
+
the Derivative Works; and
|
|
105
|
+
|
|
106
|
+
(d) If the Work includes a "NOTICE" text file as part of its
|
|
107
|
+
distribution, then any Derivative Works that You distribute must
|
|
108
|
+
include a readable copy of the attribution notices contained
|
|
109
|
+
within such NOTICE file, excluding those notices that do not
|
|
110
|
+
pertain to any part of the Derivative Works, in at least one
|
|
111
|
+
of the following places: within a NOTICE text file distributed
|
|
112
|
+
as part of the Derivative Works; within the Source form or
|
|
113
|
+
documentation, if provided along with the Derivative Works; or,
|
|
114
|
+
within a display generated by the Derivative Works, if and
|
|
115
|
+
wherever such third-party notices normally appear. The contents
|
|
116
|
+
of the NOTICE file are for informational purposes only and
|
|
117
|
+
do not modify the License. You may add Your own attribution
|
|
118
|
+
notices within Derivative Works that You distribute, alongside
|
|
119
|
+
or as an addendum to the NOTICE text from the Work, provided
|
|
120
|
+
that such additional attribution notices cannot be construed
|
|
121
|
+
as modifying the License.
|
|
122
|
+
|
|
123
|
+
You may add Your own copyright statement to Your modifications and
|
|
124
|
+
may provide additional or different license terms and conditions
|
|
125
|
+
for use, reproduction, or distribution of Your modifications, or
|
|
126
|
+
for any such Derivative Works as a whole, provided Your use,
|
|
127
|
+
reproduction, and distribution of the Work otherwise complies with
|
|
128
|
+
the conditions stated in this License.
|
|
129
|
+
|
|
130
|
+
5. Submission of Contributions. Unless You explicitly state otherwise,
|
|
131
|
+
any Contribution intentionally submitted for inclusion in the Work
|
|
132
|
+
by You to the Licensor shall be under the terms and conditions of
|
|
133
|
+
this License, without any additional terms or conditions.
|
|
134
|
+
Notwithstanding the above, nothing herein shall supersede or modify
|
|
135
|
+
the terms of any separate license agreement you may have executed
|
|
136
|
+
with Licensor regarding such Contributions.
|
|
137
|
+
|
|
138
|
+
6. Trademarks. This License does not grant permission to use the trade
|
|
139
|
+
names, trademarks, service marks, or product names of the Licensor,
|
|
140
|
+
except as required for reasonable and customary use in describing the
|
|
141
|
+
origin of the Work and reproducing the content of the NOTICE file.
|
|
142
|
+
|
|
143
|
+
7. Disclaimer of Warranty. Unless required by applicable law or
|
|
144
|
+
agreed to in writing, Licensor provides the Work (and each
|
|
145
|
+
Contributor provides its Contributions) on an "AS IS" BASIS,
|
|
146
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
|
147
|
+
implied, including, without limitation, any warranties or conditions
|
|
148
|
+
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
|
149
|
+
PARTICULAR PURPOSE. You are solely responsible for determining the
|
|
150
|
+
appropriateness of using or redistributing the Work and assume any
|
|
151
|
+
risks associated with Your exercise of permissions under this License.
|
|
152
|
+
|
|
153
|
+
8. Limitation of Liability. In no event and under no legal theory,
|
|
154
|
+
whether in tort (including negligence), contract, or otherwise,
|
|
155
|
+
unless required by applicable law (such as deliberate and grossly
|
|
156
|
+
negligent acts) or agreed to in writing, shall any Contributor be
|
|
157
|
+
liable to You for damages, including any direct, indirect, special,
|
|
158
|
+
incidental, or consequential damages of any character arising as a
|
|
159
|
+
result of this License or out of the use or inability to use the
|
|
160
|
+
Work (including but not limited to damages for loss of goodwill,
|
|
161
|
+
work stoppage, computer failure or malfunction, or any and all
|
|
162
|
+
other commercial damages or losses), even if such Contributor
|
|
163
|
+
has been advised of the possibility of such damages.
|
|
164
|
+
|
|
165
|
+
9. Accepting Warranty or Additional Liability. While redistributing
|
|
166
|
+
the Work or Derivative Works thereof, You may choose to offer,
|
|
167
|
+
and charge a fee for, acceptance of support, warranty, indemnity,
|
|
168
|
+
or other liability obligations and/or rights consistent with this
|
|
169
|
+
License. However, in accepting such obligations, You may act only
|
|
170
|
+
on Your own behalf and on Your sole responsibility, not on behalf
|
|
171
|
+
of any other Contributor, and only if You agree to indemnify,
|
|
172
|
+
defend, and hold each Contributor harmless for any liability
|
|
173
|
+
incurred by, or claims asserted against, such Contributor by reason
|
|
174
|
+
of your accepting any such warranty or additional liability.
|
|
175
|
+
|
|
176
|
+
END OF TERMS AND CONDITIONS
|
|
177
|
+
|
|
178
|
+
APPENDIX: How to apply the Apache License to your work.
|
|
179
|
+
|
|
180
|
+
To apply the Apache License to your work, attach the following
|
|
181
|
+
boilerplate notice, with the fields enclosed by brackets "[]"
|
|
182
|
+
replaced with your own identifying information. (Don't include
|
|
183
|
+
the brackets!) The text should be enclosed in the appropriate
|
|
184
|
+
comment syntax for the file format. We also recommend that a
|
|
185
|
+
file or class name and description of purpose be included on the
|
|
186
|
+
same "printed page" as the copyright notice for easier
|
|
187
|
+
identification within third-party archives.
|
|
188
|
+
|
|
189
|
+
Copyright 2024 Jacky Liang
|
|
190
|
+
|
|
191
|
+
Licensed under the Apache License, Version 2.0 (the "License");
|
|
192
|
+
you may not use this file except in compliance with the License.
|
|
193
|
+
You may obtain a copy of the License at
|
|
194
|
+
|
|
195
|
+
http://www.apache.org/licenses/LICENSE-2.0
|
|
196
|
+
|
|
197
|
+
Unless required by applicable law or agreed to in writing, software
|
|
198
|
+
distributed under the License is distributed on an "AS IS" BASIS,
|
|
199
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
200
|
+
See the License for the specific language governing permissions and
|
|
201
|
+
limitations under the License.
|
package/README.md
CHANGED
|
@@ -1,26 +1,25 @@
|
|
|
1
1
|
ADT Pulse for Homebridge
|
|
2
2
|
=========================
|
|
3
3
|
|
|
4
|
-
[](https://www.npmjs.com/package/homebridge-adt-pulse)
|
|
5
|
+
[](https://www.npmjs.com/package/homebridge-adt-pulse)
|
|
6
|
+
[](https://github.com/mrjackyliang/homebridge-adt-pulse/blob/main/LICENSE)
|
|
7
|
+
[](https://github.com/sponsors/mrjackyliang)
|
|
8
|
+
[](https://liang.nyc/paypal)
|
|
8
9
|
|
|
9
|
-
This is a [verified Homebridge plugin](https://github.com/homebridge/homebridge/wiki/verified-Plugins#verified-plugins) for ADT Pulse
|
|
10
|
+
This is a [verified Homebridge plugin](https://github.com/homebridge/homebridge/wiki/verified-Plugins#verified-plugins) for ADT Pulse customers that allow homeowners to control their security system and view sensor status through the Home app (the HAP protocol).
|
|
10
11
|
|
|
11
|
-
|
|
12
|
-
### This plugin is completely re-written from the ground up, and I need everyone on board! Please install the pre-release version, so I can quickly get a faster and more stable version to you!
|
|
13
|
-
### Everything is still very sloppy, please bear with me, even the readme has to be re-written.
|
|
12
|
+
The API relies on the ADT Pulse Web Portal (powered by Icontrol One, owned by ICN Acquisition LLC, an indirect subsidiary of [Alarm.com](https://alarm.com))
|
|
14
13
|
|
|
15
14
|
To use this plugin, here are three simple steps you need to follow:
|
|
16
|
-
1. Run `npm install homebridge-adt-pulse
|
|
17
|
-
2. Configure
|
|
18
|
-
3. Restart Homebridge
|
|
15
|
+
1. Run `npm install homebridge-adt-pulse`.
|
|
16
|
+
2. Configure this plugin using this [sample](#configuration) for guidance.
|
|
17
|
+
3. Restart Homebridge and see magic happen!
|
|
19
18
|
|
|
20
|
-
|
|
19
|
+
Another option is to search for `adt-pulse` using Onzu's [Homebridge Config UI](https://github.com/oznu/homebridge-config-ui-x). Afterward, you can proceed to configure this plugin through the configuration UI available in the "Plugins" tab.
|
|
21
20
|
|
|
22
21
|
## Configuration
|
|
23
|
-
|
|
22
|
+
Here is an example of how the `config.json` file for this plugin should be configured:
|
|
24
23
|
```json
|
|
25
24
|
{
|
|
26
25
|
"platforms": [
|
|
@@ -35,10 +34,10 @@ When configuring this plugin, simply add the platform to your existing `config.j
|
|
|
35
34
|
"speed": 1,
|
|
36
35
|
"sensors": [
|
|
37
36
|
{
|
|
38
|
-
"name": "
|
|
39
|
-
"adtName": "
|
|
40
|
-
"adtType": "
|
|
41
|
-
"adtZone":
|
|
37
|
+
"name": "Family Room Couch Window 1",
|
|
38
|
+
"adtName": "Family Room Window (99)",
|
|
39
|
+
"adtType": "doorWindow",
|
|
40
|
+
"adtZone": 99
|
|
42
41
|
}
|
|
43
42
|
]
|
|
44
43
|
},
|
|
@@ -49,131 +48,194 @@ When configuring this plugin, simply add the platform to your existing `config.j
|
|
|
49
48
|
]
|
|
50
49
|
}
|
|
51
50
|
```
|
|
51
|
+
Ensure that you customize the values of `subdomain`, `username`, `password`, `fingerprint`, and `sensors` to match your specific setup. If you encounter any queries regarding the configuration, refer to the details provided below this section.
|
|
52
52
|
|
|
53
|
-
##
|
|
54
|
-
|
|
53
|
+
## Supported Devices
|
|
54
|
+
While named "ADT Pulse for Homebridge," this Homebridge plugin exclusively accommodates only the sensors listed below. It is important to note that this plugin does not serve as a comprehensive substitute for the [official ADT Pulse app](https://www.adt.com/help/faq/adt-pulse/adt-pulse-mobile-app).
|
|
55
55
|
|
|
56
|
-
|
|
57
|
-
1. ADT
|
|
58
|
-
2.
|
|
59
|
-
3. ADT Glass Break Detectors (`glass`)
|
|
60
|
-
4. ADT Motion Sensors (`motion`)
|
|
61
|
-
5. ADT Carbon Monoxide Detector (`co`)
|
|
62
|
-
6. ADT Fire (Smoke/Heat) Detector (`fire`)
|
|
56
|
+
This plugin will expose these devices by default:
|
|
57
|
+
1. ADT Pulse Gateway (`gateway`)
|
|
58
|
+
2. Security Panel (`panel`)
|
|
63
59
|
|
|
64
|
-
|
|
60
|
+
This plugin can expose these devices (in read-only mode) based on your configuration:
|
|
61
|
+
1. `co` - Carbon Monoxide Detector
|
|
62
|
+
2. `doorWindow` - Door/Window Sensor __::__ Door Sensor __::__ Window Sensor
|
|
63
|
+
3. `fire` - Fire (Smoke/Heat) Detector
|
|
64
|
+
4. `flood` - Water/Flood Sensor
|
|
65
|
+
5. `glass` - Glass Break Detector
|
|
66
|
+
6. `heat` - Heat (Rate-of-Rise) Detector
|
|
67
|
+
7. `motion` - Motion Sensor __::__ Motion Sensor (Notable Events Only)
|
|
68
|
+
8. `shock` - Shock Sensor
|
|
69
|
+
9. `supervisory` - System/Supervisory
|
|
70
|
+
10. `temperature` - Temperature Sensor
|
|
65
71
|
|
|
66
|
-
Due to
|
|
72
|
+
Due to implementation complexity and platform instability, all Z-Wave accessories connected to the ADT Pulse gateway will not be planned for development or be supported overall. Consider purchasing the [Hubitat Hub](https://hubitat.com) for a seamless setup experience, or read about the [Home Assistant Z-Wave](https://www.home-assistant.io/integrations/zwave_js/) integration.
|
|
67
73
|
|
|
68
|
-
##
|
|
69
|
-
|
|
74
|
+
## Specifying the Portal Region
|
|
75
|
+
ADT Pulse is available to consumers in either the United States or Canada. To specify your country, use the following settings:
|
|
70
76
|
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
3. Click on the **Network** tab (make sure **Preserve log** checkbox is checked)
|
|
74
|
-
4. In the filter box, enter `signin.jsp?networkid=`
|
|
75
|
-
5. Go to `https://portal.adtpulse.com` or `https://portal-ca.adtpulse.com` and login to your account
|
|
76
|
-
6. Click **Request Code**, type in the requested code, and then click **Submit Code**
|
|
77
|
-
7. Click **Trust this device** and name the device `Homebridge`
|
|
78
|
-
8. Click **Save and Continue**
|
|
79
|
-
9. Click **Sign Out** in the top right corner of the webpage
|
|
80
|
-
10. Login to your account (once again)
|
|
81
|
-
11. Click on the network call (beginning with `signin.jsp?networkid=`) appearing in the DevTools window. Select the last one.
|
|
82
|
-
12. In the **Payload** tab, under **Form Data**, copy the entire **fingerprint** (after `fingerprint:`, do not include spaces)
|
|
83
|
-
13. Paste the copied text into the `fingerprint` field into your `config.json`
|
|
84
|
-
14. Close the Chrome window (DO NOT sign out)
|
|
77
|
+
- If you are a United States customer, set the `subdomain` value to `"portal"`.
|
|
78
|
+
- If you are a Canada customer, set the `subdomain` value to `"portal-ca"`.
|
|
85
79
|
|
|
86
|
-
|
|
87
|
-
Due to the nature of how HomeKit and ADT Pulse processes `setDeviceStatus` commands, this plugin will force arm when it detects active motion or open sensors.
|
|
80
|
+
Select the appropriate setting based on your country, as the ability to switch between countries is determined by the ADT region you are subscribed to.
|
|
88
81
|
|
|
89
|
-
|
|
82
|
+
## Finding the Device Fingerprint
|
|
83
|
+
Since the introduction of 2-factor authentication, a device fingerprint has become a necessity during login. To retrieve the fingerprint, follow these steps:
|
|
90
84
|
|
|
91
|
-
|
|
85
|
+
1. Log in to the ADT Pulse portal, complete the MFA challenge, and choose to "Trust this device" (you can name the device as you see fit).
|
|
86
|
+
2. Using the same browser that was used for login, visit the [ADT Pulse Device Fingerprint Detector](https://raw.githack.com/mrjackyliang/homebridge-adt-pulse/main/fingerprint/index.html) web page.
|
|
87
|
+
3. Click the "Copy Fingerprint" button and paste it into the `fingerprint` value in the `config.json` file.
|
|
92
88
|
|
|
93
|
-
|
|
94
|
-
2. Tap the Status Details (listed in the Home tab _below_ the title)
|
|
95
|
-
3. View the __ATTENTION__ area of your home
|
|
89
|
+
For a detailed breakdown of the device fingerprint contents, explore the "Device Details" tab located at the top right of the web page.
|
|
96
90
|
|
|
97
|
-
##
|
|
98
|
-
|
|
91
|
+
## Specifying the Operational Mode
|
|
92
|
+
This plugin offers three operational modes: "Normal", "Paused", and "Reset". To configure these modes, use the following settings:
|
|
93
|
+
|
|
94
|
+
- For regular operation, set the `mode` value to `"normal"`.
|
|
95
|
+
- To pause the plugin (all devices will become non-responsive), set the `mode` value to `"paused"`.
|
|
96
|
+
- To reset the plugin (remove associated accessories), set the `mode` value to `"reset"`.
|
|
97
|
+
|
|
98
|
+
It is crucial to note that if you set the plugin to "Reset" mode, the plugin will initiate a countdown with warnings, and __you have approximately 30 seconds to reverse the setting and restart Homebridge before all accessories related to this plugin are removed__.
|
|
99
|
+
|
|
100
|
+
This precautionary measure is in place to avoid unintended resets that could lead to the time-consuming task of reconfiguring automations and accessories.
|
|
101
|
+
|
|
102
|
+
## Specifying the Synchronization Speed
|
|
103
|
+
Typically, the plugin triggers every second to assess whether sync check signals or keep-alive signals should be dispatched.
|
|
104
|
+
|
|
105
|
+
However, for certain consumer routers, this plugin may induce a network slowdown, and on older devices incompatible with newer OpenSSL versions (`v3.1`), may result in sustained 100% CPU usage. In an attempt to address both issues, adjust the firing interval using the following settings:
|
|
106
|
+
|
|
107
|
+
- For "Normal" operation speed, set the `speed` value to `1`.
|
|
108
|
+
- For "Moderate" operation speed, set the `speed` value to `0.75`.
|
|
109
|
+
- For "Slower" operation speed, set the `speed` value to `0.5`.
|
|
110
|
+
- For "Slowest" operation speed, set the `speed` value to `0.25`.
|
|
111
|
+
|
|
112
|
+
If the plugin does not operate under "Normal" mode, a warning will be issued on every startup, and this warning cannot be disabled.
|
|
113
|
+
|
|
114
|
+
## Specifying the Sensors
|
|
115
|
+
In the past, this plugin would automatically detect sensors and dynamically manage their addition and removal based on its observations.
|
|
116
|
+
|
|
117
|
+
However, this approach posed challenges. If the plugin failed to detect sensors or encountered portal irregularities, it could unintentionally remove all sensors, resulting in an inadvertent reset.
|
|
99
118
|
|
|
100
|
-
|
|
119
|
+
While a setting was introduced (prior to `v3.0.0`) to prevent the removal of obsolete zones, over time, it felt more like a workaround than a solution.
|
|
101
120
|
|
|
102
|
-
|
|
103
|
-
Due to ADT Pulse portal limitations, sensors may be inaccurately detected. Use this setting to manually override default detection features. _Optional._
|
|
121
|
+
In this updated version of the plugin, I have implemented a new requirement that users must explicitly specify each sensor they wish to integrate into Homebridge.
|
|
104
122
|
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
123
|
+
All sensors are now organized within an array of objects, with each object containing the following settings:
|
|
124
|
+
- __Name__ (`name`)
|
|
125
|
+
- For display purposes (offers clarity in the event of an unforeseen reset).
|
|
126
|
+
- __ADT Name__ (`adtName`)
|
|
127
|
+
- Must match the name shown under the "Name" column in the "System" tab when logged into the portal.
|
|
128
|
+
- __ADT Type__ (`adtType`)
|
|
129
|
+
- Must match the type shown under the "Device Type" column in the "System" tab when logged into the portal.
|
|
130
|
+
- Contingent to the devices shown under the [Supported Devices](#supported-devices) section.
|
|
131
|
+
- __ADT Zone__ (`adtZone`)
|
|
132
|
+
- Must match the zone shown under the "Zone" column in the "System" tab when logged into the portal.
|
|
108
133
|
|
|
109
|
-
|
|
134
|
+
If you do not find the supported type listed, please note that the plugin will notify me. There's no need to create a separate issue on GitHub, as I am actively working on adding support as soon as I gather sufficient information to determine the statuses displayed on the portal.
|
|
110
135
|
|
|
111
|
-
|
|
112
|
-
ADT Pulse is available both in the United States and Canada. Use this setting to toggle which country you will be using the plugin in. _Optional._
|
|
136
|
+
Your patience is appreciated as I address and incorporate the necessary updates.
|
|
113
137
|
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
* Set `country` to `ca` for Canada
|
|
138
|
+
## Force Arming (Arm Away / Arm Stay / Arm Night)
|
|
139
|
+
Due to the way how the Home app (the HAP protocol) establishes arm states, the plugin will force arm upon detecting active motion or open sensors. Disabling this feature is not possible, as this will result in arming failures without alert notifications.
|
|
117
140
|
|
|
118
|
-
|
|
141
|
+
If you are concerned about this, please read the instructions below to check the status of the sensors in your home before arming your system:
|
|
119
142
|
|
|
120
|
-
|
|
121
|
-
|
|
143
|
+
1. Open the Home app
|
|
144
|
+
2. Tap the dotted circle (`...`) (located on the top right of the screen)
|
|
145
|
+
3. View the sensors that require attention and resolve those issues
|
|
146
|
+
|
|
147
|
+
If you are using automation, __you acknowledge that this will happen__ and accept the risks for the system not completely arming the system.
|
|
122
148
|
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
* Set `logLevel` to `20` for warnings (and the above)
|
|
126
|
-
* Set `logLevel` to `30` for info (and the above)
|
|
127
|
-
* Set `logLevel` to `40` for debugging (and the above)
|
|
128
|
-
* Set `logLevel` to `50` for verbose (and the above)
|
|
149
|
+
## Arm Night Support
|
|
150
|
+
As for ADT Pulse systems, __Arm Night__ is only available for use through the panel itself. Although it is not visible on the Web Portal or the mobile app, you can still place your system in __Arm Night__ mode with this plugin.
|
|
129
151
|
|
|
130
|
-
|
|
152
|
+
__Note:__ A workaround has been implemented to address portal issues preventing the completion of the "Arm Night" action. If you encounter warnings related to this, you can safely disregard them.
|
|
131
153
|
|
|
132
|
-
|
|
154
|
+
## Debug Mode
|
|
155
|
+
Previously, there was a setting to allow users to switch the plugin to debug mode. Over time, it became apparent that this setting made resolving issues excessively challenging.
|
|
133
156
|
|
|
134
|
-
|
|
135
|
-
While the plugin is running, it has the ability to record alarm and sensor activity from the ADT Pulse portal to the Homebridge logs. _Optional._
|
|
157
|
+
Consumers would enable debug mode, but forget to also enable Homebridge debug mode, causing contributors to not be able to effectively resolve bug reports.
|
|
136
158
|
|
|
137
|
-
|
|
138
|
-
* Set `logActivity` to `true` for active mode
|
|
139
|
-
* Set `logActivity` to `false` for passive mode
|
|
159
|
+
To improve this, debug mode is now activated __ONLY when debug mode is enabled on Homebridge__ itself. This approach promotes isolation (logs can be separated for each bridge) and helps enhance the troubleshooting experience in case any issues arise.
|
|
140
160
|
|
|
141
|
-
|
|
161
|
+
## Temperature Sensors in HAP Protocol
|
|
162
|
+
The Temperature Sensor (`temperature`) functions differently compared to standard contact sensors when it comes to processing sensor statuses.
|
|
142
163
|
|
|
143
|
-
|
|
144
|
-
|
|
164
|
+
In contrast to typical contact sensors that convey open or closed status, the temperature sensor exposed in the Home app (utilizing the HAP protocol) operates with temperature values. To accommodate this difference, the accessory converts these binary states into corresponding temperature degrees:
|
|
165
|
+
- Normal temperatures are represented as __0°C__.
|
|
166
|
+
- Abnormal temperatures are represented as __100°C__.
|
|
145
167
|
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
* Set `removeObsoleteZones` to `false` for notification mode
|
|
168
|
+
## Support for HOOBS
|
|
169
|
+
Please note that HOOBS may use an outdated configuration UI. This issue that was reported by me, remains unresolved by the HOOBS team. For additional details, refer to this [GitHub issue](https://github.com/hoobs-org/HOOBS/issues/1873).
|
|
149
170
|
|
|
150
|
-
|
|
171
|
+
In the interim, HOOBS users should manually configure the plugin using the [sample configuration](#configuration) provided above. For those technically inclined, consider replacing the HOOBS software with [Homebridge](https://github.com/homebridge/homebridge/wiki).
|
|
151
172
|
|
|
152
|
-
|
|
153
|
-
The plugin may continuously ping the ADT Pulse servers, even when authentication fails, which will cause your IP to be temporarily banned. This will pause the plugin without you breaking other plugins. _Optional._
|
|
173
|
+
__Note:__ Based on user complaints on [Reddit](https://www.reddit.com/r/HOOBS/), it appears that HOOBS developers have stopped working on the product. Support will be offered on a "best effort" basis, and the official status will be pulled.
|
|
154
174
|
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
* Set `pausePlugin` to `false` for normal mode
|
|
175
|
+
## Accidental Removal of Stale Accessories
|
|
176
|
+
While not mandatory, it's highly advisable to take precautions in case of unexpected events, such as a plugin failing to initialize that leads to Homebridge automatically removing all outdated accessories, potentially disrupting automations and customizations.
|
|
158
177
|
|
|
159
|
-
|
|
178
|
+
To safeguard against such scenarios, consider the following options:
|
|
179
|
+
- Enable the **Keep Accessories Of Disabled/Uninstalled Platform Plugins** setting in Homebridge.
|
|
180
|
+
- Or add the `-K` or `--keep-orphans` option when running via commands.
|
|
181
|
+
- Create a backup using the [Home+](https://hochgatterer.me/home+/) app by Matthias Hochgatterer after making changes.
|
|
160
182
|
|
|
161
|
-
##
|
|
162
|
-
|
|
183
|
+
## Documentation, Logging, and Detection
|
|
184
|
+
This function comes with a built-in feature to notify me if the plugin detects anomalies in the states of sensors and panel statuses. In the event of such occurrences, especially when these statuses are undocumented, I will receive notifications.
|
|
163
185
|
|
|
164
|
-
|
|
165
|
-
* Set `resetAll` to `true` for reset mode
|
|
166
|
-
* Set `resetAll` to `false` for normal mode
|
|
186
|
+
__Be assured that this plugin strictly adheres to the [verified Homebridge plugin](https://github.com/homebridge/homebridge/wiki/verified-Plugins#verified-plugins) requirements, ensuring that it does not track users in any manner.__
|
|
167
187
|
|
|
168
|
-
|
|
188
|
+
If the information sent includes personally identifiable details, such as IP addresses, MAC addresses, or serial numbers, those fields will be automatically redacted (replaced with `*** REDACTED FOR PRIVACY ***`) since they are unwanted information needed to improve the plugin.
|
|
169
189
|
|
|
170
|
-
|
|
171
|
-
The script provides an active connection to the ADT Pulse portal. Here is a list of must-knows, just in case you might want to debug (or improve) the plugin:
|
|
190
|
+
To reinforce this, a warning will be issued each time you utilize the included scripts, start the plugin, or when the plugin is about to notify me, serving as a reminder of these privacy measures.
|
|
172
191
|
|
|
173
|
-
|
|
174
|
-
|
|
192
|
+
Here is an example of the information I see when the plugin detects unknown statuses from the gateway:
|
|
193
|
+
```json
|
|
194
|
+
{
|
|
195
|
+
"communication": {
|
|
196
|
+
"broadbandConnectionStatus": "Unavailable",
|
|
197
|
+
"cellularConnectionStatus": "N/A",
|
|
198
|
+
"cellularSignalStrength": "N/A",
|
|
199
|
+
"primaryConnectionType": "Broadband"
|
|
200
|
+
},
|
|
201
|
+
"manufacturer": "ADT Pulse Gateway",
|
|
202
|
+
"model": "XYZ",
|
|
203
|
+
"network": {
|
|
204
|
+
"broadband": {
|
|
205
|
+
"ip": "*** REDACTED FOR PRIVACY ***",
|
|
206
|
+
"mac": "*** REDACTED FOR PRIVACY ***"
|
|
207
|
+
},
|
|
208
|
+
"device": {
|
|
209
|
+
"ip": "*** REDACTED FOR PRIVACY ***",
|
|
210
|
+
"mac": "*** REDACTED FOR PRIVACY ***"
|
|
211
|
+
},
|
|
212
|
+
"router": {
|
|
213
|
+
"lanIp": "*** REDACTED FOR PRIVACY ***",
|
|
214
|
+
"wanIp": "*** REDACTED FOR PRIVACY ***"
|
|
215
|
+
}
|
|
216
|
+
},
|
|
217
|
+
"serialNumber": "*** REDACTED FOR PRIVACY ***",
|
|
218
|
+
"status": "Online",
|
|
219
|
+
"update": {
|
|
220
|
+
"last": "Yesterday 12:00 PM",
|
|
221
|
+
"next": "Today 12:00 PM"
|
|
222
|
+
},
|
|
223
|
+
"versions": {
|
|
224
|
+
"firmware": "1.0.0",
|
|
225
|
+
"hardware": "1.0.0"
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
```
|
|
229
|
+
__Notice:__ If you prefer to prevent this functionality, you can block the URL that the plugin utilizes to notify me. However, it is essential to note that I will not be able to offer assistance or support if you choose to impede the plugin from fulfilling its purpose to the best of its capabilities.
|
|
175
230
|
|
|
176
231
|
## Credits and Appreciation
|
|
177
|
-
If you
|
|
232
|
+
If you find value in the ongoing development of this plugin and wish to express your appreciation, you have the option to become my supporter on [GitHub Sponsors](https://github.com/sponsors/mrjackyliang)!
|
|
233
|
+
|
|
234
|
+
Moreover, I extend a special acknowledgment and heartfelt gratitude to the following individuals:
|
|
235
|
+
- [@kevinmhickey](https://github.com/kevinmhickey) - For the inspiration to build a better script used in `v1.0.0` through `v2.2.0`.
|
|
236
|
+
- [@Danimal4326](https://github.com/Danimal4326) - For successfully identifying the solution for ADT Pulse's 2-factor authentication and for contributions toward the successful development of `v3.0.0`.
|
|
237
|
+
- [@sapireli](https://github.com/sapireli) - For contributions toward the successful development of `v3.0.0`.
|
|
238
|
+
- [@hapinstance](https://github.com/hapinstance) - For contributions toward the successful development of `v3.0.0`.
|
|
239
|
+
- [@thcooley](https://github.com/thcooley) - For contributions toward the successful development of `v3.0.0`.
|
|
178
240
|
|
|
179
|
-
|
|
241
|
+
Their contributions and time spent have significantly enhanced the functionality and reliability of this plugin.
|