mirror of
https://github.com/Koenkk/zigbee2mqtt.git
synced 2026-08-29 15:18:41 +00:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
03a0966528 | ||
|
|
f0a00ad580 | ||
|
|
2fd44b6776 | ||
|
|
e25d30ffe7 | ||
|
|
6d7c40de77 | ||
|
|
eeafbcf593 | ||
|
|
39328222f2 | ||
|
|
c8fe986927 | ||
|
|
a4b14a1238 | ||
|
|
61da16ef4d | ||
|
|
e58cf262fb | ||
|
|
47b2b63f8d | ||
|
|
d72b6cf1e2 | ||
|
|
828fb6b70f | ||
|
|
5498eb2b51 | ||
|
|
dc4f780c6e | ||
|
|
63d4b4a8ac | ||
|
|
8315e5dfd9 | ||
|
|
76bc864311 | ||
|
|
bd1ac17b97 | ||
|
|
87fd958507 | ||
|
|
80290f6452 | ||
|
|
bf7d5e2ab2 | ||
|
|
c5abd4584c | ||
|
|
af71b37591 | ||
|
|
ee489e846f | ||
|
|
a511770677 | ||
|
|
2157f53c49 | ||
|
|
db717f6f7d | ||
|
|
990b2e5721 | ||
|
|
70cf72350f | ||
|
|
63b4e7f7a3 | ||
|
|
acadfb2b3f | ||
|
|
77948bfc94 | ||
|
|
c964536071 | ||
|
|
7e0cdd1827 | ||
|
|
67f129489f | ||
|
|
26105ec6a5 | ||
|
|
0bde66abc6 | ||
|
|
65b7410b4b | ||
|
|
ea4cda3f52 | ||
|
|
236bbae62c | ||
|
|
50fcab5b4f | ||
|
|
e4dc92fd21 | ||
|
|
7968198ad3 | ||
|
|
806022ef65 | ||
|
|
c8351c2654 | ||
|
|
5617643690 | ||
|
|
34be9016d5 | ||
|
|
5f633506d3 | ||
|
|
793eb0bd31 | ||
|
|
172299ee3e | ||
|
|
43c73e91ff | ||
|
|
8293a8944c | ||
|
|
828a39ea07 | ||
|
|
f8510b42ab | ||
|
|
87d411ff23 | ||
|
|
bc4884fde3 | ||
|
|
e34671deab | ||
|
|
e1c19d47f3 | ||
|
|
04f77fd537 | ||
|
|
ca2302dc04 | ||
|
|
a34031d65b | ||
|
|
144cfcfac8 | ||
|
|
d4c742303a | ||
|
|
b9c9e0be85 | ||
|
|
16a4a810cd | ||
|
|
94d07acf03 | ||
|
|
38d1cfd5ac | ||
|
|
8b51679981 | ||
|
|
9e7984d504 | ||
|
|
df8dbaab7f | ||
|
|
aea91a27c3 | ||
|
|
38412501de | ||
|
|
c5a184f107 | ||
|
|
b9626ade8b | ||
|
|
c4ad959564 | ||
|
|
8f0313cb8f | ||
|
|
a3a41ba560 | ||
|
|
fa70444e82 | ||
|
|
d7a0829881 | ||
|
|
bc86c64639 | ||
|
|
78fb5f32db | ||
|
|
4010a1f8f1 | ||
|
|
8cfbeef775 | ||
|
|
342031366c | ||
|
|
b22b1fb200 | ||
|
|
c95de22d5b | ||
|
|
c11b3505ef | ||
|
|
2c7c727316 | ||
|
|
faa7a8bcb2 | ||
|
|
12f3b3d621 | ||
|
|
a7993f23a6 | ||
|
|
5dcd5a94b2 | ||
|
|
366efe196c | ||
|
|
44b20937eb | ||
|
|
8b4f32618b | ||
|
|
807974afa0 | ||
|
|
51231b9397 | ||
|
|
df3866aff4 | ||
|
|
e6f3d348fe | ||
|
|
c318e62636 | ||
|
|
96d7e91439 | ||
|
|
e8990c1bbb | ||
|
|
5eeed1bc6e | ||
|
|
db33961a25 | ||
|
|
a464dcfea3 | ||
|
|
45ec158d4d | ||
|
|
b85af0a771 | ||
|
|
922cc90521 | ||
|
|
a7979ce14e | ||
|
|
5122559c35 | ||
|
|
bd1f9fb098 | ||
|
|
d441b03073 | ||
|
|
13555819b8 | ||
|
|
3a8e47a06c | ||
|
|
6c8d1b8c2a | ||
|
|
bf23ee6e70 | ||
|
|
0384a134aa | ||
|
|
f7dd995fc1 | ||
|
|
ab6f7b7f86 | ||
|
|
e1dbd7d036 | ||
|
|
1c4cb6b1b6 | ||
|
|
b586f9fc0f | ||
|
|
8a263fc213 | ||
|
|
f81b2fa286 | ||
|
|
89228e7250 | ||
|
|
cbc9e8d948 | ||
|
|
21bb4186f1 | ||
|
|
959440055f | ||
|
|
de01e26a37 | ||
|
|
cda68c281f | ||
|
|
a748507aae | ||
|
|
6037563712 | ||
|
|
7ce933384c | ||
|
|
dfff9f6bea | ||
|
|
1c05883e0b | ||
|
|
d6ce05f2cb | ||
|
|
43d9726e52 | ||
|
|
9f24fcec96 | ||
|
|
8c2311bfd9 | ||
|
|
557eee9cbc | ||
|
|
c741240526 | ||
|
|
c652a64d91 | ||
|
|
e9d703d635 | ||
|
|
97c6860a34 | ||
|
|
1d0386c236 | ||
|
|
33fa818802 | ||
|
|
571caead21 | ||
|
|
d8cdfbd6b9 | ||
|
|
906996bc5b | ||
|
|
e9caf9276f | ||
|
|
a9ce5b54df | ||
|
|
b84070cde7 | ||
|
|
cea5a2bf6e | ||
|
|
3edfe80af6 | ||
|
|
b966a5642b | ||
|
|
3e31936510 | ||
|
|
10bbb1320a | ||
|
|
df5f63f786 | ||
|
|
fc56123a20 | ||
|
|
e745ab21f2 | ||
|
|
00ddd44543 | ||
|
|
4d233d2006 | ||
|
|
f9bb69ce3a | ||
|
|
aaf8191ef1 | ||
|
|
84299bc015 | ||
|
|
158b3fbb22 | ||
|
|
5f3ee38ef9 | ||
|
|
e83a758321 | ||
|
|
7990235d21 | ||
|
|
0110694375 | ||
|
|
b8c8883c01 | ||
|
|
713d57ff0f | ||
|
|
af94609b7d | ||
|
|
d796c5788b | ||
|
|
3e1a7d11a6 | ||
|
|
a2a149bbf8 | ||
|
|
c5eaac9a4b | ||
|
|
8747fc3e19 | ||
|
|
3c80793a2e | ||
|
|
45835fdd14 | ||
|
|
71c0acfb84 | ||
|
|
714a325377 | ||
|
|
b305b18d49 | ||
|
|
51d093dacf | ||
|
|
59748a1aed | ||
|
|
60befc7258 | ||
|
|
133c9f5775 | ||
|
|
b51947ef77 | ||
|
|
fe8777c1e9 | ||
|
|
74e6ffaff2 | ||
|
|
c9b5837a4a | ||
|
|
d0db680b28 | ||
|
|
1456a724e3 | ||
|
|
d308937631 | ||
|
|
1b0f14ff0d | ||
|
|
7aafa09f93 | ||
|
|
6e094d8fc0 | ||
|
|
363959f96f | ||
|
|
492d19a3f8 | ||
|
|
955d215162 | ||
|
|
ff05bfd345 | ||
|
|
c127931473 | ||
|
|
d649480881 | ||
|
|
481b569749 | ||
|
|
185d257fd3 | ||
|
|
8edf459ad8 | ||
|
|
5056ae80cd | ||
|
|
666557a8da | ||
|
|
2365d74d71 | ||
|
|
68280d00b9 | ||
|
|
421ec1c811 | ||
|
|
0670fd43be | ||
|
|
57b31c81ee | ||
|
|
30d73e3a8d | ||
|
|
3dba2c0d84 | ||
|
|
fbcfc27036 | ||
|
|
02b0fc44e2 | ||
|
|
b8a84b4604 | ||
|
|
997e961343 | ||
|
|
b977a9badf | ||
|
|
417b99c367 | ||
|
|
310a95a431 | ||
|
|
f3b8023ca8 | ||
|
|
a6ff8dc1b5 | ||
|
|
426ed8e125 | ||
|
|
2c2653e0db | ||
|
|
42314cfe2d | ||
|
|
e00d5a106d | ||
|
|
e3328b3660 | ||
|
|
40d21e4634 | ||
|
|
f5052bc411 | ||
|
|
f1a9a17bcf | ||
|
|
420a4db6f2 | ||
|
|
042b0bc5aa | ||
|
|
bbd69d96a9 | ||
|
|
c4fb905100 | ||
|
|
46741f103e | ||
|
|
7d89775e45 | ||
|
|
f62f8b7469 | ||
|
|
74d246479e | ||
|
|
546f246e35 | ||
|
|
6352481c92 | ||
|
|
980130aa2f | ||
|
|
1ebbc79913 | ||
|
|
37a9a55892 | ||
|
|
752671a228 | ||
|
|
a68de9179e | ||
|
|
8ebe5705db | ||
|
|
c824f33f63 | ||
|
|
ec65341356 | ||
|
|
870ccbe69c | ||
|
|
bdc72c40cc | ||
|
|
4566485bc2 | ||
|
|
23f2fe2c83 | ||
|
|
7968aa3bd5 | ||
|
|
6116237e17 | ||
|
|
d391bbbf07 | ||
|
|
f161eb1496 | ||
|
|
4122a972cb | ||
|
|
af63a6e5c1 | ||
|
|
37ec03f458 | ||
|
|
9a68b075ef | ||
|
|
a7828b3f34 | ||
|
|
e293ceaf59 | ||
|
|
3c90538049 | ||
|
|
ef3e2deef3 | ||
|
|
27e9cf2924 | ||
|
|
96f4acd316 | ||
|
|
a05c48615a | ||
|
|
1a6e18395a | ||
|
|
92f75387d5 | ||
|
|
6dffe4c406 | ||
|
|
5f679d2599 | ||
|
|
a8158b58eb | ||
|
|
b7a74443c5 | ||
|
|
16a424a387 | ||
|
|
4828eb6f2d | ||
|
|
5acb0150af | ||
|
|
3193b80e76 | ||
|
|
e74883a503 | ||
|
|
dcd69a2ede | ||
|
|
9783436db2 | ||
|
|
4e9281c2a8 | ||
|
|
afccea07e8 | ||
|
|
9ebb6dac6a | ||
|
|
c237b1af71 | ||
|
|
554ba562c1 | ||
|
|
984e4523b5 | ||
|
|
1f7c6ba765 | ||
|
|
ba9ea4b685 | ||
|
|
00afb66382 | ||
|
|
1a29da2413 | ||
|
|
6d0f686b96 | ||
|
|
d80898b932 | ||
|
|
da3efe1a66 | ||
|
|
bedd9e4de7 | ||
|
|
beb91a7254 | ||
|
|
cd259a4c9d | ||
|
|
398ffec4ad | ||
|
|
0cd359eb05 | ||
|
|
6255dc1734 | ||
|
|
d67d2d3058 | ||
|
|
aaac9503bb | ||
|
|
d14140238b | ||
|
|
23ee97e14f | ||
|
|
5a119a3451 | ||
|
|
7e85c083af | ||
|
|
f9643ac8e9 | ||
|
|
221cdb9017 | ||
|
|
eb8b6b9198 | ||
|
|
63dabce636 | ||
|
|
c5a7438111 | ||
|
|
751d3a50a7 | ||
|
|
31625c34c0 | ||
|
|
a86e33d640 | ||
|
|
b0b0ff031b | ||
|
|
90b7d3f3e5 | ||
|
|
3a7a3aa2eb | ||
|
|
94a629249d | ||
|
|
b25d168bc4 | ||
|
|
db8d0128c2 | ||
|
|
6179bab315 | ||
|
|
6f8c921aca | ||
|
|
cf83ece432 | ||
|
|
35891e67cb | ||
|
|
7213913cff | ||
|
|
9f1a5849a7 | ||
|
|
2a08c97208 | ||
|
|
6657c03078 | ||
|
|
e0fa35a096 | ||
|
|
5a55c8aae1 | ||
|
|
bafa20d1ce | ||
|
|
8b49159954 | ||
|
|
6acc0dd837 | ||
|
|
2b0f2cb98d | ||
|
|
f508917a4e | ||
|
|
96a3e1c781 | ||
|
|
d19056be38 | ||
|
|
939c1fe3d1 | ||
|
|
3b6aa7a981 | ||
|
|
574f90d9f8 | ||
|
|
a33888d86f | ||
|
|
ec3b908ec2 | ||
|
|
a271ab5efb | ||
|
|
a3b52c6ae5 | ||
|
|
e966b56235 | ||
|
|
ad2ac2354c | ||
|
|
7c54e2f63f | ||
|
|
0fc733cab9 | ||
|
|
7a29fb0d9e | ||
|
|
5964edb25e | ||
|
|
388dad7cf6 | ||
|
|
0eca48bf1c | ||
|
|
b26aa39428 | ||
|
|
2c6688e794 | ||
|
|
62d2146dfd | ||
|
|
d68da013e2 | ||
|
|
d06014eeb3 | ||
|
|
c9abc09f21 | ||
|
|
0729ed18aa | ||
|
|
eaf93fee7f | ||
|
|
4fbb0f8d02 | ||
|
|
cdcefbaa70 | ||
|
|
c377df9dc8 | ||
|
|
260eb96419 | ||
|
|
9f6b7e57b4 | ||
|
|
c4c43eb78b | ||
|
|
f977c25c32 | ||
|
|
dd7ed404c9 | ||
|
|
89638a79b9 | ||
|
|
6cad5a6c49 | ||
|
|
bbd6546242 | ||
|
|
20c2c12ede | ||
|
|
8dda33ee0f | ||
|
|
e5f2656098 | ||
|
|
73fce708db | ||
|
|
d657fc48b8 | ||
|
|
970ba6eba9 | ||
|
|
10f039a7df | ||
|
|
029967e096 | ||
|
|
5ade60e6d3 | ||
|
|
eb601c8d8f | ||
|
|
ec88247f36 | ||
|
|
c904a45750 | ||
|
|
39d1f95f65 | ||
|
|
642775254b | ||
|
|
983e123b87 | ||
|
|
211d637a0c | ||
|
|
4802490604 | ||
|
|
591e010392 | ||
|
|
f580266b86 | ||
|
|
e89a52e221 | ||
|
|
1b5e88f8ac | ||
|
|
761e86f10c | ||
|
|
18388717a1 | ||
|
|
32e2b534ec | ||
|
|
6fa01b10a7 | ||
|
|
b1679b9097 | ||
|
|
e4c893fcd6 | ||
|
|
c563bc386c | ||
|
|
c8e5d856a2 | ||
|
|
61b460a376 | ||
|
|
ecbf648b63 | ||
|
|
3126d5da4e | ||
|
|
0feca99c5a | ||
|
|
40f41d49a4 | ||
|
|
15f8f910d0 | ||
|
|
af44408dbb | ||
|
|
09ccd0e47f | ||
|
|
fdf3f6c18d | ||
|
|
05f1a73af6 | ||
|
|
51525422e8 | ||
|
|
d9f74e3ff3 | ||
|
|
155d3b5ef0 | ||
|
|
0308b23da5 | ||
|
|
1ee8f4bac3 | ||
|
|
ea9498659d | ||
|
|
ce6218cfc7 | ||
|
|
66e7717751 | ||
|
|
7f17909fd8 | ||
|
|
b1b7b50a6e | ||
|
|
56658f8492 | ||
|
|
dc1b8d9bd2 | ||
|
|
81ca6af7ff | ||
|
|
d25dd93262 | ||
|
|
9d040afd26 | ||
|
|
fdf4983211 | ||
|
|
d1b434eac1 | ||
|
|
37b39deadb | ||
|
|
1109d979b8 | ||
|
|
bdb6b44bea | ||
|
|
6c1a40ce8c | ||
|
|
29d76a4848 | ||
|
|
5ba6189341 | ||
|
|
8b1d07dd26 | ||
|
|
71d4ba4594 | ||
|
|
0700a4b56d | ||
|
|
143e27e56d | ||
|
|
d1a543a145 | ||
|
|
3c90c3d7bb | ||
|
|
84238187b0 | ||
|
|
bf79a825bc | ||
|
|
43c6caf744 | ||
|
|
cc877f5057 | ||
|
|
49de52fb53 | ||
|
|
ae7ea4b734 | ||
|
|
b1ff5f5405 | ||
|
|
d1c5338a1a | ||
|
|
0496e1ff93 | ||
|
|
0ce8d2a41f | ||
|
|
357389f270 | ||
|
|
0f05179586 | ||
|
|
ac3fe3ff9e | ||
|
|
f147e6a18a | ||
|
|
b7a71db800 | ||
|
|
64fa5f88f9 | ||
|
|
20b297d6e9 | ||
|
|
105176d4b7 | ||
|
|
149b4a38fc | ||
|
|
61220097f4 | ||
|
|
2f91655617 | ||
|
|
c132af6454 | ||
|
|
d4df8c22c8 | ||
|
|
7784aa45f9 | ||
|
|
05544273ab | ||
|
|
45d97b262f | ||
|
|
4c1c74faab | ||
|
|
490b662690 | ||
|
|
2eb0d3f52a | ||
|
|
67890dced6 | ||
|
|
9cff3a9f4c | ||
|
|
d0f0b1b0d9 | ||
|
|
b3feb13bc2 | ||
|
|
9135b68e12 | ||
|
|
8f037e771c | ||
|
|
af416a9d26 | ||
|
|
ab954842e3 | ||
|
|
0744b67280 | ||
|
|
ed96d85801 | ||
|
|
871142b427 | ||
|
|
9cfe41b627 | ||
|
|
8e1de2b8d4 | ||
|
|
8bc79bf9ef | ||
|
|
3cd45a7226 | ||
|
|
3a85596ef7 | ||
|
|
48fadba8ec | ||
|
|
ce64ba47ce | ||
|
|
924c602da3 | ||
|
|
110eb9abc4 | ||
|
|
6b06817470 | ||
|
|
ce49db85a7 | ||
|
|
bb855f8f94 | ||
|
|
423f2229da |
@@ -1,17 +0,0 @@
|
||||
.eslintignore
|
||||
.eslintrc.js
|
||||
.git
|
||||
.github
|
||||
.gitignore
|
||||
.idea
|
||||
.npmrc
|
||||
.travis*
|
||||
.travis.yml
|
||||
README.md
|
||||
docker/Dockerfile*
|
||||
images
|
||||
node_modules
|
||||
scripts
|
||||
test
|
||||
coverage
|
||||
update.sh
|
||||
@@ -1,2 +0,0 @@
|
||||
node_modules/*
|
||||
test/
|
||||
@@ -1,45 +0,0 @@
|
||||
|
||||
module.exports = {
|
||||
'env': {
|
||||
'jest/globals': true,
|
||||
'es6': true,
|
||||
'node': true,
|
||||
},
|
||||
'extends': ['eslint:recommended', 'google', 'plugin:jest/recommended', 'plugin:jest/style'],
|
||||
'parserOptions': {
|
||||
'ecmaVersion': 2018,
|
||||
'sourceType': 'module',
|
||||
},
|
||||
'rules': {
|
||||
'require-jsdoc': 'off',
|
||||
'indent': ['error', 4],
|
||||
'max-len': ['error', {'code': 120}],
|
||||
'no-prototype-builtins': 'off',
|
||||
},
|
||||
'plugins': [
|
||||
'jest',
|
||||
],
|
||||
'overrides': [{
|
||||
files: ['*.ts'],
|
||||
parser: '@typescript-eslint/parser',
|
||||
plugins: ['@typescript-eslint'],
|
||||
extends: ['plugin:@typescript-eslint/recommended'],
|
||||
parserOptions: {
|
||||
project: './tsconfig.json',
|
||||
},
|
||||
rules: {
|
||||
'@typescript-eslint/await-thenable': 'error',
|
||||
'@typescript-eslint/ban-ts-comment': 'off',
|
||||
'@typescript-eslint/explicit-function-return-type': 'error',
|
||||
'@typescript-eslint/no-empty-function': 'off',
|
||||
'@typescript-eslint/no-explicit-any': 'error',
|
||||
'@typescript-eslint/no-unused-vars': 'error',
|
||||
'@typescript-eslint/semi': ['error'],
|
||||
'array-bracket-spacing': ['error', 'never'],
|
||||
'indent': ['error', 4],
|
||||
'max-len': ['error', {'code': 120}],
|
||||
'no-return-await': 'error',
|
||||
'object-curly-spacing': ['error', 'never'],
|
||||
},
|
||||
}],
|
||||
};
|
||||
@@ -1,4 +0,0 @@
|
||||
github: [koenkk]
|
||||
custom:
|
||||
- https://www.paypal.me/koenkk
|
||||
- https://www.buymeacoffee.com/koenkk
|
||||
@@ -1,46 +0,0 @@
|
||||
<!--
|
||||
Before submitting an issue make sure you've searched for a similar issue and read the documentation: https://www.zigbee2mqtt.io/.
|
||||
|
||||
Rules (don't ignore these, your issue will be closed without further notice):
|
||||
- English only
|
||||
- Make sure you are on the latest Zigbee2MQTT version
|
||||
- Provide a clear description of the problem
|
||||
- DON'T copy logs directly here, post a link to https://hastebin.com/ or https://pastebin.com/.
|
||||
- Make sure you are running the latest firmware https://github.com/koenkk/z-stack-firmware.
|
||||
|
||||
Did you read the FAQ?
|
||||
- https://www.zigbee2mqtt.io/information/FAQ.html
|
||||
|
||||
Zigbee2MQTT fails to start?
|
||||
- https://www.zigbee2mqtt.io/information/FAQ.html#help-zigbee2mqtt-fails-to-start
|
||||
|
||||
Having issues when using a CC2531?
|
||||
- Make sure the CC2531 is connected through a USB extension cable
|
||||
- Try the source routing firmware: https://github.com/Koenkk/Z-Stack-firmware/tree/master/coordinator/Z-Stack_Home_1.2/bin/source_routing
|
||||
- With larger networks (30/40+) devices, your CC2531 might not be powerful enough. This will cause weird issues, in this case it's advised to use a more powerful adapter: https://www.zigbee2mqtt.io/information/supported_adapters.html#texas-instruments-cc26x2r1
|
||||
|
||||
Unsupported device?
|
||||
- https://www.zigbee2mqtt.io/how_tos/how_to_support_new_devices.html
|
||||
|
||||
Device does not pair or interview fails?
|
||||
- https://www.zigbee2mqtt.io/information/FAQ.html#why-does-my-device-not-or-fail-to-pair
|
||||
|
||||
Bug report?
|
||||
- If applicable, provide steps how to reproduce the problem.
|
||||
- Provide the herdsman debug logging: https://www.zigbee2mqtt.io/information/debug.html#zigbee-herdsman-debug-logging
|
||||
|
||||
-->
|
||||
|
||||
<!--Start your bug report below this line-->
|
||||
|
||||
# Bug Report
|
||||
## What happened
|
||||
|
||||
## What did you expect to happen
|
||||
|
||||
## How to reproduce it (minimal and precise)
|
||||
|
||||
## Debug Info
|
||||
Zigbee2MQTT version:
|
||||
Adapter hardware: CC2531, CC2530, CC26X2R1 or CC1352P-2
|
||||
Adapter firmware version:
|
||||
@@ -1,17 +0,0 @@
|
||||
blank_issues_enabled: false
|
||||
contact_links:
|
||||
- name: Questions/discussion
|
||||
url: https://github.com/Koenkk/zigbee2mqtt/discussions/new
|
||||
about: Ask questions, discuss about devices or show things you made
|
||||
- name: Frontend issues
|
||||
url: https://github.com/nurikk/z2m-frontend/issues
|
||||
about: Issues related to the frontend.
|
||||
- name: Home Assistant addon issues
|
||||
url: https://github.com/zigbee2mqtt/hassio-zigbee2mqtt/issues
|
||||
about: Issues related to the Home Assistant addon.
|
||||
- name: FAQ
|
||||
url: https://www.zigbee2mqtt.io/information/FAQ.html
|
||||
about: Frequently asked questions.
|
||||
- name: Support Chat
|
||||
url: https://discord.gg/NyseBeK
|
||||
about: Chat for feedback, questions and troubleshooting.
|
||||
@@ -1,20 +0,0 @@
|
||||
---
|
||||
name: Feature request
|
||||
about: Suggest an idea for this project
|
||||
title: ''
|
||||
labels: feature request
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
## Is your feature request related to a problem? Please describe
|
||||
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
|
||||
|
||||
## Describe the solution you'd like
|
||||
A clear and concise description of what you want to happen.
|
||||
|
||||
## Describe alternatives you've considered
|
||||
A clear and concise description of any alternative solutions or features you've considered.
|
||||
|
||||
## Additional context
|
||||
Add any other context or screenshots about the feature request here.
|
||||
@@ -1,21 +0,0 @@
|
||||
---
|
||||
name: New device support request
|
||||
about: Request support for a new device
|
||||
title: ''
|
||||
labels: new device support
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
<!--
|
||||
VERY IMPORTANT: Before submitting a request, first (try to) follow: https://www.zigbee2mqtt.io/how_tos/how_to_support_new_devices.html
|
||||
|
||||
Dumping just the info about this device without actually attemping adding support yourself will likely lead into this issue being ignored.
|
||||
Clearly indicate what you tried and where you got stuck.
|
||||
-->
|
||||
|
||||
## Information about the device + link
|
||||
..
|
||||
|
||||
## data/database.db entry of the device
|
||||
..
|
||||
@@ -1,54 +0,0 @@
|
||||
---
|
||||
name: Problem report
|
||||
about: Create a report to help us improve
|
||||
title: ''
|
||||
labels: problem
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
<!--
|
||||
Before submitting an issue make sure you've searched for a similar issue and read the documentation: https://www.zigbee2mqtt.io/.
|
||||
|
||||
Rules (don't ignore these, your issue will be closed without further notice):
|
||||
- English only
|
||||
- Make sure you are on the latest Zigbee2MQTT version
|
||||
- Provide a clear description of the problem
|
||||
- DON'T copy logs directly here, post a link to https://hastebin.com/ or https://pastebin.com/.
|
||||
- Make sure you are running the latest firmware https://github.com/koenkk/z-stack-firmware.
|
||||
|
||||
Did you read the FAQ?
|
||||
- https://www.zigbee2mqtt.io/information/FAQ.html
|
||||
|
||||
Zigbee2MQTT fails to start?
|
||||
- https://www.zigbee2mqtt.io/information/FAQ.html#help-zigbee2mqtt-fails-to-start
|
||||
|
||||
Having issues when using a CC2531?
|
||||
- Make sure the CC2531 is connected through a USB extension cable
|
||||
- Try the source routing firmware: https://github.com/Koenkk/Z-Stack-firmware/tree/master/coordinator/Z-Stack_Home_1.2/bin/source_routing
|
||||
- With larger networks (30/40+) devices, your CC2531 might not be powerful enough. This will cause weird issues, in this case it's advised to use a more powerful adapter: https://www.zigbee2mqtt.io/information/supported_adapters.html#texas-instruments-cc26x2r1
|
||||
|
||||
Unsupported device?
|
||||
- https://www.zigbee2mqtt.io/how_tos/how_to_support_new_devices.html
|
||||
|
||||
Device does not pair or interview fails?
|
||||
- https://www.zigbee2mqtt.io/information/FAQ.html#why-does-my-device-not-or-fail-to-pair
|
||||
|
||||
Bug report?
|
||||
- If applicable, provide steps how to reproduce the problem.
|
||||
- Provide the herdsman debug logging: https://www.zigbee2mqtt.io/information/debug.html#zigbee-herdsman-debug-logging
|
||||
|
||||
-->
|
||||
|
||||
<!--Start your bug report below this line-->
|
||||
|
||||
## What happened
|
||||
|
||||
## What did you expect to happen
|
||||
|
||||
## How to reproduce it (minimal and precise)
|
||||
|
||||
## Debug info
|
||||
Zigbee2MQTT version:
|
||||
Adapter hardware: CC2531, CC2530, CC26X2R1, CC1352P-2, Conbee II
|
||||
Adapter firmware version:
|
||||
@@ -1 +0,0 @@
|
||||
preferredBranch: dev
|
||||
@@ -1,84 +0,0 @@
|
||||
name: CI
|
||||
|
||||
on: [push, pull_request]
|
||||
|
||||
jobs:
|
||||
ci:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- uses: actions/setup-node@v2-beta
|
||||
with:
|
||||
node-version: 14
|
||||
registry-url: https://registry.npmjs.org/
|
||||
- name: Get NodeJS Version
|
||||
id: nodeversion
|
||||
run: |
|
||||
echo "::set-output name=version::$(node --version)"
|
||||
- name: Restore node_modules cache
|
||||
id: cache-node-modules
|
||||
uses: actions/cache@v2
|
||||
with:
|
||||
path: node_modules
|
||||
key: ${{ runner.os }}-${{ steps.nodeversion.outputs.version }}-${{ hashFiles('npm-shrinkwrap.json') }}
|
||||
- name: Install dependencies
|
||||
if: steps.cache-node-modules.outputs.cache-hit != 'true'
|
||||
run: npm ci
|
||||
- name: Build
|
||||
run: npm run build
|
||||
- name: Test
|
||||
run: npm run test-with-coverage
|
||||
- name: Lint
|
||||
run: npm run eslint
|
||||
- name: Docker login
|
||||
if: (github.ref == 'refs/heads/dev' || startsWith(github.ref, 'refs/tags/')) && github.event_name == 'push'
|
||||
run: echo ${{ secrets.DOCKER_KEY }} | docker login -u koenkk --password-stdin
|
||||
- name: Docker login ghcr.io
|
||||
if: (github.ref == 'refs/heads/dev' || startsWith(github.ref, 'refs/tags/')) && github.event_name == 'push'
|
||||
run: echo ${{ secrets.CR_PAT }} | docker login ghcr.io -u koenkk --password-stdin
|
||||
- name: Docker setup - QEMU
|
||||
if: (github.ref == 'refs/heads/dev' || startsWith(github.ref, 'refs/tags/')) && github.event_name == 'push'
|
||||
uses: docker/setup-qemu-action@v1
|
||||
with:
|
||||
platforms: all
|
||||
- name: Docker setup - Buildx
|
||||
if: (github.ref == 'refs/heads/dev' || startsWith(github.ref, 'refs/tags/')) && github.event_name == 'push'
|
||||
id: buildx
|
||||
uses: docker/setup-buildx-action@v1
|
||||
with:
|
||||
version: latest
|
||||
- name: Docker build dev
|
||||
if: github.ref == 'refs/heads/dev' && github.event_name == 'push'
|
||||
run: |
|
||||
docker buildx build \
|
||||
--build-arg COMMIT=$(git rev-parse --short HEAD) \
|
||||
--platform linux/arm64/v8,linux/amd64,linux/arm/v6,linux/arm/v7 \
|
||||
-f docker/Dockerfile \
|
||||
--push \
|
||||
-t koenkk/zigbee2mqtt:latest-dev -t ghcr.io/koenkk/zigbee2mqtt:latest-dev \
|
||||
.
|
||||
- name: Docker build release
|
||||
if: startsWith(github.ref, 'refs/tags/') && github.event_name == 'push'
|
||||
run: |
|
||||
TAG="$(git describe --tags)"
|
||||
docker buildx build \
|
||||
--build-arg COMMIT=$(git rev-parse --short HEAD) \
|
||||
--platform linux/arm64/v8,linux/amd64,linux/arm/v6,linux/arm/v7 \
|
||||
-f docker/Dockerfile \
|
||||
--push \
|
||||
-t koenkk/zigbee2mqtt:latest -t "koenkk/zigbee2mqtt:$TAG" -t ghcr.io/koenkk/zigbee2mqtt:latest -t "ghcr.io/koenkk/zigbee2mqtt:$TAG" \
|
||||
.
|
||||
- name: Publish to npm
|
||||
if: startsWith(github.ref, 'refs/tags/') && github.event_name == 'push'
|
||||
run: npm publish
|
||||
env:
|
||||
NODE_AUTH_TOKEN: ${{secrets.NPM_TOKEN }}
|
||||
- name: Trigger zigbee2mqtt/hassio-zigbee2mqtt build
|
||||
if: github.ref == 'refs/heads/dev' && github.event_name == 'push'
|
||||
run: |
|
||||
curl -s \
|
||||
--request POST \
|
||||
--header "Content-Type: application/json" \
|
||||
--data '{"definition": {"id": 9}}' \
|
||||
-u ${{ secrets.HASSIO_TRIGGER_SECRET }} \
|
||||
"https://dev.azure.com/zigbee2mqtt/Zigbee2mqtt%20Add-on/_apis/build/builds?api-version=5.1"
|
||||
@@ -1,19 +0,0 @@
|
||||
name: "Close stale issues/pull requests"
|
||||
on:
|
||||
schedule:
|
||||
- cron: "0 0 * * *"
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
stale:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/stale@v3
|
||||
with:
|
||||
repo-token: ${{ secrets.GITHUB_TOKEN }}
|
||||
stale-issue-message: 'This issue is stale because it has been open 30 days with no activity. Remove stale label or comment or this will be closed in 7 days'
|
||||
stale-pr-message: 'This pull request is stale because it has been open 30 days with no activity. Remove stale label or comment or this will be closed in 7 days'
|
||||
days-before-stale: 30
|
||||
days-before-close: 7
|
||||
operations-per-run: 500
|
||||
exempt-issue-labels: 'breaking change'
|
||||
@@ -1,25 +0,0 @@
|
||||
name: Update dependencies
|
||||
on:
|
||||
workflow_dispatch:
|
||||
schedule:
|
||||
- cron: "0 0 * * 0"
|
||||
|
||||
jobs:
|
||||
update_deps:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
with:
|
||||
ref: dev
|
||||
ssh-key: ${{ secrets.SSH_PRIVATE_KEY }}
|
||||
- uses: actions/setup-node@v2-beta
|
||||
with:
|
||||
node-version: 14
|
||||
- run: rm -rf npm-shrinkwrap.json
|
||||
- run: npx npm-check-updates -u
|
||||
- run: npm install && npm shrinkwrap --dev
|
||||
- uses: peter-evans/create-pull-request@v3
|
||||
with:
|
||||
commit-message: Update dependencies
|
||||
branch: "update_deps"
|
||||
title: Update dependencies
|
||||
@@ -1,22 +0,0 @@
|
||||
name: Update zigbee-frontend
|
||||
on:
|
||||
repository_dispatch:
|
||||
types: update_frontend
|
||||
|
||||
jobs:
|
||||
update_frontend:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
with:
|
||||
ref: dev
|
||||
ssh-key: ${{ secrets.SSH_PRIVATE_KEY }}
|
||||
- uses: actions/setup-node@v2-beta
|
||||
with:
|
||||
node-version: 14
|
||||
- run: npm install zigbee2mqtt-frontend@${{ github.event.client_payload.version }} --save-exact
|
||||
- uses: peter-evans/create-pull-request@v3
|
||||
with:
|
||||
commit-message: Update zigbee2mqtt-frontend to ${{ github.event.client_payload.version }}
|
||||
branch: "update_frontend"
|
||||
title: Update zigbee-frontend to ${{ github.event.client_payload.version }}
|
||||
@@ -1,22 +0,0 @@
|
||||
name: Update zigbee-herdsman
|
||||
on:
|
||||
repository_dispatch:
|
||||
types: update_zh
|
||||
|
||||
jobs:
|
||||
update_zh:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
with:
|
||||
ref: dev
|
||||
ssh-key: ${{ secrets.SSH_PRIVATE_KEY }}
|
||||
- uses: actions/setup-node@v2-beta
|
||||
with:
|
||||
node-version: 14
|
||||
- run: npm install zigbee-herdsman@${{ github.event.client_payload.version }} --save-exact
|
||||
- uses: peter-evans/create-pull-request@v3
|
||||
with:
|
||||
commit-message: Update zigbee-herdsman to ${{ github.event.client_payload.version }}
|
||||
branch: "update_zh"
|
||||
title: Update zigbee-herdsman to ${{ github.event.client_payload.version }}
|
||||
@@ -1,22 +0,0 @@
|
||||
name: Update zigbee-herdsman-converters
|
||||
on:
|
||||
repository_dispatch:
|
||||
types: update_zhc
|
||||
|
||||
jobs:
|
||||
update_zhc:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
with:
|
||||
ref: dev
|
||||
ssh-key: ${{ secrets.SSH_PRIVATE_KEY }}
|
||||
- uses: actions/setup-node@v2-beta
|
||||
with:
|
||||
node-version: 14
|
||||
- run: npm install zigbee-herdsman-converters@${{ github.event.client_payload.version }} --save-exact
|
||||
- uses: peter-evans/create-pull-request@v3
|
||||
with:
|
||||
commit-message: Update zigbee-herdsman-converters to ${{ github.event.client_payload.version }}
|
||||
branch: "update_zhc"
|
||||
title: Update zigbee-herdsman-converters to ${{ github.event.client_payload.version }}
|
||||
-82
@@ -1,82 +0,0 @@
|
||||
# Logs
|
||||
logs
|
||||
*.log
|
||||
npm-debug.log*
|
||||
yarn-debug.log*
|
||||
yarn-error.log*
|
||||
|
||||
# Runtime data
|
||||
pids
|
||||
*.pid
|
||||
*.seed
|
||||
*.pid.lock
|
||||
|
||||
# Compiled source
|
||||
dist/*
|
||||
|
||||
# Directory for instrumented libs generated by jscoverage/JSCover
|
||||
lib-cov
|
||||
|
||||
# Coverage directory used by tools like istanbul
|
||||
coverage
|
||||
|
||||
# nyc test coverage
|
||||
.nyc_output
|
||||
|
||||
# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
|
||||
.grunt
|
||||
|
||||
# Bower dependency directory (https://bower.io/)
|
||||
bower_components
|
||||
|
||||
# node-waf configuration
|
||||
.lock-wscript
|
||||
|
||||
# Compiled binary addons (http://nodejs.org/api/addons.html)
|
||||
build/Release
|
||||
|
||||
# Dependency directories
|
||||
node_modules/
|
||||
jspm_packages/
|
||||
|
||||
# Typescript v1 declaration files
|
||||
typings/
|
||||
|
||||
# Optional npm cache directory
|
||||
.npm
|
||||
|
||||
# Optional eslint cache
|
||||
.eslintcache
|
||||
|
||||
# Optional REPL history
|
||||
.node_repl_history
|
||||
|
||||
# Output of 'npm pack'
|
||||
*.tgz
|
||||
|
||||
# Yarn Integrity file
|
||||
.yarn-integrity
|
||||
|
||||
# dotenv environment variables file
|
||||
.env
|
||||
|
||||
# data
|
||||
data/database.db
|
||||
data/config.json
|
||||
data/log*.txt
|
||||
data/state.json
|
||||
data/log
|
||||
data-backup/
|
||||
data/coordinator_backup.json
|
||||
data/.storage
|
||||
data/database.db.backup
|
||||
data/extension
|
||||
|
||||
# MacOS indexing file
|
||||
.DS_Store
|
||||
|
||||
# IDE specific folders
|
||||
.idea
|
||||
|
||||
# Ignore config
|
||||
data/*.yaml
|
||||
-27
@@ -1,27 +0,0 @@
|
||||
#tests
|
||||
test
|
||||
coverage
|
||||
|
||||
#build tools
|
||||
.travis.yml
|
||||
.jenkins.yml
|
||||
.codeclimate.yml
|
||||
.github
|
||||
babel.config.js
|
||||
|
||||
#linters
|
||||
.jscsrc
|
||||
.jshintrc
|
||||
.eslintrc*
|
||||
.dockerignore
|
||||
.eslintignore
|
||||
.gitignore
|
||||
|
||||
#editor settings
|
||||
.vscode
|
||||
|
||||
#src
|
||||
lib
|
||||
docs
|
||||
docker
|
||||
images
|
||||
@@ -1,132 +0,0 @@
|
||||
|
||||
# Contributor Covenant Code of Conduct
|
||||
|
||||
## Our Pledge
|
||||
|
||||
We as members, contributors, and leaders pledge to make participation in our
|
||||
community a harassment-free experience for everyone, regardless of age, body
|
||||
size, visible or invisible disability, ethnicity, sex characteristics, gender
|
||||
identity and expression, level of experience, education, socio-economic status,
|
||||
nationality, personal appearance, race, religion, or sexual identity
|
||||
and orientation.
|
||||
|
||||
We pledge to act and interact in ways that contribute to an open, welcoming,
|
||||
diverse, inclusive, and healthy community.
|
||||
|
||||
## Our Standards
|
||||
|
||||
Examples of behavior that contributes to a positive environment for our
|
||||
community include:
|
||||
|
||||
* Demonstrating empathy and kindness toward other people
|
||||
* Being respectful of differing opinions, viewpoints, and experiences
|
||||
* Giving and gracefully accepting constructive feedback
|
||||
* Accepting responsibility and apologizing to those affected by our mistakes,
|
||||
and learning from the experience
|
||||
* Focusing on what is best not just for us as individuals, but for the
|
||||
overall community
|
||||
|
||||
Examples of unacceptable behavior include:
|
||||
|
||||
* The use of sexualized language or imagery, and sexual attention or
|
||||
advances of any kind
|
||||
* Trolling, insulting or derogatory comments, and personal or political attacks
|
||||
* Public or private harassment
|
||||
* Publishing others' private information, such as a physical or email
|
||||
address, without their explicit permission
|
||||
* Other conduct which could reasonably be considered inappropriate in a
|
||||
professional setting
|
||||
|
||||
## Enforcement Responsibilities
|
||||
|
||||
Community leaders are responsible for clarifying and enforcing our standards of
|
||||
acceptable behavior and will take appropriate and fair corrective action in
|
||||
response to any behavior that they deem inappropriate, threatening, offensive,
|
||||
or harmful.
|
||||
|
||||
Community leaders have the right and responsibility to remove, edit, or reject
|
||||
comments, commits, code, wiki edits, issues, and other contributions that are
|
||||
not aligned to this Code of Conduct, and will communicate reasons for moderation
|
||||
decisions when appropriate.
|
||||
|
||||
## Scope
|
||||
|
||||
This Code of Conduct applies within all community spaces, and also applies when
|
||||
an individual is officially representing the community in public spaces.
|
||||
Examples of representing our community include using an official e-mail address,
|
||||
posting via an official social media account, or acting as an appointed
|
||||
representative at an online or offline event.
|
||||
|
||||
## Enforcement
|
||||
|
||||
Instances of abusive, harassing, or otherwise unacceptable behavior may be
|
||||
reported to the community leaders responsible for enforcement.
|
||||
All complaints will be reviewed and investigated promptly and fairly.
|
||||
|
||||
All community leaders are obligated to respect the privacy and security of the
|
||||
reporter of any incident.
|
||||
|
||||
## Enforcement Guidelines
|
||||
|
||||
Community leaders will follow these Community Impact Guidelines in determining
|
||||
the consequences for any action they deem in violation of this Code of Conduct:
|
||||
|
||||
### 1. Correction
|
||||
|
||||
**Community Impact**: Use of inappropriate language or other behavior deemed
|
||||
unprofessional or unwelcome in the community.
|
||||
|
||||
**Consequence**: A private, written warning from community leaders, providing
|
||||
clarity around the nature of the violation and an explanation of why the
|
||||
behavior was inappropriate. A public apology may be requested.
|
||||
|
||||
### 2. Warning
|
||||
|
||||
**Community Impact**: A violation through a single incident or series
|
||||
of actions.
|
||||
|
||||
**Consequence**: A warning with consequences for continued behavior. No
|
||||
interaction with the people involved, including unsolicited interaction with
|
||||
those enforcing the Code of Conduct, for a specified period of time. This
|
||||
includes avoiding interactions in community spaces as well as external channels
|
||||
like social media. Violating these terms may lead to a temporary or
|
||||
permanent ban.
|
||||
|
||||
### 3. Temporary Ban
|
||||
|
||||
**Community Impact**: A serious violation of community standards, including
|
||||
sustained inappropriate behavior.
|
||||
|
||||
**Consequence**: A temporary ban from any sort of interaction or public
|
||||
communication with the community for a specified period of time. No public or
|
||||
private interaction with the people involved, including unsolicited interaction
|
||||
with those enforcing the Code of Conduct, is allowed during this period.
|
||||
Violating these terms may lead to a permanent ban.
|
||||
|
||||
### 4. Permanent Ban
|
||||
|
||||
**Community Impact**: Demonstrating a pattern of violation of community
|
||||
standards, including sustained inappropriate behavior, harassment of an
|
||||
individual, or aggression toward or disparagement of classes of individuals.
|
||||
|
||||
**Consequence**: A permanent ban from any sort of public interaction within
|
||||
the community.
|
||||
|
||||
## Attribution
|
||||
|
||||
This Code of Conduct is adapted from the [Contributor Covenant][homepage],
|
||||
version 2.0, available at
|
||||
[https://www.contributor-covenant.org/version/2/0/code_of_conduct.html][v2.0].
|
||||
|
||||
Community Impact Guidelines were inspired by
|
||||
[Mozilla's code of conduct enforcement ladder][Mozilla CoC].
|
||||
|
||||
For answers to common questions about this code of conduct, see the FAQ at
|
||||
[https://www.contributor-covenant.org/faq][FAQ]. Translations are available
|
||||
at [https://www.contributor-covenant.org/translations][translations].
|
||||
|
||||
[homepage]: https://www.contributor-covenant.org
|
||||
[v2.0]: https://www.contributor-covenant.org/version/2/0/code_of_conduct.html
|
||||
[Mozilla CoC]: https://github.com/mozilla/diversity
|
||||
[FAQ]: https://www.contributor-covenant.org/faq
|
||||
[translations]: https://www.contributor-covenant.org/translations
|
||||
@@ -1,8 +0,0 @@
|
||||
# Contributing to Zigbee2MQTT
|
||||
|
||||
Everybody is invited and welcome to contribute to Zigbee2MQTT. Zigbee2MQTT is writen in JavaScript and is based upon [zigbee-herdsman](https://github.com/koenkk/zigbee-herdsman) and [zigbee-herdsman-converters](https://github.com/koenkk/zigbee-herdsman-converters). Zigbee-herdsman-converters contains all device definition, zigbee-herdsman is responsible for handling all communication with the adapter.
|
||||
|
||||
- Pull requests are always created against the [**dev**](https://github.com/Koenkk/zigbee2mqtt/tree/dev) branch.
|
||||
- Easiest way to start developing Zigbee2MQTT is by setting up a development environment (aka bare-metal installation). You can follow this [guide](https://www.zigbee2mqtt.io/getting_started/running_zigbee2mqtt.html#running-zigbee2mqtt) to do this.
|
||||
- You can run the tests locally by executing `npm test`. Zigbee2MQTT enforces 100% code coverage, in case you add new code check if you code is covered by running `npm run test-with-coverage`. The coverage report can be found under `coverage/lcov-report/index.html`. Linting is also enforced and can be run with `npm run eslint`.
|
||||
- When you want to add support for a new devices no changes to Zigbee2MQTT have to be made, only to zigbee-herdsman-converters. You can find a guide for it [here](https://www.zigbee2mqtt.io/how_tos/how_to_support_new_devices.html).
|
||||
@@ -1,81 +0,0 @@
|
||||
<div align="center">
|
||||
<a href="https://github.com/koenkk/zigbee2mqtt">
|
||||
<img width="150" height="150" src="images/logo.png">
|
||||
</a>
|
||||
<br>
|
||||
<br>
|
||||
<div style="display: flex;">
|
||||
<a href="https://github.com/Koenkk/zigbee2mqtt/actions?query=workflow%3ACI">
|
||||
<img src="https://github.com/koenkk/zigbee2mqtt/workflows/CI/badge.svg">
|
||||
</a>
|
||||
<a href="https://github.com/Koenkk/zigbee2mqtt/releases">
|
||||
<img src="https://img.shields.io/github/release/koenkk/zigbee2mqtt.svg">
|
||||
</a>
|
||||
<a href="https://github.com/Koenkk/zigbee2mqtt/stargazers">
|
||||
<img src="https://img.shields.io/github/stars/koenkk/zigbee2mqtt.svg">
|
||||
</a>
|
||||
<a href="https://www.paypal.me/koenkk">
|
||||
<img src="https://img.shields.io/badge/donate-PayPal-blue.svg">
|
||||
</a>
|
||||
<a href="https://discord.gg/dadfWYE">
|
||||
<img src="https://img.shields.io/discord/556563650429583360.svg">
|
||||
</a>
|
||||
<a href="http://zigbee2mqtt.discourse.group/">
|
||||
<img src="https://img.shields.io/discourse/https/zigbee2mqtt.discourse.group/status.svg">
|
||||
</a>
|
||||
<a>
|
||||
<img src="https://img.shields.io/badge/Coverage-100%25-brightgreen.svg">
|
||||
</a>
|
||||
<a href="https://www.codacy.com/manual/Koenkk/zigbee2mqtt?utm_source=github.com&utm_medium=referral&utm_content=Koenkk/zigbee2mqtt&utm_campaign=Badge_Grade">
|
||||
<img src="https://api.codacy.com/project/badge/Grade/24f1e0fe39f04daa810e8a1416693d3f">
|
||||
</a>
|
||||
<a href="https://www.npmjs.com/package/zigbee2mqtt">
|
||||
<img src="https://img.shields.io/npm/v/zigbee2mqtt">
|
||||
</a>
|
||||
</div>
|
||||
<h1>Zigbee2MQTT 🌉 🐝</h1>
|
||||
<p>
|
||||
Allows you to use your Zigbee devices <b>without</b> the vendors bridge or gateway.
|
||||
</p>
|
||||
<p>
|
||||
It bridges events and allows you to control your Zigbee devices via MQTT. In this way you can integrate your Zigbee devices with whatever smart home infrastructure you are using.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
## [Getting started](https://www.zigbee2mqtt.io/#getting-started)
|
||||
The [documentation](https://www.zigbee2mqtt.io/) provides you all the information needed to get up and running! Make sure you don't skip sections if this is your first visit, as there might be important details in there for you.
|
||||
|
||||
If you aren't familiar with **Zigbee** terminology make sure you [read this](https://www.zigbee2mqtt.io/information/zigbee_network.html) to help you out.
|
||||
|
||||
## [Integrations](https://www.zigbee2mqtt.io/#integration)
|
||||
Zigbee2MQTT integrates well with (almost) every home automation solution because it uses MQTT. However the following integrations are worth mentioning:
|
||||
|
||||
<img align="left" height="100px" width="100px" src="https://user-images.githubusercontent.com/7738048/40914297-49e6e560-6800-11e8-8904-36cce896e5a8.png">
|
||||
|
||||
### [Home Assistant](https://www.home-assistant.io/)
|
||||
- [Home Assistant](https://www.home-assistant.io/hassio/): Using [the official addon](https://github.com/zigbee2mqtt/hassio-zigbee2mqtt)
|
||||
- Generic install or Hassbian: Using instructions [here](https://www.zigbee2mqtt.io/integration/home_assistant.html)
|
||||
|
||||
<img align="left" height="100px" width="100px" src="https://user-images.githubusercontent.com/2734836/47615848-b8dd8700-dabd-11e8-9d77-175002dd8987.png">
|
||||
|
||||
### [Domoticz](https://www.domoticz.com/)
|
||||
- Integration implemented in [domoticz-zigbee2mqtt-plugin](https://github.com/stas-demydiuk/domoticz-zigbee2mqtt-plugin)
|
||||
|
||||
<br>
|
||||
|
||||
## Architecture
|
||||

|
||||
|
||||
### Internal Architecture
|
||||
Zigbee2MQTT is made up of three modules, each developed in its own Github project. Starting from the hardware (adapter) and moving up; [zigbee-herdsman](https://github.com/koenkk/zigbee-herdsman) connects to your Zigbee adapter an makes an API available to the higher levels of the stack. For e.g. Texas Instruments hardware, zigbee-herdsman uses the [TI zStack monitoring and test API](https://github.com/koenkk/zigbee-herdsman/raw/master/docs/Z-Stack%20Monitor%20and%20Test%20API.pdf) to communicate with the adapter. Zigbee-herdsman handles the core Zigbee communication. The module [zigbee-herdsman-converters](https://github.com/koenkk/zigbee-herdsman-converters) handles the mapping from individual device models to the Zigbee clusters they support. [Zigbee clusters](https://github.com/Koenkk/zigbee-herdsman/raw/master/docs/Zigbee%20Cluster%20Library%20Specification%20v7.pdf) are the layers of the Zigbee protocol on top of the base protocol that define things like how lights, sensors and switches talk to each other over the Zigbee network. Finally, the Zigbee2MQTT module drives zigbee-herdsman and maps the zigbee messages to MQTT messages. Zigbee2MQTT also keeps track of the state of the system. It uses a `database.db` file to store this state; a text file with a JSON database of connected devices and their capabilities.
|
||||
|
||||
### Developing
|
||||
Zigbee2MQTT uses TypeScript (partially for now). Therefore after making changes to files in the `lib/` directory you need to recompile Zigbee2MQTT. This can be done by executing `npm run build`. For faster development instead of running `npm run build` you can run `npm run build-watch` in another terminal session, this will recompile as you change files.
|
||||
|
||||
## Supported devices
|
||||
See [Supported devices](https://www.zigbee2mqtt.io/information/supported_devices.html) to check whether your device is supported. There is quite an extensive list, including devices from vendors like Xiaomi, Ikea, Philips, OSRAM and more.
|
||||
|
||||
If it's not listed in [Supported devices](https://www.zigbee2mqtt.io/information/supported_devices.html), support can be added (fairly) easy, see [How to support new devices](https://www.zigbee2mqtt.io/how_tos/how_to_support_new_devices.html).
|
||||
|
||||
## Support & help
|
||||
If you need assistance you can check [opened issues](https://github.com/Koenkk/zigbee2mqtt/issues). Feel free to help with Pull Requests when you were able to fix things or add new devices or just share the love on social media.
|
||||
@@ -1,11 +0,0 @@
|
||||
module.exports = {
|
||||
presets: [
|
||||
['@babel/preset-env', {targets: {node: 'current'}}],
|
||||
'@babel/preset-typescript',
|
||||
],
|
||||
assumptions: {setPublicClassFields: true},
|
||||
plugins: [
|
||||
['@babel/plugin-proposal-decorators', {'legacy': true}],
|
||||
['@babel/plugin-proposal-class-properties'],
|
||||
],
|
||||
};
|
||||
@@ -1,4 +0,0 @@
|
||||
#!/usr/bin/env node
|
||||
const path = require('path');
|
||||
process.env['ZIGBEE2MQTT_DATA'] = process.env['ZIGBEE2MQTT_DATA'] || path.join(process.env['HOME'], '.z2m');
|
||||
require('./index');
|
||||
@@ -1,20 +0,0 @@
|
||||
# Home Assistant integration (MQTT discovery)
|
||||
homeassistant: false
|
||||
|
||||
# allow new devices to join
|
||||
permit_join: true
|
||||
|
||||
# MQTT settings
|
||||
mqtt:
|
||||
# MQTT base topic for zigbee2mqtt MQTT messages
|
||||
base_topic: zigbee2mqtt
|
||||
# MQTT server URL
|
||||
server: 'mqtt://localhost'
|
||||
# MQTT server authentication, uncomment if required:
|
||||
# user: my_user
|
||||
# password: my_password
|
||||
|
||||
# Serial settings
|
||||
serial:
|
||||
# Location of CC2531 USB sniffer
|
||||
port: /dev/ttyACM0
|
||||
Vendored
+30
@@ -0,0 +1,30 @@
|
||||
import EventBus from "./eventBus";
|
||||
import type Extension from "./extension/extension";
|
||||
import Mqtt, { type MqttPublishOptions } from "./mqtt";
|
||||
import State from "./state";
|
||||
import Zigbee from "./zigbee";
|
||||
export declare class Controller {
|
||||
#private;
|
||||
readonly eventBus: EventBus;
|
||||
readonly zigbee: Zigbee;
|
||||
readonly state: State;
|
||||
readonly mqtt: Mqtt;
|
||||
private restartCallback;
|
||||
private exitCallback;
|
||||
readonly extensions: Set<Extension>;
|
||||
readonly extensionArgs: ConstructorParameters<typeof Extension>;
|
||||
private sdNotify;
|
||||
constructor(restartCallback: () => Promise<void>, exitCallback: (code: number, restart: boolean) => Promise<void>);
|
||||
start(): Promise<void>;
|
||||
enableDisableExtension(enable: boolean, name: string): Promise<void>;
|
||||
getExtension(name: string): Extension | undefined;
|
||||
addExtension(extension: Extension): Promise<void>;
|
||||
removeExtension(extension: Extension): Promise<void>;
|
||||
private startExtension;
|
||||
private stopExtension;
|
||||
stop(restart?: boolean, code?: number, signal?: NodeJS.Signals | undefined): Promise<void>;
|
||||
exit(code: number, restart?: boolean): Promise<void>;
|
||||
publishEntityState(entity: Group | Device, payload: KeyValue, stateChangeReason?: StateChangeReason): Promise<void>;
|
||||
iteratePayloadAttributeOutput(topicRoot: string, payload: KeyValue, options: Partial<MqttPublishOptions>): Promise<void>;
|
||||
}
|
||||
//# sourceMappingURL=controller.d.ts.map
|
||||
Vendored
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"controller.d.ts","sourceRoot":"","sources":["../lib/controller.ts"],"names":[],"mappings":"AAGA,OAAO,QAAQ,MAAM,YAAY,CAAC;AAMlC,OAAO,KAAK,SAAS,MAAM,uBAAuB,CAAC;AAUnD,OAAO,IAAI,EAAE,EAAC,KAAK,kBAAkB,EAAC,MAAM,QAAQ,CAAC;AACrD,OAAO,KAAK,MAAM,SAAS,CAAC;AAO5B,OAAO,MAAM,MAAM,UAAU,CAAC;AAE9B,qBAAa,UAAU;;IAGnB,SAAgB,QAAQ,EAAE,QAAQ,CAAC;IACnC,SAAgB,MAAM,EAAE,MAAM,CAAC;IAC/B,SAAgB,KAAK,EAAE,KAAK,CAAC;IAC7B,SAAgB,IAAI,EAAE,IAAI,CAAC;IAC3B,OAAO,CAAC,eAAe,CAAsB;IAC7C,OAAO,CAAC,YAAY,CAAoD;IACxE,SAAgB,UAAU,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC;IAC3C,SAAgB,aAAa,EAAE,qBAAqB,CAAC,OAAO,SAAS,CAAC,CAAC;IACvE,OAAO,CAAC,QAAQ,CAA2C;IAE3D,YAAY,eAAe,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,EAAE,YAAY,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,EA4ChH;IAEK,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CA+H3B;IAEW,sBAAsB,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAkF/E;IAEM,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,CAMvD;IAEW,YAAY,CAAC,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAS5D;IAEK,eAAe,CAAC,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAIzD;YAEa,cAAc;YAQd,aAAa;IAQrB,IAAI,CAAC,OAAO,UAAQ,EAAE,IAAI,SAAI,EAAE,MAAM,GAAE,MAAM,CAAC,OAAO,GAAG,SAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,CAgCnG;IAEK,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,UAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAGvD;IAEW,kBAAkB,CAAC,MAAM,EAAE,KAAK,GAAG,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,iBAAiB,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CA8E9H;IAEK,6BAA6B,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,kBAAkB,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CA4B7H;CACJ"}
|
||||
Vendored
+69
@@ -0,0 +1,69 @@
|
||||
type ListenerKey = object;
|
||||
type Stats = {
|
||||
devices: Map<string, // IEEE address
|
||||
{
|
||||
lastSeenChanges?: {
|
||||
messages: number;
|
||||
first: number;
|
||||
};
|
||||
leaveCounts: number;
|
||||
networkAddressChanges: number;
|
||||
}>;
|
||||
mqtt: {
|
||||
published: number;
|
||||
received: number;
|
||||
};
|
||||
};
|
||||
export default class EventBus {
|
||||
private callbacksByExtension;
|
||||
private emitter;
|
||||
readonly stats: Stats;
|
||||
constructor();
|
||||
emitAdapterDisconnected(): void;
|
||||
onAdapterDisconnected(key: ListenerKey, callback: () => Promise<void>): void;
|
||||
emitPermitJoinChanged(data: eventdata.PermitJoinChanged): void;
|
||||
onPermitJoinChanged(key: ListenerKey, callback: (data: eventdata.PermitJoinChanged) => void): void;
|
||||
emitEntityRenamed(data: eventdata.EntityRenamed): void;
|
||||
onEntityRenamed(key: ListenerKey, callback: (data: eventdata.EntityRenamed) => void): void;
|
||||
emitEntityRemoved(data: eventdata.EntityRemoved): void;
|
||||
onEntityRemoved(key: ListenerKey, callback: (data: eventdata.EntityRemoved) => void): void;
|
||||
emitLastSeenChanged(data: eventdata.LastSeenChanged): void;
|
||||
onLastSeenChanged(key: ListenerKey, callback: (data: eventdata.LastSeenChanged) => void): void;
|
||||
emitDeviceNetworkAddressChanged(data: eventdata.DeviceNetworkAddressChanged): void;
|
||||
onDeviceNetworkAddressChanged(key: ListenerKey, callback: (data: eventdata.DeviceNetworkAddressChanged) => void): void;
|
||||
emitDeviceAnnounce(data: eventdata.DeviceAnnounce): void;
|
||||
onDeviceAnnounce(key: ListenerKey, callback: (data: eventdata.DeviceAnnounce) => void): void;
|
||||
emitDeviceInterview(data: eventdata.DeviceInterview): void;
|
||||
onDeviceInterview(key: ListenerKey, callback: (data: eventdata.DeviceInterview) => void): void;
|
||||
emitDeviceJoined(data: eventdata.DeviceJoined): void;
|
||||
onDeviceJoined(key: ListenerKey, callback: (data: eventdata.DeviceJoined) => void): void;
|
||||
emitEntityOptionsChanged(data: eventdata.EntityOptionsChanged): void;
|
||||
onEntityOptionsChanged(key: ListenerKey, callback: (data: eventdata.EntityOptionsChanged) => void): void;
|
||||
emitExposesChanged(data: eventdata.ExposesChanged): void;
|
||||
onExposesChanged(key: ListenerKey, callback: (data: eventdata.ExposesChanged) => void): void;
|
||||
emitDeviceLeave(data: eventdata.DeviceLeave): void;
|
||||
onDeviceLeave(key: ListenerKey, callback: (data: eventdata.DeviceLeave) => void): void;
|
||||
emitDeviceMessage(data: eventdata.DeviceMessage): void;
|
||||
onDeviceMessage(key: ListenerKey, callback: (data: eventdata.DeviceMessage) => void): void;
|
||||
emitMQTTMessage(data: eventdata.MQTTMessage): void;
|
||||
onMQTTMessage(key: ListenerKey, callback: (data: eventdata.MQTTMessage) => void): void;
|
||||
emitMQTTMessagePublished(data: eventdata.MQTTMessagePublished): void;
|
||||
onMQTTMessagePublished(key: ListenerKey, callback: (data: eventdata.MQTTMessagePublished) => void): void;
|
||||
emitPublishEntityState(data: eventdata.PublishEntityState): void;
|
||||
onPublishEntityState(key: ListenerKey, callback: (data: eventdata.PublishEntityState) => void): void;
|
||||
emitGroupMembersChanged(data: eventdata.GroupMembersChanged): void;
|
||||
onGroupMembersChanged(key: ListenerKey, callback: (data: eventdata.GroupMembersChanged) => void): void;
|
||||
emitDevicesChanged(): void;
|
||||
onDevicesChanged(key: ListenerKey, callback: () => void): void;
|
||||
emitScenesChanged(data: eventdata.ScenesChanged): void;
|
||||
onScenesChanged(key: ListenerKey, callback: (data: eventdata.ScenesChanged) => void): void;
|
||||
emitReconfigure(data: eventdata.Reconfigure): void;
|
||||
onReconfigure(key: ListenerKey, callback: (data: eventdata.Reconfigure) => void): void;
|
||||
emitStateChange(data: eventdata.StateChange): void;
|
||||
onStateChange(key: ListenerKey, callback: (data: eventdata.StateChange) => void): void;
|
||||
emitExposesAndDevicesChanged(device: Device): void;
|
||||
private on;
|
||||
removeListeners(key: ListenerKey): void;
|
||||
}
|
||||
export {};
|
||||
//# sourceMappingURL=eventBus.d.ts.map
|
||||
Vendored
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"eventBus.d.ts","sourceRoot":"","sources":["../lib/eventBus.ts"],"names":[],"mappings":"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"}
|
||||
Vendored
+34
@@ -0,0 +1,34 @@
|
||||
import Extension from "./extension";
|
||||
export default class Availability extends Extension {
|
||||
/** Mapped by IEEE address */
|
||||
private readonly timers;
|
||||
/** Mapped by IEEE address or Group ID */
|
||||
private readonly lastPublishedAvailabilities;
|
||||
/** Mapped by IEEE address */
|
||||
private readonly pingBackoffs;
|
||||
/** IEEE addresses, waiting for last seen changes to take them out of "availability sleep" */
|
||||
private readonly backoffPausedDevices;
|
||||
/** Mapped by IEEE address */
|
||||
private readonly retrieveStateDebouncers;
|
||||
private pingQueue;
|
||||
private pingQueueExecuting;
|
||||
private stopped;
|
||||
private getTimeout;
|
||||
private getMaxJitter;
|
||||
private getBackoff;
|
||||
private getPauseOnBackoffGt;
|
||||
private isActiveDevice;
|
||||
private isAvailable;
|
||||
private resetTimer;
|
||||
private clearTimer;
|
||||
private addToPingQueue;
|
||||
private removeFromPingQueue;
|
||||
private pingQueueExecuteNext;
|
||||
start(): Promise<void>;
|
||||
private publishAvailabilityForAllEntities;
|
||||
private publishAvailability;
|
||||
private onLastSeenChanged;
|
||||
stop(): Promise<void>;
|
||||
private retrieveState;
|
||||
}
|
||||
//# sourceMappingURL=availability.d.ts.map
|
||||
Vendored
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"availability.d.ts","sourceRoot":"","sources":["../../lib/extension/availability.ts"],"names":[],"mappings":"AASA,OAAO,SAAS,MAAM,aAAa,CAAC;AAcpC,MAAM,CAAC,OAAO,OAAO,YAAa,SAAQ,SAAS;IAC/C,6BAA6B;IAC7B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAqC;IAC5D,yCAAyC;IACzC,OAAO,CAAC,QAAQ,CAAC,2BAA2B,CAAuC;IACnF,6BAA6B;IAC7B,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA6B;IAC1D,6FAA6F;IAC7F,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAqB;IAC1D,6BAA6B;IAC7B,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAiC;IACzE,OAAO,CAAC,SAAS,CAAgB;IACjC,OAAO,CAAC,kBAAkB,CAAS;IACnC,OAAO,CAAC,OAAO,CAAS;IAExB,OAAO,CAAC,UAAU;IAQlB,OAAO,CAAC,YAAY;IAQpB,OAAO,CAAC,UAAU;IAQlB,OAAO,CAAC,mBAAmB;IAQ3B,OAAO,CAAC,cAAc;IAOtB,OAAO,CAAC,WAAW;IAgBnB,OAAO,CAAC,UAAU;IAqClB,OAAO,CAAC,UAAU;IAKlB,OAAO,CAAC,cAAc;IAKtB,OAAO,CAAC,mBAAmB;YAOb,oBAAoB;IA4DnB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CA+BpC;YAEa,iCAAiC;YAQjC,mBAAmB;YAoCb,iBAAiB;IAStB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CASnC;IAED,OAAO,CAAC,aAAa;CAoDxB"}
|
||||
Vendored
+15
@@ -0,0 +1,15 @@
|
||||
import Extension from "./extension";
|
||||
export default class Bind extends Extension {
|
||||
#private;
|
||||
private pollDebouncers;
|
||||
start(): Promise<void>;
|
||||
private parseMQTTMessage;
|
||||
private onMQTTMessage;
|
||||
private publishResponse;
|
||||
onGroupMembersChanged(data: eventdata.GroupMembersChanged): Promise<void>;
|
||||
getSetupReportingEndpoints(bind: zh.Bind, coordinatorEp: zh.Endpoint): zh.Endpoint[];
|
||||
setupReporting(binds: zh.Bind[]): Promise<void>;
|
||||
disableUnnecessaryReportings(target: zh.Group | zh.Endpoint): Promise<void>;
|
||||
poll(data: eventdata.DeviceMessage): Promise<void>;
|
||||
}
|
||||
//# sourceMappingURL=bind.d.ts.map
|
||||
Vendored
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"bind.d.ts","sourceRoot":"","sources":["../../lib/extension/bind.ts"],"names":[],"mappings":"AAaA,OAAO,SAAS,MAAM,aAAa,CAAC;AA4KpC,MAAM,CAAC,OAAO,OAAO,IAAK,SAAQ,SAAS;;IAEvC,OAAO,CAAC,cAAc,CAAiC;IAGxC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAIpC;IAED,OAAO,CAAC,gBAAgB;YAiFJ,aAAa;YA+InB,eAAe;IAcjB,qBAAqB,CAAC,IAAI,EAAE,SAAS,CAAC,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CAqBpF;IAED,0BAA0B,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,aAAa,EAAE,EAAE,CAAC,QAAQ,GAAG,EAAE,CAAC,QAAQ,EAAE,CAkBnF;IAEK,cAAc,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAkCpD;IAEK,4BAA4B,CAAC,MAAM,EAAE,EAAE,CAAC,KAAK,GAAG,EAAE,CAAC,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAqDhF;IAEW,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAwE7D;CACJ"}
|
||||
Vendored
+59
@@ -0,0 +1,59 @@
|
||||
import Device from "../model/device";
|
||||
import type Group from "../model/group";
|
||||
import type { Zigbee2MQTTDevice, Zigbee2MQTTResponse } from "../types/api";
|
||||
import Extension from "./extension";
|
||||
export default class Bridge extends Extension {
|
||||
#private;
|
||||
private zigbee2mqttVersion;
|
||||
private zigbeeHerdsmanVersion;
|
||||
private zigbeeHerdsmanConvertersVersion;
|
||||
private coordinatorVersion;
|
||||
private restartRequired;
|
||||
private lastJoinedDeviceIeeeAddr?;
|
||||
private lastBridgeLoggingPayload?;
|
||||
private logTransport;
|
||||
private requestLookup;
|
||||
start(): Promise<void>;
|
||||
stop(): Promise<void>;
|
||||
onMQTTMessage(data: eventdata.MQTTMessage): Promise<void>;
|
||||
/**
|
||||
* Requests
|
||||
*/
|
||||
deviceOptions(message: KeyValue | string): Promise<Zigbee2MQTTResponse<"bridge/response/device/options">>;
|
||||
groupOptions(message: KeyValue | string): Promise<Zigbee2MQTTResponse<"bridge/response/group/options">>;
|
||||
bridgeOptions(message: KeyValue | string): Promise<Zigbee2MQTTResponse<"bridge/response/options">>;
|
||||
deviceRemove(message: string | KeyValue): Promise<Zigbee2MQTTResponse<"bridge/response/device/remove">>;
|
||||
groupRemove(message: string | KeyValue): Promise<Zigbee2MQTTResponse<"bridge/response/group/remove">>;
|
||||
healthCheck(message: string | KeyValue): Promise<Zigbee2MQTTResponse<"bridge/response/health_check">>;
|
||||
coordinatorCheck(message: string | KeyValue): Promise<Zigbee2MQTTResponse<"bridge/response/coordinator_check">>;
|
||||
groupAdd(message: string | KeyValue): Promise<Zigbee2MQTTResponse<"bridge/response/group/add">>;
|
||||
deviceRename(message: string | KeyValue): Promise<Zigbee2MQTTResponse<"bridge/response/device/rename">>;
|
||||
groupRename(message: string | KeyValue): Promise<Zigbee2MQTTResponse<"bridge/response/group/rename">>;
|
||||
restart(message: string | KeyValue): Promise<Zigbee2MQTTResponse<"bridge/response/restart">>;
|
||||
backup(message: string | KeyValue): Promise<Zigbee2MQTTResponse<"bridge/response/backup">>;
|
||||
installCodeAdd(message: KeyValue | string): Promise<Zigbee2MQTTResponse<"bridge/response/install_code/add">>;
|
||||
permitJoin(message: KeyValue | string): Promise<Zigbee2MQTTResponse<"bridge/response/permit_join">>;
|
||||
touchlinkIdentify(message: KeyValue | string): Promise<Zigbee2MQTTResponse<"bridge/response/touchlink/identify">>;
|
||||
touchlinkFactoryReset(message: KeyValue | string): Promise<Zigbee2MQTTResponse<"bridge/response/touchlink/factory_reset">>;
|
||||
touchlinkScan(message: KeyValue | string): Promise<Zigbee2MQTTResponse<"bridge/response/touchlink/scan">>;
|
||||
/**
|
||||
* Utils
|
||||
*/
|
||||
changeEntityOptions<T extends "device" | "group">(entityType: T, message: KeyValue | string): Promise<Zigbee2MQTTResponse<T extends "device" ? "bridge/response/device/options" : "bridge/response/group/options">>;
|
||||
deviceReportingConfigure(message: string | KeyValue): Promise<Zigbee2MQTTResponse<"bridge/response/device/reporting/configure">>;
|
||||
deviceReportingRead(message: string | KeyValue): Promise<Zigbee2MQTTResponse<"bridge/response/device/reporting/read">>;
|
||||
deviceInterview(message: string | KeyValue): Promise<Zigbee2MQTTResponse<"bridge/response/device/interview">>;
|
||||
deviceGenerateExternalDefinition(message: string | KeyValue): Promise<Zigbee2MQTTResponse<"bridge/response/device/generate_external_definition">>;
|
||||
action(message: string | KeyValue): Promise<Zigbee2MQTTResponse<"bridge/response/action">>;
|
||||
renameEntity<T extends "device" | "group">(entityType: T, message: string | KeyValue): Promise<Zigbee2MQTTResponse<T extends "device" ? "bridge/response/device/rename" : "bridge/response/group/rename">>;
|
||||
removeEntity<T extends "device" | "group">(entityType: T, message: string | KeyValue): Promise<Zigbee2MQTTResponse<T extends "device" ? "bridge/response/device/remove" : "bridge/response/group/remove">>;
|
||||
getEntity(type: "group", id: string): Group;
|
||||
getEntity(type: "device", id: string): Device;
|
||||
getEntity(type: "group" | "device", id: string): Device | Group;
|
||||
publishInfo(): Promise<void>;
|
||||
publishDevices(): Promise<void>;
|
||||
publishGroups(): Promise<void>;
|
||||
publishDefinitions(): Promise<void>;
|
||||
getDefinitionPayload(device: Device): Zigbee2MQTTDevice["definition"] | undefined;
|
||||
}
|
||||
//# sourceMappingURL=bridge.d.ts.map
|
||||
Vendored
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"bridge.d.ts","sourceRoot":"","sources":["../../lib/extension/bridge.ts"],"names":[],"mappings":"AASA,OAAO,MAAM,MAAM,iBAAiB,CAAC;AACrC,OAAO,KAAK,KAAK,MAAM,gBAAgB,CAAC;AACxC,OAAO,KAAK,EAAiB,iBAAiB,EAAE,mBAAmB,EAA+B,MAAM,cAAc,CAAC;AAOvH,OAAO,SAAS,MAAM,aAAa,CAAC;AAEpC,MAAM,CAAC,OAAO,OAAO,MAAO,SAAQ,SAAS;;IAIzC,OAAO,CAAC,kBAAkB,CAA0C;IACpE,OAAO,CAAC,qBAAqB,CAAqB;IAClD,OAAO,CAAC,+BAA+B,CAAqB;IAC5D,OAAO,CAAC,kBAAkB,CAAyB;IACnD,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,wBAAwB,CAAC,CAAS;IAC1C,OAAO,CAAC,wBAAwB,CAAC,CAAS;IAC1C,OAAO,CAAC,YAAY,CAAqB;IACzC,OAAO,CAAC,aAAa,CAyBnB;IAEa,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAyIpC;IAEc,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAGnC;IAEW,aAAa,CAAC,IAAI,EAAE,SAAS,CAAC,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAuBpE;IAED;;OAEG;IAES,aAAa,CAAC,OAAO,EAAE,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC,gCAAgC,CAAC,CAAC,CAEpH;IAEW,YAAY,CAAC,OAAO,EAAE,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC,+BAA+B,CAAC,CAAC,CAElH;IAEW,aAAa,CAAC,OAAO,EAAE,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC,yBAAyB,CAAC,CAAC,CAmC7G;IAEW,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC,mBAAmB,CAAC,+BAA+B,CAAC,CAAC,CAElH;IAEW,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC,mBAAmB,CAAC,8BAA8B,CAAC,CAAC,CAEhH;IAGW,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC,mBAAmB,CAAC,8BAA8B,CAAC,CAAC,CAEhH;IAEW,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC,mBAAmB,CAAC,mCAAmC,CAAC,CAAC,CAM1H;IAEW,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC,mBAAmB,CAAC,2BAA2B,CAAC,CAAC,CAW1G;IAEW,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC,mBAAmB,CAAC,+BAA+B,CAAC,CAAC,CAElH;IAEW,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC,mBAAmB,CAAC,8BAA8B,CAAC,CAAC,CAEhH;IAGW,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC,mBAAmB,CAAC,yBAAyB,CAAC,CAAC,CAKvG;IAEW,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC,mBAAmB,CAAC,wBAAwB,CAAC,CAAC,CAwBrG;IAEW,cAAc,CAAC,OAAO,EAAE,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC,kCAAkC,CAAC,CAAC,CASvH;IAEW,UAAU,CAAC,OAAO,EAAE,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC,6BAA6B,CAAC,CAAC,CAiC9G;IAEW,iBAAiB,CAAC,OAAO,EAAE,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC,oCAAoC,CAAC,CAAC,CAQ5H;IAEW,qBAAqB,CAAC,OAAO,EAAE,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC,yCAAyC,CAAC,CAAC,CAwBrI;IAEW,aAAa,CAAC,OAAO,EAAE,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC,gCAAgC,CAAC,CAAC,CAQpH;IAED;;OAEG;IAEG,mBAAmB,CAAC,CAAC,SAAS,QAAQ,GAAG,OAAO,EAClD,UAAU,EAAE,CAAC,EACb,OAAO,EAAE,QAAQ,GAAG,MAAM,GAC3B,OAAO,CAAC,mBAAmB,CAAC,CAAC,SAAS,QAAQ,GAAG,gCAAgC,GAAG,+BAA+B,CAAC,CAAC,CAsDvH;IAEW,wBAAwB,CAAC,OAAO,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC,mBAAmB,CAAC,4CAA4C,CAAC,CAAC,CAkD3I;IAEW,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC,mBAAmB,CAAC,uCAAuC,CAAC,CAAC,CAsCjI;IAEW,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC,mBAAmB,CAAC,kCAAkC,CAAC,CAAC,CAUxH;IAEW,gCAAgC,CACxC,OAAO,EAAE,MAAM,GAAG,QAAQ,GAC3B,OAAO,CAAC,mBAAmB,CAAC,qDAAqD,CAAC,CAAC,CASrF;IAEW,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC,mBAAmB,CAAC,wBAAwB,CAAC,CAAC,CAcrG;IAEK,YAAY,CAAC,CAAC,SAAS,QAAQ,GAAG,OAAO,EAC3C,UAAU,EAAE,CAAC,EACb,OAAO,EAAE,MAAM,GAAG,QAAQ,GAC3B,OAAO,CAAC,mBAAmB,CAAC,CAAC,SAAS,QAAQ,GAAG,+BAA+B,GAAG,8BAA8B,CAAC,CAAC,CAoCrH;IAEK,YAAY,CAAC,CAAC,SAAS,QAAQ,GAAG,OAAO,EAC3C,UAAU,EAAE,CAAC,EACb,OAAO,EAAE,MAAM,GAAG,QAAQ,GAC3B,OAAO,CAAC,mBAAmB,CAAC,CAAC,SAAS,QAAQ,GAAG,+BAA+B,GAAG,8BAA8B,CAAC,CAAC,CA+FrH;IAED,SAAS,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,GAAG,KAAK,CAAC;IAC5C,SAAS,CAAC,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC;IAC9C,SAAS,CAAC,IAAI,EAAE,OAAO,GAAG,QAAQ,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC;IAS1D,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CAiCjC;IAEK,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,CA6DpC;IAEK,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,CAoBnC;IAEK,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC,CAYxC;IAED,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,iBAAiB,CAAC,YAAY,CAAC,GAAG,SAAS,CA6BhF;CACJ"}
|
||||
Vendored
+14
@@ -0,0 +1,14 @@
|
||||
import Extension from "./extension";
|
||||
/**
|
||||
* This extension calls the zigbee-herdsman-converters definition configure() method
|
||||
*/
|
||||
export default class Configure extends Extension {
|
||||
private configuring;
|
||||
private attempts;
|
||||
private topic;
|
||||
private onReconfigure;
|
||||
private onMQTTMessage;
|
||||
start(): Promise<void>;
|
||||
private configure;
|
||||
}
|
||||
//# sourceMappingURL=configure.d.ts.map
|
||||
Vendored
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"configure.d.ts","sourceRoot":"","sources":["../../lib/extension/configure.ts"],"names":[],"mappings":"AAOA,OAAO,SAAS,MAAM,aAAa,CAAC;AAEpC;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,SAAU,SAAQ,SAAS;IAC5C,OAAO,CAAC,WAAW,CAAqB;IACxC,OAAO,CAAC,QAAQ,CAA6B;IAC7C,OAAO,CAAC,KAAK,CAAuE;YAEhE,aAAa;YAUb,aAAa;IA8BxB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CA0B9B;YAEa,SAAS;CAqE1B"}
|
||||
Vendored
+34
@@ -0,0 +1,34 @@
|
||||
declare abstract class Extension {
|
||||
protected zigbee: Zigbee;
|
||||
protected mqtt: Mqtt;
|
||||
protected state: State;
|
||||
protected publishEntityState: PublishEntityState;
|
||||
protected eventBus: EventBus;
|
||||
protected enableDisableExtension: (enable: boolean, name: string) => Promise<void>;
|
||||
protected restartCallback: () => Promise<void>;
|
||||
protected addExtension: (extension: Extension) => Promise<void>;
|
||||
/**
|
||||
* Besides initializing variables, the constructor should do nothing!
|
||||
*
|
||||
* @param {Zigbee} zigbee Zigbee controller
|
||||
* @param {Mqtt} mqtt MQTT controller
|
||||
* @param {State} state State controller
|
||||
* @param {Function} publishEntityState Method to publish device state to MQTT.
|
||||
* @param {EventBus} eventBus The event bus
|
||||
* @param {enableDisableExtension} enableDisableExtension Enable/disable extension method
|
||||
* @param {restartCallback} restartCallback Restart Zigbee2MQTT
|
||||
* @param {addExtension} addExtension Add an extension
|
||||
*/
|
||||
constructor(zigbee: Zigbee, mqtt: Mqtt, state: State, publishEntityState: PublishEntityState, eventBus: EventBus, enableDisableExtension: (enable: boolean, name: string) => Promise<void>, restartCallback: () => Promise<void>, addExtension: (extension: Extension) => Promise<void>);
|
||||
/**
|
||||
* Is called once the extension has to start
|
||||
*/
|
||||
start(): Promise<void>;
|
||||
/**
|
||||
* Is called once the extension has to stop
|
||||
*/
|
||||
stop(): Promise<void>;
|
||||
adjustMessageBeforePublish(_entity: Group | Device, _message: KeyValue): void;
|
||||
}
|
||||
export default Extension;
|
||||
//# sourceMappingURL=extension.d.ts.map
|
||||
Vendored
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"extension.d.ts","sourceRoot":"","sources":["../../lib/extension/extension.ts"],"names":[],"mappings":"AAAA,uBAAe,SAAS;IACpB,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC;IACrB,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC;IACvB,SAAS,CAAC,kBAAkB,EAAE,kBAAkB,CAAC;IACjD,SAAS,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC7B,SAAS,CAAC,sBAAsB,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACnF,SAAS,CAAC,eAAe,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/C,SAAS,CAAC,YAAY,EAAE,CAAC,SAAS,EAAE,SAAS,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAEhE;;;;;;;;;;;OAWG;IACH,YACI,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,KAAK,EACZ,kBAAkB,EAAE,kBAAkB,EACtC,QAAQ,EAAE,QAAQ,EAClB,sBAAsB,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,EACxE,eAAe,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,EACpC,YAAY,EAAE,CAAC,SAAS,EAAE,SAAS,KAAK,OAAO,CAAC,IAAI,CAAC,EAUxD;IAED;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAG;IAE/B;;OAEG;IAGG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAE1B;IAEM,0BAA0B,CAAC,OAAO,EAAE,KAAK,GAAG,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAG;CAC1F;eAEc,SAAS"}
|
||||
+10
@@ -0,0 +1,10 @@
|
||||
import type { ExternalDefinitionWithExtend } from "zigbee-herdsman-converters";
|
||||
import ExternalJSExtension from "./externalJS";
|
||||
type TModule = ExternalDefinitionWithExtend | ExternalDefinitionWithExtend[];
|
||||
export default class ExternalConverters extends ExternalJSExtension<TModule> {
|
||||
constructor(zigbee: Zigbee, mqtt: Mqtt, state: State, publishEntityState: PublishEntityState, eventBus: EventBus, enableDisableExtension: (enable: boolean, name: string) => Promise<void>, restartCallback: () => Promise<void>, addExtension: (extension: Extension) => Promise<void>);
|
||||
protected removeJS(name: string, _mod: TModule): Promise<void>;
|
||||
protected loadJS(name: string, mod: TModule, newName?: string): Promise<void>;
|
||||
}
|
||||
export {};
|
||||
//# sourceMappingURL=externalConverters.d.ts.map
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"externalConverters.d.ts","sourceRoot":"","sources":["../../lib/extension/externalConverters.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,4BAA4B,EAAC,MAAM,4BAA4B,CAAC;AAK7E,OAAO,mBAAmB,MAAM,cAAc,CAAC;AAE/C,KAAK,OAAO,GAAG,4BAA4B,GAAG,4BAA4B,EAAE,CAAC;AAE7E,MAAM,CAAC,OAAO,OAAO,kBAAmB,SAAQ,mBAAmB,CAAC,OAAO,CAAC;IACxE,YACI,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,KAAK,EACZ,kBAAkB,EAAE,kBAAkB,EACtC,QAAQ,EAAE,QAAQ,EAClB,sBAAsB,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,EACxE,eAAe,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,EACpC,YAAY,EAAE,CAAC,SAAS,EAAE,SAAS,KAAK,OAAO,CAAC,IAAI,CAAC,EAcxD;IAED,UAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAInE;IAED,UAAgB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAyBlF;CACJ"}
|
||||
+10
@@ -0,0 +1,10 @@
|
||||
import type Extension from "./extension";
|
||||
import ExternalJSExtension from "./externalJS";
|
||||
type TModule = new (...args: ConstructorParameters<typeof Extension>) => Extension;
|
||||
export default class ExternalExtensions extends ExternalJSExtension<TModule> {
|
||||
constructor(zigbee: Zigbee, mqtt: Mqtt, state: State, publishEntityState: PublishEntityState, eventBus: EventBus, enableDisableExtension: (enable: boolean, name: string) => Promise<void>, restartCallback: () => Promise<void>, addExtension: (extension: Extension) => Promise<void>);
|
||||
protected removeJS(_name: string, mod: TModule): Promise<void>;
|
||||
protected loadJS(name: string, mod: TModule, newName?: string): Promise<void>;
|
||||
}
|
||||
export {};
|
||||
//# sourceMappingURL=externalExtensions.d.ts.map
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"externalExtensions.d.ts","sourceRoot":"","sources":["../../lib/extension/externalExtensions.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,SAAS,MAAM,aAAa,CAAC;AACzC,OAAO,mBAAmB,MAAM,cAAc,CAAC;AAE/C,KAAK,OAAO,GAAG,KAAK,GAAG,IAAI,EAAE,qBAAqB,CAAC,OAAO,SAAS,CAAC,KAAK,SAAS,CAAC;AAEnF,MAAM,CAAC,OAAO,OAAO,kBAAmB,SAAQ,mBAAmB,CAAC,OAAO,CAAC;IACxE,YACI,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,KAAK,EACZ,kBAAkB,EAAE,kBAAkB,EACtC,QAAQ,EAAE,QAAQ,EAClB,sBAAsB,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,EACxE,eAAe,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,EACpC,YAAY,EAAE,CAAC,SAAS,EAAE,SAAS,KAAK,OAAO,CAAC,IAAI,CAAC,EAcxD;IAED,UAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAEnE;IAED,UAAgB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA+BlF;CACJ"}
|
||||
Vendored
+33
@@ -0,0 +1,33 @@
|
||||
import Extension from "./extension";
|
||||
export default abstract class ExternalJSExtension<M> extends Extension {
|
||||
protected folderName: string;
|
||||
protected mqttTopic: string;
|
||||
protected requestRegex: RegExp;
|
||||
protected basePath: string;
|
||||
protected nodeModulesSymlinked: boolean;
|
||||
constructor(zigbee: Zigbee, mqtt: Mqtt, state: State, publishEntityState: PublishEntityState, eventBus: EventBus, enableDisableExtension: (enable: boolean, name: string) => Promise<void>, restartCallback: () => Promise<void>, addExtension: (extension: Extension) => Promise<void>, mqttTopic: string, folderName: string);
|
||||
/**
|
||||
* In case the external JS is not in the Z2M install dir (e.g. when `ZIGBEE2MQTT_DATA` is used), the external
|
||||
* JS cannot import from `node_modules`.
|
||||
* To workaround this create a symlink to `node_modules` in the external JS dir.
|
||||
* https://nodejs.org/api/esm.html#no-node_path
|
||||
*/
|
||||
private symlinkNodeModulesIfNecessary;
|
||||
start(): Promise<void>;
|
||||
stop(): Promise<void>;
|
||||
private getFilePath;
|
||||
protected getFileCode(name: string): string;
|
||||
protected getFiles(): Generator<{
|
||||
name: string;
|
||||
code: string;
|
||||
}>;
|
||||
onMQTTMessage(data: eventdata.MQTTMessage): Promise<void>;
|
||||
protected abstract removeJS(name: string, mod: M): Promise<void>;
|
||||
protected abstract loadJS(name: string, mod: M, newName?: string): Promise<void>;
|
||||
private remove;
|
||||
private save;
|
||||
private loadFiles;
|
||||
private publishExternalJS;
|
||||
private importFile;
|
||||
}
|
||||
//# sourceMappingURL=externalJS.d.ts.map
|
||||
Vendored
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"externalJS.d.ts","sourceRoot":"","sources":["../../lib/extension/externalJS.ts"],"names":[],"mappings":"AAUA,OAAO,SAAS,MAAM,aAAa,CAAC;AAKpC,MAAM,CAAC,OAAO,CAAC,QAAQ,OAAO,mBAAmB,CAAC,CAAC,CAAE,SAAQ,SAAS;IAClE,SAAS,CAAC,UAAU,EAAE,MAAM,CAAC;IAC7B,SAAS,CAAC,SAAS,EAAE,MAAM,CAAC;IAC5B,SAAS,CAAC,YAAY,EAAE,MAAM,CAAC;IAC/B,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC3B,SAAS,CAAC,oBAAoB,UAAS;IAEvC,YACI,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,KAAK,EACZ,kBAAkB,EAAE,kBAAkB,EACtC,QAAQ,EAAE,QAAQ,EAClB,sBAAsB,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,EACxE,eAAe,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,EACpC,YAAY,EAAE,CAAC,SAAS,EAAE,SAAS,KAAK,OAAO,CAAC,IAAI,CAAC,EACrD,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAQrB;IAED;;;;;OAKG;IACH,OAAO,CAAC,6BAA6B;IAuBtB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAKpC;IAEc,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CASnC;IAED,OAAO,CAAC,WAAW;IAQnB,SAAS,CAAC,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE1C;IAED,SAAS,CAAE,QAAQ,IAAI,SAAS,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAC,CAAC,CAQ7D;IAEW,aAAa,CAAC,IAAI,EAAE,SAAS,CAAC,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CA4BpE;IAED,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEjE,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;YAE7D,MAAM;YAwBN,IAAI;YA+BV,SAAS;YAqBT,iBAAiB;YAQjB,UAAU;CAc3B"}
|
||||
Vendored
+18
@@ -0,0 +1,18 @@
|
||||
import Extension from "./extension";
|
||||
/**
|
||||
* This extension servers the frontend
|
||||
*/
|
||||
export declare class Frontend extends Extension {
|
||||
private mqttBaseTopic;
|
||||
private server;
|
||||
private wss;
|
||||
private baseUrl;
|
||||
constructor(zigbee: Zigbee, mqtt: Mqtt, state: State, publishEntityState: PublishEntityState, eventBus: EventBus, enableDisableExtension: (enable: boolean, name: string) => Promise<void>, restartCallback: () => Promise<void>, addExtension: (extension: Extension) => Promise<void>);
|
||||
start(): Promise<void>;
|
||||
stop(): Promise<void>;
|
||||
private onUpgrade;
|
||||
private onWebSocketConnection;
|
||||
private onMQTTPublishMessageOrEntityState;
|
||||
}
|
||||
export default Frontend;
|
||||
//# sourceMappingURL=frontend.d.ts.map
|
||||
Vendored
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"frontend.d.ts","sourceRoot":"","sources":["../../lib/extension/frontend.ts"],"names":[],"mappings":"AAeA,OAAO,SAAS,MAAM,aAAa,CAAC;AAEpC;;GAEG;AACH,qBAAa,QAAS,SAAQ,SAAS;IACnC,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,MAAM,CAAqB;IACnC,OAAO,CAAC,GAAG,CAAoB;IAC/B,OAAO,CAAC,OAAO,CAAS;IAExB,YACI,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,KAAK,EACZ,kBAAkB,EAAE,kBAAkB,EACtC,QAAQ,EAAE,QAAQ,EAClB,sBAAsB,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,EACxE,eAAe,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,EACpC,YAAY,EAAE,CAAC,SAAS,EAAE,SAAS,KAAK,OAAO,CAAC,IAAI,CAAC,EAQxD;IAEc,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAqFpC;IAEc,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAanC;IAEK,OAAO,CAAC,SAAS;IAcjB,OAAO,CAAC,qBAAqB;IAsC7B,OAAO,CAAC,iCAAiC;CA4BlD;eAEc,QAAQ"}
|
||||
Vendored
+13
@@ -0,0 +1,13 @@
|
||||
import Extension from "./extension";
|
||||
export default class Groups extends Extension {
|
||||
#private;
|
||||
private lastOptimisticState;
|
||||
start(): Promise<void>;
|
||||
onStateChange(data: eventdata.StateChange): Promise<void>;
|
||||
private shouldPublishPayloadForGroup;
|
||||
private areAllMembersOffOrClosed;
|
||||
private parseMQTTMessage;
|
||||
private onMQTTMessage;
|
||||
private publishResponse;
|
||||
}
|
||||
//# sourceMappingURL=groups.d.ts.map
|
||||
Vendored
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"groups.d.ts","sourceRoot":"","sources":["../../lib/extension/groups.ts"],"names":[],"mappings":"AAWA,OAAO,SAAS,MAAM,aAAa,CAAC;AA0BpC,MAAM,CAAC,OAAO,OAAO,MAAO,SAAQ,SAAS;;IAEzC,OAAO,CAAC,mBAAmB,CAA+B;IAG3C,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAGpC;IAEW,aAAa,CAAC,IAAI,EAAE,SAAS,CAAC,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAoGpE;IAED,OAAO,CAAC,4BAA4B;IASpC,OAAO,CAAC,wBAAwB;IAyBhC,OAAO,CAAC,gBAAgB;YAsEJ,aAAa;YA6DnB,eAAe;CAahC"}
|
||||
Vendored
+8
@@ -0,0 +1,8 @@
|
||||
import Extension from "./extension";
|
||||
export default class Health extends Extension {
|
||||
#private;
|
||||
start(): Promise<void>;
|
||||
stop(): Promise<void>;
|
||||
clearStats(): void;
|
||||
}
|
||||
//# sourceMappingURL=health.d.ts.map
|
||||
Vendored
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"health.d.ts","sourceRoot":"","sources":["../../lib/extension/health.ts"],"names":[],"mappings":"AAKA,OAAO,SAAS,MAAM,aAAa,CAAC;AAOpC,MAAM,CAAC,OAAO,OAAO,MAAO,SAAQ,SAAS;;IAG1B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAIpC;IAEc,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAGnC;IAED,UAAU,IAAI,IAAI,CAIjB;CA+CJ"}
|
||||
Vendored
+86
@@ -0,0 +1,86 @@
|
||||
import type { Zh } from "zigbee-herdsman-converters/lib/types";
|
||||
import Extension from "./extension";
|
||||
interface MockProperty {
|
||||
property: string;
|
||||
value: KeyValue | string | null;
|
||||
}
|
||||
interface DiscoveryEntry {
|
||||
mockProperties: MockProperty[];
|
||||
type: string;
|
||||
object_id: string;
|
||||
discovery_payload: KeyValue;
|
||||
endpoint?: Zh.Endpoint;
|
||||
}
|
||||
interface ActionData {
|
||||
action: string;
|
||||
button?: string;
|
||||
scene?: string;
|
||||
region?: string;
|
||||
}
|
||||
/**
|
||||
* This class handles the bridge entity configuration for Home Assistant Discovery.
|
||||
*/
|
||||
declare class Bridge {
|
||||
private coordinatorIeeeAddress;
|
||||
private coordinatorType;
|
||||
private coordinatorFirmwareVersion;
|
||||
private discoveryEntries;
|
||||
readonly options: {
|
||||
ID?: string;
|
||||
homeassistant?: KeyValue;
|
||||
};
|
||||
get ID(): string;
|
||||
get name(): string;
|
||||
get hardwareVersion(): string;
|
||||
get firmwareVersion(): string;
|
||||
get configs(): DiscoveryEntry[];
|
||||
constructor(ieeeAdress: string, version: zh.CoordinatorVersion, discovery: DiscoveryEntry[]);
|
||||
isDevice(): this is Device;
|
||||
isGroup(): this is Group;
|
||||
}
|
||||
/**
|
||||
* This extensions handles integration with HomeAssistant
|
||||
*/
|
||||
export declare class HomeAssistant extends Extension {
|
||||
private discovered;
|
||||
private discoveryTopic;
|
||||
private discoveryRegex;
|
||||
private discoveryRegexWoTopic;
|
||||
private groupMemberLookup;
|
||||
private statusTopic;
|
||||
private legacyActionSensor;
|
||||
private experimentalEventEntities;
|
||||
private zigbee2MQTTVersion;
|
||||
private discoveryOrigin;
|
||||
private bridge;
|
||||
private bridgeIdentifier;
|
||||
private actionValueTemplate;
|
||||
constructor(zigbee: Zigbee, mqtt: Mqtt, state: State, publishEntityState: PublishEntityState, eventBus: EventBus, enableDisableExtension: (enable: boolean, name: string) => Promise<void>, restartCallback: () => Promise<void>, addExtension: (extension: Extension) => Promise<void>);
|
||||
start(): Promise<void>;
|
||||
private getDiscovered;
|
||||
private exposeToConfig;
|
||||
onEntityRemoved(data: eventdata.EntityRemoved): Promise<void>;
|
||||
onGroupMembersChanged(data: eventdata.GroupMembersChanged): Promise<void>;
|
||||
onPublishEntityState(data: eventdata.PublishEntityState): Promise<void>;
|
||||
onEntityRenamed(data: eventdata.EntityRenamed): Promise<void>;
|
||||
private getConfigs;
|
||||
private discover;
|
||||
private onMQTTMessage;
|
||||
onZigbeeEvent(data: {
|
||||
device: Device;
|
||||
}): Promise<void>;
|
||||
onScenesChanged(data: eventdata.ScenesChanged): Promise<void>;
|
||||
private getDevicePayload;
|
||||
adjustMessageBeforePublish(entity: Device | Group | Bridge, message: KeyValue): void;
|
||||
private getEncodedBaseTopic;
|
||||
private getDiscoveryTopic;
|
||||
private publishDeviceTriggerDiscover;
|
||||
private getBridgeEntity;
|
||||
parseActionValue(action: string): ActionData;
|
||||
private buildAction;
|
||||
private prepareActionEventTypes;
|
||||
private parseGroupsFromRegex;
|
||||
private getActionValueTemplate;
|
||||
}
|
||||
export default HomeAssistant;
|
||||
//# sourceMappingURL=homeassistant.d.ts.map
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"homeassistant.d.ts","sourceRoot":"","sources":["../../lib/extension/homeassistant.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAC,EAAE,EAAC,MAAM,sCAAsC,CAAC;AAK7D,OAAO,SAAS,MAAM,aAAa,CAAC;AAEpC,UAAU,YAAY;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,QAAQ,GAAG,MAAM,GAAG,IAAI,CAAC;CACnC;AAED,UAAU,cAAc;IACpB,cAAc,EAAE,YAAY,EAAE,CAAC;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,iBAAiB,EAAE,QAAQ,CAAC;IAC5B,QAAQ,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC;CAC1B;AASD,UAAU,UAAU;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB;AAoZD;;GAEG;AACH,cAAM,MAAM;IACR,OAAO,CAAC,sBAAsB,CAAS;IACvC,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,0BAA0B,CAAS;IAC3C,OAAO,CAAC,gBAAgB,CAAmB;IAE3C,QAAQ,CAAC,OAAO,EAAE;QACd,EAAE,CAAC,EAAE,MAAM,CAAC;QACZ,aAAa,CAAC,EAAE,QAAQ,CAAC;KAC5B,CAAC;IAGF,IAAI,EAAE,IAAI,MAAM,CAEf;IACD,IAAI,IAAI,IAAI,MAAM,CAEjB;IACD,IAAI,eAAe,IAAI,MAAM,CAE5B;IACD,IAAI,eAAe,IAAI,MAAM,CAE5B;IACD,IAAI,OAAO,IAAI,cAAc,EAAE,CAE9B;IAED,YAAY,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,CAAC,kBAAkB,EAAE,SAAS,EAAE,cAAc,EAAE,EAY1F;IAED,QAAQ,IAAI,IAAI,IAAI,MAAM,CAEzB;IACD,OAAO,IAAI,IAAI,IAAI,KAAK,CAEvB;CACJ;AAED;;GAEG;AACH,qBAAa,aAAc,SAAQ,SAAS;IACxC,OAAO,CAAC,UAAU,CAAiC;IACnD,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,qBAAqB,CAA8B;IAC3D,OAAO,CAAC,iBAAiB,CAA6B;IACtD,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,kBAAkB,CAAU;IACpC,OAAO,CAAC,yBAAyB,CAAU;IAE3C,OAAO,CAAC,kBAAkB,CAAS;IAEnC,OAAO,CAAC,eAAe,CAA0C;IAEjE,OAAO,CAAC,MAAM,CAAS;IAEvB,OAAO,CAAC,gBAAgB,CAAS;IACjC,OAAO,CAAC,mBAAmB,CAAS;IAEpC,YACI,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,KAAK,EACZ,kBAAkB,EAAE,kBAAkB,EACtC,QAAQ,EAAE,QAAQ,EAClB,sBAAsB,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,EACxE,eAAe,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,EACpC,YAAY,EAAE,CAAC,SAAS,EAAE,SAAS,KAAK,OAAO,CAAC,IAAI,CAAC,EAuBxD;IAEc,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAyDpC;IAED,OAAO,CAAC,aAAa;IAQrB,OAAO,CAAC,cAAc;IAs3BV,eAAe,CAAC,IAAI,EAAE,SAAS,CAAC,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CASxE;IAEW,qBAAqB,CAAC,IAAI,EAAE,SAAS,CAAC,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CAEpF;IAEW,oBAAoB,CAAC,IAAI,EAAE,SAAS,CAAC,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAkElF;IAEW,eAAe,CAAC,IAAI,EAAE,SAAS,CAAC,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CA0BxE;IAED,OAAO,CAAC,UAAU;YA8HJ,QAAQ;YAuSF,aAAa;IAkErB,aAAa,CAAC,IAAI,EAAE;QAAC,MAAM,EAAE,MAAM,CAAA;KAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAI/D;IAEW,eAAe,CAAC,IAAI,EAAE,SAAS,CAAC,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAsBxE;IAED,OAAO,CAAC,gBAAgB;IAoDf,0BAA0B,CAAC,MAAM,EAAE,MAAM,GAAG,KAAK,GAAG,MAAM,EAAE,OAAO,EAAE,QAAQ,GAAG,IAAI,CAoB5F;IAED,OAAO,CAAC,mBAAmB;IAQ3B,OAAO,CAAC,iBAAiB;YAKX,4BAA4B;IA2C1C,OAAO,CAAC,eAAe;IA0IvB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,CAwB3C;IAED,OAAO,CAAC,WAAW;IAWnB,OAAO,CAAC,uBAAuB;IAI/B,OAAO,CAAC,oBAAoB;IAI5B,OAAO,CAAC,sBAAsB;CA0BjC;eAEc,aAAa"}
|
||||
Vendored
+15
@@ -0,0 +1,15 @@
|
||||
import type { Zigbee2MQTTNetworkMap } from "../types/api";
|
||||
import Extension from "./extension";
|
||||
/**
|
||||
* This extension creates a network map
|
||||
*/
|
||||
export default class NetworkMap extends Extension {
|
||||
#private;
|
||||
start(): Promise<void>;
|
||||
onMQTTMessage(data: eventdata.MQTTMessage): Promise<void>;
|
||||
raw(topology: Zigbee2MQTTNetworkMap): Zigbee2MQTTNetworkMap;
|
||||
graphviz(topology: Zigbee2MQTTNetworkMap): string;
|
||||
plantuml(topology: Zigbee2MQTTNetworkMap): string;
|
||||
networkScan(includeRoutes: boolean): Promise<Zigbee2MQTTNetworkMap>;
|
||||
}
|
||||
//# sourceMappingURL=networkMap.d.ts.map
|
||||
Vendored
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"networkMap.d.ts","sourceRoot":"","sources":["../../lib/extension/networkMap.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAiB,qBAAqB,EAAC,MAAM,cAAc,CAAC;AAKxE,OAAO,SAAS,MAAM,aAAa,CAAC;AAIpC;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,UAAW,SAAQ,SAAS;;IAI9B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAEpC;IAEW,aAAa,CAAC,IAAI,EAAE,SAAS,CAAC,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAmCpE;IAED,GAAG,CAAC,QAAQ,EAAE,qBAAqB,GAAG,qBAAqB,CAE1D;IAED,QAAQ,CAAC,QAAQ,EAAE,qBAAqB,GAAG,MAAM,CAqEhD;IAED,QAAQ,CAAC,QAAQ,EAAE,qBAAqB,GAAG,MAAM,CAmDhD;IAEK,WAAW,CAAC,aAAa,EAAE,OAAO,GAAG,OAAO,CAAC,qBAAqB,CAAC,CA8IxE;CACJ"}
|
||||
Vendored
+11
@@ -0,0 +1,11 @@
|
||||
import Extension from "./extension";
|
||||
/**
|
||||
* This extension calls the zigbee-herdsman-converters onEvent.
|
||||
*/
|
||||
export default class OnEvent extends Extension {
|
||||
#private;
|
||||
start(): Promise<void>;
|
||||
stop(): Promise<void>;
|
||||
private callOnEvent;
|
||||
}
|
||||
//# sourceMappingURL=onEvent.d.ts.map
|
||||
Vendored
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"onEvent.d.ts","sourceRoot":"","sources":["../../lib/extension/onEvent.ts"],"names":[],"mappings":"AAGA,OAAO,SAAS,MAAM,aAAa,CAAC;AAEpC;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,OAAQ,SAAQ,SAAS;;IAW3B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAuCpC;IAEc,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CASnC;YAEa,WAAW;CAmB5B"}
|
||||
Vendored
+22
@@ -0,0 +1,22 @@
|
||||
import Extension from "./extension";
|
||||
type UpdateState = "updating" | "idle" | "available" | "scheduled";
|
||||
export interface UpdatePayload {
|
||||
update: {
|
||||
progress?: number;
|
||||
remaining?: number;
|
||||
state: UpdateState;
|
||||
installed_version: number | null;
|
||||
latest_version: number | null;
|
||||
latest_source: string | null;
|
||||
latest_release_notes: string | null;
|
||||
};
|
||||
}
|
||||
export default class OTAUpdate extends Extension {
|
||||
#private;
|
||||
start(): Promise<void>;
|
||||
clearState(): void;
|
||||
private onZigbeeEvent;
|
||||
onMQTTMessage(data: eventdata.MQTTMessage): Promise<void>;
|
||||
}
|
||||
export {};
|
||||
//# sourceMappingURL=otaUpdate.d.ts.map
|
||||
Vendored
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"otaUpdate.d.ts","sourceRoot":"","sources":["../../lib/extension/otaUpdate.ts"],"names":[],"mappings":"AAaA,OAAO,SAAS,MAAM,aAAa,CAAC;AAEpC,KAAK,WAAW,GAAG,UAAU,GAAG,MAAM,GAAG,WAAW,GAAG,WAAW,CAAC;AAEnE,MAAM,WAAW,aAAa;IAC1B,MAAM,EAAE;QACJ,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,KAAK,EAAE,WAAW,CAAC;QACnB,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;QACjC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;QAC9B,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;QAC7B,oBAAoB,EAAE,MAAM,GAAG,IAAI,CAAC;KACvC,CAAC;CACL;AAuBD,MAAM,CAAC,OAAO,OAAO,SAAU,SAAQ,SAAS;;IAS7B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAepC;IAGD,UAAU,IAAI,IAAI,CAGjB;YAWmB,aAAa;IAmJrB,aAAa,CAAC,IAAI,EAAE,SAAS,CAAC,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAsPpE;CAwDJ"}
|
||||
Vendored
+18
@@ -0,0 +1,18 @@
|
||||
import Extension from "./extension";
|
||||
export declare const loadTopicGetSetRegex: () => void;
|
||||
interface ParsedTopic {
|
||||
ID: string;
|
||||
endpoint: string | undefined;
|
||||
attribute: string;
|
||||
type: "get" | "set";
|
||||
}
|
||||
export default class Publish extends Extension {
|
||||
start(): Promise<void>;
|
||||
parseTopic(topic: string): ParsedTopic | undefined;
|
||||
parseMessage(parsedTopic: ParsedTopic, data: eventdata.MQTTMessage): KeyValue | undefined;
|
||||
updateMessageHomeAssistant(message: KeyValue, entityState: KeyValue): void;
|
||||
onMQTTMessage(data: eventdata.MQTTMessage): Promise<void>;
|
||||
private getDefinitionConverters;
|
||||
}
|
||||
export {};
|
||||
//# sourceMappingURL=publish.d.ts.map
|
||||
Vendored
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"publish.d.ts","sourceRoot":"","sources":["../../lib/extension/publish.ts"],"names":[],"mappings":"AAQA,OAAO,SAAS,MAAM,aAAa,CAAC;AAKpC,eAAO,MAAM,oBAAoB,QAAO,IAEvC,CAAC;AAKF,UAAU,WAAW;IACjB,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,KAAK,GAAG,KAAK,CAAC;CACvB;AAED,MAAM,CAAC,OAAO,OAAO,OAAQ,SAAQ,SAAS;IAE3B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAGpC;IAED,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS,CAsBjD;IAED,YAAY,CAAC,WAAW,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,CAAC,WAAW,GAAG,QAAQ,GAAG,SAAS,CAcxF;IAED,0BAA0B,CAAC,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,QAAQ,GAAG,IAAI,CAezE;IAEW,aAAa,CAAC,IAAI,EAAE,SAAS,CAAC,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAqNpE;IAED,OAAO,CAAC,uBAAuB;CAOlC"}
|
||||
Vendored
+13
@@ -0,0 +1,13 @@
|
||||
import Extension from "./extension";
|
||||
export default class Receive extends Extension {
|
||||
private elapsed;
|
||||
private debouncers;
|
||||
private throttlers;
|
||||
start(): Promise<void>;
|
||||
onPublishEntityState(data: eventdata.PublishEntityState): void;
|
||||
publishDebounce(device: Device, payload: KeyValue, time: number, debounceIgnore: string[] | undefined): void;
|
||||
publishThrottle(device: Device, payload: KeyValue, time: number): Promise<void>;
|
||||
isPayloadConflicted(newPayload: KeyValue, oldPayload: KeyValue, debounceIgnore: string[] | undefined): boolean;
|
||||
onDeviceMessage(data: eventdata.DeviceMessage): Promise<void>;
|
||||
}
|
||||
//# sourceMappingURL=receive.d.ts.map
|
||||
Vendored
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"receive.d.ts","sourceRoot":"","sources":["../../lib/extension/receive.ts"],"names":[],"mappings":"AASA,OAAO,SAAS,MAAM,aAAa,CAAC;AAIpC,MAAM,CAAC,OAAO,OAAO,OAAQ,SAAQ,SAAS;IAE1C,OAAO,CAAC,OAAO,CAA6B;IAC5C,OAAO,CAAC,UAAU,CAAqE;IACvF,OAAO,CAAC,UAAU,CAAoD;IAGvD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAGpC;IAEK,oBAAoB,CAAC,IAAI,EAAE,SAAS,CAAC,kBAAkB,GAAG,IAAI,CAgBnE;IAED,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,GAAG,SAAS,GAAG,IAAI,CA0B3G;IAEK,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAYpF;IAMD,mBAAmB,CAAC,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,EAAE,GAAG,SAAS,GAAG,OAAO,CAU7G;IAEW,eAAe,CAAC,IAAI,EAAE,SAAS,CAAC,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAuFxE;CACJ"}
|
||||
Vendored
+28
@@ -0,0 +1,28 @@
|
||||
import type { OtaExtraMetas } from "zigbee-herdsman/dist/controller/tstype";
|
||||
import type { CustomClusters } from "zigbee-herdsman/dist/zspec/zcl/definition/tstype";
|
||||
import * as zhc from "zigbee-herdsman-converters";
|
||||
export default class Device {
|
||||
#private;
|
||||
zh: zh.Device;
|
||||
definition?: zhc.Definition;
|
||||
private _definitionModelID?;
|
||||
get ieeeAddr(): string;
|
||||
get ID(): string;
|
||||
get options(): DeviceOptionsWithId;
|
||||
get name(): string;
|
||||
get isSupported(): boolean;
|
||||
get customClusters(): CustomClusters;
|
||||
get otaExtraMetas(): OtaExtraMetas;
|
||||
get interviewed(): boolean;
|
||||
constructor(device: zh.Device);
|
||||
exposes(): zhc.Expose[];
|
||||
resolveDefinition(ignoreCache?: boolean): Promise<void>;
|
||||
reInterview(eventBus: EventBus): Promise<void>;
|
||||
ensureInSettings(): void;
|
||||
endpoint(key?: string | number): zh.Endpoint | undefined;
|
||||
endpointName(endpoint: zh.Endpoint): string | undefined;
|
||||
getEndpointNames(): string[];
|
||||
isDevice(): this is Device;
|
||||
isGroup(): this is Group;
|
||||
}
|
||||
//# sourceMappingURL=device.d.ts.map
|
||||
Vendored
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"device.d.ts","sourceRoot":"","sources":["../../lib/model/device.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,wCAAwC,CAAC;AAC1E,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,kDAAkD,CAAC;AACrF,OAAO,KAAK,GAAG,MAAM,4BAA4B,CAAC;AAYlD,MAAM,CAAC,OAAO,OAAO,MAAM;;IAChB,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,GAAG,CAAC,UAAU,CAAC;IACnC,OAAO,CAAC,kBAAkB,CAAC,CAAS;IAGpC,IAAI,QAAQ,IAAI,MAAM,CAErB;IAED,IAAI,EAAE,IAAI,MAAM,CAEf;IACD,IAAI,OAAO,IAAI,mBAAmB,CAGjC;IACD,IAAI,IAAI,IAAI,MAAM,CAEjB;IACD,IAAI,WAAW,IAAI,OAAO,CAEzB;IACD,IAAI,cAAc,IAAI,cAAc,CAEnC;IACD,IAAI,aAAa,IAAI,aAAa,CAEjC;IACD,IAAI,WAAW,IAAI,OAAO,CAEzB;IAED,YAAY,MAAM,EAAE,EAAE,CAAC,MAAM,EAE5B;IAED,OAAO,IAAI,GAAG,CAAC,MAAM,EAAE,CAWtB;IAEK,iBAAiB,CAAC,WAAW,UAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAO1D;IAEK,WAAW,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAenD;IAED,gBAAgB,IAAI,IAAI,CAIvB;IAED,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,EAAE,CAAC,QAAQ,GAAG,SAAS,CAgBvD;IAED,YAAY,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,GAAG,MAAM,GAAG,SAAS,CAgBtD;IAED,gBAAgB,IAAI,MAAM,EAAE,CAY3B;IAED,QAAQ,IAAI,IAAI,IAAI,MAAM,CAEzB;IAED,OAAO,IAAI,IAAI,IAAI,KAAK,CAEvB;CACJ"}
|
||||
Vendored
+16
@@ -0,0 +1,16 @@
|
||||
import type * as zhc from "zigbee-herdsman-converters";
|
||||
export default class Group {
|
||||
zh: zh.Group;
|
||||
private resolveDevice;
|
||||
get ID(): number;
|
||||
get options(): GroupOptions;
|
||||
get name(): string;
|
||||
constructor(group: zh.Group, resolveDevice: (ieeeAddr: string) => Device | undefined);
|
||||
ensureInSettings(): void;
|
||||
hasMember(device: Device): boolean;
|
||||
membersDevices(): Generator<Device>;
|
||||
membersDefinitions(): zhc.Definition[];
|
||||
isDevice(): this is Device;
|
||||
isGroup(): this is Group;
|
||||
}
|
||||
//# sourceMappingURL=group.d.ts.map
|
||||
Vendored
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"group.d.ts","sourceRoot":"","sources":["../../lib/model/group.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,GAAG,MAAM,4BAA4B,CAAC;AAIvD,MAAM,CAAC,OAAO,OAAO,KAAK;IACf,EAAE,EAAE,EAAE,CAAC,KAAK,CAAC;IACpB,OAAO,CAAC,aAAa,CAA2C;IAGhE,IAAI,EAAE,IAAI,MAAM,CAEf;IACD,IAAI,OAAO,IAAI,YAAY,CAG1B;IACD,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,YAAY,KAAK,EAAE,EAAE,CAAC,KAAK,EAAE,aAAa,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,EAGnF;IAED,gBAAgB,IAAI,IAAI,CAIvB;IAED,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAEjC;IAEA,cAAc,IAAI,SAAS,CAAC,MAAM,CAAC,CAQnC;IAED,kBAAkB,IAAI,GAAG,CAAC,UAAU,EAAE,CAUrC;IAED,QAAQ,IAAI,IAAI,IAAI,MAAM,CAEzB;IACD,OAAO,IAAI,IAAI,IAAI,KAAK,CAEvB;CACJ"}
|
||||
Vendored
+43
@@ -0,0 +1,43 @@
|
||||
import type { IClientPublishOptions } from "mqtt";
|
||||
export interface MqttPublishOptions {
|
||||
clientOptions: IClientPublishOptions;
|
||||
baseTopic: string;
|
||||
skipLog: boolean;
|
||||
skipReceive: boolean;
|
||||
meta: {
|
||||
isEntityState?: boolean;
|
||||
};
|
||||
}
|
||||
export default class Mqtt {
|
||||
private publishedTopics;
|
||||
private connectionTimer?;
|
||||
private client;
|
||||
private eventBus;
|
||||
private republishRetainedTimer?;
|
||||
private defaultPublishOptions;
|
||||
retainedMessages: {
|
||||
[s: string]: {
|
||||
topic: string;
|
||||
payload: string;
|
||||
options: MqttPublishOptions;
|
||||
};
|
||||
};
|
||||
get info(): {
|
||||
version: 3 | 4 | 5 | undefined;
|
||||
server: string;
|
||||
};
|
||||
get stats(): {
|
||||
connected: boolean;
|
||||
queued: number;
|
||||
};
|
||||
constructor(eventBus: EventBus);
|
||||
connect(): Promise<void>;
|
||||
disconnect(): Promise<void>;
|
||||
subscribe(topic: string): Promise<void>;
|
||||
unsubscribe(topic: string): Promise<void>;
|
||||
private onConnect;
|
||||
onMessage(topic: string, message: Buffer): void;
|
||||
isConnected(): boolean;
|
||||
publish(topic: string, payload: string, options?: Partial<MqttPublishOptions>): Promise<void>;
|
||||
}
|
||||
//# sourceMappingURL=mqtt.d.ts.map
|
||||
Vendored
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"mqtt.d.ts","sourceRoot":"","sources":["../lib/mqtt.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAiB,qBAAqB,EAAa,MAAM,MAAM,CAAC;AAU5E,MAAM,WAAW,kBAAkB;IAC/B,aAAa,EAAE,qBAAqB,CAAC;IACrC,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,EAAE,OAAO,CAAC;IACrB,IAAI,EAAE;QAAC,aAAa,CAAC,EAAE,OAAO,CAAA;KAAC,CAAC;CACnC;AAED,MAAM,CAAC,OAAO,OAAO,IAAI;IACrB,OAAO,CAAC,eAAe,CAAqB;IAC5C,OAAO,CAAC,eAAe,CAAC,CAAiB;IACzC,OAAO,CAAC,MAAM,CAAc;IAC5B,OAAO,CAAC,QAAQ,CAAW;IAC3B,OAAO,CAAC,sBAAsB,CAAC,CAAiB;IAChD,OAAO,CAAC,qBAAqB,CAAqB;IAC3C,gBAAgB,EAAE;QAAC,CAAC,CAAC,EAAE,MAAM,GAAG;YAAC,KAAK,EAAE,MAAM,CAAC;YAAC,OAAO,EAAE,MAAM,CAAC;YAAC,OAAO,EAAE,kBAAkB,CAAA;SAAC,CAAA;KAAC,CAAM;IAE3G,IAAI,IAAI;QAEA,OAAO;QACP,MAAM;MAEb;IAED,IAAI,KAAK;QAED,SAAS;QACT,MAAM;MAEb;IAED,YAAY,QAAQ,EAAE,QAAQ,EAS7B;IAEK,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAiG7B;IAEK,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAchC;IAEK,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE5C;IAEK,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE9C;YAEmB,SAAS;IAShB,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAY3D;IAED,WAAW,IAAI,OAAO,CAErB;IAEK,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,OAAO,CAAC,kBAAkB,CAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAkDtG;CACJ"}
|
||||
Vendored
+19
@@ -0,0 +1,19 @@
|
||||
declare class State {
|
||||
private readonly eventBus;
|
||||
private readonly zigbee;
|
||||
private readonly state;
|
||||
private readonly file;
|
||||
private timer?;
|
||||
constructor(eventBus: EventBus, zigbee: Zigbee);
|
||||
start(): void;
|
||||
stop(): void;
|
||||
clear(): void;
|
||||
private load;
|
||||
private save;
|
||||
exists(entity: Device | Group): boolean;
|
||||
get(entity: Group | Device): KeyValue;
|
||||
set(entity: Group | Device, update: KeyValue, reason?: string): KeyValue;
|
||||
remove(id: string | number): boolean;
|
||||
}
|
||||
export default State;
|
||||
//# sourceMappingURL=state.d.ts.map
|
||||
Vendored
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../lib/state.ts"],"names":[],"mappings":"AA8BA,cAAM,KAAK;IAMH,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,MAAM;IAN3B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAwC;IAC9D,OAAO,CAAC,QAAQ,CAAC,IAAI,CAA+B;IACpD,OAAO,CAAC,KAAK,CAAC,CAAiB;IAE/B,YACqB,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,MAAM,EAIlC;IAED,KAAK,IAAI,IAAI,CAKZ;IAED,IAAI,IAAI,IAAI,CAcX;IAED,KAAK,IAAI,IAAI,CAEZ;IAED,OAAO,CAAC,IAAI;IAoBZ,OAAO,CAAC,IAAI;IAgBZ,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,KAAK,GAAG,OAAO,CAEtC;IAED,GAAG,CAAC,MAAM,EAAE,KAAK,GAAG,MAAM,GAAG,QAAQ,CAEpC;IAED,GAAG,CAAC,MAAM,EAAE,KAAK,GAAG,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,QAAQ,CAWvE;IAED,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAEnC;CACJ;eAEc,KAAK"}
|
||||
Vendored
+942
@@ -0,0 +1,942 @@
|
||||
import type * as zigbeeHerdsman from "zigbee-herdsman/dist";
|
||||
import type { ZclPayload } from "zigbee-herdsman/dist/adapter/events";
|
||||
import type { Eui64 } from "zigbee-herdsman/dist/zspec/tstypes";
|
||||
import type { Cluster, ClusterName, CustomClusters } from "zigbee-herdsman/dist/zspec/zcl/definition/tstype";
|
||||
import type { GenericZdoResponse, RoutingTableEntry } from "zigbee-herdsman/dist/zspec/zdo/definition/tstypes";
|
||||
import type * as zigbeeHerdsmanConverter from "zigbee-herdsman-converters";
|
||||
import type { Base } from "zigbee-herdsman-converters/lib/exposes";
|
||||
export type * as ZSpec from "zigbee-herdsman/dist/zspec";
|
||||
export type * as Zcl from "zigbee-herdsman/dist/zspec/zcl";
|
||||
export type * as Zdo from "zigbee-herdsman/dist/zspec/zdo";
|
||||
export type Zigbee2MQTTFeatures = {
|
||||
base: Base;
|
||||
switch: zigbeeHerdsmanConverter.Switch;
|
||||
lock: zigbeeHerdsmanConverter.Lock;
|
||||
binary: zigbeeHerdsmanConverter.Binary;
|
||||
list: zigbeeHerdsmanConverter.List;
|
||||
numeric: zigbeeHerdsmanConverter.Numeric;
|
||||
enum: zigbeeHerdsmanConverter.Enum;
|
||||
text: zigbeeHerdsmanConverter.Text;
|
||||
composite: zigbeeHerdsmanConverter.Composite;
|
||||
light: zigbeeHerdsmanConverter.Light;
|
||||
cover: zigbeeHerdsmanConverter.Cover;
|
||||
fan: zigbeeHerdsmanConverter.Fan;
|
||||
climate: zigbeeHerdsmanConverter.Climate;
|
||||
};
|
||||
import type { UpdatePayload } from "../extension/otaUpdate";
|
||||
import type { LogLevel, schemaJson } from "../util/settings";
|
||||
type KeyValue = Record<string, any>;
|
||||
export interface OnboardInitData {
|
||||
page: "form";
|
||||
settings: Zigbee2MQTTSettings;
|
||||
settingsSchema: typeof schemaJson;
|
||||
devices: {
|
||||
name: string;
|
||||
path: Zigbee2MQTTSettings["serial"]["port"];
|
||||
adapter?: Zigbee2MQTTSettings["serial"]["adapter"];
|
||||
baudRate?: Zigbee2MQTTSettings["serial"]["baudrate"];
|
||||
rtscts?: Zigbee2MQTTSettings["serial"]["rtscts"];
|
||||
}[];
|
||||
}
|
||||
export interface OnboardDoneData {
|
||||
page: "done";
|
||||
frontendUrl: string | null;
|
||||
}
|
||||
export interface OnboardFailureData {
|
||||
page: "failure";
|
||||
errors: string[];
|
||||
}
|
||||
export type OnboardData = OnboardInitData | OnboardDoneData | OnboardFailureData;
|
||||
export type OnboardSubmitResponse = {
|
||||
success: true;
|
||||
frontendUrl: string | null;
|
||||
} | {
|
||||
success: false;
|
||||
error: string;
|
||||
};
|
||||
export type Zigbee2MQTTDeviceOptions = {
|
||||
disabled?: boolean;
|
||||
retention?: number;
|
||||
availability?: boolean | {
|
||||
timeout: number;
|
||||
max_jitter?: number;
|
||||
backoff?: boolean;
|
||||
pause_on_backoff_gt?: number;
|
||||
};
|
||||
optimistic?: boolean;
|
||||
debounce?: number;
|
||||
debounce_ignore?: string[];
|
||||
throttle?: number;
|
||||
filtered_attributes?: string[];
|
||||
filtered_cache?: string[];
|
||||
filtered_optimistic?: string[];
|
||||
icon?: string;
|
||||
homeassistant?: KeyValue;
|
||||
friendly_name: string;
|
||||
description?: string;
|
||||
qos?: 0 | 1 | 2;
|
||||
disable_automatic_update_check?: boolean;
|
||||
};
|
||||
export type Zigbee2MQTTGroupOptions = {
|
||||
ID: number;
|
||||
optimistic?: boolean;
|
||||
off_state?: "all_members_off" | "last_member_state";
|
||||
filtered_attributes?: string[];
|
||||
filtered_cache?: string[];
|
||||
filtered_optimistic?: string[];
|
||||
homeassistant?: KeyValue;
|
||||
friendly_name: string;
|
||||
description?: string;
|
||||
qos?: 0 | 1 | 2;
|
||||
};
|
||||
export type Zigbee2MQTTSettings = {
|
||||
version?: number;
|
||||
/** only used internally during startup, removed on successful Z2M start */
|
||||
onboarding?: true;
|
||||
homeassistant: {
|
||||
enabled: boolean;
|
||||
discovery_topic: string;
|
||||
status_topic: string;
|
||||
experimental_event_entities: boolean;
|
||||
legacy_action_sensor: boolean;
|
||||
};
|
||||
availability: {
|
||||
enabled: boolean;
|
||||
active: {
|
||||
timeout: number;
|
||||
max_jitter: number;
|
||||
backoff: boolean;
|
||||
pause_on_backoff_gt: number;
|
||||
};
|
||||
passive: {
|
||||
timeout: number;
|
||||
};
|
||||
};
|
||||
mqtt: {
|
||||
base_topic: string;
|
||||
include_device_information: boolean;
|
||||
force_disable_retain: boolean;
|
||||
version?: 3 | 4 | 5;
|
||||
user?: string;
|
||||
password?: string;
|
||||
server: string;
|
||||
ca?: string;
|
||||
keepalive?: number;
|
||||
key?: string;
|
||||
cert?: string;
|
||||
client_id?: string;
|
||||
reject_unauthorized?: boolean;
|
||||
server_name?: string;
|
||||
maximum_packet_size: number;
|
||||
};
|
||||
serial: {
|
||||
disable_led: boolean;
|
||||
port?: string;
|
||||
adapter?: "deconz" | "zstack" | "ezsp" | "zigate" | "ember" | "zboss" | "zoh";
|
||||
baudrate?: number;
|
||||
rtscts?: boolean;
|
||||
};
|
||||
passlist: string[];
|
||||
blocklist: string[];
|
||||
map_options: {
|
||||
graphviz: {
|
||||
colors: {
|
||||
fill: {
|
||||
enddevice: string;
|
||||
coordinator: string;
|
||||
router: string;
|
||||
};
|
||||
font: {
|
||||
coordinator: string;
|
||||
router: string;
|
||||
enddevice: string;
|
||||
};
|
||||
line: {
|
||||
active: string;
|
||||
inactive: string;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
ota: {
|
||||
update_check_interval: number;
|
||||
disable_automatic_update_check: boolean;
|
||||
zigbee_ota_override_index_location?: string;
|
||||
image_block_request_timeout?: number;
|
||||
image_block_response_delay?: number;
|
||||
default_maximum_data_size?: number;
|
||||
};
|
||||
frontend: {
|
||||
enabled: boolean;
|
||||
package: "zigbee2mqtt-frontend" | "zigbee2mqtt-windfront";
|
||||
auth_token?: string;
|
||||
host?: string;
|
||||
port: number;
|
||||
base_url: string;
|
||||
url?: string;
|
||||
ssl_cert?: string;
|
||||
ssl_key?: string;
|
||||
notification_filter?: string[];
|
||||
disable_ui_serving?: boolean;
|
||||
};
|
||||
devices: {
|
||||
[s: string]: Zigbee2MQTTDeviceOptions;
|
||||
};
|
||||
groups: {
|
||||
[s: string]: Omit<Zigbee2MQTTGroupOptions, "ID">;
|
||||
};
|
||||
device_options: KeyValue;
|
||||
advanced: {
|
||||
log_rotation: boolean;
|
||||
log_console_json: boolean;
|
||||
log_symlink_current: boolean;
|
||||
log_output: ("console" | "file" | "syslog")[];
|
||||
log_directory: string;
|
||||
log_file: string;
|
||||
log_level: LogLevel;
|
||||
log_namespaced_levels: Record<string, LogLevel>;
|
||||
log_syslog: KeyValue;
|
||||
log_debug_to_mqtt_frontend: boolean;
|
||||
log_debug_namespace_ignore: string;
|
||||
log_directories_to_keep: number;
|
||||
pan_id: number | "GENERATE";
|
||||
ext_pan_id: number[] | "GENERATE";
|
||||
channel: number;
|
||||
adapter_concurrent?: number;
|
||||
adapter_delay?: number;
|
||||
cache_state: boolean;
|
||||
cache_state_persistent: boolean;
|
||||
cache_state_send_on_startup: boolean;
|
||||
last_seen: "disable" | "ISO_8601" | "ISO_8601_local" | "epoch";
|
||||
elapsed: boolean;
|
||||
network_key: number[] | "GENERATE";
|
||||
timestamp_format: string;
|
||||
output: "json" | "attribute" | "attribute_and_json";
|
||||
transmit_power?: number;
|
||||
/** 3.0: default to false (JSON schema & settings `defaults`) */
|
||||
enable_external_js: boolean;
|
||||
};
|
||||
health: {
|
||||
/** in minutes */
|
||||
interval: number;
|
||||
reset_on_check: boolean;
|
||||
};
|
||||
};
|
||||
export interface Zigbee2MQTTScene {
|
||||
id: number;
|
||||
name: string;
|
||||
}
|
||||
export interface Zigbee2MQTTDeviceEndpoint {
|
||||
name?: string;
|
||||
bindings: Zigbee2MQTTDeviceEndpointBinding[];
|
||||
configured_reportings: Zigbee2MQTTDeviceEndpointConfiguredReporting[];
|
||||
clusters: {
|
||||
input: string[];
|
||||
output: string[];
|
||||
};
|
||||
scenes: Zigbee2MQTTScene[];
|
||||
}
|
||||
export interface Zigbee2MQTTDeviceEndpointBinding {
|
||||
cluster: string;
|
||||
target: Zigbee2MQTTDeviceEndpointBindingTarget;
|
||||
}
|
||||
export type Zigbee2MQTTDeviceEndpointBindingTarget = {
|
||||
type: "endpoint";
|
||||
ieee_address: string;
|
||||
endpoint: number;
|
||||
} | {
|
||||
type: "group";
|
||||
id: number;
|
||||
};
|
||||
export interface Zigbee2MQTTDeviceEndpointConfiguredReporting {
|
||||
cluster: string;
|
||||
attribute: string | number;
|
||||
minimum_report_interval: number;
|
||||
maximum_report_interval: number;
|
||||
reportable_change: number;
|
||||
}
|
||||
export interface Zigbee2MQTTDeviceDefinition {
|
||||
source: "native" | "generated" | "external";
|
||||
model: string;
|
||||
vendor: string;
|
||||
description: string;
|
||||
exposes: zigbeeHerdsmanConverter.Expose[];
|
||||
supports_ota: boolean;
|
||||
options: zigbeeHerdsmanConverter.Option[];
|
||||
version: `0.0.${number}`;
|
||||
icon: string;
|
||||
}
|
||||
export interface Zigbee2MQTTDevice {
|
||||
ieee_address: zigbeeHerdsman.Models.Device["ieeeAddr"];
|
||||
type: zigbeeHerdsman.Models.Device["type"];
|
||||
network_address: zigbeeHerdsman.Models.Device["networkAddress"];
|
||||
supported: boolean;
|
||||
friendly_name: string;
|
||||
disabled: boolean;
|
||||
description?: string;
|
||||
definition?: Zigbee2MQTTDeviceDefinition;
|
||||
power_source: zigbeeHerdsman.Models.Device["powerSource"];
|
||||
software_build_id: zigbeeHerdsman.Models.Device["softwareBuildID"];
|
||||
date_code: zigbeeHerdsman.Models.Device["dateCode"];
|
||||
model_id: zigbeeHerdsman.Models.Device["modelID"];
|
||||
interviewing: boolean;
|
||||
interview_completed: boolean;
|
||||
interview_state: zigbeeHerdsman.Models.Device["interviewState"];
|
||||
manufacturer: zigbeeHerdsman.Models.Device["manufacturerName"];
|
||||
endpoints: Record<number, Zigbee2MQTTDeviceEndpoint>;
|
||||
}
|
||||
export interface Zigbee2MQTTGroupMember {
|
||||
ieee_address: zigbeeHerdsman.Models.Device["ieeeAddr"];
|
||||
endpoint: number;
|
||||
}
|
||||
export interface Zigbee2MQTTGroup {
|
||||
id: number;
|
||||
friendly_name: "default_bind_group" | string;
|
||||
description?: string;
|
||||
scenes: Zigbee2MQTTScene[];
|
||||
members: Zigbee2MQTTGroupMember[];
|
||||
}
|
||||
export interface Zigbee2MQTTNetworkMap {
|
||||
nodes: {
|
||||
ieeeAddr: string;
|
||||
friendlyName: string;
|
||||
type: string;
|
||||
networkAddress: number;
|
||||
manufacturerName?: string;
|
||||
modelID?: string;
|
||||
failed?: string[];
|
||||
lastSeen?: number;
|
||||
definition?: {
|
||||
model: string;
|
||||
vendor: string;
|
||||
supports: string;
|
||||
description: string;
|
||||
};
|
||||
}[];
|
||||
links: {
|
||||
source: {
|
||||
ieeeAddr: string;
|
||||
networkAddress: number;
|
||||
};
|
||||
target: {
|
||||
ieeeAddr: string;
|
||||
networkAddress: number;
|
||||
};
|
||||
deviceType: number;
|
||||
rxOnWhenIdle: number;
|
||||
relationship: number;
|
||||
permitJoining: number;
|
||||
depth: number;
|
||||
lqi: number;
|
||||
routes: RoutingTableEntry[];
|
||||
/** @deprecated 3.0 */
|
||||
linkquality: number;
|
||||
/** @deprecated 3.0 */
|
||||
sourceIeeeAddr: string;
|
||||
/** @deprecated 3.0 */
|
||||
targetIeeeAddr: string;
|
||||
/** @deprecated 3.0 */
|
||||
sourceNwkAddr: number;
|
||||
}[];
|
||||
}
|
||||
/**
|
||||
* Zigbee2MQTT state/request/response API endpoints
|
||||
*/
|
||||
export interface Zigbee2MQTTAPI {
|
||||
"bridge/logging": {
|
||||
message: string;
|
||||
level: LogLevel;
|
||||
namespace: string;
|
||||
};
|
||||
"bridge/state": {
|
||||
state: "online" | "offline";
|
||||
};
|
||||
"bridge/definitions": {
|
||||
clusters: Readonly<Record<ClusterName, Cluster>>;
|
||||
custom_clusters: Record<string, CustomClusters>;
|
||||
actions: string[];
|
||||
};
|
||||
"bridge/event": {
|
||||
type: "device_leave" | "device_joined" | "device_announce";
|
||||
data: {
|
||||
friendly_name: string;
|
||||
ieee_address: string;
|
||||
};
|
||||
} | {
|
||||
type: "device_interview";
|
||||
data: {
|
||||
friendly_name: string;
|
||||
ieee_address: string;
|
||||
status: "started" | "failed";
|
||||
} | {
|
||||
friendly_name: string;
|
||||
ieee_address: string;
|
||||
status: "successful";
|
||||
supported: boolean;
|
||||
definition: Zigbee2MQTTDeviceDefinition | undefined;
|
||||
};
|
||||
};
|
||||
"bridge/info": {
|
||||
os: {
|
||||
version: string;
|
||||
node_version: string;
|
||||
cpus: string;
|
||||
memory_mb: number;
|
||||
};
|
||||
mqtt: {
|
||||
version: number | undefined;
|
||||
server: string;
|
||||
};
|
||||
version: string;
|
||||
commit: string | undefined;
|
||||
zigbee_herdsman_converters: {
|
||||
version: string;
|
||||
};
|
||||
zigbee_herdsman: {
|
||||
version: string;
|
||||
};
|
||||
coordinator: {
|
||||
ieee_address: string;
|
||||
type: string;
|
||||
meta: {
|
||||
[s: string]: number | string;
|
||||
};
|
||||
};
|
||||
network: {
|
||||
pan_id: number;
|
||||
/** `0x${string}` 8-len */
|
||||
extended_pan_id: string;
|
||||
channel: number;
|
||||
};
|
||||
log_level: "debug" | "info" | "warning" | "error";
|
||||
permit_join: boolean;
|
||||
permit_join_end: number | undefined;
|
||||
restart_required: boolean;
|
||||
config: Zigbee2MQTTSettings;
|
||||
config_schema: typeof schemaJson;
|
||||
};
|
||||
"bridge/health": {
|
||||
/** time of message, msec from epoch, UTC */
|
||||
response_time: number;
|
||||
os: {
|
||||
load_average: number[];
|
||||
memory_used_mb: number;
|
||||
memory_percent: number;
|
||||
};
|
||||
process: {
|
||||
uptime_sec: number;
|
||||
memory_used_mb: number;
|
||||
memory_percent: number;
|
||||
};
|
||||
mqtt: {
|
||||
connected: boolean;
|
||||
queued: number;
|
||||
received: number;
|
||||
published: number;
|
||||
};
|
||||
devices: Record<string, {
|
||||
messages: number;
|
||||
messages_per_sec: number;
|
||||
leave_count: number;
|
||||
network_address_changes: number;
|
||||
}>;
|
||||
};
|
||||
"bridge/devices": Zigbee2MQTTDevice[];
|
||||
"bridge/groups": Zigbee2MQTTGroup[];
|
||||
"bridge/converters": {
|
||||
name: string;
|
||||
code: string;
|
||||
}[];
|
||||
"bridge/extensions": {
|
||||
name: string;
|
||||
code: string;
|
||||
}[];
|
||||
"bridge/request/permit_join": {
|
||||
/** [0-254], 0 meaning disable */
|
||||
time: number;
|
||||
device?: string;
|
||||
} | `${number}`;
|
||||
"bridge/response/permit_join": {
|
||||
/** [0-254], 0 meaning disable */
|
||||
time: number;
|
||||
device?: string;
|
||||
};
|
||||
"bridge/request/health_check": "";
|
||||
"bridge/response/health_check": {
|
||||
/** XXX: currently always returns true */
|
||||
healthy: boolean;
|
||||
};
|
||||
"bridge/request/coordinator_check": "";
|
||||
"bridge/response/coordinator_check": {
|
||||
missing_routers: {
|
||||
ieee_address: string;
|
||||
friendly_name: string;
|
||||
}[];
|
||||
};
|
||||
"bridge/request/restart": "";
|
||||
"bridge/response/restart": Record<string, never>;
|
||||
"bridge/request/networkmap": {
|
||||
type: "raw" | "graphviz" | "plantuml";
|
||||
routes: boolean;
|
||||
} | "raw" | "graphviz" | "plantuml";
|
||||
"bridge/response/networkmap": {
|
||||
type: "raw";
|
||||
routes: boolean;
|
||||
value: Zigbee2MQTTNetworkMap;
|
||||
} | {
|
||||
type: "graphviz" | "plantuml";
|
||||
routes: boolean;
|
||||
value: string;
|
||||
};
|
||||
"bridge/request/extension/save": {
|
||||
name: string;
|
||||
code: string;
|
||||
};
|
||||
"bridge/response/extension/save": Record<string, never>;
|
||||
"bridge/request/extension/remove": {
|
||||
name: string;
|
||||
};
|
||||
"bridge/response/extension/remove": Record<string, never>;
|
||||
"bridge/request/converter/save": {
|
||||
name: string;
|
||||
code: string;
|
||||
};
|
||||
"bridge/response/converter/save": Record<string, never>;
|
||||
"bridge/request/converter/remove": {
|
||||
name: string;
|
||||
};
|
||||
"bridge/response/converter/remove": Record<string, never>;
|
||||
"bridge/request/backup": "";
|
||||
"bridge/response/backup": {
|
||||
/** base64 encoded ZIP archive */
|
||||
zip: string;
|
||||
};
|
||||
"bridge/request/install_code/add": {
|
||||
value: string;
|
||||
};
|
||||
"bridge/response/install_code/add": {
|
||||
value: string;
|
||||
};
|
||||
/**
|
||||
* Applied on-the-fly:
|
||||
* - newSettings.homeassistant
|
||||
* - newSettings.advanced?.log_level
|
||||
* - newSettings.advanced?.log_namespaced_levels
|
||||
* - newSettings.advanced?.log_debug_namespace_ignore
|
||||
*/
|
||||
"bridge/request/options": {
|
||||
options: Record<string, unknown>;
|
||||
};
|
||||
"bridge/response/options": {
|
||||
restart_required: boolean;
|
||||
};
|
||||
"bridge/request/device/bind": {
|
||||
from: string;
|
||||
from_endpoint: string | number | "default";
|
||||
to: string | number;
|
||||
to_endpoint?: string | number;
|
||||
clusters?: string[];
|
||||
skip_disable_reporting?: boolean;
|
||||
};
|
||||
"bridge/response/device/bind": {
|
||||
from: string;
|
||||
from_endpoint: string | number;
|
||||
to: string | number;
|
||||
to_endpoint: string | number | undefined;
|
||||
clusters: string[];
|
||||
failed: string[];
|
||||
};
|
||||
"bridge/request/device/unbind": {
|
||||
from: string;
|
||||
from_endpoint: string | number | "default";
|
||||
to: string | number;
|
||||
to_endpoint?: string | number;
|
||||
clusters?: string[];
|
||||
skip_disable_reporting?: boolean;
|
||||
};
|
||||
"bridge/response/device/unbind": {
|
||||
from: string;
|
||||
from_endpoint: string | number;
|
||||
to: string | number;
|
||||
to_endpoint: string | number | undefined;
|
||||
clusters: string[];
|
||||
failed: string[];
|
||||
};
|
||||
"bridge/request/device/binds/clear": {
|
||||
target: string;
|
||||
ieee_list?: Eui64[];
|
||||
};
|
||||
"bridge/response/device/binds/clear": {
|
||||
target: string;
|
||||
ieee_list?: Eui64[];
|
||||
};
|
||||
"bridge/request/device/configure": {
|
||||
id: string | number;
|
||||
} | string;
|
||||
"bridge/response/device/configure": {
|
||||
id: string | number;
|
||||
};
|
||||
"bridge/request/device/remove": {
|
||||
id: string;
|
||||
block?: boolean;
|
||||
force?: boolean;
|
||||
keep_config?: boolean;
|
||||
clear_cache?: boolean;
|
||||
};
|
||||
"bridge/response/device/remove": {
|
||||
id: string;
|
||||
block: boolean;
|
||||
force: boolean;
|
||||
keep_config: boolean;
|
||||
clear_cache: boolean;
|
||||
};
|
||||
"bridge/request/device/ota_update/check": {
|
||||
id: string;
|
||||
/** expected to point to an index json if provided */
|
||||
url?: string | null;
|
||||
};
|
||||
"bridge/request/device/ota_update/check/downgrade": {
|
||||
id: string;
|
||||
/** expected to point to an index json if provided */
|
||||
url?: string | null;
|
||||
};
|
||||
"bridge/response/device/ota_update/check": {
|
||||
id: string;
|
||||
update_available: boolean;
|
||||
downgrade?: boolean;
|
||||
source?: string;
|
||||
release_notes?: string;
|
||||
};
|
||||
"bridge/request/device/ota_update/update": {
|
||||
id: string;
|
||||
url?: string | null;
|
||||
/**
|
||||
* Full firmware file in hex form (expected compatible with `Buffer.from(hex, "hex")`)
|
||||
* If file name supplied, will be used instead of <ieee_utc> to store firmware in data dir.
|
||||
*/
|
||||
hex?: {
|
||||
data: string;
|
||||
file_name?: string;
|
||||
} | null;
|
||||
image_block_request_timeout?: number | null;
|
||||
image_block_response_delay?: number | null;
|
||||
/** may be overridden internally to match specific device needs */
|
||||
default_maximum_data_size?: number | null;
|
||||
};
|
||||
"bridge/request/device/ota_update/update/downgrade": {
|
||||
id: string;
|
||||
url?: string | null;
|
||||
/**
|
||||
* Full firmware file in hex form (expected compatible with `Buffer.from(hex, "hex")`)
|
||||
* If file name supplied, will be used instead of <ieee_utc> to store firmware in data dir.
|
||||
*/
|
||||
hex?: {
|
||||
data: string;
|
||||
file_name?: string;
|
||||
} | null;
|
||||
image_block_request_timeout?: number | null;
|
||||
image_block_response_delay?: number | null;
|
||||
/** may be overridden internally to match specific device needs */
|
||||
default_maximum_data_size?: number | null;
|
||||
};
|
||||
"bridge/request/device/ota_update/update/abort": {
|
||||
id: string;
|
||||
};
|
||||
"bridge/response/device/ota_update/update/abort": {
|
||||
id: string;
|
||||
};
|
||||
"bridge/response/device/ota_update/update": {
|
||||
id: string;
|
||||
from: {
|
||||
file_version: number;
|
||||
software_build_id?: string;
|
||||
date_code?: string;
|
||||
} | undefined;
|
||||
to: {
|
||||
file_version: number;
|
||||
software_build_id?: string;
|
||||
date_code?: string;
|
||||
} | undefined;
|
||||
};
|
||||
"bridge/request/device/ota_update/schedule": {
|
||||
id: string;
|
||||
url?: string | null;
|
||||
/**
|
||||
* Full firmware file in hex form (expected compatible with `Buffer.from(hex, "hex")`)
|
||||
* If file name supplied, will be used instead of <ieee_utc> to store firmware in data dir.
|
||||
*/
|
||||
hex?: {
|
||||
data: string;
|
||||
file_name?: string;
|
||||
} | null;
|
||||
};
|
||||
"bridge/request/device/ota_update/schedule/downgrade": {
|
||||
id: string;
|
||||
url?: string | null;
|
||||
/**
|
||||
* Full firmware file in hex form (expected compatible with `Buffer.from(hex, "hex")`)
|
||||
* If file name supplied, will be used instead of <ieee_utc> to store firmware in data dir.
|
||||
*/
|
||||
hex?: {
|
||||
data: string;
|
||||
file_name?: string;
|
||||
} | null;
|
||||
};
|
||||
"bridge/response/device/ota_update/schedule": {
|
||||
id: string;
|
||||
url?: string;
|
||||
};
|
||||
"bridge/request/device/ota_update/unschedule": {
|
||||
id: string;
|
||||
};
|
||||
"bridge/response/device/ota_update/unschedule": {
|
||||
id: string;
|
||||
};
|
||||
"bridge/request/device/interview": {
|
||||
id: string | number;
|
||||
};
|
||||
"bridge/response/device/interview": {
|
||||
id: string | number;
|
||||
};
|
||||
"bridge/request/device/generate_external_definition": {
|
||||
id: string | number;
|
||||
};
|
||||
"bridge/response/device/generate_external_definition": {
|
||||
id: string | number;
|
||||
source: string;
|
||||
};
|
||||
"bridge/request/device/options": {
|
||||
id: string;
|
||||
options: Record<string, unknown>;
|
||||
};
|
||||
"bridge/response/device/options": {
|
||||
id: string;
|
||||
from: Record<string, unknown>;
|
||||
to: Record<string, unknown>;
|
||||
restart_required: boolean;
|
||||
};
|
||||
"bridge/request/device/rename": {
|
||||
last: true;
|
||||
from?: string;
|
||||
to: string;
|
||||
homeassistant_rename?: boolean;
|
||||
} | {
|
||||
last: false | undefined;
|
||||
from: string;
|
||||
to: string;
|
||||
homeassistant_rename?: boolean;
|
||||
};
|
||||
"bridge/response/device/rename": {
|
||||
from: string;
|
||||
to: string;
|
||||
homeassistant_rename: boolean;
|
||||
};
|
||||
"bridge/request/device/reporting/configure": {
|
||||
id: string;
|
||||
endpoint: string | number;
|
||||
cluster: string | number;
|
||||
attribute: string | number | {
|
||||
ID: number;
|
||||
type: number;
|
||||
};
|
||||
minimum_report_interval: number;
|
||||
maximum_report_interval: number;
|
||||
reportable_change?: number;
|
||||
option: Record<string, unknown>;
|
||||
};
|
||||
"bridge/response/device/reporting/configure": {
|
||||
id: string;
|
||||
endpoint: string | number;
|
||||
cluster: string | number;
|
||||
attribute: string | number | {
|
||||
ID: number;
|
||||
type: number;
|
||||
};
|
||||
minimum_report_interval: number;
|
||||
maximum_report_interval: number;
|
||||
reportable_change?: number;
|
||||
};
|
||||
"bridge/request/device/reporting/read": {
|
||||
id: string;
|
||||
endpoint: string | number;
|
||||
cluster: string | number;
|
||||
configs: {
|
||||
direction?: number;
|
||||
attribute: string | number | {
|
||||
ID: number;
|
||||
type: number;
|
||||
};
|
||||
}[];
|
||||
manufacturer_code?: number;
|
||||
};
|
||||
"bridge/response/device/reporting/read": {
|
||||
id: string;
|
||||
endpoint: string | number;
|
||||
cluster: string | number;
|
||||
configs: zigbeeHerdsman.Zcl.ClustersTypes.TFoundation["readReportConfigRsp"];
|
||||
manufacturer_code?: number;
|
||||
};
|
||||
"bridge/request/group/remove": {
|
||||
id: string;
|
||||
force?: boolean;
|
||||
};
|
||||
"bridge/response/group/remove": {
|
||||
id: string;
|
||||
force: boolean;
|
||||
};
|
||||
"bridge/request/group/add": {
|
||||
friendly_name: string;
|
||||
id?: string;
|
||||
};
|
||||
"bridge/response/group/add": {
|
||||
friendly_name: string;
|
||||
id: number;
|
||||
};
|
||||
"bridge/request/group/rename": {
|
||||
from: string;
|
||||
to: string;
|
||||
homeassistant_rename?: boolean;
|
||||
};
|
||||
"bridge/response/group/rename": {
|
||||
from: string;
|
||||
to: string;
|
||||
homeassistant_rename: boolean;
|
||||
};
|
||||
"bridge/request/group/options": {
|
||||
id: string;
|
||||
options: Record<string, unknown>;
|
||||
};
|
||||
"bridge/response/group/options": {
|
||||
id: string;
|
||||
from: Record<string, unknown>;
|
||||
to: Record<string, unknown>;
|
||||
restart_required: boolean;
|
||||
};
|
||||
"bridge/request/group/members/add": {
|
||||
device: string;
|
||||
group: string;
|
||||
endpoint: string | number | "default";
|
||||
skip_disable_reporting?: boolean;
|
||||
};
|
||||
"bridge/response/group/members/add": {
|
||||
device: string;
|
||||
group: string;
|
||||
endpoint: string | number | "default";
|
||||
};
|
||||
"bridge/request/group/members/remove": {
|
||||
device: string;
|
||||
group: string;
|
||||
endpoint: string | number | "default";
|
||||
skip_disable_reporting?: boolean;
|
||||
};
|
||||
"bridge/response/group/members/remove": {
|
||||
device: string;
|
||||
group: string;
|
||||
endpoint: string | number | "default";
|
||||
};
|
||||
"bridge/request/group/members/remove_all": {
|
||||
device: string;
|
||||
endpoint: string | number | "default";
|
||||
skip_disable_reporting?: boolean;
|
||||
};
|
||||
"bridge/response/group/members/remove_all": {
|
||||
device: string;
|
||||
endpoint: string | number | "default";
|
||||
};
|
||||
"bridge/request/touchlink/factory_reset": {
|
||||
ieee_address: string;
|
||||
channel: number;
|
||||
} | "";
|
||||
"bridge/response/touchlink/factory_reset": {
|
||||
ieee_address: string;
|
||||
channel: number;
|
||||
} | Record<string, never>;
|
||||
"bridge/request/touchlink/scan": "";
|
||||
"bridge/response/touchlink/scan": {
|
||||
found: {
|
||||
ieee_address: string;
|
||||
channel: number;
|
||||
}[];
|
||||
};
|
||||
"bridge/request/touchlink/identify": {
|
||||
ieee_address: string;
|
||||
channel: number;
|
||||
};
|
||||
"bridge/response/touchlink/identify": {
|
||||
ieee_address: string;
|
||||
channel: number;
|
||||
};
|
||||
"bridge/request/action": {
|
||||
action: string;
|
||||
params?: Record<string, unknown>;
|
||||
};
|
||||
"bridge/response/action": GenericZdoResponse | ZclPayload | undefined;
|
||||
/**
|
||||
* entity state response
|
||||
*/
|
||||
"{friendlyName}": {
|
||||
[key: string]: unknown;
|
||||
update?: UpdatePayload["update"];
|
||||
};
|
||||
"{friendlyName}/availability": {
|
||||
state: "online" | "offline";
|
||||
};
|
||||
/** entity set request (tries to match endpoint to definition, else uses "default") */
|
||||
"{friendlyNameOrId}/set": {
|
||||
[attribute: string]: {
|
||||
[key: string]: unknown;
|
||||
} | string | boolean;
|
||||
};
|
||||
/** entity set request (tries to match endpoint to definition, else uses "default") */
|
||||
"{friendlyNameOrId}/set/{attribute}": {
|
||||
[key: string]: unknown;
|
||||
};
|
||||
/** entity set request */
|
||||
"{friendlyNameOrId}/{endpoint}/set": {
|
||||
[attribute: string]: {
|
||||
[key: string]: unknown;
|
||||
} | string | boolean;
|
||||
};
|
||||
/** entity set request */
|
||||
"{friendlyNameOrId}/{endpoint}/set/{attribute}": {
|
||||
[key: string]: unknown;
|
||||
};
|
||||
/** entity get request (tries to match endpoint to definition, else uses "default") */
|
||||
"{friendlyNameOrId}/get": {
|
||||
[attribute: string]: {
|
||||
[key: string]: unknown;
|
||||
} | string | boolean;
|
||||
};
|
||||
/** entity get request (tries to match endpoint to definition, else uses "default") */
|
||||
"{friendlyNameOrId}/get/{attribute}": {
|
||||
[key: string]: unknown;
|
||||
};
|
||||
/** entity get request */
|
||||
"{friendlyNameOrId}/{endpoint}/get": {
|
||||
[attribute: string]: {
|
||||
[key: string]: unknown;
|
||||
} | string | boolean;
|
||||
};
|
||||
/** entity get request */
|
||||
"{friendlyNameOrId}/{endpoint}/get/{attribute}": {
|
||||
[key: string]: unknown;
|
||||
};
|
||||
}
|
||||
export type Zigbee2MQTTRequestEndpoints = "bridge/request/permit_join" | "bridge/request/health_check" | "bridge/request/coordinator_check" | "bridge/request/restart" | "bridge/request/networkmap" | "bridge/request/extension/save" | "bridge/request/extension/remove" | "bridge/request/converter/save" | "bridge/request/converter/remove" | "bridge/request/backup" | "bridge/request/install_code/add" | "bridge/request/options" | "bridge/request/device/bind" | "bridge/request/device/unbind" | "bridge/request/device/binds/clear" | "bridge/request/device/configure" | "bridge/request/device/remove" | "bridge/request/device/ota_update/check" | "bridge/request/device/ota_update/check/downgrade" | "bridge/request/device/ota_update/update" | "bridge/request/device/ota_update/update/downgrade" | "bridge/request/device/ota_update/update/abort" | "bridge/request/device/ota_update/schedule" | "bridge/request/device/ota_update/schedule/downgrade" | "bridge/request/device/ota_update/unschedule" | "bridge/request/device/interview" | "bridge/request/device/generate_external_definition" | "bridge/request/device/options" | "bridge/request/device/rename" | "bridge/request/device/reporting/configure" | "bridge/request/device/reporting/read" | "bridge/request/group/remove" | "bridge/request/group/add" | "bridge/request/group/rename" | "bridge/request/group/options" | "bridge/request/group/members/add" | "bridge/request/group/members/remove" | "bridge/request/group/members/remove_all" | "bridge/request/touchlink/factory_reset" | "bridge/request/touchlink/scan" | "bridge/request/touchlink/identify" | "bridge/request/action" | "{friendlyNameOrId}/set" | "{friendlyNameOrId}/set/{attribute}" | "{friendlyNameOrId}/{endpoint}/set" | "{friendlyNameOrId}/{endpoint}/set/{attribute}" | "{friendlyNameOrId}/get" | "{friendlyNameOrId}/get/{attribute}" | "{friendlyNameOrId}/{endpoint}/get" | "{friendlyNameOrId}/{endpoint}/get/{attribute}";
|
||||
export type Zigbee2MQTTResponseEndpoints = "bridge/response/permit_join" | "bridge/response/health_check" | "bridge/response/coordinator_check" | "bridge/response/restart" | "bridge/response/networkmap" | "bridge/response/extension/save" | "bridge/response/extension/remove" | "bridge/response/converter/save" | "bridge/response/converter/remove" | "bridge/response/backup" | "bridge/response/install_code/add" | "bridge/response/options" | "bridge/response/device/bind" | "bridge/response/device/unbind" | "bridge/response/device/binds/clear" | "bridge/response/device/configure" | "bridge/response/device/remove" | "bridge/response/device/ota_update/check" | "bridge/response/device/ota_update/update" | "bridge/response/device/ota_update/update/abort" | "bridge/response/device/ota_update/schedule" | "bridge/response/device/ota_update/unschedule" | "bridge/response/device/interview" | "bridge/response/device/generate_external_definition" | "bridge/response/device/options" | "bridge/response/device/rename" | "bridge/response/device/reporting/configure" | "bridge/response/device/reporting/read" | "bridge/response/group/remove" | "bridge/response/group/add" | "bridge/response/group/rename" | "bridge/response/group/options" | "bridge/response/group/members/add" | "bridge/response/group/members/remove" | "bridge/response/group/members/remove_all" | "bridge/response/touchlink/factory_reset" | "bridge/response/touchlink/scan" | "bridge/response/touchlink/identify" | "bridge/response/action";
|
||||
export type Zigbee2MQTTRequest<T extends Zigbee2MQTTRequestEndpoints> = {
|
||||
transaction?: string;
|
||||
} & Zigbee2MQTTAPI[T];
|
||||
export type Zigbee2MQTTResponseOK<T extends Zigbee2MQTTResponseEndpoints> = {
|
||||
status: "ok";
|
||||
data: Zigbee2MQTTAPI[T];
|
||||
transaction?: string;
|
||||
};
|
||||
export type Zigbee2MQTTResponseError = {
|
||||
status: "error";
|
||||
data: Record<string, never>;
|
||||
error: string;
|
||||
transaction?: string;
|
||||
};
|
||||
export type Zigbee2MQTTResponse<T extends Zigbee2MQTTResponseEndpoints> = Zigbee2MQTTResponseOK<T> | Zigbee2MQTTResponseError;
|
||||
//# sourceMappingURL=api.d.ts.map
|
||||
Vendored
+1
File diff suppressed because one or more lines are too long
Vendored
+10
@@ -0,0 +1,10 @@
|
||||
declare function joinPath(file: string): string;
|
||||
declare function getPath(): string;
|
||||
declare function _testReload(): void;
|
||||
declare const _default: {
|
||||
joinPath: typeof joinPath;
|
||||
getPath: typeof getPath;
|
||||
_testReload: typeof _testReload;
|
||||
};
|
||||
export default _default;
|
||||
//# sourceMappingURL=data.d.ts.map
|
||||
Vendored
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"data.d.ts","sourceRoot":"","sources":["../../lib/util/data.ts"],"names":[],"mappings":"AAQA,iBAAS,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEtC;AAED,iBAAS,OAAO,IAAI,MAAM,CAEzB;AAED,iBAAS,WAAW,IAAI,IAAI,CAE3B"}
|
||||
Vendored
+34
@@ -0,0 +1,34 @@
|
||||
import winston from "winston";
|
||||
import * as settings from "./settings";
|
||||
declare class Logger {
|
||||
private level;
|
||||
private output;
|
||||
private directory;
|
||||
private logger;
|
||||
private fileTransport;
|
||||
private debugNamespaceIgnoreRegex?;
|
||||
private namespacedLevels;
|
||||
private cachedNamespacedLevels;
|
||||
init(): void;
|
||||
get winston(): winston.Logger;
|
||||
addTransport(transport: winston.transport): void;
|
||||
removeTransport(transport: winston.transport): void;
|
||||
getDebugNamespaceIgnore(): string;
|
||||
setDebugNamespaceIgnore(value: string): void;
|
||||
getLevel(): settings.LogLevel;
|
||||
setLevel(level: settings.LogLevel): void;
|
||||
getNamespacedLevels(): Record<string, settings.LogLevel>;
|
||||
setNamespacedLevels(nsLevels: Record<string, settings.LogLevel>): void;
|
||||
private resetCachedNamespacedLevels;
|
||||
private cacheNamespacedLevel;
|
||||
private log;
|
||||
error(messageOrLambda: string | (() => string), namespace?: string): void;
|
||||
warning(messageOrLambda: string | (() => string), namespace?: string): void;
|
||||
info(messageOrLambda: string | (() => string), namespace?: string): void;
|
||||
debug(messageOrLambda: string | (() => string), namespace?: string): void;
|
||||
private cleanup;
|
||||
end(): Promise<void>;
|
||||
}
|
||||
declare const _default: Logger;
|
||||
export default _default;
|
||||
//# sourceMappingURL=logger.d.ts.map
|
||||
Vendored
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../lib/util/logger.ts"],"names":[],"mappings":"AAIA,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,QAAQ,MAAM,YAAY,CAAC;AAIvC,cAAM,MAAM;IACR,OAAO,CAAC,KAAK,CAAqB;IAClC,OAAO,CAAC,MAAM,CAAY;IAC1B,OAAO,CAAC,SAAS,CAAU;IAC3B,OAAO,CAAC,MAAM,CAAkB;IAChC,OAAO,CAAC,aAAa,CAAuD;IAC5E,OAAO,CAAC,yBAAyB,CAAC,CAAS;IAC3C,OAAO,CAAC,gBAAgB,CAAqC;IAC7D,OAAO,CAAC,sBAAsB,CAAqC;IAE5D,IAAI,IAAI,IAAI,CA6GlB;IAED,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,CAE5B;IAEM,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,SAAS,GAAG,IAAI,CAEtD;IAEM,eAAe,CAAC,SAAS,EAAE,OAAO,CAAC,SAAS,GAAG,IAAI,CAEzD;IAEM,uBAAuB,IAAI,MAAM,CAEvC;IAEM,uBAAuB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAElD;IAEM,QAAQ,IAAI,QAAQ,CAAC,QAAQ,CAEnC;IAEM,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAG9C;IAEM,mBAAmB,IAAI,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAE9D;IAEM,mBAAmB,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC,GAAG,IAAI,CAG5E;IAED,OAAO,CAAC,2BAA2B;IAInC,OAAO,CAAC,oBAAoB;IAmB5B,OAAO,CAAC,GAAG;IASJ,KAAK,CAAC,eAAe,EAAE,MAAM,GAAG,CAAC,MAAM,MAAM,CAAC,EAAE,SAAS,SAAQ,GAAG,IAAI,CAE9E;IAEM,OAAO,CAAC,eAAe,EAAE,MAAM,GAAG,CAAC,MAAM,MAAM,CAAC,EAAE,SAAS,SAAQ,GAAG,IAAI,CAEhF;IAEM,IAAI,CAAC,eAAe,EAAE,MAAM,GAAG,CAAC,MAAM,MAAM,CAAC,EAAE,SAAS,SAAQ,GAAG,IAAI,CAE7E;IAEM,KAAK,CAAC,eAAe,EAAE,MAAM,GAAG,CAAC,MAAM,MAAM,CAAC,EAAE,SAAS,SAAQ,GAAG,IAAI,CAM9E;IAGD,OAAO,CAAC,OAAO;IA0BF,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,CAoBhC;CAEJ"}
|
||||
Vendored
+15
@@ -0,0 +1,15 @@
|
||||
/** Anything mergeable: a plain-ish object, explicitly not an array or another iterable. */
|
||||
export type UnknownRecord = Record<string | number, unknown> & {
|
||||
[Symbol.iterator]?: never;
|
||||
};
|
||||
/**
|
||||
* Merge all sources into `target` recursively.
|
||||
*
|
||||
* Key behavior:
|
||||
* - ignore properties `__proto__`, `constructor` & `prototype`
|
||||
* - assumes no infinite circular possible (unhandled for perf)
|
||||
*
|
||||
* Pass empty object `{}` as `target` to return a new object without modifying any existing objects.
|
||||
*/
|
||||
export declare function objectAssignDeep<T extends UnknownRecord, S extends readonly UnknownRecord[]>(target: T, ...sources: S): T & UnionToIntersection<S[number]>;
|
||||
//# sourceMappingURL=objectAssignDeep.d.ts.map
|
||||
Vendored
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"objectAssignDeep.d.ts","sourceRoot":"","sources":["../../lib/util/objectAssignDeep.ts"],"names":[],"mappings":"AAAA,2FAA2F;AAC3F,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,GAAG,MAAM,EAAE,OAAO,CAAC,GAAG;IAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,KAAK,CAAA;CAAC,CAAC;AA+B3F;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,aAAa,EAAE,CAAC,SAAS,SAAS,aAAa,EAAE,EACxF,MAAM,EAAE,CAAC,EACT,GAAG,OAAO,EAAE,CAAC,GACd,CAAC,GAAG,mBAAmB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAsBpC"}
|
||||
Vendored
+2
@@ -0,0 +1,2 @@
|
||||
export declare function onboard(): Promise<boolean>;
|
||||
//# sourceMappingURL=onboarding.d.ts.map
|
||||
Vendored
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"onboarding.d.ts","sourceRoot":"","sources":["../../lib/util/onboarding.ts"],"names":[],"mappings":"AAgQA,wBAAsB,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,CAgEhD"}
|
||||
Vendored
+10
@@ -0,0 +1,10 @@
|
||||
/**
|
||||
* Handle sd_notify protocol, @see https://www.freedesktop.org/software/systemd/man/latest/sd_notify.html
|
||||
* No-op if running on unsupported platforms or without Type=notify
|
||||
* Soft-fails if improperly setup (this is not necessary for Zigbee2MQTT to function properly)
|
||||
*/
|
||||
export declare function initSdNotify(): Promise<{
|
||||
notifyStopping: () => void;
|
||||
stop: () => void;
|
||||
} | undefined>;
|
||||
//# sourceMappingURL=sd-notify.d.ts.map
|
||||
Vendored
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"sd-notify.d.ts","sourceRoot":"","sources":["../../lib/util/sd-notify.ts"],"names":[],"mappings":"AAKA;;;;GAIG;AACH,wBAAsB,YAAY,IAAI,OAAO,CAAC;IAAC,cAAc,EAAE,MAAM,IAAI,CAAC;IAAC,IAAI,EAAE,MAAM,IAAI,CAAA;CAAC,GAAG,SAAS,CAAC,CA0DxG"}
|
||||
Vendored
+238
@@ -0,0 +1,238 @@
|
||||
import schemaJson from "./settings.schema.json";
|
||||
export { schemaJson };
|
||||
export declare const CURRENT_VERSION = 5;
|
||||
/** NOTE: by order of priority, lower index is lower level (more important) */
|
||||
export declare const LOG_LEVELS: readonly string[];
|
||||
export type LogLevel = "error" | "warning" | "info" | "debug";
|
||||
export declare const defaults: {
|
||||
homeassistant: {
|
||||
enabled: false;
|
||||
discovery_topic: string;
|
||||
status_topic: string;
|
||||
legacy_action_sensor: false;
|
||||
experimental_event_entities: false;
|
||||
};
|
||||
availability: {
|
||||
enabled: false;
|
||||
active: {
|
||||
timeout: number;
|
||||
max_jitter: number;
|
||||
backoff: true;
|
||||
pause_on_backoff_gt: number;
|
||||
};
|
||||
passive: {
|
||||
timeout: number;
|
||||
};
|
||||
};
|
||||
frontend: {
|
||||
enabled: false;
|
||||
package: "zigbee2mqtt-windfront";
|
||||
port: number;
|
||||
base_url: string;
|
||||
};
|
||||
mqtt: {
|
||||
base_topic: string;
|
||||
include_device_information: false;
|
||||
force_disable_retain: false;
|
||||
maximum_packet_size: number;
|
||||
keepalive: number;
|
||||
reject_unauthorized: true;
|
||||
version: 4;
|
||||
};
|
||||
serial: {
|
||||
disable_led: false;
|
||||
};
|
||||
passlist: never[];
|
||||
blocklist: never[];
|
||||
map_options: {
|
||||
graphviz: {
|
||||
colors: {
|
||||
fill: {
|
||||
enddevice: string;
|
||||
coordinator: string;
|
||||
router: string;
|
||||
};
|
||||
font: {
|
||||
coordinator: string;
|
||||
router: string;
|
||||
enddevice: string;
|
||||
};
|
||||
line: {
|
||||
active: string;
|
||||
inactive: string;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
ota: {
|
||||
update_check_interval: number;
|
||||
disable_automatic_update_check: false;
|
||||
image_block_request_timeout: number;
|
||||
image_block_response_delay: number;
|
||||
default_maximum_data_size: number;
|
||||
};
|
||||
device_options: {};
|
||||
advanced: {
|
||||
log_rotation: true;
|
||||
log_console_json: false;
|
||||
log_symlink_current: false;
|
||||
log_output: ("console" | "file")[];
|
||||
log_directory: string;
|
||||
log_file: string;
|
||||
log_level: "debug" | "info";
|
||||
log_namespaced_levels: {};
|
||||
log_syslog: {};
|
||||
log_debug_to_mqtt_frontend: false;
|
||||
log_debug_namespace_ignore: string;
|
||||
log_directories_to_keep: number;
|
||||
pan_id: number;
|
||||
ext_pan_id: number[];
|
||||
channel: number;
|
||||
adapter_concurrent: undefined;
|
||||
adapter_delay: undefined;
|
||||
cache_state: true;
|
||||
cache_state_persistent: true;
|
||||
cache_state_send_on_startup: true;
|
||||
last_seen: "disable";
|
||||
elapsed: false;
|
||||
network_key: number[];
|
||||
timestamp_format: string;
|
||||
output: "json";
|
||||
enable_external_js: true;
|
||||
};
|
||||
health: {
|
||||
interval: number;
|
||||
reset_on_check: false;
|
||||
};
|
||||
};
|
||||
export declare function writeMinimalDefaults(): void;
|
||||
export declare function setOnboarding(value: boolean): void;
|
||||
export declare function write(): void;
|
||||
export declare function validate(): string[];
|
||||
export declare function validateNonRequired(): string[];
|
||||
/**
|
||||
* Get the settings actually written in the yaml.
|
||||
* Env vars are applied on top.
|
||||
* Defaults merged on startup are not included.
|
||||
*/
|
||||
export declare function getPersistedSettings(): Partial<Settings>;
|
||||
export declare function get(): Settings;
|
||||
export declare function set(path: string[], value: string | number | boolean | KeyValue): void;
|
||||
export declare function apply(settings: Record<string, unknown>, throwOnError?: boolean): boolean;
|
||||
export declare function getGroup(IDorName: string | number): GroupOptions | undefined;
|
||||
export declare function getDevice(IDorName: string): DeviceOptionsWithId | undefined;
|
||||
export declare function addDevice(id: string): DeviceOptionsWithId;
|
||||
export declare function blockDevice(id: string): void;
|
||||
export declare function removeDevice(IDorName: string): void;
|
||||
export declare function addGroup(name: string, id?: string): GroupOptions;
|
||||
export declare function removeGroup(IDorName: string | number): void;
|
||||
export declare function changeEntityOptions(IDorName: string, newOptions: KeyValue): boolean;
|
||||
export declare function changeFriendlyName(IDorName: string, newName: string): void;
|
||||
export declare function reRead(): void;
|
||||
export declare const testing: {
|
||||
write: typeof write;
|
||||
clear: () => void;
|
||||
defaults: {
|
||||
homeassistant: {
|
||||
enabled: false;
|
||||
discovery_topic: string;
|
||||
status_topic: string;
|
||||
legacy_action_sensor: false;
|
||||
experimental_event_entities: false;
|
||||
};
|
||||
availability: {
|
||||
enabled: false;
|
||||
active: {
|
||||
timeout: number;
|
||||
max_jitter: number;
|
||||
backoff: true;
|
||||
pause_on_backoff_gt: number;
|
||||
};
|
||||
passive: {
|
||||
timeout: number;
|
||||
};
|
||||
};
|
||||
frontend: {
|
||||
enabled: false;
|
||||
package: "zigbee2mqtt-windfront";
|
||||
port: number;
|
||||
base_url: string;
|
||||
};
|
||||
mqtt: {
|
||||
base_topic: string;
|
||||
include_device_information: false;
|
||||
force_disable_retain: false;
|
||||
maximum_packet_size: number;
|
||||
keepalive: number;
|
||||
reject_unauthorized: true;
|
||||
version: 4;
|
||||
};
|
||||
serial: {
|
||||
disable_led: false;
|
||||
};
|
||||
passlist: never[];
|
||||
blocklist: never[];
|
||||
map_options: {
|
||||
graphviz: {
|
||||
colors: {
|
||||
fill: {
|
||||
enddevice: string;
|
||||
coordinator: string;
|
||||
router: string;
|
||||
};
|
||||
font: {
|
||||
coordinator: string;
|
||||
router: string;
|
||||
enddevice: string;
|
||||
};
|
||||
line: {
|
||||
active: string;
|
||||
inactive: string;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
ota: {
|
||||
update_check_interval: number;
|
||||
disable_automatic_update_check: false;
|
||||
image_block_request_timeout: number;
|
||||
image_block_response_delay: number;
|
||||
default_maximum_data_size: number;
|
||||
};
|
||||
device_options: {};
|
||||
advanced: {
|
||||
log_rotation: true;
|
||||
log_console_json: false;
|
||||
log_symlink_current: false;
|
||||
log_output: ("console" | "file")[];
|
||||
log_directory: string;
|
||||
log_file: string;
|
||||
log_level: "debug" | "info";
|
||||
log_namespaced_levels: {};
|
||||
log_syslog: {};
|
||||
log_debug_to_mqtt_frontend: false;
|
||||
log_debug_namespace_ignore: string;
|
||||
log_directories_to_keep: number;
|
||||
pan_id: number;
|
||||
ext_pan_id: number[];
|
||||
channel: number;
|
||||
adapter_concurrent: undefined;
|
||||
adapter_delay: undefined;
|
||||
cache_state: true;
|
||||
cache_state_persistent: true;
|
||||
cache_state_send_on_startup: true;
|
||||
last_seen: "disable";
|
||||
elapsed: false;
|
||||
network_key: number[];
|
||||
timestamp_format: string;
|
||||
output: "json";
|
||||
enable_external_js: true;
|
||||
};
|
||||
health: {
|
||||
interval: number;
|
||||
reset_on_check: false;
|
||||
};
|
||||
};
|
||||
CURRENT_VERSION: number;
|
||||
};
|
||||
//# sourceMappingURL=settings.d.ts.map
|
||||
Vendored
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"settings.d.ts","sourceRoot":"","sources":["../../lib/util/settings.ts"],"names":[],"mappings":"AAKA,OAAO,UAAU,MAAM,wBAAwB,CAAC;AAIhD,OAAO,EAAC,UAAU,EAAC,CAAC;AAGpB,eAAO,MAAM,eAAe,IAAI,CAAC;AACjC,8EAA8E;AAC9E,eAAO,MAAM,UAAU,EAAE,SAAS,MAAM,EAAmD,CAAC;AAC5F,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,GAAG,OAAO,CAAC;AAY9D,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;YAWH,OAAO;;;;;;;;;;;;;;;;;;;;;;;;QAwBjB,QAAQ;YACJ,MAAM;gBACF,IAAI;oBACA,SAAS;oBACT,WAAW;oBACX,MAAM;;gBAEV,IAAI;oBACA,WAAW;oBACX,MAAM;oBACN,SAAS;;gBAEb,IAAI;oBACA,MAAM;oBACN,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6CU,CAAC;AAmCvC,wBAAgB,oBAAoB,IAAI,IAAI,CA+B3C;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAclD;AAED,wBAAgB,KAAK,IAAI,IAAI,CA0D5B;AAED,wBAAgB,QAAQ,IAAI,MAAM,EAAE,CAoDnC;AAED,wBAAgB,mBAAmB,IAAI,MAAM,EAAE,CAW9C;AA8GD;;;;GAIG;AACH,wBAAgB,oBAAoB,IAAI,OAAO,CAAC,QAAQ,CAAC,CAMxD;AAED,wBAAgB,GAAG,IAAI,QAAQ,CAO9B;AAED,wBAAgB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,GAAG,IAAI,CAkBrF;AAED,wBAAgB,KAAK,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY,UAAO,GAAG,OAAO,CAuBrF;AAED,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,YAAY,GAAG,SAAS,CAe5E;AAYD,wBAAgB,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,mBAAmB,GAAG,SAAS,CAe3E;AAWD,wBAAgB,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,mBAAmB,CAgBzD;AAED,wBAAgB,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAQ5C;AAED,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAKnD;AAED,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,GAAG,YAAY,CAiChE;AAED,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAO3D;AAED,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,GAAG,OAAO,CAiCnF;AAED,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAwB1E;AAED,wBAAgB,MAAM,IAAI,IAAI,CAK7B;AAED,eAAO,MAAM,OAAO;;iBAEL,IAAI;;;;;;;;;;;;;;;;;;gBA/pBD,OAAO;;;;;;;;;;;;;;;;;;;;;;;;YAwBjB,QAAQ;gBACJ,MAAM;oBACF,IAAI;wBACA,SAAS;wBACT,WAAW;wBACX,MAAM;;oBAEV,IAAI;wBACA,WAAW;wBACX,MAAM;wBACN,SAAS;;oBAEb,IAAI;wBACA,MAAM;wBACN,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+nB3B,CAAC"}
|
||||
Vendored
+1019
File diff suppressed because it is too large
Load Diff
Vendored
+11
@@ -0,0 +1,11 @@
|
||||
/**
|
||||
* Order of execution:
|
||||
* - Transfer
|
||||
* - Change
|
||||
* - Add
|
||||
* - Remove
|
||||
*
|
||||
* Should allow the most flexibility whenever combination of migrations is necessary (e.g. Transfer + Change)
|
||||
*/
|
||||
export declare function migrateIfNecessary(): void;
|
||||
//# sourceMappingURL=settingsMigration.d.ts.map
|
||||
Vendored
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"settingsMigration.d.ts","sourceRoot":"","sources":["../../lib/util/settingsMigration.ts"],"names":[],"mappings":"AAshBA;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,IAAI,IAAI,CAoGzC"}
|
||||
Vendored
+11
@@ -0,0 +1,11 @@
|
||||
import type { IncomingMessage, ServerResponse } from "node:http";
|
||||
export type StaticFileServer = (request: IncomingMessage, response: ServerResponse) => void;
|
||||
/** Terminal `404` handler for requests no file matched, mirroring the response `finalhandler` used to produce. */
|
||||
export declare function sendNotFound(request: IncomingMessage, response: ServerResponse): void;
|
||||
/**
|
||||
* Serves `dir` on top of a plain `node:http` server, preferring the precompressed `.br`/`.gz` variant of a file when the client accepts it.
|
||||
*
|
||||
* Requests that match no file are answered by {@link sendNotFound}.
|
||||
*/
|
||||
export declare function createStaticFileServer(dir: string, logError: (message: string) => void): StaticFileServer;
|
||||
//# sourceMappingURL=staticFileServer.d.ts.map
|
||||
Vendored
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"staticFileServer.d.ts","sourceRoot":"","sources":["../../lib/util/staticFileServer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,eAAe,EAAE,cAAc,EAAC,MAAM,WAAW,CAAC;AAI/D,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,cAAc,KAAK,IAAI,CAAC;AAI5F,kHAAkH;AAClH,wBAAgB,YAAY,CAAC,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,cAAc,GAAG,IAAI,CAYrF;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,GAAG,gBAAgB,CAoCzG"}
|
||||
Vendored
+2
@@ -0,0 +1,2 @@
|
||||
export declare function stringify(value: object): string;
|
||||
//# sourceMappingURL=stringify.d.ts.map
|
||||
Vendored
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"stringify.d.ts","sourceRoot":"","sources":["../../lib/util/stringify.ts"],"names":[],"mappings":"AA2JA,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE/C"}
|
||||
Vendored
+96
@@ -0,0 +1,96 @@
|
||||
import type * as zhc from "zigbee-herdsman-converters";
|
||||
import type { Zigbee2MQTTAPI, Zigbee2MQTTResponse, Zigbee2MQTTResponseEndpoints, Zigbee2MQTTScene } from "../types/api";
|
||||
export declare const DEFAULT_BIND_GROUP_ID = 901;
|
||||
declare function capitalize(s: string): string;
|
||||
export declare function getZigbee2MQTTVersion(includeCommitHash?: boolean): Promise<{
|
||||
commitHash?: string;
|
||||
version: string;
|
||||
}>;
|
||||
declare function getDependencyVersion(depend: string): Promise<{
|
||||
version: string;
|
||||
}>;
|
||||
declare function formatDate(time: number, type: "ISO_8601" | "ISO_8601_local" | "epoch" | "relative"): string | number;
|
||||
declare function objectIsEmpty(object: object): boolean;
|
||||
declare function objectHasProperties(object: {
|
||||
[s: string]: unknown;
|
||||
}, properties: string[]): boolean;
|
||||
declare function equalsPartial(object: KeyValue, expected: KeyValue): boolean;
|
||||
declare function getObjectProperty<T>(object: KeyValue, key: string, defaultValue: NoInfer<T>): T;
|
||||
declare function getResponse<T extends Zigbee2MQTTResponseEndpoints>(request: KeyValue | string, data: Zigbee2MQTTAPI[T], error?: string): Zigbee2MQTTResponse<T>;
|
||||
declare function parseJSON(value: string, fallback: string): KeyValue | string;
|
||||
/**
|
||||
* Delete all keys from passed object that have null/undefined values.
|
||||
*
|
||||
* @param {KeyValue} obj Object to process (in-place)
|
||||
* @param {string[]} [ignoreKeys] Recursively ignore these keys in the object (keep null/undefined values).
|
||||
*/
|
||||
declare function removeNullPropertiesFromObject(obj: KeyValue, ignoreKeys?: string[]): void;
|
||||
declare function toNetworkAddressHex(value: number): string;
|
||||
declare function getAllFiles(path_: string): string[];
|
||||
declare function validateFriendlyName(name: string, throwFirstError?: boolean): string[];
|
||||
declare function sleep(seconds: number): Promise<void>;
|
||||
declare function sanitizeImageParameter(parameter: string): string;
|
||||
declare function isAvailabilityEnabledForEntity(entity: Device | Group, settings: Settings): boolean;
|
||||
declare function isZHEndpoint(obj: unknown): obj is zh.Endpoint;
|
||||
declare function flatten<Type>(arr: Type[][]): Type[];
|
||||
declare function arrayUnique<Type>(arr: Type[]): Type[];
|
||||
declare function isZHGroup(obj: unknown): obj is zh.Group;
|
||||
export declare const hours: (hours: number) => number;
|
||||
export declare const minutes: (minutes: number) => number;
|
||||
export declare const seconds: (seconds: number) => number;
|
||||
declare function publishLastSeen(data: eventdata.LastSeenChanged, settings: Settings, allowMessageEmitted: boolean, publishEntityState: PublishEntityState): Promise<void>;
|
||||
declare function filterProperties(filter: string[] | undefined, data: KeyValue): void;
|
||||
export declare function isNumericExpose(expose: zhc.Expose): expose is zhc.Numeric;
|
||||
export declare function assertEnumExpose(expose: zhc.Expose): asserts expose is zhc.Enum;
|
||||
export declare function assertNumericExpose(expose: zhc.Expose): asserts expose is zhc.Numeric;
|
||||
export declare function assertBinaryExpose(expose: zhc.Expose): asserts expose is zhc.Binary;
|
||||
export declare function isEnumExpose(expose: zhc.Expose): expose is zhc.Enum;
|
||||
export declare function isBinaryExpose(expose: zhc.Expose): expose is zhc.Binary;
|
||||
export declare function isLightExpose(expose: zhc.Expose): expose is zhc.Light;
|
||||
export declare function assertString(value: unknown, property: string): asserts value is string;
|
||||
declare function getScenes(entity: zh.Endpoint | zh.Group): Zigbee2MQTTScene[];
|
||||
declare function deviceNotCoordinator(device: zh.Device): boolean;
|
||||
declare function matchBase64File(value: string | undefined): {
|
||||
extension: string;
|
||||
data: string;
|
||||
} | false;
|
||||
declare function saveBase64DeviceIcon(base64Match: {
|
||||
extension: string;
|
||||
data: string;
|
||||
}): string;
|
||||
declare const noop: () => void;
|
||||
declare const _default: {
|
||||
matchBase64File: typeof matchBase64File;
|
||||
saveBase64DeviceIcon: typeof saveBase64DeviceIcon;
|
||||
capitalize: typeof capitalize;
|
||||
getZigbee2MQTTVersion: typeof getZigbee2MQTTVersion;
|
||||
getDependencyVersion: typeof getDependencyVersion;
|
||||
formatDate: typeof formatDate;
|
||||
objectIsEmpty: typeof objectIsEmpty;
|
||||
objectHasProperties: typeof objectHasProperties;
|
||||
equalsPartial: typeof equalsPartial;
|
||||
getObjectProperty: typeof getObjectProperty;
|
||||
getResponse: typeof getResponse;
|
||||
parseJSON: typeof parseJSON;
|
||||
removeNullPropertiesFromObject: typeof removeNullPropertiesFromObject;
|
||||
toNetworkAddressHex: typeof toNetworkAddressHex;
|
||||
isZHEndpoint: typeof isZHEndpoint;
|
||||
isZHGroup: typeof isZHGroup;
|
||||
hours: typeof hours;
|
||||
minutes: typeof minutes;
|
||||
seconds: typeof seconds;
|
||||
validateFriendlyName: typeof validateFriendlyName;
|
||||
sleep: typeof sleep;
|
||||
sanitizeImageParameter: typeof sanitizeImageParameter;
|
||||
isAvailabilityEnabledForEntity: typeof isAvailabilityEnabledForEntity;
|
||||
publishLastSeen: typeof publishLastSeen;
|
||||
getAllFiles: typeof getAllFiles;
|
||||
filterProperties: typeof filterProperties;
|
||||
flatten: typeof flatten;
|
||||
arrayUnique: typeof arrayUnique;
|
||||
getScenes: typeof getScenes;
|
||||
deviceNotCoordinator: typeof deviceNotCoordinator;
|
||||
noop: typeof noop;
|
||||
};
|
||||
export default _default;
|
||||
//# sourceMappingURL=utils.d.ts.map
|
||||
Vendored
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../lib/util/utils.ts"],"names":[],"mappings":"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"}
|
||||
Vendored
+17
@@ -0,0 +1,17 @@
|
||||
import { YAMLException } from "js-yaml";
|
||||
export declare class YAMLFileException extends YAMLException {
|
||||
file: string;
|
||||
constructor(error: YAMLException, file: string);
|
||||
}
|
||||
declare function read(file: string): KeyValue;
|
||||
declare function readIfExists(file: string, fallback?: KeyValue): KeyValue;
|
||||
declare function writeIfChanged(file: string, content: KeyValue): void;
|
||||
declare function updateIfChanged(file: string, key: string, value: KeyValue): void;
|
||||
declare const _default: {
|
||||
read: typeof read;
|
||||
readIfExists: typeof readIfExists;
|
||||
updateIfChanged: typeof updateIfChanged;
|
||||
writeIfChanged: typeof writeIfChanged;
|
||||
};
|
||||
export default _default;
|
||||
//# sourceMappingURL=yaml.d.ts.map
|
||||
Vendored
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"yaml.d.ts","sourceRoot":"","sources":["../../lib/util/yaml.ts"],"names":[],"mappings":"AAIA,OAAO,EAAa,aAAa,EAAC,MAAM,SAAS,CAAC;AAElD,qBAAa,iBAAkB,SAAQ,aAAa;IAChD,IAAI,EAAE,MAAM,CAAC;IAEb,YAAY,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,EAQ7C;CACJ;AAED,iBAAS,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,CAYpC;AAED,iBAAS,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,GAAE,QAAa,GAAG,QAAQ,CAErE;AAED,iBAAS,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,GAAG,IAAI,CAM7D;AAED,iBAAS,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,GAAG,IAAI,CAMzE"}
|
||||
Vendored
+57
@@ -0,0 +1,57 @@
|
||||
import { Controller } from "zigbee-herdsman";
|
||||
import Device from "./model/device";
|
||||
import Group from "./model/group";
|
||||
export default class Zigbee {
|
||||
#private;
|
||||
private eventBus;
|
||||
private groupLookup;
|
||||
private deviceLookup;
|
||||
private coordinatorIeeeAddr;
|
||||
constructor(eventBus: EventBus);
|
||||
get zhController(): Controller;
|
||||
start(abortSignal: AbortSignal): Promise<boolean>;
|
||||
private logDeviceInterview;
|
||||
private generateNetworkKey;
|
||||
private generateExtPanID;
|
||||
private generatePanID;
|
||||
getCoordinatorVersion(): Promise<zh.CoordinatorVersion>;
|
||||
isStopping(): boolean;
|
||||
backup(): Promise<void>;
|
||||
coordinatorCheck(): Promise<{
|
||||
missingRouters: Device[];
|
||||
}>;
|
||||
getNetworkParameters(): Promise<zh.NetworkParameters>;
|
||||
stop(): Promise<void>;
|
||||
getPermitJoin(): boolean;
|
||||
getPermitJoinEnd(): number | undefined;
|
||||
permitJoin(time: number, device?: Device): Promise<void>;
|
||||
resolveDevicesDefinitions(ignoreCache?: boolean, abortSignal?: AbortSignal | undefined): Promise<void>;
|
||||
private resolveDevice;
|
||||
private resolveGroup;
|
||||
resolveEntity(key: string | number | zh.Device): Device | Group | undefined;
|
||||
resolveEntityAndEndpoint(id: string): {
|
||||
ID: string;
|
||||
entity: Device | Group | undefined;
|
||||
endpointID?: string;
|
||||
endpoint?: zh.Endpoint;
|
||||
};
|
||||
firstCoordinatorEndpoint(): zh.Endpoint;
|
||||
devicesAndGroupsIterator(devicePredicate?: (value: zh.Device) => boolean, groupPredicate?: (value: zh.Group) => boolean): Generator<Device | Group>;
|
||||
groupsIterator(predicate?: (value: zh.Group) => boolean): Generator<Group>;
|
||||
devicesIterator(predicate?: (value: zh.Device) => boolean): Generator<Device>;
|
||||
private acceptJoiningDeviceHandler;
|
||||
touchlinkFactoryResetFirst(): Promise<boolean>;
|
||||
touchlinkFactoryReset(ieeeAddr: string, channel: number): Promise<boolean>;
|
||||
addInstallCode(installCode: string): Promise<void>;
|
||||
touchlinkIdentify(ieeeAddr: string, channel: number): Promise<void>;
|
||||
touchlinkScan(): Promise<{
|
||||
ieeeAddr: string;
|
||||
channel: number;
|
||||
}[]>;
|
||||
createGroup(id: number): Group;
|
||||
deviceByNetworkAddress(networkAddress: number): Device | undefined;
|
||||
groupByID(id: number): Group | undefined;
|
||||
removeDeviceFromLookup(ieee: string): boolean;
|
||||
removeGroupFromLookup(id: number): boolean;
|
||||
}
|
||||
//# sourceMappingURL=zigbee.d.ts.map
|
||||
Vendored
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"zigbee.d.ts","sourceRoot":"","sources":["../lib/zigbee.ts"],"names":[],"mappings":"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"}
|
||||
@@ -1,37 +0,0 @@
|
||||
FROM node:14-alpine3.12 as base
|
||||
|
||||
WORKDIR /app
|
||||
RUN apk add --no-cache tzdata eudev tini
|
||||
|
||||
COPY package.json ./
|
||||
|
||||
# Dependencies and build
|
||||
FROM base as dependencies_and_build
|
||||
|
||||
COPY npm-shrinkwrap.json tsconfig.json index.js ./
|
||||
COPY lib ./lib
|
||||
|
||||
RUN apk add --no-cache --virtual .buildtools make gcc g++ python3 linux-headers git && \
|
||||
npm ci --no-audit --no-optional --no-update-notifier && \
|
||||
npm run build && \
|
||||
rm -rf node_modules && \
|
||||
npm ci --production --no-audit --no-optional --no-update-notifier && \
|
||||
apk del .buildtools
|
||||
|
||||
# Release
|
||||
FROM base as release
|
||||
|
||||
COPY --from=dependencies_and_build /app/node_modules ./node_modules
|
||||
COPY --from=dependencies_and_build /app/dist ./dist
|
||||
COPY LICENSE index.js data/configuration.yaml ./
|
||||
|
||||
COPY docker/docker-entrypoint.sh /usr/local/bin/
|
||||
RUN chmod +x /usr/local/bin/docker-entrypoint.sh
|
||||
|
||||
RUN mkdir /app/data
|
||||
|
||||
ARG COMMIT
|
||||
RUN echo "$COMMIT" > dist/.hash
|
||||
|
||||
ENTRYPOINT ["docker-entrypoint.sh"]
|
||||
CMD [ "/sbin/tini", "--", "node", "index.js"]
|
||||
@@ -1,14 +0,0 @@
|
||||
version: '3'
|
||||
services:
|
||||
zigbee2mqtt:
|
||||
container_name: zigbee2mqtt
|
||||
image: koenkk/zigbee2mqtt
|
||||
volumes:
|
||||
- ./data:/app/data
|
||||
devices:
|
||||
# CC251
|
||||
#- /dev/ttyUSB_cc2531:/dev/ttyACM0
|
||||
# CC2530 / GBAN GB2530S
|
||||
#- /dev/ttyUSB_cc2530:/dev/ttyACM0
|
||||
restart: always
|
||||
network_mode: host
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user