mirror of
https://github.com/Koenkk/zigbee2mqtt.git
synced 2026-08-29 15:18:41 +00:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
ff02e54f25 | ||
|
|
963064dc22 | ||
|
|
a7eea5ecad | ||
|
|
e13bdf1a31 | ||
|
|
5bee8ccafe | ||
|
|
9d61184013 | ||
|
|
4f300aa72d | ||
|
|
cf7e0d1aa9 | ||
|
|
17874cfdc1 | ||
|
|
e12a371093 | ||
|
|
7e74b8c549 | ||
|
|
cdf64823ef | ||
|
|
5d195fc299 | ||
|
|
fd932926e7 | ||
|
|
38159a536c | ||
|
|
7e2ca5a97e | ||
|
|
b95dcd0f9b | ||
|
|
73f0f8fe43 | ||
|
|
16f3e884fc | ||
|
|
c5e6b9dd13 | ||
|
|
cae5d1a004 | ||
|
|
85375ffbae | ||
|
|
43fc66c436 | ||
|
|
5718cd0157 | ||
|
|
dd6e34a152 | ||
|
|
1ddf60bef0 | ||
|
|
6ff3954b71 | ||
|
|
6dd2926a1d | ||
|
|
5970e498f3 | ||
|
|
dcd81cbbf2 | ||
|
|
9e5fb04314 | ||
|
|
d324a91a5f | ||
|
|
fcfeac81e4 | ||
|
|
c44816efee | ||
|
|
86f19affa1 | ||
|
|
e21bfc1567 | ||
|
|
329c290505 | ||
|
|
b624a8ccad | ||
|
|
a43cd5a864 | ||
|
|
5f6b37bf83 | ||
|
|
653dfc7b6f | ||
|
|
aa87443c95 | ||
|
|
f5a5668359 | ||
|
|
5f2e93f64d | ||
|
|
7cd30a3a05 | ||
|
|
34a3e3c00b | ||
|
|
28e32884d9 | ||
|
|
dda2e064b2 | ||
|
|
9605e724e1 | ||
|
|
6912f8108d | ||
|
|
3c0e784afb | ||
|
|
be50d650a4 | ||
|
|
a5057ac101 | ||
|
|
72a74d7dc1 | ||
|
|
dccdc5aafa | ||
|
|
6dd60c09bf | ||
|
|
4ec905efca | ||
|
|
f62eabcb6d | ||
|
|
fd2cf41f0f | ||
|
|
755d101738 | ||
|
|
6fdd58be8a | ||
|
|
26083a62d9 | ||
|
|
30b35e7272 | ||
|
|
f6c01a02c9 | ||
|
|
35b9e6204d | ||
|
|
84f9d09b3f | ||
|
|
f260bf974b | ||
|
|
a2ea9c548f | ||
|
|
932a66a5c4 | ||
|
|
3d0541a32d | ||
|
|
3bb1f0f10b | ||
|
|
85b042ac25 | ||
|
|
f1fe1edb49 | ||
|
|
70d177485d | ||
|
|
fd44537984 | ||
|
|
dc20816043 | ||
|
|
c6d09df01a | ||
|
|
74cdde23b9 | ||
|
|
57aefe477d | ||
|
|
d5a3ce3871 | ||
|
|
92de1ca942 | ||
|
|
6f477c2923 | ||
|
|
5453c082c4 | ||
|
|
07fbc1b9a3 | ||
|
|
afeed4f372 | ||
|
|
2a197a4ba8 | ||
|
|
5e4e6d81de | ||
|
|
faede151f3 | ||
|
|
ea4aaf2cfa | ||
|
|
ac94b95bba | ||
|
|
708c497614 | ||
|
|
bd8aaea767 | ||
|
|
ac4ca88b8a | ||
|
|
8651fd7162 | ||
|
|
03ff4e6e5a | ||
|
|
3bc2ec8c79 | ||
|
|
c4804e574e | ||
|
|
5d3461c4c6 | ||
|
|
9380bbcadf | ||
|
|
3a0fe60b22 | ||
|
|
a1eea76dd4 | ||
|
|
69e805c882 | ||
|
|
0fe3a9b45c | ||
|
|
ecf64c8058 | ||
|
|
d3f705162d | ||
|
|
bd8282a41a | ||
|
|
82e87d563e | ||
|
|
d6c2b536ee | ||
|
|
919178840f | ||
|
|
84593a55ee | ||
|
|
1b8154bac1 | ||
|
|
8a133de1d1 | ||
|
|
75dddf462e | ||
|
|
91bbb0d4a8 | ||
|
|
d25d093a1a | ||
|
|
0bf91fd300 | ||
|
|
bf285681b4 | ||
|
|
cf9a5b7553 | ||
|
|
c2a0a6b2d1 | ||
|
|
eaff35421f | ||
|
|
ec20bfdd15 | ||
|
|
1f2d3ec850 | ||
|
|
d9b418cdde | ||
|
|
56ea61be3e | ||
|
|
b59afbd10d | ||
|
|
21fc5f0275 | ||
|
|
9d6f6186b0 | ||
|
|
590a897e9b | ||
|
|
753e8c3da7 | ||
|
|
ef57083ae9 | ||
|
|
1fa13f3f96 | ||
|
|
0fb84294f0 | ||
|
|
828df38e09 | ||
|
|
a13bd85ef3 | ||
|
|
65526e7f68 | ||
|
|
81d04d3dae | ||
|
|
16c222d3b3 | ||
|
|
0e61618935 | ||
|
|
bede1032e6 | ||
|
|
0786f22ce6 | ||
|
|
c9c4fad7df | ||
|
|
a52d3ea073 | ||
|
|
dcc410f6c5 | ||
|
|
c7743e6734 | ||
|
|
cc56141c39 | ||
|
|
60c2593669 | ||
|
|
db945c90be | ||
|
|
9df1065634 | ||
|
|
65f23171e6 | ||
|
|
920d1c91c7 | ||
|
|
698b40554e | ||
|
|
cb9beaa2ad | ||
|
|
d652856e90 | ||
|
|
7d09d065c5 | ||
|
|
352fa2db50 | ||
|
|
349ebad659 | ||
|
|
8fefa16fbc | ||
|
|
99b330e85e | ||
|
|
3f49e2e596 | ||
|
|
dcb75b19d3 | ||
|
|
c213a96133 | ||
|
|
78984a65ab | ||
|
|
6c059c3898 | ||
|
|
ac6eb19aff | ||
|
|
6df4e39f18 | ||
|
|
b0d3c2f964 | ||
|
|
f797a12250 | ||
|
|
081d3c3dfe | ||
|
|
7ca966ce39 | ||
|
|
fc664bdc68 | ||
|
|
2cb27b14f9 | ||
|
|
86a102e081 | ||
|
|
9119e54c2c | ||
|
|
f379bc0391 | ||
|
|
2e736bf501 | ||
|
|
1e7f985d4e | ||
|
|
61c4ff33e0 | ||
|
|
73ae48f387 | ||
|
|
0a1c60b2cf | ||
|
|
4eb56319c4 | ||
|
|
d8ea36af29 | ||
|
|
d0cf61bf10 | ||
|
|
ddb83cc6e4 | ||
|
|
e54de4bea7 | ||
|
|
97cc56b691 | ||
|
|
c9df5c8221 | ||
|
|
7f13e2c3e6 | ||
|
|
0aab565083 | ||
|
|
153f8bcfb5 | ||
|
|
c04ed81adb | ||
|
|
a1cf75456b | ||
|
|
b063e67e24 | ||
|
|
a4da482225 | ||
|
|
98302bebd1 | ||
|
|
2197328db5 | ||
|
|
c5b9176614 | ||
|
|
0322354c37 | ||
|
|
b692c94fe9 | ||
|
|
1496861811 | ||
|
|
5459152f01 | ||
|
|
1db926173d | ||
|
|
da9ee71d80 | ||
|
|
d9f02230a0 | ||
|
|
bf68f4575f | ||
|
|
33ea08ad22 | ||
|
|
3a17db7c79 | ||
|
|
e55252b9ff | ||
|
|
71d12c3c71 | ||
|
|
bc7b2bd5e0 | ||
|
|
50d58d3dff | ||
|
|
4180bd8933 | ||
|
|
172d11677b | ||
|
|
ab5537e18c | ||
|
|
b06e3b61f2 | ||
|
|
03d913defc | ||
|
|
e4bcac5411 | ||
|
|
5ed29d045b | ||
|
|
75acffa8c7 | ||
|
|
ade84dc6c0 | ||
|
|
7d49e136a6 | ||
|
|
0c1dba7208 | ||
|
|
63f4f681c4 | ||
|
|
1afbe05318 | ||
|
|
8376b7c5f6 | ||
|
|
b71a9920de | ||
|
|
2fd59cb7ef | ||
|
|
60e72c612c | ||
|
|
fbbc1fad73 | ||
|
|
d5de918247 | ||
|
|
f916ec5f4c | ||
|
|
469a01ebb6 | ||
|
|
6ede5a373e | ||
|
|
6e1af542e5 | ||
|
|
53051e9192 | ||
|
|
542a5f1564 | ||
|
|
b82f0e46aa | ||
|
|
f0f2dc847b | ||
|
|
8433571b1e | ||
|
|
2141d670bf | ||
|
|
fccb4de565 | ||
|
|
236afaacaf | ||
|
|
f463ca68a5 | ||
|
|
7502ba5312 | ||
|
|
c05b70b30b | ||
|
|
c22f8b36ba | ||
|
|
7276d116c2 | ||
|
|
1b7549dd73 | ||
|
|
7e4fff8454 | ||
|
|
ad43d61f28 | ||
|
|
ed5c52654f | ||
|
|
4f1b521bee | ||
|
|
a46f06a312 | ||
|
|
6311dfb0f1 | ||
|
|
ee82a885f7 | ||
|
|
88e6c10fb2 | ||
|
|
88524b7aed | ||
|
|
b2a27dd64a | ||
|
|
2a520b0e81 | ||
|
|
0c32f25203 | ||
|
|
1aa020875a | ||
|
|
9e5acdc94e | ||
|
|
417879b6a8 | ||
|
|
4ee7845b2a | ||
|
|
fb9600d55d | ||
|
|
47de3e20ae | ||
|
|
c8c8417192 | ||
|
|
c00f091d7f | ||
|
|
b0b2bd2444 | ||
|
|
1e0c64caf5 | ||
|
|
db1fd6dd12 | ||
|
|
9ee0049248 | ||
|
|
56a0f6256b | ||
|
|
197a3cdebc | ||
|
|
c520985a4f | ||
|
|
931926cd96 | ||
|
|
427c99cd83 | ||
|
|
c2cd02e790 | ||
|
|
a921394240 | ||
|
|
21f047f4aa | ||
|
|
9a70c95672 | ||
|
|
fc2e93d96f | ||
|
|
494c15a731 | ||
|
|
23a2feb7cf | ||
|
|
f4ceccaa9b | ||
|
|
b4398e21c3 | ||
|
|
3900d56d6e | ||
|
|
08f64b96be | ||
|
|
8411c0b30d | ||
|
|
43260a3a83 | ||
|
|
6f4013fd94 | ||
|
|
426a89914f | ||
|
|
4fa1a4c57a | ||
|
|
5ddfcea8f3 | ||
|
|
502c0cb852 | ||
|
|
07d8fd5605 | ||
|
|
445ccb5bbd | ||
|
|
74c8758a3b | ||
|
|
1f6f73e8d2 | ||
|
|
04b2f24d6b | ||
|
|
5e96c46a7a | ||
|
|
ec4f5e1472 | ||
|
|
32a512ea6b | ||
|
|
46a3461e76 | ||
|
|
fe92e9c421 | ||
|
|
2f02168fcb | ||
|
|
2ba86a13eb | ||
|
|
7dd1c75be0 | ||
|
|
b5f0e9b958 | ||
|
|
bd901ec9dd | ||
|
|
a3d89c0137 | ||
|
|
f1ae2194c9 | ||
|
|
738c31c758 | ||
|
|
f8fcf3a7c8 | ||
|
|
ae863ba5ab | ||
|
|
5e66019390 | ||
|
|
696e6b4787 | ||
|
|
7403fc7ce4 | ||
|
|
79d8cb69c0 | ||
|
|
b33878304f | ||
|
|
6e71c48108 | ||
|
|
2b7aeed4fb | ||
|
|
b3cedc4ad1 | ||
|
|
8ea62f535e | ||
|
|
de879858a5 | ||
|
|
d4ba3ae069 | ||
|
|
0e608c7b2e | ||
|
|
aab18de88d | ||
|
|
6d684b7c11 | ||
|
|
396e4b1bed | ||
|
|
04d7a87765 | ||
|
|
49878e093d | ||
|
|
209624cbef | ||
|
|
65a9645677 | ||
|
|
ad41ed6dcf | ||
|
|
b494136c22 | ||
|
|
356ed9fa39 | ||
|
|
8b5938f73f | ||
|
|
51d8c79ef2 | ||
|
|
3897541366 | ||
|
|
0eee507edb | ||
|
|
caf87e805d | ||
|
|
ae41b7bc43 | ||
|
|
50b12a757c | ||
|
|
9e933ea1ab | ||
|
|
713263c428 | ||
|
|
74e7c7d73a | ||
|
|
bf2d733c0e | ||
|
|
6be6472fa3 | ||
|
|
7cec5f2d96 | ||
|
|
ca59993863 | ||
|
|
c1f9f630b1 | ||
|
|
fef68c122f | ||
|
|
8f45de6a3f | ||
|
|
a15dcf8345 | ||
|
|
f2ec895ec0 | ||
|
|
52c51b687d | ||
|
|
a1cb4ca214 | ||
|
|
2ba2864f87 | ||
|
|
ecc734cff9 | ||
|
|
420171e060 | ||
|
|
8a2e9075bf | ||
|
|
4f7328fe60 | ||
|
|
f03ade2775 | ||
|
|
094c288c3c | ||
|
|
19f6d5f72a | ||
|
|
01a26adefd | ||
|
|
a43e3969ed | ||
|
|
9dbdfc0a2e | ||
|
|
bf6cc8fee3 | ||
|
|
7d2474060a | ||
|
|
4c4fcd7216 | ||
|
|
8bd08910a4 | ||
|
|
6985ee1b6e | ||
|
|
026fb1bd78 | ||
|
|
b5a3fa67d9 | ||
|
|
d980d0abcc | ||
|
|
0d6c001f2c | ||
|
|
95db22e12b | ||
|
|
9f120826c1 | ||
|
|
885f50839c | ||
|
|
d1993e81da | ||
|
|
df99c7edf5 | ||
|
|
c372618eac | ||
|
|
deab0004f2 | ||
|
|
d69111f577 | ||
|
|
96191a2836 | ||
|
|
c6592029ea | ||
|
|
b6aabcca64 | ||
|
|
01effab24c | ||
|
|
3591f4f976 | ||
|
|
ae9f071ffc | ||
|
|
b12d868866 | ||
|
|
949d236697 | ||
|
|
4cb98b6257 | ||
|
|
7fe9d6731a | ||
|
|
15fca170ad | ||
|
|
2071b0f69f | ||
|
|
2b4fc21585 | ||
|
|
f40de00d32 | ||
|
|
1d49f349b9 | ||
|
|
e29d5f70ae | ||
|
|
dc5a090d44 | ||
|
|
06142115af | ||
|
|
c1b597c02f | ||
|
|
744444ceb9 | ||
|
|
7a13626da7 | ||
|
|
d86aa10875 | ||
|
|
85e86dbdc2 | ||
|
|
b0cdcf2e21 | ||
|
|
b3108a26d0 | ||
|
|
3196c0a974 | ||
|
|
7041637e5b | ||
|
|
501b9652b8 | ||
|
|
3c062a330d | ||
|
|
cd13286ca7 | ||
|
|
b7252379b9 | ||
|
|
cbc1b3ab39 | ||
|
|
db0d8c1cdd | ||
|
|
3b1b9db992 | ||
|
|
7bf5b2fd76 | ||
|
|
e7ba350770 | ||
|
|
884e3aa475 | ||
|
|
aec871cd27 | ||
|
|
7d706b8ff4 | ||
|
|
63c0a962ae | ||
|
|
cf3775e0b8 | ||
|
|
7c53e9bb15 | ||
|
|
9bc87b765a | ||
|
|
0f2f7462a5 | ||
|
|
34feef6cf4 | ||
|
|
0328ad7cb6 | ||
|
|
ca27f9faf2 | ||
|
|
125f15b61f | ||
|
|
fb1feca3ca | ||
|
|
584a5f1b19 | ||
|
|
a976c1db93 | ||
|
|
eae8a80588 | ||
|
|
bb9b6dd550 | ||
|
|
d15cbe0a29 | ||
|
|
324180c292 | ||
|
|
d243f08f17 | ||
|
|
977d26eeda | ||
|
|
b7c525de65 | ||
|
|
49685cb681 | ||
|
|
7334d50fbf | ||
|
|
eab7665726 | ||
|
|
54342f6fe9 | ||
|
|
95f9bc2535 | ||
|
|
b5661d297b | ||
|
|
4fee0ff501 | ||
|
|
8ada85e1ce | ||
|
|
a8dca627d9 | ||
|
|
95f21947fc | ||
|
|
ab64d079aa | ||
|
|
898081fcb4 | ||
|
|
993908eb19 | ||
|
|
f0b19cc696 | ||
|
|
811cf2943f | ||
|
|
3377853dab | ||
|
|
d6c7e75e22 | ||
|
|
ffa6012079 | ||
|
|
7b2763a053 | ||
|
|
77f344198c | ||
|
|
6d73dd143c | ||
|
|
625b6c51d8 | ||
|
|
9396bde1f3 | ||
|
|
ae01f30f71 | ||
|
|
b8fb13043b | ||
|
|
2d7a6ecaf3 | ||
|
|
7801493a7a | ||
|
|
5666a59524 | ||
|
|
995649d0da | ||
|
|
fd894a9ce3 | ||
|
|
9c249328e3 | ||
|
|
0bc6cf7a69 | ||
|
|
08f3f96d73 | ||
|
|
312ed033db | ||
|
|
fb27bd292f | ||
|
|
06f6329241 | ||
|
|
92d0e44184 | ||
|
|
ad4f77b5ce | ||
|
|
f25e6a50b9 | ||
|
|
5be2c412c1 | ||
|
|
3fdfc6f57f | ||
|
|
bc4dff65ff | ||
|
|
bcbe3eb075 | ||
|
|
567bdca276 | ||
|
|
b912386786 | ||
|
|
b38eb76274 | ||
|
|
02818ddaf5 | ||
|
|
78c4f43496 | ||
|
|
26f378237f | ||
|
|
f886259f92 | ||
|
|
2f607c4cad | ||
|
|
1b111c1250 | ||
|
|
f58b0fa4f2 | ||
|
|
8207321c30 | ||
|
|
7f5865aaf9 | ||
|
|
0fdec7c225 | ||
|
|
55a1709103 | ||
|
|
c5cb60e998 | ||
|
|
5a95e2fc8c | ||
|
|
f750bb34f9 | ||
|
|
5ee79b28d9 | ||
|
|
a70bccd2b6 | ||
|
|
efd2fba1b5 | ||
|
|
9d82ad32d0 | ||
|
|
8559ea2301 | ||
|
|
ca40cf622a | ||
|
|
e3c9448656 | ||
|
|
2521af7d78 | ||
|
|
debc96c232 | ||
|
|
17aba009af | ||
|
|
ff61f24b74 | ||
|
|
604fa925e4 | ||
|
|
b01b1a07bb | ||
|
|
44002ed1c3 | ||
|
|
d3f271f984 | ||
|
|
d0306aedea | ||
|
|
03123fb783 | ||
|
|
d583a61c9f | ||
|
|
8d0623f24e | ||
|
|
0d92109323 | ||
|
|
aa08151049 | ||
|
|
1efe6867ed | ||
|
|
e01a4ec5b2 | ||
|
|
1a688cf363 | ||
|
|
624f1ced68 | ||
|
|
54f3843a03 | ||
|
|
8b8604dbf4 | ||
|
|
02a747066a | ||
|
|
c8df9747ad | ||
|
|
b41cacd992 | ||
|
|
06fb89da3a | ||
|
|
50103e381c | ||
|
|
080feddf28 | ||
|
|
4e214a0686 | ||
|
|
80149c3579 | ||
|
|
896a7a097c | ||
|
|
41ad606137 | ||
|
|
4fc4c7b83a | ||
|
|
8436768dc0 | ||
|
|
beb2c5efb0 | ||
|
|
b3257c714a | ||
|
|
6b1570b259 | ||
|
|
e371fcae30 | ||
|
|
8523aa61b0 | ||
|
|
8ad1d49870 | ||
|
|
f55ec62c6c | ||
|
|
254c0e9fa5 | ||
|
|
17cb59b958 | ||
|
|
78b0e00d14 | ||
|
|
0ee1d27099 | ||
|
|
ce370750c0 | ||
|
|
f36a23ce7b | ||
|
|
640ce11e34 | ||
|
|
03af9da97d | ||
|
|
97bca73ba2 | ||
|
|
5d41c97655 | ||
|
|
305fb70d78 | ||
|
|
0a9f2d497a | ||
|
|
6a90937cfa | ||
|
|
0bac4ba9bf | ||
|
|
975bc741e2 | ||
|
|
c3ca0249c4 | ||
|
|
bc1e3d68f9 | ||
|
|
875ca536e0 | ||
|
|
a13080f399 | ||
|
|
d20012e4d8 | ||
|
|
87fb513758 | ||
|
|
3322d6cb20 | ||
|
|
e0feacea0b | ||
|
|
8673fa27e2 | ||
|
|
97f54facde | ||
|
|
df797617f5 | ||
|
|
7a6cc080d4 | ||
|
|
1543373b7f | ||
|
|
59f16f76f1 | ||
|
|
500bce2418 | ||
|
|
41b2fb3fc9 | ||
|
|
df819e3318 | ||
|
|
b29a5a9c1b | ||
|
|
b80d16c4b3 | ||
|
|
8109bf68e7 | ||
|
|
f584b5dcca | ||
|
|
2e20798aef | ||
|
|
1319f8087c | ||
|
|
2e579b66ad | ||
|
|
d71fadd73f | ||
|
|
5fa8ce9913 | ||
|
|
4d3d15f5b9 | ||
|
|
5b52defe9e | ||
|
|
fc9a0be1e9 | ||
|
|
65ad81a7b6 | ||
|
|
79d405afe9 | ||
|
|
bc3fca9d68 | ||
|
|
14f14e909d | ||
|
|
679182d2d4 | ||
|
|
823a9ea248 | ||
|
|
aebce9099b | ||
|
|
e6e558eae7 | ||
|
|
b9552f8ab3 | ||
|
|
7cd8e74a7e | ||
|
|
f9860f5b9d | ||
|
|
21575673b3 | ||
|
|
6499b78108 | ||
|
|
c49b3f4ae3 | ||
|
|
3133cb7dae | ||
|
|
eb063efeb4 | ||
|
|
0771e2c5a0 | ||
|
|
69736a883e | ||
|
|
31c6d794a9 | ||
|
|
90cc4ad0e1 | ||
|
|
3b068daa12 | ||
|
|
3b317535d3 | ||
|
|
dec470fb51 | ||
|
|
3872d58561 | ||
|
|
abe9655bc1 | ||
|
|
d06522d488 | ||
|
|
bc52e11693 | ||
|
|
0a73511609 | ||
|
|
7057b2f9d7 | ||
|
|
49f37047cc | ||
|
|
dd6d6cd407 | ||
|
|
8d9911b4b5 | ||
|
|
fa61d17f0b | ||
|
|
8356fda183 | ||
|
|
39600b394e | ||
|
|
905feb3701 | ||
|
|
6290f6beec | ||
|
|
6c8f1733d4 | ||
|
|
fbb6b27b44 | ||
|
|
d7031d259b | ||
|
|
4c2948145a | ||
|
|
5c8da2d36a | ||
|
|
dd7388c802 | ||
|
|
7026f42db3 | ||
|
|
f5aa448ec0 | ||
|
|
93624ddaca | ||
|
|
c7fc392c5f | ||
|
|
0055302bdc | ||
|
|
2cfd078b2d | ||
|
|
3d3a8d6e95 | ||
|
|
dc211027ed | ||
|
|
4c6ab0ee49 | ||
|
|
a8bbd85b15 | ||
|
|
1b6365b136 | ||
|
|
ecae4d1c3b | ||
|
|
7dae18c6b5 | ||
|
|
808370307b | ||
|
|
26027bfb85 | ||
|
|
d6b26239a1 | ||
|
|
3ee7c54e22 | ||
|
|
e56162d222 | ||
|
|
3f5dda0c51 | ||
|
|
1ca19a792d | ||
|
|
43f45f5860 | ||
|
|
e17f2c30c0 | ||
|
|
63a05fc443 | ||
|
|
366b5be765 | ||
|
|
3f4fc31835 | ||
|
|
658b3624ac | ||
|
|
55e1657c80 | ||
|
|
bc40911f2f | ||
|
|
3f37c439c9 | ||
|
|
fb60982077 | ||
|
|
fd68c243a8 | ||
|
|
c516973b4a | ||
|
|
c8c51e0118 | ||
|
|
2b843781e0 | ||
|
|
4eda443b3f | ||
|
|
d160efbde6 | ||
|
|
59926ffeea | ||
|
|
c446539c95 | ||
|
|
2aa7366a82 | ||
|
|
91799d6d96 | ||
|
|
3fcc8278d8 | ||
|
|
0b1a4f772e | ||
|
|
aa5db1624a | ||
|
|
42722b78e6 | ||
|
|
e44636eb4c | ||
|
|
22e73009da | ||
|
|
b52bd61e34 | ||
|
|
d7cb4b5b4f |
@@ -0,0 +1,7 @@
|
||||
node_modules
|
||||
.travis*
|
||||
.git
|
||||
.gitignore
|
||||
*.png
|
||||
firmware
|
||||
docker/Dockerfile*
|
||||
@@ -0,0 +1 @@
|
||||
node_modules/*
|
||||
@@ -0,0 +1,21 @@
|
||||
{
|
||||
"env": {
|
||||
"mocha": true,
|
||||
"es6": true,
|
||||
"node": true
|
||||
},
|
||||
"extends": ["eslint:recommended", "google"],
|
||||
"parserOptions": {
|
||||
"ecmaVersion": 2018,
|
||||
"sourceType": "module"
|
||||
},
|
||||
"rules": {
|
||||
"require-jsdoc": "off",
|
||||
"indent": ["error", 4],
|
||||
"max-len": ["error", { "code": 120 }],
|
||||
"mocha/no-exclusive-tests": "error"
|
||||
},
|
||||
"plugins": [
|
||||
"mocha"
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
Did you read the FAQ?
|
||||
https://koenkk.github.io/zigbee2mqtt/information/FAQ.md
|
||||
|
||||
Unsupported device?
|
||||
https://koenkk.github.io/zigbee2mqtt/how_tos/how_to_support_new_devices.html
|
||||
|
||||
A question?
|
||||
Read the documentation: https://koenkk.github.io/zigbee2mqtt/
|
||||
|
||||
Bug report:
|
||||
- First make sure your on the latest version of zigbee2mqtt.
|
||||
- Make sure you are running the latest CC253X firmware from https://github.com/koenkk/z-stack-firmware.
|
||||
- Provide a clear description of the problem.
|
||||
- If applicable, provide steps how to reproduce the problem.
|
||||
- Provide a log with `log_level` set to `debug`, see https://koenkk.github.io/zigbee2mqtt/configuration/configuration.html
|
||||
- DON'T copy logs directly here, post a link to https://hastebin.com/ or https://pastebin.com/.
|
||||
@@ -0,0 +1,13 @@
|
||||
# Number of days of inactivity before an issue becomes stale
|
||||
daysUntilStale: 60
|
||||
# Number of days of inactivity before a stale issue is closed
|
||||
daysUntilClose: 7
|
||||
# Label to use when marking an issue as stale
|
||||
staleLabel: stale
|
||||
# Comment to post when marking an issue as stale. Set to `false` to disable
|
||||
markComment: >
|
||||
This issue has been automatically marked as stale because it has not had
|
||||
recent activity. It will be closed if no further activity occurs. Thank you
|
||||
for your contributions.
|
||||
# Comment to post when closing a stale issue. Set to `false` to disable
|
||||
closeComment: false
|
||||
+66
@@ -0,0 +1,66 @@
|
||||
# Logs
|
||||
logs
|
||||
*.log
|
||||
npm-debug.log*
|
||||
yarn-debug.log*
|
||||
yarn-error.log*
|
||||
|
||||
# Runtime data
|
||||
pids
|
||||
*.pid
|
||||
*.seed
|
||||
*.pid.lock
|
||||
|
||||
# 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/
|
||||
+33
@@ -0,0 +1,33 @@
|
||||
language: node_js
|
||||
|
||||
sudo: required
|
||||
|
||||
services:
|
||||
- docker
|
||||
|
||||
node_js:
|
||||
- "10"
|
||||
|
||||
before_install:
|
||||
- "echo '{\"experimental\": true}' | sudo tee /etc/docker/daemon.json"
|
||||
- sudo apt update -y
|
||||
- sudo apt install --only-upgrade docker-ce -y
|
||||
- sudo service docker restart
|
||||
|
||||
install:
|
||||
- npm install
|
||||
|
||||
before_script:
|
||||
- npm test
|
||||
- npm run eslint
|
||||
|
||||
script:
|
||||
- ".travis/docker.sh"
|
||||
- ".travis/trigger-downstream.sh"
|
||||
|
||||
env:
|
||||
global:
|
||||
- DOCKER_USERNAME=koenkk
|
||||
- secure: q5W9+mHz13PslLkTxuYNXivOau+N5OyB53sqgb+krOCPlbN9+gvi2Av9SribVd5jp2yx2O9rV/mr8eS0M2ykvBJ3UsIsCXiFL1dEPmsz1wlFAnW3kbD2EGhGFEV0dWRflSlA+5iQtcMPvbYu2PAOChUUoY7NNlhcz2EC+XXUapvvvaDwA1oSdtX+m61qyREshZb8B57DyXhziy6i/xjhFa84C0mR/iGFRWpZgcxmrNFH+/XDhSIpdq2KshhDWhjyag3ukAsTxTpqzLh1rFRlczjJEn0CcHG4WHsWHUFn9KK2lvT/YCDP8w0URnR1bCr8nyxGZJ2DLW6AzxZtJfWjvbeZYjO2R3WeHpzp6Jw6Qz5pG3gmu2FgeFpZ3FTEGtJ/Ev0/pjkY2Msx9mItzUJ7D8hY2noQZMPASar6oXEDYlkomx7gHHla0MPv3PKSJg5LX6Ybl137GIa6MLYYyz6SEKfyRUQhy3Itqrb/ID/ZP0UuLgyyDfShb8A6XOnsVqwZAsOPtU2UPnD1vsVXhjkpflK9+7QjL5m9MSqfAhg6qtwNsswl1KSiyhmdldGhZW5OfUasDxZKHyx7bsS1BhNnLi/iy4ifDh6KSr64aUW4iM0X99gkU+662Hgf73QpIG+oP41r30iEN0unTcRrFQDIbTSSapbA95bwUCBF1CgQC20=
|
||||
- secure: em3lBVXvZ3kOVI4ipVlh93NIU6guLvyzHMmsLDuxhc92VFURqlYu3iXTTNEnknwyE31mziAkVFnmj+3OENd/VfzP01d4KKaYAQrbn2AnOMvcIIExLfaFU5QqbW1RMwRBIifhvrmboKt07pFsUy3Rghs80SwNSFDfLFoMhFMz+NdIZfJGW8LJy+gUPmz10YGzqh/chreowqOemgBBoswCGwIh1xB1KNejew3bQllnwQYGXcGuTDwDT4Wz+ObxlFt7YR/4n4oJY8jQYRPolM9qHQAGyn/Cn0TL3c8JqiBpVc1hm2OhYSDqvK0xf5IKsD+kIfFJPGa7nF2cwmhKdUNYR47oue3KB5tdrtDhwqUooTglvBOSXUIbthUR9Xu40ziyd5tHy0ixaLnDRGuKIIvEnXlcE6CgApoe3y2kHYa5dY+eUKxWwvH7b5hG+u82dYvw3VYpCHAnDQVgUzz4F63qZ2WZhcH0W3PF3/ytVAHyMu2vAMSrSXGi5xgM6el7Gp7SFVTFXBurbOaoJ3ZwwSEDP5d8mDyk1d8thmkQFL9P6iWtNnXOzjv4GIliEDWQg76BX6MLD3n3fnP0aq+RVmv+ev2Lp4xZZDfgGPek7g35IsaiohH6YvHloxE+ETQ0Ttb1lCQos9fj7LlI+ud6ExjwyRuEnzCOzr/qC/3Leg85Wc8=
|
||||
- secure: GbJVFFY4nmQovp8i2VoQ1AOV8h9QoAcleBV9Mg5TItA8U2Y+6t9wx0iWbaclxOrzI727XZOk5HquMTKKTI430lT6OjU01+YJqwyq+k650YiX5PImsgJXGhFzBKeUcB3A53kKijfr9aEV00YiXRsKoKAn+Bl09m/9O+melBbTwO/YAQyt6EoUt21Yk0BoqpW2CTMPAgsU5tm6Ra3bbJ+IaUYVMYBtuHqtGiKg8jgTHqRhwKejDyV7+1dDxX8q51bK2Kb6PujbI1SS5wsJEpkU/eoPs7MuprmlYarYtBt1fDXSK1EOjcfpyEFRlrNLewIKiFEo3dkTOEtW2a4t3tcAiXOj8Hcvp+6RsjTfnjYmZweHVh/JKDhujjHBMviyTjwp4RnPaQSFou0iVIB5+Mo34hUhFDXc30SBzaux+lyR3rGoEu5pubZNjG5CkKIpw3IyduNKtIrlbCnfg+WDU3jrXmk0fzmwyriyXhx9BAzM+hyFiElZ+3xoXAlmDlwvaRZyJuQQNslwGPbZyX9EByIUkECjYPf92QPyD0mjbn8C32IphgQ515Up+15g2meDniugzowLJkDe3W86M5fB1kPQiDq5oT4M6TgAPRElLN6/ibyfOzDAtOdZgUiQvFnUQb1s9LunZqrc57AKzuzl2xG9Ok/cUkZFSOjrFr40jXgS2Lw=
|
||||
Executable
+43
@@ -0,0 +1,43 @@
|
||||
#!/bin/bash -e
|
||||
|
||||
login() {
|
||||
echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin
|
||||
}
|
||||
|
||||
tag_push() {
|
||||
docker tag $DOCKER_USERNAME/zigbee2mqtt:$1 $DOCKER_USERNAME/zigbee2mqtt:$2
|
||||
docker push $DOCKER_USERNAME/zigbee2mqtt:$2
|
||||
}
|
||||
|
||||
build_and_push() {
|
||||
docker build --platform=$3 --build-arg COMMIT=$(git rev-parse --short HEAD) -t $DOCKER_USERNAME/zigbee2mqtt:$1 -f $2 .
|
||||
docker push $DOCKER_USERNAME/zigbee2mqtt:$1
|
||||
}
|
||||
|
||||
# Only update Docker images for:
|
||||
# - dev branch
|
||||
# - version release
|
||||
if [ "$TRAVIS_PULL_REQUEST" = "false" ] && [ ! -z ${TRAVIS_TAG+x} ] && [ ! "$TRAVIS_TAG" = "" ]
|
||||
then
|
||||
echo "Updating docker images for master branch!"
|
||||
login
|
||||
|
||||
# Push versioned images
|
||||
build_and_push "$TRAVIS_TAG" docker/Dockerfile.amd64 amd64
|
||||
build_and_push "$TRAVIS_TAG-arm32v6" docker/Dockerfile.arm32v6 arm
|
||||
build_and_push "$TRAVIS_TAG-arm64v8" docker/Dockerfile.arm64v8 arm64
|
||||
|
||||
# Push latest images.
|
||||
tag_push "$TRAVIS_TAG-arm32v6" "arm32v6"
|
||||
tag_push "$TRAVIS_TAG-arm64v8" "arm64v8"
|
||||
tag_push "$TRAVIS_TAG" latest
|
||||
elif [ "$TRAVIS_BRANCH" = "dev" -a "$TRAVIS_PULL_REQUEST" = "false" ]
|
||||
then
|
||||
echo "Updating docker images for dev branch!"
|
||||
login
|
||||
build_and_push latest-dev docker/Dockerfile.amd64 amd64
|
||||
build_and_push arm32v6-dev docker/Dockerfile.arm32v6 arm
|
||||
build_and_push arm64v8-dev docker/Dockerfile.arm64v8 arm64
|
||||
else
|
||||
echo "Not updating docker images, triggered by pull request or not on master/dev branch"
|
||||
fi
|
||||
Executable
+30
@@ -0,0 +1,30 @@
|
||||
#!/bin/bash
|
||||
|
||||
function travis_trigger() {
|
||||
local org=$1 && shift
|
||||
local repo=$1 && shift
|
||||
local branch=${1:-master} && shift
|
||||
|
||||
body="{
|
||||
\"request\": {
|
||||
\"branch\": \"${branch}\"
|
||||
}
|
||||
}"
|
||||
|
||||
curl -s -X POST \
|
||||
-H "Content-Type: application/json" \
|
||||
-H "Accept: application/json" \
|
||||
-H "Travis-API-Version: 3" \
|
||||
-H "Authorization: token $TRAVIS_TOKEN" \
|
||||
-d "$body" \
|
||||
"https://api.travis-ci.org/repo/${org}%2F${repo}/requests"
|
||||
}
|
||||
|
||||
# Only trigger downstream if on dev branch and not pull request
|
||||
if [ "$TRAVIS_BRANCH" = "dev" -a "$TRAVIS_PULL_REQUEST" = "false" ]
|
||||
then
|
||||
echo "Triggering build of downstream projects!"
|
||||
travis_trigger "danielwelch" "hassio-zigbee2mqtt" "master"
|
||||
else
|
||||
echo "Not triggering build of downstream projects, triggered by pull request or not on dev branch"
|
||||
fi
|
||||
@@ -0,0 +1,60 @@
|
||||
<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://travis-ci.org/Koenkk/zigbee2mqtt/">
|
||||
<img src="https://img.shields.io/travis/Koenkk/zigbee2mqtt.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>
|
||||
</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://koenkk.github.io/zigbee2mqtt/#getting-started)
|
||||
The [documentation](https://koenkk.github.io/zigbee2mqtt/) 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://koenkk.github.io/zigbee2mqtt/information/zigbee_network.html) to help you out.
|
||||
|
||||
## [Integrations](https://koenkk.github.io/zigbee2mqtt/#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/)
|
||||
- [Hassio](https://www.home-assistant.io/hassio/): Using [the official addon](https://github.com/danielwelch/hassio-zigbee2mqtt) from [danielwelch](https://github.com/danielwelch)
|
||||
- Generic install or Hassbian: Using instructions [here](https://koenkk.github.io/zigbee2mqtt/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
|
||||

|
||||
|
||||
## Supported devices
|
||||
See [Supported devices](https://koenkk.github.io/zigbee2mqtt/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://koenkk.github.io/zigbee2mqtt/information/supported_devices.html), support can be added (fairly) easy, see [How to support new devices](https://koenkk.github.io/zigbee2mqtt/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.
|
||||
@@ -0,0 +1,20 @@
|
||||
# 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
@@ -1,30 +0,0 @@
|
||||
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
@@ -1 +0,0 @@
|
||||
{"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
@@ -1,69 +0,0 @@
|
||||
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
@@ -1 +0,0 @@
|
||||
{"version":3,"file":"eventBus.d.ts","sourceRoot":"","sources":["../lib/eventBus.ts"],"names":[],"mappings":"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"}
|
||||
Vendored
-34
@@ -1,34 +0,0 @@
|
||||
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
@@ -1 +0,0 @@
|
||||
{"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
@@ -1,15 +0,0 @@
|
||||
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
@@ -1 +0,0 @@
|
||||
{"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
@@ -1,59 +0,0 @@
|
||||
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
@@ -1 +0,0 @@
|
||||
{"version":3,"file":"bridge.d.ts","sourceRoot":"","sources":["../../lib/extension/bridge.ts"],"names":[],"mappings":"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"}
|
||||
Vendored
-14
@@ -1,14 +0,0 @@
|
||||
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
@@ -1 +0,0 @@
|
||||
{"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
@@ -1,34 +0,0 @@
|
||||
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
@@ -1 +0,0 @@
|
||||
{"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
@@ -1,10 +0,0 @@
|
||||
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
@@ -1 +0,0 @@
|
||||
{"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
@@ -1,10 +0,0 @@
|
||||
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
@@ -1 +0,0 @@
|
||||
{"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
@@ -1,33 +0,0 @@
|
||||
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
@@ -1 +0,0 @@
|
||||
{"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
@@ -1,18 +0,0 @@
|
||||
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
@@ -1 +0,0 @@
|
||||
{"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
@@ -1,13 +0,0 @@
|
||||
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
@@ -1 +0,0 @@
|
||||
{"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
@@ -1,8 +0,0 @@
|
||||
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
@@ -1 +0,0 @@
|
||||
{"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
@@ -1,86 +0,0 @@
|
||||
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
@@ -1 +0,0 @@
|
||||
{"version":3,"file":"homeassistant.d.ts","sourceRoot":"","sources":["../../lib/extension/homeassistant.ts"],"names":[],"mappings":"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"}
|
||||
Vendored
-15
@@ -1,15 +0,0 @@
|
||||
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
@@ -1 +0,0 @@
|
||||
{"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
@@ -1,11 +0,0 @@
|
||||
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
@@ -1 +0,0 @@
|
||||
{"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
@@ -1,22 +0,0 @@
|
||||
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
@@ -1 +0,0 @@
|
||||
{"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
@@ -1,18 +0,0 @@
|
||||
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
@@ -1 +0,0 @@
|
||||
{"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
@@ -1,13 +0,0 @@
|
||||
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
@@ -1 +0,0 @@
|
||||
{"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
@@ -1,28 +0,0 @@
|
||||
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
@@ -1 +0,0 @@
|
||||
{"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
@@ -1,16 +0,0 @@
|
||||
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
@@ -1 +0,0 @@
|
||||
{"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
@@ -1,43 +0,0 @@
|
||||
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
@@ -1 +0,0 @@
|
||||
{"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
@@ -1,19 +0,0 @@
|
||||
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
@@ -1 +0,0 @@
|
||||
{"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
@@ -1,942 +0,0 @@
|
||||
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
@@ -1,10 +0,0 @@
|
||||
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
@@ -1 +0,0 @@
|
||||
{"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
@@ -1,34 +0,0 @@
|
||||
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
@@ -1 +0,0 @@
|
||||
{"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
@@ -1,15 +0,0 @@
|
||||
/** 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
@@ -1 +0,0 @@
|
||||
{"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
@@ -1,2 +0,0 @@
|
||||
export declare function onboard(): Promise<boolean>;
|
||||
//# sourceMappingURL=onboarding.d.ts.map
|
||||
Vendored
-1
@@ -1 +0,0 @@
|
||||
{"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
@@ -1,10 +0,0 @@
|
||||
/**
|
||||
* 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
@@ -1 +0,0 @@
|
||||
{"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
@@ -1,238 +0,0 @@
|
||||
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
@@ -1 +0,0 @@
|
||||
{"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
@@ -1,11 +0,0 @@
|
||||
/**
|
||||
* 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
@@ -1 +0,0 @@
|
||||
{"version":3,"file":"settingsMigration.d.ts","sourceRoot":"","sources":["../../lib/util/settingsMigration.ts"],"names":[],"mappings":"AAshBA;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,IAAI,IAAI,CAoGzC"}
|
||||
Vendored
-11
@@ -1,11 +0,0 @@
|
||||
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
@@ -1 +0,0 @@
|
||||
{"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
@@ -1,2 +0,0 @@
|
||||
export declare function stringify(value: object): string;
|
||||
//# sourceMappingURL=stringify.d.ts.map
|
||||
Vendored
-1
@@ -1 +0,0 @@
|
||||
{"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
@@ -1,96 +0,0 @@
|
||||
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
@@ -1 +0,0 @@
|
||||
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../lib/util/utils.ts"],"names":[],"mappings":"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"}
|
||||
Vendored
-17
@@ -1,17 +0,0 @@
|
||||
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
@@ -1 +0,0 @@
|
||||
{"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
@@ -1,57 +0,0 @@
|
||||
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
@@ -1 +0,0 @@
|
||||
{"version":3,"file":"zigbee.d.ts","sourceRoot":"","sources":["../lib/zigbee.ts"],"names":[],"mappings":"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"}
|
||||
@@ -0,0 +1,10 @@
|
||||
const fs = require('fs');
|
||||
const path = require('path');
|
||||
|
||||
const base = path.join(__dirname, '..', 'docs');
|
||||
|
||||
const supportDevices = require('./supported-devices');
|
||||
const integratingWithHomeassistant = require('./integrating-with-homeassistant');
|
||||
|
||||
fs.writeFileSync(path.join(base, 'information', 'supported_devices.md'), supportDevices);
|
||||
fs.writeFileSync(path.join(base, 'integration', 'home_assistant.md'), integratingWithHomeassistant);
|
||||
@@ -0,0 +1,299 @@
|
||||
/**
|
||||
* This script generates the integrating-with-homeassistant page.
|
||||
*/
|
||||
|
||||
const devices = require('zigbee-shepherd-converters').devices;
|
||||
const HomeassistantExtension = require('../lib/extension/homeassistant');
|
||||
const homeassistant = new HomeassistantExtension(null, null, null, null);
|
||||
const YAML = require('json2yaml');
|
||||
|
||||
let template = `# Home Assistant
|
||||
|
||||
*NOTE 1: This file has been generated, do not edit this file manually!*
|
||||
|
||||
*NOTE 2: If you are using the [Zigbee2mqtt Hass.io add-on](https://github.com/danielwelch/hassio-zigbee2mqtt)
|
||||
use their documentation*
|
||||
|
||||
|
||||
## MQTT discovery
|
||||
**At least Home Assistant >= 0.84 is required!**
|
||||
|
||||
**NOTE:** Groups are not auto-discovered, see configuration below.
|
||||
|
||||
The easiest way to integrate Zigbee2mqtt with Home Assistant is by
|
||||
using [MQTT discovery](https://www.home-assistant.io/docs/mqtt/discovery/).
|
||||
This allows Zigbee2mqtt to automatically add devices to Home Assistant.
|
||||
|
||||
To achieve the best possible integration (including MQTT discovery):
|
||||
- In your **Zigbee2mqtt** \`configuration.yaml\` set \`homeassistant: true\`
|
||||
- In your **Home Assistant** \`configuration.yaml\`:
|
||||
\`\`\`yaml
|
||||
mqtt:
|
||||
discovery: true
|
||||
broker: [YOUR MQTT BROKER] # Remove if you want to use builtin-in MQTT broker
|
||||
birth_message:
|
||||
topic: 'hass/status'
|
||||
payload: 'online'
|
||||
will_message:
|
||||
topic: 'hass/status'
|
||||
payload: 'offline'
|
||||
\`\`\`
|
||||
|
||||
Mind you that if you want to use the embedded broker of Home Assistant you
|
||||
have to [follow this guide](https://www.home-assistant.io/docs/mqtt/broker#embedded-broker).
|
||||
|
||||
Zigbee2mqtt is expecting Home Assistant to send it's birth/will
|
||||
messages to \`hass/status\`. Be sure to add this to your \`configuration.yaml\` if you want
|
||||
Zigbee2mqtt to resend the cached values when Home Assistant restarts
|
||||
|
||||
## Home Assistant device registry
|
||||
When using Home Assistant MQTT discovery, Zigbee2mqtt integrates
|
||||
with the [Home Assistant device registry](https://developers.home-assistant.io/docs/en/device_registry_index.html).
|
||||
This allows you to change the Home Assistant \`device_id\` and \`friendly_name\` from the web interface
|
||||
without having to restart Home Assistant. It also makes it possible to show which entities belong to which device.
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
## I'm confused about the different device IDs, names and friendly names
|
||||
- Home Assistant \`device_id\`: determined on first discovery of the device, can only be changed
|
||||
via the Home Assistant web interface afterwards. Used to control/read the state from the device (e.g. in automations)
|
||||
- Zigbee2mqtt \`friendly_name\`: used to change the MQTT topic where the device listens and publishes to.
|
||||
- Home Assistant \`name\`: name shown in the Home Assistant UI (unless overridden
|
||||
via a \`friendly_name\` in \`customize.yaml\`). If not changed via the Home Assistant web interface,
|
||||
it is equal to the Zigbee2mqtt \`friendly_name\`. Is updated if the Zigbee2mqtt \`friendly_name\` changes
|
||||
(requires restart of Home Assistant)
|
||||
- Home Assistant \`friendly_name\` (\`customize.yaml\`): overrides the name in the Home Assistant web interface.
|
||||
|
||||
## Responding to button clicks
|
||||
To respond to button clicks (e.g. WXKG01LM) you can use the following Home Assistant configuration:
|
||||
|
||||
{% raw %}
|
||||
\`\`\`yaml
|
||||
automation:
|
||||
- alias: Respond to button clicks
|
||||
trigger:
|
||||
platform: mqtt
|
||||
topic: 'zigbee2mqtt/<FRIENDLY_NAME'
|
||||
condition:
|
||||
condition: template
|
||||
value_template: '{{ "single" == trigger.payload_json.click }}'
|
||||
action:
|
||||
entity_id: light.bedroom
|
||||
service: light.toggle
|
||||
\`\`\`
|
||||
{% endraw %}
|
||||
|
||||
## Groups
|
||||
Groups are not auto-discovered. Use the following configuration:
|
||||
|
||||
{% raw %}
|
||||
|
||||
\`\`\`yaml
|
||||
- platform: mqtt
|
||||
schema: json
|
||||
name: MY_GROUP
|
||||
command_topic: "zigbee2mqtt/[GROUP_FRIENDLY_NAME]/set"
|
||||
state_topic: "zigbee2mqtt/[GROUP_FRIENDLY_NAME]/set"
|
||||
|
||||
// Modify according to features supported by all devices in group
|
||||
color_temp: true
|
||||
brightness: true
|
||||
rgb: true
|
||||
\`\`\`
|
||||
|
||||
{% endraw %}
|
||||
|
||||
## Controlling Zigbee2mqtt via Home Assistant
|
||||
The following Home Assistant configuration allows you to control Zigbee2mqtt from Home Assistant.
|
||||
|
||||
{% raw %}
|
||||
\`\`\`yaml
|
||||
# Group
|
||||
group:
|
||||
zigbee_group:
|
||||
view: false
|
||||
control: hidden
|
||||
name: Zigbee2mqtt
|
||||
entities:
|
||||
- input_boolean.zigbee_permit_join
|
||||
- timer.zigbee_permit_join
|
||||
- sensor.zigbee2mqtt_bridge_state
|
||||
- switch.zigbee2mqtt_main_join
|
||||
- automation.enable_zigbee_joining
|
||||
- automation.disable_zigbee_joining
|
||||
- automation.disable_zigbee_joining_by_timer
|
||||
- input_select.zigbee2mqtt_log_level
|
||||
- automation.zigbee2mqtt_log_level
|
||||
|
||||
# Input select for Zigbee2mqtt debug level
|
||||
input_select:
|
||||
zigbee2mqtt_log_level:
|
||||
name: Zigbee2mqtt Log Level
|
||||
options:
|
||||
- debug
|
||||
- info
|
||||
- warn
|
||||
- error
|
||||
initial: info
|
||||
icon: mdi:format-list-bulleted
|
||||
|
||||
# Input boolean for enabling/disabling joining
|
||||
input_boolean:
|
||||
zigbee_permit_join:
|
||||
name: Allow devices to join
|
||||
initial: off
|
||||
icon: mdi:cellphone-wireless
|
||||
|
||||
# Timer for joining time remaining (120 sec = 2 min)
|
||||
timer:
|
||||
zigbee_permit_join:
|
||||
name: Time remaining
|
||||
duration: 120
|
||||
|
||||
# Sensor for monitoring the bridge state
|
||||
sensor:
|
||||
- platform: mqtt
|
||||
name: Zigbee2mqtt Bridge state
|
||||
state_topic: "zigbee2mqtt/bridge/state"
|
||||
icon: mdi:router-wireless
|
||||
|
||||
# Switch for enabling joining
|
||||
switch:
|
||||
- platform: mqtt
|
||||
name: "Zigbee2mqtt Main join"
|
||||
state_topic: "zigbee2mqtt/bridge/config/permit_join"
|
||||
command_topic: "zigbee2mqtt/bridge/config/permit_join"
|
||||
payload_on: "true"
|
||||
payload_off: "false"
|
||||
|
||||
# Automations
|
||||
automation:
|
||||
- alias: Zigbee2mqtt Log Level
|
||||
initial_state: 'on'
|
||||
trigger:
|
||||
- platform: state
|
||||
entity_id: input_select.zigbee2mqtt_log_level
|
||||
to: debug
|
||||
- platform: state
|
||||
entity_id: input_select.zigbee2mqtt_log_level
|
||||
to: warn
|
||||
- platform: state
|
||||
entity_id: input_select.zigbee2mqtt_log_level
|
||||
to: error
|
||||
- platform: state
|
||||
entity_id: input_select.zigbee2mqtt_log_level
|
||||
to: info
|
||||
action:
|
||||
- service: mqtt.publish
|
||||
data:
|
||||
payload_template: '{{ states(''input_select.zigbee2mqtt_log_level'') }}'
|
||||
topic: zigbee2mqtt/bridge/config/log_level
|
||||
|
||||
- id: enable_zigbee_join
|
||||
alias: Enable Zigbee joining
|
||||
hide_entity: true
|
||||
trigger:
|
||||
platform: state
|
||||
entity_id: input_boolean.zigbee_permit_join
|
||||
to: 'on'
|
||||
action:
|
||||
- service: mqtt.publish
|
||||
data:
|
||||
topic: zigbee2mqtt/bridge/config/permit_join
|
||||
payload: 'true'
|
||||
- service: timer.start
|
||||
data:
|
||||
entity_id: timer.zigbee_permit_join
|
||||
|
||||
- id: disable_zigbee_join
|
||||
alias: Disable Zigbee joining
|
||||
hide_entity: true
|
||||
trigger:
|
||||
- entity_id: input_boolean.zigbee_permit_join
|
||||
platform: state
|
||||
to: 'off'
|
||||
action:
|
||||
- data:
|
||||
payload: 'false'
|
||||
topic: zigbee2mqtt/bridge/config/permit_join
|
||||
service: mqtt.publish
|
||||
- data:
|
||||
entity_id: timer.zigbee_permit_join
|
||||
service: timer.cancel
|
||||
|
||||
- id: disable_zigbee_join_timer
|
||||
alias: Disable Zigbee joining by timer
|
||||
hide_entity: true
|
||||
trigger:
|
||||
- platform: event
|
||||
event_type: timer.finished
|
||||
event_data:
|
||||
entity_id: timer.zigbee_permit_join
|
||||
action:
|
||||
- service: mqtt.publish
|
||||
data:
|
||||
topic: zigbee2mqtt/bridge/config/permit_join
|
||||
payload: 'false'
|
||||
- service: input_boolean.turn_off
|
||||
data:
|
||||
entity_id: input_boolean.zigbee_permit_join
|
||||
\`\`\`
|
||||
{% endraw %}
|
||||
|
||||
## Configuration when NOT using Home Assistant MQTT discovery
|
||||
|
||||
[CONFIGURATION]
|
||||
`;
|
||||
|
||||
const homeassistantConfig = (device) => {
|
||||
const payload = {
|
||||
platform: 'mqtt',
|
||||
state_topic: 'zigbee2mqtt/<FRIENDLY_NAME>',
|
||||
availability_topic: 'zigbee2mqtt/bridge/state',
|
||||
...device.discovery_payload,
|
||||
};
|
||||
|
||||
if (payload.command_topic) {
|
||||
if (payload.command_topic_prefix) {
|
||||
payload.command_topic = `zigbee2mqtt/<FRIENDLY_NAME>/${payload.command_topic_prefix}/set`;
|
||||
} else {
|
||||
payload.command_topic = `zigbee2mqtt/<FRIENDLY_NAME>/set`;
|
||||
}
|
||||
}
|
||||
|
||||
delete payload.command_topic_prefix;
|
||||
|
||||
let yml = YAML.stringify([payload]);
|
||||
yml = yml.replace(/(-) \n {4}/g, '- ');
|
||||
yml = yml.replace('---', `${device.type}:`);
|
||||
return yml;
|
||||
};
|
||||
|
||||
let configuration = '';
|
||||
devices.forEach((device) => {
|
||||
configuration += `### ${device.model}\n`;
|
||||
configuration += `{% raw %}\n`;
|
||||
configuration += '```yaml\n';
|
||||
|
||||
const configurations = homeassistant._getMapping()[device.model];
|
||||
|
||||
if (configurations) {
|
||||
configurations.forEach((d, i) => {
|
||||
configuration += homeassistantConfig(d);
|
||||
if (configurations.length > 1 && i < configurations.length - 1) {
|
||||
configuration += '\n';
|
||||
}
|
||||
});
|
||||
|
||||
configuration += '```\n';
|
||||
configuration += '{% endraw %}\n\n';
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
// Insert into template
|
||||
template = template.replace('[CONFIGURATION]', configuration);
|
||||
|
||||
module.exports = template;
|
||||
@@ -0,0 +1,55 @@
|
||||
/**
|
||||
* This script generates the supported devices page.
|
||||
*/
|
||||
|
||||
const devices = require('zigbee-shepherd-converters').devices;
|
||||
const replaceByDash = [new RegExp('/', 'g'), new RegExp(':', 'g'), new RegExp(' ', 'g')];
|
||||
const imageBase = '../images/devices/';
|
||||
|
||||
function onlyUnique(value, index, self) {
|
||||
return self.indexOf(value) === index;
|
||||
}
|
||||
|
||||
const vendorsCount = devices.map((d) => d.vendor).filter(onlyUnique).length;
|
||||
|
||||
let template = `# Supported devices
|
||||
|
||||
*NOTE: This file has been generated, do not edit this file manually!*
|
||||
|
||||
Currently **${devices.length}** devices are supported from **${vendorsCount}** different vendors.
|
||||
|
||||
In case you own a Zigbee device which is **NOT** listed here, please see
|
||||
[How to support new devices](https://koenkk.github.io/zigbee2mqtt/how_tos/how_to_support_new_devices.html).
|
||||
|
||||
[DEVICES]
|
||||
`;
|
||||
|
||||
const generateTable = (devices) => {
|
||||
let text = '';
|
||||
text += '| Model | Description | Picture |\n';
|
||||
text += '| ------------- | ------------- | -------------------------- |\n';
|
||||
devices = new Map(devices.map((d) => [d.model, d]));
|
||||
devices.forEach((d) => {
|
||||
let image = d.model;
|
||||
replaceByDash.forEach((r) => image = image.replace(r, '-'));
|
||||
image = imageBase + `${image}.jpg`;
|
||||
text += `| ${d.model} | ${d.vendor} ${d.description} (${d.supports}) |  |\n`;
|
||||
});
|
||||
|
||||
return text;
|
||||
};
|
||||
|
||||
// Generated devices text
|
||||
let devicesText = '';
|
||||
const vendors = Array.from(new Set(devices.map((d) => d.vendor)));
|
||||
vendors.sort();
|
||||
vendors.forEach((vendor) => {
|
||||
devicesText += `### ${vendor}\n\n`;
|
||||
devicesText += generateTable(devices.filter((d) => d.vendor === vendor));
|
||||
devicesText += '\n';
|
||||
});
|
||||
|
||||
// Insert into template
|
||||
template = template.replace('[DEVICES]', devicesText);
|
||||
|
||||
module.exports = template;
|
||||
@@ -0,0 +1,20 @@
|
||||
FROM alpine:3.8
|
||||
|
||||
# Copy files
|
||||
ADD . /app
|
||||
RUN cp /app/data/configuration.yaml /app
|
||||
RUN cp /app/docker/run.sh /app
|
||||
RUN chmod +x /app/run.sh
|
||||
WORKDIR /app
|
||||
|
||||
# Write .hash.json
|
||||
ARG COMMIT
|
||||
RUN echo "{\"hash\": \"$COMMIT\"}" > .hash.json
|
||||
|
||||
# Install dependencies
|
||||
RUN apk add --update --no-cache make gcc g++ python linux-headers udev nodejs npm git && \
|
||||
npm install --unsafe-perm && \
|
||||
apk del make gcc g++ python linux-headers udev git
|
||||
|
||||
# Entrypoint
|
||||
ENTRYPOINT ["./run.sh"]
|
||||
@@ -0,0 +1,22 @@
|
||||
FROM arm32v6/alpine:3.8
|
||||
|
||||
# Setup cross-build
|
||||
ENV QEMU_EXECVE 1
|
||||
COPY docker/qemu-arm-static /usr/bin
|
||||
WORKDIR /app
|
||||
|
||||
# Write .hash.json
|
||||
ARG COMMIT
|
||||
RUN [ "qemu-arm-static", "/bin/sh", "-c", "echo {\\\"hash\\\": \\\"$COMMIT\\\"} > .hash.json" ]
|
||||
|
||||
# Copy files & install dependencies
|
||||
ADD . /app
|
||||
RUN [ "qemu-arm-static", "/bin/sh", "-c", \
|
||||
"cp /app/data/configuration.yaml /app && \
|
||||
cp /app/docker/run.sh /app && chmod +x /app/run.sh && \
|
||||
apk add --update --no-cache make gcc g++ python linux-headers udev nodejs npm git && \
|
||||
npm install --unsafe-perm && \
|
||||
apk del make gcc g++ python linux-headers udev git"]
|
||||
|
||||
# Entrypoint
|
||||
ENTRYPOINT ["./run.sh"]
|
||||
@@ -0,0 +1,22 @@
|
||||
FROM arm64v8/alpine:3.8
|
||||
|
||||
# Setup cross-build
|
||||
ENV QEMU_EXECVE 1
|
||||
COPY docker/qemu-aarch64-static /usr/bin
|
||||
WORKDIR /app
|
||||
|
||||
# Write .hash.json
|
||||
ARG COMMIT
|
||||
RUN [ "qemu-aarch64-static", "/bin/sh", "-c", "echo {\\\"hash\\\": \\\"$COMMIT\\\"} > .hash.json" ]
|
||||
|
||||
# Copy files & install dependencies
|
||||
ADD . /app
|
||||
RUN [ "qemu-aarch64-static", "/bin/sh", "-c", \
|
||||
"cp /app/data/configuration.yaml /app && \
|
||||
cp /app/docker/run.sh /app && chmod +x /app/run.sh && \
|
||||
apk add --update --no-cache make gcc g++ python linux-headers udev nodejs npm git && \
|
||||
npm install --unsafe-perm && \
|
||||
apk del make gcc g++ python linux-headers udev git"]
|
||||
|
||||
# Entrypoint
|
||||
ENTRYPOINT ["./run.sh"]
|
||||
@@ -0,0 +1 @@
|
||||
qemu-aarch64-static and qemu-arm-static are taken from https://github.com/resin-io/qemu/releases/tag/v2.9.0%2Bresin1
|
||||
Executable
BIN
Binary file not shown.
Executable
BIN
Binary file not shown.
@@ -0,0 +1,20 @@
|
||||
#!/bin/sh
|
||||
|
||||
if [ ! -z "$ZIGBEE2MQTT_DATA" ]; then
|
||||
DATA="$ZIGBEE2MQTT_DATA"
|
||||
else
|
||||
DATA="/app/data"
|
||||
fi
|
||||
|
||||
echo "Using '$DATA' as data directory"
|
||||
|
||||
if [ ! -f "$DATA/configuration.yaml" ]; then
|
||||
echo "Creating configuration file..."
|
||||
cp /app/configuration.yaml "$DATA/configuration.yaml"
|
||||
fi
|
||||
|
||||
if [ ! -z "$DEBUG" ]; then
|
||||
npm start
|
||||
else
|
||||
DEBUG="$DEBUG" npm start
|
||||
fi
|
||||
@@ -0,0 +1 @@
|
||||
theme: jekyll-theme-cayman
|
||||
@@ -0,0 +1,67 @@
|
||||
# Configuration
|
||||
The following configuration options are available in `data/configuration.yaml`.
|
||||
|
||||
The values shown are the default ones.
|
||||
|
||||
```yaml
|
||||
# Required: Home Assistant integration (MQTT discovery)
|
||||
homeassistant: false
|
||||
|
||||
# Required: allow new devices to join.
|
||||
# WARNING: Disable this after all devices have been paired!
|
||||
permit_join: true
|
||||
|
||||
# Required: MQTT settings
|
||||
mqtt:
|
||||
# Required: MQTT base topic for zigbee2mqtt MQTT messages
|
||||
base_topic: zigbee2mqtt
|
||||
# Required: MQTT server URL
|
||||
server: 'mqtt://localhost:1883'
|
||||
# Optional: MQTT server authentication user
|
||||
user: my_user
|
||||
# Optional: MQTT server authentication password
|
||||
password: my_password
|
||||
# Optional: MQTT client ID
|
||||
client_id: 'MY_CLIENT_ID'
|
||||
# Disable self-signed SSL certificates
|
||||
reject_unauthorized: true
|
||||
# Optional: Include device information to mqtt messages (default: false)
|
||||
include_device_information: true
|
||||
|
||||
# Required: serial settings
|
||||
serial:
|
||||
# Required: location of CC2531 USB sniffer
|
||||
port: /dev/tty.usbmodem1411
|
||||
# Optional: disable LED of CC2531 USB sniffer
|
||||
disable_led: false
|
||||
|
||||
# Optional: advanced settings
|
||||
advanced:
|
||||
# Optional: ZigBee pan ID
|
||||
pan_id: 0x1a62
|
||||
# Optional: ZigBee channel
|
||||
channel: 11
|
||||
# Optional: state caching
|
||||
# https://github.com/Koenkk/zigbee2mqtt/commit/9396bde1f3b022e0f634487d1a37d2a5127c8cb3#diff-f68567477d803b49930337bf7fe1556bR16
|
||||
cache_state: true
|
||||
# Optional: Logging level, options: debug, info, warn, error
|
||||
log_level: info
|
||||
# Optional: Location of log directory
|
||||
log_directory: data/log/%TIMESTAMP%
|
||||
# Optional: Baudrate for serial port
|
||||
baudrate: 115200
|
||||
# Optional: RTS / CTS Hardware Flow Control for serial port
|
||||
rtscts: true
|
||||
# Optional: soft reset ZNP after timeout (in seconds); 0 is disabled
|
||||
soft_reset_timeout: 0
|
||||
# Optional: network encryption key, changing requires repairing of all devices.
|
||||
network_key: [1, 3, 5, 7, 9, 11, 13, 15, 0, 2, 4, 6, 8, 10, 12, 13],
|
||||
# Optional: Add a last_seen attribute to MQTT messages, contains date/time of last Zigbee message
|
||||
# possible values are: disable (default), ISO_8601, epoch
|
||||
last_seen: 'disable'
|
||||
# Optional: Add an elapsed attribute to MQTT messages, contains milliseconds since the previous msg
|
||||
elapsed: false
|
||||
# Availability timeout in seconds, disabled by default (0).
|
||||
# When enabled, devices will be checked if they are still online.
|
||||
availability_timeout: 0,
|
||||
```
|
||||
@@ -0,0 +1,32 @@
|
||||
# Device specific configuration
|
||||
The `configuration.yaml` allows to set device specific configuration. The following options are available.
|
||||
|
||||
### All devices
|
||||
* `friendly_name`: Used in the MQTT topic of a device. By default this is the device ID (e.g. `0x00128d0001d9e1d2`).
|
||||
* `retain`: Retain MQTT messages of this device.
|
||||
* `qos`: QoS level for MQTT messages of this device. [What is QoS?](https://www.npmjs.com/package/mqtt#about-qos)
|
||||
|
||||
### Device type specific
|
||||
* `occupancy_timeout`: Timeout (in seconds) after the `occupancy: false` message is sent, only available for occupany sensors. If not set, the timeout is `90` seconds. When set to `0` no `occupancy: false` is send.
|
||||
* `temperature_precision`: Controls the precision of `temperature` values, e.g. `0`, `1` or `2`; default `2`.
|
||||
* `humidity_precision`: Controls the precision of `humidity` values, e.g. `0`, `1` or `2`; default `2`.
|
||||
* `pressure_precision`: Controls the precision of `pressure` values, e.g. `0` or `1`; default `1`.
|
||||
|
||||
### Example
|
||||
``` yaml
|
||||
devices:
|
||||
'0x00158d0001d82999':
|
||||
friendly_name: 'my_occupancy_sensor'
|
||||
retain: true
|
||||
occupancy_timeout: 20
|
||||
qos: 1
|
||||
```
|
||||
|
||||
### Changing device type specific defaults
|
||||
The default values used for the device specific configuration can be overriden via e.g.:
|
||||
|
||||
```yaml
|
||||
device_options:
|
||||
occupancy_timeout: 30
|
||||
temperature_precision: 1
|
||||
```
|
||||
@@ -0,0 +1,46 @@
|
||||
# Flashing the firmware on the CC2531 USB stick
|
||||
The CC2531 USB stick needs to be flashed with a custom firmware.
|
||||
|
||||
*NOTE: The following instructions assume you have a CC Debugger. In case you don't, see [Alternative firmware flashing methods](../information/alternative_flashing_methods.md).*
|
||||
|
||||
## Windows
|
||||
1. Install [SmartRF Flash programmer](http://www.ti.com/tool/FLASH-PROGRAMMER) (**NOT V2**). This software is free but requires a Texas Instruments account in order to download.
|
||||
2. Install the [CC debugger driver](http://www.ti.com/general/docs/lit/getliterature.tsp?baseLiteratureNumber=swrc212&fileType=zip) on your PC (Windows only). Before continuing, verify that the CC Debugger driver has been installed correctly. See [Figure 1. Verify Correct Driver Installation @ Chapter 5.1](http://www.ti.com/lit/ug/swru197h/swru197h.pdf). In case the CC Debugger is not recognized correctly [install the driver manually](https://www.youtube.com/watch?v=jyKrxxXOvQY).
|
||||
2. Connect `CC debugger --> Downloader cable CC2531 --> CC2531 USB sniffer`.
|
||||
3. Connect **BOTH** the `CC2531 USB sniffer` and the `CC debugger` to your PC using USB.
|
||||
3. If the light on the CC debugger is RED press set reset button on the CC debugger. The light on the CC debugger should now turn GREEN. If not use [CC debugger user guide](http://www.ti.com/lit/ug/swru197h/swru197h.pdf) to troubleshoot your problem.
|
||||
|
||||

|
||||
4. Download the firmware [CC2531ZNP-Prod.hex](https://github.com/Koenkk/Z-Stack-firmware/tree/master/coordinator/CC2531/bin)
|
||||
5. Start SmartRF Flash Programmer, setup as shown below and press `Perform actions`.
|
||||

|
||||
|
||||
## Linux or MacOS
|
||||
Credits to [@Frans-Willem](https://github.com/frans-Willem) for majority of instructions.
|
||||
|
||||
1. Install prerequisites for [CC-Tool](https://github.com/dashesy/cc-tool) using a package manager (e.g. [Homebrew](https://brew.sh/) for macOS)
|
||||
* Ubuntu: dh-autoreconf, libusb-1.0, libboost-all-dev
|
||||
* Fedora: dh-autoreconf, boost-devel, libusb1-devel
|
||||
* Archlinux: dh-autoreconf, libusb, boost
|
||||
* macOS: brew install autoconf automake libusb boost pkgconfig libtool
|
||||
|
||||
2. Build cc-tool
|
||||
```bash
|
||||
git clone https://github.com/dashesy/cc-tool.git
|
||||
cd cc-tool
|
||||
./bootstrap
|
||||
./configure
|
||||
make
|
||||
```
|
||||
3. Connect `CC debugger --> Downloader cable CC2531 --> CC2531 USB sniffer`.
|
||||
4. Connect **BOTH** the `CC2531 USB sniffer` and the `CC debugger` to your PC using USB.
|
||||
5. If the light on the CC debugger is RED, press the Reset button on the CC debugger. The light on the CC debugger should now turn GREEN. If not, follow the [CC debugger user guide](http://www.ti.com/lit/ug/swru197h/swru197h.pdf) to troubleshoot your problem.
|
||||

|
||||
6. Download the firmware [CC2531ZNP-Prod.hex](https://github.com/Koenkk/Z-Stack-firmware/tree/master/coordinator/CC2531/bin).
|
||||
7. Flash your firmware:
|
||||
```
|
||||
sudo ./cc-tool -e -w CC2531ZNP-Prod.hex
|
||||
```
|
||||
|
||||
# What's next?
|
||||
[Running Zigbee2mqtt](running_zigbee2mqtt.md)
|
||||
@@ -0,0 +1,99 @@
|
||||
**IMPORTANT:** Before you start, make sure that `permit_join: true` is set in your `configuration.yaml`. Otherwise new devices cannot join the network!
|
||||
It's equally important that `permit_join: false` is set in your `configuration.yaml` after initial setup is done to keep your Zigbee network safe and to avoid accidental joining of other Zigbee devices.
|
||||
|
||||
Start by checking if your Zigbee device is supported, see [Supported devices](../information/supported_devices.md).
|
||||
|
||||
Once you see something similar to `New device with address 0x00159d00016da0c8 connected!` in the log your device is paired.
|
||||
|
||||
## Xiaomi
|
||||
Different devices require different pairing methods. In case you get an `Error [ERR_UNHANDLED_ERROR]: Unhandled error. (Cannot get the Node Descriptor of the Device: 0x00158d0001720111)` you should try a different pairing method. See [Supported devices](../information/supported_devices.md) to figure out if your device is MiJia or Aqara.
|
||||
* Most MiJia devices: press and hold the reset button on the device for +- 5 seconds (until the blue light starts blinking). **IMPORTANT**: Release and start pressing the reset button every second. This keeps the device awake, otherwise pairing will **fail!**.
|
||||
* Most Aqara devices: press and hold reset button on the device for +- 5 seconds until the blue light blinks three times, release the reset button (the blue light will blink once more) and wait.
|
||||
* Most Aqara wall switches: press and hold the button on the device for +- 10 seconds (until the blue light starts blinking and stops blinking), release and wait.
|
||||
* [Video: Pairing Xiaomi Aqara Cube MFKZQ01LM](https://www.youtube.com/watch?v=uhMrcIAdGxg&feature=youtu.be)
|
||||
|
||||
*NOTE: When you fail to pair a device, try replacing the battery, this could solve the problem.*
|
||||
|
||||
## Belkin WeMo smart LED bulb
|
||||
[Resetting or Restoring the Wemo® Smart LED Bulb, F7C033](http://www.belkin.com/us/support-article?articleNum=116178)
|
||||
|
||||
## IKEA TRADFRI
|
||||
The factory reset procedure differs between TRADFRI components:
|
||||
|
||||
* Factory reset the light bulb ([video](https://www.youtube.com/watch?v=npxOrPxVfe0)). After resetting the bulb will automatically connect. While pairing, keep the bulb close the the CC2531 USB sniffer.
|
||||
What works for me every time is using (very) short “on’s” and a little bit longer “off’s”…
|
||||
I start with bulb on, then off, and then 6 “on’s”, where I kill the light as soon as the bulb shows signs of turning on… Hope that make sense…?
|
||||
|
||||
* To factory reset the TRADFRI wireless dimmer (ICTC-G-1) press the button 4 times (so the red lights starts blinking).
|
||||
|
||||
* To factory reset the TRADFRI control outlet, press and hold the reset button (pinhole underneath the light, located at the top of the outlet) with a paperclip until the white light starts fading. Hold onto the button for a few more seconds, then release. After this, the outlet will automatically connect.
|
||||
|
||||
* To factory reset the TRADFRI drivers (ICPSHC24-10EU-IL-1 and ICPSHC24-30EU-IL-1) use a small pin or paperclip to push the reset button once.
|
||||
|
||||
### IKEA TRADFRI remote control (E1524)
|
||||
This device requires extra setup as it is meant to only control groups. Therefore it does not send any information directly to the coordinator. As the group ID is randomized upon factor reset we need to find out the group ID where it sends its commands to. This can be done by using Zigbee sniffing.
|
||||
|
||||
1. Pair the remote to Zigbee2mqtt by holding it close to the coordinator and pressing the button next to the battery 4 times. The red light on the remote will now flash a few times.
|
||||
2. Setup your Zigbee traffic sniffer by following [How to sniff Zigbee traffic](../how_tos/how_to_sniff_zigbee_traffic.md).
|
||||
3. Press the middle (power) button on the remote, this will produce the following message in Wireshark:
|
||||

|
||||
4. Retrieve the group from the message, which is `0xeb12` in the above example.
|
||||
5. Add the group to the device in `configuration.yaml`, example:
|
||||
```yaml
|
||||
devices:
|
||||
'0x000b57fffecb472d':
|
||||
friendly_name: '0x000b57fffecb472d'
|
||||
retain: false
|
||||
coordinator_group: 0xeb12
|
||||
```
|
||||
6. Restart Zigbee2mqtt, when everything went OK you will see:
|
||||
```
|
||||
zigbee2mqtt:info 1/8/2019, 8:42:40 PM Sucesfully applied coordinator group for IKEA TRADFRI remote control (0x000b57fffecb472d)
|
||||
```
|
||||
### Why is this needed?
|
||||
The TRADFRI remote sends the group ID using touchlink commissioning (while holding the reset button close to a bulb) but this is currently not supported by the firmware (Z-Stack 1.2 HA). Perhaps it will work in Z-Stack 3.0.
|
||||
|
||||
## Philips Hue
|
||||
Factory reset the light bulb see [HOWTO: Factory reset a Hue bulb](https://www.youtube.com/watch?v=qvlEAELiJKs). After resetting the bulb will automatically connect.
|
||||
|
||||
* This is also possible with the [Tradfri Remote Control](https://www.ikea.com/us/en/images/products/tradfri-remote-control__0489469_PE623665_S4.JPG) by pressing and holding the reset button on the bottom of the remote (next to the battery). [This may not always work](https://github.com/Koenkk/zigbee2mqtt/issues/296#issuecomment-416923751).
|
||||
* Philips Hue Lightstrip Plus V2 have been successfully reset using the [Hue Dimmer Switch](https://www2.meethue.com/en-us/support/dimmer-switch) by holding the On and Off buttons at the same time for 10 seconds while holding next to the Lightstrip controller, afterwards the Lightstrips can join Zigbee2MQTT.
|
||||
* For the 7146060PH (Philips Hue Go), **the power cord has to be connected**, after the blinking light (**INSTEAD** of step four in the video), press and keep holding the button on the bottom until the device is paired (+- 60 seconds). While holding the button the Hue Go will give you a nice light show :smile:.
|
||||
|
||||
### Philips Living Colors IRIS (Friends of HUE)
|
||||
Philips Living Colors IRIS comes with Philips (HUE) Remote Gen 3 (Round Click Wheel).
|
||||
To Pair hold Hold ON and Bottom Left Key (Favorite 1) in Front of the LED until the Light Blinks and turns Orange. If connection was succesfull the Light will turn Green.
|
||||
|
||||
## Innr
|
||||
Factory reset using [Innr manual reset instructions](https://www.youtube.com/watch?v=4zkpZSv84H4). After resetting the bulb will automatically connect.
|
||||
|
||||
## Hive
|
||||
Follow instructions from [How do I reset my Hive Active Light?](https://www.hivehome.com/ca/support/Help_installing_Hive/HIH_Hive_Active_Light/How-do-I-reset-my-Hive-Active-Light). After resetting the bulb will automatically connect.
|
||||
|
||||
## OSRAM
|
||||
### OSRAM Light Bulb
|
||||
Follow instruction from [Manual reset](http://belkin.force.com/Articles/articles/en_US/Troubleshooting_and_Tutorials/Resetting-the-OSRAM-LIGHTIFY-Tunable-White-60-Bulb#a). After resetting the bulb will automatically connect.
|
||||
### OSRAM Smart+ Plug
|
||||
For the OSRAM Smart+ plug (AB3257001NJ) hold the on/off button until your hear a click (+- 10 seconds).
|
||||
### OSRAM Smart+ Switch Mini
|
||||
For the OSRAM Smart+ Switch Mini (AC0251100NJ) hold the Middle and Arrow Down Buttons for 10 Seconds to Reset the Device. Hold the Middle and Arrow Up Buttons for 3 Seconds to connect. If the Switch is connected hold Middle and Arrow Up Buttons for 3 Seconds to disconnect.
|
||||
### OSRAM Switch 4x-LIGHTIFY
|
||||
For the OSRAM Switch 4x-LIGHTIFY (AB371860055) hold the Bottom Left and Top Right Button for 3 Seconds to connect.
|
||||
|
||||
## PLUG EDP RE:DY
|
||||
Factory reset the plug (hold the switch button for >10sec). After resetting the switch will automatically connect.
|
||||
|
||||
## Netvox power socket
|
||||
Factory reset by:
|
||||
- Press and hold the Binding Key for 15 seconds. The network indicator will flash green 3 times
|
||||
(at the 3rd, the 10th, and the 15th second).
|
||||
- After releasing the Binding Key, press the Switch Key within 2 seconds. The network indicator
|
||||
will rapidly flash green.
|
||||
- After fast flashes, Z809A will reboot, and the restore is completed. The socket will automatically connect now.
|
||||
|
||||
## Gledopto
|
||||
Some of the Gledopto devices are not providing a `modelID`, in that case the modelID `undefined` is shown. Sometimes it helps to repair the device while keeping it close to the coordinator (less than one meter).
|
||||
|
||||
If this fails, the `modelID` has to be set manually in `data/database.db`. First find out the `modelID` of your devices from the [Supported devices page](../information/supported_devices.md). Then open `data/database.db` and add the `modelId` as highlighted in **bold** below.
|
||||
|
||||
*{"id":50,"type":"Router","ieeeAddr":"0x00124b0019c606cd","nwkAddr":10828,"manufId":0,"manufName":"GLEDOPTO","powerSource":"Mains (single phase)",**"modelId":"GL-S-007Z"**,"epList":[11,13],"status":"offline","joinTime":null,"endpoints":{"11":{"profId":49246,"epId":11,"devId":528,"inClusterList":[0,3,4,5,6,8,768],"outClusterList":[],"clusters":{"genBasic":{"dir":{"value":1},"attrs":{}},"genIdentify":{"dir":{"value":1},"attrs":{}},"genGroups":{"dir":{"value":1},"attrs":{}},"genScenes":{"dir":{"value":1},"attrs":{}},"genOnOff":{"dir":{"value":1},"attrs":{}},"genLevelCtrl":{"dir":{"value":1},"attrs":{}},"lightingColorCtrl":{"dir":{"value":1},"attrs":{}}}},"13":{"profId":49246,"epId":13,"devId":57694,"inClusterList":[4096],"outClusterList":[4096],"clusters":{"lightLink":{"dir":{"value":3},"attrs":{}}}}},"_id":"geCEMkRqlaMe6muE"}*
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user