mirror of
https://github.com/basnijholt/adaptive-lighting.git
synced 2026-09-12 06:44:04 +02:00
Compare commits
166 commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
7d0f4b610a |
||
|
|
da749bcf61 |
||
|
|
3e78ac7e21 |
||
|
|
51ea83dba3 |
||
|
|
7c445af63b |
||
|
|
2f37b6ea40 |
||
|
|
34356a6b56 |
||
|
|
a936519866 |
||
|
|
3a27c346b9 |
||
|
|
2299161690 |
||
|
|
77183ee3eb |
||
|
|
7f7fec4e34 |
||
|
|
c5d216ea6f |
||
|
|
aa84eda871 |
||
|
|
9e29a21197 |
||
|
|
11bd5cf2aa |
||
|
|
f7b50b12d9 |
||
|
|
e2a3aae416 |
||
|
|
51f2878b16 |
||
|
|
d09b15a138 |
||
|
|
46d07388ba |
||
|
|
3231a1ac27 |
||
|
|
ba2b7a3e44 |
||
|
|
cda1c2db33 |
||
|
|
1d50165eb1 |
||
|
|
87486f9eb3 |
||
|
|
472796215b |
||
|
|
c19715dadd |
||
|
|
42c7cd696f |
||
|
|
5632256087 |
||
|
|
e8c300cf75 |
||
|
|
bbe5f3837d |
||
|
|
c8de38f779 |
||
|
|
1f137d2b36 |
||
|
|
9525d2f243 |
||
|
|
6e7febee8f |
||
|
|
08e3b817a3 |
||
|
|
623dd65aef |
||
|
|
ac0336fe34 |
||
|
|
00185e75e0 |
||
|
|
6254b56dab |
||
|
|
f97e502cbc |
||
|
|
17b0aa1103 |
||
|
|
8fb22adc45 |
||
|
|
dda664ac7e |
||
|
|
6fdbffc7fc |
||
|
|
1969a8cdff |
||
|
|
288d9d344a |
||
|
|
722779d59b |
||
|
|
ecf2403422 |
||
|
|
a04a533f45 |
||
|
|
0003655828 |
||
|
|
508959fff3 |
||
|
|
d6ddd3f27e |
||
|
|
95ccc02789 |
||
|
|
8056fcc5f8 |
||
|
|
3df5787019 |
||
|
|
397b50d492 |
||
|
|
72128f07ae |
||
|
|
4973f79c3a |
||
|
|
187185698e |
||
|
|
4c1140c517 |
||
|
|
6b7dbc3a66 |
||
|
|
92c071f4f3 |
||
|
|
179cb2ef30 |
||
|
|
cd1e653da5 |
||
|
|
c9d9c75b14 |
||
|
|
4b0638a4d8 |
||
|
|
548e5048ec |
||
|
|
28f0fe8c58 |
||
|
|
fdce4c9102 |
||
|
|
8f78233e11 |
||
|
|
edc8f70996 |
||
|
|
ee12752927 |
||
|
|
66e6d5ff5f |
||
|
|
efa64d01be |
||
|
|
17d9b39700 |
||
|
|
c03a19c5a3 |
||
|
|
c7339678a6 |
||
|
|
a2186ecf22 |
||
|
|
68c0e4db69 |
||
|
|
e453541a78 |
||
|
|
61896eb86a |
||
|
|
9b0f03045b |
||
|
|
cc99067c73 |
||
|
|
55f871fd0c |
||
|
|
67d4a2f657 |
||
|
|
c620d1480a |
||
|
|
68c66a0ff3 |
||
|
|
6d46b82313 |
||
|
|
5df9b30d32 |
||
|
|
cc93af84de |
||
|
|
efee60cb9a |
||
|
|
dce34134b6 |
||
|
|
a9fd62a110 |
||
|
|
19dd9723a3 |
||
|
|
afb447c4e8 |
||
|
|
928d57f8be |
||
|
|
f3af35f95e |
||
|
|
4a87b5ef54 |
||
|
|
7afdf5bc5c |
||
|
|
3638fb3013 |
||
|
|
d4d3d50ada |
||
|
|
ddaf851be3 |
||
|
|
89b5e9a14f |
||
|
|
830c5589f7 |
||
|
|
7dcad99d81 |
||
|
|
cb4eb7ef49 |
||
|
|
17e43e0427 |
||
|
|
b787c533bf |
||
|
|
c8c31be573 |
||
|
|
86091de0e7 |
||
|
|
31762ba78d |
||
|
|
0a305a7a4c |
||
|
|
c4b8e28ea8 |
||
|
|
6cebe14a69 |
||
|
|
f9ccc946ee |
||
|
|
74a795d907 |
||
|
|
e9f7d4925f |
||
|
|
ec33670b3f |
||
|
|
2fdc2a1636 |
||
|
|
7317c2966d |
||
|
|
5b7153a9a1 | ||
|
|
d964c861d5 | ||
|
|
f7a7226fdb |
||
|
|
e656dd31b0 |
||
|
|
ae719a676d | ||
|
|
d60ba75014 |
||
|
|
da732ae1a1 |
||
|
|
844afc081a |
||
|
|
fcff6d48ec |
||
|
|
093376dbed |
||
|
|
455040e532 |
||
|
|
eb25df01d5 |
||
|
|
9480211e1b | ||
|
|
a1ddbc000f | ||
|
|
cbbcabdd1f |
||
|
|
e0f812d406 |
||
|
|
e61a018616 |
||
|
|
49f9da14fe |
||
|
|
f95093e1dc | ||
|
|
f84ee445b7 |
||
|
|
2f599d6e1b |
||
|
|
828f73d481 |
||
|
|
9c7a95f696 |
||
|
|
79973fb71d |
||
|
|
5886eee04c |
||
|
|
ce7dadebdd |
||
|
|
94b91a0ddc |
||
|
|
dc61bd191c |
||
|
|
0180fa4a93 |
||
|
|
37ef65586d |
||
|
|
97ecbb17a0 |
||
|
|
ef15d5cd48 |
||
|
|
ea623ce604 |
||
|
|
4aeb50bfe3 |
||
|
|
886c77bcc2 |
||
|
|
2f03e00dc6 |
||
|
|
077e086424 |
||
|
|
f04c91b54b |
||
|
|
1be701994b |
||
|
|
fb6e96c878 |
||
|
|
7a5ad22c62 |
||
|
|
cc25a50401 | ||
|
|
894d0025cd |
||
|
|
80fb93b9f6 |
113 changed files with 21564 additions and 4201 deletions
|
|
@ -447,7 +447,8 @@
|
||||||
"avatar_url": "https://avatars.githubusercontent.com/u/189372?v=4",
|
"avatar_url": "https://avatars.githubusercontent.com/u/189372?v=4",
|
||||||
"profile": "http://protyposis.net",
|
"profile": "http://protyposis.net",
|
||||||
"contributions": [
|
"contributions": [
|
||||||
"code"
|
"code",
|
||||||
|
"ideas"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
@ -1161,6 +1162,423 @@
|
||||||
"contributions": [
|
"contributions": [
|
||||||
"code"
|
"code"
|
||||||
]
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"login": "lenucksi",
|
||||||
|
"name": "lenucksi",
|
||||||
|
"avatar_url": "https://avatars.githubusercontent.com/u/2451899?v=4",
|
||||||
|
"profile": "https://github.com/lenucksi",
|
||||||
|
"contributions": [
|
||||||
|
"code"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"login": "edgimar",
|
||||||
|
"name": "edgimar",
|
||||||
|
"avatar_url": "https://avatars.githubusercontent.com/u/393850?v=4",
|
||||||
|
"profile": "https://gitlab.com/edgimar",
|
||||||
|
"contributions": [
|
||||||
|
"code"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"login": "andrei-lazarov",
|
||||||
|
"name": "Andrei LAZAROV",
|
||||||
|
"avatar_url": "https://avatars.githubusercontent.com/u/51081857?v=4",
|
||||||
|
"profile": "https://github.com/andrei-lazarov",
|
||||||
|
"contributions": [
|
||||||
|
"doc"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"login": "ademuri",
|
||||||
|
"name": "Adam DeMuri",
|
||||||
|
"avatar_url": "https://avatars.githubusercontent.com/u/3051618?v=4",
|
||||||
|
"profile": "https://github.com/ademuri",
|
||||||
|
"contributions": [
|
||||||
|
"code"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"login": "NatanDosAnjos",
|
||||||
|
"name": "Natanael",
|
||||||
|
"avatar_url": "https://avatars.githubusercontent.com/u/45629905?v=4",
|
||||||
|
"profile": "https://github.com/NatanDosAnjos",
|
||||||
|
"contributions": [
|
||||||
|
"translation"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"login": "Yllelder",
|
||||||
|
"name": "Yllelder Bamir",
|
||||||
|
"avatar_url": "https://avatars.githubusercontent.com/u/6941502?v=4",
|
||||||
|
"profile": "https://github.com/Yllelder",
|
||||||
|
"contributions": [
|
||||||
|
"translation"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"login": "Esspel",
|
||||||
|
"name": "Esspel",
|
||||||
|
"avatar_url": "https://avatars.githubusercontent.com/u/47383506?v=4",
|
||||||
|
"profile": "https://github.com/Esspel",
|
||||||
|
"contributions": [
|
||||||
|
"translation"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"login": "cperuffo3",
|
||||||
|
"name": "Corey Peruffo",
|
||||||
|
"avatar_url": "https://avatars.githubusercontent.com/u/87686305?v=4",
|
||||||
|
"profile": "https://github.com/cperuffo3",
|
||||||
|
"contributions": [
|
||||||
|
"code"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"login": "imwithsam",
|
||||||
|
"name": "Samson Brock",
|
||||||
|
"avatar_url": "https://avatars.githubusercontent.com/u/1934074?v=4",
|
||||||
|
"profile": "http://badmotivator.io/",
|
||||||
|
"contributions": [
|
||||||
|
"code"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"login": "Dennis-Dekker",
|
||||||
|
"name": "Dennis Dekker",
|
||||||
|
"avatar_url": "https://avatars.githubusercontent.com/u/48018095?v=4",
|
||||||
|
"profile": "https://github.com/Dennis-Dekker",
|
||||||
|
"contributions": [
|
||||||
|
"code"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"login": "proscar87",
|
||||||
|
"name": "proscar87",
|
||||||
|
"avatar_url": "https://avatars.githubusercontent.com/u/68169114?v=4",
|
||||||
|
"profile": "https://github.com/proscar87",
|
||||||
|
"contributions": [
|
||||||
|
"code"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"login": "jaredjxyz",
|
||||||
|
"name": "Jared Jensen",
|
||||||
|
"avatar_url": "https://avatars.githubusercontent.com/u/10385335?v=4",
|
||||||
|
"profile": "http://jaredj.xyz/",
|
||||||
|
"contributions": [
|
||||||
|
"code"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"login": "mueslo",
|
||||||
|
"name": "mueslo",
|
||||||
|
"avatar_url": "https://avatars.githubusercontent.com/u/847751?v=4",
|
||||||
|
"profile": "https://github.com/mueslo",
|
||||||
|
"contributions": [
|
||||||
|
"code"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"login": "marijneken",
|
||||||
|
"name": "Marijn Eken",
|
||||||
|
"avatar_url": "https://avatars.githubusercontent.com/u/928998?v=4",
|
||||||
|
"profile": "https://github.com/marijneken",
|
||||||
|
"contributions": [
|
||||||
|
"doc"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"login": "kasiom",
|
||||||
|
"name": "Milan K.",
|
||||||
|
"avatar_url": "https://avatars.githubusercontent.com/u/2422245?v=4",
|
||||||
|
"profile": "https://github.com/kasiom",
|
||||||
|
"contributions": [
|
||||||
|
"translation"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"login": "callistoprime",
|
||||||
|
"name": "Callisto",
|
||||||
|
"avatar_url": "https://avatars.githubusercontent.com/u/178052328?v=4",
|
||||||
|
"profile": "https://github.com/callistoprime",
|
||||||
|
"contributions": [
|
||||||
|
"bug"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"login": "davidgeiger",
|
||||||
|
"name": "David Geiger",
|
||||||
|
"avatar_url": "https://avatars.githubusercontent.com/u/5699049?v=4",
|
||||||
|
"profile": "https://github.com/davidgeiger",
|
||||||
|
"contributions": [
|
||||||
|
"bug"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"login": "MSL-DA",
|
||||||
|
"name": "Jan",
|
||||||
|
"avatar_url": "https://avatars.githubusercontent.com/u/134940586?v=4",
|
||||||
|
"profile": "https://github.com/MSL-DA",
|
||||||
|
"contributions": [
|
||||||
|
"translation"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"login": "frankysan",
|
||||||
|
"name": "frankysan",
|
||||||
|
"avatar_url": "https://avatars.githubusercontent.com/u/6353605?v=4",
|
||||||
|
"profile": "https://github.com/frankysan",
|
||||||
|
"contributions": [
|
||||||
|
"translation"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"login": "belkin",
|
||||||
|
"name": "Belkin",
|
||||||
|
"avatar_url": "https://avatars.githubusercontent.com/u/3419659?v=4",
|
||||||
|
"profile": "http://belkinfahri.com",
|
||||||
|
"contributions": [
|
||||||
|
"translation"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"login": "LukTyn",
|
||||||
|
"name": "LukTyn",
|
||||||
|
"avatar_url": "https://avatars.githubusercontent.com/u/1812796?v=4",
|
||||||
|
"profile": "https://github.com/LukTyn",
|
||||||
|
"contributions": [
|
||||||
|
"translation"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"login": "rutgerkra",
|
||||||
|
"name": "rutgerkra",
|
||||||
|
"avatar_url": "https://avatars.githubusercontent.com/u/7963187?v=4",
|
||||||
|
"profile": "https://github.com/rutgerkra",
|
||||||
|
"contributions": [
|
||||||
|
"translation"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"login": "sergeybelozorov",
|
||||||
|
"name": "sergeybelozorov",
|
||||||
|
"avatar_url": "https://avatars.githubusercontent.com/u/94930734?v=4",
|
||||||
|
"profile": "https://github.com/sergeybelozorov",
|
||||||
|
"contributions": [
|
||||||
|
"translation"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"login": "weblate-Lamster",
|
||||||
|
"name": "Allan Himidi-Rattenborg",
|
||||||
|
"avatar_url": "https://hosted.weblate.org/avatar/128/Lamster.png",
|
||||||
|
"profile": "https://hosted.weblate.org/user/Lamster/",
|
||||||
|
"contributions": [
|
||||||
|
"translation"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"login": "weblate-posemartonis",
|
||||||
|
"name": "Pose marto",
|
||||||
|
"avatar_url": "https://hosted.weblate.org/avatar/128/posemartonis.png",
|
||||||
|
"profile": "https://hosted.weblate.org/user/posemartonis/",
|
||||||
|
"contributions": [
|
||||||
|
"translation"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"login": "weblate-jf.cosse",
|
||||||
|
"name": "Jean-Francois Cosse",
|
||||||
|
"avatar_url": "https://hosted.weblate.org/avatar/128/jf.cosse.png",
|
||||||
|
"profile": "https://hosted.weblate.org/user/jf.cosse/",
|
||||||
|
"contributions": [
|
||||||
|
"translation"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"login": "bisquit2003",
|
||||||
|
"name": "bisquit2003",
|
||||||
|
"avatar_url": "https://avatars.githubusercontent.com/u/98059406?v=4",
|
||||||
|
"profile": "https://github.com/bisquit2003",
|
||||||
|
"contributions": [
|
||||||
|
"bug"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"login": "chewth91",
|
||||||
|
"name": "chewth91",
|
||||||
|
"avatar_url": "https://avatars.githubusercontent.com/u/29686018?v=4",
|
||||||
|
"profile": "https://github.com/chewth91",
|
||||||
|
"contributions": [
|
||||||
|
"bug"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"login": "rhtenhove",
|
||||||
|
"name": "rhtenhove",
|
||||||
|
"avatar_url": "https://avatars.githubusercontent.com/u/10206967?v=4",
|
||||||
|
"profile": "https://github.com/rhtenhove",
|
||||||
|
"contributions": [
|
||||||
|
"code"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"login": "mrbillpapas",
|
||||||
|
"name": "Bill Papas",
|
||||||
|
"avatar_url": "https://avatars.githubusercontent.com/u/45721000?v=4",
|
||||||
|
"profile": "https://github.com/mrbillpapas",
|
||||||
|
"contributions": [
|
||||||
|
"ideas"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"login": "haasn",
|
||||||
|
"name": "Niklas Haas",
|
||||||
|
"avatar_url": "https://avatars.githubusercontent.com/u/1149047?v=4",
|
||||||
|
"profile": "https://niklashaas.de",
|
||||||
|
"contributions": [
|
||||||
|
"ideas"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"login": "djurny",
|
||||||
|
"name": "Tom Urlings",
|
||||||
|
"avatar_url": "https://avatars.githubusercontent.com/u/950171?v=4",
|
||||||
|
"profile": "https://github.com/djurny",
|
||||||
|
"contributions": [
|
||||||
|
"ideas"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"login": "BenoitAnastay",
|
||||||
|
"name": "Benoit Anastay",
|
||||||
|
"avatar_url": "https://avatars.githubusercontent.com/u/45088785?v=4",
|
||||||
|
"profile": "http://anastay.dev",
|
||||||
|
"contributions": [
|
||||||
|
"ideas"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"login": "GollyJer",
|
||||||
|
"name": "Jeremy Gollehon",
|
||||||
|
"avatar_url": "https://avatars.githubusercontent.com/u/689204?v=4",
|
||||||
|
"profile": "https://isjustawesome.com",
|
||||||
|
"contributions": [
|
||||||
|
"ideas",
|
||||||
|
"bug"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"login": "jrbergen",
|
||||||
|
"name": "jrbergen",
|
||||||
|
"avatar_url": "https://avatars.githubusercontent.com/u/6237646?v=4",
|
||||||
|
"profile": "https://github.com/jrbergen",
|
||||||
|
"contributions": [
|
||||||
|
"ideas"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"login": "b-rad15",
|
||||||
|
"name": "Bradley O'Connell",
|
||||||
|
"avatar_url": "https://avatars.githubusercontent.com/u/25830163?v=4",
|
||||||
|
"profile": "https://github.com/b-rad15",
|
||||||
|
"contributions": [
|
||||||
|
"ideas"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"login": "00schteven",
|
||||||
|
"name": "00schteven",
|
||||||
|
"avatar_url": "https://avatars.githubusercontent.com/u/76514745?v=4",
|
||||||
|
"profile": "https://github.com/00schteven",
|
||||||
|
"contributions": [
|
||||||
|
"ideas"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"login": "Mariuss811",
|
||||||
|
"name": "Wosten",
|
||||||
|
"avatar_url": "https://avatars.githubusercontent.com/u/54115696?v=4",
|
||||||
|
"profile": "https://github.com/Mariuss811",
|
||||||
|
"contributions": [
|
||||||
|
"bug"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"login": "zpriddy",
|
||||||
|
"name": "Zachary Priddy",
|
||||||
|
"avatar_url": "https://avatars.githubusercontent.com/u/1858679?v=4",
|
||||||
|
"profile": "http://zpriddy.com",
|
||||||
|
"contributions": [
|
||||||
|
"ideas"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"login": "abkslm",
|
||||||
|
"name": "Andrew Blakeslee Moore",
|
||||||
|
"avatar_url": "https://avatars.githubusercontent.com/u/60765958?v=4",
|
||||||
|
"profile": "http://blakeslee.me",
|
||||||
|
"contributions": [
|
||||||
|
"bug"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"login": "jaynis",
|
||||||
|
"name": "jaynis",
|
||||||
|
"avatar_url": "https://avatars.githubusercontent.com/u/1553675?v=4",
|
||||||
|
"profile": "https://github.com/jaynis",
|
||||||
|
"contributions": [
|
||||||
|
"code"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"login": "alistairg",
|
||||||
|
"name": "Alistair Galbraith",
|
||||||
|
"avatar_url": "https://avatars.githubusercontent.com/u/272786?v=4",
|
||||||
|
"profile": "https://github.com/alistairg",
|
||||||
|
"contributions": [
|
||||||
|
"code"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"login": "hesseleo",
|
||||||
|
"name": "Leonhard Hesse",
|
||||||
|
"avatar_url": "https://avatars.githubusercontent.com/u/44778508?v=4",
|
||||||
|
"profile": "https://github.com/hesseleo",
|
||||||
|
"contributions": [
|
||||||
|
"code"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"login": "timstallmann",
|
||||||
|
"name": "Tim Stallmann",
|
||||||
|
"avatar_url": "https://avatars.githubusercontent.com/u/6741938?v=4",
|
||||||
|
"profile": "http://www.tim-maps.com",
|
||||||
|
"contributions": [
|
||||||
|
"code"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"login": "lehneres",
|
||||||
|
"name": "lehneres",
|
||||||
|
"avatar_url": "https://avatars.githubusercontent.com/u/7437288?v=4",
|
||||||
|
"profile": "https://github.com/lehneres",
|
||||||
|
"contributions": [
|
||||||
|
"ideas"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"login": "ahmadtawakol",
|
||||||
|
"name": "Ahmad Tawakol",
|
||||||
|
"avatar_url": "https://avatars.githubusercontent.com/u/2355493?v=4",
|
||||||
|
"profile": "https://github.com/ahmadtawakol",
|
||||||
|
"contributions": [
|
||||||
|
"code",
|
||||||
|
"bug",
|
||||||
|
"maintenance"
|
||||||
|
]
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"contributorsPerLine": 7,
|
"contributorsPerLine": 7,
|
||||||
|
|
|
||||||
28
.dockerignore
Normal file
28
.dockerignore
Normal file
|
|
@ -0,0 +1,28 @@
|
||||||
|
# The Home Assistant core checkout. tests/README.md has you clone it to ./core,
|
||||||
|
# but the Dockerfile clones its own copy to /core and links /app/core to it.
|
||||||
|
# Without this entry `COPY . /app/` ships ~300MB into every build and leaves
|
||||||
|
# /app/core as a real directory, so `ln -s /core /app/core` links *inside* it
|
||||||
|
# rather than creating the intended symlink.
|
||||||
|
core/
|
||||||
|
|
||||||
|
# Local virtualenvs
|
||||||
|
.venv/
|
||||||
|
venv/
|
||||||
|
env/
|
||||||
|
ENV/
|
||||||
|
|
||||||
|
# Not used by the build
|
||||||
|
.git/
|
||||||
|
.vscode/
|
||||||
|
.idea/
|
||||||
|
|
||||||
|
# Caches and test output
|
||||||
|
__pycache__/
|
||||||
|
*.py[cod]
|
||||||
|
.pytest_cache/
|
||||||
|
.ruff_cache/
|
||||||
|
.mypy_cache/
|
||||||
|
htmlcov/
|
||||||
|
.coverage
|
||||||
|
.coverage.*
|
||||||
|
coverage.xml
|
||||||
58
.github/update-strings.py
vendored
58
.github/update-strings.py
vendored
|
|
@ -2,6 +2,7 @@
|
||||||
|
|
||||||
import json
|
import json
|
||||||
import sys
|
import sys
|
||||||
|
from copy import deepcopy
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
|
||||||
import homeassistant.helpers.config_validation as cv
|
import homeassistant.helpers.config_validation as cv
|
||||||
|
|
@ -14,9 +15,35 @@ from custom_components.adaptive_lighting import const
|
||||||
folder = Path("custom_components") / "adaptive_lighting"
|
folder = Path("custom_components") / "adaptive_lighting"
|
||||||
strings_fname = folder / "strings.json"
|
strings_fname = folder / "strings.json"
|
||||||
en_fname = folder / "translations" / "en.json"
|
en_fname = folder / "translations" / "en.json"
|
||||||
|
translation_fnames = (folder / "translations").glob("*.json")
|
||||||
with strings_fname.open() as f:
|
with strings_fname.open() as f:
|
||||||
strings = json.load(f)
|
strings = json.load(f)
|
||||||
|
|
||||||
|
|
||||||
|
def _partition_options(values):
|
||||||
|
"""Partition option translations into basic and advanced dictionaries."""
|
||||||
|
basic = {
|
||||||
|
key: values[key]
|
||||||
|
for key, _, _ in const.VALIDATION_TUPLES
|
||||||
|
if key in const.BASIC_OPTIONS and key in values
|
||||||
|
}
|
||||||
|
advanced = {
|
||||||
|
key: values[key]
|
||||||
|
for key, _, _ in const.VALIDATION_TUPLES
|
||||||
|
if key not in const.BASIC_OPTIONS and key in values
|
||||||
|
}
|
||||||
|
return basic, advanced
|
||||||
|
|
||||||
|
|
||||||
|
def _migrate_translation_options(step):
|
||||||
|
"""Move translated advanced options under the advanced section."""
|
||||||
|
sections = step.setdefault("sections", {})
|
||||||
|
advanced = sections.setdefault("advanced", {})
|
||||||
|
for key in ("data", "data_description"):
|
||||||
|
values = {**advanced.get(key, {}), **step.get(key, {})}
|
||||||
|
step[key], advanced[key] = _partition_options(values)
|
||||||
|
|
||||||
|
|
||||||
# Set "options"
|
# Set "options"
|
||||||
data = {}
|
data = {}
|
||||||
data_description = {}
|
data_description = {}
|
||||||
|
|
@ -27,8 +54,19 @@ for k, _, typ in const.VALIDATION_TUPLES:
|
||||||
data_description[k] = desc
|
data_description[k] = desc
|
||||||
else:
|
else:
|
||||||
data[k] = f"{k}: {desc}"
|
data[k] = f"{k}: {desc}"
|
||||||
strings["options"]["step"]["init"]["data"] = data
|
basic_data, advanced_data = _partition_options(data)
|
||||||
strings["options"]["step"]["init"]["data_description"] = data_description
|
basic_descriptions, advanced_descriptions = _partition_options(data_description)
|
||||||
|
options_step = strings["options"]["step"]["init"]
|
||||||
|
options_step["data"] = basic_data
|
||||||
|
options_step["data_description"] = basic_descriptions
|
||||||
|
options_step["sections"] = {
|
||||||
|
"advanced": {
|
||||||
|
"name": "Advanced settings",
|
||||||
|
"description": "Additional settings for fine-tuning Adaptive Lighting.",
|
||||||
|
"data": advanced_data,
|
||||||
|
"data_description": advanced_descriptions,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
# Set "services"
|
# Set "services"
|
||||||
services_filename = Path("custom_components") / "adaptive_lighting" / "services.yaml"
|
services_filename = Path("custom_components") / "adaptive_lighting" / "services.yaml"
|
||||||
|
|
@ -58,10 +96,22 @@ with en_fname.open() as f:
|
||||||
en = json.load(f)
|
en = json.load(f)
|
||||||
|
|
||||||
en["config"]["step"]["user"] = strings["config"]["step"]["user"]
|
en["config"]["step"]["user"] = strings["config"]["step"]["user"]
|
||||||
en["options"]["step"]["init"]["data"] = data
|
en["options"]["step"]["init"] = deepcopy(options_step)
|
||||||
en["options"]["step"]["init"]["data_description"] = data_description
|
|
||||||
en["services"] = services_json
|
en["services"] = services_json
|
||||||
|
|
||||||
with en_fname.open("w") as f:
|
with en_fname.open("w") as f:
|
||||||
json.dump(en, f, indent=2, ensure_ascii=False)
|
json.dump(en, f, indent=2, ensure_ascii=False)
|
||||||
f.write("\n")
|
f.write("\n")
|
||||||
|
|
||||||
|
# Keep translated labels and descriptions when moving advanced options into a section.
|
||||||
|
for translation_fname in translation_fnames:
|
||||||
|
if translation_fname == en_fname:
|
||||||
|
continue
|
||||||
|
with translation_fname.open() as f:
|
||||||
|
translation = json.load(f)
|
||||||
|
if "options" not in translation:
|
||||||
|
continue
|
||||||
|
_migrate_translation_options(translation["options"]["step"]["init"])
|
||||||
|
with translation_fname.open("w") as f:
|
||||||
|
json.dump(translation, f, indent=2, ensure_ascii=False)
|
||||||
|
f.write("\n")
|
||||||
|
|
|
||||||
63
.github/workflows/deploy-webapp.yml
vendored
63
.github/workflows/deploy-webapp.yml
vendored
|
|
@ -1,63 +0,0 @@
|
||||||
# Simple workflow for deploying WebAssembly app to GitHub Pages
|
|
||||||
name: Deploy WebAssembly app to Pages
|
|
||||||
|
|
||||||
on:
|
|
||||||
# Runs on pushes targeting the default branch
|
|
||||||
push:
|
|
||||||
branches: ["main"]
|
|
||||||
|
|
||||||
# Allows you to run this workflow manually from the Actions tab
|
|
||||||
workflow_dispatch:
|
|
||||||
|
|
||||||
# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages
|
|
||||||
permissions:
|
|
||||||
contents: read
|
|
||||||
pages: write
|
|
||||||
id-token: write
|
|
||||||
|
|
||||||
# Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued.
|
|
||||||
# However, do NOT cancel in-progress runs as we want to allow these production deployments to complete.
|
|
||||||
concurrency:
|
|
||||||
group: "pages"
|
|
||||||
cancel-in-progress: false
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
# Single deploy job since we're just deploying
|
|
||||||
deploy:
|
|
||||||
environment:
|
|
||||||
name: github-pages
|
|
||||||
url: ${{ steps.deployment.outputs.page_url }}
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- name: Checkout
|
|
||||||
uses: actions/checkout@v6
|
|
||||||
|
|
||||||
- name: Set Up Python
|
|
||||||
uses: actions/setup-python@v6
|
|
||||||
with:
|
|
||||||
python-version: 3.13.5
|
|
||||||
|
|
||||||
- name: Install Dependencies
|
|
||||||
run: |
|
|
||||||
pip install -r webapp/requirements.txt
|
|
||||||
pip install shinylive
|
|
||||||
|
|
||||||
- name: Build the WebAssembly app
|
|
||||||
run: |
|
|
||||||
set -ex
|
|
||||||
cp custom_components/adaptive_lighting/color_and_brightness.py webapp/color_and_brightness.py
|
|
||||||
sed -i 's/homeassistant.util.color/homeassistant_util_color/g' "webapp/color_and_brightness.py"
|
|
||||||
shinylive export webapp site
|
|
||||||
|
|
||||||
- name: Setup Pages
|
|
||||||
uses: actions/configure-pages@v5
|
|
||||||
|
|
||||||
- name: Upload artifact
|
|
||||||
uses: actions/upload-pages-artifact@v4
|
|
||||||
with:
|
|
||||||
# Upload the 'site' directory, where your app has been built
|
|
||||||
path: "site"
|
|
||||||
|
|
||||||
- name: Deploy to GitHub Pages
|
|
||||||
id: deployment
|
|
||||||
uses: actions/deploy-pages@v4
|
|
||||||
58
.github/workflows/docker-build.yml
vendored
58
.github/workflows/docker-build.yml
vendored
|
|
@ -1,32 +1,50 @@
|
||||||
name: docker
|
name: Docker
|
||||||
|
|
||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
branches:
|
branches: [main]
|
||||||
- "main"
|
tags: ['v*']
|
||||||
|
pull_request:
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
env:
|
||||||
|
REGISTRY: ghcr.io
|
||||||
|
IMAGE_NAME: ${{ github.repository }}
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
docker:
|
build:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
packages: write
|
||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
platform:
|
platform: [linux/amd64, linux/arm64]
|
||||||
- linux/amd64
|
|
||||||
- linux/arm64
|
|
||||||
steps:
|
steps:
|
||||||
- name: Set up QEMU
|
- uses: actions/checkout@v7.0.1
|
||||||
uses: docker/setup-qemu-action@v3
|
- uses: docker/setup-qemu-action@v4.3.0
|
||||||
- name: Set up Docker Buildx
|
- uses: docker/setup-buildx-action@v4.3.0
|
||||||
uses: docker/setup-buildx-action@v3
|
- uses: docker/login-action@v4.6.0
|
||||||
- name: Login to Docker Hub
|
|
||||||
uses: docker/login-action@v3
|
|
||||||
with:
|
with:
|
||||||
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
registry: ${{ env.REGISTRY }}
|
||||||
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
username: ${{ github.actor }}
|
||||||
- name: Build and push
|
password: ${{ secrets.GITHUB_TOKEN }}
|
||||||
uses: docker/build-push-action@v6
|
- id: meta
|
||||||
|
uses: docker/metadata-action@v6.2.0
|
||||||
with:
|
with:
|
||||||
# Only push on the master branch
|
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
|
||||||
push: ${{ github.ref == 'refs/heads/master' }}
|
tags: |
|
||||||
|
type=ref,event=branch
|
||||||
|
type=ref,event=pr
|
||||||
|
type=semver,pattern={{version}}
|
||||||
|
type=semver,pattern={{major}}.{{minor}}
|
||||||
|
type=raw,value=latest,enable={{is_default_branch}}
|
||||||
|
- uses: docker/build-push-action@v7.3.0
|
||||||
|
with:
|
||||||
|
context: .
|
||||||
platforms: ${{ matrix.platform }}
|
platforms: ${{ matrix.platform }}
|
||||||
tags: ${{ secrets.DOCKERHUB_USERNAME }}/adaptive-lighting:latest
|
push: ${{ github.event_name != 'pull_request' }}
|
||||||
|
tags: ${{ steps.meta.outputs.tags }}
|
||||||
|
labels: ${{ steps.meta.outputs.labels }}
|
||||||
|
cache-from: type=gha
|
||||||
|
cache-to: type=gha,mode=max
|
||||||
|
|
|
||||||
64
.github/workflows/docs.yml
vendored
Normal file
64
.github/workflows/docs.yml
vendored
Normal file
|
|
@ -0,0 +1,64 @@
|
||||||
|
name: Documentation
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches: [main]
|
||||||
|
pull_request:
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
pages: write
|
||||||
|
id-token: write
|
||||||
|
|
||||||
|
concurrency:
|
||||||
|
group: "pages"
|
||||||
|
cancel-in-progress: false
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Checkout repository
|
||||||
|
uses: actions/checkout@v7.0.1
|
||||||
|
|
||||||
|
- name: Set up Python
|
||||||
|
uses: actions/setup-python@v7.0.0
|
||||||
|
with:
|
||||||
|
python-version: '3.14.7'
|
||||||
|
|
||||||
|
- name: Install uv
|
||||||
|
uses: astral-sh/setup-uv@v10.0.1
|
||||||
|
|
||||||
|
- name: Install dependencies
|
||||||
|
run: uv sync --group docs
|
||||||
|
|
||||||
|
- name: Build documentation
|
||||||
|
run: uv run zensical build
|
||||||
|
|
||||||
|
- name: Build webapp (simulator)
|
||||||
|
run: uv run shinylive export webapp webapp-site
|
||||||
|
|
||||||
|
- name: Integrate webapp into docs
|
||||||
|
run: |
|
||||||
|
# Copy webapp into docs site at /simulator/
|
||||||
|
mkdir -p site/simulator
|
||||||
|
cp -r webapp-site/* site/simulator/
|
||||||
|
echo "Webapp integrated at site/simulator/"
|
||||||
|
|
||||||
|
- name: Upload artifact
|
||||||
|
uses: actions/upload-pages-artifact@v5.0.0
|
||||||
|
with:
|
||||||
|
path: ./site
|
||||||
|
|
||||||
|
deploy:
|
||||||
|
if: github.ref == 'refs/heads/main' && github.event_name != 'pull_request'
|
||||||
|
environment:
|
||||||
|
name: github-pages
|
||||||
|
url: ${{ steps.deployment.outputs.page_url }}
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
needs: build
|
||||||
|
steps:
|
||||||
|
- name: Deploy to GitHub Pages
|
||||||
|
id: deployment
|
||||||
|
uses: actions/deploy-pages@v5.0.1
|
||||||
2
.github/workflows/hassfest.yaml
vendored
2
.github/workflows/hassfest.yaml
vendored
|
|
@ -11,5 +11,5 @@ jobs:
|
||||||
validate_hassfest:
|
validate_hassfest:
|
||||||
runs-on: "ubuntu-latest"
|
runs-on: "ubuntu-latest"
|
||||||
steps:
|
steps:
|
||||||
- uses: "actions/checkout@v6.0.0"
|
- uses: "actions/checkout@v7.0.1"
|
||||||
- uses: home-assistant/actions/hassfest@master
|
- uses: home-assistant/actions/hassfest@master
|
||||||
|
|
|
||||||
|
|
@ -14,25 +14,25 @@ runs:
|
||||||
using: "composite"
|
using: "composite"
|
||||||
steps:
|
steps:
|
||||||
- name: Check out code from GitHub
|
- name: Check out code from GitHub
|
||||||
uses: actions/checkout@v6
|
uses: actions/checkout@v7.0.1
|
||||||
with:
|
with:
|
||||||
repository: ${{ github.repository }}
|
repository: ${{ github.repository }}
|
||||||
ref: ${{ github.ref }}
|
ref: ${{ github.sha }}
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
- name: Check out code from GitHub
|
- name: Check out code from GitHub
|
||||||
uses: actions/checkout@v6
|
uses: actions/checkout@v7.0.1
|
||||||
with:
|
with:
|
||||||
repository: home-assistant/core
|
repository: home-assistant/core
|
||||||
path: core
|
path: core
|
||||||
ref: ${{ inputs.core-version }}
|
ref: ${{ inputs.core-version }}
|
||||||
- name: Set up Python ${{ inputs.python-version }}
|
- name: Set up Python ${{ inputs.python-version }}
|
||||||
id: python
|
id: python
|
||||||
uses: actions/setup-python@v6.1.0
|
uses: actions/setup-python@v7.0.0
|
||||||
with:
|
with:
|
||||||
python-version: ${{ inputs.python-version }}
|
python-version: ${{ inputs.python-version }}
|
||||||
- name: Set up UV
|
- name: Set up UV
|
||||||
uses: astral-sh/setup-uv@v7
|
uses: astral-sh/setup-uv@v10.0.1
|
||||||
- name: Install dependencies
|
- name: Install dependencies
|
||||||
shell: bash
|
shell: bash
|
||||||
run: |
|
run: |
|
||||||
|
|
|
||||||
2
.github/workflows/main-to-master-sync.yml
vendored
2
.github/workflows/main-to-master-sync.yml
vendored
|
|
@ -11,7 +11,7 @@ jobs:
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout repository
|
- name: Checkout repository
|
||||||
uses: actions/checkout@v6
|
uses: actions/checkout@v7.0.1
|
||||||
with:
|
with:
|
||||||
ref: main
|
ref: main
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
|
|
|
||||||
48
.github/workflows/markdown-code-runner.yml
vendored
Normal file
48
.github/workflows/markdown-code-runner.yml
vendored
Normal file
|
|
@ -0,0 +1,48 @@
|
||||||
|
name: markdown-code-runner
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
pull_request:
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
markdown-code-runner:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Check out code from GitHub
|
||||||
|
uses: actions/checkout@v7.0.1
|
||||||
|
with:
|
||||||
|
repository: ${{ github.event.pull_request.head.repo.full_name || github.repository }}
|
||||||
|
ref: ${{ github.head_ref || github.ref }}
|
||||||
|
fetch-depth: 0
|
||||||
|
|
||||||
|
- name: Set up Python
|
||||||
|
uses: actions/setup-python@v7.0.0
|
||||||
|
with:
|
||||||
|
python-version: "3.14.7"
|
||||||
|
|
||||||
|
- name: Install uv
|
||||||
|
uses: astral-sh/setup-uv@v10.0.1
|
||||||
|
|
||||||
|
- name: Update generated content
|
||||||
|
run: ./scripts/update-generated-content
|
||||||
|
|
||||||
|
- name: Check for changes
|
||||||
|
run: |
|
||||||
|
if [ -n "$(git status --porcelain)" ]; then
|
||||||
|
if [ "${{ github.event_name }}" == "pull_request" ]; then
|
||||||
|
echo "::error::Auto-generated files are not up to date. Please run './scripts/update-generated-content' locally and push the changes."
|
||||||
|
exit 1
|
||||||
|
else
|
||||||
|
echo "Changes detected, committing and pushing..."
|
||||||
|
git add -u .
|
||||||
|
git config --local user.email "github-actions[bot]@users.noreply.github.com"
|
||||||
|
git config --local user.name "github-actions[bot]"
|
||||||
|
git commit -m "Update auto-generated content"
|
||||||
|
git pull --rebase
|
||||||
|
git push
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo "No changes detected."
|
||||||
|
fi
|
||||||
4
.github/workflows/pre-commit.yaml
vendored
4
.github/workflows/pre-commit.yaml
vendored
|
|
@ -9,6 +9,6 @@ jobs:
|
||||||
pre-commit:
|
pre-commit:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v6
|
- uses: actions/checkout@v7.0.1
|
||||||
- uses: actions/setup-python@v6
|
- uses: actions/setup-python@v7.0.0
|
||||||
- uses: pre-commit/action@v3.0.1
|
- uses: pre-commit/action@v3.0.1
|
||||||
|
|
|
||||||
98
.github/workflows/pytest.yaml
vendored
98
.github/workflows/pytest.yaml
vendored
|
|
@ -14,35 +14,37 @@ jobs:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
include:
|
include:
|
||||||
- core-version: "2024.12.5"
|
|
||||||
python-version: "3.12"
|
|
||||||
- core-version: "2025.1.4"
|
|
||||||
python-version: "3.12"
|
|
||||||
- core-version: "2025.2.5"
|
|
||||||
python-version: "3.13"
|
|
||||||
- core-version: "2025.3.4"
|
|
||||||
python-version: "3.13"
|
|
||||||
- core-version: "2025.4.4"
|
|
||||||
python-version: "3.13"
|
|
||||||
- core-version: "2025.5.3"
|
|
||||||
python-version: "3.13"
|
|
||||||
- core-version: "2025.6.3"
|
|
||||||
python-version: "3.13"
|
|
||||||
- core-version: "2025.7.4"
|
|
||||||
python-version: "3.13"
|
|
||||||
- core-version: "2025.8.3"
|
|
||||||
python-version: "3.13"
|
|
||||||
- core-version: "2025.9.4"
|
- core-version: "2025.9.4"
|
||||||
python-version: "3.13"
|
python-version: "3.13"
|
||||||
- core-version: "2025.10.4"
|
- core-version: "2025.10.4"
|
||||||
python-version: "3.13"
|
python-version: "3.13"
|
||||||
- core-version: "2025.11.3"
|
- core-version: "2025.11.3"
|
||||||
python-version: "3.13"
|
python-version: "3.13"
|
||||||
- core-version: "dev"
|
- core-version: "2025.12.5"
|
||||||
python-version: "3.13"
|
python-version: "3.13"
|
||||||
|
- core-version: "2026.1.3"
|
||||||
|
python-version: "3.13"
|
||||||
|
- core-version: "2026.2.3"
|
||||||
|
python-version: "3.13"
|
||||||
|
- core-version: "2026.3.4"
|
||||||
|
python-version: "3.14.2"
|
||||||
|
- core-version: "2026.4.4"
|
||||||
|
python-version: "3.14.2"
|
||||||
|
- core-version: "2026.5.4"
|
||||||
|
python-version: "3.14.2"
|
||||||
|
- core-version: "2026.6.4"
|
||||||
|
python-version: "3.14.2"
|
||||||
|
- core-version: "2026.7.4"
|
||||||
|
python-version: "3.14.2"
|
||||||
|
- core-version: "2026.8.3"
|
||||||
|
python-version: "3.14.2"
|
||||||
|
- core-version: "2026.9.1"
|
||||||
|
python-version: "3.14.2"
|
||||||
|
- core-version: "dev"
|
||||||
|
python-version: "3.14.2"
|
||||||
steps:
|
steps:
|
||||||
- name: Check out code from GitHub
|
- name: Check out code from GitHub
|
||||||
uses: actions/checkout@v6
|
uses: actions/checkout@v7.0.1
|
||||||
|
|
||||||
- name: Install Home Assistant
|
- name: Install Home Assistant
|
||||||
uses: ./.github/workflows/install_dependencies
|
uses: ./.github/workflows/install_dependencies
|
||||||
|
|
@ -51,6 +53,7 @@ jobs:
|
||||||
core-version: ${{ matrix.core-version }}
|
core-version: ${{ matrix.core-version }}
|
||||||
|
|
||||||
- name: Run pytest
|
- name: Run pytest
|
||||||
|
id: pytest
|
||||||
timeout-minutes: 60
|
timeout-minutes: 60
|
||||||
run: |
|
run: |
|
||||||
export PYTHONPATH=${PYTHONPATH}:${PWD}
|
export PYTHONPATH=${PYTHONPATH}:${PWD}
|
||||||
|
|
@ -61,8 +64,61 @@ jobs:
|
||||||
-qq \
|
-qq \
|
||||||
--timeout=9 \
|
--timeout=9 \
|
||||||
--durations=10 \
|
--durations=10 \
|
||||||
--cov="homeassistant" \
|
--cov=homeassistant.components.adaptive_lighting \
|
||||||
|
--cov-branch \
|
||||||
|
--cov-report=term-missing \
|
||||||
--cov-report=xml \
|
--cov-report=xml \
|
||||||
|
--cov-report=json \
|
||||||
|
--cov-report=html \
|
||||||
-o console_output_style=count \
|
-o console_output_style=count \
|
||||||
-p no:sugar \
|
-p no:sugar \
|
||||||
tests/components/adaptive_lighting
|
tests/components/adaptive_lighting
|
||||||
|
|
||||||
|
- name: Write coverage summary
|
||||||
|
if: ${{ !cancelled() }}
|
||||||
|
env:
|
||||||
|
CORE_VERSION: ${{ matrix.core-version }}
|
||||||
|
PYTHON_VERSION: ${{ matrix.python-version }}
|
||||||
|
PYTEST_OUTCOME: ${{ steps.pytest.outcome }}
|
||||||
|
run: |
|
||||||
|
{
|
||||||
|
echo "### Coverage: Home Assistant ${CORE_VERSION}, Python ${PYTHON_VERSION}"
|
||||||
|
echo
|
||||||
|
if [[ -f core/coverage.json ]]; then
|
||||||
|
echo "| Metric | Executed | Total | Coverage |"
|
||||||
|
echo "| --- | ---: | ---: | ---: |"
|
||||||
|
jq -r '
|
||||||
|
def percent(covered; total):
|
||||||
|
if total == 0 then 100 else (covered / total * 10000 | round) / 100 end;
|
||||||
|
.totals
|
||||||
|
| "| Lines | \(.covered_lines) | \(.num_statements) | \(percent(.covered_lines; .num_statements))% |\n"
|
||||||
|
+ "| Branches | \(.covered_branches) | \(.num_branches) | \(percent(.covered_branches; .num_branches))% |"
|
||||||
|
' core/coverage.json
|
||||||
|
else
|
||||||
|
echo "Coverage JSON was not generated. See the pytest step for details."
|
||||||
|
fi
|
||||||
|
} >> "${GITHUB_STEP_SUMMARY}"
|
||||||
|
|
||||||
|
if [[ ! -f core/coverage.json && "${PYTEST_OUTCOME}" == "success" ]]; then
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ "${CORE_VERSION}" != "dev" && "${PYTEST_OUTCOME}" == "success" ]]; then
|
||||||
|
echo "Required coverage: 89% lines and 80% branches." >> "${GITHUB_STEP_SUMMARY}"
|
||||||
|
if ! jq -e '.totals | .covered_lines * 100 >= .num_statements * 89
|
||||||
|
and .covered_branches * 100 >= .num_branches * 80' core/coverage.json > /dev/null; then
|
||||||
|
echo "::error::Coverage must be at least 89% lines and 80% branches."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
- name: Upload coverage reports
|
||||||
|
if: ${{ !cancelled() }}
|
||||||
|
uses: actions/upload-artifact@v7.0.1
|
||||||
|
with:
|
||||||
|
name: coverage-${{ matrix.core-version }}-py${{ matrix.python-version }}
|
||||||
|
path: |
|
||||||
|
core/coverage.xml
|
||||||
|
core/coverage.json
|
||||||
|
core/htmlcov/
|
||||||
|
if-no-files-found: warn
|
||||||
|
|
|
||||||
4
.github/workflows/release-drafter.yml
vendored
4
.github/workflows/release-drafter.yml
vendored
|
|
@ -17,6 +17,8 @@ jobs:
|
||||||
pull-requests: write
|
pull-requests: write
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: release-drafter/release-drafter@v6
|
- uses: release-drafter/release-drafter@v7.7.0
|
||||||
|
with:
|
||||||
|
dry-run: ${{ github.event_name == 'pull_request' }}
|
||||||
env:
|
env:
|
||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
|
|
||||||
10
.github/workflows/toc.yaml
vendored
10
.github/workflows/toc.yaml
vendored
|
|
@ -1,10 +0,0 @@
|
||||||
on: push
|
|
||||||
name: TOC Generator
|
|
||||||
jobs:
|
|
||||||
generateTOC:
|
|
||||||
name: TOC Generator
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- uses: technote-space/toc-generator@v4
|
|
||||||
with:
|
|
||||||
TOC_TITLE: ""
|
|
||||||
57
.github/workflows/update-readme.yml
vendored
57
.github/workflows/update-readme.yml
vendored
|
|
@ -1,57 +0,0 @@
|
||||||
name: Update README.md, strings.json, and services.yaml
|
|
||||||
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
branches:
|
|
||||||
- master
|
|
||||||
paths:
|
|
||||||
- "README.md"
|
|
||||||
- "custom_components/adaptive_lighting/const.py"
|
|
||||||
- "github/workflows/update-readme.yml"
|
|
||||||
pull_request:
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
update_readme:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- name: Check out code from GitHub
|
|
||||||
uses: actions/checkout@v6
|
|
||||||
|
|
||||||
- name: Install Home Assistant
|
|
||||||
uses: ./.github/workflows/install_dependencies
|
|
||||||
with:
|
|
||||||
python-version: "3.13"
|
|
||||||
|
|
||||||
- name: Install markdown-code-runner and README code dependencies
|
|
||||||
run: |
|
|
||||||
uv pip install markdown-code-runner==2.1.0 pandas tabulate
|
|
||||||
|
|
||||||
- name: Run markdown-code-runner
|
|
||||||
run: uv run markdown-code-runner --verbose README.md
|
|
||||||
|
|
||||||
- name: Run update services.yaml
|
|
||||||
run: uv run python .github/update-services.py
|
|
||||||
|
|
||||||
- name: Run update strings.json
|
|
||||||
run: uv run python .github/update-strings.py
|
|
||||||
|
|
||||||
- name: Commit updated README.md, strings.json, and services.yaml
|
|
||||||
id: commit
|
|
||||||
run: |
|
|
||||||
git add -u .
|
|
||||||
git config --local user.email "github-actions[bot]@users.noreply.github.com"
|
|
||||||
git config --local user.name "github-actions[bot]"
|
|
||||||
if git diff --quiet && git diff --staged --quiet; then
|
|
||||||
echo "No changes in README.md, strings.json, and services.yaml, skipping commit."
|
|
||||||
echo "commit_status=skipped" >> $GITHUB_ENV
|
|
||||||
else
|
|
||||||
git commit -m "Update README.md, strings.json, and services.yaml"
|
|
||||||
echo "commit_status=committed" >> $GITHUB_ENV
|
|
||||||
fi
|
|
||||||
|
|
||||||
- name: Push changes
|
|
||||||
if: env.commit_status == 'committed'
|
|
||||||
uses: ad-m/github-push-action@master
|
|
||||||
with:
|
|
||||||
github_token: ${{ secrets.GITHUB_TOKEN }}
|
|
||||||
branch: ${{ github.head_ref }}
|
|
||||||
59
.github/workflows/update-test-matrix.yaml
vendored
Normal file
59
.github/workflows/update-test-matrix.yaml
vendored
Normal file
|
|
@ -0,0 +1,59 @@
|
||||||
|
name: Update Test Matrix
|
||||||
|
|
||||||
|
on:
|
||||||
|
schedule:
|
||||||
|
# Run weekly on Monday at 9:00 UTC
|
||||||
|
- cron: "0 9 * * 1"
|
||||||
|
workflow_dispatch: # Allow manual trigger
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: write
|
||||||
|
pull-requests: write
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
update-matrix:
|
||||||
|
name: Update HA Core versions in test matrix
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Check out code
|
||||||
|
uses: actions/checkout@v7.0.1
|
||||||
|
|
||||||
|
- name: Set up Python
|
||||||
|
uses: actions/setup-python@v7.0.0
|
||||||
|
with:
|
||||||
|
python-version: "3.14.7"
|
||||||
|
|
||||||
|
- name: Update test matrix
|
||||||
|
run: python scripts/update-test-matrix.py
|
||||||
|
|
||||||
|
- name: Check for changes
|
||||||
|
id: changes
|
||||||
|
run: |
|
||||||
|
if git diff --quiet .github/workflows/pytest.yaml; then
|
||||||
|
echo "changed=false" >> $GITHUB_OUTPUT
|
||||||
|
else
|
||||||
|
echo "changed=true" >> $GITHUB_OUTPUT
|
||||||
|
echo "Detected changes:"
|
||||||
|
git diff .github/workflows/pytest.yaml
|
||||||
|
fi
|
||||||
|
|
||||||
|
- name: Create Pull Request
|
||||||
|
if: steps.changes.outputs.changed == 'true'
|
||||||
|
uses: peter-evans/create-pull-request@v8.1.1
|
||||||
|
with:
|
||||||
|
token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
commit-message: "ci: update HA Core test matrix versions"
|
||||||
|
title: "ci: Update Home Assistant Core test matrix"
|
||||||
|
body: |
|
||||||
|
This PR automatically updates the pytest workflow to test against the latest Home Assistant Core versions.
|
||||||
|
|
||||||
|
## Changes
|
||||||
|
- Updated HA Core versions in the test matrix to include latest patch releases
|
||||||
|
|
||||||
|
---
|
||||||
|
🤖 Generated automatically by the update-test-matrix workflow
|
||||||
|
branch: update-test-matrix
|
||||||
|
delete-branch: true
|
||||||
|
labels: |
|
||||||
|
automation
|
||||||
|
ci
|
||||||
3
.github/workflows/validate.yml
vendored
3
.github/workflows/validate.yml
vendored
|
|
@ -10,8 +10,9 @@ on:
|
||||||
jobs:
|
jobs:
|
||||||
validate_hacs:
|
validate_hacs:
|
||||||
runs-on: "ubuntu-latest"
|
runs-on: "ubuntu-latest"
|
||||||
|
if: github.repository == 'basnijholt/adaptive-lighting' # Don't run on forked repos
|
||||||
steps:
|
steps:
|
||||||
- uses: "actions/checkout@v6"
|
- uses: "actions/checkout@v7.0.1"
|
||||||
- name: HACS validation
|
- name: HACS validation
|
||||||
uses: "hacs/action@main"
|
uses: "hacs/action@main"
|
||||||
with:
|
with:
|
||||||
|
|
|
||||||
3
.gitignore
vendored
3
.gitignore
vendored
|
|
@ -135,3 +135,6 @@ dmypy.json
|
||||||
# Home Assistant configuration
|
# Home Assistant configuration
|
||||||
config/*
|
config/*
|
||||||
!config/configuration.yaml
|
!config/configuration.yaml
|
||||||
|
|
||||||
|
# Home Assistant core
|
||||||
|
core/
|
||||||
|
|
|
||||||
|
|
@ -1,18 +1,24 @@
|
||||||
repos:
|
repos:
|
||||||
- repo: https://github.com/pre-commit/pre-commit-hooks
|
- repo: https://github.com/pre-commit/pre-commit-hooks
|
||||||
rev: v5.0.0
|
rev: v6.0.0
|
||||||
hooks:
|
hooks:
|
||||||
- id: check-added-large-files
|
- id: check-added-large-files
|
||||||
- id: trailing-whitespace
|
- id: trailing-whitespace
|
||||||
- id: end-of-file-fixer
|
- id: end-of-file-fixer
|
||||||
- id: mixed-line-ending
|
- id: mixed-line-ending
|
||||||
args: ["--fix=lf"]
|
args: ["--fix=lf"]
|
||||||
|
- repo: https://github.com/thlorenz/doctoc
|
||||||
|
rev: v2.5.0
|
||||||
|
hooks:
|
||||||
|
- id: doctoc
|
||||||
|
files: ^README[^/]*\.md$
|
||||||
|
args: ["--notitle"]
|
||||||
- repo: https://github.com/astral-sh/ruff-pre-commit
|
- repo: https://github.com/astral-sh/ruff-pre-commit
|
||||||
rev: v0.11.13
|
rev: v0.16.6
|
||||||
hooks:
|
hooks:
|
||||||
- id: ruff
|
- id: ruff
|
||||||
args: ["--fix"]
|
args: ["--fix"]
|
||||||
- repo: https://github.com/psf/black
|
- repo: https://github.com/psf/black-pre-commit-mirror
|
||||||
rev: 25.1.0
|
rev: 26.5.1
|
||||||
hooks:
|
hooks:
|
||||||
- id: black
|
- id: black
|
||||||
|
|
|
||||||
10
.ruff.toml
10
.ruff.toml
|
|
@ -1,6 +1,6 @@
|
||||||
# The contents of this file is based on https://github.com/home-assistant/core/blob/dev/pyproject.toml
|
# The contents of this file is based on https://github.com/home-assistant/core/blob/dev/pyproject.toml
|
||||||
|
|
||||||
target-version = "py310"
|
target-version = "py312"
|
||||||
[lint]
|
[lint]
|
||||||
select = ["ALL"]
|
select = ["ALL"]
|
||||||
|
|
||||||
|
|
@ -8,19 +8,23 @@ select = ["ALL"]
|
||||||
# by the codebase. The plan is to fix them all (when sensible) and then enable them.
|
# by the codebase. The plan is to fix them all (when sensible) and then enable them.
|
||||||
ignore = [
|
ignore = [
|
||||||
"ANN",
|
"ANN",
|
||||||
"ANN101", # Missing type annotation for {name} in method
|
|
||||||
"ANN401", # Dynamically typed expressions (typing.Any) are disallowed in {name}
|
"ANN401", # Dynamically typed expressions (typing.Any) are disallowed in {name}
|
||||||
|
"CPY001", # Missing copyright notice at top of file
|
||||||
"D401", # First line of docstring should be in imperative mood
|
"D401", # First line of docstring should be in imperative mood
|
||||||
"E501", # line too long
|
"E501", # line too long
|
||||||
"FBT001", # Boolean positional arg in function definition
|
"FBT001", # Boolean positional arg in function definition
|
||||||
"FBT002", # Boolean default value in function definition
|
"FBT002", # Boolean default value in function definition
|
||||||
"FIX004", # Line contains HACK, consider resolving the issue
|
"FIX004", # Line contains HACK, consider resolving the issue
|
||||||
"PD901", # df is a bad variable name. Be kinder to your future self.
|
|
||||||
"PERF203", # `try`-`except` within a loop incurs performance overhead
|
"PERF203", # `try`-`except` within a loop incurs performance overhead
|
||||||
|
"PLC0415", # `import` should be at the top-level of a file
|
||||||
"PLR0913", # Too many arguments to function call (N > 5)
|
"PLR0913", # Too many arguments to function call (N > 5)
|
||||||
|
"PLR0917", # Too many positional arguments
|
||||||
"PLR2004", # Magic value used in comparison, consider replacing X with a constant variable
|
"PLR2004", # Magic value used in comparison, consider replacing X with a constant variable
|
||||||
|
"RUF059", # Unpacked variable is never used
|
||||||
"S101", # Use of assert detected
|
"S101", # Use of assert detected
|
||||||
"SLF001", # Private member accessed
|
"SLF001", # Private member accessed
|
||||||
|
"UP017", # Use datetime.UTC alias
|
||||||
|
"UP042", # Replace str, Enum inheritance with StrEnum
|
||||||
]
|
]
|
||||||
|
|
||||||
[lint.per-file-ignores]
|
[lint.per-file-ignores]
|
||||||
|
|
|
||||||
3
.vscode/settings.json
vendored
3
.vscode/settings.json
vendored
|
|
@ -16,5 +16,8 @@
|
||||||
"-p",
|
"-p",
|
||||||
"no:sugar",
|
"no:sugar",
|
||||||
"core/tests/components/adaptive_lighting"
|
"core/tests/components/adaptive_lighting"
|
||||||
|
],
|
||||||
|
"python.analysis.extraPaths": [
|
||||||
|
"${workspaceFolder}/core"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
|
||||||
14
Dockerfile
14
Dockerfile
|
|
@ -1,8 +1,10 @@
|
||||||
# See tests/README.md for instructions on how to run the tests.
|
# See tests/README.md for instructions on how to run the tests.
|
||||||
|
|
||||||
# tl;dr:
|
# tl;dr:
|
||||||
# Run the following command in the adaptive-lighting repo folder to run the tests:
|
# 1. Clone HA core into ./core: git clone --depth 1 https://github.com/home-assistant/core.git core
|
||||||
# docker run -v $(pwd):/app basnijholt/adaptive-lighting:latest
|
# 2. Setup symlinks: ./scripts/setup-symlinks
|
||||||
|
# 3. Run tests (mount entire repo, not individual dirs, or symlinks break):
|
||||||
|
# docker run -v $(pwd):/app basnijholt/adaptive-lighting:latest
|
||||||
|
|
||||||
# Optionally build the image yourself with:
|
# Optionally build the image yourself with:
|
||||||
# docker build -t basnijholt/adaptive-lighting:latest .
|
# docker build -t basnijholt/adaptive-lighting:latest .
|
||||||
|
|
@ -26,14 +28,14 @@ RUN ln -s /core /app/core && /app/scripts/setup-symlinks
|
||||||
|
|
||||||
# Install home-assistant/core dependencies
|
# Install home-assistant/core dependencies
|
||||||
RUN mkdir -p /.venv
|
RUN mkdir -p /.venv
|
||||||
ENV UV_PROJECT_ENVIRONMENT=/.venv UV_PYTHON=3.13 PATH="/.venv/bin:$PATH"
|
ENV UV_PROJECT_ENVIRONMENT=/.venv UV_PYTHON=3.14.2 PATH="/.venv/bin:$PATH"
|
||||||
RUN uv venv
|
RUN uv venv
|
||||||
RUN /app/scripts/setup-dependencies
|
RUN /app/scripts/setup-dependencies
|
||||||
|
|
||||||
WORKDIR /app/core
|
WORKDIR /app/core
|
||||||
|
|
||||||
# Make 'custom_components/adaptive_lighting' imports available to tests
|
# Make 'custom_components/adaptive_lighting' imports available to tests
|
||||||
ENV PYTHONPATH="${PYTHONPATH}:/app"
|
ENV PYTHONPATH="/app"
|
||||||
|
|
||||||
ENTRYPOINT ["python3", \
|
ENTRYPOINT ["python3", \
|
||||||
# Enable Python development mode
|
# Enable Python development mode
|
||||||
|
|
@ -46,8 +48,8 @@ ENTRYPOINT ["python3", \
|
||||||
"--timeout=9", \
|
"--timeout=9", \
|
||||||
# Print the 10 slowest tests
|
# Print the 10 slowest tests
|
||||||
"--durations=10", \
|
"--durations=10", \
|
||||||
# Measure code coverage for the 'homeassistant' package
|
# Measure code coverage for the 'homeassistant.components.adaptive_lighting' component
|
||||||
"--cov='homeassistant'", \
|
"--cov=homeassistant.components.adaptive_lighting", \
|
||||||
# Generate an XML report of the code coverage
|
# Generate an XML report of the code coverage
|
||||||
"--cov-report=xml", \
|
"--cov-report=xml", \
|
||||||
# Generate an HTML report of the code coverage
|
# Generate an HTML report of the code coverage
|
||||||
|
|
|
||||||
770
README.md
770
README.md
|
|
@ -1,7 +1,7 @@
|
||||||
[](https://github.com/hacs/integration)
|
[](https://github.com/hacs/integration)
|
||||||

|

|
||||||
<!-- ALL-CONTRIBUTORS-BADGE:START - Do not remove or modify this section -->
|
<!-- ALL-CONTRIBUTORS-BADGE:START - Do not remove or modify this section -->
|
||||||
[](#contributors-)
|
[](#contributors-)
|
||||||
<!-- ALL-CONTRIBUTORS-BADGE:END -->
|
<!-- ALL-CONTRIBUTORS-BADGE:END -->
|
||||||
|
|
||||||
# 🌞 Adaptive Lighting: Enhance Your Home's Atmosphere with Smart, Sun-Synchronized Lighting 🌙
|
# 🌞 Adaptive Lighting: Enhance Your Home's Atmosphere with Smart, Sun-Synchronized Lighting 🌙
|
||||||
|
|
@ -24,6 +24,7 @@ https://github.com/basnijholt/adaptive-lighting/assets/6897215/68908f7d-fbf1-499
|
||||||
|
|
||||||
[[ToC](#books-table-of-contents)]
|
[[ToC](#books-table-of-contents)]
|
||||||
|
|
||||||
|
<!-- SECTION:features:START -->
|
||||||
## :bulb: Features
|
## :bulb: Features
|
||||||
|
|
||||||
When initially turning on a light that is controlled by Adaptive Lighting, the `light.turn_on` service call is intercepted, and the light's brightness and color are automatically adjusted based on the sun's position.
|
When initially turning on a light that is controlled by Adaptive Lighting, the `light.turn_on` service call is intercepted, and the light's brightness and color are automatically adjusted based on the sun's position.
|
||||||
|
|
@ -35,7 +36,9 @@ Adaptive Lighting provides four switches (using "living_room" as an example comp
|
||||||
- `switch.adaptive_lighting_sleep_mode_living_room`: Activate "sleep mode" 😴 and set custom sleep_brightness and sleep_color_temp.
|
- `switch.adaptive_lighting_sleep_mode_living_room`: Activate "sleep mode" 😴 and set custom sleep_brightness and sleep_color_temp.
|
||||||
- `switch.adaptive_lighting_adapt_brightness_living_room`: Enable or disable brightness adaptation 🔆 for supported lights.
|
- `switch.adaptive_lighting_adapt_brightness_living_room`: Enable or disable brightness adaptation 🔆 for supported lights.
|
||||||
- `switch.adaptive_lighting_adapt_color_living_room`: Enable or disable color adaptation 🌈 for supported lights.
|
- `switch.adaptive_lighting_adapt_color_living_room`: Enable or disable color adaptation 🌈 for supported lights.
|
||||||
|
<!-- SECTION:features:END -->
|
||||||
|
|
||||||
|
<!-- SECTION:manual-control:START -->
|
||||||
### :control_knobs: Regain Manual Control
|
### :control_knobs: Regain Manual Control
|
||||||
|
|
||||||
Adaptive Lighting is designed to automatically detect when you or another source (e.g., automation) manually changes light settings 🕹️.
|
Adaptive Lighting is designed to automatically detect when you or another source (e.g., automation) manually changes light settings 🕹️.
|
||||||
|
|
@ -45,7 +48,26 @@ This feature is available when `take_over_control` is enabled.
|
||||||
Additionally, enabling `detect_non_ha_changes` allows Adaptive Lighting to detect all state changes, including those made outside of Home Assistant, by comparing the light's state to its previously used settings.
|
Additionally, enabling `detect_non_ha_changes` allows Adaptive Lighting to detect all state changes, including those made outside of Home Assistant, by comparing the light's state to its previously used settings.
|
||||||
The `adaptive_lighting.manual_control` event is fired when a light is marked as "manually controlled," allowing for integration with automations 🤖.
|
The `adaptive_lighting.manual_control` event is fired when a light is marked as "manually controlled," allowing for integration with automations 🤖.
|
||||||
|
|
||||||
|
With `expand_light_groups: false`, manual control belongs to the group. A direct member change cannot pause adaptation for only that member; use group-level manual control or enable expansion for individual tracking.
|
||||||
|
Explicit member targets in Adaptive Lighting services stay individual targets and do not mark or command the whole group.
|
||||||
|
Changing expansion at runtime discards tracking and pending adaptation for targets no longer used by any profile.
|
||||||
|
|
||||||
|
The Adaptive Lighting switch exposes these read-only attributes for its lights:
|
||||||
|
|
||||||
|
- `manual_control`: lights with any attribute marked as manually controlled.
|
||||||
|
- `manual_control_brightness`: lights with brightness marked as manually controlled.
|
||||||
|
- `manual_control_color`: lights with color marked as manually controlled.
|
||||||
|
|
||||||
|
These lists report manual-control flags. Actual adaptation also depends on `take_over_control_mode` and the brightness/color adaptation switches. For example, under the default `pause_all` mode, manually changing only brightness leaves `manual_control_color` empty while pausing both brightness and color adaptation. Under `pause_changed`, color can continue adapting.
|
||||||
|
|
||||||
|
The attributes are absent when the Adaptive Lighting switch is off. Use a fallback when checking them in templates:
|
||||||
|
|
||||||
|
```jinja
|
||||||
|
{{ 'light.bedroom' in (state_attr('switch.adaptive_lighting_bedroom', 'manual_control_brightness') or []) }}
|
||||||
|
```
|
||||||
|
|
||||||
> ⚠️ **_Caution: Some lights might falsely indicate an 'on' state, which could result in lights turning on unexpectedly. Disable `detect_non_ha_changes` if you encounter such issues._**
|
> ⚠️ **_Caution: Some lights might falsely indicate an 'on' state, which could result in lights turning on unexpectedly. Disable `detect_non_ha_changes` if you encounter such issues._**
|
||||||
|
<!-- SECTION:manual-control:END -->
|
||||||
|
|
||||||
## :books: Table of Contents
|
## :books: Table of Contents
|
||||||
|
|
||||||
|
|
@ -62,6 +84,7 @@ The `adaptive_lighting.manual_control` event is fired when a light is marked as
|
||||||
- [Additional Information](#additional-information)
|
- [Additional Information](#additional-information)
|
||||||
- [:sos: Troubleshooting](#sos-troubleshooting)
|
- [:sos: Troubleshooting](#sos-troubleshooting)
|
||||||
- [:exclamation: Common Problems & Solutions](#exclamation-common-problems--solutions)
|
- [:exclamation: Common Problems & Solutions](#exclamation-common-problems--solutions)
|
||||||
|
- [:bulb: Lights Only Adapt After Reloading](#bulb-lights-only-adapt-after-reloading)
|
||||||
- [:bulb: Lights Not Responding or Turning On by Themselves](#bulb-lights-not-responding-or-turning-on-by-themselves)
|
- [:bulb: Lights Not Responding or Turning On by Themselves](#bulb-lights-not-responding-or-turning-on-by-themselves)
|
||||||
- [:signal_strength: WiFi Networks](#signal_strength-wifi-networks)
|
- [:signal_strength: WiFi Networks](#signal_strength-wifi-networks)
|
||||||
- [:spider_web: Zigbee, Z-Wave, and Other Mesh Networks](#spider_web-zigbee-z-wave-and-other-mesh-networks)
|
- [:spider_web: Zigbee, Z-Wave, and Other Mesh Networks](#spider_web-zigbee-z-wave-and-other-mesh-networks)
|
||||||
|
|
@ -89,7 +112,7 @@ adaptive_lighting:
|
||||||
lights:
|
lights:
|
||||||
- light.living_room_lights
|
- light.living_room_lights
|
||||||
```
|
```
|
||||||
Note: If you plan to strictly use the UI, the `adaptive_lighting:` entry must still be added to the YAML.
|
If you configure Adaptive Lighting through the UI, no `adaptive_lighting:` entry is needed in `configuration.yaml`. Instances configured through YAML must be edited in YAML.
|
||||||
|
|
||||||
Transform your home's atmosphere with Adaptive Lighting 🏠, and experience the benefits of intelligent, sun-synchronized lighting today!
|
Transform your home's atmosphere with Adaptive Lighting 🏠, and experience the benefits of intelligent, sun-synchronized lighting today!
|
||||||
|
|
||||||
|
|
@ -99,55 +122,60 @@ All of the configuration options are listed below, along with their default valu
|
||||||
The YAML and frontend configuration methods support all of the options listed below.
|
The YAML and frontend configuration methods support all of the options listed below.
|
||||||
|
|
||||||
<!-- CODE:START -->
|
<!-- CODE:START -->
|
||||||
<!-- from homeassistant.components.adaptive_lighting import _docs_helpers -->
|
<!-- from adaptive_lighting._docs_helpers import generate_config_markdown_table -->
|
||||||
<!-- print(_docs_helpers.generate_config_markdown_table()) -->
|
<!-- print(generate_config_markdown_table()) -->
|
||||||
<!-- CODE:END -->
|
<!-- CODE:END -->
|
||||||
|
|
||||||
<!-- OUTPUT:START -->
|
<!-- OUTPUT:START -->
|
||||||
<!-- ⚠️ This content is auto-generated by `markdown-code-runner`. -->
|
<!-- ⚠️ This content is auto-generated by `markdown-code-runner`. -->
|
||||||
| Variable name | Description | Default | Type |
|
| Variable name | Description | Default | Type |
|
||||||
|:-------------------------------|:-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|:---------------|:---------------------------------------|
|
|:--------------------------------------------|:----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|:---------------|:----------------------------------------|
|
||||||
| `lights` | List of light entity_ids to be controlled (may be empty). 🌟 | `[]` | list of `entity_id`s |
|
| `lights` | List of light entity_ids to be controlled (may be empty). 🌟 | `[]` | list of `entity_id`s |
|
||||||
| `interval` | Frequency to adapt the lights, in seconds. 🔄 | `90` | `int > 0` |
|
| `interval` | Frequency to adapt the lights, in seconds. 🔄 | `90` | `int > 0` |
|
||||||
| `transition` | Duration of transition when lights change, in seconds. 🕑 | `45` | `float` 0-6553 |
|
| `transition` | Duration of transition when lights change, in seconds. 🕑 | `45` | `float` 0-6553 |
|
||||||
| `initial_transition` | Duration of the first transition when lights turn from `off` to `on` in seconds. ⏲️ | `1` | `float` 0-6553 |
|
| `initial_transition` | Duration of the first transition when lights turn from `off` to `on` in seconds. ⏲️ | `1` | `float` 0-6553 |
|
||||||
| `min_brightness` | Minimum brightness percentage. 💡 | `1` | `int` 1-100 |
|
| `min_brightness` | Minimum brightness percentage. 💡 | `1` | `int` 1-100 |
|
||||||
| `max_brightness` | Maximum brightness percentage. 💡 | `100` | `int` 1-100 |
|
| `max_brightness` | Maximum brightness percentage. 💡 | `100` | `int` 1-100 |
|
||||||
| `min_color_temp` | Warmest color temperature in Kelvin. 🔥 | `2000` | `int` 1000-10000 |
|
| `min_color_temp` | Warmest color temperature in Kelvin. 🔥 | `2000` | `int` 1000-10000 |
|
||||||
| `max_color_temp` | Coldest color temperature in Kelvin. ❄️ | `5500` | `int` 1000-10000 |
|
| `max_color_temp` | Coldest color temperature in Kelvin. ❄️ | `5500` | `int` 1000-10000 |
|
||||||
| `prefer_rgb_color` | Whether to prefer RGB color adjustment over light color temperature when possible. 🌈 | `False` | `bool` |
|
| `prefer_rgb_color` | Whether to prefer RGB color adjustment over light color temperature when possible. 🌈 | `False` | `bool` |
|
||||||
| `sleep_brightness` | Brightness percentage of lights in sleep mode. 😴 | `1` | `int` 1-100 |
|
| `sleep_brightness` | Brightness percentage of lights in sleep mode. 😴 | `1` | `int` 1-100 |
|
||||||
| `sleep_rgb_or_color_temp` | Use either `"rgb_color"` or `"color_temp"` in sleep mode. 🌙 | `color_temp` | one of `['color_temp', 'rgb_color']` |
|
| `sleep_rgb_or_color_temp` | Use either `"rgb_color"` or `"color_temp"` in sleep mode. 🌙 | `color_temp` | one of `['color_temp', 'rgb_color']` |
|
||||||
| `sleep_color_temp` | Color temperature in sleep mode (used when `sleep_rgb_or_color_temp` is `color_temp`) in Kelvin. 😴 | `1000` | `int` 1000-10000 |
|
| `sleep_color_temp` | Color temperature in sleep mode (used when `sleep_rgb_or_color_temp` is `color_temp`) in Kelvin. 😴 | `1000` | `int` 1000-10000 |
|
||||||
| `sleep_rgb_color` | RGB color in sleep mode (used when `sleep_rgb_or_color_temp` is "rgb_color"). 🌈 | `[255, 56, 0]` | RGB color |
|
| `sleep_rgb_color` | RGB color in sleep mode (used when `sleep_rgb_or_color_temp` is "rgb_color"). 🌈 | `[255, 56, 0]` | RGB color |
|
||||||
| `sleep_transition` | Duration of transition when "sleep mode" is toggled in seconds. 😴 | `1` | `float` 0-6553 |
|
| `sleep_transition` | Duration of transition when "sleep mode" is toggled in seconds. 😴 | `1` | `float` 0-6553 |
|
||||||
| `transition_until_sleep` | When enabled, Adaptive Lighting will treat sleep settings as the minimum, transitioning to these values after sunset. 🌙 | `False` | `bool` |
|
| `transition_until_sleep` | When enabled, Adaptive Lighting will treat sleep settings as the minimum, transitioning to these values after sunset. 🌙 | `False` | `bool` |
|
||||||
| `sunrise_time` | Set a fixed time (HH:MM:SS) for sunrise. 🌅 | `None` | `str` |
|
| `sunrise_time` | Set a fixed time (HH:MM:SS) for sunrise. 🌅 | `None` | `str` |
|
||||||
| `min_sunrise_time` | Set the earliest virtual sunrise time (HH:MM:SS), allowing for later sunrises. 🌅 | `None` | `str` |
|
| `min_sunrise_time` | Set the earliest virtual sunrise time (HH:MM:SS), allowing for later sunrises. 🌅 | `None` | `str` |
|
||||||
| `max_sunrise_time` | Set the latest virtual sunrise time (HH:MM:SS), allowing for earlier sunrises. 🌅 | `None` | `str` |
|
| `max_sunrise_time` | Set the latest virtual sunrise time (HH:MM:SS), allowing for earlier sunrises. 🌅 | `None` | `str` |
|
||||||
| `sunrise_offset` | Adjust sunrise time with a positive or negative offset in seconds. ⏰ | `0` | `int` |
|
| `sunrise_offset` | Adjust sunrise time with a positive or negative offset in seconds. ⏰ | `0` | `int` |
|
||||||
| `sunset_time` | Set a fixed time (HH:MM:SS) for sunset. 🌇 | `None` | `str` |
|
| `sunset_time` | Set a fixed time (HH:MM:SS) for sunset. 🌇 | `None` | `str` |
|
||||||
| `min_sunset_time` | Set the earliest virtual sunset time (HH:MM:SS), allowing for later sunsets. 🌇 | `None` | `str` |
|
| `min_sunset_time` | Set the earliest virtual sunset time (HH:MM:SS), allowing for later sunsets. 🌇 | `None` | `str` |
|
||||||
| `max_sunset_time` | Set the latest virtual sunset time (HH:MM:SS), allowing for earlier sunsets. 🌇 | `None` | `str` |
|
| `max_sunset_time` | Set the latest virtual sunset time (HH:MM:SS), allowing for earlier sunsets. 🌇 | `None` | `str` |
|
||||||
| `sunset_offset` | Adjust sunset time with a positive or negative offset in seconds. ⏰ | `0` | `int` |
|
| `sunset_offset` | Adjust sunset time with a positive or negative offset in seconds. ⏰ | `0` | `int` |
|
||||||
| `brightness_mode` | Brightness mode to use. Possible values are `default`, `linear`, and `tanh` (uses `brightness_mode_time_dark` and `brightness_mode_time_light`). 📈 | `default` | one of `['default', 'linear', 'tanh']` |
|
| `brightness_mode` | Brightness mode to use. Possible values are `default`, `linear`, and `tanh` (uses `brightness_mode_time_dark` and `brightness_mode_time_light`). 📈 | `default` | one of `['default', 'linear', 'tanh']` |
|
||||||
| `brightness_mode_time_dark` | (Ignored if `brightness_mode='default'`) The duration in seconds to ramp up/down the brightness before/after sunrise/sunset. 📈📉 | `900` | `int` |
|
| `brightness_mode_time_dark` | (Ignored if `brightness_mode='default'`) The duration in seconds to ramp up/down the brightness before/after sunrise/sunset. 📈📉 | `900` | `int` |
|
||||||
| `brightness_mode_time_light` | (Ignored if `brightness_mode='default'`) The duration in seconds to ramp up/down the brightness after/before sunrise/sunset. 📈📉. | `3600` | `int` |
|
| `brightness_mode_time_light` | (Ignored if `brightness_mode='default'`) The duration in seconds to ramp up/down the brightness after/before sunrise/sunset. 📈📉. | `3600` | `int` |
|
||||||
| `take_over_control` | Disable Adaptive Lighting if another source calls `light.turn_on` while lights are on and being adapted. Note that this calls `homeassistant.update_entity` every `interval`! 🔒 | `True` | `bool` |
|
| `take_over_control` | Pause adaptation of individual lights and hand over (manual) control to other sources that issue `light.turn_on` calls for lights that are on. 🔒 | `True` | `bool` |
|
||||||
| `detect_non_ha_changes` | Detects and halts adaptations for non-`light.turn_on` state changes. Needs `take_over_control` enabled. 🕵️ Caution: ⚠️ Some lights might falsely indicate an 'on' state, which could result in lights turning on unexpectedly. Disable this feature if you encounter such issues. | `False` | `bool` |
|
| `take_over_control_mode` | The adaptation pausing mode when other sources change brightness and/or color of lights. `pause_all` always pauses both brightness and color adaptation. `pause_changed` pauses the adaptation of only the changed attributes and continues adapting unchanged attributes, e.g., continues color adaptation when only brightness was changed. | `pause_all` | one of `['pause_all', 'pause_changed']` |
|
||||||
| `autoreset_control_seconds` | Automatically reset the manual control after a number of seconds. Set to 0 to disable. ⏲️ | `0` | `int` 0-31536000 |
|
| `detect_non_ha_changes` | Detects and halts adaptations for non-`light.turn_on` state changes. Needs `take_over_control` enabled. 🕵️ Caution: ⚠️ Some lights might falsely indicate an 'on' state, which could result in lights turning on unexpectedly. Note that this calls `homeassistant.update_entity` every `interval`! Disable this feature if you encounter such issues. | `False` | `bool` |
|
||||||
| `only_once` | Adapt lights only when they are turned on (`true`) or keep adapting them (`false`). 🔄 | `False` | `bool` |
|
| `autoreset_control_seconds` | Automatically reset the manual control after a number of seconds. Set to 0 to disable. ⏲️ | `0` | `int` 0-31536000 |
|
||||||
| `adapt_only_on_bare_turn_on` | When turning lights on initially. If set to `true`, AL adapts only if `light.turn_on` is invoked without specifying color or brightness. ❌🌈 This e.g., prevents adaptation when activating a scene. If `false`, AL adapts regardless of the presence of color or brightness in the initial `service_data`. Needs `take_over_control` enabled. 🕵️ | `False` | `bool` |
|
| `only_once` | Adapt lights only when they are turned on (`true`) or keep adapting them (`false`). 🔄 | `False` | `bool` |
|
||||||
| `separate_turn_on_commands` | Use separate `light.turn_on` calls for color and brightness, needed for some light types. 🔀 | `False` | `bool` |
|
| `adapt_only_on_bare_turn_on` | When turning lights on initially. If set to `true`, AL adapts only if `light.turn_on` is invoked without specifying color or brightness. ❌🌈 This e.g., prevents adaptation when activating a scene and marks the light as manually controlled. If `false`, AL adapts regardless of the presence of color or brightness in the initial `service_data`. Needs `take_over_control` enabled. 🕵️ | `False` | `bool` |
|
||||||
| `send_split_delay` | Delay (ms) between `separate_turn_on_commands` for lights that don't support simultaneous brightness and color setting. ⏲️ | `0` | `int` 0-10000 |
|
| `manual_control_on_external_turn_on` | Treat turn-ons without a matching Home Assistant `light.turn_on` context as manual control. Normal manual-control resets apply. Still allows `detect_non_ha_changes` for already-on lights. Needs `take_over_control` enabled. 🕵️ | `False` | `bool` |
|
||||||
| `adapt_delay` | Wait time (seconds) between light turn on and Adaptive Lighting applying changes. Might help to avoid flickering. ⏲️ | `0` | `float > 0` |
|
| `reset_manual_control_on_sleep_mode_change` | Reset manual control when the sleep mode switch is toggled. Set to `false` to preserve manual control across sleep mode changes. 😴 | `True` | `bool` |
|
||||||
| `skip_redundant_commands` | Skip sending adaptation commands whose target state already equals the light's known state. Minimizes network traffic and improves the adaptation responsivity in some situations. 📉Disable if physical light states get out of sync with HA's recorded state. | `False` | `bool` |
|
| `separate_turn_on_commands` | Use separate `light.turn_on` calls for color and brightness, needed for some light types. 🔀 | `False` | `bool` |
|
||||||
| `intercept` | Intercept and adapt `light.turn_on` calls to enabling instantaneous color and brightness adaptation. 🏎️ Disable for lights that do not support `light.turn_on` with color and brightness. | `True` | `bool` |
|
| `send_split_delay` | Delay (ms) between `separate_turn_on_commands` for lights that don't support simultaneous brightness and color setting. ⏲️ | `0` | `int` 0-10000 |
|
||||||
| `multi_light_intercept` | Intercept and adapt `light.turn_on` calls that target multiple lights. ➗⚠️ This might result in splitting up a single `light.turn_on` call into multiple calls, e.g., when lights are in different switches. Requires `intercept` to be enabled. | `True` | `bool` |
|
| `adapt_delay` | Wait time (seconds) between light turn on and Adaptive Lighting applying changes. Might help to avoid flickering. ⏲️ | `0` | `float > 0` |
|
||||||
| `include_config_in_attributes` | Show all options as attributes on the switch in Home Assistant when set to `true`. 📝 | `False` | `bool` |
|
| `skip_redundant_commands` | Skip sending adaptation commands whose target state already equals the light's known state. Minimizes network traffic and improves the adaptation responsivity in some situations. 📉Disable if physical light states get out of sync with HA's recorded state. | `False` | `bool` |
|
||||||
|
| `intercept` | Intercept and adapt `light.turn_on` calls to enabling instantaneous color and brightness adaptation. 🏎️ Disable for lights that do not support `light.turn_on` with color and brightness. | `True` | `bool` |
|
||||||
|
| `multi_light_intercept` | Intercept and adapt `light.turn_on` calls that target multiple lights. ➗⚠️ This might result in splitting up a single `light.turn_on` call into multiple calls, e.g., when lights are in different switches. Requires `intercept` to be enabled. | `True` | `bool` |
|
||||||
|
| `include_config_in_attributes` | Show all options as attributes on the switch in Home Assistant when set to `true`. 📝 | `False` | `bool` |
|
||||||
|
| `expand_light_groups` | Expand light groups to their members (`true`, default). Set `false` to send commands to the group and track manual control for the group. Explicit member targets in services stay individual targets. | `True` | `bool` |
|
||||||
|
|
||||||
<!-- OUTPUT:END -->
|
<!-- OUTPUT:END -->
|
||||||
|
|
||||||
|
<!-- SECTION:config-example-full:START -->
|
||||||
Full example:
|
Full example:
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
|
|
@ -174,54 +202,60 @@ adaptive_lighting:
|
||||||
only_once: false
|
only_once: false
|
||||||
|
|
||||||
```
|
```
|
||||||
|
<!-- SECTION:config-example-full:END -->
|
||||||
|
|
||||||
### :hammer_and_wrench: Services
|
### :hammer_and_wrench: Services
|
||||||
|
|
||||||
#### `adaptive_lighting.apply`
|
#### `adaptive_lighting.apply`
|
||||||
|
|
||||||
`adaptive_lighting.apply` applies Adaptive Lighting settings to lights on demand.
|
`adaptive_lighting.apply` applies Adaptive Lighting settings to lights on demand.
|
||||||
|
Provide a switch in `entity_id`, a list of `lights`, or both.
|
||||||
|
|
||||||
<!-- CODE:START -->
|
<!-- CODE:START -->
|
||||||
<!-- from homeassistant.components.adaptive_lighting import _docs_helpers -->
|
<!-- from adaptive_lighting._docs_helpers import generate_apply_markdown_table -->
|
||||||
<!-- print(_docs_helpers.generate_apply_markdown_table()) -->
|
<!-- print(generate_apply_markdown_table()) -->
|
||||||
<!-- CODE:END -->
|
<!-- CODE:END -->
|
||||||
|
|
||||||
<!-- OUTPUT:START -->
|
<!-- OUTPUT:START -->
|
||||||
<!-- ⚠️ This content is auto-generated by `markdown-code-runner`. -->
|
<!-- ⚠️ This content is auto-generated by `markdown-code-runner`. -->
|
||||||
| Service data attribute | Description | Required | Type |
|
| Service data attribute | Description | Required | Type |
|
||||||
|:-------------------------|:-------------------------------------------------------------------------------------|:-----------|:---------------------|
|
|:-------------------------|:--------------------------------------------------------------------------------------|:-----------|:---------------------|
|
||||||
| `entity_id` | The `entity_id` of the switch with the settings to apply. 📝 | ✅ | list of `entity_id`s |
|
| `entity_id` | The `entity_id` of the switch with the settings to apply. 📝 | ❌ | list of `entity_id`s |
|
||||||
| `lights` | A light (or list of lights) to apply the settings to. 💡 | ❌ | list of `entity_id`s |
|
| `lights` | A light (or list of lights) to apply the settings to. 💡 | ❌ | list of `entity_id`s |
|
||||||
| `transition` | Duration of transition when lights change, in seconds. 🕑 | ❌ | `float` 0-6553 |
|
| `transition` | Duration of transition when lights change, in seconds. 🕑 | ❌ | `float` 0-6553 |
|
||||||
| `adapt_brightness` | Whether to adapt the brightness of the light. 🌞 | ❌ | bool |
|
| `adapt_brightness` | Whether to adapt the brightness of the light. 🌞 | ❌ | bool |
|
||||||
| `adapt_color` | Whether to adapt the color on supporting lights. 🌈 | ❌ | bool |
|
| `adapt_color` | Whether to adapt the color on supporting lights. 🌈 | ❌ | bool |
|
||||||
| `prefer_rgb_color` | Whether to prefer RGB color adjustment over light color temperature when possible. 🌈 | ❌ | bool |
|
| `prefer_rgb_color` | Whether to prefer RGB color adjustment over light color temperature when possible. 🌈 | ❌ | bool |
|
||||||
| `turn_on_lights` | Whether to turn on lights that are currently off. 🔆 | ❌ | bool |
|
| `turn_on_lights` | Whether to turn on lights that are currently off. 🔆 | ❌ | bool |
|
||||||
|
|
||||||
<!-- OUTPUT:END -->
|
<!-- OUTPUT:END -->
|
||||||
#### `adaptive_lighting.set_manual_control`
|
#### `adaptive_lighting.set_manual_control`
|
||||||
|
|
||||||
`adaptive_lighting.set_manual_control` can mark (or unmark) whether a light is "manually controlled", meaning that when a light has `manual_control`, the light is not adapted.
|
`adaptive_lighting.set_manual_control` can mark (or unmark) whether a light is "manually controlled", meaning that when a light has `manual_control`, the light is not adapted.
|
||||||
|
Provide a switch in `entity_id`, a list of `lights`, or both.
|
||||||
|
|
||||||
<!-- CODE:START -->
|
<!-- CODE:START -->
|
||||||
<!-- from homeassistant.components.adaptive_lighting import _docs_helpers -->
|
<!-- from adaptive_lighting._docs_helpers import generate_set_manual_control_markdown_table -->
|
||||||
<!-- print(_docs_helpers.generate_set_manual_control_markdown_table()) -->
|
<!-- print(generate_set_manual_control_markdown_table()) -->
|
||||||
<!-- CODE:END -->
|
<!-- CODE:END -->
|
||||||
|
|
||||||
<!-- OUTPUT:START -->
|
<!-- OUTPUT:START -->
|
||||||
<!-- ⚠️ This content is auto-generated by `markdown-code-runner`. -->
|
<!-- ⚠️ This content is auto-generated by `markdown-code-runner`. -->
|
||||||
| Service data attribute | Description | Required | Type |
|
| Service data attribute | Description | Required | Type |
|
||||||
|:-------------------------|:-----------------------------------------------------------------------------------------------|:-----------|:---------------------|
|
|:-------------------------|:-----------------------------------------------------------------------------------------------------------------------------------------------------------------------|:-----------|:-----------------------------------------|
|
||||||
| `entity_id` | The `entity_id` of the switch in which to (un)mark the light as being `manually controlled`. 📝 | ✅ | list of `entity_id`s |
|
| `entity_id` | The `entity_id` of the switch in which to (un)mark the light as being `manually controlled`. 📝 | ❌ | list of `entity_id`s |
|
||||||
| `lights` | entity_id(s) of lights, if not specified, all lights in the switch are selected. 💡 | ❌ | list of `entity_id`s |
|
| `lights` | entity_id(s) of lights, if not specified, all lights in the switch are selected. 💡 | ❌ | list of `entity_id`s |
|
||||||
| `manual_control` | Whether to add ("true") or remove ("false") the light from the "manual_control" list. 🔒 | ❌ | bool |
|
| `manual_control` | Whether to add ("true") or remove ("false") all adapted attributes of the light from the "manual_control" list, or the name of an attribute for selective addition. 🔒 | ❌ | bool or one of `['brightness', 'color']` |
|
||||||
|
|
||||||
<!-- OUTPUT:END -->
|
<!-- OUTPUT:END -->
|
||||||
|
|
||||||
|
<!-- SECTION:change-switch-settings:START -->
|
||||||
#### `adaptive_lighting.change_switch_settings`
|
#### `adaptive_lighting.change_switch_settings`
|
||||||
|
|
||||||
`adaptive_lighting.change_switch_settings` (new in 1.7.0) Change any of the above configuration options of Adaptive Lighting (such as `sunrise_time` or `prefer_rgb_color`) with a service call directly from your script/automation.
|
`adaptive_lighting.change_switch_settings` (new in 1.7.0) Change any of the above configuration options of Adaptive Lighting (such as `sunrise_time` or `prefer_rgb_color`) with a service call directly from your script/automation.
|
||||||
|
|
||||||
> ⚠️ **_Note: These settings will **not** be written to your config and will be reset on restart of Home Assistant! You can see the current settings in the `switch.adaptive_lighting_XXX` attributes if `include_config_in_attributes` is enabled._**
|
> [!WARNING]
|
||||||
|
> These settings will **not** be written to your config and will be reset on restart of Home Assistant! You can see the current settings in the `switch.adaptive_lighting_XXX` attributes if `include_config_in_attributes` is enabled.
|
||||||
|
|
||||||
| Service data attribute | Required | Description |
|
| Service data attribute | Required | Description |
|
||||||
| --------------------------------------------------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
| --------------------------------------------------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
||||||
|
|
@ -236,106 +270,465 @@ The following keys are disallowed:
|
||||||
| `lights` | You may call `adaptive_lighting.apply` with your lights or create a new config instead. |
|
| `lights` | You may call `adaptive_lighting.apply` with your lights or create a new config instead. |
|
||||||
| `name` | You can rename your switch's display name in Home Assistant's UI. |
|
| `name` | You can rename your switch's display name in Home Assistant's UI. |
|
||||||
| `interval` | The interval is used only once when the config loads. A config change and restart are required. |
|
| `interval` | The interval is used only once when the config loads. A config change and restart are required. |
|
||||||
|
<!-- SECTION:change-switch-settings:END -->
|
||||||
|
|
||||||
|
<!-- SECTION:automation-examples:START -->
|
||||||
## :robot: Automation examples
|
## :robot: Automation examples
|
||||||
|
|
||||||
<details>
|
Replace every entity ID below with the IDs from your Home Assistant instance. Fresh Adaptive Lighting profiles use child IDs such as `switch.adaptive_lighting_living_room_sleep_mode`; profiles created before the device-based entity change may retain older IDs.
|
||||||
<summary>Reset the <code>manual_control</code> status of a light after an hour.</summary>
|
|
||||||
|
Blocks that begin with `- alias` are entries for `automations.yaml`. Blocks with a top-level `script:` or `adaptive_lighting:` key are complete `configuration.yaml` examples. If your configuration uses `script: !include scripts.yaml`, omit that outer key and place its contents in `scripts.yaml`.
|
||||||
|
|
||||||
|
Five examples also have blueprints with selectors, so you can configure them without editing YAML:
|
||||||
|
|
||||||
|
| Blueprint | Purpose | Import |
|
||||||
|
| --- | --- | --- |
|
||||||
|
| [Sleep mode](https://github.com/basnijholt/adaptive-lighting/blob/main/blueprints/automation/sleep_mode.yaml) | Synchronize several profiles with one sleep-mode helper. | [](https://my.home-assistant.io/redirect/blueprint_import/?blueprint_url=https%3A%2F%2Fgithub.com%2Fbasnijholt%2Fadaptive-lighting%2Fblob%2Fmain%2Fblueprints%2Fautomation%2Fsleep_mode.yaml) |
|
||||||
|
| [Minimum brightness](https://github.com/basnijholt/adaptive-lighting/blob/main/blueprints/automation/turn_off_at_minimum.yaml) | Turn one light off when its target crosses down to the minimum. | [](https://my.home-assistant.io/redirect/blueprint_import/?blueprint_url=https%3A%2F%2Fgithub.com%2Fbasnijholt%2Fadaptive-lighting%2Fblob%2Fmain%2Fblueprints%2Fautomation%2Fturn_off_at_minimum.yaml) |
|
||||||
|
| [Pause at minimum](https://github.com/basnijholt/adaptive-lighting/blob/main/blueprints/automation/manual_control_at_minimum.yaml) | Pause brightness through manual control, using its existing reset behavior. | [](https://my.home-assistant.io/redirect/blueprint_import/?blueprint_url=https%3A%2F%2Fgithub.com%2Fbasnijholt%2Fadaptive-lighting%2Fblob%2Fmain%2Fblueprints%2Fautomation%2Fmanual_control_at_minimum.yaml) |
|
||||||
|
| [Schedule profile](https://github.com/basnijholt/adaptive-lighting/blob/main/blueprints/automation/schedule_profile.yaml) | Apply brightness and color temperature from Schedule helper blocks. | [](https://my.home-assistant.io/redirect/blueprint_import/?blueprint_url=https%3A%2F%2Fgithub.com%2Fbasnijholt%2Fadaptive-lighting%2Fblob%2Fmain%2Fblueprints%2Fautomation%2Fschedule_profile.yaml) |
|
||||||
|
| [Daylight limit](https://github.com/basnijholt/adaptive-lighting/blob/main/blueprints/automation/daylight_limit.yaml) | Lower maximum brightness in strong daylight. | [](https://my.home-assistant.io/redirect/blueprint_import/?blueprint_url=https%3A%2F%2Fgithub.com%2Fbasnijholt%2Fadaptive-lighting%2Fblob%2Fmain%2Fblueprints%2Fautomation%2Fdaylight_limit.yaml) |
|
||||||
|
|
||||||
|
Click a blueprint's import badge, confirm the import in Home Assistant, then create an automation and select your entities. You can also copy its source link into **Settings → Automations & scenes → Blueprints → Import Blueprint**. Read the matching example below for setup and behavior. Each blueprint is tested through Home Assistant alongside its YAML example. The built-in manual-control timeout needs no automation; the scripts below remain useful as actions in your own automations.
|
||||||
|
|
||||||
|
`change_switch_settings` updates a profile while its main switch is off, but lights are adapted only while that switch is on. It preserves manual-control flags, so manually controlled lights remain paused.
|
||||||
|
|
||||||
|
<details markdown="1">
|
||||||
|
<summary>Automatically reset manual control after one hour.</summary>
|
||||||
|
|
||||||
|
Use the built-in timeout so every new manual change renews a single timer for that light:
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
- alias: "Adaptive lighting: reset manual_control after 1 hour"
|
adaptive_lighting:
|
||||||
mode: parallel
|
- name: "Living Room"
|
||||||
trigger:
|
lights:
|
||||||
platform: event
|
- light.living_room
|
||||||
event_type: adaptive_lighting.manual_control
|
autoreset_control_seconds: 3600
|
||||||
variables:
|
|
||||||
light: "{{ trigger.event.data.entity_id }}"
|
|
||||||
switch: "{{ trigger.event.data.switch }}"
|
|
||||||
action:
|
|
||||||
- delay: "01:00:00"
|
|
||||||
- condition: template
|
|
||||||
value_template: "{{ light in state_attr(switch, 'manual_control') }}"
|
|
||||||
- service: adaptive_lighting.set_manual_control
|
|
||||||
data:
|
|
||||||
entity_id: "{{ switch }}"
|
|
||||||
lights: "{{ light }}"
|
|
||||||
manual_control: false
|
|
||||||
```
|
```
|
||||||
|
|
||||||
|
This is a top-level `configuration.yaml` example. The timer clears manual control and immediately readapts a light when both it and the Adaptive Lighting switch are on.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
<details>
|
<details markdown="1">
|
||||||
<summary>Toggle multiple Adaptive Lighting switches to "sleep mode" using an <code>input_boolean.sleep_mode</code>.</summary>
|
<summary>Toggle multiple Adaptive Lighting switches to "sleep mode" using an <code>input_boolean.sleep_mode</code>.</summary>
|
||||||
|
|
||||||
|
Also available as a [blueprint](https://github.com/basnijholt/adaptive-lighting/blob/main/blueprints/automation/sleep_mode.yaml). Select an input boolean and the sleep-mode switches it should control.
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
- alias: "Adaptive lighting: toggle 'sleep mode'"
|
- alias: "Adaptive lighting: toggle 'sleep mode'"
|
||||||
|
mode: restart
|
||||||
trigger:
|
trigger:
|
||||||
- platform: state
|
- platform: state
|
||||||
entity_id: input_boolean.sleep_mode
|
entity_id: input_boolean.sleep_mode
|
||||||
- platform: homeassistant
|
- platform: homeassistant
|
||||||
event: start # in case the states aren't properly restored
|
event: start # apply the helper's restored state
|
||||||
variables:
|
variables:
|
||||||
sleep_mode: "{{ states('input_boolean.sleep_mode') }}"
|
sleep_mode: "{{ states('input_boolean.sleep_mode') }}"
|
||||||
action:
|
conditions:
|
||||||
service: "switch.turn_{{ sleep_mode }}"
|
- condition: template
|
||||||
entity_id:
|
value_template: "{{ sleep_mode in ['on', 'off'] }}"
|
||||||
- switch.adaptive_lighting_sleep_mode_living_room
|
actions:
|
||||||
- switch.adaptive_lighting_sleep_mode_bedroom
|
- action: "switch.turn_{{ sleep_mode }}"
|
||||||
```
|
|
||||||
|
|
||||||
Set your sunrise and sunset time based on your alarm. The below script sets sunset_time exactly 12 hours after the custom sunrise time.
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
iphone_carly_wakeup:
|
|
||||||
alias: iPhone Carly Wakeup
|
|
||||||
sequence:
|
|
||||||
- condition: state
|
|
||||||
entity_id: input_boolean.carly_iphone_wakeup
|
|
||||||
state: "off"
|
|
||||||
- service: input_datetime.set_datetime
|
|
||||||
target:
|
|
||||||
entity_id: input_datetime.carly_iphone_wakeup
|
|
||||||
data:
|
|
||||||
time: '{{ now().strftime("%H:%M:%S") }}'
|
|
||||||
- service: input_boolean.turn_on
|
|
||||||
target:
|
|
||||||
entity_id: input_boolean.carly_iphone_wakeup
|
|
||||||
- repeat:
|
|
||||||
count: >
|
|
||||||
{{ (states.switch
|
|
||||||
| map(attribute="entity_id")
|
|
||||||
| select(">","switch.adaptive_lighting_al_")
|
|
||||||
| select("<", "switch.adaptive_lighting_al_z")
|
|
||||||
| join(",")
|
|
||||||
).split(",") | length }}
|
|
||||||
sequence:
|
|
||||||
- service: adaptive_lighting.change_switch_settings
|
|
||||||
data:
|
|
||||||
entity_id: switch.adaptive_lighting_al_den_ceilingfan_lights
|
|
||||||
sunrise_time: '{{ now().strftime("%H:%M:%S") }}'
|
|
||||||
sunset_time: >
|
|
||||||
{{ (as_timestamp(now()) + 12*60*60) | timestamp_custom("%H:%M:%S") }}
|
|
||||||
- service: script.turn_on
|
|
||||||
target:
|
|
||||||
entity_id: script.run_wakeup_routine
|
|
||||||
- service: input_boolean.turn_off
|
|
||||||
target:
|
target:
|
||||||
entity_id:
|
entity_id:
|
||||||
- input_boolean.carly_iphone_winddown
|
- switch.adaptive_lighting_living_room_sleep_mode
|
||||||
- input_boolean.carly_iphone_bedtime
|
- switch.adaptive_lighting_bedroom_sleep_mode
|
||||||
- service: input_datetime.set_datetime
|
|
||||||
target:
|
|
||||||
entity_id: input_datetime.wakeup_time
|
|
||||||
data:
|
|
||||||
time: '{{ now().strftime("%H:%M:%S") }}'
|
|
||||||
- service: script.adaptive_lighting_disable_sleep_mode
|
|
||||||
mode: queued
|
|
||||||
icon: mdi:weather-sunset
|
|
||||||
max: 10
|
|
||||||
```
|
```
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
|
<details markdown="1">
|
||||||
|
<summary>Turn a light off when its adaptive brightness target reaches the minimum.</summary>
|
||||||
|
|
||||||
|
Prefer a form over editing YAML? Import the [blueprint](https://github.com/basnijholt/adaptive-lighting/blob/main/blueprints/automation/turn_off_at_minimum.yaml) in Home Assistant under **Settings → Automations & scenes → Blueprints → Import Blueprint**. Select your profile, its matching adapt brightness switch, one light managed by that profile, and its minimum brightness percentage. Create one automation per light. If you change the profile's minimum later, update the automation too. The blueprint and YAML example below have the same behavior.
|
||||||
|
|
||||||
|
The Adaptive Lighting switch already exposes its calculated `brightness_pct` target. Use its state changes to choose a power policy in an automation; no custom event is needed. This example assumes `min_brightness: 1`. Change `minimum_pct` to match your profile, and replace the switch and light entity IDs with your own.
|
||||||
|
|
||||||
|
The comparison uses the same rounded 0–255 brightness as an adaptation command. Comparing floating-point percentages for exact equality can miss the minimum between updates. This detects the calculated target reaching its minimum command, not the bulb finishing a transition or reaching its physical dimming limit.
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
- alias: "Adaptive lighting: turn off at minimum brightness"
|
||||||
|
mode: single
|
||||||
|
triggers:
|
||||||
|
- trigger: state
|
||||||
|
entity_id: switch.adaptive_lighting_living_room
|
||||||
|
attribute: brightness_pct
|
||||||
|
conditions:
|
||||||
|
- condition: state
|
||||||
|
entity_id:
|
||||||
|
- switch.adaptive_lighting_living_room
|
||||||
|
- switch.adaptive_lighting_living_room_adapt_brightness
|
||||||
|
state: "on"
|
||||||
|
- condition: template
|
||||||
|
value_template: >-
|
||||||
|
{% set minimum_pct = 1 %}
|
||||||
|
{% set minimum = (minimum_pct * 255 / 100) | round(0) %}
|
||||||
|
{% set before = trigger.from_state.attributes.get('brightness_pct')
|
||||||
|
if trigger.from_state else none %}
|
||||||
|
{% set after = trigger.to_state.attributes.get('brightness_pct')
|
||||||
|
if trigger.to_state else none %}
|
||||||
|
{{ is_number(before) and is_number(after)
|
||||||
|
and (before | float * 255 / 100) | round(0) > minimum
|
||||||
|
and (after | float * 255 / 100) | round(0) <= minimum }}
|
||||||
|
- condition: state
|
||||||
|
entity_id: light.living_room
|
||||||
|
state: "on"
|
||||||
|
- condition: template
|
||||||
|
value_template: >-
|
||||||
|
{{ 'light.living_room' not in
|
||||||
|
(state_attr('switch.adaptive_lighting_living_room', 'manual_control') or []) }}
|
||||||
|
actions:
|
||||||
|
- action: light.turn_off
|
||||||
|
target:
|
||||||
|
entity_id: light.living_room
|
||||||
|
```
|
||||||
|
|
||||||
|
This runs once when a valid target crosses down into the minimum range. It skips lights currently marked as manually controlled, does not repeatedly turn them off while the target remains low, and does not turn them back on later. Startup or re-enabling the profile while already at the minimum is not a new crossing. Sleep mode can also cause a crossing if its brightness is at or below the chosen minimum. Changing sleep mode clears manual control by default; set `reset_manual_control_on_sleep_mode_change: false` if you want to preserve it. For a bedtime-only policy, trigger directly on the sleep-mode switch changing to `on` instead.
|
||||||
|
|
||||||
|
</details>
|
||||||
|
|
||||||
|
<details markdown="1">
|
||||||
|
<summary>Pause brightness at the minimum using manual control.</summary>
|
||||||
|
|
||||||
|
Use the [blueprint](https://github.com/basnijholt/adaptive-lighting/blob/main/blueprints/automation/manual_control_at_minimum.yaml) to mark an individual light's brightness as manually controlled when the calculated target reaches its minimum. The light stays on and the adaptation switches stay enabled. Set `take_over_control_mode: pause_changed` on the profile to keep adapting color; the default `pause_all` pauses both attributes.
|
||||||
|
|
||||||
|
Select the profile, its adapt-brightness switch, and a light managed by it. Match the minimum percentage to the profile's `min_brightness`. This YAML example assumes `min_brightness: 1`; change `minimum_pct` and the entity IDs to match your setup.
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
- alias: "Adaptive lighting: pause brightness at minimum"
|
||||||
|
mode: single
|
||||||
|
variables:
|
||||||
|
minimum_pct: 1
|
||||||
|
minimum: "{{ (minimum_pct * 255 / 100) | round(0) }}"
|
||||||
|
triggers:
|
||||||
|
- trigger: state
|
||||||
|
entity_id: switch.adaptive_lighting_living_room
|
||||||
|
attribute: brightness_pct
|
||||||
|
conditions:
|
||||||
|
- condition: state
|
||||||
|
entity_id:
|
||||||
|
- switch.adaptive_lighting_living_room
|
||||||
|
- switch.adaptive_lighting_living_room_adapt_brightness
|
||||||
|
state: "on"
|
||||||
|
- condition: template
|
||||||
|
value_template: >-
|
||||||
|
{% set before = trigger.from_state.attributes.get('brightness_pct')
|
||||||
|
if trigger.from_state else none %}
|
||||||
|
{% set after = trigger.to_state.attributes.get('brightness_pct')
|
||||||
|
if trigger.to_state else none %}
|
||||||
|
{{ is_number(before) and is_number(after)
|
||||||
|
and (before | float * 255 / 100) | round(0) > minimum
|
||||||
|
and (after | float * 255 / 100) | round(0) <= minimum }}
|
||||||
|
- condition: state
|
||||||
|
entity_id: light.living_room
|
||||||
|
state: "on"
|
||||||
|
- condition: template
|
||||||
|
value_template: >-
|
||||||
|
{{ 'light.living_room' not in
|
||||||
|
(state_attr('switch.adaptive_lighting_living_room', 'manual_control_brightness') or []) }}
|
||||||
|
actions:
|
||||||
|
- variables:
|
||||||
|
light_session: "{{ states.light.living_room.last_changed.isoformat() }}"
|
||||||
|
profile_session: "{{ states.switch.adaptive_lighting_living_room.last_changed.isoformat() }}"
|
||||||
|
brightness_session: "{{ states.switch.adaptive_lighting_living_room_adapt_brightness.last_changed.isoformat() }}"
|
||||||
|
- wait_template: >-
|
||||||
|
{% set target = state_attr('switch.adaptive_lighting_living_room', 'brightness_pct') %}
|
||||||
|
{{ not is_state('light.living_room', 'on')
|
||||||
|
or not is_state('switch.adaptive_lighting_living_room', 'on')
|
||||||
|
or not is_state('switch.adaptive_lighting_living_room_adapt_brightness', 'on')
|
||||||
|
or states.light.living_room.last_changed.isoformat() != light_session
|
||||||
|
or states.switch.adaptive_lighting_living_room.last_changed.isoformat() != profile_session
|
||||||
|
or states.switch.adaptive_lighting_living_room_adapt_brightness.last_changed.isoformat() != brightness_session
|
||||||
|
or not is_number(target) or (target | float * 255 / 100) | round(0) > minimum
|
||||||
|
or 'light.living_room' in
|
||||||
|
(state_attr('switch.adaptive_lighting_living_room', 'manual_control_brightness') or [])
|
||||||
|
or (state_attr('light.living_room', 'brightness') | float(256)) <= minimum }}
|
||||||
|
timeout: "00:05:00"
|
||||||
|
continue_on_timeout: false
|
||||||
|
- condition: template
|
||||||
|
value_template: >-
|
||||||
|
{% set target = state_attr('switch.adaptive_lighting_living_room', 'brightness_pct') %}
|
||||||
|
{{ is_state('light.living_room', 'on')
|
||||||
|
and is_state('switch.adaptive_lighting_living_room', 'on')
|
||||||
|
and is_state('switch.adaptive_lighting_living_room_adapt_brightness', 'on')
|
||||||
|
and states.light.living_room.last_changed.isoformat() == light_session
|
||||||
|
and states.switch.adaptive_lighting_living_room.last_changed.isoformat() == profile_session
|
||||||
|
and states.switch.adaptive_lighting_living_room_adapt_brightness.last_changed.isoformat() == brightness_session
|
||||||
|
and is_number(target) and (target | float * 255 / 100) | round(0) <= minimum
|
||||||
|
and (state_attr('light.living_room', 'brightness') | float(256)) <= minimum
|
||||||
|
and 'light.living_room' not in
|
||||||
|
(state_attr('switch.adaptive_lighting_living_room', 'manual_control_brightness') or []) }}
|
||||||
|
- action: adaptive_lighting.set_manual_control
|
||||||
|
data:
|
||||||
|
entity_id: switch.adaptive_lighting_living_room
|
||||||
|
lights: light.living_room
|
||||||
|
manual_control: >-
|
||||||
|
{{ true if 'light.living_room' in
|
||||||
|
(state_attr('switch.adaptive_lighting_living_room', 'manual_control_color') or [])
|
||||||
|
else 'brightness' }}
|
||||||
|
```
|
||||||
|
|
||||||
|
The comparison uses the rounded 0–255 target, so it does not depend on sampling an exact floating-point minimum. It waits up to five minutes for the light to report that minimum before marking manual control, so the final dimming command can complete. Reported brightness does not prove physical fade completion. If the light, profile, or adapt-brightness switch is toggled, the target rises, brightness is marked manually controlled elsewhere, or brightness never reaches the minimum, the attempt is abandoned. Lights that cannot report the configured minimum will not be paused. Existing manual color flags are preserved, and lights whose brightness is already manually controlled are left alone. Manual-control state is shared for lights managed by multiple profiles, so their existing takeover policies still apply.
|
||||||
|
|
||||||
|
The usual resets apply: turning the light off, the configured `autoreset_control_seconds` timeout, clearing manual control through its service, and existing profile/sleep-switch reset behavior. After a reset, normal adaptation can increase brightness again. This runs once per downward crossing; resetting while the target remains at its minimum does not immediately mark the light again. Startup at the minimum is not a crossing either.
|
||||||
|
|
||||||
|
This pauses further dimming as well as brightening. To pause brightness immediately after a brightness change made through Home Assistant, use `take_over_control_mode: pause_changed` with `take_over_control: true`; that needs no additional automation.
|
||||||
|
|
||||||
|
</details>
|
||||||
|
|
||||||
|
<details markdown="1">
|
||||||
|
<summary>Set sunrise and sunset from an alarm.</summary>
|
||||||
|
|
||||||
|
Call this script from your alarm automation. It sets one Adaptive Lighting profile's sunrise to the current time and its sunset to 12 hours later on the local clock.
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
script:
|
||||||
|
set_adaptive_lighting_alarm_times:
|
||||||
|
alias: "Adaptive lighting: set times from alarm"
|
||||||
|
variables:
|
||||||
|
alarm_time: '{{ now().strftime("%H:%M:%S") }}'
|
||||||
|
sequence:
|
||||||
|
- action: adaptive_lighting.change_switch_settings
|
||||||
|
data:
|
||||||
|
entity_id: switch.adaptive_lighting_alarm_lights
|
||||||
|
sunrise_time: "{{ alarm_time }}"
|
||||||
|
sunset_time: >
|
||||||
|
{{ (strptime(alarm_time, "%H:%M:%S") + timedelta(hours=12))
|
||||||
|
.strftime("%H:%M:%S") }}
|
||||||
|
```
|
||||||
|
|
||||||
|
</details>
|
||||||
|
|
||||||
|
<details markdown="1">
|
||||||
|
<summary>Use a Schedule helper as a step-based custom lighting profile.</summary>
|
||||||
|
|
||||||
|
Also available as a [blueprint](https://github.com/basnijholt/adaptive-lighting/blob/main/blueprints/automation/schedule_profile.yaml). Select the main profile switch and your Schedule helper.
|
||||||
|
|
||||||
|
Create a [Schedule helper](https://www.home-assistant.io/integrations/schedule/) named `Adaptive Lighting Profile`. Add time blocks with Additional data like this:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
brightness_pct: 20
|
||||||
|
color_temp_kelvin: 2500
|
||||||
|
```
|
||||||
|
|
||||||
|
Use different values for each block. The automation below applies the active block whenever the schedule state or its attributes change. Setting both brightness limits and both color temperature limits to the same value keeps each block at its setpoint. Outside a block, the configured Adaptive Lighting settings are restored.
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
- alias: "Adaptive lighting: apply scheduled profile"
|
||||||
|
triggers:
|
||||||
|
- trigger: state
|
||||||
|
entity_id: schedule.adaptive_lighting_profile
|
||||||
|
- trigger: homeassistant
|
||||||
|
event: start
|
||||||
|
actions:
|
||||||
|
- choose:
|
||||||
|
- conditions:
|
||||||
|
- condition: state
|
||||||
|
entity_id: schedule.adaptive_lighting_profile
|
||||||
|
state: "on"
|
||||||
|
sequence:
|
||||||
|
- action: adaptive_lighting.change_switch_settings
|
||||||
|
data:
|
||||||
|
entity_id: switch.adaptive_lighting_living_room
|
||||||
|
min_brightness: >
|
||||||
|
{{ state_attr('schedule.adaptive_lighting_profile', 'brightness_pct') | int(1) }}
|
||||||
|
max_brightness: >
|
||||||
|
{{ state_attr('schedule.adaptive_lighting_profile', 'brightness_pct') | int(1) }}
|
||||||
|
min_color_temp: >
|
||||||
|
{{ state_attr('schedule.adaptive_lighting_profile', 'color_temp_kelvin') | int(2000) }}
|
||||||
|
max_color_temp: >
|
||||||
|
{{ state_attr('schedule.adaptive_lighting_profile', 'color_temp_kelvin') | int(2000) }}
|
||||||
|
default:
|
||||||
|
- action: adaptive_lighting.change_switch_settings
|
||||||
|
data:
|
||||||
|
entity_id: switch.adaptive_lighting_living_room
|
||||||
|
use_defaults: configuration
|
||||||
|
mode: restart
|
||||||
|
```
|
||||||
|
|
||||||
|
This creates step changes at block boundaries. It does not interpolate between schedule points. Runtime settings also reset when Home Assistant restarts, so the startup trigger reapplies the active block. The default branch restores every configured setting; restore only the four fields explicitly if other automations also change runtime settings.
|
||||||
|
|
||||||
|
</details>
|
||||||
|
|
||||||
|
<details markdown="1">
|
||||||
|
<summary>Reduce daytime brightness when an illuminance sensor detects strong daylight.</summary>
|
||||||
|
|
||||||
|
Also available as a [blueprint](https://github.com/basnijholt/adaptive-lighting/blob/main/blueprints/automation/daylight_limit.yaml). Select the profile and sensor, then set the lux thresholds and brightness limits. The high lux threshold must exceed the low threshold; the blueprint does nothing if they are reversed or equal.
|
||||||
|
|
||||||
|
Keep a low configured `min_brightness` for late night and let an automation lower `max_brightness` while the room has ample daylight. Use a sensor that is not significantly affected by the controlled lights to avoid a feedback loop.
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
- alias: "Adaptive lighting: limit brightness in daylight"
|
||||||
|
triggers:
|
||||||
|
- trigger: numeric_state
|
||||||
|
entity_id: sensor.living_room_illuminance
|
||||||
|
above: 300
|
||||||
|
- trigger: numeric_state
|
||||||
|
entity_id: sensor.living_room_illuminance
|
||||||
|
below: 200
|
||||||
|
- trigger: homeassistant
|
||||||
|
event: start
|
||||||
|
id: startup
|
||||||
|
actions:
|
||||||
|
- if:
|
||||||
|
- condition: trigger
|
||||||
|
id: startup
|
||||||
|
then:
|
||||||
|
- wait_template: >
|
||||||
|
{{ is_number(states('sensor.living_room_illuminance')) }}
|
||||||
|
timeout: "00:05:00"
|
||||||
|
continue_on_timeout: false
|
||||||
|
- choose:
|
||||||
|
- conditions:
|
||||||
|
- condition: numeric_state
|
||||||
|
entity_id: sensor.living_room_illuminance
|
||||||
|
above: 300
|
||||||
|
sequence:
|
||||||
|
- action: adaptive_lighting.change_switch_settings
|
||||||
|
data:
|
||||||
|
entity_id: switch.adaptive_lighting_living_room
|
||||||
|
max_brightness: 30
|
||||||
|
- conditions:
|
||||||
|
- condition: numeric_state
|
||||||
|
entity_id: sensor.living_room_illuminance
|
||||||
|
below: 200
|
||||||
|
sequence:
|
||||||
|
- action: adaptive_lighting.change_switch_settings
|
||||||
|
data:
|
||||||
|
entity_id: switch.adaptive_lighting_living_room
|
||||||
|
max_brightness: 100
|
||||||
|
mode: restart
|
||||||
|
```
|
||||||
|
|
||||||
|
The separate 200 and 300 lux thresholds add hysteresis. After a restart, the automation waits for a numeric sensor state before evaluating it. If the initial value is between the thresholds, Adaptive Lighting keeps its configured maximum. Replace `30` and `100` with your desired daytime limit and normal maximum.
|
||||||
|
|
||||||
|
`min_brightness` and `max_brightness` are the solar-midnight and daytime endpoints of the brightness curve. Setting `min_brightness` higher than `max_brightness` is supported and creates an inverted curve that is brighter at night and dimmer during the day. If you only want a daytime limit, keep the reduced maximum at or above the configured minimum.
|
||||||
|
|
||||||
|
</details>
|
||||||
|
|
||||||
|
<details markdown="1">
|
||||||
|
<summary>Turn on Hue-controlled lights with the current Adaptive Lighting values.</summary>
|
||||||
|
|
||||||
|
For a Hue button exposed to Home Assistant, call this script from the button automation. It turns on the listed lights directly with the current Adaptive Lighting brightness and color.
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
script:
|
||||||
|
living_room_adaptive_lighting:
|
||||||
|
alias: "Living room: adaptive lighting"
|
||||||
|
sequence:
|
||||||
|
- action: adaptive_lighting.apply
|
||||||
|
data:
|
||||||
|
entity_id: switch.adaptive_lighting_living_room
|
||||||
|
lights:
|
||||||
|
- light.living_room_ceiling
|
||||||
|
- light.living_room_table
|
||||||
|
turn_on_lights: true
|
||||||
|
transition: 0
|
||||||
|
```
|
||||||
|
|
||||||
|
This requires Home Assistant to receive the button event. The one-shot `apply` call works while the main Adaptive Lighting switch is off, turns on the listed lights, and applies values even if a light is marked as manually controlled. It leaves the profile switch and manual-control state unchanged.
|
||||||
|
|
||||||
|
Adaptive Lighting does not update scenes stored on the Hue Bridge, so scenes activated only inside Hue cannot use this script and retain Hue's operation when Home Assistant is unavailable.
|
||||||
|
|
||||||
|
</details>
|
||||||
|
|
||||||
|
<details markdown="1">
|
||||||
|
<summary>Use a fixed RGB stage before sleep mode.</summary>
|
||||||
|
|
||||||
|
This script starts sleep mode with a fixed dim red color, waits 30 minutes, and then restores the configured Adaptive Lighting settings. The main profile switch and the light must already be on.
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
script:
|
||||||
|
adaptive_lighting_bedtime:
|
||||||
|
alias: "Adaptive lighting: bedtime"
|
||||||
|
mode: restart
|
||||||
|
sequence:
|
||||||
|
- action: adaptive_lighting.change_switch_settings
|
||||||
|
data:
|
||||||
|
entity_id: switch.adaptive_lighting_bedroom
|
||||||
|
sleep_rgb_or_color_temp: rgb_color
|
||||||
|
sleep_rgb_color: [255, 56, 0]
|
||||||
|
sleep_brightness: 20
|
||||||
|
- action: switch.turn_on
|
||||||
|
target:
|
||||||
|
entity_id: switch.adaptive_lighting_bedroom_sleep_mode
|
||||||
|
- delay: "00:30:00"
|
||||||
|
- action: adaptive_lighting.change_switch_settings
|
||||||
|
data:
|
||||||
|
entity_id: switch.adaptive_lighting_bedroom
|
||||||
|
use_defaults: configuration
|
||||||
|
```
|
||||||
|
|
||||||
|
The light must support RGB color. The first stage uses a fixed brightness rather than following the normal brightness curve. When sleep mode changes from off to on, the default `reset_manual_control_on_sleep_mode_change: true` returns manually controlled lights to Adaptive Lighting control so they receive the stage. If you disable that option, manually controlled lights remain paused. Restoring configuration defaults resets every runtime setting on this Adaptive Lighting switch, so restore only the sleep fields explicitly if other automations also change runtime settings.
|
||||||
|
|
||||||
|
Stopping this script or reloading scripts during the delay prevents the final action, leaving the runtime overrides active. To recover, call `adaptive_lighting.change_switch_settings` for the profile with `use_defaults: configuration`. A Home Assistant restart reloads the configured settings.
|
||||||
|
|
||||||
|
</details>
|
||||||
|
|
||||||
|
<details markdown="1">
|
||||||
|
<summary>Run a fixed virtual day across midnight.</summary>
|
||||||
|
|
||||||
|
Fixed virtual sunrise and sunset times can cross midnight. This configuration ramps an indoor garden from its minimum at 16:00 to its maximum at 22:00, then back to its minimum at 04:00.
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
adaptive_lighting:
|
||||||
|
- name: "Indoor Garden"
|
||||||
|
lights:
|
||||||
|
- light.indoor_garden
|
||||||
|
sunrise_time: "16:00:00"
|
||||||
|
sunset_time: "04:00:00"
|
||||||
|
min_brightness: 10
|
||||||
|
max_brightness: 100
|
||||||
|
brightness_mode: linear
|
||||||
|
brightness_mode_time_dark: 0
|
||||||
|
brightness_mode_time_light: 21600 # 6 hours
|
||||||
|
```
|
||||||
|
|
||||||
|
Adaptive Lighting changes brightness and color while a light is on; it does not manage the light's power schedule. This separate automation turns the example light on and off:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
- alias: "Indoor garden: power schedule"
|
||||||
|
triggers:
|
||||||
|
- trigger: time
|
||||||
|
at: "16:00:00"
|
||||||
|
id: turn_on
|
||||||
|
- trigger: time
|
||||||
|
at: "04:00:00"
|
||||||
|
id: turn_off
|
||||||
|
- trigger: homeassistant
|
||||||
|
event: start
|
||||||
|
id: startup
|
||||||
|
actions:
|
||||||
|
- choose:
|
||||||
|
- conditions:
|
||||||
|
- condition: trigger
|
||||||
|
id: turn_on
|
||||||
|
sequence:
|
||||||
|
- action: light.turn_on
|
||||||
|
target:
|
||||||
|
entity_id: light.indoor_garden
|
||||||
|
- conditions:
|
||||||
|
- condition: trigger
|
||||||
|
id: startup
|
||||||
|
- condition: time
|
||||||
|
after: "16:00:00"
|
||||||
|
before: "04:00:00"
|
||||||
|
sequence:
|
||||||
|
- action: light.turn_on
|
||||||
|
target:
|
||||||
|
entity_id: light.indoor_garden
|
||||||
|
default:
|
||||||
|
- action: light.turn_off
|
||||||
|
target:
|
||||||
|
entity_id: light.indoor_garden
|
||||||
|
```
|
||||||
|
|
||||||
|
Use `min_sunrise_time`, `max_sunrise_time`, `min_sunset_time`, or `max_sunset_time` instead when you want to constrain astronomical sunrise or sunset to an earliest or latest time rather than replace it.
|
||||||
|
|
||||||
|
</details>
|
||||||
|
<!-- SECTION:automation-examples:END -->
|
||||||
|
|
||||||
## Additional Information
|
## Additional Information
|
||||||
|
|
||||||
For more details on adding the integration and setting options, refer to the [documentation of the PR](https://deploy-preview-14877--home-assistant-docs.netlify.app/integrations/adaptive_lighting/) and [this video tutorial on Reddit](https://www.reddit.com/r/homeassistant/comments/jabhso/ha_has_it_before_apple_has_even_finished_it_i/).
|
For more details on adding the integration and setting options, refer to the [documentation of the PR](https://deploy-preview-14877--home-assistant-docs.netlify.app/integrations/adaptive_lighting/) and [this video tutorial on Reddit](https://www.reddit.com/r/homeassistant/comments/jabhso/ha_has_it_before_apple_has_even_finished_it_i/).
|
||||||
|
|
@ -344,6 +737,7 @@ Adaptive Lighting was initially inspired by @claytonjn's [hass-circadian\_lighti
|
||||||
|
|
||||||
## :sos: Troubleshooting
|
## :sos: Troubleshooting
|
||||||
|
|
||||||
|
<!-- SECTION:troubleshooting-intro:START -->
|
||||||
Encountering issues? Enable debug logging in your `configuration.yaml`:
|
Encountering issues? Enable debug logging in your `configuration.yaml`:
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
|
|
@ -355,8 +749,28 @@ logger:
|
||||||
|
|
||||||
After the issue occurs, create a new issue report with the log (`/config/home-assistant.log`).
|
After the issue occurs, create a new issue report with the log (`/config/home-assistant.log`).
|
||||||
|
|
||||||
|
For support, use Home Assistant's **Download diagnostics** action on the
|
||||||
|
Adaptive Lighting config entry. The download is an on-demand snapshot of the
|
||||||
|
profile's current switches and currently tracked light targets. It does not
|
||||||
|
refresh group membership or predict targets a disabled profile would use after
|
||||||
|
being enabled. It does not create live sensors; existing switch attributes
|
||||||
|
remain the interface for automations.
|
||||||
|
The reported last adaptation values are the shared manager's latest retained
|
||||||
|
value for each attribute. They can come from different commands and do not
|
||||||
|
represent one sent command or the current desired state.
|
||||||
|
<!-- SECTION:troubleshooting-intro:END -->
|
||||||
|
|
||||||
|
<!-- SECTION:common-problems:START -->
|
||||||
### :exclamation: Common Problems & Solutions
|
### :exclamation: Common Problems & Solutions
|
||||||
|
|
||||||
|
#### :bulb: Lights Only Adapt After Reloading
|
||||||
|
|
||||||
|
If lights stop adapting after you turn them on with a physical switch or a Zigbee-bound remote, check the Adaptive Lighting switch's `manual_control` attribute. With `take_over_control: true` and `detect_non_ha_changes: false`, a turn-on without a matching Home Assistant `light.turn_on` call marks the light as manually controlled. Reloading clears that state, but the next physical turn-on can trigger it again.
|
||||||
|
|
||||||
|
To adapt these turn-ons while still detecting later manual changes, enable `detect_non_ha_changes` and leave `manual_control_on_external_turn_on` disabled. This requires the light integration to report its state reliably. If you want Adaptive Lighting to keep adapting regardless of manual changes, disable `take_over_control` along with the options that require it: `detect_non_ha_changes`, `adapt_only_on_bare_turn_on`, and `manual_control_on_external_turn_on`.
|
||||||
|
|
||||||
|
This explains the physical-switch case in [#1056](https://github.com/basnijholt/adaptive-lighting/issues/1056), but not every report in that thread. If the light is not listed in `manual_control`, include diagnostics and debug logs from the failed turn-on when reporting it. Lights returning from `unavailable` after a power cut are a separate case from an `off` to `on` state change.
|
||||||
|
|
||||||
#### :bulb: Lights Not Responding or Turning On by Themselves
|
#### :bulb: Lights Not Responding or Turning On by Themselves
|
||||||
|
|
||||||
Adaptive Lighting sends more commands to lights than a typical human user would. If your light control network is unhealthy, you may experience:
|
Adaptive Lighting sends more commands to lights than a typical human user would. If your light control network is unhealthy, you may experience:
|
||||||
|
|
@ -371,6 +785,8 @@ Addressing these issues will significantly improve your Home Assistant experienc
|
||||||
In case lights are suddenly turning on by themselves, this is most likely due to the light incorrectly reporting an "on" state to Home Assistant, leading to an undesired Adaptive Lighting action.
|
In case lights are suddenly turning on by themselves, this is most likely due to the light incorrectly reporting an "on" state to Home Assistant, leading to an undesired Adaptive Lighting action.
|
||||||
To prevent adapting in cases *where the state of the light is suddenly "on" and only adapt if there is an associated `light.turn_on` service call*, set `detect_non_ha_changes: false`.
|
To prevent adapting in cases *where the state of the light is suddenly "on" and only adapt if there is an associated `light.turn_on` service call*, set `detect_non_ha_changes: false`.
|
||||||
|
|
||||||
|
To keep detecting manual changes to lights that are already on while leaving unmatched `off` to `on` state events unchanged, enable `manual_control_on_external_turn_on`. Matching uses the exact context of the most recently recorded `light.turn_on` call. Some integrations replace or omit that context, so Adaptive Lighting cannot distinguish every physical versus Home Assistant turn-on source.
|
||||||
|
|
||||||
#### :signal_strength: WiFi Networks
|
#### :signal_strength: WiFi Networks
|
||||||
|
|
||||||
Ensure your light bulbs have a strong WiFi connection. If the signal strength is less than -70dBm, the connection may be weak and prone to dropping messages.
|
Ensure your light bulbs have a strong WiFi connection. If the signal strength is less than -70dBm, the connection may be weak and prone to dropping messages.
|
||||||
|
|
@ -378,7 +794,7 @@ Ensure your light bulbs have a strong WiFi connection. If the signal strength is
|
||||||
#### :spider_web: Zigbee, Z-Wave, and Other Mesh Networks
|
#### :spider_web: Zigbee, Z-Wave, and Other Mesh Networks
|
||||||
|
|
||||||
Mesh networks typically require powered devices to act as routers, relaying messages back to the central coordinator (the radio connected to Home Assistant).
|
Mesh networks typically require powered devices to act as routers, relaying messages back to the central coordinator (the radio connected to Home Assistant).
|
||||||
Philips lights usually function as routers, while Ikea, Sengled, and generic Tuya bulbs often do not.
|
Most modern lights function as routers, very early models may not.
|
||||||
If devices become unresponsive or fail to respond to commands, Adaptive Lighting can exacerbate the issue.
|
If devices become unresponsive or fail to respond to commands, Adaptive Lighting can exacerbate the issue.
|
||||||
Use network maps (available in ZHA, zigbee2mqtt, deCONZ, and ZWaveJS UI) to evaluate your network health.
|
Use network maps (available in ZHA, zigbee2mqtt, deCONZ, and ZWaveJS UI) to evaluate your network health.
|
||||||
Smart plugs can be an affordable way to add more routers to your network.
|
Smart plugs can be an affordable way to add more routers to your network.
|
||||||
|
|
@ -393,6 +809,11 @@ Expose only the group (not individual bulbs) in Home Assistant Dashboards and ex
|
||||||
|
|
||||||
> :warning: **If you control lights individually, `manual_control` cannot behave correctly! If you need to control lights individually as well, use a [Home Assistant Light Group](https://www.home-assistant.io/integrations/group/).**
|
> :warning: **If you control lights individually, `manual_control` cannot behave correctly! If you need to control lights individually as well, use a [Home Assistant Light Group](https://www.home-assistant.io/integrations/group/).**
|
||||||
|
|
||||||
|
When mixing group types, avoid nesting: do not add integration-level groups (e.g., Zigbee2MQTT groups) to a [Home Assistant Light Group](https://www.home-assistant.io/integrations/group/) that is managed by Adaptive Lighting, and do not nest Home Assistant Light Groups inside each other.
|
||||||
|
Adaptive Lighting cannot expand an integration-level group into its member lights, and nested groups make it unpredictable which entity Adaptive Lighting tracks and adapts, which can prevent lights from being adapted at all (see [#1378](https://github.com/basnijholt/adaptive-lighting/issues/1378)).
|
||||||
|
Instead, add the individual light entities or a single Zigbee group directly to the Adaptive Lighting configuration.
|
||||||
|
Also note that bulbs turned on via a Zigbee group broadcast may briefly flash their last (cached) brightness and color before the adapted values arrive; this happens inside the bulbs and cannot be prevented by Home Assistant or Adaptive Lighting.
|
||||||
|
|
||||||
#### :rainbow: Light Colors Not Matching
|
#### :rainbow: Light Colors Not Matching
|
||||||
|
|
||||||
Bulbs from different manufacturers or models may have varying color temperature specifications. For instance, if you have two Adaptive Lighting configurations—one with only Philips Hue White Ambiance bulbs and another with a mix of Philips Hue White Ambiance and Sengled bulbs—the Philips Hue bulbs may appear to have different color temperatures despite having identical settings.
|
Bulbs from different manufacturers or models may have varying color temperature specifications. For instance, if you have two Adaptive Lighting configurations—one with only Philips Hue White Ambiance bulbs and another with a mix of Philips Hue White Ambiance and Sengled bulbs—the Philips Hue bulbs may appear to have different color temperatures despite having identical settings.
|
||||||
|
|
@ -412,7 +833,11 @@ These lights are known to exhibit disadvantageous behaviour due to firmware bugs
|
||||||
- Ikea Tradfri bulbs/drivers (and related Ikea smart light products)
|
- Ikea Tradfri bulbs/drivers (and related Ikea smart light products)
|
||||||
- Unsupported simultaneous transition of brightness and color: When receiving such a command, they switch the brightness instantly and only transition the color. To get smooth transitions of both brightness and color, enable `separate_turn_on_commands`.
|
- Unsupported simultaneous transition of brightness and color: When receiving such a command, they switch the brightness instantly and only transition the color. To get smooth transitions of both brightness and color, enable `separate_turn_on_commands`.
|
||||||
- Unresponsiveness during color transitions: No other commands are processed during an ongoing color transition, e.g., turn-off commands are ignored and lights stay on despite being reported as off to Home Assistant. The default config with long transitions thus results in long periods of unresponsiveness. To work around this, disable transitions by setting `transition` to `0`, and increase the adaptation frequency by setting `interval` to a short time, e.g., `15` seconds, to retain the impression of smooth continuous adaptations. Keeping the `initial_transition` is recommended for a smooth fade-in (lights are usually not turned off momentarily after being turned on, in which case a short period of unresponsiveness is tolerable).
|
- Unresponsiveness during color transitions: No other commands are processed during an ongoing color transition, e.g., turn-off commands are ignored and lights stay on despite being reported as off to Home Assistant. The default config with long transitions thus results in long periods of unresponsiveness. To work around this, disable transitions by setting `transition` to `0`, and increase the adaptation frequency by setting `interval` to a short time, e.g., `15` seconds, to retain the impression of smooth continuous adaptations. Keeping the `initial_transition` is recommended for a smooth fade-in (lights are usually not turned off momentarily after being turned on, in which case a short period of unresponsiveness is tolerable).
|
||||||
|
- [Lonsonho ZB-RGBCW](https://www.zigbee2mqtt.io/devices/ZB-RGBCW.html#lonsonho-zb-rgbcw)
|
||||||
|
- Some Zigbee2MQTT/eWeLight firmware combinations do not turn the bulb on when the initial `light.turn_on` call includes brightness or color, although later adjustments work. Disable `intercept` for affected bulbs.
|
||||||
|
<!-- SECTION:common-problems:END -->
|
||||||
|
|
||||||
|
<!-- SECTION:graphs:START -->
|
||||||
## :bar_chart: Graphs!
|
## :bar_chart: Graphs!
|
||||||
These graphs were generated using the values calculated by the Adaptive Lighting sensor/switch(es).
|
These graphs were generated using the values calculated by the Adaptive Lighting sensor/switch(es).
|
||||||
|
|
||||||
|
|
@ -427,10 +852,12 @@ These graphs were generated using the values calculated by the Adaptive Lighting
|
||||||
|
|
||||||
### While using `transition_until_sleep: true`
|
### While using `transition_until_sleep: true`
|
||||||

|

|
||||||
|
<!-- SECTION:graphs:END -->
|
||||||
|
|
||||||
|
<!-- SECTION:brightness-modes:START -->
|
||||||
### Custom brightness ramps using `brightness_mode` with `"linear"` and `"tanh"`
|
### Custom brightness ramps using `brightness_mode` with `"linear"` and `"tanh"`
|
||||||
|
|
||||||
<details>
|
<details markdown="1">
|
||||||
<summary>Enhance your control over brightness transitions during sunrise and sunset with <code>brightness_mode</code> (click here to learn more 🧠).</summary>
|
<summary>Enhance your control over brightness transitions during sunrise and sunset with <code>brightness_mode</code> (click here to learn more 🧠).</summary>
|
||||||
|
|
||||||
With Adaptive Lighting, you can set a `brightness_mode` to specify how the brightness changes during sunrise and sunset. The `brightness_mode` can be set to `"default"` ([as illustrated in other graphs above](#high_brightness-brightness)), `"linear"`, or `"tanh"`. If you choose to deviate from the `"default"` mode, you can adjust `brightness_mode_time_dark` and `brightness_mode_time_light` to further customize the lighting transitions.
|
With Adaptive Lighting, you can set a `brightness_mode` to specify how the brightness changes during sunrise and sunset. The `brightness_mode` can be set to `"default"` ([as illustrated in other graphs above](#high_brightness-brightness)), `"linear"`, or `"tanh"`. If you choose to deviate from the `"default"` mode, you can adjust `brightness_mode_time_dark` and `brightness_mode_time_light` to further customize the lighting transitions.
|
||||||
|
|
@ -453,12 +880,15 @@ Notice the values of `brightness_mode_time_light` and `brightness_mode_time_dark
|
||||||

|

|
||||||
|
|
||||||
> Check out the interactive webapp on https://basnijholt.github.io/adaptive-lighting/ to play with the parameters and see how the brightness changes!
|
> Check out the interactive webapp on https://basnijholt.github.io/adaptive-lighting/ to play with the parameters and see how the brightness changes!
|
||||||
|
<!-- SECTION:brightness-modes:END -->
|
||||||
|
|
||||||
|
<!-- SECTION:see-also:START -->
|
||||||
## :eyes: See also
|
## :eyes: See also
|
||||||
|
|
||||||
- [*Sleep better with Adaptive Lighting in Home Assistant*](https://wartner.io/sleep-better-with-adaptive-lightning-in-home-assistant/) by Florian Wartner on 2023-02-23 (blog post 📜)
|
- [*Sleep better with Adaptive Lighting in Home Assistant*](https://wartner.io/sleep-better-with-adaptive-lightning-in-home-assistant/) by Florian Wartner on 2023-02-23 (blog post 📜)
|
||||||
- [*Automatic smart light brightness and color based on the sun*](https://www.youtube.com/watch?v=Rg3zI1Oyk3c) by Home Automation Guy on 2022-08-31 (YouTube video 📺)
|
- [*Automatic smart light brightness and color based on the sun*](https://www.youtube.com/watch?v=Rg3zI1Oyk3c) by Home Automation Guy on 2022-08-31 (YouTube video 📺)
|
||||||
- [*Adaptive Lighting Blew My Mind in Home Assistant - How to set it up*](https://www.youtube.com/watch?v=c1cnccmgl3k) by Smart Home Junkie on 2022-06-26 (YouTube video 📺)
|
- [*Adaptive Lighting Blew My Mind in Home Assistant - How to set it up*](https://www.youtube.com/watch?v=c1cnccmgl3k) by Smart Home Junkie on 2022-06-26 (YouTube video 📺)
|
||||||
|
<!-- SECTION:see-also:END -->
|
||||||
|
|
||||||
## :busts_in_silhouette: Contributors
|
## :busts_in_silhouette: Contributors
|
||||||
|
|
||||||
|
|
@ -527,7 +957,7 @@ Notice the values of `brightness_mode_time_light` and `brightness_mode_time_dark
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/firstof9"><img src="https://avatars.githubusercontent.com/u/1105672?v=4?s=100" width="100px;" alt="Chris"/><br /><sub><b>Chris</b></sub></a><br /><a href="https://github.com/basnijholt/adaptive-lighting/commits?author=firstof9" title="Code">💻</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/firstof9"><img src="https://avatars.githubusercontent.com/u/1105672?v=4?s=100" width="100px;" alt="Chris"/><br /><sub><b>Chris</b></sub></a><br /><a href="https://github.com/basnijholt/adaptive-lighting/commits?author=firstof9" title="Code">💻</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/raman325"><img src="https://avatars.githubusercontent.com/u/7243222?v=4?s=100" width="100px;" alt="Raman Gupta"/><br /><sub><b>Raman Gupta</b></sub></a><br /><a href="https://github.com/basnijholt/adaptive-lighting/commits?author=raman325" title="Code">💻</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/raman325"><img src="https://avatars.githubusercontent.com/u/7243222?v=4?s=100" width="100px;" alt="Raman Gupta"/><br /><sub><b>Raman Gupta</b></sub></a><br /><a href="https://github.com/basnijholt/adaptive-lighting/commits?author=raman325" title="Code">💻</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/igiannakas"><img src="https://avatars.githubusercontent.com/u/59056762?v=4?s=100" width="100px;" alt="igiannakas"/><br /><sub><b>igiannakas</b></sub></a><br /><a href="https://github.com/basnijholt/adaptive-lighting/commits?author=igiannakas" title="Code">💻</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/igiannakas"><img src="https://avatars.githubusercontent.com/u/59056762?v=4?s=100" width="100px;" alt="igiannakas"/><br /><sub><b>igiannakas</b></sub></a><br /><a href="https://github.com/basnijholt/adaptive-lighting/commits?author=igiannakas" title="Code">💻</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="http://protyposis.net"><img src="https://avatars.githubusercontent.com/u/189372?v=4?s=100" width="100px;" alt="Mario Guggenberger"/><br /><sub><b>Mario Guggenberger</b></sub></a><br /><a href="https://github.com/basnijholt/adaptive-lighting/commits?author=protyposis" title="Code">💻</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="http://protyposis.net"><img src="https://avatars.githubusercontent.com/u/189372?v=4?s=100" width="100px;" alt="Mario Guggenberger"/><br /><sub><b>Mario Guggenberger</b></sub></a><br /><a href="https://github.com/basnijholt/adaptive-lighting/commits?author=protyposis" title="Code">💻</a> <a href="#ideas-protyposis" title="Ideas, Planning, & Feedback">🤔</a></td>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://ktibow.github.io/"><img src="https://avatars.githubusercontent.com/u/10727862?v=4?s=100" width="100px;" alt="Kendell R"/><br /><sub><b>Kendell R</b></sub></a><br /><a href="#design-KTibow" title="Design">🎨</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://ktibow.github.io/"><img src="https://avatars.githubusercontent.com/u/10727862?v=4?s=100" width="100px;" alt="Kendell R"/><br /><sub><b>Kendell R</b></sub></a><br /><a href="#design-KTibow" title="Design">🎨</a></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
|
|
@ -631,6 +1061,64 @@ Notice the values of `brightness_mode_time_light` and `brightness_mode_time_dark
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/dobby5"><img src="https://avatars.githubusercontent.com/u/1346316?v=4?s=100" width="100px;" alt="Dobby"/><br /><sub><b>Dobby</b></sub></a><br /><a href="https://github.com/basnijholt/adaptive-lighting/commits?author=dobby5" title="Code">💻</a></td>
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/dobby5"><img src="https://avatars.githubusercontent.com/u/1346316?v=4?s=100" width="100px;" alt="Dobby"/><br /><sub><b>Dobby</b></sub></a><br /><a href="https://github.com/basnijholt/adaptive-lighting/commits?author=dobby5" title="Code">💻</a></td>
|
||||||
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/lenucksi"><img src="https://avatars.githubusercontent.com/u/2451899?v=4?s=100" width="100px;" alt="lenucksi"/><br /><sub><b>lenucksi</b></sub></a><br /><a href="https://github.com/basnijholt/adaptive-lighting/commits?author=lenucksi" title="Code">💻</a></td>
|
||||||
|
<td align="center" valign="top" width="14.28%"><a href="https://gitlab.com/edgimar"><img src="https://avatars.githubusercontent.com/u/393850?v=4?s=100" width="100px;" alt="edgimar"/><br /><sub><b>edgimar</b></sub></a><br /><a href="https://github.com/basnijholt/adaptive-lighting/commits?author=edgimar" title="Code">💻</a></td>
|
||||||
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/andrei-lazarov"><img src="https://avatars.githubusercontent.com/u/51081857?v=4?s=100" width="100px;" alt="Andrei LAZAROV"/><br /><sub><b>Andrei LAZAROV</b></sub></a><br /><a href="https://github.com/basnijholt/adaptive-lighting/commits?author=andrei-lazarov" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/ademuri"><img src="https://avatars.githubusercontent.com/u/3051618?v=4?s=100" width="100px;" alt="Adam DeMuri"/><br /><sub><b>Adam DeMuri</b></sub></a><br /><a href="https://github.com/basnijholt/adaptive-lighting/commits?author=ademuri" title="Code">💻</a></td>
|
||||||
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/NatanDosAnjos"><img src="https://avatars.githubusercontent.com/u/45629905?v=4?s=100" width="100px;" alt="Natanael"/><br /><sub><b>Natanael</b></sub></a><br /><a href="#translation-NatanDosAnjos" title="Translation">🌍</a></td>
|
||||||
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Yllelder"><img src="https://avatars.githubusercontent.com/u/6941502?v=4?s=100" width="100px;" alt="Yllelder Bamir"/><br /><sub><b>Yllelder Bamir</b></sub></a><br /><a href="#translation-Yllelder" title="Translation">🌍</a></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Esspel"><img src="https://avatars.githubusercontent.com/u/47383506?v=4?s=100" width="100px;" alt="Esspel"/><br /><sub><b>Esspel</b></sub></a><br /><a href="#translation-Esspel" title="Translation">🌍</a></td>
|
||||||
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/cperuffo3"><img src="https://avatars.githubusercontent.com/u/87686305?v=4?s=100" width="100px;" alt="Corey Peruffo"/><br /><sub><b>Corey Peruffo</b></sub></a><br /><a href="https://github.com/basnijholt/adaptive-lighting/commits?author=cperuffo3" title="Code">💻</a></td>
|
||||||
|
<td align="center" valign="top" width="14.28%"><a href="http://badmotivator.io/"><img src="https://avatars.githubusercontent.com/u/1934074?v=4?s=100" width="100px;" alt="Samson Brock"/><br /><sub><b>Samson Brock</b></sub></a><br /><a href="https://github.com/basnijholt/adaptive-lighting/commits?author=imwithsam" title="Code">💻</a></td>
|
||||||
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Dennis-Dekker"><img src="https://avatars.githubusercontent.com/u/48018095?v=4?s=100" width="100px;" alt="Dennis Dekker"/><br /><sub><b>Dennis Dekker</b></sub></a><br /><a href="https://github.com/basnijholt/adaptive-lighting/commits?author=Dennis-Dekker" title="Code">💻</a></td>
|
||||||
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/proscar87"><img src="https://avatars.githubusercontent.com/u/68169114?v=4?s=100" width="100px;" alt="proscar87"/><br /><sub><b>proscar87</b></sub></a><br /><a href="https://github.com/basnijholt/adaptive-lighting/commits?author=proscar87" title="Code">💻</a></td>
|
||||||
|
<td align="center" valign="top" width="14.28%"><a href="http://jaredj.xyz/"><img src="https://avatars.githubusercontent.com/u/10385335?v=4?s=100" width="100px;" alt="Jared Jensen"/><br /><sub><b>Jared Jensen</b></sub></a><br /><a href="https://github.com/basnijholt/adaptive-lighting/commits?author=jaredjxyz" title="Code">💻</a></td>
|
||||||
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/mueslo"><img src="https://avatars.githubusercontent.com/u/847751?v=4?s=100" width="100px;" alt="mueslo"/><br /><sub><b>mueslo</b></sub></a><br /><a href="https://github.com/basnijholt/adaptive-lighting/commits?author=mueslo" title="Code">💻</a></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/marijneken"><img src="https://avatars.githubusercontent.com/u/928998?v=4?s=100" width="100px;" alt="Marijn Eken"/><br /><sub><b>Marijn Eken</b></sub></a><br /><a href="https://github.com/basnijholt/adaptive-lighting/commits?author=marijneken" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/kasiom"><img src="https://avatars.githubusercontent.com/u/2422245?v=4?s=100" width="100px;" alt="Milan K."/><br /><sub><b>Milan K.</b></sub></a><br /><a href="#translation-kasiom" title="Translation">🌍</a></td>
|
||||||
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/callistoprime"><img src="https://avatars.githubusercontent.com/u/178052328?v=4?s=100" width="100px;" alt="Callisto"/><br /><sub><b>Callisto</b></sub></a><br /><a href="https://github.com/basnijholt/adaptive-lighting/issues?q=author%3Acallistoprime" title="Bug reports">🐛</a></td>
|
||||||
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/davidgeiger"><img src="https://avatars.githubusercontent.com/u/5699049?v=4?s=100" width="100px;" alt="David Geiger"/><br /><sub><b>David Geiger</b></sub></a><br /><a href="https://github.com/basnijholt/adaptive-lighting/issues?q=author%3Adavidgeiger" title="Bug reports">🐛</a></td>
|
||||||
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/MSL-DA"><img src="https://avatars.githubusercontent.com/u/134940586?v=4?s=100" width="100px;" alt="Jan"/><br /><sub><b>Jan</b></sub></a><br /><a href="#translation-MSL-DA" title="Translation">🌍</a></td>
|
||||||
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/frankysan"><img src="https://avatars.githubusercontent.com/u/6353605?v=4?s=100" width="100px;" alt="frankysan"/><br /><sub><b>frankysan</b></sub></a><br /><a href="#translation-frankysan" title="Translation">🌍</a></td>
|
||||||
|
<td align="center" valign="top" width="14.28%"><a href="http://belkinfahri.com"><img src="https://avatars.githubusercontent.com/u/3419659?v=4?s=100" width="100px;" alt="Belkin"/><br /><sub><b>Belkin</b></sub></a><br /><a href="#translation-belkin" title="Translation">🌍</a></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/LukTyn"><img src="https://avatars.githubusercontent.com/u/1812796?v=4?s=100" width="100px;" alt="LukTyn"/><br /><sub><b>LukTyn</b></sub></a><br /><a href="#translation-LukTyn" title="Translation">🌍</a></td>
|
||||||
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/rutgerkra"><img src="https://avatars.githubusercontent.com/u/7963187?v=4?s=100" width="100px;" alt="rutgerkra"/><br /><sub><b>rutgerkra</b></sub></a><br /><a href="#translation-rutgerkra" title="Translation">🌍</a></td>
|
||||||
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/sergeybelozorov"><img src="https://avatars.githubusercontent.com/u/94930734?v=4?s=100" width="100px;" alt="sergeybelozorov"/><br /><sub><b>sergeybelozorov</b></sub></a><br /><a href="#translation-sergeybelozorov" title="Translation">🌍</a></td>
|
||||||
|
<td align="center" valign="top" width="14.28%"><a href="https://hosted.weblate.org/user/Lamster/"><img src="https://hosted.weblate.org/avatar/128/Lamster.png?s=100" width="100px;" alt="Allan Himidi-Rattenborg"/><br /><sub><b>Allan Himidi-Rattenborg</b></sub></a><br /><a href="#translation-weblate-Lamster" title="Translation">🌍</a></td>
|
||||||
|
<td align="center" valign="top" width="14.28%"><a href="https://hosted.weblate.org/user/posemartonis/"><img src="https://hosted.weblate.org/avatar/128/posemartonis.png?s=100" width="100px;" alt="Pose marto"/><br /><sub><b>Pose marto</b></sub></a><br /><a href="#translation-weblate-posemartonis" title="Translation">🌍</a></td>
|
||||||
|
<td align="center" valign="top" width="14.28%"><a href="https://hosted.weblate.org/user/jf.cosse/"><img src="https://hosted.weblate.org/avatar/128/jf.cosse.png?s=100" width="100px;" alt="Jean-Francois Cosse"/><br /><sub><b>Jean-Francois Cosse</b></sub></a><br /><a href="#translation-weblate-jf.cosse" title="Translation">🌍</a></td>
|
||||||
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/bisquit2003"><img src="https://avatars.githubusercontent.com/u/98059406?v=4?s=100" width="100px;" alt="bisquit2003"/><br /><sub><b>bisquit2003</b></sub></a><br /><a href="https://github.com/basnijholt/adaptive-lighting/issues?q=author%3Abisquit2003" title="Bug reports">🐛</a></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/chewth91"><img src="https://avatars.githubusercontent.com/u/29686018?v=4?s=100" width="100px;" alt="chewth91"/><br /><sub><b>chewth91</b></sub></a><br /><a href="https://github.com/basnijholt/adaptive-lighting/issues?q=author%3Achewth91" title="Bug reports">🐛</a></td>
|
||||||
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/rhtenhove"><img src="https://avatars.githubusercontent.com/u/10206967?v=4?s=100" width="100px;" alt="rhtenhove"/><br /><sub><b>rhtenhove</b></sub></a><br /><a href="https://github.com/basnijholt/adaptive-lighting/commits?author=rhtenhove" title="Code">💻</a></td>
|
||||||
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/mrbillpapas"><img src="https://avatars.githubusercontent.com/u/45721000?v=4?s=100" width="100px;" alt="Bill Papas"/><br /><sub><b>Bill Papas</b></sub></a><br /><a href="#ideas-mrbillpapas" title="Ideas, Planning, & Feedback">🤔</a></td>
|
||||||
|
<td align="center" valign="top" width="14.28%"><a href="https://niklashaas.de"><img src="https://avatars.githubusercontent.com/u/1149047?v=4?s=100" width="100px;" alt="Niklas Haas"/><br /><sub><b>Niklas Haas</b></sub></a><br /><a href="#ideas-haasn" title="Ideas, Planning, & Feedback">🤔</a></td>
|
||||||
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/djurny"><img src="https://avatars.githubusercontent.com/u/950171?v=4?s=100" width="100px;" alt="Tom Urlings"/><br /><sub><b>Tom Urlings</b></sub></a><br /><a href="#ideas-djurny" title="Ideas, Planning, & Feedback">🤔</a></td>
|
||||||
|
<td align="center" valign="top" width="14.28%"><a href="http://anastay.dev"><img src="https://avatars.githubusercontent.com/u/45088785?v=4?s=100" width="100px;" alt="Benoit Anastay"/><br /><sub><b>Benoit Anastay</b></sub></a><br /><a href="#ideas-BenoitAnastay" title="Ideas, Planning, & Feedback">🤔</a></td>
|
||||||
|
<td align="center" valign="top" width="14.28%"><a href="https://isjustawesome.com"><img src="https://avatars.githubusercontent.com/u/689204?v=4?s=100" width="100px;" alt="Jeremy Gollehon"/><br /><sub><b>Jeremy Gollehon</b></sub></a><br /><a href="#ideas-GollyJer" title="Ideas, Planning, & Feedback">🤔</a> <a href="https://github.com/basnijholt/adaptive-lighting/issues?q=author%3AGollyJer" title="Bug reports">🐛</a></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/jrbergen"><img src="https://avatars.githubusercontent.com/u/6237646?v=4?s=100" width="100px;" alt="jrbergen"/><br /><sub><b>jrbergen</b></sub></a><br /><a href="#ideas-jrbergen" title="Ideas, Planning, & Feedback">🤔</a></td>
|
||||||
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/b-rad15"><img src="https://avatars.githubusercontent.com/u/25830163?v=4?s=100" width="100px;" alt="Bradley O'Connell"/><br /><sub><b>Bradley O'Connell</b></sub></a><br /><a href="#ideas-b-rad15" title="Ideas, Planning, & Feedback">🤔</a></td>
|
||||||
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/00schteven"><img src="https://avatars.githubusercontent.com/u/76514745?v=4?s=100" width="100px;" alt="00schteven"/><br /><sub><b>00schteven</b></sub></a><br /><a href="#ideas-00schteven" title="Ideas, Planning, & Feedback">🤔</a></td>
|
||||||
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Mariuss811"><img src="https://avatars.githubusercontent.com/u/54115696?v=4?s=100" width="100px;" alt="Wosten"/><br /><sub><b>Wosten</b></sub></a><br /><a href="https://github.com/basnijholt/adaptive-lighting/issues?q=author%3AMariuss811" title="Bug reports">🐛</a></td>
|
||||||
|
<td align="center" valign="top" width="14.28%"><a href="http://zpriddy.com"><img src="https://avatars.githubusercontent.com/u/1858679?v=4?s=100" width="100px;" alt="Zachary Priddy"/><br /><sub><b>Zachary Priddy</b></sub></a><br /><a href="#ideas-zpriddy" title="Ideas, Planning, & Feedback">🤔</a></td>
|
||||||
|
<td align="center" valign="top" width="14.28%"><a href="http://blakeslee.me"><img src="https://avatars.githubusercontent.com/u/60765958?v=4?s=100" width="100px;" alt="Andrew Blakeslee Moore"/><br /><sub><b>Andrew Blakeslee Moore</b></sub></a><br /><a href="https://github.com/basnijholt/adaptive-lighting/issues?q=author%3Aabkslm" title="Bug reports">🐛</a></td>
|
||||||
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/jaynis"><img src="https://avatars.githubusercontent.com/u/1553675?v=4?s=100" width="100px;" alt="jaynis"/><br /><sub><b>jaynis</b></sub></a><br /><a href="https://github.com/basnijholt/adaptive-lighting/commits?author=jaynis" title="Code">💻</a></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/alistairg"><img src="https://avatars.githubusercontent.com/u/272786?v=4?s=100" width="100px;" alt="Alistair Galbraith"/><br /><sub><b>Alistair Galbraith</b></sub></a><br /><a href="https://github.com/basnijholt/adaptive-lighting/commits?author=alistairg" title="Code">💻</a></td>
|
||||||
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/hesseleo"><img src="https://avatars.githubusercontent.com/u/44778508?v=4?s=100" width="100px;" alt="Leonhard Hesse"/><br /><sub><b>Leonhard Hesse</b></sub></a><br /><a href="https://github.com/basnijholt/adaptive-lighting/commits?author=hesseleo" title="Code">💻</a></td>
|
||||||
|
<td align="center" valign="top" width="14.28%"><a href="http://www.tim-maps.com"><img src="https://avatars.githubusercontent.com/u/6741938?v=4?s=100" width="100px;" alt="Tim Stallmann"/><br /><sub><b>Tim Stallmann</b></sub></a><br /><a href="https://github.com/basnijholt/adaptive-lighting/commits?author=timstallmann" title="Code">💻</a></td>
|
||||||
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/lehneres"><img src="https://avatars.githubusercontent.com/u/7437288?v=4?s=100" width="100px;" alt="lehneres"/><br /><sub><b>lehneres</b></sub></a><br /><a href="#ideas-lehneres" title="Ideas, Planning, & Feedback">🤔</a></td>
|
||||||
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/ahmadtawakol"><img src="https://avatars.githubusercontent.com/u/2355493?v=4?s=100" width="100px;" alt="Ahmad Tawakol"/><br /><sub><b>Ahmad Tawakol</b></sub></a><br /><a href="https://github.com/basnijholt/adaptive-lighting/commits?author=ahmadtawakol" title="Code">💻</a> <a href="https://github.com/basnijholt/adaptive-lighting/issues?q=author%3Aahmadtawakol" title="Bug reports">🐛</a> <a href="#maintenance-ahmadtawakol" title="Maintenance">🚧</a></td>
|
||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
<tfoot>
|
<tfoot>
|
||||||
|
|
|
||||||
112
blueprints/automation/daylight_limit.yaml
Normal file
112
blueprints/automation/daylight_limit.yaml
Normal file
|
|
@ -0,0 +1,112 @@
|
||||||
|
blueprint:
|
||||||
|
name: "Adaptive Lighting: limit brightness in daylight"
|
||||||
|
description: >-
|
||||||
|
Lower a profile's maximum brightness in strong daylight and restore the
|
||||||
|
chosen normal maximum when daylight falls. Separate lux thresholds prevent
|
||||||
|
repeated changes near a single threshold. Use a sensor not significantly
|
||||||
|
affected by the controlled lights. Keep the daylight maximum at or above
|
||||||
|
the profile's minimum unless you want an inverted brightness curve.
|
||||||
|
Startup waits up to five minutes for a numeric sensor reading; a reading
|
||||||
|
between the thresholds leaves the configured maximum unchanged.
|
||||||
|
domain: automation
|
||||||
|
homeassistant:
|
||||||
|
min_version: "2025.9.0"
|
||||||
|
input:
|
||||||
|
adaptive_switch:
|
||||||
|
name: Adaptive Lighting profile
|
||||||
|
description: Select the main profile switch, not a sleep or adaptation switch.
|
||||||
|
selector:
|
||||||
|
entity:
|
||||||
|
filter:
|
||||||
|
domain: switch
|
||||||
|
integration: adaptive_lighting
|
||||||
|
illuminance_sensor:
|
||||||
|
name: Illuminance sensor
|
||||||
|
selector:
|
||||||
|
entity:
|
||||||
|
filter:
|
||||||
|
domain: sensor
|
||||||
|
device_class: illuminance
|
||||||
|
high_lux:
|
||||||
|
name: Strong daylight threshold
|
||||||
|
description: Must be greater than the low daylight threshold.
|
||||||
|
default: 300
|
||||||
|
selector:
|
||||||
|
number:
|
||||||
|
min: 0
|
||||||
|
max: 200000
|
||||||
|
mode: box
|
||||||
|
unit_of_measurement: lx
|
||||||
|
low_lux:
|
||||||
|
name: Low daylight threshold
|
||||||
|
default: 200
|
||||||
|
selector:
|
||||||
|
number:
|
||||||
|
min: 0
|
||||||
|
max: 200000
|
||||||
|
mode: box
|
||||||
|
unit_of_measurement: lx
|
||||||
|
daylight_maximum:
|
||||||
|
name: Maximum brightness in strong daylight
|
||||||
|
default: 30
|
||||||
|
selector:
|
||||||
|
number:
|
||||||
|
min: 1
|
||||||
|
max: 100
|
||||||
|
mode: box
|
||||||
|
unit_of_measurement: "%"
|
||||||
|
normal_maximum:
|
||||||
|
name: Normal maximum brightness
|
||||||
|
default: 100
|
||||||
|
selector:
|
||||||
|
number:
|
||||||
|
min: 1
|
||||||
|
max: 100
|
||||||
|
mode: box
|
||||||
|
unit_of_measurement: "%"
|
||||||
|
|
||||||
|
mode: restart
|
||||||
|
variables:
|
||||||
|
illuminance_sensor: !input illuminance_sensor
|
||||||
|
high_lux: !input high_lux
|
||||||
|
low_lux: !input low_lux
|
||||||
|
triggers:
|
||||||
|
- trigger: numeric_state
|
||||||
|
entity_id: !input illuminance_sensor
|
||||||
|
above: !input high_lux
|
||||||
|
- trigger: numeric_state
|
||||||
|
entity_id: !input illuminance_sensor
|
||||||
|
below: !input low_lux
|
||||||
|
- trigger: homeassistant
|
||||||
|
event: start
|
||||||
|
id: startup
|
||||||
|
conditions:
|
||||||
|
- condition: template
|
||||||
|
value_template: "{{ high_lux > low_lux }}"
|
||||||
|
actions:
|
||||||
|
- if:
|
||||||
|
- condition: trigger
|
||||||
|
id: startup
|
||||||
|
then:
|
||||||
|
- wait_template: "{{ is_number(states(illuminance_sensor)) }}"
|
||||||
|
timeout: "00:05:00"
|
||||||
|
continue_on_timeout: false
|
||||||
|
- choose:
|
||||||
|
- conditions:
|
||||||
|
- condition: numeric_state
|
||||||
|
entity_id: !input illuminance_sensor
|
||||||
|
above: !input high_lux
|
||||||
|
sequence:
|
||||||
|
- action: adaptive_lighting.change_switch_settings
|
||||||
|
data:
|
||||||
|
entity_id: !input adaptive_switch
|
||||||
|
max_brightness: !input daylight_maximum
|
||||||
|
- conditions:
|
||||||
|
- condition: numeric_state
|
||||||
|
entity_id: !input illuminance_sensor
|
||||||
|
below: !input low_lux
|
||||||
|
sequence:
|
||||||
|
- action: adaptive_lighting.change_switch_settings
|
||||||
|
data:
|
||||||
|
entity_id: !input adaptive_switch
|
||||||
|
max_brightness: !input normal_maximum
|
||||||
123
blueprints/automation/manual_control_at_minimum.yaml
Normal file
123
blueprints/automation/manual_control_at_minimum.yaml
Normal file
|
|
@ -0,0 +1,123 @@
|
||||||
|
blueprint:
|
||||||
|
name: "Adaptive Lighting: pause brightness at minimum"
|
||||||
|
description: >-
|
||||||
|
Mark one light's brightness as manually controlled when its calculated
|
||||||
|
brightness target crosses down to the configured minimum. Set the profile's
|
||||||
|
take_over_control_mode to pause_changed to keep adapting color; pause_all
|
||||||
|
pauses both. Existing manual color control is preserved. Uses the normal
|
||||||
|
manual-control resets, including turning the light off and any configured
|
||||||
|
autoreset_control_seconds timeout. Runs once per downward crossing, so a
|
||||||
|
reset while the target remains low does not immediately pause it again.
|
||||||
|
Waits up to five minutes for reported brightness to reach the rounded
|
||||||
|
0–255 minimum before pausing. This does not prove physical fade completion. Does not
|
||||||
|
change power or adaptation switches. Select an individual light managed by
|
||||||
|
the profile. Shared profiles retain their usual manual-control behavior.
|
||||||
|
domain: automation
|
||||||
|
homeassistant:
|
||||||
|
min_version: "2025.9.0"
|
||||||
|
input:
|
||||||
|
adaptive_switch:
|
||||||
|
name: Adaptive Lighting profile
|
||||||
|
description: Select the main Adaptive Lighting switch, not a sleep or adaptation switch.
|
||||||
|
selector:
|
||||||
|
entity:
|
||||||
|
filter:
|
||||||
|
domain: switch
|
||||||
|
integration: adaptive_lighting
|
||||||
|
brightness_switch:
|
||||||
|
name: Adapt brightness switch
|
||||||
|
description: Select the adapt brightness switch belonging to the same profile.
|
||||||
|
selector:
|
||||||
|
entity:
|
||||||
|
filter:
|
||||||
|
domain: switch
|
||||||
|
integration: adaptive_lighting
|
||||||
|
light_entity:
|
||||||
|
name: Light
|
||||||
|
description: Select one light managed by this profile. Create an automation for each light.
|
||||||
|
selector:
|
||||||
|
entity:
|
||||||
|
filter:
|
||||||
|
domain: light
|
||||||
|
minimum_pct:
|
||||||
|
name: Minimum brightness
|
||||||
|
description: Match the profile's min_brightness setting. Update this if that setting changes.
|
||||||
|
default: 1
|
||||||
|
selector:
|
||||||
|
number:
|
||||||
|
min: 1
|
||||||
|
max: 100
|
||||||
|
step: 1
|
||||||
|
unit_of_measurement: "%"
|
||||||
|
mode: box
|
||||||
|
|
||||||
|
mode: single
|
||||||
|
variables:
|
||||||
|
adaptive_switch: !input adaptive_switch
|
||||||
|
light_entity: !input light_entity
|
||||||
|
minimum_pct: !input minimum_pct
|
||||||
|
minimum: "{{ (minimum_pct * 255 / 100) | round(0) }}"
|
||||||
|
brightness_switch: !input brightness_switch
|
||||||
|
triggers:
|
||||||
|
- trigger: state
|
||||||
|
entity_id: !input adaptive_switch
|
||||||
|
attribute: brightness_pct
|
||||||
|
conditions:
|
||||||
|
- condition: state
|
||||||
|
entity_id: !input adaptive_switch
|
||||||
|
state: "on"
|
||||||
|
- condition: state
|
||||||
|
entity_id: !input brightness_switch
|
||||||
|
state: "on"
|
||||||
|
- condition: template
|
||||||
|
value_template: >-
|
||||||
|
{% set before = trigger.from_state.attributes.get('brightness_pct')
|
||||||
|
if trigger.from_state else none %}
|
||||||
|
{% set after = trigger.to_state.attributes.get('brightness_pct')
|
||||||
|
if trigger.to_state else none %}
|
||||||
|
{{ is_number(before) and is_number(after)
|
||||||
|
and (before | float * 255 / 100) | round(0) > minimum
|
||||||
|
and (after | float * 255 / 100) | round(0) <= minimum }}
|
||||||
|
- condition: state
|
||||||
|
entity_id: !input light_entity
|
||||||
|
state: "on"
|
||||||
|
- condition: template
|
||||||
|
value_template: >-
|
||||||
|
{{ light_entity not in (state_attr(adaptive_switch, 'manual_control_brightness') or []) }}
|
||||||
|
actions:
|
||||||
|
- variables:
|
||||||
|
light_session: "{{ states[light_entity].last_changed.isoformat() }}"
|
||||||
|
profile_session: "{{ states[adaptive_switch].last_changed.isoformat() }}"
|
||||||
|
brightness_session: "{{ states[brightness_switch].last_changed.isoformat() }}"
|
||||||
|
- wait_template: >-
|
||||||
|
{% set target = state_attr(adaptive_switch, 'brightness_pct') %}
|
||||||
|
{{ not is_state(light_entity, 'on') or not is_state(adaptive_switch, 'on')
|
||||||
|
or not is_state(brightness_switch, 'on')
|
||||||
|
or states[light_entity].last_changed.isoformat() != light_session
|
||||||
|
or states[adaptive_switch].last_changed.isoformat() != profile_session
|
||||||
|
or states[brightness_switch].last_changed.isoformat() != brightness_session
|
||||||
|
or not is_number(target) or (target | float * 255 / 100) | round(0) > minimum
|
||||||
|
or light_entity in (state_attr(adaptive_switch, 'manual_control_brightness') or [])
|
||||||
|
or (state_attr(light_entity, 'brightness') | float(256)) <= minimum }}
|
||||||
|
timeout: "00:05:00"
|
||||||
|
continue_on_timeout: false
|
||||||
|
- condition: template
|
||||||
|
value_template: >-
|
||||||
|
{% set target = state_attr(adaptive_switch, 'brightness_pct') %}
|
||||||
|
{{ is_state(light_entity, 'on') and is_state(adaptive_switch, 'on')
|
||||||
|
and is_state(brightness_switch, 'on')
|
||||||
|
and states[light_entity].last_changed.isoformat() == light_session
|
||||||
|
and states[adaptive_switch].last_changed.isoformat() == profile_session
|
||||||
|
and states[brightness_switch].last_changed.isoformat() == brightness_session
|
||||||
|
and is_number(target) and (target | float * 255 / 100) | round(0) <= minimum
|
||||||
|
and (state_attr(light_entity, 'brightness') | float(256)) <= minimum
|
||||||
|
and light_entity not in
|
||||||
|
(state_attr(adaptive_switch, 'manual_control_brightness') or []) }}
|
||||||
|
- action: adaptive_lighting.set_manual_control
|
||||||
|
data:
|
||||||
|
entity_id: !input adaptive_switch
|
||||||
|
lights: !input light_entity
|
||||||
|
manual_control: >-
|
||||||
|
{{ true if light_entity in
|
||||||
|
(state_attr(adaptive_switch, 'manual_control_color') or [])
|
||||||
|
else 'brightness' }}
|
||||||
57
blueprints/automation/schedule_profile.yaml
Normal file
57
blueprints/automation/schedule_profile.yaml
Normal file
|
|
@ -0,0 +1,57 @@
|
||||||
|
blueprint:
|
||||||
|
name: "Adaptive Lighting: scheduled profile"
|
||||||
|
description: >-
|
||||||
|
Apply fixed brightness and color temperature from a Schedule helper's
|
||||||
|
brightness_pct and color_temp_kelvin attributes. Uses step changes, not
|
||||||
|
interpolation. Missing attributes fall back to 1% and 2000 K. Outside an
|
||||||
|
active block, restores ALL configured profile settings. Use this only if
|
||||||
|
other automations do not also change runtime settings on this profile.
|
||||||
|
Reapplies the active block on Home Assistant startup. Updates settings
|
||||||
|
while the profile is off without enabling it; preserves manual control.
|
||||||
|
domain: automation
|
||||||
|
homeassistant:
|
||||||
|
min_version: "2025.9.0"
|
||||||
|
input:
|
||||||
|
adaptive_switch:
|
||||||
|
name: Adaptive Lighting profile
|
||||||
|
description: Select the main profile switch, not a sleep or adaptation switch.
|
||||||
|
selector:
|
||||||
|
entity:
|
||||||
|
filter:
|
||||||
|
domain: switch
|
||||||
|
integration: adaptive_lighting
|
||||||
|
schedule_entity:
|
||||||
|
name: Schedule helper
|
||||||
|
description: Add brightness_pct (1–100) and color_temp_kelvin to each block's Additional data.
|
||||||
|
selector:
|
||||||
|
entity:
|
||||||
|
filter:
|
||||||
|
domain: schedule
|
||||||
|
|
||||||
|
mode: restart
|
||||||
|
variables:
|
||||||
|
schedule_entity: !input schedule_entity
|
||||||
|
triggers:
|
||||||
|
- trigger: state
|
||||||
|
entity_id: !input schedule_entity
|
||||||
|
- trigger: homeassistant
|
||||||
|
event: start
|
||||||
|
actions:
|
||||||
|
- choose:
|
||||||
|
- conditions:
|
||||||
|
- condition: state
|
||||||
|
entity_id: !input schedule_entity
|
||||||
|
state: "on"
|
||||||
|
sequence:
|
||||||
|
- action: adaptive_lighting.change_switch_settings
|
||||||
|
data:
|
||||||
|
entity_id: !input adaptive_switch
|
||||||
|
min_brightness: "{{ state_attr(schedule_entity, 'brightness_pct') | int(1) }}"
|
||||||
|
max_brightness: "{{ state_attr(schedule_entity, 'brightness_pct') | int(1) }}"
|
||||||
|
min_color_temp: "{{ state_attr(schedule_entity, 'color_temp_kelvin') | int(2000) }}"
|
||||||
|
max_color_temp: "{{ state_attr(schedule_entity, 'color_temp_kelvin') | int(2000) }}"
|
||||||
|
default:
|
||||||
|
- action: adaptive_lighting.change_switch_settings
|
||||||
|
data:
|
||||||
|
entity_id: !input adaptive_switch
|
||||||
|
use_defaults: configuration
|
||||||
42
blueprints/automation/sleep_mode.yaml
Normal file
42
blueprints/automation/sleep_mode.yaml
Normal file
|
|
@ -0,0 +1,42 @@
|
||||||
|
blueprint:
|
||||||
|
name: "Adaptive Lighting: synchronize sleep mode"
|
||||||
|
description: >-
|
||||||
|
Keep the selected Adaptive Lighting sleep-mode switches in sync with an
|
||||||
|
input boolean, including its restored state at Home Assistant startup.
|
||||||
|
Unknown or unavailable helper states are ignored. Select only sleep-mode
|
||||||
|
switches, not the main profile or adaptation switches.
|
||||||
|
domain: automation
|
||||||
|
homeassistant:
|
||||||
|
min_version: "2025.9.0"
|
||||||
|
input:
|
||||||
|
sleep_helper:
|
||||||
|
name: Sleep-mode helper
|
||||||
|
selector:
|
||||||
|
entity:
|
||||||
|
filter:
|
||||||
|
domain: input_boolean
|
||||||
|
sleep_switches:
|
||||||
|
name: Adaptive Lighting sleep-mode switches
|
||||||
|
selector:
|
||||||
|
entity:
|
||||||
|
multiple: true
|
||||||
|
filter:
|
||||||
|
domain: switch
|
||||||
|
integration: adaptive_lighting
|
||||||
|
|
||||||
|
triggers:
|
||||||
|
- trigger: state
|
||||||
|
entity_id: !input sleep_helper
|
||||||
|
- trigger: homeassistant
|
||||||
|
event: start
|
||||||
|
variables:
|
||||||
|
sleep_helper: !input sleep_helper
|
||||||
|
sleep_mode: "{{ states(sleep_helper) }}"
|
||||||
|
conditions:
|
||||||
|
- condition: template
|
||||||
|
value_template: "{{ sleep_mode in ['on', 'off'] }}"
|
||||||
|
actions:
|
||||||
|
- action: "switch.turn_{{ sleep_mode }}"
|
||||||
|
target:
|
||||||
|
entity_id: !input sleep_switches
|
||||||
|
mode: restart
|
||||||
87
blueprints/automation/turn_off_at_minimum.yaml
Normal file
87
blueprints/automation/turn_off_at_minimum.yaml
Normal file
|
|
@ -0,0 +1,87 @@
|
||||||
|
blueprint:
|
||||||
|
name: "Adaptive Lighting: turn off at minimum brightness"
|
||||||
|
description: >-
|
||||||
|
Turn one light off when its Adaptive Lighting target crosses down into the
|
||||||
|
chosen minimum brightness range. Compares rounded 0–255 commands, not the
|
||||||
|
bulb's physical dimming limit or transition completion. Skips lights currently
|
||||||
|
marked as manually controlled. Changing sleep mode clears manual control by
|
||||||
|
default; set reset_manual_control_on_sleep_mode_change to false in your
|
||||||
|
profile to preserve it. Does not turn lights back on or repeatedly turn them off
|
||||||
|
while the target stays low. Startup at the minimum does not trigger it.
|
||||||
|
Sleep mode can trigger it if its target crosses the chosen minimum.
|
||||||
|
Select a light managed by the chosen profile and its matching brightness switch.
|
||||||
|
domain: automation
|
||||||
|
homeassistant:
|
||||||
|
min_version: "2025.9.0"
|
||||||
|
input:
|
||||||
|
adaptive_switch:
|
||||||
|
name: Adaptive Lighting profile
|
||||||
|
description: Select the main Adaptive Lighting switch, not a sleep or adaptation switch.
|
||||||
|
selector:
|
||||||
|
entity:
|
||||||
|
filter:
|
||||||
|
domain: switch
|
||||||
|
integration: adaptive_lighting
|
||||||
|
brightness_switch:
|
||||||
|
name: Adapt brightness switch
|
||||||
|
description: Select the adapt brightness switch belonging to the same profile.
|
||||||
|
selector:
|
||||||
|
entity:
|
||||||
|
filter:
|
||||||
|
domain: switch
|
||||||
|
integration: adaptive_lighting
|
||||||
|
light_entity:
|
||||||
|
name: Light
|
||||||
|
description: Select one light managed by this profile. Create an automation for each light.
|
||||||
|
selector:
|
||||||
|
entity:
|
||||||
|
filter:
|
||||||
|
domain: light
|
||||||
|
minimum_pct:
|
||||||
|
name: Minimum brightness
|
||||||
|
description: Match the profile's min_brightness setting. Update this if that setting changes.
|
||||||
|
default: 1
|
||||||
|
selector:
|
||||||
|
number:
|
||||||
|
min: 1
|
||||||
|
max: 100
|
||||||
|
step: 1
|
||||||
|
unit_of_measurement: "%"
|
||||||
|
mode: box
|
||||||
|
|
||||||
|
mode: single
|
||||||
|
variables:
|
||||||
|
adaptive_switch: !input adaptive_switch
|
||||||
|
light_entity: !input light_entity
|
||||||
|
minimum_pct: !input minimum_pct
|
||||||
|
triggers:
|
||||||
|
- trigger: state
|
||||||
|
entity_id: !input adaptive_switch
|
||||||
|
attribute: brightness_pct
|
||||||
|
conditions:
|
||||||
|
- condition: state
|
||||||
|
entity_id: !input adaptive_switch
|
||||||
|
state: "on"
|
||||||
|
- condition: state
|
||||||
|
entity_id: !input brightness_switch
|
||||||
|
state: "on"
|
||||||
|
- condition: template
|
||||||
|
value_template: >-
|
||||||
|
{% set minimum = (minimum_pct * 255 / 100) | round(0) %}
|
||||||
|
{% set before = trigger.from_state.attributes.get('brightness_pct')
|
||||||
|
if trigger.from_state else none %}
|
||||||
|
{% set after = trigger.to_state.attributes.get('brightness_pct')
|
||||||
|
if trigger.to_state else none %}
|
||||||
|
{{ is_number(before) and is_number(after)
|
||||||
|
and (before | float * 255 / 100) | round(0) > minimum
|
||||||
|
and (after | float * 255 / 100) | round(0) <= minimum }}
|
||||||
|
- condition: state
|
||||||
|
entity_id: !input light_entity
|
||||||
|
state: "on"
|
||||||
|
- condition: template
|
||||||
|
value_template: >-
|
||||||
|
{{ light_entity not in (state_attr(adaptive_switch, 'manual_control') or []) }}
|
||||||
|
actions:
|
||||||
|
- action: light.turn_off
|
||||||
|
target:
|
||||||
|
entity_id: !input light_entity
|
||||||
|
|
@ -1,20 +1,33 @@
|
||||||
"""Adaptive Lighting integration in Home-Assistant."""
|
"""Adaptive Lighting integration in Home-Assistant."""
|
||||||
|
|
||||||
import logging
|
import logging
|
||||||
|
from functools import partial
|
||||||
from typing import Any
|
from typing import Any
|
||||||
|
|
||||||
import homeassistant.helpers.config_validation as cv
|
import homeassistant.helpers.config_validation as cv
|
||||||
import voluptuous as vol
|
import voluptuous as vol
|
||||||
from homeassistant.config_entries import SOURCE_IMPORT, ConfigEntry
|
from homeassistant.config_entries import SOURCE_IMPORT, ConfigEntry
|
||||||
from homeassistant.const import CONF_SOURCE
|
from homeassistant.const import CONF_SOURCE, Platform
|
||||||
from homeassistant.core import Event, HomeAssistant
|
from homeassistant.core import Event, HomeAssistant
|
||||||
|
from homeassistant.helpers import service
|
||||||
|
|
||||||
from .const import (
|
from .const import (
|
||||||
_DOMAIN_SCHEMA,
|
_DOMAIN_SCHEMA, # pyright: ignore[reportPrivateUsage]
|
||||||
ATTR_ADAPTIVE_LIGHTING_MANAGER,
|
ATTR_ADAPTIVE_LIGHTING_MANAGER,
|
||||||
CONF_NAME,
|
CONF_NAME,
|
||||||
DOMAIN,
|
DOMAIN,
|
||||||
|
SERVICE_APPLY,
|
||||||
|
SERVICE_CHANGE_SWITCH_SETTINGS,
|
||||||
|
SERVICE_SET_MANUAL_CONTROL,
|
||||||
|
SET_MANUAL_CONTROL_SCHEMA,
|
||||||
UNDO_UPDATE_LISTENER,
|
UNDO_UPDATE_LISTENER,
|
||||||
|
apply_service_schema,
|
||||||
|
change_switch_settings_schema,
|
||||||
|
)
|
||||||
|
from .switch import (
|
||||||
|
handle_apply_service,
|
||||||
|
handle_change_switch_settings,
|
||||||
|
handle_set_manual_control_service,
|
||||||
)
|
)
|
||||||
|
|
||||||
_LOGGER = logging.getLogger(__name__)
|
_LOGGER = logging.getLogger(__name__)
|
||||||
|
|
@ -47,6 +60,34 @@ async def reload_configuration_yaml(event: Event) -> None:
|
||||||
|
|
||||||
async def async_setup(hass: HomeAssistant, config: dict[str, Any]) -> bool:
|
async def async_setup(hass: HomeAssistant, config: dict[str, Any]) -> bool:
|
||||||
"""Import integration from config."""
|
"""Import integration from config."""
|
||||||
|
hass.services.async_register(
|
||||||
|
domain=DOMAIN,
|
||||||
|
service=SERVICE_APPLY,
|
||||||
|
service_func=partial(handle_apply_service, hass),
|
||||||
|
schema=apply_service_schema(),
|
||||||
|
)
|
||||||
|
|
||||||
|
hass.services.async_register(
|
||||||
|
domain=DOMAIN,
|
||||||
|
service=SERVICE_SET_MANUAL_CONTROL,
|
||||||
|
service_func=partial(handle_set_manual_control_service, hass),
|
||||||
|
schema=SET_MANUAL_CONTROL_SCHEMA,
|
||||||
|
)
|
||||||
|
|
||||||
|
if register_platform_service := getattr(
|
||||||
|
service,
|
||||||
|
"async_register_platform_entity_service",
|
||||||
|
None,
|
||||||
|
):
|
||||||
|
register_platform_service(
|
||||||
|
hass,
|
||||||
|
DOMAIN,
|
||||||
|
SERVICE_CHANGE_SWITCH_SETTINGS,
|
||||||
|
entity_domain=Platform.SWITCH,
|
||||||
|
func=handle_change_switch_settings,
|
||||||
|
schema=change_switch_settings_schema(),
|
||||||
|
)
|
||||||
|
|
||||||
if DOMAIN in config:
|
if DOMAIN in config:
|
||||||
for entry in config[DOMAIN]:
|
for entry in config[DOMAIN]:
|
||||||
hass.async_create_task(
|
hass.async_create_task(
|
||||||
|
|
|
||||||
|
|
@ -46,6 +46,8 @@ def _type_to_str(type_: Any) -> str: # noqa: PLR0911
|
||||||
return "bool"
|
return "bool"
|
||||||
if isinstance(type_, vol.All):
|
if isinstance(type_, vol.All):
|
||||||
return _format_voluptuous_instance(type_)
|
return _format_voluptuous_instance(type_)
|
||||||
|
if isinstance(type_, vol.Any):
|
||||||
|
return " or ".join(_type_to_str(t) for t in type_.validators)
|
||||||
if isinstance(type_, vol.In):
|
if isinstance(type_, vol.In):
|
||||||
return f"one of `{type_.container}`"
|
return f"one of `{type_.container}`"
|
||||||
if isinstance(type_, selector.SelectSelector):
|
if isinstance(type_, selector.SelectSelector):
|
||||||
|
|
@ -72,22 +74,21 @@ def generate_config_markdown_table() -> str:
|
||||||
return df.to_markdown(index=False)
|
return df.to_markdown(index=False)
|
||||||
|
|
||||||
|
|
||||||
def _schema_to_dict(schema: vol.Schema) -> dict[str, tuple[Any, Any]]:
|
def _schema_to_dict(schema: vol.Schema) -> dict[str, tuple[bool, Any]]:
|
||||||
result: dict[str, tuple[Any, Any]] = {}
|
result: dict[str, tuple[bool, Any]] = {}
|
||||||
for key, value in schema.schema.items():
|
for key, value in schema.schema.items():
|
||||||
if isinstance(key, vol.Optional):
|
if isinstance(key, vol.Required | vol.Optional):
|
||||||
default_value = key.default
|
required = isinstance(key, vol.Required) and key.default == vol.UNDEFINED
|
||||||
result[key.schema] = (default_value, value)
|
result[key.schema] = (required, value)
|
||||||
return result
|
return result
|
||||||
|
|
||||||
|
|
||||||
def _generate_service_markdown_table(
|
def _generate_service_markdown_table(
|
||||||
schema: dict[str, tuple[Any, Any]] | vol.Schema,
|
schema: vol.Schema,
|
||||||
alternative_docs: dict[str, str] | None = None,
|
alternative_docs: dict[str, str] | None = None,
|
||||||
) -> str:
|
) -> str:
|
||||||
schema_dict = _schema_to_dict(schema) if isinstance(schema, vol.Schema) else schema
|
|
||||||
rows: list[dict[str, str]] = []
|
rows: list[dict[str, str]] = []
|
||||||
for k, (default, type_) in schema_dict.items():
|
for k, (required, type_) in _schema_to_dict(schema).items():
|
||||||
if alternative_docs is not None and k in alternative_docs:
|
if alternative_docs is not None and k in alternative_docs:
|
||||||
description = alternative_docs[k]
|
description = alternative_docs[k]
|
||||||
else:
|
else:
|
||||||
|
|
@ -95,7 +96,7 @@ def _generate_service_markdown_table(
|
||||||
row = {
|
row = {
|
||||||
"Service data attribute": f"`{k}`",
|
"Service data attribute": f"`{k}`",
|
||||||
"Description": description,
|
"Description": description,
|
||||||
"Required": "✅" if default == vol.UNDEFINED else "❌",
|
"Required": "✅" if required else "❌",
|
||||||
"Type": _type_to_str(type_),
|
"Type": _type_to_str(type_),
|
||||||
}
|
}
|
||||||
rows.append(row)
|
rows.append(row)
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,8 @@
|
||||||
import logging
|
import logging
|
||||||
from collections.abc import AsyncGenerator
|
from collections.abc import AsyncGenerator
|
||||||
from dataclasses import dataclass
|
from dataclasses import dataclass
|
||||||
from typing import Any, Literal
|
from enum import IntFlag, auto
|
||||||
|
from typing import Any
|
||||||
|
|
||||||
from homeassistant.components.light import (
|
from homeassistant.components.light import (
|
||||||
ATTR_BRIGHTNESS,
|
ATTR_BRIGHTNESS,
|
||||||
|
|
@ -12,6 +13,8 @@ from homeassistant.components.light import (
|
||||||
ATTR_BRIGHTNESS_STEP_PCT,
|
ATTR_BRIGHTNESS_STEP_PCT,
|
||||||
ATTR_COLOR_NAME,
|
ATTR_COLOR_NAME,
|
||||||
ATTR_COLOR_TEMP_KELVIN,
|
ATTR_COLOR_TEMP_KELVIN,
|
||||||
|
ATTR_EFFECT,
|
||||||
|
ATTR_FLASH,
|
||||||
ATTR_HS_COLOR,
|
ATTR_HS_COLOR,
|
||||||
ATTR_RGB_COLOR,
|
ATTR_RGB_COLOR,
|
||||||
ATTR_RGBW_COLOR,
|
ATTR_RGBW_COLOR,
|
||||||
|
|
@ -42,9 +45,53 @@ BRIGHTNESS_ATTRS = {
|
||||||
ATTR_BRIGHTNESS_STEP_PCT,
|
ATTR_BRIGHTNESS_STEP_PCT,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Worst-case rounding error when Home Assistant's 0-255 brightness scale
|
||||||
|
# round-trips through a device with coarser resolution (e.g., the 0-99 Z-Wave
|
||||||
|
# Multilevel Switch scale). A light cannot report back a value more precise than
|
||||||
|
# its own scale, so exact equality would never hold for such targets and
|
||||||
|
# 'skip_redundant_commands' would keep sending them forever. The tolerance sits
|
||||||
|
# far below the manual-control-detection threshold (BRIGHTNESS_CHANGE = 25), so
|
||||||
|
# it cannot mask a genuine user change.
|
||||||
|
BRIGHTNESS_TOLERANCE = 2
|
||||||
|
|
||||||
ServiceData = dict[str, Any]
|
ServiceData = dict[str, Any]
|
||||||
|
|
||||||
|
|
||||||
|
class LightControlAttributes(IntFlag):
|
||||||
|
"""Attributes of lights that the adaptation engine can control."""
|
||||||
|
|
||||||
|
NONE = 0
|
||||||
|
BRIGHTNESS = auto()
|
||||||
|
COLOR = auto()
|
||||||
|
|
||||||
|
ALL = BRIGHTNESS | COLOR
|
||||||
|
|
||||||
|
def __str__(self) -> str:
|
||||||
|
"""Return a string representation of the attributes."""
|
||||||
|
if self == LightControlAttributes.NONE:
|
||||||
|
return "NONE"
|
||||||
|
|
||||||
|
return "|".join(
|
||||||
|
member.name
|
||||||
|
for member in type(self)
|
||||||
|
if member is not LightControlAttributes.NONE
|
||||||
|
and member in self
|
||||||
|
and member.name is not None
|
||||||
|
)
|
||||||
|
|
||||||
|
def has_any(self) -> bool:
|
||||||
|
"""Determine whether any attribute is selected."""
|
||||||
|
return self != LightControlAttributes.NONE
|
||||||
|
|
||||||
|
def has_none(self) -> bool:
|
||||||
|
"""Determine whether no attribute is selected."""
|
||||||
|
return self == LightControlAttributes.NONE
|
||||||
|
|
||||||
|
def has_all(self) -> bool:
|
||||||
|
"""Determine whether all attributes are selected."""
|
||||||
|
return (self & LightControlAttributes.ALL) == LightControlAttributes.ALL
|
||||||
|
|
||||||
|
|
||||||
def _split_service_call_data(service_data: ServiceData) -> list[ServiceData]:
|
def _split_service_call_data(service_data: ServiceData) -> list[ServiceData]:
|
||||||
"""Splits the service data by the adapted attributes.
|
"""Splits the service data by the adapted attributes.
|
||||||
|
|
||||||
|
|
@ -75,20 +122,46 @@ def _split_service_call_data(service_data: ServiceData) -> list[ServiceData]:
|
||||||
return service_datas
|
return service_datas
|
||||||
|
|
||||||
|
|
||||||
|
def _is_attribute_satisfied(key: str, value: Any, attributes: dict[str, Any]) -> bool:
|
||||||
|
"""Whether the light's current state already satisfies this target value."""
|
||||||
|
if key not in attributes:
|
||||||
|
return False
|
||||||
|
current = attributes[key]
|
||||||
|
if not isinstance(current, (int, float)) or not isinstance(value, (int, float)):
|
||||||
|
return value == current
|
||||||
|
if key == ATTR_BRIGHTNESS:
|
||||||
|
return abs(value - current) <= BRIGHTNESS_TOLERANCE
|
||||||
|
if key == ATTR_COLOR_TEMP_KELVIN and value > 0 and current > 0:
|
||||||
|
# Compare in mired space: most integrations quantize color temperature
|
||||||
|
# to whole mireds, and the kelvin error of that quantization grows
|
||||||
|
# quadratically with kelvin (~21 K at 6500 K, ~50 K at 10000 K), so no
|
||||||
|
# fixed kelvin tolerance fits the whole range. The tolerance of one
|
||||||
|
# mired absorbs the difference between conversion schemes: HA core's
|
||||||
|
# helpers floor (e.g. 5500 K -> 181 mired -> 5524 K) while some
|
||||||
|
# integrations round (5500 K -> 182 mired -> 5495 K), and no exact
|
||||||
|
# equality converges for both. One mired is far below the ~5.5 mired
|
||||||
|
# just-noticeable difference for color temperature.
|
||||||
|
return abs(round(1_000_000 / value) - round(1_000_000 / current)) <= 1
|
||||||
|
return value == current
|
||||||
|
|
||||||
|
|
||||||
def _remove_redundant_attributes(
|
def _remove_redundant_attributes(
|
||||||
service_data: ServiceData,
|
service_data: ServiceData,
|
||||||
state: State,
|
state: State,
|
||||||
) -> ServiceData:
|
) -> ServiceData:
|
||||||
"""Filter service data by removing attributes that already equal the given state.
|
"""Filter service data by removing attributes already satisfied by the state.
|
||||||
|
|
||||||
Removes all attributes from service call data whose values are already present
|
Removes all attributes from service call data whose values are already present
|
||||||
in the target entity's state.
|
in the target entity's state. Quantized attributes (brightness, color temp) are
|
||||||
|
compared with a small tolerance: a light whose resolution is coarser than Home
|
||||||
|
Assistant's cannot report back the exact value it was given, so exact equality
|
||||||
|
would never hold and the attribute would never be filtered.
|
||||||
"""
|
"""
|
||||||
attributes: dict[str, Any] = dict(state.attributes)
|
attributes: dict[str, Any] = dict(state.attributes)
|
||||||
return {
|
return {
|
||||||
k: v
|
k: v
|
||||||
for k, v in service_data.items()
|
for k, v in service_data.items()
|
||||||
if k not in attributes or v != attributes[k]
|
if not _is_attribute_satisfied(k, v, attributes)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -145,7 +218,7 @@ class AdaptationData:
|
||||||
service_call_datas: AsyncGenerator[ServiceData]
|
service_call_datas: AsyncGenerator[ServiceData]
|
||||||
force: bool
|
force: bool
|
||||||
max_length: int
|
max_length: int
|
||||||
which: Literal["brightness", "color", "both"]
|
attributes: LightControlAttributes
|
||||||
initial_sleep: bool = False
|
initial_sleep: bool = False
|
||||||
|
|
||||||
async def next_service_call_data(self) -> ServiceData | None:
|
async def next_service_call_data(self) -> ServiceData | None:
|
||||||
|
|
@ -161,7 +234,7 @@ class AdaptationData:
|
||||||
f"sleep_time={self.sleep_time}, "
|
f"sleep_time={self.sleep_time}, "
|
||||||
f"force={self.force}, "
|
f"force={self.force}, "
|
||||||
f"max_length={self.max_length}, "
|
f"max_length={self.max_length}, "
|
||||||
f"which={self.which}, "
|
f"attributes={self.attributes}, "
|
||||||
f"initial_sleep={self.initial_sleep}"
|
f"initial_sleep={self.initial_sleep}"
|
||||||
")"
|
")"
|
||||||
)
|
)
|
||||||
|
|
@ -171,20 +244,25 @@ class NoColorOrBrightnessInServiceDataError(Exception):
|
||||||
"""Exception raised when no color or brightness attributes are found in service data."""
|
"""Exception raised when no color or brightness attributes are found in service data."""
|
||||||
|
|
||||||
|
|
||||||
def _identify_lighting_type(
|
def _identify_light_control_attributes(
|
||||||
service_data: ServiceData,
|
service_data: ServiceData,
|
||||||
) -> Literal["brightness", "color", "both"]:
|
) -> LightControlAttributes:
|
||||||
"""Extract the 'which' attribute from the service data."""
|
"""Extract the 'which' attribute from the service data."""
|
||||||
has_brightness = ATTR_BRIGHTNESS in service_data
|
has_brightness = ATTR_BRIGHTNESS in service_data
|
||||||
has_color = any(attr in service_data for attr in COLOR_ATTRS)
|
has_color = any(attr in service_data for attr in COLOR_ATTRS)
|
||||||
if has_brightness and has_color:
|
|
||||||
return "both"
|
parameters = LightControlAttributes.NONE
|
||||||
|
|
||||||
if has_brightness:
|
if has_brightness:
|
||||||
return "brightness"
|
parameters |= LightControlAttributes.BRIGHTNESS
|
||||||
if has_color:
|
if has_color:
|
||||||
return "color"
|
parameters |= LightControlAttributes.COLOR
|
||||||
msg = f"Invalid service_data, no brightness or color attributes found: {service_data=}"
|
|
||||||
raise NoColorOrBrightnessInServiceDataError(msg)
|
if parameters == LightControlAttributes.NONE:
|
||||||
|
msg = f"Invalid service_data, no brightness or color attributes found: {service_data=}"
|
||||||
|
raise NoColorOrBrightnessInServiceDataError(msg)
|
||||||
|
|
||||||
|
return parameters
|
||||||
|
|
||||||
|
|
||||||
def prepare_adaptation_data(
|
def prepare_adaptation_data(
|
||||||
|
|
@ -197,6 +275,7 @@ def prepare_adaptation_data(
|
||||||
split: bool,
|
split: bool,
|
||||||
filter_by_state: bool,
|
filter_by_state: bool,
|
||||||
force: bool,
|
force: bool,
|
||||||
|
already_applied: LightControlAttributes = LightControlAttributes.NONE,
|
||||||
) -> AdaptationData:
|
) -> AdaptationData:
|
||||||
"""Prepares a data object carrying all data required to execute an adaptation."""
|
"""Prepares a data object carrying all data required to execute an adaptation."""
|
||||||
_LOGGER.debug(
|
_LOGGER.debug(
|
||||||
|
|
@ -214,13 +293,32 @@ def prepare_adaptation_data(
|
||||||
else:
|
else:
|
||||||
sleep_time = split_delay
|
sleep_time = split_delay
|
||||||
|
|
||||||
|
# Keep the original split timing, but omit attributes carried by an
|
||||||
|
# intercepted turn-on shared with other lights. Do this before state
|
||||||
|
# filtering: members can have different brightness/color already satisfied.
|
||||||
|
applied_attrs = (
|
||||||
|
BRIGHTNESS_ATTRS
|
||||||
|
if LightControlAttributes.BRIGHTNESS in already_applied
|
||||||
|
else set()
|
||||||
|
) | (COLOR_ATTRS if LightControlAttributes.COLOR in already_applied else set())
|
||||||
|
if applied_attrs:
|
||||||
|
service_datas = [
|
||||||
|
{key: value for key, value in data.items() if key not in applied_attrs}
|
||||||
|
for data in service_datas
|
||||||
|
]
|
||||||
|
service_datas = [
|
||||||
|
data
|
||||||
|
for data in service_datas
|
||||||
|
if _has_relevant_service_data_attributes(data)
|
||||||
|
]
|
||||||
|
|
||||||
service_data_iterator = _create_service_call_data_iterator(
|
service_data_iterator = _create_service_call_data_iterator(
|
||||||
hass,
|
hass,
|
||||||
service_datas,
|
service_datas,
|
||||||
filter_by_state,
|
filter_by_state,
|
||||||
)
|
)
|
||||||
|
|
||||||
lighting_type = _identify_lighting_type(service_data)
|
attributes = _identify_light_control_attributes(service_data)
|
||||||
|
|
||||||
return AdaptationData(
|
return AdaptationData(
|
||||||
entity_id=entity_id,
|
entity_id=entity_id,
|
||||||
|
|
@ -228,6 +326,59 @@ def prepare_adaptation_data(
|
||||||
sleep_time=sleep_time,
|
sleep_time=sleep_time,
|
||||||
service_call_datas=service_data_iterator,
|
service_call_datas=service_data_iterator,
|
||||||
force=force,
|
force=force,
|
||||||
max_length=service_datas_length,
|
max_length=len(service_datas),
|
||||||
which=lighting_type,
|
attributes=attributes & ~already_applied,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def manual_control_event_attribute_to_flags(
|
||||||
|
manual_control_attribute: bool | str,
|
||||||
|
) -> LightControlAttributes:
|
||||||
|
"""Convert manual control event data to light control attributes."""
|
||||||
|
if isinstance(manual_control_attribute, bool) and manual_control_attribute:
|
||||||
|
return LightControlAttributes.ALL
|
||||||
|
if manual_control_attribute == "brightness":
|
||||||
|
return LightControlAttributes.BRIGHTNESS
|
||||||
|
if manual_control_attribute == "color":
|
||||||
|
return LightControlAttributes.COLOR
|
||||||
|
return LightControlAttributes.NONE
|
||||||
|
|
||||||
|
|
||||||
|
def has_brightness_attribute(
|
||||||
|
service_data: ServiceData,
|
||||||
|
) -> bool:
|
||||||
|
"""Determine whether the service data contains brightness attributes."""
|
||||||
|
return any(attr in BRIGHTNESS_ATTRS for attr in service_data)
|
||||||
|
|
||||||
|
|
||||||
|
def has_color_attribute(
|
||||||
|
service_data: ServiceData,
|
||||||
|
) -> bool:
|
||||||
|
"""Determine whether the service data contains color attributes."""
|
||||||
|
return any(attr in COLOR_ATTRS for attr in service_data)
|
||||||
|
|
||||||
|
|
||||||
|
def has_effect_attribute(
|
||||||
|
service_data: ServiceData,
|
||||||
|
) -> bool:
|
||||||
|
"""Determine whether the service data contains effect attributes."""
|
||||||
|
return ATTR_FLASH in service_data or ATTR_EFFECT in service_data
|
||||||
|
|
||||||
|
|
||||||
|
def get_light_control_attributes(
|
||||||
|
service_data: ServiceData,
|
||||||
|
) -> LightControlAttributes:
|
||||||
|
"""Get the light control attributes affected by the service call data."""
|
||||||
|
parameters = LightControlAttributes.NONE
|
||||||
|
|
||||||
|
if has_brightness_attribute(service_data):
|
||||||
|
parameters |= LightControlAttributes.BRIGHTNESS
|
||||||
|
|
||||||
|
if has_color_attribute(service_data):
|
||||||
|
parameters |= LightControlAttributes.COLOR
|
||||||
|
|
||||||
|
if has_effect_attribute(service_data):
|
||||||
|
parameters |= LightControlAttributes.BRIGHTNESS
|
||||||
|
parameters |= LightControlAttributes.COLOR
|
||||||
|
|
||||||
|
return parameters
|
||||||
|
|
|
||||||
|
|
@ -9,30 +9,38 @@ import logging
|
||||||
import math
|
import math
|
||||||
from dataclasses import dataclass
|
from dataclasses import dataclass
|
||||||
from datetime import UTC, timedelta
|
from datetime import UTC, timedelta
|
||||||
from functools import partial
|
from enum import Enum
|
||||||
from typing import TYPE_CHECKING, Any, Literal, cast
|
from functools import cached_property, partial
|
||||||
|
from typing import Any, Literal, cast
|
||||||
|
|
||||||
|
import astral.sun
|
||||||
from homeassistant.util.color import (
|
from homeassistant.util.color import (
|
||||||
color_RGB_to_xy,
|
color_RGB_to_xy,
|
||||||
color_temperature_to_rgb,
|
color_temperature_to_rgb,
|
||||||
color_xy_to_hs,
|
color_xy_to_hs,
|
||||||
)
|
)
|
||||||
from propcache.api import cached_property
|
|
||||||
|
|
||||||
if TYPE_CHECKING:
|
|
||||||
import astral.location
|
|
||||||
|
|
||||||
# Same as homeassistant.const.SUN_EVENT_SUNRISE and homeassistant.const.SUN_EVENT_SUNSET
|
class SunEvent(str, Enum):
|
||||||
# We re-define them here to not depend on homeassistant in this file.
|
"""A set of sun events that happen during a day."""
|
||||||
SUN_EVENT_SUNRISE = "sunrise"
|
|
||||||
SUN_EVENT_SUNSET = "sunset"
|
|
||||||
|
|
||||||
SUN_EVENT_NOON = "solar_noon"
|
# Same as homeassistant.const.SUN_EVENT_SUNRISE and homeassistant.const.SUN_EVENT_SUNSET
|
||||||
SUN_EVENT_MIDNIGHT = "solar_midnight"
|
# We re-define them here to not depend on homeassistant in this file.
|
||||||
|
SUNRISE = "sunrise"
|
||||||
|
SUNSET = "sunset"
|
||||||
|
NOON = "solar_noon"
|
||||||
|
MIDNIGHT = "solar_midnight"
|
||||||
|
|
||||||
_ORDER = (SUN_EVENT_SUNRISE, SUN_EVENT_NOON, SUN_EVENT_SUNSET, SUN_EVENT_MIDNIGHT)
|
|
||||||
|
_ORDER = (SunEvent.SUNRISE, SunEvent.NOON, SunEvent.SUNSET, SunEvent.MIDNIGHT)
|
||||||
_ALLOWED_ORDERS = {_ORDER[i:] + _ORDER[:i] for i in range(len(_ORDER))}
|
_ALLOWED_ORDERS = {_ORDER[i:] + _ORDER[:i] for i in range(len(_ORDER))}
|
||||||
|
|
||||||
|
# On polar days without a sunrise/sunset, synthetic sun events are placed this
|
||||||
|
# far from solar noon (polar night) or solar midnight (midnight sun), giving a
|
||||||
|
# 1-hour synthetic "day" or "night" so the adaptation cycle keeps working.
|
||||||
|
_POLAR_SUN_EVENT_OFFSET = timedelta(minutes=30)
|
||||||
|
_POLAR_SUN_EVENT_EPSILON = timedelta(seconds=1)
|
||||||
|
|
||||||
utcnow: partial[datetime.datetime] = partial(datetime.datetime.now, UTC)
|
utcnow: partial[datetime.datetime] = partial(datetime.datetime.now, UTC)
|
||||||
utcnow.__doc__ = "Get now in UTC time."
|
utcnow.__doc__ = "Get now in UTC time."
|
||||||
|
|
||||||
|
|
@ -44,7 +52,7 @@ class SunEvents:
|
||||||
"""Track the state of the sun and associated light settings."""
|
"""Track the state of the sun and associated light settings."""
|
||||||
|
|
||||||
name: str
|
name: str
|
||||||
astral_location: astral.location.Location
|
astral_observer: astral.Observer
|
||||||
sunrise_time: datetime.time | None
|
sunrise_time: datetime.time | None
|
||||||
min_sunrise_time: datetime.time | None
|
min_sunrise_time: datetime.time | None
|
||||||
max_sunrise_time: datetime.time | None
|
max_sunrise_time: datetime.time | None
|
||||||
|
|
@ -55,13 +63,73 @@ class SunEvents:
|
||||||
sunset_offset: datetime.timedelta = datetime.timedelta()
|
sunset_offset: datetime.timedelta = datetime.timedelta()
|
||||||
timezone: datetime.tzinfo = UTC
|
timezone: datetime.tzinfo = UTC
|
||||||
|
|
||||||
|
def _astral_sunrise_or_sunset(
|
||||||
|
self,
|
||||||
|
dt: datetime.date,
|
||||||
|
event: Literal[SunEvent.SUNRISE, SunEvent.SUNSET],
|
||||||
|
offset: datetime.timedelta,
|
||||||
|
) -> datetime.datetime:
|
||||||
|
"""Return the astral sunrise/sunset, with a fallback for polar regions.
|
||||||
|
|
||||||
|
Above the polar circle the sun never crosses the horizon during polar
|
||||||
|
night and midnight sun, and `astral` raises a `ValueError` (see #1485).
|
||||||
|
On such days, synthesize a 1-hour "day" around solar noon (polar night)
|
||||||
|
or a 1-hour "night" around solar midnight (midnight sun), so the
|
||||||
|
adaptation cycle keeps working. The `(min/max)_(sunrise/sunset)_time`
|
||||||
|
options are applied on top of these synthetic times and can be used to
|
||||||
|
shape the resulting schedule. Configured offsets are limited to the
|
||||||
|
surrounding solar midnight/noon interval so they cannot invert the
|
||||||
|
required event order.
|
||||||
|
"""
|
||||||
|
astral_event = (
|
||||||
|
astral.sun.sunrise if event == SunEvent.SUNRISE else astral.sun.sunset
|
||||||
|
)
|
||||||
|
try:
|
||||||
|
return astral_event(self.astral_observer, dt) + offset
|
||||||
|
except ValueError:
|
||||||
|
noon = astral.sun.noon(self.astral_observer, dt)
|
||||||
|
midnight = astral.sun.midnight(self.astral_observer, dt)
|
||||||
|
next_midnight = astral.sun.midnight(
|
||||||
|
self.astral_observer,
|
||||||
|
dt + timedelta(days=1),
|
||||||
|
)
|
||||||
|
noon_elevation = astral.sun.elevation(self.astral_observer, noon)
|
||||||
|
midnight_elevation = astral.sun.elevation(self.astral_observer, midnight)
|
||||||
|
# The sum of the sun's highest and lowest elevation of the day is
|
||||||
|
# ≈2x the solar declination, so its sign robustly distinguishes
|
||||||
|
# midnight sun from polar night, even on the boundary days where
|
||||||
|
# one elevation hovers around the horizon.
|
||||||
|
if noon_elevation + midnight_elevation > 0:
|
||||||
|
# Midnight sun: the sun stays above the horizon all day.
|
||||||
|
synthetic = (
|
||||||
|
midnight + _POLAR_SUN_EVENT_OFFSET
|
||||||
|
if event == SunEvent.SUNRISE
|
||||||
|
else next_midnight - _POLAR_SUN_EVENT_OFFSET
|
||||||
|
)
|
||||||
|
else:
|
||||||
|
# Polar night: the sun stays below the horizon all day.
|
||||||
|
sign = -1 if event == SunEvent.SUNRISE else 1
|
||||||
|
synthetic = noon + sign * _POLAR_SUN_EVENT_OFFSET
|
||||||
|
|
||||||
|
lower, upper = (
|
||||||
|
(midnight, noon) if event == SunEvent.SUNRISE else (noon, next_midnight)
|
||||||
|
)
|
||||||
|
return min(
|
||||||
|
max(synthetic + offset, lower + _POLAR_SUN_EVENT_EPSILON),
|
||||||
|
upper - _POLAR_SUN_EVENT_EPSILON,
|
||||||
|
)
|
||||||
|
|
||||||
def sunrise(self, dt: datetime.date) -> datetime.datetime:
|
def sunrise(self, dt: datetime.date) -> datetime.datetime:
|
||||||
"""Return the (adjusted) sunrise time for the given datetime."""
|
"""Return the (adjusted) sunrise time for the given datetime."""
|
||||||
sunrise = (
|
sunrise = (
|
||||||
self.astral_location.sunrise(dt, local=False)
|
self._astral_sunrise_or_sunset(
|
||||||
|
dt,
|
||||||
|
SunEvent.SUNRISE,
|
||||||
|
self.sunrise_offset,
|
||||||
|
)
|
||||||
if self.sunrise_time is None
|
if self.sunrise_time is None
|
||||||
else self._replace_time(dt, self.sunrise_time)
|
else self._replace_time(dt, self.sunrise_time) + self.sunrise_offset
|
||||||
) + self.sunrise_offset
|
)
|
||||||
if self.min_sunrise_time is not None:
|
if self.min_sunrise_time is not None:
|
||||||
min_sunrise = self._replace_time(dt, self.min_sunrise_time)
|
min_sunrise = self._replace_time(dt, self.min_sunrise_time)
|
||||||
sunrise = max(min_sunrise, sunrise)
|
sunrise = max(min_sunrise, sunrise)
|
||||||
|
|
@ -73,10 +141,14 @@ class SunEvents:
|
||||||
def sunset(self, dt: datetime.date) -> datetime.datetime:
|
def sunset(self, dt: datetime.date) -> datetime.datetime:
|
||||||
"""Return the (adjusted) sunset time for the given datetime."""
|
"""Return the (adjusted) sunset time for the given datetime."""
|
||||||
sunset = (
|
sunset = (
|
||||||
self.astral_location.sunset(dt, local=False)
|
self._astral_sunrise_or_sunset(
|
||||||
|
dt,
|
||||||
|
SunEvent.SUNSET,
|
||||||
|
self.sunset_offset,
|
||||||
|
)
|
||||||
if self.sunset_time is None
|
if self.sunset_time is None
|
||||||
else self._replace_time(dt, self.sunset_time)
|
else self._replace_time(dt, self.sunset_time) + self.sunset_offset
|
||||||
) + self.sunset_offset
|
)
|
||||||
if self.min_sunset_time is not None:
|
if self.min_sunset_time is not None:
|
||||||
min_sunset = self._replace_time(dt, self.min_sunset_time)
|
min_sunset = self._replace_time(dt, self.min_sunset_time)
|
||||||
sunset = max(min_sunset, sunset)
|
sunset = max(min_sunset, sunset)
|
||||||
|
|
@ -109,8 +181,8 @@ class SunEvents:
|
||||||
and self.min_sunset_time is None
|
and self.min_sunset_time is None
|
||||||
and self.max_sunset_time is None
|
and self.max_sunset_time is None
|
||||||
):
|
):
|
||||||
solar_noon = self.astral_location.noon(dt, local=False)
|
solar_noon = astral.sun.noon(self.astral_observer, dt)
|
||||||
solar_midnight = self.astral_location.midnight(dt, local=False)
|
solar_midnight = astral.sun.midnight(self.astral_observer, dt)
|
||||||
return solar_noon, solar_midnight
|
return solar_noon, solar_midnight
|
||||||
|
|
||||||
if sunset is None:
|
if sunset is None:
|
||||||
|
|
@ -127,21 +199,21 @@ class SunEvents:
|
||||||
noon = midnight + timedelta(hours=12) * (1 if midnight.hour < 12 else -1)
|
noon = midnight + timedelta(hours=12) * (1 if midnight.hour < 12 else -1)
|
||||||
return noon, midnight
|
return noon, midnight
|
||||||
|
|
||||||
def sun_events(self, dt: datetime.datetime) -> list[tuple[str, float]]:
|
def sun_events(self, dt: datetime.datetime) -> list[tuple[SunEvent, float]]:
|
||||||
"""Get the four sun event's timestamps at 'dt'."""
|
"""Get the four sun event's timestamps at 'dt'."""
|
||||||
sunrise = self.sunrise(dt)
|
sunrise = self.sunrise(dt)
|
||||||
sunset = self.sunset(dt)
|
sunset = self.sunset(dt)
|
||||||
solar_noon, solar_midnight = self.noon_and_midnight(dt, sunset, sunrise)
|
solar_noon, solar_midnight = self.noon_and_midnight(dt, sunset, sunrise)
|
||||||
events = [
|
events: list[tuple[SunEvent, float]] = [
|
||||||
(SUN_EVENT_SUNRISE, sunrise.timestamp()),
|
(SunEvent.SUNRISE, sunrise.timestamp()),
|
||||||
(SUN_EVENT_SUNSET, sunset.timestamp()),
|
(SunEvent.SUNSET, sunset.timestamp()),
|
||||||
(SUN_EVENT_NOON, solar_noon.timestamp()),
|
(SunEvent.NOON, solar_noon.timestamp()),
|
||||||
(SUN_EVENT_MIDNIGHT, solar_midnight.timestamp()),
|
(SunEvent.MIDNIGHT, solar_midnight.timestamp()),
|
||||||
]
|
]
|
||||||
self._validate_sun_event_order(events)
|
self._validate_sun_event_order(events)
|
||||||
return events
|
return events
|
||||||
|
|
||||||
def _validate_sun_event_order(self, events: list[tuple[str, float]]) -> None:
|
def _validate_sun_event_order(self, events: list[tuple[SunEvent, float]]) -> None:
|
||||||
"""Check if the sun events are in the expected order."""
|
"""Check if the sun events are in the expected order."""
|
||||||
events = sorted(events, key=lambda x: x[1])
|
events = sorted(events, key=lambda x: x[1])
|
||||||
events_names, _ = zip(*events, strict=True)
|
events_names, _ = zip(*events, strict=True)
|
||||||
|
|
@ -155,7 +227,10 @@ class SunEvents:
|
||||||
_LOGGER.error(msg)
|
_LOGGER.error(msg)
|
||||||
raise ValueError(msg)
|
raise ValueError(msg)
|
||||||
|
|
||||||
def prev_and_next_events(self, dt: datetime.datetime) -> list[tuple[str, float]]:
|
def prev_and_next_events(
|
||||||
|
self,
|
||||||
|
dt: datetime.datetime,
|
||||||
|
) -> list[tuple[SunEvent, float]]:
|
||||||
"""Get the previous and next sun event."""
|
"""Get the previous and next sun event."""
|
||||||
events = [
|
events = [
|
||||||
event
|
event
|
||||||
|
|
@ -172,23 +247,26 @@ class SunEvents:
|
||||||
(_, prev_ts), (next_event, next_ts) = self.prev_and_next_events(dt)
|
(_, prev_ts), (next_event, next_ts) = self.prev_and_next_events(dt)
|
||||||
h, x = (
|
h, x = (
|
||||||
(prev_ts, next_ts)
|
(prev_ts, next_ts)
|
||||||
if next_event in (SUN_EVENT_SUNSET, SUN_EVENT_SUNRISE)
|
if next_event in (SunEvent.SUNSET, SunEvent.SUNRISE)
|
||||||
else (next_ts, prev_ts)
|
else (next_ts, prev_ts)
|
||||||
)
|
)
|
||||||
# k = -1 between sunset and sunrise (sun below horizon)
|
# k = -1 between sunset and sunrise (sun below horizon)
|
||||||
# k = 1 between sunrise and sunset (sun above horizon)
|
# k = 1 between sunrise and sunset (sun above horizon)
|
||||||
k = 1 if next_event in (SUN_EVENT_SUNSET, SUN_EVENT_NOON) else -1
|
k = 1 if next_event in (SunEvent.SUNSET, SunEvent.NOON) else -1
|
||||||
return k * (1 - ((target_ts - h) / (h - x)) ** 2)
|
return k * (1 - ((target_ts - h) / (h - x)) ** 2)
|
||||||
|
|
||||||
def closest_event(self, dt: datetime.datetime) -> tuple[str, float]:
|
def closest_event(
|
||||||
|
self,
|
||||||
|
dt: datetime.datetime,
|
||||||
|
) -> tuple[Literal[SunEvent.SUNRISE, SunEvent.SUNSET], float]:
|
||||||
"""Get the closest sunset or sunrise event."""
|
"""Get the closest sunset or sunrise event."""
|
||||||
(prev_event, prev_ts), (next_event, next_ts) = self.prev_and_next_events(dt)
|
(prev_event, prev_ts), (next_event, next_ts) = self.prev_and_next_events(dt)
|
||||||
if SUN_EVENT_SUNRISE in (prev_event, next_event):
|
if SunEvent.SUNRISE in (prev_event, next_event):
|
||||||
ts_event = prev_ts if prev_event == SUN_EVENT_SUNRISE else next_ts
|
ts_event = prev_ts if prev_event == SunEvent.SUNRISE else next_ts
|
||||||
return SUN_EVENT_SUNRISE, ts_event
|
return SunEvent.SUNRISE, ts_event
|
||||||
if SUN_EVENT_SUNSET in (prev_event, next_event):
|
if SunEvent.SUNSET in (prev_event, next_event):
|
||||||
ts_event = prev_ts if prev_event == SUN_EVENT_SUNSET else next_ts
|
ts_event = prev_ts if prev_event == SunEvent.SUNSET else next_ts
|
||||||
return SUN_EVENT_SUNSET, ts_event
|
return SunEvent.SUNSET, ts_event
|
||||||
msg = "No sunrise or sunset event found."
|
msg = "No sunrise or sunset event found."
|
||||||
raise ValueError(msg)
|
raise ValueError(msg)
|
||||||
|
|
||||||
|
|
@ -198,7 +276,7 @@ class SunLightSettings:
|
||||||
"""Track the state of the sun and associated light settings."""
|
"""Track the state of the sun and associated light settings."""
|
||||||
|
|
||||||
name: str
|
name: str
|
||||||
astral_location: astral.location.Location
|
astral_observer: astral.Observer
|
||||||
adapt_until_sleep: bool
|
adapt_until_sleep: bool
|
||||||
max_brightness: int
|
max_brightness: int
|
||||||
max_color_temp: int
|
max_color_temp: int
|
||||||
|
|
@ -226,7 +304,7 @@ class SunLightSettings:
|
||||||
"""Return the SunEvents object."""
|
"""Return the SunEvents object."""
|
||||||
return SunEvents(
|
return SunEvents(
|
||||||
name=self.name,
|
name=self.name,
|
||||||
astral_location=self.astral_location,
|
astral_observer=self.astral_observer,
|
||||||
sunrise_time=self.sunrise_time,
|
sunrise_time=self.sunrise_time,
|
||||||
sunrise_offset=self.sunrise_offset,
|
sunrise_offset=self.sunrise_offset,
|
||||||
min_sunrise_time=self.min_sunrise_time,
|
min_sunrise_time=self.min_sunrise_time,
|
||||||
|
|
@ -250,7 +328,7 @@ class SunLightSettings:
|
||||||
event, ts_event = self.sun.closest_event(dt)
|
event, ts_event = self.sun.closest_event(dt)
|
||||||
dark = self.brightness_mode_time_dark.total_seconds()
|
dark = self.brightness_mode_time_dark.total_seconds()
|
||||||
light = self.brightness_mode_time_light.total_seconds()
|
light = self.brightness_mode_time_light.total_seconds()
|
||||||
if event == SUN_EVENT_SUNRISE:
|
if event == SunEvent.SUNRISE:
|
||||||
brightness = scaled_tanh(
|
brightness = scaled_tanh(
|
||||||
dt.timestamp() - ts_event,
|
dt.timestamp() - ts_event,
|
||||||
x1=-dark,
|
x1=-dark,
|
||||||
|
|
@ -260,7 +338,7 @@ class SunLightSettings:
|
||||||
y_min=self.min_brightness,
|
y_min=self.min_brightness,
|
||||||
y_max=self.max_brightness,
|
y_max=self.max_brightness,
|
||||||
)
|
)
|
||||||
elif event == SUN_EVENT_SUNSET:
|
elif event == SunEvent.SUNSET:
|
||||||
brightness = scaled_tanh(
|
brightness = scaled_tanh(
|
||||||
dt.timestamp() - ts_event,
|
dt.timestamp() - ts_event,
|
||||||
x1=-light, # shifted timestamp for the start of sunset
|
x1=-light, # shifted timestamp for the start of sunset
|
||||||
|
|
@ -270,6 +348,9 @@ class SunLightSettings:
|
||||||
y_min=self.min_brightness,
|
y_min=self.min_brightness,
|
||||||
y_max=self.max_brightness,
|
y_max=self.max_brightness,
|
||||||
)
|
)
|
||||||
|
else:
|
||||||
|
msg = "Unsupported sun event"
|
||||||
|
raise ValueError(msg)
|
||||||
return clamp(brightness, self.min_brightness, self.max_brightness)
|
return clamp(brightness, self.min_brightness, self.max_brightness)
|
||||||
|
|
||||||
def _brightness_pct_linear(self, dt: datetime.datetime) -> float:
|
def _brightness_pct_linear(self, dt: datetime.datetime) -> float:
|
||||||
|
|
@ -278,7 +359,7 @@ class SunLightSettings:
|
||||||
# at ts_event + dt_end, brightness == end_brightness
|
# at ts_event + dt_end, brightness == end_brightness
|
||||||
dark = self.brightness_mode_time_dark.total_seconds()
|
dark = self.brightness_mode_time_dark.total_seconds()
|
||||||
light = self.brightness_mode_time_light.total_seconds()
|
light = self.brightness_mode_time_light.total_seconds()
|
||||||
if event == SUN_EVENT_SUNRISE:
|
if event == SunEvent.SUNRISE:
|
||||||
brightness = lerp(
|
brightness = lerp(
|
||||||
dt.timestamp() - ts_event,
|
dt.timestamp() - ts_event,
|
||||||
x1=-dark,
|
x1=-dark,
|
||||||
|
|
@ -286,7 +367,7 @@ class SunLightSettings:
|
||||||
y1=self.min_brightness,
|
y1=self.min_brightness,
|
||||||
y2=self.max_brightness,
|
y2=self.max_brightness,
|
||||||
)
|
)
|
||||||
elif event == SUN_EVENT_SUNSET:
|
elif event == SunEvent.SUNSET:
|
||||||
brightness = lerp(
|
brightness = lerp(
|
||||||
dt.timestamp() - ts_event,
|
dt.timestamp() - ts_event,
|
||||||
x1=-light,
|
x1=-light,
|
||||||
|
|
@ -294,6 +375,9 @@ class SunLightSettings:
|
||||||
y1=self.max_brightness,
|
y1=self.max_brightness,
|
||||||
y2=self.min_brightness,
|
y2=self.min_brightness,
|
||||||
)
|
)
|
||||||
|
else:
|
||||||
|
msg = "Unsupported sun event"
|
||||||
|
raise ValueError(msg)
|
||||||
return clamp(brightness, self.min_brightness, self.max_brightness)
|
return clamp(brightness, self.min_brightness, self.max_brightness)
|
||||||
|
|
||||||
def brightness_pct(self, dt: datetime.datetime, is_sleep: bool) -> float | None:
|
def brightness_pct(self, dt: datetime.datetime, is_sleep: bool) -> float | None:
|
||||||
|
|
@ -357,7 +441,8 @@ class SunLightSettings:
|
||||||
force_rgb_color = True
|
force_rgb_color = True
|
||||||
else:
|
else:
|
||||||
color_temp_kelvin = self.color_temp_kelvin(sun_position)
|
color_temp_kelvin = self.color_temp_kelvin(sun_position)
|
||||||
rgb_color = color_temperature_to_rgb(color_temp_kelvin)
|
r, g, b = color_temperature_to_rgb(color_temp_kelvin)
|
||||||
|
rgb_color = (round(r), round(g), round(b))
|
||||||
# backwards compatibility for versions < 1.3.1 - see #403
|
# backwards compatibility for versions < 1.3.1 - see #403
|
||||||
color_temp_mired: float = math.floor(1000000 / color_temp_kelvin)
|
color_temp_mired: float = math.floor(1000000 / color_temp_kelvin)
|
||||||
xy_color: tuple[float, float] = color_RGB_to_xy(*rgb_color)
|
xy_color: tuple[float, float] = color_RGB_to_xy(*rgb_color)
|
||||||
|
|
@ -513,5 +598,13 @@ def lerp(x: float, x1: float, x2: float, y1: float, y2: float) -> float:
|
||||||
|
|
||||||
|
|
||||||
def clamp(value: float, minimum: float, maximum: float) -> float:
|
def clamp(value: float, minimum: float, maximum: float) -> float:
|
||||||
"""Clamp value between minimum and maximum."""
|
"""Clamp value between minimum and maximum.
|
||||||
return max(minimum, min(value, maximum))
|
|
||||||
|
`minimum` is not assumed to be <= `maximum`: a user may intentionally
|
||||||
|
configure `min_brightness > max_brightness` (or the equivalent for color
|
||||||
|
temperature) for an inverted timescale (#1421). Sort the bounds first so
|
||||||
|
that case clamps against the real lower/upper bound instead of
|
||||||
|
collapsing to `minimum` for every input.
|
||||||
|
"""
|
||||||
|
low, high = (minimum, maximum) if minimum <= maximum else (maximum, minimum)
|
||||||
|
return max(low, min(value, high))
|
||||||
|
|
|
||||||
|
|
@ -3,11 +3,11 @@
|
||||||
import logging
|
import logging
|
||||||
from typing import Any
|
from typing import Any
|
||||||
|
|
||||||
import homeassistant.helpers.config_validation as cv
|
|
||||||
import voluptuous as vol
|
import voluptuous as vol
|
||||||
from homeassistant import config_entries
|
from homeassistant import config_entries, data_entry_flow
|
||||||
from homeassistant.const import CONF_NAME, MAJOR_VERSION, MINOR_VERSION
|
from homeassistant.const import CONF_NAME
|
||||||
from homeassistant.core import callback
|
from homeassistant.core import callback
|
||||||
|
from homeassistant.helpers.selector import EntitySelector, EntitySelectorConfig
|
||||||
|
|
||||||
from .const import ( # pylint: disable=unused-import
|
from .const import ( # pylint: disable=unused-import
|
||||||
BASIC_OPTIONS,
|
BASIC_OPTIONS,
|
||||||
|
|
@ -17,25 +17,65 @@ from .const import ( # pylint: disable=unused-import
|
||||||
NONE_STR,
|
NONE_STR,
|
||||||
VALIDATION_TUPLES,
|
VALIDATION_TUPLES,
|
||||||
)
|
)
|
||||||
from .helpers import get_friendly_name
|
from .switch import validate
|
||||||
from .switch import _supported_features, validate
|
|
||||||
|
|
||||||
_LOGGER = logging.getLogger(__name__)
|
_LOGGER = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
OPTIONS_FLOW_DESCRIPTION_PLACEHOLDERS = {
|
||||||
|
"webapp_url": "https://basnijholt.github.io/adaptive-lighting",
|
||||||
|
"docs_url": "https://github.com/basnijholt/adaptive-lighting#readme",
|
||||||
|
}
|
||||||
|
ADVANCED_OPTIONS_SECTION = "advanced"
|
||||||
|
|
||||||
|
|
||||||
class ConfigFlow(config_entries.ConfigFlow, domain=DOMAIN):
|
class ConfigFlow(config_entries.ConfigFlow, domain=DOMAIN):
|
||||||
"""Handle a config flow for Adaptive Lighting."""
|
"""Handle a config flow for Adaptive Lighting."""
|
||||||
|
|
||||||
VERSION = 1
|
VERSION = 1
|
||||||
|
|
||||||
|
source_options: dict[str, Any] | None = None
|
||||||
|
|
||||||
async def async_step_user(self, user_input: dict[str, Any] | None = None):
|
async def async_step_user(self, user_input: dict[str, Any] | None = None):
|
||||||
"""Handle the initial step."""
|
"""Handle the initial step."""
|
||||||
|
if user_input is None and self._async_current_entries():
|
||||||
|
return await self.async_step_menu()
|
||||||
|
return await self.async_step_wait_for_name(user_input)
|
||||||
|
|
||||||
|
async def async_step_menu(self, user_input: dict[str, Any] | None = None):
|
||||||
|
"""Handle the menu step."""
|
||||||
|
if user_input is not None:
|
||||||
|
if user_input["action"] != "new":
|
||||||
|
entry_id = user_input["action"]
|
||||||
|
entry = self.hass.config_entries.async_get_entry(entry_id)
|
||||||
|
if entry:
|
||||||
|
self.source_options = dict(entry.options)
|
||||||
|
return await self.async_step_wait_for_name()
|
||||||
|
|
||||||
|
entries = self._async_current_entries()
|
||||||
|
options = {"new": "Create new instance"}
|
||||||
|
for entry in entries:
|
||||||
|
options[entry.entry_id] = f"Duplicate '{entry.title}'"
|
||||||
|
|
||||||
|
return self.async_show_form(
|
||||||
|
step_id="menu",
|
||||||
|
data_schema=vol.Schema(
|
||||||
|
{vol.Required("action", default="new"): vol.In(options)},
|
||||||
|
),
|
||||||
|
)
|
||||||
|
|
||||||
|
async def async_step_wait_for_name(self, user_input: dict[str, Any] | None = None):
|
||||||
|
"""Handle the name step."""
|
||||||
errors: dict[str, str] = {}
|
errors: dict[str, str] = {}
|
||||||
|
|
||||||
if user_input is not None:
|
if user_input is not None:
|
||||||
await self.async_set_unique_id(user_input[CONF_NAME])
|
await self.async_set_unique_id(user_input[CONF_NAME])
|
||||||
self._abort_if_unique_id_configured()
|
self._abort_if_unique_id_configured()
|
||||||
return self.async_create_entry(title=user_input[CONF_NAME], data=user_input)
|
options = self.source_options
|
||||||
|
return self.async_create_entry(
|
||||||
|
title=user_input[CONF_NAME],
|
||||||
|
data=user_input,
|
||||||
|
options=options,
|
||||||
|
)
|
||||||
|
|
||||||
return self.async_show_form(
|
return self.async_show_form(
|
||||||
step_id="user",
|
step_id="user",
|
||||||
|
|
@ -63,13 +103,10 @@ class ConfigFlow(config_entries.ConfigFlow, domain=DOMAIN):
|
||||||
@staticmethod
|
@staticmethod
|
||||||
@callback
|
@callback
|
||||||
def async_get_options_flow(
|
def async_get_options_flow(
|
||||||
config_entry: config_entries.ConfigEntry,
|
config_entry: config_entries.ConfigEntry, # noqa: ARG004
|
||||||
) -> "OptionsFlowHandler":
|
) -> "OptionsFlowHandler":
|
||||||
"""Get the options flow for this handler."""
|
"""Get the options flow for this handler."""
|
||||||
if (MAJOR_VERSION, MINOR_VERSION) >= (2024, 12):
|
return OptionsFlowHandler()
|
||||||
# https://github.com/home-assistant/core/pull/129651
|
|
||||||
return OptionsFlowHandler()
|
|
||||||
return OptionsFlowHandler(config_entry)
|
|
||||||
|
|
||||||
|
|
||||||
def validate_options(user_input: dict[str, Any], errors: dict[str, str]) -> None:
|
def validate_options(user_input: dict[str, Any], errors: dict[str, str]) -> None:
|
||||||
|
|
@ -92,33 +129,38 @@ def validate_options(user_input: dict[str, Any], errors: dict[str, str]) -> None
|
||||||
class OptionsFlowHandler(config_entries.OptionsFlow):
|
class OptionsFlowHandler(config_entries.OptionsFlow):
|
||||||
"""Handle a option flow for Adaptive Lighting."""
|
"""Handle a option flow for Adaptive Lighting."""
|
||||||
|
|
||||||
def __init__(self, *args: Any, **kwargs: Any) -> None:
|
def _flatten_section_input(self, user_input: dict[str, Any]) -> dict[str, Any]:
|
||||||
"""Initialize options flow."""
|
"""Flatten section input by merging nested 'advanced' dict into top level."""
|
||||||
if (MAJOR_VERSION, MINOR_VERSION) >= (2024, 12):
|
flat_input: dict[str, Any] = {}
|
||||||
super().__init__(*args, **kwargs)
|
for key, value in user_input.items():
|
||||||
# https://github.com/home-assistant/core/pull/129651
|
if key == ADVANCED_OPTIONS_SECTION and isinstance(value, dict):
|
||||||
else:
|
flat_input.update(value)
|
||||||
self.config_entry = args[0]
|
else:
|
||||||
self._basic_options: dict[str, Any] = {}
|
flat_input[key] = value
|
||||||
self._all_lights_with_names: dict[str, str] = {}
|
return flat_input
|
||||||
|
|
||||||
def _prepare_lights_schema(self) -> tuple[dict[str, Any], dict[str, str]]:
|
async def async_step_init(self, user_input: dict[str, Any] | None = None):
|
||||||
"""Get available lights and build the multi-select schema.
|
"""Handle options flow with collapsible sections."""
|
||||||
|
|
||||||
Returns tuple of (to_replace dict for schema, errors dict).
|
|
||||||
Also populates self._all_lights_with_names.
|
|
||||||
"""
|
|
||||||
conf = self.config_entry
|
conf = self.config_entry
|
||||||
data = validate(conf)
|
data = validate(conf)
|
||||||
|
form_data = {**conf.data, **conf.options}
|
||||||
|
if conf.source == config_entries.SOURCE_IMPORT:
|
||||||
|
return self.async_show_form(
|
||||||
|
step_id="init",
|
||||||
|
data_schema=None,
|
||||||
|
description_placeholders=OPTIONS_FLOW_DESCRIPTION_PLACEHOLDERS,
|
||||||
|
)
|
||||||
errors: dict[str, str] = {}
|
errors: dict[str, str] = {}
|
||||||
|
if user_input is not None:
|
||||||
|
flat_input = self._flatten_section_input(user_input)
|
||||||
|
validate_options(flat_input, errors)
|
||||||
|
if not errors:
|
||||||
|
return self.async_create_entry(title="", data=flat_input)
|
||||||
|
data.update(flat_input)
|
||||||
|
form_data.update(flat_input)
|
||||||
|
|
||||||
self._all_lights_with_names = {
|
# Validate that all configured lights still exist
|
||||||
light: get_friendly_name(self.hass, light)
|
all_lights = set(self.hass.states.async_entity_ids("light"))
|
||||||
for light in self.hass.states.async_entity_ids("light")
|
|
||||||
if _supported_features(self.hass, light)
|
|
||||||
}
|
|
||||||
all_lights = list(self._all_lights_with_names.keys())
|
|
||||||
|
|
||||||
for configured_light in data[CONF_LIGHTS]:
|
for configured_light in data[CONF_LIGHTS]:
|
||||||
if configured_light not in all_lights:
|
if configured_light not in all_lights:
|
||||||
errors[CONF_LIGHTS] = "entity_missing"
|
errors[CONF_LIGHTS] = "entity_missing"
|
||||||
|
|
@ -127,99 +169,34 @@ class OptionsFlowHandler(config_entries.OptionsFlow):
|
||||||
data[CONF_NAME],
|
data[CONF_NAME],
|
||||||
configured_light,
|
configured_light,
|
||||||
)
|
)
|
||||||
all_lights.append(configured_light)
|
|
||||||
self._all_lights_with_names[configured_light] = configured_light
|
|
||||||
|
|
||||||
light_options = {
|
to_replace: dict[str, Any] = {
|
||||||
entity_id: f"{name} ({entity_id})"
|
CONF_LIGHTS: EntitySelector(
|
||||||
for entity_id, name in self._all_lights_with_names.items()
|
EntitySelectorConfig(
|
||||||
|
domain="light",
|
||||||
|
multiple=True,
|
||||||
|
),
|
||||||
|
),
|
||||||
}
|
}
|
||||||
to_replace = {CONF_LIGHTS: cv.multi_select(light_options)}
|
|
||||||
return to_replace, errors
|
|
||||||
|
|
||||||
def _build_options_schema(
|
basic_schema: dict[vol.Marker, Any] = {}
|
||||||
self,
|
advanced_schema: dict[vol.Marker, Any] = {}
|
||||||
to_replace: dict[str, Any],
|
|
||||||
include: set[str] | None = None,
|
|
||||||
exclude: set[str] | None = None,
|
|
||||||
) -> vol.Schema:
|
|
||||||
"""Build schema for specified options.
|
|
||||||
|
|
||||||
Args:
|
|
||||||
to_replace: Dict of option names to replacement validators.
|
|
||||||
include: If provided, only include these option names.
|
|
||||||
exclude: If provided, exclude these option names.
|
|
||||||
|
|
||||||
"""
|
|
||||||
conf = self.config_entry
|
|
||||||
|
|
||||||
options_schema = {}
|
|
||||||
for name, default, validation in VALIDATION_TUPLES:
|
for name, default, validation in VALIDATION_TUPLES:
|
||||||
# Filter based on include/exclude
|
key = vol.Optional(name, default=form_data.get(name, default))
|
||||||
if include is not None and name not in include:
|
schema = basic_schema if name in BASIC_OPTIONS else advanced_schema
|
||||||
continue
|
schema[key] = to_replace.get(name, validation)
|
||||||
if exclude is not None and name in exclude:
|
|
||||||
continue
|
|
||||||
|
|
||||||
key = vol.Optional(name, default=conf.options.get(name, default))
|
full_schema = {
|
||||||
value = to_replace.get(name, validation)
|
**basic_schema,
|
||||||
options_schema[key] = value
|
vol.Required(ADVANCED_OPTIONS_SECTION): data_entry_flow.section(
|
||||||
|
vol.Schema(advanced_schema),
|
||||||
|
data_entry_flow.SectionConfig(collapsed=True),
|
||||||
|
),
|
||||||
|
}
|
||||||
|
|
||||||
return vol.Schema(options_schema)
|
|
||||||
|
|
||||||
async def async_step_init(self, user_input: dict[str, Any] | None = None):
|
|
||||||
"""Handle options flow - Step 1: Basic options."""
|
|
||||||
conf = self.config_entry
|
|
||||||
if conf.source == config_entries.SOURCE_IMPORT:
|
|
||||||
return self.async_show_form(step_id="init", data_schema=None)
|
|
||||||
|
|
||||||
to_replace, errors = self._prepare_lights_schema()
|
|
||||||
|
|
||||||
if user_input is not None:
|
|
||||||
validate_options(user_input, errors)
|
|
||||||
if not errors:
|
|
||||||
self._basic_options = user_input
|
|
||||||
# Show menu to choose between advanced options or finish
|
|
||||||
return self.async_show_menu(
|
|
||||||
step_id="init",
|
|
||||||
menu_options=["advanced", "finish"],
|
|
||||||
)
|
|
||||||
|
|
||||||
basic_schema = self._build_options_schema(to_replace, include=BASIC_OPTIONS)
|
|
||||||
return self.async_show_form(
|
return self.async_show_form(
|
||||||
step_id="init",
|
step_id="init",
|
||||||
data_schema=basic_schema,
|
data_schema=vol.Schema(full_schema),
|
||||||
errors=errors,
|
errors=errors,
|
||||||
|
description_placeholders=OPTIONS_FLOW_DESCRIPTION_PLACEHOLDERS,
|
||||||
)
|
)
|
||||||
|
|
||||||
async def async_step_advanced(self, user_input: dict[str, Any] | None = None):
|
|
||||||
"""Handle options flow - Step 2: Advanced options (optional)."""
|
|
||||||
errors: dict[str, str] = {}
|
|
||||||
|
|
||||||
if user_input is not None:
|
|
||||||
# Merge basic + advanced options
|
|
||||||
combined = {**self._basic_options, **user_input}
|
|
||||||
validate_options(combined, errors)
|
|
||||||
if not errors:
|
|
||||||
return self.async_create_entry(title="", data=combined)
|
|
||||||
|
|
||||||
# Need to_replace for building schema (though advanced step doesn't use lights)
|
|
||||||
to_replace, _ = self._prepare_lights_schema()
|
|
||||||
advanced_schema = self._build_options_schema(to_replace, exclude=BASIC_OPTIONS)
|
|
||||||
return self.async_show_form(
|
|
||||||
step_id="advanced",
|
|
||||||
data_schema=advanced_schema,
|
|
||||||
errors=errors,
|
|
||||||
)
|
|
||||||
|
|
||||||
async def async_step_finish(
|
|
||||||
self,
|
|
||||||
user_input: dict[str, Any] | None = None, # noqa: ARG002
|
|
||||||
):
|
|
||||||
"""Finish configuration without advanced options."""
|
|
||||||
errors: dict[str, str] = {}
|
|
||||||
validate_options(self._basic_options, errors)
|
|
||||||
if not errors:
|
|
||||||
return self.async_create_entry(title="", data=self._basic_options)
|
|
||||||
# If validation fails, go back to init
|
|
||||||
return await self.async_step_init()
|
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
"""Constants for the Adaptive Lighting integration."""
|
"""Constants for the Adaptive Lighting integration."""
|
||||||
|
|
||||||
from datetime import timedelta
|
from datetime import timedelta
|
||||||
|
from enum import Enum
|
||||||
from typing import Any
|
from typing import Any
|
||||||
|
|
||||||
import homeassistant.helpers.config_validation as cv
|
import homeassistant.helpers.config_validation as cv
|
||||||
|
|
@ -16,6 +17,14 @@ ICON_SLEEP = "mdi:sleep"
|
||||||
|
|
||||||
DOMAIN = "adaptive_lighting"
|
DOMAIN = "adaptive_lighting"
|
||||||
|
|
||||||
|
|
||||||
|
class TakeOverControlMode(Enum):
|
||||||
|
"""Modes for pausing adaptation when control of a light is taken over externally."""
|
||||||
|
|
||||||
|
PAUSE_ALL = "pause_all"
|
||||||
|
PAUSE_CHANGED = "pause_changed"
|
||||||
|
|
||||||
|
|
||||||
DOCS = {CONF_ENTITY_ID: "Entity ID of the switch. 📝"}
|
DOCS = {CONF_ENTITY_ID: "Entity ID of the switch. 📝"}
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -34,6 +43,7 @@ DOCS[CONF_DETECT_NON_HA_CHANGES] = (
|
||||||
"Needs `take_over_control` enabled. 🕵️ "
|
"Needs `take_over_control` enabled. 🕵️ "
|
||||||
"Caution: ⚠️ Some lights might falsely indicate an 'on' state, which could result "
|
"Caution: ⚠️ Some lights might falsely indicate an 'on' state, which could result "
|
||||||
"in lights turning on unexpectedly. "
|
"in lights turning on unexpectedly. "
|
||||||
|
"Note that this calls `homeassistant.update_entity` every `interval`! "
|
||||||
"Disable this feature if you encounter such issues."
|
"Disable this feature if you encounter such issues."
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
@ -85,11 +95,21 @@ CONF_ADAPT_ONLY_ON_BARE_TURN_ON, DEFAULT_ADAPT_ONLY_ON_BARE_TURN_ON = (
|
||||||
DOCS[CONF_ADAPT_ONLY_ON_BARE_TURN_ON] = (
|
DOCS[CONF_ADAPT_ONLY_ON_BARE_TURN_ON] = (
|
||||||
"When turning lights on initially. If set to `true`, AL adapts only if `light.turn_on` is "
|
"When turning lights on initially. If set to `true`, AL adapts only if `light.turn_on` is "
|
||||||
"invoked without specifying color or brightness. ❌🌈 "
|
"invoked without specifying color or brightness. ❌🌈 "
|
||||||
"This e.g., prevents adaptation when activating a scene. "
|
"This e.g., prevents adaptation when activating a scene and marks the light as manually controlled. "
|
||||||
"If `false`, AL adapts regardless of the presence of color or brightness in the initial `service_data`. "
|
"If `false`, AL adapts regardless of the presence of color or brightness in the initial `service_data`. "
|
||||||
"Needs `take_over_control` enabled. 🕵️"
|
"Needs `take_over_control` enabled. 🕵️"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
CONF_MANUAL_CONTROL_ON_EXTERNAL_TURN_ON, DEFAULT_MANUAL_CONTROL_ON_EXTERNAL_TURN_ON = (
|
||||||
|
"manual_control_on_external_turn_on",
|
||||||
|
False,
|
||||||
|
)
|
||||||
|
DOCS[CONF_MANUAL_CONTROL_ON_EXTERNAL_TURN_ON] = (
|
||||||
|
"Treat turn-ons without a matching Home Assistant `light.turn_on` context as "
|
||||||
|
"manual control. Normal manual-control resets apply. Still allows "
|
||||||
|
"`detect_non_ha_changes` for already-on lights. Needs `take_over_control` enabled. 🕵️"
|
||||||
|
)
|
||||||
|
|
||||||
CONF_PREFER_RGB_COLOR, DEFAULT_PREFER_RGB_COLOR = "prefer_rgb_color", False
|
CONF_PREFER_RGB_COLOR, DEFAULT_PREFER_RGB_COLOR = "prefer_rgb_color", False
|
||||||
DOCS[CONF_PREFER_RGB_COLOR] = (
|
DOCS[CONF_PREFER_RGB_COLOR] = (
|
||||||
"Whether to prefer RGB color adjustment over "
|
"Whether to prefer RGB color adjustment over "
|
||||||
|
|
@ -188,9 +208,19 @@ DOCS[CONF_BRIGHTNESS_MODE_TIME_LIGHT] = (
|
||||||
|
|
||||||
CONF_TAKE_OVER_CONTROL, DEFAULT_TAKE_OVER_CONTROL = "take_over_control", True
|
CONF_TAKE_OVER_CONTROL, DEFAULT_TAKE_OVER_CONTROL = "take_over_control", True
|
||||||
DOCS[CONF_TAKE_OVER_CONTROL] = (
|
DOCS[CONF_TAKE_OVER_CONTROL] = (
|
||||||
"Disable Adaptive Lighting if another source calls `light.turn_on` while lights "
|
"Pause adaptation of individual lights and hand over (manual) control to other sources that "
|
||||||
"are on and being adapted. Note that this calls `homeassistant.update_entity` "
|
"issue `light.turn_on` calls for lights that are on. 🔒"
|
||||||
"every `interval`! 🔒"
|
)
|
||||||
|
|
||||||
|
CONF_TAKE_OVER_CONTROL_MODE, DEFAULT_TAKE_OVER_CONTROL_MODE = (
|
||||||
|
"take_over_control_mode",
|
||||||
|
TakeOverControlMode.PAUSE_ALL.value,
|
||||||
|
)
|
||||||
|
DOCS[CONF_TAKE_OVER_CONTROL_MODE] = (
|
||||||
|
"The adaptation pausing mode when other sources change brightness and/or color of lights. "
|
||||||
|
"`pause_all` always pauses both brightness and color adaptation. "
|
||||||
|
"`pause_changed` pauses the adaptation of only the changed attributes and continues adapting "
|
||||||
|
"unchanged attributes, e.g., continues color adaptation when only brightness was changed."
|
||||||
)
|
)
|
||||||
|
|
||||||
CONF_TRANSITION, DEFAULT_TRANSITION = "transition", 45
|
CONF_TRANSITION, DEFAULT_TRANSITION = "transition", 45
|
||||||
|
|
@ -223,6 +253,15 @@ DOCS[CONF_AUTORESET_CONTROL] = (
|
||||||
"Set to 0 to disable. ⏲️"
|
"Set to 0 to disable. ⏲️"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
(
|
||||||
|
CONF_RESET_MANUAL_CONTROL_ON_SLEEP_MODE_CHANGE,
|
||||||
|
DEFAULT_RESET_MANUAL_CONTROL_ON_SLEEP_MODE_CHANGE,
|
||||||
|
) = ("reset_manual_control_on_sleep_mode_change", True)
|
||||||
|
DOCS[CONF_RESET_MANUAL_CONTROL_ON_SLEEP_MODE_CHANGE] = (
|
||||||
|
"Reset manual control when the sleep mode switch is toggled. "
|
||||||
|
"Set to `false` to preserve manual control across sleep mode changes. 😴"
|
||||||
|
)
|
||||||
|
|
||||||
CONF_SKIP_REDUNDANT_COMMANDS, DEFAULT_SKIP_REDUNDANT_COMMANDS = (
|
CONF_SKIP_REDUNDANT_COMMANDS, DEFAULT_SKIP_REDUNDANT_COMMANDS = (
|
||||||
"skip_redundant_commands",
|
"skip_redundant_commands",
|
||||||
False,
|
False,
|
||||||
|
|
@ -252,6 +291,14 @@ DOCS[CONF_MULTI_LIGHT_INTERCEPT] = (
|
||||||
"Requires `intercept` to be enabled."
|
"Requires `intercept` to be enabled."
|
||||||
)
|
)
|
||||||
|
|
||||||
|
CONF_EXPAND_LIGHT_GROUPS, DEFAULT_EXPAND_LIGHT_GROUPS = "expand_light_groups", True
|
||||||
|
DOCS[CONF_EXPAND_LIGHT_GROUPS] = (
|
||||||
|
"Expand light groups to their members (`true`, default). Set `false` to send "
|
||||||
|
"commands to the group and track manual control for the group. Explicit member "
|
||||||
|
"targets in services stay individual targets."
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
SLEEP_MODE_SWITCH = "sleep_mode_switch"
|
SLEEP_MODE_SWITCH = "sleep_mode_switch"
|
||||||
ADAPT_COLOR_SWITCH = "adapt_color_switch"
|
ADAPT_COLOR_SWITCH = "adapt_color_switch"
|
||||||
ADAPT_BRIGHTNESS_SWITCH = "adapt_brightness_switch"
|
ADAPT_BRIGHTNESS_SWITCH = "adapt_brightness_switch"
|
||||||
|
|
@ -279,8 +326,22 @@ DOCS[CONF_USE_DEFAULTS] = (
|
||||||
|
|
||||||
TURNING_OFF_DELAY = 5
|
TURNING_OFF_DELAY = 5
|
||||||
|
|
||||||
# Basic options shown in the first step of the options flow
|
DOCS_MANUAL_CONTROL = {
|
||||||
# These are the most commonly used options that most users will want to configure
|
CONF_ENTITY_ID: "The `entity_id` of the switch in which to (un)mark the "
|
||||||
|
"light as being `manually controlled`. 📝",
|
||||||
|
CONF_LIGHTS: "entity_id(s) of lights, if not specified, all lights in the "
|
||||||
|
"switch are selected. 💡",
|
||||||
|
CONF_MANUAL_CONTROL: 'Whether to add ("true") or remove ("false") all '
|
||||||
|
'adapted attributes of the light from the "manual_control" list, or the '
|
||||||
|
"name of an attribute for selective addition. 🔒",
|
||||||
|
}
|
||||||
|
|
||||||
|
DOCS_APPLY = {
|
||||||
|
CONF_ENTITY_ID: "The `entity_id` of the switch with the settings to apply. 📝",
|
||||||
|
CONF_LIGHTS: "A light (or list of lights) to apply the settings to. 💡",
|
||||||
|
}
|
||||||
|
|
||||||
|
# Basic options shown at top level in options flow (not in collapsed section)
|
||||||
BASIC_OPTIONS: set[str] = {
|
BASIC_OPTIONS: set[str] = {
|
||||||
CONF_LIGHTS,
|
CONF_LIGHTS,
|
||||||
CONF_MIN_BRIGHTNESS,
|
CONF_MIN_BRIGHTNESS,
|
||||||
|
|
@ -293,20 +354,6 @@ BASIC_OPTIONS: set[str] = {
|
||||||
CONF_INTERVAL,
|
CONF_INTERVAL,
|
||||||
}
|
}
|
||||||
|
|
||||||
DOCS_MANUAL_CONTROL = {
|
|
||||||
CONF_ENTITY_ID: "The `entity_id` of the switch in which to (un)mark the "
|
|
||||||
"light as being `manually controlled`. 📝",
|
|
||||||
CONF_LIGHTS: "entity_id(s) of lights, if not specified, all lights in the "
|
|
||||||
"switch are selected. 💡",
|
|
||||||
CONF_MANUAL_CONTROL: 'Whether to add ("true") or remove ("false") the '
|
|
||||||
'light from the "manual_control" list. 🔒',
|
|
||||||
}
|
|
||||||
|
|
||||||
DOCS_APPLY = {
|
|
||||||
CONF_ENTITY_ID: "The `entity_id` of the switch with the settings to apply. 📝",
|
|
||||||
CONF_LIGHTS: "A light (or list of lights) to apply the settings to. 💡",
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
def int_between(min_int: int, max_int: int) -> vol.All:
|
def int_between(min_int: int, max_int: int) -> vol.All:
|
||||||
"""Return an integer between 'min_int' and 'max_int'."""
|
"""Return an integer between 'min_int' and 'max_int'."""
|
||||||
|
|
@ -365,6 +412,20 @@ VALIDATION_TUPLES: list[tuple[str, Any, Any]] = [
|
||||||
(CONF_BRIGHTNESS_MODE_TIME_DARK, DEFAULT_BRIGHTNESS_MODE_TIME_DARK, int),
|
(CONF_BRIGHTNESS_MODE_TIME_DARK, DEFAULT_BRIGHTNESS_MODE_TIME_DARK, int),
|
||||||
(CONF_BRIGHTNESS_MODE_TIME_LIGHT, DEFAULT_BRIGHTNESS_MODE_TIME_LIGHT, int),
|
(CONF_BRIGHTNESS_MODE_TIME_LIGHT, DEFAULT_BRIGHTNESS_MODE_TIME_LIGHT, int),
|
||||||
(CONF_TAKE_OVER_CONTROL, DEFAULT_TAKE_OVER_CONTROL, bool),
|
(CONF_TAKE_OVER_CONTROL, DEFAULT_TAKE_OVER_CONTROL, bool),
|
||||||
|
(
|
||||||
|
CONF_TAKE_OVER_CONTROL_MODE,
|
||||||
|
DEFAULT_TAKE_OVER_CONTROL_MODE,
|
||||||
|
selector.SelectSelector( # type: ignore[arg-type]
|
||||||
|
selector.SelectSelectorConfig(
|
||||||
|
options=[
|
||||||
|
TakeOverControlMode.PAUSE_ALL.value,
|
||||||
|
TakeOverControlMode.PAUSE_CHANGED.value,
|
||||||
|
],
|
||||||
|
multiple=False,
|
||||||
|
mode=selector.SelectSelectorMode.DROPDOWN,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
(CONF_DETECT_NON_HA_CHANGES, DEFAULT_DETECT_NON_HA_CHANGES, bool),
|
(CONF_DETECT_NON_HA_CHANGES, DEFAULT_DETECT_NON_HA_CHANGES, bool),
|
||||||
(
|
(
|
||||||
CONF_AUTORESET_CONTROL,
|
CONF_AUTORESET_CONTROL,
|
||||||
|
|
@ -373,6 +434,16 @@ VALIDATION_TUPLES: list[tuple[str, Any, Any]] = [
|
||||||
),
|
),
|
||||||
(CONF_ONLY_ONCE, DEFAULT_ONLY_ONCE, bool),
|
(CONF_ONLY_ONCE, DEFAULT_ONLY_ONCE, bool),
|
||||||
(CONF_ADAPT_ONLY_ON_BARE_TURN_ON, DEFAULT_ADAPT_ONLY_ON_BARE_TURN_ON, bool),
|
(CONF_ADAPT_ONLY_ON_BARE_TURN_ON, DEFAULT_ADAPT_ONLY_ON_BARE_TURN_ON, bool),
|
||||||
|
(
|
||||||
|
CONF_MANUAL_CONTROL_ON_EXTERNAL_TURN_ON,
|
||||||
|
DEFAULT_MANUAL_CONTROL_ON_EXTERNAL_TURN_ON,
|
||||||
|
bool,
|
||||||
|
),
|
||||||
|
(
|
||||||
|
CONF_RESET_MANUAL_CONTROL_ON_SLEEP_MODE_CHANGE,
|
||||||
|
DEFAULT_RESET_MANUAL_CONTROL_ON_SLEEP_MODE_CHANGE,
|
||||||
|
bool,
|
||||||
|
),
|
||||||
(CONF_SEPARATE_TURN_ON_COMMANDS, DEFAULT_SEPARATE_TURN_ON_COMMANDS, bool),
|
(CONF_SEPARATE_TURN_ON_COMMANDS, DEFAULT_SEPARATE_TURN_ON_COMMANDS, bool),
|
||||||
(CONF_SEND_SPLIT_DELAY, DEFAULT_SEND_SPLIT_DELAY, int_between(0, 10000)),
|
(CONF_SEND_SPLIT_DELAY, DEFAULT_SEND_SPLIT_DELAY, int_between(0, 10000)),
|
||||||
(CONF_ADAPT_DELAY, DEFAULT_ADAPT_DELAY, cv.positive_float),
|
(CONF_ADAPT_DELAY, DEFAULT_ADAPT_DELAY, cv.positive_float),
|
||||||
|
|
@ -384,6 +455,7 @@ VALIDATION_TUPLES: list[tuple[str, Any, Any]] = [
|
||||||
(CONF_INTERCEPT, DEFAULT_INTERCEPT, bool),
|
(CONF_INTERCEPT, DEFAULT_INTERCEPT, bool),
|
||||||
(CONF_MULTI_LIGHT_INTERCEPT, DEFAULT_MULTI_LIGHT_INTERCEPT, bool),
|
(CONF_MULTI_LIGHT_INTERCEPT, DEFAULT_MULTI_LIGHT_INTERCEPT, bool),
|
||||||
(CONF_INCLUDE_CONFIG_IN_ATTRIBUTES, DEFAULT_INCLUDE_CONFIG_IN_ATTRIBUTES, bool),
|
(CONF_INCLUDE_CONFIG_IN_ATTRIBUTES, DEFAULT_INCLUDE_CONFIG_IN_ATTRIBUTES, bool),
|
||||||
|
(CONF_EXPAND_LIGHT_GROUPS, DEFAULT_EXPAND_LIGHT_GROUPS, bool),
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -438,16 +510,13 @@ _DOMAIN_SCHEMA = vol.Schema(
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
def apply_service_schema(initial_transition: int = 1) -> vol.Schema:
|
def apply_service_schema() -> vol.Schema:
|
||||||
"""Return the schema for the apply service."""
|
"""Return the schema for the apply service."""
|
||||||
return vol.Schema(
|
return vol.Schema(
|
||||||
{
|
{
|
||||||
vol.Optional(CONF_ENTITY_ID): cv.entity_ids, # type: ignore[arg-type]
|
vol.Optional(CONF_ENTITY_ID): cv.entity_ids, # type: ignore[arg-type]
|
||||||
vol.Optional(CONF_LIGHTS, default=[]): cv.entity_ids, # type: ignore[arg-type]
|
vol.Optional(CONF_LIGHTS, default=[]): cv.entity_ids, # type: ignore[arg-type]
|
||||||
vol.Optional(
|
vol.Optional(CONF_TRANSITION): VALID_TRANSITION,
|
||||||
CONF_TRANSITION,
|
|
||||||
default=initial_transition,
|
|
||||||
): VALID_TRANSITION,
|
|
||||||
vol.Optional(ATTR_ADAPT_BRIGHTNESS, default=True): cv.boolean,
|
vol.Optional(ATTR_ADAPT_BRIGHTNESS, default=True): cv.boolean,
|
||||||
vol.Optional(ATTR_ADAPT_COLOR, default=True): cv.boolean,
|
vol.Optional(ATTR_ADAPT_COLOR, default=True): cv.boolean,
|
||||||
vol.Optional(CONF_PREFER_RGB_COLOR, default=False): cv.boolean,
|
vol.Optional(CONF_PREFER_RGB_COLOR, default=False): cv.boolean,
|
||||||
|
|
@ -456,10 +525,26 @@ def apply_service_schema(initial_transition: int = 1) -> vol.Schema:
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def change_switch_settings_schema() -> dict[vol.Marker, Any]:
|
||||||
|
"""Return the schema for the change_switch_settings service."""
|
||||||
|
args: dict[vol.Marker, Any] = {
|
||||||
|
vol.Optional(CONF_USE_DEFAULTS, default="current"): cv.string,
|
||||||
|
}
|
||||||
|
# Modifying these after init isn't possible
|
||||||
|
skip = (CONF_INTERVAL, CONF_NAME, CONF_LIGHTS)
|
||||||
|
for k, _, valid in VALIDATION_TUPLES:
|
||||||
|
if k not in skip:
|
||||||
|
args[vol.Optional(k)] = valid
|
||||||
|
return args
|
||||||
|
|
||||||
|
|
||||||
SET_MANUAL_CONTROL_SCHEMA = vol.Schema(
|
SET_MANUAL_CONTROL_SCHEMA = vol.Schema(
|
||||||
{
|
{
|
||||||
vol.Optional(CONF_ENTITY_ID): cv.entity_ids, # type: ignore[arg-type]
|
vol.Optional(CONF_ENTITY_ID): cv.entity_ids, # type: ignore[arg-type]
|
||||||
vol.Optional(CONF_LIGHTS, default=[]): cv.entity_ids, # type: ignore[arg-type]
|
vol.Optional(CONF_LIGHTS, default=[]): cv.entity_ids, # type: ignore[arg-type]
|
||||||
vol.Optional(CONF_MANUAL_CONTROL, default=True): cv.boolean,
|
vol.Optional(CONF_MANUAL_CONTROL, default=True): vol.Any(
|
||||||
|
cv.boolean,
|
||||||
|
vol.In(["brightness", "color"]),
|
||||||
|
),
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
|
|
|
||||||
131
custom_components/adaptive_lighting/diagnostics.py
Normal file
131
custom_components/adaptive_lighting/diagnostics.py
Normal file
|
|
@ -0,0 +1,131 @@
|
||||||
|
"""Diagnostics support for Adaptive Lighting."""
|
||||||
|
|
||||||
|
from typing import Any
|
||||||
|
|
||||||
|
from homeassistant.components.light import (
|
||||||
|
ATTR_BRIGHTNESS,
|
||||||
|
ATTR_COLOR_TEMP_KELVIN,
|
||||||
|
ATTR_RGB_COLOR,
|
||||||
|
ATTR_TRANSITION,
|
||||||
|
)
|
||||||
|
from homeassistant.components.switch import DOMAIN as SWITCH_DOMAIN
|
||||||
|
from homeassistant.config_entries import ConfigEntry
|
||||||
|
from homeassistant.const import STATE_OFF, STATE_ON, STATE_UNAVAILABLE, STATE_UNKNOWN
|
||||||
|
from homeassistant.core import HomeAssistant
|
||||||
|
|
||||||
|
from .adaptation_utils import LightControlAttributes
|
||||||
|
from .const import (
|
||||||
|
ADAPT_BRIGHTNESS_SWITCH,
|
||||||
|
ADAPT_COLOR_SWITCH,
|
||||||
|
ATTR_ADAPTIVE_LIGHTING_MANAGER,
|
||||||
|
DOMAIN,
|
||||||
|
SLEEP_MODE_SWITCH,
|
||||||
|
)
|
||||||
|
from .switch import AdaptiveLightingManager, AdaptiveSwitch
|
||||||
|
|
||||||
|
_REPORTABLE_LIGHT_STATES = {
|
||||||
|
STATE_OFF,
|
||||||
|
STATE_ON,
|
||||||
|
STATE_UNAVAILABLE,
|
||||||
|
STATE_UNKNOWN,
|
||||||
|
}
|
||||||
|
_TARGET_ATTRIBUTES = (
|
||||||
|
ATTR_BRIGHTNESS,
|
||||||
|
ATTR_COLOR_TEMP_KELVIN,
|
||||||
|
ATTR_RGB_COLOR,
|
||||||
|
ATTR_TRANSITION,
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def _last_adaptation_values(
|
||||||
|
manager: AdaptiveLightingManager,
|
||||||
|
light: str,
|
||||||
|
) -> dict[str, Any] | None:
|
||||||
|
"""Return latest retained value for each allowlisted adaptation attribute.
|
||||||
|
|
||||||
|
Values may come from different commands because the manager merges partial
|
||||||
|
service data per attribute.
|
||||||
|
"""
|
||||||
|
service_data = manager.last_service_data.get(light)
|
||||||
|
if service_data is None:
|
||||||
|
return None
|
||||||
|
target = {
|
||||||
|
attribute: (
|
||||||
|
list(service_data[attribute])
|
||||||
|
if attribute == ATTR_RGB_COLOR
|
||||||
|
else service_data[attribute]
|
||||||
|
)
|
||||||
|
for attribute in _TARGET_ATTRIBUTES
|
||||||
|
if attribute in service_data
|
||||||
|
}
|
||||||
|
return target or None
|
||||||
|
|
||||||
|
|
||||||
|
def _autoreset_seconds(
|
||||||
|
manager: AdaptiveLightingManager,
|
||||||
|
light: str,
|
||||||
|
) -> float | None:
|
||||||
|
"""Return remaining time for a running global manual-control reset."""
|
||||||
|
timer = manager.auto_reset_manual_control_timers.get(light)
|
||||||
|
if timer is None or not timer.is_running():
|
||||||
|
return None
|
||||||
|
remaining = timer.remaining_time()
|
||||||
|
return round(remaining, 3) if remaining > 0 else None
|
||||||
|
|
||||||
|
|
||||||
|
async def async_get_config_entry_diagnostics(
|
||||||
|
hass: HomeAssistant,
|
||||||
|
config_entry: ConfigEntry,
|
||||||
|
) -> dict[str, Any]:
|
||||||
|
"""Return an allowlisted, on-demand snapshot for one config entry."""
|
||||||
|
domain_data = hass.data.get(DOMAIN)
|
||||||
|
if not isinstance(domain_data, dict):
|
||||||
|
return {"loaded": False}
|
||||||
|
entry_data = domain_data.get(config_entry.entry_id)
|
||||||
|
manager = domain_data.get(ATTR_ADAPTIVE_LIGHTING_MANAGER)
|
||||||
|
if not isinstance(entry_data, dict) or not isinstance(
|
||||||
|
manager,
|
||||||
|
AdaptiveLightingManager,
|
||||||
|
):
|
||||||
|
return {"loaded": False}
|
||||||
|
switch = entry_data.get(SWITCH_DOMAIN)
|
||||||
|
if not isinstance(switch, AdaptiveSwitch):
|
||||||
|
return {"loaded": False}
|
||||||
|
|
||||||
|
lights: dict[str, Any] = {}
|
||||||
|
for index, light in enumerate(sorted(switch.lights), start=1):
|
||||||
|
state = hass.states.get(light)
|
||||||
|
state_value = "missing"
|
||||||
|
if state is not None:
|
||||||
|
state_value = (
|
||||||
|
state.state
|
||||||
|
if state.state in _REPORTABLE_LIGHT_STATES
|
||||||
|
else STATE_UNKNOWN
|
||||||
|
)
|
||||||
|
manual_control = manager.get_manual_control_attributes(light)
|
||||||
|
lights[f"light_{index}"] = {
|
||||||
|
"state": state_value,
|
||||||
|
"global_manager_manual_control": {
|
||||||
|
"brightness": bool(
|
||||||
|
manual_control & LightControlAttributes.BRIGHTNESS,
|
||||||
|
),
|
||||||
|
"color": bool(manual_control & LightControlAttributes.COLOR),
|
||||||
|
},
|
||||||
|
"global_manager_autoreset_seconds": _autoreset_seconds(manager, light),
|
||||||
|
"global_manager_last_adaptation_values": _last_adaptation_values(
|
||||||
|
manager,
|
||||||
|
light,
|
||||||
|
),
|
||||||
|
}
|
||||||
|
|
||||||
|
return {
|
||||||
|
"loaded": True,
|
||||||
|
"profile_switches": {
|
||||||
|
"profile": switch.is_on,
|
||||||
|
"adapt_brightness": entry_data[ADAPT_BRIGHTNESS_SWITCH].is_on,
|
||||||
|
"adapt_color": entry_data[ADAPT_COLOR_SWITCH].is_on,
|
||||||
|
"sleep_mode": entry_data[SLEEP_MODE_SWITCH].is_on,
|
||||||
|
},
|
||||||
|
"manager_fact_scope": "global_shared_across_profiles",
|
||||||
|
"lights": lights,
|
||||||
|
}
|
||||||
35
custom_components/adaptive_lighting/docs_gen.py
Normal file
35
custom_components/adaptive_lighting/docs_gen.py
Normal file
|
|
@ -0,0 +1,35 @@
|
||||||
|
"""Documentation generation utilities for Adaptive Lighting.
|
||||||
|
|
||||||
|
Provides functions to transform content for the documentation site.
|
||||||
|
Used by markdown-code-runner to generate documentation pages from README content.
|
||||||
|
"""
|
||||||
|
|
||||||
|
from __future__ import annotations
|
||||||
|
|
||||||
|
import re
|
||||||
|
|
||||||
|
|
||||||
|
def _transform_readme_links(content: str) -> str:
|
||||||
|
"""Transform README internal links to docs site links."""
|
||||||
|
# Map README anchors to doc pages
|
||||||
|
link_map = {
|
||||||
|
"#gear-configuration": "configuration.md",
|
||||||
|
"#memo-options": "configuration.md#all-options",
|
||||||
|
"#hammer_and_wrench-services": "services.md",
|
||||||
|
"#adaptive_lightingapply": "services.md#adaptive_lightingapply",
|
||||||
|
"#adaptive_lightingset_manual_control": "services.md#adaptive_lightingset_manual_control",
|
||||||
|
"#adaptive_lightingchange_switch_settings": "services.md#adaptive_lightingchange_switch_settings",
|
||||||
|
"#robot-automation-examples": "automation-examples.md",
|
||||||
|
"#sos-troubleshooting": "troubleshooting.md",
|
||||||
|
"#exclamation-common-problems--solutions": "troubleshooting.md#common-problems-solutions",
|
||||||
|
"#bar_chart-graphs": "advanced/brightness-modes.md#graphs",
|
||||||
|
"#bulb-features": "index.md#features",
|
||||||
|
"#control_knobs-regain-manual-control": "advanced/manual-control.md",
|
||||||
|
"#eyes-see-also": "see-also.md",
|
||||||
|
}
|
||||||
|
|
||||||
|
for old_link, new_link in link_map.items():
|
||||||
|
content = content.replace(f"]({old_link})", f"]({new_link})")
|
||||||
|
|
||||||
|
# Remove ToC link pattern [[ToC](#...)]
|
||||||
|
return re.sub(r"\[\[ToC\]\([^)]+\)\]", "", content)
|
||||||
|
|
@ -4,31 +4,30 @@ import logging
|
||||||
from collections.abc import Awaitable, Callable
|
from collections.abc import Awaitable, Callable
|
||||||
|
|
||||||
from homeassistant.core import HomeAssistant, ServiceCall
|
from homeassistant.core import HomeAssistant, ServiceCall
|
||||||
from homeassistant.helpers import device_registry, entity_registry
|
from homeassistant.helpers.target import async_extract_referenced_entity_ids
|
||||||
from homeassistant.util.read_only_dict import ReadOnlyDict
|
from homeassistant.util.read_only_dict import ReadOnlyDict
|
||||||
|
|
||||||
|
try:
|
||||||
|
from homeassistant.helpers.target import TargetSelection
|
||||||
|
except ImportError: # Compatibility with older Home Assistant releases
|
||||||
|
from homeassistant.helpers.target import TargetSelectorData as TargetSelection
|
||||||
|
|
||||||
from .adaptation_utils import ServiceData
|
from .adaptation_utils import ServiceData
|
||||||
|
|
||||||
_LOGGER = logging.getLogger(__name__)
|
_LOGGER = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
def area_entities(hass: HomeAssistant, area_id: str):
|
def target_entities(
|
||||||
"""Get all entities linked to an area."""
|
hass: HomeAssistant,
|
||||||
ent_reg = entity_registry.async_get(hass)
|
service_data: ServiceData,
|
||||||
entity_ids = [
|
) -> set[str]:
|
||||||
entry.entity_id
|
"""Resolve all directly and indirectly targeted entities without groups."""
|
||||||
for entry in entity_registry.async_entries_for_area(ent_reg, area_id)
|
selected = async_extract_referenced_entity_ids(
|
||||||
]
|
hass,
|
||||||
dev_reg = device_registry.async_get(hass)
|
TargetSelection(service_data),
|
||||||
entity_ids.extend(
|
expand_group=False,
|
||||||
[
|
|
||||||
entity.entity_id
|
|
||||||
for device in device_registry.async_entries_for_area(dev_reg, area_id)
|
|
||||||
for entity in entity_registry.async_entries_for_device(ent_reg, device.id)
|
|
||||||
if entity.area_id is None
|
|
||||||
],
|
|
||||||
)
|
)
|
||||||
return entity_ids
|
return selected.referenced | selected.indirectly_referenced
|
||||||
|
|
||||||
|
|
||||||
def setup_service_call_interceptor(
|
def setup_service_call_interceptor(
|
||||||
|
|
|
||||||
|
|
@ -8,5 +8,5 @@
|
||||||
"iot_class": "calculated",
|
"iot_class": "calculated",
|
||||||
"issue_tracker": "https://github.com/basnijholt/adaptive-lighting/issues",
|
"issue_tracker": "https://github.com/basnijholt/adaptive-lighting/issues",
|
||||||
"requirements": ["ulid-transform"],
|
"requirements": ["ulid-transform"],
|
||||||
"version": "1.28.0"
|
"version": "1.32.0"
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -57,20 +57,18 @@ set_manual_control:
|
||||||
domain: light
|
domain: light
|
||||||
multiple: true
|
multiple: true
|
||||||
manual_control:
|
manual_control:
|
||||||
description: Whether to add ("true") or remove ("false") the light from the "manual_control" list. 🔒
|
description: Whether to add ("true") or remove ("false") all adapted attributes of the light from the "manual_control" list, or the name of an attribute for selective addition. 🔒
|
||||||
example: true
|
example: true
|
||||||
default: true
|
default: true
|
||||||
selector:
|
selector:
|
||||||
boolean: null
|
boolean: null
|
||||||
change_switch_settings:
|
change_switch_settings:
|
||||||
description: Change any settings you'd like in the switch. All options here are the same as in the config flow.
|
description: Change any settings you'd like in the switch. All options here are the same as in the config flow.
|
||||||
|
target:
|
||||||
|
entity:
|
||||||
|
integration: adaptive_lighting
|
||||||
|
domain: switch
|
||||||
fields:
|
fields:
|
||||||
entity_id:
|
|
||||||
description: Entity ID of the switch. 📝
|
|
||||||
required: true
|
|
||||||
selector:
|
|
||||||
entity:
|
|
||||||
domain: switch
|
|
||||||
use_defaults:
|
use_defaults:
|
||||||
description: 'Sets the default values not specified in this service call. Options: "current" (default, retains current values), "factory" (resets to documented defaults), or "configuration" (reverts to switch config defaults). ⚙️'
|
description: 'Sets the default values not specified in this service call. Options: "current" (default, retains current values), "factory" (resets to documented defaults), or "configuration" (reverts to switch config defaults). ⚙️'
|
||||||
example: current
|
example: current
|
||||||
|
|
@ -141,6 +139,12 @@ change_switch_settings:
|
||||||
example: false
|
example: false
|
||||||
selector:
|
selector:
|
||||||
boolean: null
|
boolean: null
|
||||||
|
expand_light_groups:
|
||||||
|
description: Expand light groups to their members (`true`, default). Set `false` to send commands to the group and track manual control for the group. Explicit member targets in services stay individual targets.
|
||||||
|
required: false
|
||||||
|
example: true
|
||||||
|
selector:
|
||||||
|
boolean: null
|
||||||
separate_turn_on_commands:
|
separate_turn_on_commands:
|
||||||
description: Use separate `light.turn_on` calls for color and brightness, needed for some light types. 🔀
|
description: Use separate `light.turn_on` calls for color and brightness, needed for some light types. 🔀
|
||||||
required: false
|
required: false
|
||||||
|
|
@ -185,7 +189,7 @@ change_switch_settings:
|
||||||
example: 0
|
example: 0
|
||||||
selector:
|
selector:
|
||||||
number:
|
number:
|
||||||
min: 0
|
min: -86400
|
||||||
max: 86300
|
max: 86300
|
||||||
sunrise_time:
|
sunrise_time:
|
||||||
description: Set a fixed time (HH:MM:SS) for sunrise. 🌅
|
description: Set a fixed time (HH:MM:SS) for sunrise. 🌅
|
||||||
|
|
@ -199,7 +203,7 @@ change_switch_settings:
|
||||||
example: ''
|
example: ''
|
||||||
selector:
|
selector:
|
||||||
number:
|
number:
|
||||||
min: 0
|
min: -86400
|
||||||
max: 86300
|
max: 86300
|
||||||
sunset_time:
|
sunset_time:
|
||||||
description: Set a fixed time (HH:MM:SS) for sunset. 🌇
|
description: Set a fixed time (HH:MM:SS) for sunset. 🌇
|
||||||
|
|
@ -220,13 +224,28 @@ change_switch_settings:
|
||||||
selector:
|
selector:
|
||||||
time: null
|
time: null
|
||||||
take_over_control:
|
take_over_control:
|
||||||
description: Disable Adaptive Lighting if another source calls `light.turn_on` while lights are on and being adapted. Note that this calls `homeassistant.update_entity` every `interval`! 🔒
|
description: Pause adaptation of individual lights and hand over (manual) control to other sources that issue `light.turn_on` calls for lights that are on. 🔒
|
||||||
required: false
|
required: false
|
||||||
example: true
|
example: true
|
||||||
selector:
|
selector:
|
||||||
boolean: null
|
boolean: null
|
||||||
|
take_over_control_mode:
|
||||||
|
description: The adaptation pausing mode when other sources change brightness and/or color of lights. `pause_all` always pauses both brightness and color adaptation. `pause_changed` pauses the adaptation of only the changed attributes and continues adapting unchanged attributes, e.g., continues color adaptation when only brightness was changed.
|
||||||
|
required: false
|
||||||
|
example: pause_changed
|
||||||
|
selector:
|
||||||
|
select:
|
||||||
|
options:
|
||||||
|
- pause_all
|
||||||
|
- pause_changed
|
||||||
detect_non_ha_changes:
|
detect_non_ha_changes:
|
||||||
description: 'Detects and halts adaptations for non-`light.turn_on` state changes. Needs `take_over_control` enabled. 🕵️ Caution: ⚠️ Some lights might falsely indicate an ''on'' state, which could result in lights turning on unexpectedly. Disable this feature if you encounter such issues.'
|
description: 'Detects and halts adaptations for non-`light.turn_on` state changes. Needs `take_over_control` enabled. 🕵️ Caution: ⚠️ Some lights might falsely indicate an ''on'' state, which could result in lights turning on unexpectedly. Note that this calls `homeassistant.update_entity` every `interval`! Disable this feature if you encounter such issues.'
|
||||||
|
required: false
|
||||||
|
example: false
|
||||||
|
selector:
|
||||||
|
boolean: null
|
||||||
|
manual_control_on_external_turn_on:
|
||||||
|
description: Treat turn-ons without a matching Home Assistant `light.turn_on` context as manual control. Normal manual-control resets apply. Still allows `detect_non_ha_changes` for already-on lights. Needs `take_over_control` enabled. 🕵️
|
||||||
required: false
|
required: false
|
||||||
example: false
|
example: false
|
||||||
selector:
|
selector:
|
||||||
|
|
|
||||||
|
|
@ -7,6 +7,13 @@
|
||||||
"data": {
|
"data": {
|
||||||
"name": "Name"
|
"name": "Name"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"menu": {
|
||||||
|
"title": "Create or Duplicate",
|
||||||
|
"description": "Do you want to create a new instance or duplicate an existing one?",
|
||||||
|
"data": {
|
||||||
|
"action": "Action"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"abort": {
|
"abort": {
|
||||||
|
|
@ -16,130 +23,86 @@
|
||||||
"options": {
|
"options": {
|
||||||
"step": {
|
"step": {
|
||||||
"init": {
|
"init": {
|
||||||
"title": "Basic Settings",
|
"title": "Adaptive Lighting options",
|
||||||
"description": "Configure the most common Adaptive Lighting options. After submitting, you can optionally configure advanced settings or save directly. If you've defined this entry in YAML, no options will appear here. For interactive graphs, visit [this web app](https://basnijholt.github.io/adaptive-lighting).",
|
"description": "Configure an Adaptive Lighting component. Option names align with the YAML settings. If you've defined this entry in YAML, no options will appear here. For interactive graphs that demonstrate parameter effects, visit [this web app]({webapp_url}). For further details, see the [official documentation]({docs_url}).",
|
||||||
"menu_options": {
|
|
||||||
"advanced": "Configure advanced options",
|
|
||||||
"finish": "Save and finish"
|
|
||||||
},
|
|
||||||
"data": {
|
"data": {
|
||||||
"lights": "lights: List of light entity_ids to be controlled (may be empty). 🌟",
|
"lights": "lights: List of light entity_ids to be controlled (may be empty). 🌟",
|
||||||
"interval": "interval",
|
"interval": "interval",
|
||||||
"transition": "transition",
|
"transition": "transition",
|
||||||
"initial_transition": "initial_transition",
|
|
||||||
"min_brightness": "min_brightness: Minimum brightness percentage. 💡",
|
"min_brightness": "min_brightness: Minimum brightness percentage. 💡",
|
||||||
"max_brightness": "max_brightness: Maximum brightness percentage. 💡",
|
"max_brightness": "max_brightness: Maximum brightness percentage. 💡",
|
||||||
"min_color_temp": "min_color_temp: Warmest color temperature in Kelvin. 🔥",
|
"min_color_temp": "min_color_temp: Warmest color temperature in Kelvin. 🔥",
|
||||||
"max_color_temp": "max_color_temp: Coldest color temperature in Kelvin. ❄️",
|
"max_color_temp": "max_color_temp: Coldest color temperature in Kelvin. ❄️",
|
||||||
"prefer_rgb_color": "prefer_rgb_color: Whether to prefer RGB color adjustment over light color temperature when possible. 🌈",
|
|
||||||
"sleep_brightness": "sleep_brightness",
|
"sleep_brightness": "sleep_brightness",
|
||||||
"sleep_rgb_or_color_temp": "sleep_rgb_or_color_temp",
|
"sleep_color_temp": "sleep_color_temp"
|
||||||
"sleep_color_temp": "sleep_color_temp",
|
|
||||||
"sleep_rgb_color": "sleep_rgb_color",
|
|
||||||
"sleep_transition": "sleep_transition",
|
|
||||||
"transition_until_sleep": "transition_until_sleep: When enabled, Adaptive Lighting will treat sleep settings as the minimum, transitioning to these values after sunset. 🌙",
|
|
||||||
"sunrise_time": "sunrise_time",
|
|
||||||
"min_sunrise_time": "min_sunrise_time",
|
|
||||||
"max_sunrise_time": "max_sunrise_time",
|
|
||||||
"sunrise_offset": "sunrise_offset",
|
|
||||||
"sunset_time": "sunset_time",
|
|
||||||
"min_sunset_time": "min_sunset_time",
|
|
||||||
"max_sunset_time": "max_sunset_time",
|
|
||||||
"sunset_offset": "sunset_offset",
|
|
||||||
"brightness_mode": "brightness_mode",
|
|
||||||
"brightness_mode_time_dark": "brightness_mode_time_dark",
|
|
||||||
"brightness_mode_time_light": "brightness_mode_time_light",
|
|
||||||
"take_over_control": "take_over_control: Disable Adaptive Lighting if another source calls `light.turn_on` while lights are on and being adapted. Note that this calls `homeassistant.update_entity` every `interval`! 🔒",
|
|
||||||
"detect_non_ha_changes": "detect_non_ha_changes: Detects and halts adaptations for non-`light.turn_on` state changes. Needs `take_over_control` enabled. 🕵️ Caution: ⚠️ Some lights might falsely indicate an 'on' state, which could result in lights turning on unexpectedly. Disable this feature if you encounter such issues.",
|
|
||||||
"autoreset_control_seconds": "autoreset_control_seconds",
|
|
||||||
"only_once": "only_once: Adapt lights only when they are turned on (`true`) or keep adapting them (`false`). 🔄",
|
|
||||||
"adapt_only_on_bare_turn_on": "adapt_only_on_bare_turn_on: When turning lights on initially. If set to `true`, AL adapts only if `light.turn_on` is invoked without specifying color or brightness. ❌🌈 This e.g., prevents adaptation when activating a scene. If `false`, AL adapts regardless of the presence of color or brightness in the initial `service_data`. Needs `take_over_control` enabled. 🕵️",
|
|
||||||
"separate_turn_on_commands": "separate_turn_on_commands: Use separate `light.turn_on` calls for color and brightness, needed for some light types. 🔀",
|
|
||||||
"send_split_delay": "send_split_delay",
|
|
||||||
"adapt_delay": "adapt_delay",
|
|
||||||
"skip_redundant_commands": "skip_redundant_commands: Skip sending adaptation commands whose target state already equals the light's known state. Minimizes network traffic and improves the adaptation responsivity in some situations. 📉Disable if physical light states get out of sync with HA's recorded state.",
|
|
||||||
"intercept": "intercept: Intercept and adapt `light.turn_on` calls to enabling instantaneous color and brightness adaptation. 🏎️ Disable for lights that do not support `light.turn_on` with color and brightness.",
|
|
||||||
"multi_light_intercept": "multi_light_intercept: Intercept and adapt `light.turn_on` calls that target multiple lights. ➗⚠️ This might result in splitting up a single `light.turn_on` call into multiple calls, e.g., when lights are in different switches. Requires `intercept` to be enabled.",
|
|
||||||
"include_config_in_attributes": "include_config_in_attributes: Show all options as attributes on the switch in Home Assistant when set to `true`. 📝"
|
|
||||||
},
|
},
|
||||||
"data_description": {
|
"data_description": {
|
||||||
"interval": "Frequency to adapt the lights, in seconds. 🔄",
|
"interval": "Frequency to adapt the lights, in seconds. 🔄",
|
||||||
"transition": "Duration of transition when lights change, in seconds. 🕑",
|
"transition": "Duration of transition when lights change, in seconds. 🕑",
|
||||||
"initial_transition": "Duration of the first transition when lights turn from `off` to `on` in seconds. ⏲️",
|
|
||||||
"sleep_brightness": "Brightness percentage of lights in sleep mode. 😴",
|
"sleep_brightness": "Brightness percentage of lights in sleep mode. 😴",
|
||||||
"sleep_rgb_or_color_temp": "Use either `\"rgb_color\"` or `\"color_temp\"` in sleep mode. 🌙",
|
"sleep_color_temp": "Color temperature in sleep mode (used when `sleep_rgb_or_color_temp` is `color_temp`) in Kelvin. 😴"
|
||||||
"sleep_color_temp": "Color temperature in sleep mode (used when `sleep_rgb_or_color_temp` is `color_temp`) in Kelvin. 😴",
|
|
||||||
"sleep_rgb_color": "RGB color in sleep mode (used when `sleep_rgb_or_color_temp` is \"rgb_color\"). 🌈",
|
|
||||||
"sleep_transition": "Duration of transition when \"sleep mode\" is toggled in seconds. 😴",
|
|
||||||
"sunrise_time": "Set a fixed time (HH:MM:SS) for sunrise. 🌅",
|
|
||||||
"min_sunrise_time": "Set the earliest virtual sunrise time (HH:MM:SS), allowing for later sunrises. 🌅",
|
|
||||||
"max_sunrise_time": "Set the latest virtual sunrise time (HH:MM:SS), allowing for earlier sunrises. 🌅",
|
|
||||||
"sunrise_offset": "Adjust sunrise time with a positive or negative offset in seconds. ⏰",
|
|
||||||
"sunset_time": "Set a fixed time (HH:MM:SS) for sunset. 🌇",
|
|
||||||
"min_sunset_time": "Set the earliest virtual sunset time (HH:MM:SS), allowing for later sunsets. 🌇",
|
|
||||||
"max_sunset_time": "Set the latest virtual sunset time (HH:MM:SS), allowing for earlier sunsets. 🌇",
|
|
||||||
"sunset_offset": "Adjust sunset time with a positive or negative offset in seconds. ⏰",
|
|
||||||
"brightness_mode": "Brightness mode to use. Possible values are `default`, `linear`, and `tanh` (uses `brightness_mode_time_dark` and `brightness_mode_time_light`). 📈",
|
|
||||||
"brightness_mode_time_dark": "(Ignored if `brightness_mode='default'`) The duration in seconds to ramp up/down the brightness before/after sunrise/sunset. 📈📉",
|
|
||||||
"brightness_mode_time_light": "(Ignored if `brightness_mode='default'`) The duration in seconds to ramp up/down the brightness after/before sunrise/sunset. 📈📉.",
|
|
||||||
"autoreset_control_seconds": "Automatically reset the manual control after a number of seconds. Set to 0 to disable. ⏲️",
|
|
||||||
"send_split_delay": "Delay (ms) between `separate_turn_on_commands` for lights that don't support simultaneous brightness and color setting. ⏲️",
|
|
||||||
"adapt_delay": "Wait time (seconds) between light turn on and Adaptive Lighting applying changes. Might help to avoid flickering. ⏲️"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"advanced": {
|
|
||||||
"title": "Advanced Settings",
|
|
||||||
"description": "Configure advanced Adaptive Lighting options. Most users don't need to change these settings.",
|
|
||||||
"data": {
|
|
||||||
"initial_transition": "initial_transition",
|
|
||||||
"prefer_rgb_color": "prefer_rgb_color: Whether to prefer RGB color adjustment over light color temperature when possible. 🌈",
|
|
||||||
"sleep_rgb_or_color_temp": "sleep_rgb_or_color_temp",
|
|
||||||
"sleep_rgb_color": "sleep_rgb_color",
|
|
||||||
"sleep_transition": "sleep_transition",
|
|
||||||
"transition_until_sleep": "transition_until_sleep: When enabled, Adaptive Lighting will treat sleep settings as the minimum, transitioning to these values after sunset. 🌙",
|
|
||||||
"sunrise_time": "sunrise_time",
|
|
||||||
"min_sunrise_time": "min_sunrise_time",
|
|
||||||
"max_sunrise_time": "max_sunrise_time",
|
|
||||||
"sunrise_offset": "sunrise_offset",
|
|
||||||
"sunset_time": "sunset_time",
|
|
||||||
"min_sunset_time": "min_sunset_time",
|
|
||||||
"max_sunset_time": "max_sunset_time",
|
|
||||||
"sunset_offset": "sunset_offset",
|
|
||||||
"brightness_mode": "brightness_mode",
|
|
||||||
"brightness_mode_time_dark": "brightness_mode_time_dark",
|
|
||||||
"brightness_mode_time_light": "brightness_mode_time_light",
|
|
||||||
"take_over_control": "take_over_control: Disable Adaptive Lighting if another source calls `light.turn_on` while lights are on and being adapted. Note that this calls `homeassistant.update_entity` every `interval`! 🔒",
|
|
||||||
"detect_non_ha_changes": "detect_non_ha_changes: Detects and halts adaptations for non-`light.turn_on` state changes. Needs `take_over_control` enabled. 🕵️ Caution: ⚠️ Some lights might falsely indicate an 'on' state, which could result in lights turning on unexpectedly. Disable this feature if you encounter such issues.",
|
|
||||||
"autoreset_control_seconds": "autoreset_control_seconds",
|
|
||||||
"only_once": "only_once: Adapt lights only when they are turned on (`true`) or keep adapting them (`false`). 🔄",
|
|
||||||
"adapt_only_on_bare_turn_on": "adapt_only_on_bare_turn_on: When turning lights on initially. If set to `true`, AL adapts only if `light.turn_on` is invoked without specifying color or brightness. ❌🌈 This e.g., prevents adaptation when activating a scene. If `false`, AL adapts regardless of the presence of color or brightness in the initial `service_data`. Needs `take_over_control` enabled. 🕵️",
|
|
||||||
"separate_turn_on_commands": "separate_turn_on_commands: Use separate `light.turn_on` calls for color and brightness, needed for some light types. 🔀",
|
|
||||||
"send_split_delay": "send_split_delay",
|
|
||||||
"adapt_delay": "adapt_delay",
|
|
||||||
"skip_redundant_commands": "skip_redundant_commands: Skip sending adaptation commands whose target state already equals the light's known state. Minimizes network traffic and improves the adaptation responsivity in some situations. 📉Disable if physical light states get out of sync with HA's recorded state.",
|
|
||||||
"intercept": "intercept: Intercept and adapt `light.turn_on` calls to enabling instantaneous color and brightness adaptation. 🏎️ Disable for lights that do not support `light.turn_on` with color and brightness.",
|
|
||||||
"multi_light_intercept": "multi_light_intercept: Intercept and adapt `light.turn_on` calls that target multiple lights. ➗⚠️ This might result in splitting up a single `light.turn_on` call into multiple calls, e.g., when lights are in different switches. Requires `intercept` to be enabled.",
|
|
||||||
"include_config_in_attributes": "include_config_in_attributes: Show all options as attributes on the switch in Home Assistant when set to `true`. 📝"
|
|
||||||
},
|
},
|
||||||
"data_description": {
|
"sections": {
|
||||||
"initial_transition": "Duration of the first transition when lights turn from `off` to `on` in seconds. ⏲️",
|
"advanced": {
|
||||||
"sleep_rgb_or_color_temp": "Use either `\"rgb_color\"` or `\"color_temp\"` in sleep mode. 🌙",
|
"name": "Advanced settings",
|
||||||
"sleep_rgb_color": "RGB color in sleep mode (used when `sleep_rgb_or_color_temp` is \"rgb_color\"). 🌈",
|
"description": "Additional settings for fine-tuning Adaptive Lighting.",
|
||||||
"sleep_transition": "Duration of transition when \"sleep mode\" is toggled in seconds. 😴",
|
"data": {
|
||||||
"sunrise_time": "Set a fixed time (HH:MM:SS) for sunrise. 🌅",
|
"initial_transition": "initial_transition",
|
||||||
"min_sunrise_time": "Set the earliest virtual sunrise time (HH:MM:SS), allowing for later sunrises. 🌅",
|
"prefer_rgb_color": "prefer_rgb_color: Whether to prefer RGB color adjustment over light color temperature when possible. 🌈",
|
||||||
"max_sunrise_time": "Set the latest virtual sunrise time (HH:MM:SS), allowing for earlier sunrises. 🌅",
|
"sleep_rgb_or_color_temp": "sleep_rgb_or_color_temp",
|
||||||
"sunrise_offset": "Adjust sunrise time with a positive or negative offset in seconds. ⏰",
|
"sleep_rgb_color": "sleep_rgb_color",
|
||||||
"sunset_time": "Set a fixed time (HH:MM:SS) for sunset. 🌇",
|
"sleep_transition": "sleep_transition",
|
||||||
"min_sunset_time": "Set the earliest virtual sunset time (HH:MM:SS), allowing for later sunsets. 🌇",
|
"transition_until_sleep": "transition_until_sleep: When enabled, Adaptive Lighting will treat sleep settings as the minimum, transitioning to these values after sunset. 🌙",
|
||||||
"max_sunset_time": "Set the latest virtual sunset time (HH:MM:SS), allowing for earlier sunsets. 🌇",
|
"sunrise_time": "sunrise_time",
|
||||||
"sunset_offset": "Adjust sunset time with a positive or negative offset in seconds. ⏰",
|
"min_sunrise_time": "min_sunrise_time",
|
||||||
"brightness_mode": "Brightness mode to use. Possible values are `default`, `linear`, and `tanh` (uses `brightness_mode_time_dark` and `brightness_mode_time_light`). 📈",
|
"max_sunrise_time": "max_sunrise_time",
|
||||||
"brightness_mode_time_dark": "(Ignored if `brightness_mode='default'`) The duration in seconds to ramp up/down the brightness before/after sunrise/sunset. 📈📉",
|
"sunrise_offset": "sunrise_offset",
|
||||||
"brightness_mode_time_light": "(Ignored if `brightness_mode='default'`) The duration in seconds to ramp up/down the brightness after/before sunrise/sunset. 📈📉.",
|
"sunset_time": "sunset_time",
|
||||||
"autoreset_control_seconds": "Automatically reset the manual control after a number of seconds. Set to 0 to disable. ⏲️",
|
"min_sunset_time": "min_sunset_time",
|
||||||
"send_split_delay": "Delay (ms) between `separate_turn_on_commands` for lights that don't support simultaneous brightness and color setting. ⏲️",
|
"max_sunset_time": "max_sunset_time",
|
||||||
"adapt_delay": "Wait time (seconds) between light turn on and Adaptive Lighting applying changes. Might help to avoid flickering. ⏲️"
|
"sunset_offset": "sunset_offset",
|
||||||
|
"brightness_mode": "brightness_mode",
|
||||||
|
"brightness_mode_time_dark": "brightness_mode_time_dark",
|
||||||
|
"brightness_mode_time_light": "brightness_mode_time_light",
|
||||||
|
"take_over_control": "take_over_control: Pause adaptation of individual lights and hand over (manual) control to other sources that issue `light.turn_on` calls for lights that are on. 🔒",
|
||||||
|
"take_over_control_mode": "take_over_control_mode",
|
||||||
|
"detect_non_ha_changes": "detect_non_ha_changes: Detects and halts adaptations for non-`light.turn_on` state changes. Needs `take_over_control` enabled. 🕵️ Caution: ⚠️ Some lights might falsely indicate an 'on' state, which could result in lights turning on unexpectedly. Note that this calls `homeassistant.update_entity` every `interval`! Disable this feature if you encounter such issues.",
|
||||||
|
"autoreset_control_seconds": "autoreset_control_seconds",
|
||||||
|
"only_once": "only_once: Adapt lights only when they are turned on (`true`) or keep adapting them (`false`). 🔄",
|
||||||
|
"adapt_only_on_bare_turn_on": "adapt_only_on_bare_turn_on: When turning lights on initially. If set to `true`, AL adapts only if `light.turn_on` is invoked without specifying color or brightness. ❌🌈 This e.g., prevents adaptation when activating a scene and marks the light as manually controlled. If `false`, AL adapts regardless of the presence of color or brightness in the initial `service_data`. Needs `take_over_control` enabled. 🕵️",
|
||||||
|
"manual_control_on_external_turn_on": "manual_control_on_external_turn_on: Treat turn-ons without a matching Home Assistant `light.turn_on` context as manual control. Normal manual-control resets apply. Still allows `detect_non_ha_changes` for already-on lights. Needs `take_over_control` enabled. 🕵️",
|
||||||
|
"reset_manual_control_on_sleep_mode_change": "reset_manual_control_on_sleep_mode_change: Reset manual control when the sleep mode switch is toggled. Set to `false` to preserve manual control across sleep mode changes. 😴",
|
||||||
|
"separate_turn_on_commands": "separate_turn_on_commands: Use separate `light.turn_on` calls for color and brightness, needed for some light types. 🔀",
|
||||||
|
"send_split_delay": "send_split_delay",
|
||||||
|
"adapt_delay": "adapt_delay",
|
||||||
|
"skip_redundant_commands": "skip_redundant_commands: Skip sending adaptation commands whose target state already equals the light's known state. Minimizes network traffic and improves the adaptation responsivity in some situations. 📉Disable if physical light states get out of sync with HA's recorded state.",
|
||||||
|
"intercept": "intercept: Intercept and adapt `light.turn_on` calls to enabling instantaneous color and brightness adaptation. 🏎️ Disable for lights that do not support `light.turn_on` with color and brightness.",
|
||||||
|
"multi_light_intercept": "multi_light_intercept: Intercept and adapt `light.turn_on` calls that target multiple lights. ➗⚠️ This might result in splitting up a single `light.turn_on` call into multiple calls, e.g., when lights are in different switches. Requires `intercept` to be enabled.",
|
||||||
|
"include_config_in_attributes": "include_config_in_attributes: Show all options as attributes on the switch in Home Assistant when set to `true`. 📝",
|
||||||
|
"expand_light_groups": "expand_light_groups: Expand light groups to their members (`true`, default). Set `false` to send commands to the group and track manual control for the group. Explicit member targets in services stay individual targets."
|
||||||
|
},
|
||||||
|
"data_description": {
|
||||||
|
"initial_transition": "Duration of the first transition when lights turn from `off` to `on` in seconds. ⏲️",
|
||||||
|
"sleep_rgb_or_color_temp": "Use either `\"rgb_color\"` or `\"color_temp\"` in sleep mode. 🌙",
|
||||||
|
"sleep_rgb_color": "RGB color in sleep mode (used when `sleep_rgb_or_color_temp` is \"rgb_color\"). 🌈",
|
||||||
|
"sleep_transition": "Duration of transition when \"sleep mode\" is toggled in seconds. 😴",
|
||||||
|
"sunrise_time": "Set a fixed time (HH:MM:SS) for sunrise. 🌅",
|
||||||
|
"min_sunrise_time": "Set the earliest virtual sunrise time (HH:MM:SS), allowing for later sunrises. 🌅",
|
||||||
|
"max_sunrise_time": "Set the latest virtual sunrise time (HH:MM:SS), allowing for earlier sunrises. 🌅",
|
||||||
|
"sunrise_offset": "Adjust sunrise time with a positive or negative offset in seconds. ⏰",
|
||||||
|
"sunset_time": "Set a fixed time (HH:MM:SS) for sunset. 🌇",
|
||||||
|
"min_sunset_time": "Set the earliest virtual sunset time (HH:MM:SS), allowing for later sunsets. 🌇",
|
||||||
|
"max_sunset_time": "Set the latest virtual sunset time (HH:MM:SS), allowing for earlier sunsets. 🌇",
|
||||||
|
"sunset_offset": "Adjust sunset time with a positive or negative offset in seconds. ⏰",
|
||||||
|
"brightness_mode": "Brightness mode to use. Possible values are `default`, `linear`, and `tanh` (uses `brightness_mode_time_dark` and `brightness_mode_time_light`). 📈",
|
||||||
|
"brightness_mode_time_dark": "(Ignored if `brightness_mode='default'`) The duration in seconds to ramp up/down the brightness before/after sunrise/sunset. 📈📉",
|
||||||
|
"brightness_mode_time_light": "(Ignored if `brightness_mode='default'`) The duration in seconds to ramp up/down the brightness after/before sunrise/sunset. 📈📉.",
|
||||||
|
"take_over_control_mode": "The adaptation pausing mode when other sources change brightness and/or color of lights. `pause_all` always pauses both brightness and color adaptation. `pause_changed` pauses the adaptation of only the changed attributes and continues adapting unchanged attributes, e.g., continues color adaptation when only brightness was changed.",
|
||||||
|
"autoreset_control_seconds": "Automatically reset the manual control after a number of seconds. Set to 0 to disable. ⏲️",
|
||||||
|
"send_split_delay": "Delay (ms) between `separate_turn_on_commands` for lights that don't support simultaneous brightness and color setting. ⏲️",
|
||||||
|
"adapt_delay": "Wait time (seconds) between light turn on and Adaptive Lighting applying changes. Might help to avoid flickering. ⏲️"
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
@ -196,7 +159,7 @@
|
||||||
"name": "lights"
|
"name": "lights"
|
||||||
},
|
},
|
||||||
"manual_control": {
|
"manual_control": {
|
||||||
"description": "Whether to add (\"true\") or remove (\"false\") the light from the \"manual_control\" list. 🔒",
|
"description": "Whether to add (\"true\") or remove (\"false\") all adapted attributes of the light from the \"manual_control\" list, or the name of an attribute for selective addition. 🔒",
|
||||||
"name": "manual_control"
|
"name": "manual_control"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -205,10 +168,6 @@
|
||||||
"name": "change_switch_settings",
|
"name": "change_switch_settings",
|
||||||
"description": "Change any settings you'd like in the switch. All options here are the same as in the config flow.",
|
"description": "Change any settings you'd like in the switch. All options here are the same as in the config flow.",
|
||||||
"fields": {
|
"fields": {
|
||||||
"entity_id": {
|
|
||||||
"description": "Entity ID of the switch. 📝",
|
|
||||||
"name": "entity_id"
|
|
||||||
},
|
|
||||||
"use_defaults": {
|
"use_defaults": {
|
||||||
"description": "Sets the default values not specified in this service call. Options: \"current\" (default, retains current values), \"factory\" (resets to documented defaults), or \"configuration\" (reverts to switch config defaults). ⚙️",
|
"description": "Sets the default values not specified in this service call. Options: \"current\" (default, retains current values), \"factory\" (resets to documented defaults), or \"configuration\" (reverts to switch config defaults). ⚙️",
|
||||||
"name": "use_defaults"
|
"name": "use_defaults"
|
||||||
|
|
@ -253,6 +212,10 @@
|
||||||
"description": "Whether to prefer RGB color adjustment over light color temperature when possible. 🌈",
|
"description": "Whether to prefer RGB color adjustment over light color temperature when possible. 🌈",
|
||||||
"name": "prefer_rgb_color"
|
"name": "prefer_rgb_color"
|
||||||
},
|
},
|
||||||
|
"expand_light_groups": {
|
||||||
|
"description": "Expand light groups to their members (`true`, default). Set `false` to send commands to the group and track manual control for the group. Explicit member targets in services stay individual targets.",
|
||||||
|
"name": "expand_light_groups"
|
||||||
|
},
|
||||||
"separate_turn_on_commands": {
|
"separate_turn_on_commands": {
|
||||||
"description": "Use separate `light.turn_on` calls for color and brightness, needed for some light types. 🔀",
|
"description": "Use separate `light.turn_on` calls for color and brightness, needed for some light types. 🔀",
|
||||||
"name": "separate_turn_on_commands"
|
"name": "separate_turn_on_commands"
|
||||||
|
|
@ -302,13 +265,21 @@
|
||||||
"name": "min_sunset_time"
|
"name": "min_sunset_time"
|
||||||
},
|
},
|
||||||
"take_over_control": {
|
"take_over_control": {
|
||||||
"description": "Disable Adaptive Lighting if another source calls `light.turn_on` while lights are on and being adapted. Note that this calls `homeassistant.update_entity` every `interval`! 🔒",
|
"description": "Pause adaptation of individual lights and hand over (manual) control to other sources that issue `light.turn_on` calls for lights that are on. 🔒",
|
||||||
"name": "take_over_control"
|
"name": "take_over_control"
|
||||||
},
|
},
|
||||||
|
"take_over_control_mode": {
|
||||||
|
"description": "The adaptation pausing mode when other sources change brightness and/or color of lights. `pause_all` always pauses both brightness and color adaptation. `pause_changed` pauses the adaptation of only the changed attributes and continues adapting unchanged attributes, e.g., continues color adaptation when only brightness was changed.",
|
||||||
|
"name": "take_over_control_mode"
|
||||||
|
},
|
||||||
"detect_non_ha_changes": {
|
"detect_non_ha_changes": {
|
||||||
"description": "Detects and halts adaptations for non-`light.turn_on` state changes. Needs `take_over_control` enabled. 🕵️ Caution: ⚠️ Some lights might falsely indicate an 'on' state, which could result in lights turning on unexpectedly. Disable this feature if you encounter such issues.",
|
"description": "Detects and halts adaptations for non-`light.turn_on` state changes. Needs `take_over_control` enabled. 🕵️ Caution: ⚠️ Some lights might falsely indicate an 'on' state, which could result in lights turning on unexpectedly. Note that this calls `homeassistant.update_entity` every `interval`! Disable this feature if you encounter such issues.",
|
||||||
"name": "detect_non_ha_changes"
|
"name": "detect_non_ha_changes"
|
||||||
},
|
},
|
||||||
|
"manual_control_on_external_turn_on": {
|
||||||
|
"description": "Treat turn-ons without a matching Home Assistant `light.turn_on` context as manual control. Normal manual-control resets apply. Still allows `detect_non_ha_changes` for already-on lights. Needs `take_over_control` enabled. 🕵️",
|
||||||
|
"name": "manual_control_on_external_turn_on"
|
||||||
|
},
|
||||||
"transition": {
|
"transition": {
|
||||||
"description": "Duration of transition when lights change, in seconds. 🕑",
|
"description": "Duration of transition when lights change, in seconds. 🕑",
|
||||||
"name": "transition"
|
"name": "transition"
|
||||||
|
|
|
||||||
File diff suppressed because it is too large
Load diff
|
|
@ -28,20 +28,16 @@
|
||||||
"title": "Aanpasbare beligting opsies",
|
"title": "Aanpasbare beligting opsies",
|
||||||
"data": {},
|
"data": {},
|
||||||
"data_description": {},
|
"data_description": {},
|
||||||
"menu_options": {
|
"sections": {
|
||||||
"advanced": "Configure advanced options",
|
"advanced": {
|
||||||
"finish": "Save and finish"
|
"data": {
|
||||||
}
|
"adapt_only_on_bare_turn_on": "adapt_only_on_bare_turn_on: Wanneer ligte aanvanklik aangeskakel word. As dit op \"true\" gestel is, pas AL slegs aan as \"light.turn_on\" opgeroep word sonder om kleur of helderheid te spesifiseer. ❌🌈 Dit verhoed bv. aanpassing wanneer 'n toneel geaktiveer word. As `onwaar`, pas AL aan ongeag die teenwoordigheid van kleur of helderheid in die aanvanklike `diens_data`. Moet `oorname_beheer` geaktiveer moet word. 🕵️ "
|
||||||
},
|
},
|
||||||
"advanced": {
|
"data_description": {
|
||||||
"title": "Advanced Settings",
|
"sunrise_offset": "Pas sonsopkomstyd aan met 'n positiewe of negatiewe afwyking in sekondes. ⏰",
|
||||||
"description": "Configure advanced Adaptive Lighting options. Most users don't need to change these settings.",
|
"sunset_offset": "Pas sonsondergangtyd aan met 'n positiewe of negatiewe afwyking in sekondes. ⏰"
|
||||||
"data": {
|
}
|
||||||
"adapt_only_on_bare_turn_on": "adapt_only_on_bare_turn_on: Wanneer ligte aanvanklik aangeskakel word. As dit op \"true\" gestel is, pas AL slegs aan as \"light.turn_on\" opgeroep word sonder om kleur of helderheid te spesifiseer. ❌🌈 Dit verhoed bv. aanpassing wanneer 'n toneel geaktiveer word. As `onwaar`, pas AL aan ongeag die teenwoordigheid van kleur of helderheid in die aanvanklike `diens_data`. Moet `oorname_beheer` geaktiveer moet word. 🕵️ "
|
}
|
||||||
},
|
|
||||||
"data_description": {
|
|
||||||
"sunrise_offset": "Pas sonsopkomstyd aan met 'n positiewe of negatiewe afwyking in sekondes. ⏰",
|
|
||||||
"sunset_offset": "Pas sonsondergangtyd aan met 'n positiewe of negatiewe afwyking in sekondes. ⏰"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,13 @@
|
||||||
"data": {
|
"data": {
|
||||||
"name": "Име"
|
"name": "Име"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"menu": {
|
||||||
|
"title": "Създай или дублирай",
|
||||||
|
"description": "Искате ли да създадете нов екземпляр или да дублирате съществуващ?",
|
||||||
|
"data": {
|
||||||
|
"action": "Действие"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"abort": {
|
"abort": {
|
||||||
|
|
@ -18,7 +25,7 @@
|
||||||
"step": {
|
"step": {
|
||||||
"init": {
|
"init": {
|
||||||
"title": "Настройки на Адаптивно осветление",
|
"title": "Настройки на Адаптивно осветление",
|
||||||
"description": "Конфигурирайте компонент за Адаптивно осветление. Имената на опциите съвпадат с настройките на YAML. Ако сте дефинирали този запис в YAML, няма да се появят опции тук. За интерактивни графики, които демонстрират ефектите на параметрите, посетете [това уеб приложение](https://basnijholt.github.io/adaptive-lighting). За повече подробности, вижте [официалната документация](https://github.com/basnijholt/adaptive-lighting#readme).",
|
"description": "Конфигурирайте компонент за Адаптивно осветление. Имената на опциите съвпадат с настройките на YAML. Ако сте дефинирали този запис в YAML, няма да се появят опции тук. За интерактивни графики, които демонстрират ефектите на параметрите, посетете [това уеб приложение]({webapp_url}). За повече подробности, вижте [официалната документация]({docs_url}).",
|
||||||
"data": {
|
"data": {
|
||||||
"lights": "lights: Списък от entity_ids на лампи за контрол (може да е празен). 🌟",
|
"lights": "lights: Списък от entity_ids на лампи за контрол (може да е празен). 🌟",
|
||||||
"interval": "интервал",
|
"interval": "интервал",
|
||||||
|
|
@ -36,64 +43,60 @@
|
||||||
"sleep_brightness": "Процент на яркостта на лампите в режим на сън. 😴",
|
"sleep_brightness": "Процент на яркостта на лампите в режим на сън. 😴",
|
||||||
"sleep_color_temp": "Цветова температура в режим на сън (използва се, когато \"sleep_rgb_or_color_temp\" е \"color_temp\") в Келвин. 😴"
|
"sleep_color_temp": "Цветова температура в режим на сън (използва се, когато \"sleep_rgb_or_color_temp\" е \"color_temp\") в Келвин. 😴"
|
||||||
},
|
},
|
||||||
"menu_options": {
|
"sections": {
|
||||||
"advanced": "Configure advanced options",
|
"advanced": {
|
||||||
"finish": "Save and finish"
|
"data": {
|
||||||
}
|
"initial_transition": "начален преход",
|
||||||
},
|
"prefer_rgb_color": "prefer_rgb_color: Дали да се предпочита RGB цветова корекция пред температура на светлината, когато е възможно. 🌈",
|
||||||
"advanced": {
|
"sleep_rgb_or_color_temp": "RGB или цветова температура при сън",
|
||||||
"title": "Advanced Settings",
|
"sleep_rgb_color": "RGB цвят при сън",
|
||||||
"description": "Configure advanced Adaptive Lighting options. Most users don't need to change these settings.",
|
"sleep_transition": "преход при сън",
|
||||||
"data": {
|
"transition_until_sleep": "transition_until_sleep: Когато е активирано, Adaptive Lighting ще третира настройките за сън като минимум, преминавайки към тези стойности след залез. 🌙",
|
||||||
"initial_transition": "начален преход",
|
"sunrise_time": "време на изгрев",
|
||||||
"prefer_rgb_color": "prefer_rgb_color: Дали да се предпочита RGB цветова корекция пред температура на светлината, когато е възможно. 🌈",
|
"min_sunrise_time": "минимално време на изгрев",
|
||||||
"sleep_rgb_or_color_temp": "RGB или цветова температура при сън",
|
"max_sunrise_time": "максимално време на изгрев",
|
||||||
"sleep_rgb_color": "RGB цвят при сън",
|
"sunrise_offset": "отместване на изгрева",
|
||||||
"sleep_transition": "преход при сън",
|
"sunset_time": "време на залез",
|
||||||
"transition_until_sleep": "transition_until_sleep: Когато е активирано, Adaptive Lighting ще третира настройките за сън като минимум, преминавайки към тези стойности след залез. 🌙",
|
"min_sunset_time": "минимално време на залез",
|
||||||
"sunrise_time": "време на изгрев",
|
"max_sunset_time": "максимално време на залез",
|
||||||
"min_sunrise_time": "минимално време на изгрев",
|
"sunset_offset": "отместване на залеза",
|
||||||
"max_sunrise_time": "максимално време на изгрев",
|
"brightness_mode": "режим на яркост",
|
||||||
"sunrise_offset": "отместване на изгрева",
|
"brightness_mode_time_dark": "време на режим на яркост при тъмно",
|
||||||
"sunset_time": "време на залез",
|
"brightness_mode_time_light": "време на режим на яркост при светло",
|
||||||
"min_sunset_time": "минимално време на залез",
|
"take_over_control": "take_over_control: Деактивира Adaptive Lighting, ако друг източник извика \"light.turn_on\", докато лампите са включени и се адаптират. Имайте предвид, че това извиква \"homeassistant.update_entity\" на всеки \"interval\"! 🔒",
|
||||||
"max_sunset_time": "максимално време на залез",
|
"detect_non_ha_changes": "detect_non_ha_changes: Открива и спира адаптации за промени в състоянието, които не са \"light.turn_on\". Изисква \"take_over_control\" активиран. 🕵️ Внимание: ⚠️ Някои лампиможе лъжливо да указват 'включено' състояние, което може да доведе до неочаквано включване на лампите. Деактивирайте тази функция, ако се сблъскате с такива проблеми.",
|
||||||
"sunset_offset": "отместване на залеза",
|
"autoreset_control_seconds": "секунди за автоматично нулиране на контрола",
|
||||||
"brightness_mode": "режим на яркост",
|
"only_once": "only_once: Адаптира лампите само когато са включени (\"true\") или продължава да ги адаптира (\"false\"). 🔄",
|
||||||
"brightness_mode_time_dark": "време на режим на яркост при тъмно",
|
"adapt_only_on_bare_turn_on": "adapt_only_on_bare_turn_on: При първоначално включване на лампите. Ако е зададено на \"true\", Адаптивно Осветление се адаптира само ако е извикано \"light.turn_on\" без указване на цвят или яркост. ❌🌈 Това например предотвратява адаптация при активиране на сцена. Ако е \"false\", Адаптивно Осветление се адаптира независимо от наличието на цвят или яркост в първоначалните \"service_data\". Изисква \"take_over_control\" активиран. 🕵️ ",
|
||||||
"brightness_mode_time_light": "време на режим на яркост при светло",
|
"separate_turn_on_commands": "separate_turn_on_commands: Използва отделни \"light.turn_on\" команди за цвят и яркост, необходими за някои типове светлини. 🔀",
|
||||||
"take_over_control": "take_over_control: Деактивира Adaptive Lighting, ако друг източник извика \"light.turn_on\", докато лампите са включени и се адаптират. Имайте предвид, че това извиква \"homeassistant.update_entity\" на всеки \"interval\"! 🔒",
|
"send_split_delay": "забавяне при изпращане на разделени",
|
||||||
"detect_non_ha_changes": "detect_non_ha_changes: Открива и спира адаптации за промени в състоянието, които не са \"light.turn_on\". Изисква \"take_over_control\" активиран. 🕵️ Внимание: ⚠️ Някои лампиможе лъжливо да указват 'включено' състояние, което може да доведе до неочаквано включване на лампите. Деактивирайте тази функция, ако се сблъскате с такива проблеми.",
|
"adapt_delay": "забавяне при адаптация",
|
||||||
"autoreset_control_seconds": "секунди за автоматично нулиране на контрола",
|
"skip_redundant_commands": "skip_redundant_commands: Пропуска изпращането на команди за адаптация, чиято целева състояние вече е равно на известното състояние на светлината. Минимизира мрежовия трафик и подобрява отговорността на адаптацията в някои ситуации. 📉Деактивирайте, ако физическите състояния на лампите се разминават с записаното състояние на HA.",
|
||||||
"only_once": "only_once: Адаптира лампите само когато са включени (\"true\") или продължава да ги адаптира (\"false\"). 🔄",
|
"intercept": "intercept: Прихваща и адаптира \"light.turn_on\" повиквания, позволявайки моментална адаптация на цвета и яркостта. 🏎️ Деактивирайте за светлини, които не поддържат \"light.turn_on\" с цвят и яркост.",
|
||||||
"adapt_only_on_bare_turn_on": "adapt_only_on_bare_turn_on: При първоначално включване на лампите. Ако е зададено на \"true\", Адаптивно Осветление се адаптира само ако е извикано \"light.turn_on\" без указване на цвят или яркост. ❌🌈 Това например предотвратява адаптация при активиране на сцена. Ако е \"false\", Адаптивно Осветление се адаптира независимо от наличието на цвят или яркост в първоначалните \"service_data\". Изисква \"take_over_control\" активиран. 🕵️ ",
|
"multi_light_intercept": "multi_light_intercept: Прихваща и адаптира \"light.turn_on\" повиквания, които целят множество светлини. ➗⚠️ Това може да доведе до разделяне на едно \"light.turn_on\" повикване на множество повиквания, например когато лампите са в различни превключватели. Изисква \"intercept\" да бъде активиран.",
|
||||||
"separate_turn_on_commands": "separate_turn_on_commands: Използва отделни \"light.turn_on\" команди за цвят и яркост, необходими за някои типове светлини. 🔀",
|
"include_config_in_attributes": "include_config_in_attributes: Показва всички опции като атрибути на ключа в Home Assistant, когато е зададено на \"true\". 📝"
|
||||||
"send_split_delay": "забавяне при изпращане на разделени",
|
},
|
||||||
"adapt_delay": "забавяне при адаптация",
|
"data_description": {
|
||||||
"skip_redundant_commands": "skip_redundant_commands: Пропуска изпращането на команди за адаптация, чиято целева състояние вече е равно на известното състояние на светлината. Минимизира мрежовия трафик и подобрява отговорността на адаптацията в някои ситуации. 📉Деактивирайте, ако физическите състояния на лампите се разминават с записаното състояние на HA.",
|
"initial_transition": "Продължителност на първия преход, когато лампите преминават от \"off\" на \"on\" в секунди. ⏲️",
|
||||||
"intercept": "intercept: Прихваща и адаптира \"light.turn_on\" повиквания, позволявайки моментална адаптация на цвета и яркостта. 🏎️ Деактивирайте за светлини, които не поддържат \"light.turn_on\" с цвят и яркост.",
|
"sleep_rgb_or_color_temp": "Използвайте или \"\"rgb_color\"\" или \"\"color_temp\"\" в режим на сън. 🌙",
|
||||||
"multi_light_intercept": "multi_light_intercept: Прихваща и адаптира \"light.turn_on\" повиквания, които целят множество светлини. ➗⚠️ Това може да доведе до разделяне на едно \"light.turn_on\" повикване на множество повиквания, например когато лампите са в различни превключватели. Изисква \"intercept\" да бъде активиран.",
|
"sleep_rgb_color": "RGB цвят в режим на сън (използва се, когато \"sleep_rgb_or_color_temp\" е \"rgb_color\"). 🌈",
|
||||||
"include_config_in_attributes": "include_config_in_attributes: Показва всички опции като атрибути на ключа в Home Assistant, когато е зададено на \"true\". 📝"
|
"sleep_transition": "Продължителност на прехода, когато се превключва \"режим на сън\" в секунди. 😴",
|
||||||
},
|
"sunrise_time": "Задайте фиксирано време (HH:MM:SS) за изгрев. 🌅",
|
||||||
"data_description": {
|
"min_sunrise_time": "Задайте най-ранното виртуално време за изгрев (HH:MM:SS), позволяващо по-късни изгреви. 🌅",
|
||||||
"initial_transition": "Продължителност на първия преход, когато лампите преминават от \"off\" на \"on\" в секунди. ⏲️",
|
"max_sunrise_time": "Задайте най-късното виртуално време за изгрев (HH:MM:SS), позволяващо по-ранни изгреви. 🌅",
|
||||||
"sleep_rgb_or_color_temp": "Използвайте или \"\"rgb_color\"\" или \"\"color_temp\"\" в режим на сън. 🌙",
|
"sunrise_offset": "Регулирайте времето на изгрев с положителен или отрицателен отместване в секунди. ⏰",
|
||||||
"sleep_rgb_color": "RGB цвят в режим на сън (използва се, когато \"sleep_rgb_or_color_temp\" е \"rgb_color\"). 🌈",
|
"sunset_time": "Задайте фиксирано време (HH:MM:SS) за залез. 🌇",
|
||||||
"sleep_transition": "Продължителност на прехода, когато се превключва \"режим на сън\" в секунди. 😴",
|
"min_sunset_time": "Задайте най-ранното виртуално време за залез (HH:MM:SS), позволяващо по-късни залези. 🌇",
|
||||||
"sunrise_time": "Задайте фиксирано време (HH:MM:SS) за изгрев. 🌅",
|
"max_sunset_time": "Задайте най-късното виртуално време за залез (HH:MM:SS), позволяващо по-ранни залези. 🌇",
|
||||||
"min_sunrise_time": "Задайте най-ранното виртуално време за изгрев (HH:MM:SS), позволяващо по-късни изгреви. 🌅",
|
"sunset_offset": "Регулирайте времето на залез с положителен или отрицателен отместване в секунди. ⏰",
|
||||||
"max_sunrise_time": "Задайте най-късното виртуално време за изгрев (HH:MM:SS), позволяващо по-ранни изгреви. 🌅",
|
"brightness_mode": "Режим на яркост за използване. Възможни стойности са \"default\", \"linear\" и \"tanh\" (използва \"brightness_mode_time_dark\" и \"brightness_mode_time_light\"). 📈",
|
||||||
"sunrise_offset": "Регулирайте времето на изгрев с положителен или отрицателен отместване в секунди. ⏰",
|
"brightness_mode_time_dark": "(Игнорира се, ако \"brightness_mode='default'\") Продължителност в секунди за увеличаване/намаляване на яркостта преди/след изгрев/залез. 📈📉",
|
||||||
"sunset_time": "Задайте фиксирано време (HH:MM:SS) за залез. 🌇",
|
"brightness_mode_time_light": "(Игнорира се, ако \"brightness_mode='default'\") Продължителност в секунди за увеличаване/намаляване на яркостта след/преди изгрев/залез. 📈📉.",
|
||||||
"min_sunset_time": "Задайте най-ранното виртуално време за залез (HH:MM:SS), позволяващо по-късни залези. 🌇",
|
"autoreset_control_seconds": "Автоматично нулиране на ръчния контрол след определен брой секунди. Задайте на 0 за деактивиране. ⏲️",
|
||||||
"max_sunset_time": "Задайте най-късното виртуално време за залез (HH:MM:SS), позволяващо по-ранни залези. 🌇",
|
"send_split_delay": "Забавяне (ms) между \"separate_turn_on_commands\" за светлини, които не поддържат едновременна настройка на яркост и цвят. ⏲️",
|
||||||
"sunset_offset": "Регулирайте времето на залез с положителен или отрицателен отместване в секунди. ⏰",
|
"adapt_delay": "Време за изчакване (секунди) между включване на светлината и прилагане на промени от Адаптивно Осветление. Може да помогне за избягване на трептене. ⏲️"
|
||||||
"brightness_mode": "Режим на яркост за използване. Възможни стойности са \"default\", \"linear\" и \"tanh\" (използва \"brightness_mode_time_dark\" и \"brightness_mode_time_light\"). 📈",
|
}
|
||||||
"brightness_mode_time_dark": "(Игнорира се, ако \"brightness_mode='default'\") Продължителност в секунди за увеличаване/намаляване на яркостта преди/след изгрев/залез. 📈📉",
|
}
|
||||||
"brightness_mode_time_light": "(Игнорира се, ако \"brightness_mode='default'\") Продължителност в секунди за увеличаване/намаляване на яркостта след/преди изгрев/залез. 📈📉.",
|
|
||||||
"autoreset_control_seconds": "Автоматично нулиране на ръчния контрол след определен брой секунди. Задайте на 0 за деактивиране. ⏲️",
|
|
||||||
"send_split_delay": "Забавяне (ms) между \"separate_turn_on_commands\" за светлини, които не поддържат едновременна настройка на яркост и цвят. ⏲️",
|
|
||||||
"adapt_delay": "Време за изчакване (секунди) между включване на светлината и прилагане на промени от Адаптивно Осветление. Може да помогне за избягване на трептене. ⏲️"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -4,10 +4,10 @@
|
||||||
"step": {
|
"step": {
|
||||||
"init": {
|
"init": {
|
||||||
"data_description": {
|
"data_description": {
|
||||||
"sleep_color_temp": "Temperatura de color en mode nocturn (s'utilitza quan `sleep_rgb_or_color_temp` és `color_temp`) en Kelvin. 😴",
|
|
||||||
"sleep_brightness": "Percentatge de brillantor dels llums en mode nocturn. 😴",
|
|
||||||
"interval": "Freqüència d'adaptació de les llums, en segons. 🔄",
|
"interval": "Freqüència d'adaptació de les llums, en segons. 🔄",
|
||||||
"transition": "Durada de la transició en canviar les llums, en segons. 🕑"
|
"transition": "Durada de la transició en canviar les llums, en segons. 🕑",
|
||||||
|
"sleep_brightness": "Percentatge de brillantor dels llums en mode nocturn. 😴",
|
||||||
|
"sleep_color_temp": "Temperatura de color en mode nocturn (s'utilitza quan `sleep_rgb_or_color_temp` és `color_temp`) en Kelvin. 😴"
|
||||||
},
|
},
|
||||||
"title": "Opcions Il·luminació Adaptativa",
|
"title": "Opcions Il·luminació Adaptativa",
|
||||||
"data": {
|
"data": {
|
||||||
|
|
@ -17,47 +17,43 @@
|
||||||
"min_color_temp": "min_color_temp: Temperatura de color més càlida en graus Kelvin. 🔥",
|
"min_color_temp": "min_color_temp: Temperatura de color més càlida en graus Kelvin. 🔥",
|
||||||
"max_color_temp": "max_color_temp: Temperatura de color més freda en graus Kelvin. ❄️"
|
"max_color_temp": "max_color_temp: Temperatura de color més freda en graus Kelvin. ❄️"
|
||||||
},
|
},
|
||||||
"description": "Configura un component d'Adaptive Lighting. Els noms de les opcions s'alineen amb la configuració de YAML. Si has definit aquesta entrada a YAML, aquí no apareixerà cap opció. Per veure gràfics interactius que demostren efectes de paràmetres, visita [aquesta aplicació web] (https://basnijholt.github.io/adaptive-lighting). Per a més detalls, pots veure la [documentació oficial] (https://github.com/basnijholt/adaptive-lighting#readme).",
|
"description": "Configura un component d'Adaptive Lighting. Els noms de les opcions s'alineen amb la configuració de YAML. Si has definit aquesta entrada a YAML, aquí no apareixerà cap opció. Per veure gràfics interactius que demostren efectes de paràmetres, visita [aquesta aplicació web]({webapp_url}). Per a més detalls, pots veure la [documentació oficial]({docs_url}).",
|
||||||
"menu_options": {
|
"sections": {
|
||||||
"advanced": "Configura opcions avançades",
|
"advanced": {
|
||||||
"finish": "Desa i acaba"
|
"data": {
|
||||||
}
|
"prefer_rgb_color": "prefer_rgb_color: Si prefereixes l'ajustament del color RGB en lloc de la temperatura de color, quan sigui possible. 🌈",
|
||||||
},
|
"transition_until_sleep": "transition_until_sleep: Si s'activa, Adaptive Lighting considerarà els ajustaments del mode nocturn com a mínims, fent una transició cap aquests valors després de la posta de sol. 🌙",
|
||||||
"advanced": {
|
"take_over_control": "take_over_control: Inhabilita Adaptive Lighting si una altra font crida `light.turn_on` quan les llums estan enceses i en procés d'adaptació. Tingues present que això cridarà `homeassistant.update_entity` cada `interval`! 🔒",
|
||||||
"title": "Configuració avançada",
|
"detect_non_ha_changes": "detect_non_ha_changes: Detecta i atura les adaptacions per als canvis d'estat diferents a `light.turn_on`. Necessita que `take_over_control` estigui habilitat. 🕵️ Precaució: ⚠️ Alguns llums poden indicar falsament un estat \"encès\", cosa que podria provocar que els llums s'encenguin inesperadament. Desactiva aquesta funció si trobes aquests problemes.",
|
||||||
"description": "Configura les opcions avançades d'Adaptive Lighting. La majoria dels usuaris no necessiten canviar aquesta configuració.",
|
"only_once": "only_once: Adapta els llums només quan s'encenen (`true`) o segueix adaptant-les (`false`). 🔄",
|
||||||
"data": {
|
"adapt_only_on_bare_turn_on": "adapt_only_on_bare_turn_on: Quan s'encenen les llums inicialment. Si el valor és `true`, AL adapta només si s'ha cridat `light.turn_on` sense especificar color o brillantor. ❌🌈 Això impedeix l'adaptació quan s'activa una escena. Si el valor és `false`, AL adapta independentment de la presencia de color o brillantor en les dades inicials `service_data`. Necessita `take_over_control` habilitat. 🕵️",
|
||||||
"adapt_only_on_bare_turn_on": "adapt_only_on_bare_turn_on: Quan s'encenen les llums inicialment. Si el valor és `true`, AL adapta només si s'ha cridat `light.turn_on` sense especificar color o brillantor. ❌🌈 Això impedeix l'adaptació quan s'activa una escena. Si el valor és `false`, AL adapta independentment de la presencia de color o brillantor en les dades inicials `service_data`. Necessita `take_over_control` habilitat. 🕵️",
|
"separate_turn_on_commands": "separate_turn_on_commands: Separa les crides de `light.turn_on` per a color i brillantor; necessari per alguns tipus de llums. 🔀",
|
||||||
"detect_non_ha_changes": "detect_non_ha_changes: Detecta i atura les adaptacions per als canvis d'estat diferents a `light.turn_on`. Necessita que `take_over_control` estigui habilitat. 🕵️ Precaució: ⚠️ Alguns llums poden indicar falsament un estat \"encès\", cosa que podria provocar que els llums s'encenguin inesperadament. Desactiva aquesta funció si trobes aquests problemes.",
|
"skip_redundant_commands": "skip_redundant_commands: Evita l'enviament de d'ordres d'adaptació als objectius on el seu estat ja és el conegut del llum. Minimitza el trànsit de la xarxa i millora la resposta de l'adaptació en alguns casos. 📉 Inhabilita-ho si l'estat físic del llum queda desincronitzat amb l'estat registrat a Home Assistant.",
|
||||||
"prefer_rgb_color": "prefer_rgb_color: Si prefereixes l'ajustament del color RGB en lloc de la temperatura de color, quan sigui possible. 🌈",
|
"intercept": "intercept: Intercepta i adapta les crides `light.turn_on` per permetre canvis instantanis de color i brillantor. 🏎️ Inhabilita-ho per a llums que no admeten `light.turn_on` amb color i brillantor.",
|
||||||
"take_over_control": "take_over_control: Inhabilita Adaptive Lighting si una altra font crida `light.turn_on` quan les llums estan enceses i en procés d'adaptació. Tingues present que això cridarà `homeassistant.update_entity` cada `interval`! 🔒",
|
"multi_light_intercept": "multi_light_intercept: Intercepta i adapta les crides `light.turn_on` dirigides a múltiples llums. ➗⚠️ Pot provocar la divisió d'una crida única `light.turn_on` en múltiples crides, com ara, quan les llums són en interruptors diferents. Necessita que `intercept` estigui habilitat.",
|
||||||
"only_once": "only_once: Adapta els llums només quan s'encenen (`true`) o segueix adaptant-les (`false`). 🔄",
|
"include_config_in_attributes": "include_config_in_attributes: Mostra totes les opcions com atributs a l'interruptor de Home Assistant quan s'estableix com a `true`. 📝"
|
||||||
"separate_turn_on_commands": "separate_turn_on_commands: Separa les crides de `light.turn_on` per a color i brillantor; necessari per alguns tipus de llums. 🔀",
|
},
|
||||||
"include_config_in_attributes": "include_config_in_attributes: Mostra totes les opcions com atributs a l'interruptor de Home Assistant quan s'estableix com a `true`. 📝",
|
"data_description": {
|
||||||
"multi_light_intercept": "multi_light_intercept: Intercepta i adapta les crides `light.turn_on` dirigides a múltiples llums. ➗⚠️ Pot provocar la divisió d'una crida única `light.turn_on` en múltiples crides, com ara, quan les llums són en interruptors diferents. Necessita que `intercept` estigui habilitat.",
|
"initial_transition": "Durada de la primera transició quan els llums canvien de `off` a `on` en segons. ⏲️",
|
||||||
"transition_until_sleep": "transition_until_sleep: Si s'activa, Adaptive Lighting considerarà els ajustaments del mode nocturn com a mínims, fent una transició cap aquests valors després de la posta de sol. 🌙",
|
"sleep_rgb_or_color_temp": "Utilitza `\"rgb_color\"` o `\"color_temp\"` durant el mode nocturn. 🌙",
|
||||||
"intercept": "intercept: Intercepta i adapta les crides `light.turn_on` per permetre canvis instantanis de color i brillantor. 🏎️ Inhabilita-ho per a llums que no admeten `light.turn_on` amb color i brillantor.",
|
"sleep_rgb_color": "Color RGB en mode nocturn (s'utilitza quan `sleep_rgb_or_color_temp` és \"rgb_color\"). 🌈",
|
||||||
"skip_redundant_commands": "skip_redundant_commands: Evita l'enviament de d'ordres d'adaptació als objectius on el seu estat ja és el conegut del llum. Minimitza el trànsit de la xarxa i millora la resposta de l'adaptació en alguns casos. 📉 Inhabilita-ho si l'estat físic del llum queda desincronitzat amb l'estat registrat a Home Assistant."
|
"sleep_transition": "Durada de la transició en commutar el \"mode nocturn\", en segons. 🕑",
|
||||||
},
|
"sunrise_time": "Indica una hora fixa (HH:MM:SS) per a la sortida del sol. 🌅",
|
||||||
"data_description": {
|
"min_sunrise_time": "Defineix la sortida de sol virtual més primerenca (HH:MM:SS), tot permetent sortides de sol posteriors. 🌅",
|
||||||
"initial_transition": "Durada de la primera transició quan els llums canvien de `off` a `on` en segons. ⏲️",
|
"max_sunrise_time": "Defineix la sortida de sol virtual més tardana (HH:MM:SS), tot permetent sortides de sol abans. 🌅",
|
||||||
"sunset_offset": "Ajusta l'hora de la posta del sol amb una compensació positiva o negativa en segons. ⏰",
|
"sunrise_offset": "Ajusta l'hora de sortida del sol amb una compensació positiva o negativa en segons. ⏰",
|
||||||
"send_split_delay": "Retard (ms) entre `separate_turn_on_commands` per als llums que no admeten la configuració simultània de brillantor i color. ⏲️",
|
"sunset_time": "Indica una hora fixa (HH:MM:SS) per a la posta de sol. 🌇",
|
||||||
"sunrise_offset": "Ajusta l'hora de sortida del sol amb una compensació positiva o negativa en segons. ⏰",
|
"min_sunset_time": "Defineix la posta de sol virtual més primerenca (HH:MM:SS), tot permetent postes de sol més tard. 🌇",
|
||||||
"autoreset_control_seconds": "Restableix automàticament el control manual al cap d'uns segons. Posar a 0 per desactivar. ⏲️",
|
"max_sunset_time": "Defineix la sortida virtual de sol virtual més tardana (HH:MM:SS), tot permetent sortides de sol abans. 🌇",
|
||||||
"brightness_mode": "Mode de brillantor a utilitzar. Els valors possibles són `default`, \"linear\" i \"tanh\" (utilitza `brightness_mode_time_dark` i `brightness_mode_time_light`). 📈",
|
"sunset_offset": "Ajusta l'hora de la posta del sol amb una compensació positiva o negativa en segons. ⏰",
|
||||||
"sleep_transition": "Durada de la transició en commutar el \"mode nocturn\", en segons. 🕑",
|
"brightness_mode": "Mode de brillantor a utilitzar. Els valors possibles són `default`, \"linear\" i \"tanh\" (utilitza `brightness_mode_time_dark` i `brightness_mode_time_light`). 📈",
|
||||||
"sleep_rgb_color": "Color RGB en mode nocturn (s'utilitza quan `sleep_rgb_or_color_temp` és \"rgb_color\"). 🌈",
|
"brightness_mode_time_dark": "(S'ignora si `brightness_mode='default'`) La durada en segons de la variació de la brillantor abans/despres de la sortida/posta de sol. 📈📉.",
|
||||||
"sunrise_time": "Indica una hora fixa (HH:MM:SS) per a la sortida del sol. 🌅",
|
"brightness_mode_time_light": "(S'ignora si `brightness_mode='default'`) La durada en segons de la variació de la brillantor abans/despres de la sortida/posta de sol. 📈📉.",
|
||||||
"sleep_rgb_or_color_temp": "Utilitza `\"rgb_color\"` o `\"color_temp\"` durant el mode nocturn. 🌙",
|
"autoreset_control_seconds": "Restableix automàticament el control manual al cap d'uns segons. Posar a 0 per desactivar. ⏲️",
|
||||||
"sunset_time": "Indica una hora fixa (HH:MM:SS) per a la posta de sol. 🌇",
|
"send_split_delay": "Retard (ms) entre `separate_turn_on_commands` per als llums que no admeten la configuració simultània de brillantor i color. ⏲️",
|
||||||
"brightness_mode_time_dark": "(S'ignora si `brightness_mode='default'`) La durada en segons de la variació de la brillantor abans/despres de la sortida/posta de sol. 📈📉.",
|
"adapt_delay": "Temps d'espera (en segons) entre l'encesa de la llum i els canvis per part d'Adaptive Lighting. Pot ajudar a evitar els parpalleigs. ⏲️"
|
||||||
"brightness_mode_time_light": "(S'ignora si `brightness_mode='default'`) La durada en segons de la variació de la brillantor abans/despres de la sortida/posta de sol. 📈📉.",
|
}
|
||||||
"adapt_delay": "Temps d'espera (en segons) entre l'encesa de la llum i els canvis per part d'Adaptive Lighting. Pot ajudar a evitar els parpalleigs. ⏲️",
|
}
|
||||||
"min_sunrise_time": "Defineix la sortida de sol virtual més primerenca (HH:MM:SS), tot permetent sortides de sol posteriors. 🌅",
|
|
||||||
"max_sunrise_time": "Defineix la sortida de sol virtual més tardana (HH:MM:SS), tot permetent sortides de sol abans. 🌅",
|
|
||||||
"max_sunset_time": "Defineix la sortida virtual de sol virtual més tardana (HH:MM:SS), tot permetent sortides de sol abans. 🌇",
|
|
||||||
"min_sunset_time": "Defineix la posta de sol virtual més primerenca (HH:MM:SS), tot permetent postes de sol més tard. 🌇"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
@ -205,6 +201,13 @@
|
||||||
"user": {
|
"user": {
|
||||||
"title": "Tria un nom per a la instància d'Adaptive Lighting",
|
"title": "Tria un nom per a la instància d'Adaptive Lighting",
|
||||||
"description": "Cada instància pot contenir múltiples llums!"
|
"description": "Cada instància pot contenir múltiples llums!"
|
||||||
|
},
|
||||||
|
"menu": {
|
||||||
|
"title": "Crear o Duplicar",
|
||||||
|
"description": "Vols crear una nova instància, o duplicar-ne una d'existent?",
|
||||||
|
"data": {
|
||||||
|
"action": "Acció"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"abort": {
|
"abort": {
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,10 @@
|
||||||
"data": {
|
"data": {
|
||||||
"name": "Název"
|
"name": "Název"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"menu": {
|
||||||
|
"title": "Vytvořit nebo duplikovat",
|
||||||
|
"description": "Chcete vytvořit novou instanci nebo duplikovat stávající?"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"abort": {
|
"abort": {
|
||||||
|
|
@ -18,76 +22,72 @@
|
||||||
"step": {
|
"step": {
|
||||||
"init": {
|
"init": {
|
||||||
"title": "Nastavení Adaptivního osvětlení",
|
"title": "Nastavení Adaptivního osvětlení",
|
||||||
"description": "Všechna nastavení komponenty Adaptivního osvětlení. Názvy možností odpovídají nastavení YAML. Pokud máte v konfiguraci YAML definovánu položku 'adaptive_lighting', nezobrazí se žádné možnosti.",
|
"description": "Nakonfigurujte komponentu Adaptive Lighting. Názvy voleb odpovídají nastavení YAML. Pokud je tato položka definována v YAML, žádné volby se zde nezobrazí. Interaktivní grafy znázorňující vliv parametrů najdete v [této webové aplikaci]({webapp_url}). Další podrobnosti najdete v [oficiální dokumentaci]({docs_url}).",
|
||||||
"data": {
|
"data": {
|
||||||
"lights": "lights: Seznam světel (entity_id), které mají být ovládané (může být prázdný). 🌟",
|
"lights": "lights: Seznam světel (entity_id), které mají být ovládané (může být prázdný). 🌟",
|
||||||
"interval": "interval: Prodleva pro změny osvětlení (v sekundách)",
|
"interval": "interval: Prodleva pro změny osvětlení (v sekundách)",
|
||||||
"max_brightness": "max_brightness: Nejvyšší jas osvětlení během cyklu. (%)",
|
"transition": "",
|
||||||
"max_color_temp": "max_color_temp: Nejchladnější odstín cyklu teploty barev. (Kelvin)",
|
|
||||||
"min_brightness": "min_brightness: Nejnižší jas osvětlení během cyklu. (%)",
|
"min_brightness": "min_brightness: Nejnižší jas osvětlení během cyklu. (%)",
|
||||||
|
"max_brightness": "max_brightness: Nejvyšší jas osvětlení během cyklu. (%)",
|
||||||
"min_color_temp": "min_color_temp, Nejteplejší odstín cyklu teploty barev. (Kelvin)",
|
"min_color_temp": "min_color_temp, Nejteplejší odstín cyklu teploty barev. (Kelvin)",
|
||||||
|
"max_color_temp": "max_color_temp: Nejchladnější odstín cyklu teploty barev. (Kelvin)",
|
||||||
"sleep_brightness": "sleep_brightness, Nastavení jasu pro režim spánku. (%)",
|
"sleep_brightness": "sleep_brightness, Nastavení jasu pro režim spánku. (%)",
|
||||||
"sleep_color_temp": "sleep_color_temp: Nastavení teploty barev pro režim spánku. (v Kelvinech)",
|
"sleep_color_temp": "sleep_color_temp: Nastavení teploty barev pro režim spánku. (v Kelvinech)"
|
||||||
"transition": ""
|
|
||||||
},
|
},
|
||||||
"data_description": {
|
"data_description": {
|
||||||
"sleep_color_temp": "Teplota barev v režimu spánku (používá se, když `sleep_rgb_or_color_temp` je `color_temp`) v Kelvinech. 😴",
|
|
||||||
"sleep_brightness": "Jas světel během režimu spánku (v %). 😴",
|
|
||||||
"interval": "Frekvence přizpůsobení světel v sekundách. 🔄",
|
"interval": "Frekvence přizpůsobení světel v sekundách. 🔄",
|
||||||
"transition": "Doba trvání přechodu změny světel v sekundách. 🕑"
|
"transition": "Doba trvání přechodu změny světel v sekundách. 🕑",
|
||||||
|
"sleep_brightness": "Jas světel během režimu spánku (v %). 😴",
|
||||||
|
"sleep_color_temp": "Teplota barev v režimu spánku (používá se, když `sleep_rgb_or_color_temp` je `color_temp`) v Kelvinech. 😴"
|
||||||
},
|
},
|
||||||
"menu_options": {
|
"sections": {
|
||||||
"advanced": "Konfigurovat pokročilé možnosti",
|
"advanced": {
|
||||||
"finish": "Uložit a dokončit"
|
"data": {
|
||||||
}
|
"initial_transition": "initial_transition: Prodlení pro změnu z 'vypnuto' do 'zapnuto' (sekundy)",
|
||||||
},
|
"prefer_rgb_color": "prefer_rgb_color: Upřednostněte použití 'rgb_color' před 'color_temp'.",
|
||||||
"advanced": {
|
"sleep_rgb_or_color_temp": "sleep_rgb_or_color_temp, použijte 'rgb_color' nebo 'color_temp'",
|
||||||
"title": "Pokročilá nastavení",
|
"sleep_rgb_color": "sleep_rgb_color, v RGB",
|
||||||
"description": "Konfigurujte pokročilé možnosti Adaptive Lighting. Většina uživatelů tyto nastavení měnit nemusí.",
|
"sleep_transition": "sleep_transition: Prodleva pro přepnutí do „režimu spánku“ (sekundy)",
|
||||||
"data": {
|
"transition_until_sleep": "transition_until_sleep: Pokud je zapnuto, Adaptive Lighting bude zacházet s nastavením spánku jako s minimem, na tyto hodnoty přejde po západu slunce. 🌙",
|
||||||
"initial_transition": "initial_transition: Prodlení pro změnu z 'vypnuto' do 'zapnuto' (sekundy)",
|
"sunrise_time": "sunrise_time: Manuální přepsání času východu slunce, pokud je „None“, použije se skutečný čas východu slunce ve vaší lokalitě (HH:MM:SS)",
|
||||||
"sleep_transition": "sleep_transition: Prodleva pro přepnutí do „režimu spánku“ (sekundy)",
|
"max_sunrise_time": "max_sunrise_time: Ruční přepsání nejpozdějšího času východu slunce, pokud je „None“, použije se skutečný čas východu slunce vaší lokality (HH:MM:SS)",
|
||||||
"only_once": "only_once: Přizpůsobení osvětlení pouze při rozsvícení.",
|
"sunrise_offset": "sunrise_offset: Jak dlouho před (-) nebo po (+) definovat bod cyklu východu slunce (+/- v sekundách)",
|
||||||
"prefer_rgb_color": "prefer_rgb_color: Upřednostněte použití 'rgb_color' před 'color_temp'.",
|
"sunset_time": "sunset_time: Ruční přepsání času západu slunce, pokud je „None“, použije se skutečný čas západu slunce vaší lokality (HH:MM:SS)",
|
||||||
"separate_turn_on_commands": "separate_turn_on_commands: Oddělení příkazů pro každý atribut (barva, jas, atd.) v atributu 'light.turn_on' (vyžadováno pro některá světla).",
|
"min_sunset_time": "min_sunset_time: Ruční přepsání nejdřívějšího času západu slunce, pokud je „None“, použije se skutečný čas západu slunce vaší lokality (HH:MM:SS)",
|
||||||
"send_split_delay": "send_split_delay: prodleva mezi příkazy (milisekundy), když je použit atribut 'separate_turn_on_commands'. Může zajistit správné zpracování obou příkazů.",
|
"sunset_offset": "sunset_offset: Jak dlouho před (-) nebo po (+) definovat bod cyklu západu slunce (+/- v sekundách)",
|
||||||
"sleep_rgb_or_color_temp": "sleep_rgb_or_color_temp, použijte 'rgb_color' nebo 'color_temp'",
|
"take_over_control": "take_over_control: Je-li volán 'light.turn_on' z jiného zdroje, než Adaptivním osvětlením, když je světlo již rozsvíceno, přestaňte toto světlo ovládat, dokud není vypnuto -> zapnuto (nebo i vypínačem).",
|
||||||
"sleep_rgb_color": "sleep_rgb_color, v RGB",
|
"detect_non_ha_changes": "detect_non_ha_changes: detekuje všechny změny >10% provedených pro osvětlení (také mimo HA), vyžaduje povolení atributu 'take_over_control' (každý 'interval' spouští 'homeassistant.update_entity'!)",
|
||||||
"sunrise_offset": "sunrise_offset: Jak dlouho před (-) nebo po (+) definovat bod cyklu východu slunce (+/- v sekundách)",
|
"only_once": "only_once: Přizpůsobení osvětlení pouze při rozsvícení.",
|
||||||
"sunrise_time": "sunrise_time: Manuální přepsání času východu slunce, pokud je „None“, použije se skutečný čas východu slunce ve vaší lokalitě (HH:MM:SS)",
|
"adapt_only_on_bare_turn_on": "adapt_only_on_bare_turn_on: Jenom při prvním zapnutí světel. Je-li nastaveno na `true`, AL udělá přizpůsobení pouze tehdy, je-li vyvoláno `light.turn_on` bez zadání barvy nebo jasu. ❌🌈 Tím se zabrání přizpůsobení např. při aktivaci scény. Pokud je `false`, AL udělá přizpůsobení bez ohledu na přítomnost barvy nebo jasu `service_data` volání. Vyžaduje zapnutí `take_over_control`. 🕵️ ",
|
||||||
"max_sunrise_time": "max_sunrise_time: Ruční přepsání nejpozdějšího času východu slunce, pokud je „None“, použije se skutečný čas východu slunce vaší lokality (HH:MM:SS)",
|
"separate_turn_on_commands": "separate_turn_on_commands: Oddělení příkazů pro každý atribut (barva, jas, atd.) v atributu 'light.turn_on' (vyžadováno pro některá světla).",
|
||||||
"sunset_offset": "sunset_offset: Jak dlouho před (-) nebo po (+) definovat bod cyklu západu slunce (+/- v sekundách)",
|
"send_split_delay": "send_split_delay: prodleva mezi příkazy (milisekundy), když je použit atribut 'separate_turn_on_commands'. Může zajistit správné zpracování obou příkazů.",
|
||||||
"sunset_time": "sunset_time: Ruční přepsání času západu slunce, pokud je „None“, použije se skutečný čas západu slunce vaší lokality (HH:MM:SS)",
|
"adapt_delay": "",
|
||||||
"min_sunset_time": "min_sunset_time: Ruční přepsání nejdřívějšího času západu slunce, pokud je „None“, použije se skutečný čas západu slunce vaší lokality (HH:MM:SS)",
|
"skip_redundant_commands": "skip_redundant_commands: Přeskočí odesílání adaptačních příkazů, jejichž cílový stav se již rovná známému stavu světla. Minimalizuje síťový provoz a v některých situacích zlepšuje odezvu adaptace. 📉Zakažte, pokud se fyzické stavy světel dostanou mimo synchronizaci se zaznamenaným stavem HA.",
|
||||||
"take_over_control": "take_over_control: Je-li volán 'light.turn_on' z jiného zdroje, než Adaptivním osvětlením, když je světlo již rozsvíceno, přestaňte toto světlo ovládat, dokud není vypnuto -> zapnuto (nebo i vypínačem).",
|
"intercept": "intercept: Zachytit a přizpůsobit volání `light.turn_on` a umožnit tak okamžité přizpůsobení barev a jasu. 🏎️ Zakažte pro světla, která nepodporují `light.turn_on` s barvou a jasem najednou.",
|
||||||
"detect_non_ha_changes": "detect_non_ha_changes: detekuje všechny změny >10% provedených pro osvětlení (také mimo HA), vyžaduje povolení atributu 'take_over_control' (každý 'interval' spouští 'homeassistant.update_entity'!)",
|
"multi_light_intercept": "multi_light_intercept: Zachytí a přizpůsobí volání `light.turn_on`, která se zaměřují na více světel. ➗⚠️ To může vést k rozdělení jednoho volání `light.turn_on` na více volání, např. když jsou světla v různých vypínačích. Vyžaduje, aby bylo povoleno `intercept`.",
|
||||||
"adapt_delay": "",
|
"include_config_in_attributes": "include_config_in_attributes: Zobrazit všechny možnosti jako atributy přepínače v Home Assistant, pokud je nastaveno na `true`. 📝"
|
||||||
"transition_until_sleep": "transition_until_sleep: Pokud je zapnuto, Adaptive Lighting bude zacházet s nastavením spánku jako s minimem, na tyto hodnoty přejde po západu slunce. 🌙",
|
},
|
||||||
"multi_light_intercept": "multi_light_intercept: Zachytí a přizpůsobí volání `light.turn_on`, která se zaměřují na více světel. ➗⚠️ To může vést k rozdělení jednoho volání `light.turn_on` na více volání, např. když jsou světla v různých vypínačích. Vyžaduje, aby bylo povoleno `intercept`.",
|
"data_description": {
|
||||||
"adapt_only_on_bare_turn_on": "adapt_only_on_bare_turn_on: Jenom při prvním zapnutí světel. Je-li nastaveno na `true`, AL udělá přizpůsobení pouze tehdy, je-li vyvoláno `light.turn_on` bez zadání barvy nebo jasu. ❌🌈 Tím se zabrání přizpůsobení např. při aktivaci scény. Pokud je `false`, AL udělá přizpůsobení bez ohledu na přítomnost barvy nebo jasu `service_data` volání. Vyžaduje zapnutí `take_over_control`. 🕵️ ",
|
"initial_transition": "Doba trvání prvního přechodu, kdy se světla změní z `vypnuto` na `zapnuto`, v sekundách. ⏲️",
|
||||||
"skip_redundant_commands": "skip_redundant_commands: Přeskočí odesílání adaptačních příkazů, jejichž cílový stav se již rovná známému stavu světla. Minimalizuje síťový provoz a v některých situacích zlepšuje odezvu adaptace. 📉Zakažte, pokud se fyzické stavy světel dostanou mimo synchronizaci se zaznamenaným stavem HA.",
|
"sleep_rgb_or_color_temp": "V režimu spánku se použije buď `\"rgb_color\"`, nebo `\"color_temp\"`. 🌙",
|
||||||
"intercept": "intercept: Zachytit a přizpůsobit volání `light.turn_on` a umožnit tak okamžité přizpůsobení barev a jasu. 🏎️ Zakažte pro světla, která nepodporují `light.turn_on` s barvou a jasem najednou.",
|
"sleep_rgb_color": "RGB barva v režimu spánku (používané když `sleep_rgb_or_color_temp` je \"rgb_color\"). 🌈",
|
||||||
"include_config_in_attributes": "include_config_in_attributes: Zobrazit všechny možnosti jako atributy přepínače v Home Assistant, pokud je nastaveno na `true`. 📝"
|
"sleep_transition": "Doba trvání přechodu do režimu spánku v sekundách. 😴",
|
||||||
},
|
"sunrise_time": "Nastavit pevný čas (HH:MM:SS) pro východ slunce. 🌅",
|
||||||
"data_description": {
|
"min_sunrise_time": "Nastavte nejbližší virtuální čas východu slunce (HH:MM:SS), abyste mohli nastavit pozdější východ slunce. 🌅",
|
||||||
"sleep_rgb_or_color_temp": "V režimu spánku se použije buď `\"rgb_color\"`, nebo `\"color_temp\"`. 🌙",
|
"max_sunrise_time": "Nastavte nejpozdější virtuální čas východu slunce (HH:MM:SS), což umožňuje dřívější východ slunce. 🌅",
|
||||||
"sleep_transition": "Doba trvání přechodu do režimu spánku v sekundách. 😴",
|
"sunrise_offset": "Upravte čas východu slunce o sekundy dopředu nebo dozadu. ⏰",
|
||||||
"autoreset_control_seconds": "Automatické resetování ručního ovládání po určitém počtu sekund. Nastavením na 0 se vypne. ⏲️",
|
"sunset_time": "Nastavit pevný čas (HH:MM:SS) pro západ slunce. 🌅",
|
||||||
"min_sunset_time": "Nastavte nejbližší virtuální čas západu slunce (HH:MM:SS), abyste mohli nastavit pozdější západ slunce. 🌅",
|
"min_sunset_time": "Nastavte nejbližší virtuální čas západu slunce (HH:MM:SS), abyste mohli nastavit pozdější západ slunce. 🌅",
|
||||||
"min_sunrise_time": "Nastavte nejbližší virtuální čas východu slunce (HH:MM:SS), abyste mohli nastavit pozdější východ slunce. 🌅",
|
"max_sunset_time": "Nastavte nejpozdější virtuální čas západu slunce (HH:MM:SS), což umožňuje dřívější západ slunce. 🌅",
|
||||||
"adapt_delay": "Doba čekání (v sekundách) mezi zapnutím světla a změnou adaptivního osvětlení. Mohlo by to pomoci zabránit blikání. ⏲️",
|
"sunset_offset": "Upravte čas západu slunce o sekundy dopředu nebo dozadu. ⏰",
|
||||||
"sleep_rgb_color": "RGB barva v režimu spánku (používané když `sleep_rgb_or_color_temp` je \"rgb_color\"). 🌈",
|
"brightness_mode": "Výběr režimu jasu. Možné hodnoty jsou `default`, `linear` a `tanh` (používá `brightness_mode_time_dark` a `brightness_mode_time_light`). 📈",
|
||||||
"sunrise_offset": "Upravte čas východu slunce o sekundy dopředu nebo dozadu. ⏰",
|
"brightness_mode_time_dark": "(Ignorováno, pokud `brightness_mode='default'`) Doba trvání v sekundách pro zvýšení/snížení jasu po/před východem/západem slunce. 📈📉.",
|
||||||
"brightness_mode": "Výběr režimu jasu. Možné hodnoty jsou `default`, `linear` a `tanh` (používá `brightness_mode_time_dark` a `brightness_mode_time_light`). 📈",
|
"brightness_mode_time_light": "(Ignorováno, pokud `brightness_mode='default'`) Doba trvání v sekundách pro zvýšení/snížení jasu po/před východem/západem slunce. 📈📉.",
|
||||||
"brightness_mode_time_light": "(Ignorováno, pokud `brightness_mode='default'`) Doba trvání v sekundách pro zvýšení/snížení jasu po/před východem/západem slunce. 📈📉.",
|
"autoreset_control_seconds": "Automatické resetování ručního ovládání po určitém počtu sekund. Nastavením na 0 se vypne. ⏲️",
|
||||||
"sunset_offset": "Upravte čas západu slunce o sekundy dopředu nebo dozadu. ⏰",
|
"send_split_delay": "Zpoždění (ms) mezi příkazy `separate_turn_on_commands` pro světla, která nepodporují současné nastavení jasu a barvy. ⏲️",
|
||||||
"sunset_time": "Nastavit pevný čas (HH:MM:SS) pro západ slunce. 🌅",
|
"adapt_delay": "Doba čekání (v sekundách) mezi zapnutím světla a změnou adaptivního osvětlení. Mohlo by to pomoci zabránit blikání. ⏲️"
|
||||||
"max_sunset_time": "Nastavte nejpozdější virtuální čas západu slunce (HH:MM:SS), což umožňuje dřívější západ slunce. 🌅",
|
}
|
||||||
"sunrise_time": "Nastavit pevný čas (HH:MM:SS) pro východ slunce. 🌅",
|
}
|
||||||
"initial_transition": "Doba trvání prvního přechodu, kdy se světla změní z `vypnuto` na `zapnuto`, v sekundách. ⏲️",
|
|
||||||
"brightness_mode_time_dark": "(Ignorováno, pokud `brightness_mode='default'`) Doba trvání v sekundách pro zvýšení/snížení jasu po/před východem/západem slunce. 📈📉.",
|
|
||||||
"max_sunrise_time": "Nastavte nejpozdější virtuální čas východu slunce (HH:MM:SS), což umožňuje dřívější východ slunce. 🌅",
|
|
||||||
"send_split_delay": "Zpoždění (ms) mezi příkazy `separate_turn_on_commands` pro světla, která nepodporují současné nastavení jasu a barvy. ⏲️"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,11 @@
|
||||||
"data": {
|
"data": {
|
||||||
"name": "Navn"
|
"name": "Navn"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"menu": {
|
||||||
|
"data": {
|
||||||
|
"action": "Handling"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"abort": {
|
"abort": {
|
||||||
|
|
@ -18,63 +23,65 @@
|
||||||
"step": {
|
"step": {
|
||||||
"init": {
|
"init": {
|
||||||
"title": "Adaptiv Belysnings indstillinger",
|
"title": "Adaptiv Belysnings indstillinger",
|
||||||
"description": "Alle indstillinger tilhørende en Adaptiv Belysnings komponent. Indstillingernes navne svarer til YAML indstillingernes. Ingen indstillinger vises hvis du allerede har konfigureret den i YAML.",
|
"description": "Alle indstillinger tilhørende en Adaptiv Belysnings komponent. Indstillingernes navne svarer til YAML indstillingernes. Ingen indstillinger vises hvis du allerede har konfigureret den i YAML. For interaktive grafer, der viser parametereffekter, besøg [denne webapp]({webapp_url}). Yderligere detaljer finder du i den [officielle dokumentation]({docs_url}).",
|
||||||
"data": {
|
"data": {
|
||||||
"lights": "lights: lyskilder",
|
"lights": "lights: lyskilder",
|
||||||
"interval": "interval: Tid imellem opdateringer (i sekunder)",
|
"interval": "interval: Tid imellem opdateringer (i sekunder)",
|
||||||
"max_brightness": "max_brightness: Højeste lysstyrke i cyklussen. (%)",
|
"transition": "Overgangsperiode når en ændring i lyset udføres (i sekunder)",
|
||||||
"max_color_temp": "max_color_temp: Koldeste lystemperatur i cyklussen. (Kelvin)",
|
|
||||||
"min_brightness": "min_brightness: Laveste lysstyrke i cyklussen. (%)",
|
"min_brightness": "min_brightness: Laveste lysstyrke i cyklussen. (%)",
|
||||||
|
"max_brightness": "max_brightness: Højeste lysstyrke i cyklussen. (%)",
|
||||||
"min_color_temp": "min_color_temp: Varmeste lystemperatur i cyklussen. (Kelvin)",
|
"min_color_temp": "min_color_temp: Varmeste lystemperatur i cyklussen. (Kelvin)",
|
||||||
|
"max_color_temp": "max_color_temp: Koldeste lystemperatur i cyklussen. (Kelvin)",
|
||||||
"sleep_brightness": "sleep_brightness, Lysstyrke for Sleep Mode. (%)",
|
"sleep_brightness": "sleep_brightness, Lysstyrke for Sleep Mode. (%)",
|
||||||
"sleep_color_temp": "sleep_color_temp: Farvetemperatur under Sleep Mode. (Kelvin)",
|
"sleep_color_temp": "sleep_color_temp: Farvetemperatur under Sleep Mode. (Kelvin)"
|
||||||
"transition": "Overgangsperiode når en ændring i lyset udføres (i sekunder)"
|
|
||||||
},
|
},
|
||||||
"data_description": {
|
"data_description": {
|
||||||
"interval": "Frekvens til at tilpasse lysene, i sekunder. 🔄",
|
"interval": "Frekvens til at tilpasse lysene, i sekunder. 🔄",
|
||||||
"sleep_brightness": "Lysstyrkeprocent af lys i søvntilstand. 😴",
|
|
||||||
"transition": "Varighed af overgang, når lys ændres, i sekunder. 🕑",
|
"transition": "Varighed af overgang, når lys ændres, i sekunder. 🕑",
|
||||||
|
"sleep_brightness": "Lysstyrkeprocent af lys i søvntilstand. 😴",
|
||||||
"sleep_color_temp": "Farvetemperatur i søvntilstand (bruges når `sleep_rgb_or_color_temp` er `color_temp`) i Kelvin. 😴"
|
"sleep_color_temp": "Farvetemperatur i søvntilstand (bruges når `sleep_rgb_or_color_temp` er `color_temp`) i Kelvin. 😴"
|
||||||
},
|
},
|
||||||
"menu_options": {
|
"sections": {
|
||||||
"advanced": "Konfigurer avancerede indstillinger",
|
"advanced": {
|
||||||
"finish": "Gem og afslut"
|
"data": {
|
||||||
}
|
"initial_transition": "initial_transition: Hvor lang overgang når lyset går fra 'off' til 'on' eller når 'sleep_state' skiftes. (i sekunder)",
|
||||||
},
|
"prefer_rgb_color": "prefer_rgb_color: Brug 'rgb_color' istedet for 'color_temp' når muligt.",
|
||||||
"advanced": {
|
"transition_until_sleep": "overgang_til_sove: Når aktiveret, vil adaptiv belysning behandle søvnindstillinger som minimum, og overgår til disse værdier efter solnedgang. 🌙",
|
||||||
"title": "Avancerede indstillinger",
|
"sunrise_time": "sunrise_time: Manuel overstyring af solopgangstidspunktet, hvis 'None', bruges det egentlige tidspunkt din lokation. (HH:MM:SS)",
|
||||||
"description": "Konfigurer avancerede Adaptive Lighting indstillinger. De fleste brugere behøver ikke at ændre disse indstillinger.",
|
"sunrise_offset": "sunrise_offset: Hvor længe før (-) eller efter (+) at definere solopgangen i cyklussen (+/- sekunder)",
|
||||||
"data": {
|
"sunset_time": "sunset_time: Manuel overstyring af solnedgangstidspunktet, hvis 'None', bruges det egentlige tidspunkt for din lokation. (HH:MM:SS)",
|
||||||
"initial_transition": "initial_transition: Hvor lang overgang når lyset går fra 'off' til 'on' eller når 'sleep_state' skiftes. (i sekunder)",
|
"sunset_offset": "sunset_offset: Hvor længe før (-) eller efter (+) at definere solnedgangen i cyklussen (+/- sekunder)",
|
||||||
"only_once": "only_once: Juster udelukkende lysene adaptivt i øjeblikket de tændes.",
|
"take_over_control": "take_over_control: Hvis andet end Adaptiv Belysning kalder 'light.turn_on' på et lys der allerede er tændt, afbryd adaptering af lyset indtil at det tændes igen.",
|
||||||
"prefer_rgb_color": "prefer_rgb_color: Brug 'rgb_color' istedet for 'color_temp' når muligt.",
|
"detect_non_ha_changes": "detect_non_ha_changes: Registrer alle ændringer på >10% på et lys (også udenfor HA), kræver at 'take_over_control' er slået til (kalder 'homeassistant.update_entity' hvert 'interval'!)",
|
||||||
"separate_turn_on_commands": "separate_turn_on_commands: Adskil kommandoerne for hver attribut (color, brightness, etc.) ved 'light.turn_on' (nødvendigt for bestemte lys).",
|
"only_once": "only_once: Juster udelukkende lysene adaptivt i øjeblikket de tændes.",
|
||||||
"sunrise_offset": "sunrise_offset: Hvor længe før (-) eller efter (+) at definere solopgangen i cyklussen (+/- sekunder)",
|
"adapt_only_on_bare_turn_on": "tilpas_kun_ved_enkelt_tænd: Når du tænder lys for første gang. Hvis indstillet til 'true', tilpasser AL kun, hvis 'lys.tænd' er kaldt uden at angive farve eller lysstyrke. ❌🌈 Dette forhindrer f.eks. tilpasning, når du aktiverer en scene. Hvis indstillet til 'false' tilpasser AL sig uanset tilstanden af farve eller lysstyrke i den oprindelige 'service_data'. Har brug for at 'take_over_control' er aktiveret. 🕵️",
|
||||||
"sunrise_time": "sunrise_time: Manuel overstyring af solopgangstidspunktet, hvis 'None', bruges det egentlige tidspunkt din lokation. (HH:MM:SS)",
|
"separate_turn_on_commands": "separate_turn_on_commands: Adskil kommandoerne for hver attribut (color, brightness, etc.) ved 'light.turn_on' (nødvendigt for bestemte lys).",
|
||||||
"sunset_offset": "sunset_offset: Hvor længe før (-) eller efter (+) at definere solnedgangen i cyklussen (+/- sekunder)",
|
"skip_redundant_commands": "skip_redundant_commands: Undlad at sende tilpasningskommando, hvis lampens kendte tilstand allerede er lig den ønskede tilstand. Mindsker mængden af netværkstrafik og forbedrer tilpasningens responsivitet i visse situationer. 📉 Slå fra, hvis lampens faktiske tilstand kommer ud af takt med den tilstand, som HA rapporterer.",
|
||||||
"sunset_time": "sunset_time: Manuel overstyring af solnedgangstidspunktet, hvis 'None', bruges det egentlige tidspunkt for din lokation. (HH:MM:SS)",
|
"intercept": "intercept: Indfang og tilpas »light.turn_on«-kald for at muliggøre øjeblikkelig farve- og lysstyrketilpasning. 🏎️ Slå fra for lyskilder, som ikke understøtter »light.turn_on« med farve og lysstyrke.",
|
||||||
"take_over_control": "take_over_control: Hvis andet end Adaptiv Belysning kalder 'light.turn_on' på et lys der allerede er tændt, afbryd adaptering af lyset indtil at det tændes igen.",
|
"multi_light_intercept": "multi_light_intercept: Indfang og tilpas »light.turn_on«-kald til mere end en enkelt lyskilde. ➗⚠️ Dette kan bevirke at et enkelt »light.turn_on«-kald deles op i flere, f.eks. hvis lyskilderne er forbundet til forskellige kontakter. Forudsætter at »intercept« er slået til.",
|
||||||
"detect_non_ha_changes": "detect_non_ha_changes: Registrer alle ændringer på >10% på et lys (også udenfor HA), kræver at 'take_over_control' er slået til (kalder 'homeassistant.update_entity' hvert 'interval'!)",
|
"include_config_in_attributes": "include_config_in_attributes: Vis alle indstillinger som attributter for kontakten når dette er sat til »true«. 📝"
|
||||||
"transition_until_sleep": "overgang_til_sove: Når aktiveret, vil adaptiv belysning behandle søvnindstillinger som minimum, og overgår til disse værdier efter solnedgang. 🌙",
|
},
|
||||||
"adapt_only_on_bare_turn_on": "tilpas_kun_ved_enkelt_tænd: Når du tænder lys for første gang. Hvis indstillet til 'true', tilpasser AL kun, hvis 'lys.tænd' er kaldt uden at angive farve eller lysstyrke. ❌🌈 Dette forhindrer f.eks. tilpasning, når du aktiverer en scene. Hvis indstillet til 'false' tilpasser AL sig uanset tilstanden af farve eller lysstyrke i den oprindelige 'service_data'. Har brug for at 'take_over_control' er aktiveret. 🕵️",
|
"data_description": {
|
||||||
"include_config_in_attributes": "include_config_in_attributes: Vis alle indstillinger som attributter for kontakten når dette er sat til »true«. 📝"
|
"initial_transition": "Den første overgangs varighed når lysene ændres fra »off« til »on« i sekunder. ⏲️",
|
||||||
},
|
"sleep_rgb_or_color_temp": "Brug enten `\"rgb_farve\"` eller `\"farve_temp\"` i søvntilstand. 🌙",
|
||||||
"data_description": {
|
"sleep_rgb_color": "RGB-farve i søvntilstand (anvendes når »sleep_rgb_or_color_temp« er sat til »rgb_color«). 🌈",
|
||||||
"sleep_rgb_or_color_temp": "Brug enten `\"rgb_farve\"` eller `\"farve_temp\"` i søvntilstand. 🌙",
|
"sleep_transition": "Varigheden af overgangen, når \"sovetilstand\" skiftes, i sekunder. 😴",
|
||||||
"sleep_transition": "Varigheden af overgangen, når \"sovetilstand\" skiftes, i sekunder. 😴",
|
"sunrise_time": "Sæt en fast tid (HH:MM:SS) for solopgang. 🌅",
|
||||||
"sunrise_time": "Sæt en fast tid (HH:MM:SS) for solopgang. 🌅",
|
"min_sunrise_time": "Indstil den tidligste virtuelle solopgangstid (HH:MM:SS), hvilket giver mulighed for senere solopgange. 🌅",
|
||||||
"sunset_time": "Sæt en fast tid (HH:MM:SS) for solnedgang. 🌇",
|
"max_sunrise_time": "Indstil den seneste virtuelle solopgangstid (HH:MM:SS), hvilket giver mulighed for tidligere solopgange. 🌅",
|
||||||
"min_sunrise_time": "Indstil den tidligste virtuelle solopgangstid (HH:MM:SS), hvilket giver mulighed for senere solopgange. 🌅",
|
"sunrise_offset": "Juster solopgangstiden med en positiv eller negativ offset på få sekunder. ⏰",
|
||||||
"max_sunrise_time": "Indstil den seneste virtuelle solopgangstid (HH:MM:SS), hvilket giver mulighed for tidligere solopgange. 🌅",
|
"sunset_time": "Sæt en fast tid (HH:MM:SS) for solnedgang. 🌇",
|
||||||
"autoreset_control_seconds": "Nulstil automatisk den manuelle styring efter et antal sekunder. Indstil til 0 for at deaktivere. ⏲️",
|
"min_sunset_time": "Indstil den tidligste virtuelle solnedgangstid (HH:MM:SS), hvilket giver mulighed for senere solnedgange. 🌇",
|
||||||
"min_sunset_time": "Indstil den tidligste virtuelle solnedgangstid (HH:MM:SS), hvilket giver mulighed for senere solnedgange. 🌇",
|
"max_sunset_time": "Indstil den seneste virtuelle solnedgangstid (HH:MM:SS), hvilket giver mulighed for tidligere solnedgange. 🌇",
|
||||||
"adapt_delay": "Ventetid (sekunder) mellem lyset tændes og Adaptive Lighting anvender ændringer. Kan hjælpe med at undgå flimren. ⏲️",
|
"sunset_offset": "Juster solnedgang tid med et positivt eller negativt offset, i sekunder. ⏰",
|
||||||
"sunset_offset": "Juster solnedgang tid med et positivt eller negativt offset, i sekunder. ⏰",
|
"brightness_mode": "Lysstyrketilstand til brug. Mulige værdier er \"default\", \"linear\" og \"tanh\" (bruger \"brightness_mode_time_dark\" og \"brightness_mode_time_light\"). 📈",
|
||||||
"sunrise_offset": "Juster solopgangstiden med en positiv eller negativ offset på få sekunder. ⏰",
|
"brightness_mode_time_dark": "(Ignoreres hvis »brightness_mode='default'«) Varigheden i sekunder for tilpasningen af lysstyrken ved solopgang eller -nedgang. 📈📉",
|
||||||
"max_sunset_time": "Indstil den seneste virtuelle solnedgangstid (HH:MM:SS), hvilket giver mulighed for tidligere solnedgange. 🌇",
|
"brightness_mode_time_light": "(Ignoreres hvis »brightness_mode='default'«) Varigheden i sekunder for tilpasningen af lysstyrken ved solopgang eller -nedgang. 📈📉",
|
||||||
"brightness_mode": "Lysstyrketilstand til brug. Mulige værdier er \"default\", \"linear\" og \"tanh\" (bruger \"brightness_mode_time_dark\" og \"brightness_mode_time_light\"). 📈",
|
"autoreset_control_seconds": "Nulstil automatisk den manuelle styring efter et antal sekunder. Indstil til 0 for at deaktivere. ⏲️",
|
||||||
"send_split_delay": "Forsinkelse (ms) mellem »separate_turn_on_commands« for lyskilder som ikke understøtter simultane styrke- og farveindstillinger. ⏲️",
|
"send_split_delay": "Forsinkelse (ms) mellem »separate_turn_on_commands« for lyskilder som ikke understøtter simultane styrke- og farveindstillinger. ⏲️",
|
||||||
"initial_transition": "Den første overgangs varighed når lysene ændres fra »off« til »on« i sekunder. ⏲️"
|
"adapt_delay": "Ventetid (sekunder) mellem lyset tændes og Adaptive Lighting anvender ændringer. Kan hjælpe med at undgå flimren. ⏲️"
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,13 @@
|
||||||
"data": {
|
"data": {
|
||||||
"name": "Name"
|
"name": "Name"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"menu": {
|
||||||
|
"title": "Erstellen oder Duplizieren",
|
||||||
|
"description": "Möchtest du eine neue Instanz erstellen oder eine existierende duplizieren?",
|
||||||
|
"data": {
|
||||||
|
"action": "Aktion"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"abort": {
|
"abort": {
|
||||||
|
|
@ -18,76 +25,74 @@
|
||||||
"step": {
|
"step": {
|
||||||
"init": {
|
"init": {
|
||||||
"title": "Optionen für Adaptive Beleuchtung",
|
"title": "Optionen für Adaptive Beleuchtung",
|
||||||
"description": "Alle Einstellungen für eine Adaptive Lighting Komponente. Die Optionsnamen entsprechen den YAML-Einstellungen. Es werden keine Optionen angezeigt, wenn dieser Eintrag in YAML konfiguriert wurde. Interaktive Diagramme zur Veranschaulichung der Auswirkungen der Parameter finden Sie unter [dieser Webanwendung](https://basnijholt.github.io/adaptive-lighting). Weitere Details finden Sie in der [offiziellen Dokumentation](https://github.com/basnijholt/adaptive-lighting#readme).",
|
"description": "Alle Einstellungen für eine Adaptive Lighting Komponente. Die Optionsnamen entsprechen den YAML-Einstellungen. Es werden keine Optionen angezeigt, wenn dieser Eintrag in YAML konfiguriert wurde. Interaktive Diagramme zur Veranschaulichung der Auswirkungen der Parameter finden Sie unter [dieser Webanwendung]({webapp_url}). Weitere Details finden Sie in der [offiziellen Dokumentation]({docs_url}).",
|
||||||
"data": {
|
"data": {
|
||||||
"lights": "Lichter",
|
"lights": "Lichter",
|
||||||
"interval": "interval, Zeit zwischen Updates des Switches",
|
"interval": "interval, Zeit zwischen Updates des Switches",
|
||||||
"max_brightness": "max_brightness: Maximale Helligkeit in Prozent. 💡",
|
"transition": "transition, Wechselzeit in Sekunden",
|
||||||
"max_color_temp": "max_color_temp: Kälteste Farbtemperatur in Kelvin. ❄️",
|
|
||||||
"min_brightness": "min_brightness: Minimale Helligkeit in Prozent. 💡",
|
"min_brightness": "min_brightness: Minimale Helligkeit in Prozent. 💡",
|
||||||
|
"max_brightness": "max_brightness: Maximale Helligkeit in Prozent. 💡",
|
||||||
"min_color_temp": "min_color_temp: Wärmste Farbtemperatur in Kelvin. 🔥",
|
"min_color_temp": "min_color_temp: Wärmste Farbtemperatur in Kelvin. 🔥",
|
||||||
|
"max_color_temp": "max_color_temp: Kälteste Farbtemperatur in Kelvin. ❄️",
|
||||||
"sleep_brightness": "sleep_brightness, Schlafhelligkeit in %",
|
"sleep_brightness": "sleep_brightness, Schlafhelligkeit in %",
|
||||||
"sleep_color_temp": "sleep_color_temp, Schlaffarbtemperatur in Kelvin",
|
"sleep_color_temp": "sleep_color_temp, Schlaffarbtemperatur in Kelvin"
|
||||||
"transition": "transition, Wechselzeit in Sekunden"
|
|
||||||
},
|
},
|
||||||
"data_description": {
|
"data_description": {
|
||||||
"transition": "Dauer des Übergangs beim Lichtwechsel in Sekunden. 🕑",
|
|
||||||
"interval": "Häufigkeit der Lichtanpassung in Sekunden. 🔄",
|
"interval": "Häufigkeit der Lichtanpassung in Sekunden. 🔄",
|
||||||
|
"transition": "Dauer des Übergangs beim Lichtwechsel in Sekunden. 🕑",
|
||||||
"sleep_brightness": "Helligkeit der Lichter im Schlafmodus in Prozent. 😴",
|
"sleep_brightness": "Helligkeit der Lichter im Schlafmodus in Prozent. 😴",
|
||||||
"sleep_color_temp": "Farbtemperatur im Schlafmodus in Kelvin (wird verwendet, wenn `sleep_rgb_or_color_temp` `color_temp` ist) . 😴"
|
"sleep_color_temp": "Farbtemperatur im Schlafmodus in Kelvin (wird verwendet, wenn `sleep_rgb_or_color_temp` `color_temp` ist) . 😴"
|
||||||
},
|
},
|
||||||
"menu_options": {
|
"sections": {
|
||||||
"advanced": "Erweiterte Optionen konfigurieren",
|
"advanced": {
|
||||||
"finish": "Speichern und beenden"
|
"data": {
|
||||||
}
|
"initial_transition": "initial_transition, wenn Lichter von 'off' zu 'on' wechseln oder wenn 'sleep_state' wechselt",
|
||||||
},
|
"prefer_rgb_color": "prefer_rgb_color: Ob die RGB-Farbanpassung der Farbtemperaturanpassung vorgezogen werden soll, wenn möglich. 🌈",
|
||||||
"advanced": {
|
"sleep_rgb_or_color_temp": "sleep_rgb_or_color_temp, nutze 'rgb_color' oder 'color_temp'",
|
||||||
"title": "Erweiterte Einstellungen",
|
"sleep_rgb_color": "sleep_rgb_color, in RGB",
|
||||||
"description": "Konfigurieren Sie erweiterte Optionen für die adaptive Beleuchtung. Die meisten Benutzer müssen diese Einstellungen nicht ändern.",
|
"sleep_transition": "sleep_transition: Wenn 'sleep_state' sich ändert. (Sekunden)",
|
||||||
"data": {
|
"transition_until_sleep": "transition_until_sleep: Wenn diese Option aktiviert ist, behandelt die adaptive Beleuchtung die Schlafeinstellungen als Minimum und geht nach Sonnenuntergang zu diesen Werten über. 🌙",
|
||||||
"initial_transition": "initial_transition, wenn Lichter von 'off' zu 'on' wechseln oder wenn 'sleep_state' wechselt",
|
"sunrise_time": "sunrise_time, Sonnenaufgangszeit in 'HH:MM:SS' Format (wenn 'None' wird die aktuelle Zeit des Sonnenaufgangs an deiner Position verwendet)",
|
||||||
"sleep_transition": "sleep_transition: Wenn 'sleep_state' sich ändert. (Sekunden)",
|
"max_sunrise_time": "max_sunrise_time: Manuelles Überschreiben der max. sunrise_time. Falls 'None', wird die tatsächliche sunrise_time an deiner Position verwendet (HH:MM:SS)",
|
||||||
"only_once": "only_once: Lichter nur einmalig anpassen, wenn sie eingeschaltet werden (`true`) oder sie immer wieder anpassen (`false`). 🔄",
|
"sunrise_offset": "sunrise_offset, Sonnenaufgang Verschiebung in +/- Sekunden",
|
||||||
"prefer_rgb_color": "prefer_rgb_color: Ob die RGB-Farbanpassung der Farbtemperaturanpassung vorgezogen werden soll, wenn möglich. 🌈",
|
"sunset_time": "sunset_time, Sonnenuntergangszeit in 'HH:MM:SS' Format (wenn 'None' wird die aktuelle Zeit des Sonnenuntergangs an deiner Position verwendet)",
|
||||||
"separate_turn_on_commands": "separate_turn_on_commands: Verwende getrennte `light.turn_on`-Aufrufe für Farbe und Helligkeit, erforderlich für einige Lichttypen. 🔀",
|
"min_sunset_time": "min_sunset_time: Manuelles Überschreiben der min. sunset_time. Falls 'None', wird die tatsächliche sunset_time an deiner Position verwendet (HH:MM:SS)",
|
||||||
"send_split_delay": "send_split_delay: Wartezeit zwischen dem Senden der Befehle (Millisekunden), wenn separate_turn_on_commands genutzt wird. Kann helfen, wenn die Leuchtmittel die separaten Befehle nicht korrekt umsetzen.",
|
"sunset_offset": "sunset_offset, Sonnenuntergang Verschiebung in +/- Sekunden",
|
||||||
"sleep_rgb_or_color_temp": "sleep_rgb_or_color_temp, nutze 'rgb_color' oder 'color_temp'",
|
"take_over_control": "take_over_control: Deaktiviere die adaptive Beleuchtung, wenn eine andere Quelle `light.turn_on` aufruft, während die Beleuchtung eingeschaltet ist und angepasst wird. Beachte, dass dies `homeassistant.update_entity` jedes `Intervall` aufruft! 🔒",
|
||||||
"sleep_rgb_color": "sleep_rgb_color, in RGB",
|
"detect_non_ha_changes": "detect_non_ha_changes: Erkennt und stoppt Anpassungen für nicht-`light.turn_on`-Zustandsänderungen. Benötigt, dass `take_over_control` aktiviert ist. 🕵️ Vorsicht: ⚠️ Einige Lichter können fälschlicherweise einen 'an'-Zustand anzeigen, was dazu führen kann, dass Lichter unerwartet eingeschaltet werden. Deaktiviere diese Funktion, wenn solche Probleme auftreten.",
|
||||||
"sunrise_offset": "sunrise_offset, Sonnenaufgang Verschiebung in +/- Sekunden",
|
"only_once": "only_once: Lichter nur einmalig anpassen, wenn sie eingeschaltet werden (`true`) oder sie immer wieder anpassen (`false`). 🔄",
|
||||||
"sunrise_time": "sunrise_time, Sonnenaufgangszeit in 'HH:MM:SS' Format (wenn 'None' wird die aktuelle Zeit des Sonnenaufgangs an deiner Position verwendet)",
|
"adapt_only_on_bare_turn_on": "adapt_only_on_bare_turn_on: Beim ersten Einschalten des Lichts. Wenn auf `true` gesetzt, passt AL das Licht nur an, wenn `light.turn_on` ohne eine Angabe von Farbe oder Helligkeit aufgerufen wird. ❌🌈 Dies verhindert z.B. die Anpassung durch AL beim Aktivieren einer Szene. Wenn auf \"false\" gesetzt, passt AL das licht unabhängig von der Angabe von Farbe oder Helligkeit in den ursprünglichen `service_data` an. Benötigt das `take_over_control` aktiviert ist. 🕵️",
|
||||||
"max_sunrise_time": "max_sunrise_time: Manuelles Überschreiben der max. sunrise_time. Falls 'None', wird die tatsächliche sunrise_time an deiner Position verwendet (HH:MM:SS)",
|
"separate_turn_on_commands": "separate_turn_on_commands: Verwende getrennte `light.turn_on`-Aufrufe für Farbe und Helligkeit, erforderlich für einige Lichttypen. 🔀",
|
||||||
"sunset_offset": "sunset_offset, Sonnenuntergang Verschiebung in +/- Sekunden",
|
"send_split_delay": "send_split_delay: Wartezeit zwischen dem Senden der Befehle (Millisekunden), wenn separate_turn_on_commands genutzt wird. Kann helfen, wenn die Leuchtmittel die separaten Befehle nicht korrekt umsetzen.",
|
||||||
"sunset_time": "sunset_time, Sonnenuntergangszeit in 'HH:MM:SS' Format (wenn 'None' wird die aktuelle Zeit des Sonnenuntergangs an deiner Position verwendet)",
|
"adapt_delay": "adapt_delay: Wartezeit (in Sekunden) zwischen Anschalten des Licht und der Anpassung durch Adaptive Lights. Kann Flackern vermeiden.",
|
||||||
"min_sunset_time": "min_sunset_time: Manuelles Überschreiben der min. sunset_time. Falls 'None', wird die tatsächliche sunset_time an deiner Position verwendet (HH:MM:SS)",
|
"skip_redundant_commands": "skip_redundant_commands: Überspringt das Senden von Anpassungsbefehlen, deren Zielzustand bereits mit dem bekannten Zustand der Leuchte übereinstimmt. Minimiert den Netzwerkverkehr und verbessert die Anpassungsreaktion in einigen Situationen. 📉 Deaktivieren, falls der physikalische Zustand der Lichter nicht mehr mit dem Zustand in HA übereinstimmt.",
|
||||||
"take_over_control": "take_over_control: Deaktiviere die adaptive Beleuchtung, wenn eine andere Quelle `light.turn_on` aufruft, während die Beleuchtung eingeschaltet ist und angepasst wird. Beachte, dass dies `homeassistant.update_entity` jedes `Intervall` aufruft! 🔒",
|
"intercept": "intercept: Abfangen und Anpassen von `light.turn_on`-Aufrufen, um eine sofortige Anpassung von Farbe und Helligkeit zu ermöglichen. 🏎️ Deaktivieren für Leuchten, die `light.turn_on` mit Farbe und Helligkeit nicht unterstützen.",
|
||||||
"detect_non_ha_changes": "detect_non_ha_changes: Erkennt und stoppt Anpassungen für nicht-`light.turn_on`-Zustandsänderungen. Benötigt, dass `take_over_control` aktiviert ist. 🕵️ Vorsicht: ⚠️ Einige Lichter können fälschlicherweise einen 'an'-Zustand anzeigen, was dazu führen kann, dass Lichter unerwartet eingeschaltet werden. Deaktiviere diese Funktion, wenn solche Probleme auftreten.",
|
"multi_light_intercept": "multi_light_intercept: Abfangen und Anpassen von `light.turn_on`-Aufrufen, die auf mehrere Lichter aufrufen. ➗⚠️ Dies kann dazu führen, dass ein einzelner `light.turn_on`-Aufruf in mehrere Aufrufe aufgeteilt wird, z.B. wenn Lichter in verschiedenen Schaltern sind. Erfordert, dass `intercept` aktiviert ist.",
|
||||||
"adapt_delay": "adapt_delay: Wartezeit (in Sekunden) zwischen Anschalten des Licht und der Anpassung durch Adaptive Lights. Kann Flackern vermeiden.",
|
"include_config_in_attributes": "include_config_in_attributes: Alle Optionen als Attribute auf dem Schalter im Home Assistant anzeigen, wenn auf `true` gesetzt. 📝",
|
||||||
"skip_redundant_commands": "skip_redundant_commands: Überspringt das Senden von Anpassungsbefehlen, deren Zielzustand bereits mit dem bekannten Zustand der Leuchte übereinstimmt. Minimiert den Netzwerkverkehr und verbessert die Anpassungsreaktion in einigen Situationen. 📉 Deaktivieren, falls der physikalische Zustand der Lichter nicht mehr mit dem Zustand in HA übereinstimmt.",
|
"expand_light_groups": "expand_light_groups: Lichtgruppen auf einzelne Mitgliedsentitäten erweitern (`true`) oder die Gruppenentität direkt steuern (`false`)."
|
||||||
"adapt_only_on_bare_turn_on": "adapt_only_on_bare_turn_on: Beim ersten Einschalten des Lichts. Wenn auf `true` gesetzt, passt AL das Licht nur an, wenn `light.turn_on` ohne eine Angabe von Farbe oder Helligkeit aufgerufen wird. ❌🌈 Dies verhindert z.B. die Anpassung durch AL beim Aktivieren einer Szene. Wenn auf \"false\" gesetzt, passt AL das licht unabhängig von der Angabe von Farbe oder Helligkeit in den ursprünglichen `service_data` an. Benötigt das `take_over_control` aktiviert ist. 🕵️ ",
|
},
|
||||||
"include_config_in_attributes": "include_config_in_attributes: Alle Optionen als Attribute auf dem Schalter im Home Assistant anzeigen, wenn auf `true` gesetzt. 📝",
|
"data_description": {
|
||||||
"multi_light_intercept": "multi_light_intercept: Abfangen und Anpassen von `light.turn_on`-Aufrufen, die auf mehrere Lichter aufrufen. ➗⚠️ Dies kann dazu führen, dass ein einzelner `light.turn_on`-Aufruf in mehrere Aufrufe aufgeteilt wird, z.B. wenn Lichter in verschiedenen Schaltern sind. Erfordert, dass `intercept` aktiviert ist.",
|
"initial_transition": "Dauer des ersten Übergangs, wenn das Licht von `off` auf `on` schaltet, in Sekunden. ⏲️",
|
||||||
"transition_until_sleep": "transition_until_sleep: Wenn diese Option aktiviert ist, behandelt die adaptive Beleuchtung die Schlafeinstellungen als Minimum und geht nach Sonnenuntergang zu diesen Werten über. 🌙",
|
"sleep_rgb_or_color_temp": "Verwende entweder `rgb_color` oder `color_temp` im Schlafmodus. 🌙",
|
||||||
"intercept": "intercept: Abfangen und Anpassen von `light.turn_on`-Aufrufen, um eine sofortige Anpassung von Farbe und Helligkeit zu ermöglichen. 🏎️ Deaktivieren für Leuchten, die `light.turn_on` mit Farbe und Helligkeit nicht unterstützen."
|
"sleep_rgb_color": "RGB-Farbe im Schlafmodus (wird verwendet, wenn `sleep_rgb_or_color_temp` `rgb_color` ist). 🌈",
|
||||||
},
|
"sleep_transition": "Dauer des Übergangs, wenn der \"Schlafmodus\" umgeschaltet wird, in Sekunden. 😴",
|
||||||
"data_description": {
|
"sunrise_time": "Stelle eine feste Zeit (HH:MM:SS) für den Sonnenaufgang ein. 🌅",
|
||||||
"sunrise_offset": "Anpassung der Sonnenaufgangszeit mit positivem oder negativem Versatz in Sekunden. ⏰",
|
"min_sunrise_time": "Lege die früheste virtuelle Sonnenaufgangszeit (HH:MM:SS) fest, um einen späteren Sonnenaufgang zu ermöglichen. 🌅",
|
||||||
"sunset_offset": "Anpassung der Sonnenuntergangszeit mit positivem oder negativem Versatz in Sekunden. ⏰",
|
"max_sunrise_time": "Lege die späteste virtuelle Sonnenaufgangszeit (HH:MM:SS) fest, um einen früheren Sonnenaufgang zu ermöglichen. 🌅",
|
||||||
"brightness_mode": "Helligkeitsmodus, der verwendet werden soll. Mögliche Werte sind `default`, `linear` und `tanh` (verwendet `brightness_mode_time_dark` und `brightness_mode_time_light`). 📈",
|
"sunrise_offset": "Anpassung der Sonnenaufgangszeit mit positivem oder negativem Versatz in Sekunden. ⏰",
|
||||||
"send_split_delay": "Verzögerung (ms) zwischen `separate_turn_on_commands` für Leuchten, die keine gleichzeitige Einstellung von Helligkeit und Farbe unterstützen. ⏲️",
|
"sunset_time": "Stelle eine feste Zeit (HH:MM:SS) für den Sonnenuntergang ein. 🌇",
|
||||||
"sleep_rgb_color": "RGB-Farbe im Schlafmodus (wird verwendet, wenn `sleep_rgb_or_color_temp` `rgb_color` ist). 🌈",
|
"min_sunset_time": "Lege die früheste virtuelle Sonnenuntergangszeit (HH:MM:SS) fest, um spätere Sonnenuntergänge zu ermöglichen. 🌇",
|
||||||
"sunset_time": "Stelle eine feste Zeit (HH:MM:SS) für den Sonnenuntergang ein. 🌇",
|
"max_sunset_time": "Lege die späteste virtuelle Sonnenuntergangszeit (HH:MM:SS) fest, um frühere Sonnenuntergänge zu ermöglichen. 🌇",
|
||||||
"max_sunrise_time": "Lege die späteste virtuelle Sonnenaufgangszeit (HH:MM:SS) fest, um einen früheren Sonnenaufgang zu ermöglichen. 🌅",
|
"sunset_offset": "Anpassung der Sonnenuntergangszeit mit positivem oder negativem Versatz in Sekunden. ⏰",
|
||||||
"min_sunset_time": "Lege die früheste virtuelle Sonnenuntergangszeit (HH:MM:SS) fest, um spätere Sonnenuntergänge zu ermöglichen. 🌇",
|
"brightness_mode": "Helligkeitsmodus, der verwendet werden soll. Mögliche Werte sind `default`, `linear` und `tanh` (verwendet `brightness_mode_time_dark` und `brightness_mode_time_light`). 📈",
|
||||||
"max_sunset_time": "Lege die späteste virtuelle Sonnenuntergangszeit (HH:MM:SS) fest, um frühere Sonnenuntergänge zu ermöglichen. 🌇",
|
"brightness_mode_time_dark": "(Wird ignoriert, wenn `brightness_mode='default'`) Die Dauer in Sekunden, um die Helligkeit vor/nach Sonnenaufgang/Sonnenuntergang hoch/runter zu fahren. 📈📉.",
|
||||||
"adapt_delay": "Wartezeit (Sekunden) zwischen dem Einschalten des Lichts und der Anwendung der adaptiven Beleuchtung. Könnte helfen, Flackern zu vermeiden. ⏲️",
|
"brightness_mode_time_light": "(Wird ignoriert, wenn `brightness_mode='default'`) Die Dauer in Sekunden, um die Helligkeit nach/vor Sonnenaufgang/Sonnenuntergang hoch/runter zu fahren. 📈📉.",
|
||||||
"min_sunrise_time": "Lege die früheste virtuelle Sonnenaufgangszeit (HH:MM:SS) fest, um einen späteren Sonnenaufgang zu ermöglichen. 🌅",
|
"autoreset_control_seconds": "Setzt die manuelle Steuerung nach einer bestimmten Anzahl von Sekunden automatisch zurück. Zum Deaktivieren auf 0 setzen. ⏲️",
|
||||||
"brightness_mode_time_light": "(Wird ignoriert, wenn `brightness_mode='default'`) Die Dauer in Sekunden, um die Helligkeit nach/vor Sonnenaufgang/Sonnenuntergang hoch/runter zu fahren. 📈📉.",
|
"send_split_delay": "Verzögerung (ms) zwischen `separate_turn_on_commands` für Leuchten, die keine gleichzeitige Einstellung von Helligkeit und Farbe unterstützen. ⏲️",
|
||||||
"brightness_mode_time_dark": "(Wird ignoriert, wenn `brightness_mode='default'`) Die Dauer in Sekunden, um die Helligkeit vor/nach Sonnenaufgang/Sonnenuntergang hoch/runter zu fahren. 📈📉.",
|
"adapt_delay": "Wartezeit (Sekunden) zwischen dem Einschalten des Lichts und der Anwendung der adaptiven Beleuchtung. Könnte helfen, Flackern zu vermeiden. ⏲️",
|
||||||
"autoreset_control_seconds": "Setzt die manuelle Steuerung nach einer bestimmten Anzahl von Sekunden automatisch zurück. Zum Deaktivieren auf 0 setzen. ⏲️",
|
"expand_light_groups": "Wenn auf `false` gesetzt, werden Anpassungsbefehle direkt an die Gruppenentität gesendet und nicht an die einzelnen Mitglieder."
|
||||||
"initial_transition": "Dauer des ersten Übergangs, wenn das Licht von `off` auf `on` schaltet, in Sekunden. ⏲️",
|
}
|
||||||
"sleep_rgb_or_color_temp": "Verwende entweder `rgb_color` oder `color_temp` im Schlafmodus. 🌙",
|
}
|
||||||
"sleep_transition": "Dauer des Übergangs, wenn der \"Schlafmodus\" umgeschaltet wird, in Sekunden. 😴",
|
|
||||||
"sunrise_time": "Stelle eine feste Zeit (HH:MM:SS) für den Sonnenaufgang ein. 🌅"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -4,18 +4,14 @@
|
||||||
"step": {
|
"step": {
|
||||||
"init": {
|
"init": {
|
||||||
"title": "Επιλογές Adaptive Lighting",
|
"title": "Επιλογές Adaptive Lighting",
|
||||||
"menu_options": {
|
"sections": {
|
||||||
"advanced": "Ρύθμιση σύνθετων επιλογών",
|
"advanced": {
|
||||||
"finish": "Αποθήκευση και ολοκλήρωση"
|
"data": {},
|
||||||
|
"data_description": {}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"data": {},
|
"data": {},
|
||||||
"data_description": {}
|
"data_description": {}
|
||||||
},
|
|
||||||
"advanced": {
|
|
||||||
"title": "Σύνθετες ρυθμίσεις",
|
|
||||||
"description": "Ρυθμίστε τις σύνθετες επιλογές του Adaptive Lighting. Οι περισσότεροι χρήστες δεν χρειάζεται να αλλάξουν αυτές τις ρυθμίσεις.",
|
|
||||||
"data": {},
|
|
||||||
"data_description": {}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,13 @@
|
||||||
"data": {
|
"data": {
|
||||||
"name": "Name"
|
"name": "Name"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"menu": {
|
||||||
|
"title": "Create or Duplicate",
|
||||||
|
"description": "Do you want to create a new instance or duplicate an existing one?",
|
||||||
|
"data": {
|
||||||
|
"action": "Action"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"abort": {
|
"abort": {
|
||||||
|
|
@ -17,130 +24,86 @@
|
||||||
"options": {
|
"options": {
|
||||||
"step": {
|
"step": {
|
||||||
"init": {
|
"init": {
|
||||||
"title": "Basic Settings",
|
"title": "Adaptive Lighting options",
|
||||||
"description": "Configure the most common Adaptive Lighting options. After submitting, you can optionally configure advanced settings or save directly. If you've defined this entry in YAML, no options will appear here. For interactive graphs, visit [this web app](https://basnijholt.github.io/adaptive-lighting).",
|
"description": "Configure an Adaptive Lighting component. Option names align with the YAML settings. If you've defined this entry in YAML, no options will appear here. For interactive graphs that demonstrate parameter effects, visit [this web app]({webapp_url}). For further details, see the [official documentation]({docs_url}).",
|
||||||
"data": {
|
"data": {
|
||||||
"lights": "lights: List of light entity_ids to be controlled (may be empty). 🌟",
|
"lights": "lights: List of light entity_ids to be controlled (may be empty). 🌟",
|
||||||
"interval": "interval",
|
"interval": "interval",
|
||||||
"transition": "transition",
|
"transition": "transition",
|
||||||
"initial_transition": "initial_transition",
|
|
||||||
"min_brightness": "min_brightness: Minimum brightness percentage. 💡",
|
"min_brightness": "min_brightness: Minimum brightness percentage. 💡",
|
||||||
"max_brightness": "max_brightness: Maximum brightness percentage. 💡",
|
"max_brightness": "max_brightness: Maximum brightness percentage. 💡",
|
||||||
"min_color_temp": "min_color_temp: Warmest color temperature in Kelvin. 🔥",
|
"min_color_temp": "min_color_temp: Warmest color temperature in Kelvin. 🔥",
|
||||||
"max_color_temp": "max_color_temp: Coldest color temperature in Kelvin. ❄️",
|
"max_color_temp": "max_color_temp: Coldest color temperature in Kelvin. ❄️",
|
||||||
"prefer_rgb_color": "prefer_rgb_color: Whether to prefer RGB color adjustment over light color temperature when possible. 🌈",
|
|
||||||
"sleep_brightness": "sleep_brightness",
|
"sleep_brightness": "sleep_brightness",
|
||||||
"sleep_rgb_or_color_temp": "sleep_rgb_or_color_temp",
|
"sleep_color_temp": "sleep_color_temp"
|
||||||
"sleep_color_temp": "sleep_color_temp",
|
|
||||||
"sleep_rgb_color": "sleep_rgb_color",
|
|
||||||
"sleep_transition": "sleep_transition",
|
|
||||||
"transition_until_sleep": "transition_until_sleep: When enabled, Adaptive Lighting will treat sleep settings as the minimum, transitioning to these values after sunset. 🌙",
|
|
||||||
"sunrise_time": "sunrise_time",
|
|
||||||
"min_sunrise_time": "min_sunrise_time",
|
|
||||||
"max_sunrise_time": "max_sunrise_time",
|
|
||||||
"sunrise_offset": "sunrise_offset",
|
|
||||||
"sunset_time": "sunset_time",
|
|
||||||
"min_sunset_time": "min_sunset_time",
|
|
||||||
"max_sunset_time": "max_sunset_time",
|
|
||||||
"sunset_offset": "sunset_offset",
|
|
||||||
"brightness_mode": "brightness_mode",
|
|
||||||
"brightness_mode_time_dark": "brightness_mode_time_dark",
|
|
||||||
"brightness_mode_time_light": "brightness_mode_time_light",
|
|
||||||
"take_over_control": "take_over_control: Disable Adaptive Lighting if another source calls `light.turn_on` while lights are on and being adapted. Note that this calls `homeassistant.update_entity` every `interval`! 🔒",
|
|
||||||
"detect_non_ha_changes": "detect_non_ha_changes: Detects and halts adaptations for non-`light.turn_on` state changes. Needs `take_over_control` enabled. 🕵️ Caution: ⚠️ Some lights might falsely indicate an 'on' state, which could result in lights turning on unexpectedly. Disable this feature if you encounter such issues.",
|
|
||||||
"autoreset_control_seconds": "autoreset_control_seconds",
|
|
||||||
"only_once": "only_once: Adapt lights only when they are turned on (`true`) or keep adapting them (`false`). 🔄",
|
|
||||||
"adapt_only_on_bare_turn_on": "adapt_only_on_bare_turn_on: When turning lights on initially. If set to `true`, AL adapts only if `light.turn_on` is invoked without specifying color or brightness. ❌🌈 This e.g., prevents adaptation when activating a scene. If `false`, AL adapts regardless of the presence of color or brightness in the initial `service_data`. Needs `take_over_control` enabled. 🕵️",
|
|
||||||
"separate_turn_on_commands": "separate_turn_on_commands: Use separate `light.turn_on` calls for color and brightness, needed for some light types. 🔀",
|
|
||||||
"send_split_delay": "send_split_delay",
|
|
||||||
"adapt_delay": "adapt_delay",
|
|
||||||
"skip_redundant_commands": "skip_redundant_commands: Skip sending adaptation commands whose target state already equals the light's known state. Minimizes network traffic and improves the adaptation responsivity in some situations. 📉Disable if physical light states get out of sync with HA's recorded state.",
|
|
||||||
"intercept": "intercept: Intercept and adapt `light.turn_on` calls to enabling instantaneous color and brightness adaptation. 🏎️ Disable for lights that do not support `light.turn_on` with color and brightness.",
|
|
||||||
"multi_light_intercept": "multi_light_intercept: Intercept and adapt `light.turn_on` calls that target multiple lights. ➗⚠️ This might result in splitting up a single `light.turn_on` call into multiple calls, e.g., when lights are in different switches. Requires `intercept` to be enabled.",
|
|
||||||
"include_config_in_attributes": "include_config_in_attributes: Show all options as attributes on the switch in Home Assistant when set to `true`. 📝"
|
|
||||||
},
|
},
|
||||||
"data_description": {
|
"data_description": {
|
||||||
"interval": "Frequency to adapt the lights, in seconds. 🔄",
|
"interval": "Frequency to adapt the lights, in seconds. 🔄",
|
||||||
"transition": "Duration of transition when lights change, in seconds. 🕑",
|
"transition": "Duration of transition when lights change, in seconds. 🕑",
|
||||||
"initial_transition": "Duration of the first transition when lights turn from `off` to `on` in seconds. ⏲️",
|
|
||||||
"sleep_brightness": "Brightness percentage of lights in sleep mode. 😴",
|
"sleep_brightness": "Brightness percentage of lights in sleep mode. 😴",
|
||||||
"sleep_rgb_or_color_temp": "Use either `\"rgb_color\"` or `\"color_temp\"` in sleep mode. 🌙",
|
"sleep_color_temp": "Color temperature in sleep mode (used when `sleep_rgb_or_color_temp` is `color_temp`) in Kelvin. 😴"
|
||||||
"sleep_color_temp": "Color temperature in sleep mode (used when `sleep_rgb_or_color_temp` is `color_temp`) in Kelvin. 😴",
|
|
||||||
"sleep_rgb_color": "RGB color in sleep mode (used when `sleep_rgb_or_color_temp` is \"rgb_color\"). 🌈",
|
|
||||||
"sleep_transition": "Duration of transition when \"sleep mode\" is toggled in seconds. 😴",
|
|
||||||
"sunrise_time": "Set a fixed time (HH:MM:SS) for sunrise. 🌅",
|
|
||||||
"min_sunrise_time": "Set the earliest virtual sunrise time (HH:MM:SS), allowing for later sunrises. 🌅",
|
|
||||||
"max_sunrise_time": "Set the latest virtual sunrise time (HH:MM:SS), allowing for earlier sunrises. 🌅",
|
|
||||||
"sunrise_offset": "Adjust sunrise time with a positive or negative offset in seconds. ⏰",
|
|
||||||
"sunset_time": "Set a fixed time (HH:MM:SS) for sunset. 🌇",
|
|
||||||
"min_sunset_time": "Set the earliest virtual sunset time (HH:MM:SS), allowing for later sunsets. 🌇",
|
|
||||||
"max_sunset_time": "Set the latest virtual sunset time (HH:MM:SS), allowing for earlier sunsets. 🌇",
|
|
||||||
"sunset_offset": "Adjust sunset time with a positive or negative offset in seconds. ⏰",
|
|
||||||
"brightness_mode": "Brightness mode to use. Possible values are `default`, `linear`, and `tanh` (uses `brightness_mode_time_dark` and `brightness_mode_time_light`). 📈",
|
|
||||||
"brightness_mode_time_dark": "(Ignored if `brightness_mode='default'`) The duration in seconds to ramp up/down the brightness before/after sunrise/sunset. 📈📉",
|
|
||||||
"brightness_mode_time_light": "(Ignored if `brightness_mode='default'`) The duration in seconds to ramp up/down the brightness after/before sunrise/sunset. 📈📉.",
|
|
||||||
"autoreset_control_seconds": "Automatically reset the manual control after a number of seconds. Set to 0 to disable. ⏲️",
|
|
||||||
"send_split_delay": "Delay (ms) between `separate_turn_on_commands` for lights that don't support simultaneous brightness and color setting. ⏲️",
|
|
||||||
"adapt_delay": "Wait time (seconds) between light turn on and Adaptive Lighting applying changes. Might help to avoid flickering. ⏲️"
|
|
||||||
},
|
},
|
||||||
"menu_options": {
|
"sections": {
|
||||||
"advanced": "Configure advanced options",
|
"advanced": {
|
||||||
"finish": "Save and finish"
|
"name": "Advanced settings",
|
||||||
}
|
"description": "Additional settings for fine-tuning Adaptive Lighting.",
|
||||||
},
|
"data": {
|
||||||
"advanced": {
|
"initial_transition": "initial_transition",
|
||||||
"title": "Advanced Settings",
|
"prefer_rgb_color": "prefer_rgb_color: Whether to prefer RGB color adjustment over light color temperature when possible. 🌈",
|
||||||
"description": "Configure advanced Adaptive Lighting options. Most users don't need to change these settings.",
|
"sleep_rgb_or_color_temp": "sleep_rgb_or_color_temp",
|
||||||
"data": {
|
"sleep_rgb_color": "sleep_rgb_color",
|
||||||
"initial_transition": "initial_transition",
|
"sleep_transition": "sleep_transition",
|
||||||
"prefer_rgb_color": "prefer_rgb_color: Whether to prefer RGB color adjustment over light color temperature when possible. 🌈",
|
"transition_until_sleep": "transition_until_sleep: When enabled, Adaptive Lighting will treat sleep settings as the minimum, transitioning to these values after sunset. 🌙",
|
||||||
"sleep_rgb_or_color_temp": "sleep_rgb_or_color_temp",
|
"sunrise_time": "sunrise_time",
|
||||||
"sleep_rgb_color": "sleep_rgb_color",
|
"min_sunrise_time": "min_sunrise_time",
|
||||||
"sleep_transition": "sleep_transition",
|
"max_sunrise_time": "max_sunrise_time",
|
||||||
"transition_until_sleep": "transition_until_sleep: When enabled, Adaptive Lighting will treat sleep settings as the minimum, transitioning to these values after sunset. 🌙",
|
"sunrise_offset": "sunrise_offset",
|
||||||
"sunrise_time": "sunrise_time",
|
"sunset_time": "sunset_time",
|
||||||
"min_sunrise_time": "min_sunrise_time",
|
"min_sunset_time": "min_sunset_time",
|
||||||
"max_sunrise_time": "max_sunrise_time",
|
"max_sunset_time": "max_sunset_time",
|
||||||
"sunrise_offset": "sunrise_offset",
|
"sunset_offset": "sunset_offset",
|
||||||
"sunset_time": "sunset_time",
|
"brightness_mode": "brightness_mode",
|
||||||
"min_sunset_time": "min_sunset_time",
|
"brightness_mode_time_dark": "brightness_mode_time_dark",
|
||||||
"max_sunset_time": "max_sunset_time",
|
"brightness_mode_time_light": "brightness_mode_time_light",
|
||||||
"sunset_offset": "sunset_offset",
|
"take_over_control": "take_over_control: Pause adaptation of individual lights and hand over (manual) control to other sources that issue `light.turn_on` calls for lights that are on. 🔒",
|
||||||
"brightness_mode": "brightness_mode",
|
"take_over_control_mode": "take_over_control_mode",
|
||||||
"brightness_mode_time_dark": "brightness_mode_time_dark",
|
"detect_non_ha_changes": "detect_non_ha_changes: Detects and halts adaptations for non-`light.turn_on` state changes. Needs `take_over_control` enabled. 🕵️ Caution: ⚠️ Some lights might falsely indicate an 'on' state, which could result in lights turning on unexpectedly. Note that this calls `homeassistant.update_entity` every `interval`! Disable this feature if you encounter such issues.",
|
||||||
"brightness_mode_time_light": "brightness_mode_time_light",
|
"autoreset_control_seconds": "autoreset_control_seconds",
|
||||||
"take_over_control": "take_over_control: Disable Adaptive Lighting if another source calls `light.turn_on` while lights are on and being adapted. Note that this calls `homeassistant.update_entity` every `interval`! 🔒",
|
"only_once": "only_once: Adapt lights only when they are turned on (`true`) or keep adapting them (`false`). 🔄",
|
||||||
"detect_non_ha_changes": "detect_non_ha_changes: Detects and halts adaptations for non-`light.turn_on` state changes. Needs `take_over_control` enabled. 🕵️ Caution: ⚠️ Some lights might falsely indicate an 'on' state, which could result in lights turning on unexpectedly. Disable this feature if you encounter such issues.",
|
"adapt_only_on_bare_turn_on": "adapt_only_on_bare_turn_on: When turning lights on initially. If set to `true`, AL adapts only if `light.turn_on` is invoked without specifying color or brightness. ❌🌈 This e.g., prevents adaptation when activating a scene and marks the light as manually controlled. If `false`, AL adapts regardless of the presence of color or brightness in the initial `service_data`. Needs `take_over_control` enabled. 🕵️",
|
||||||
"autoreset_control_seconds": "autoreset_control_seconds",
|
"manual_control_on_external_turn_on": "manual_control_on_external_turn_on: Treat turn-ons without a matching Home Assistant `light.turn_on` context as manual control. Normal manual-control resets apply. Still allows `detect_non_ha_changes` for already-on lights. Needs `take_over_control` enabled. 🕵️",
|
||||||
"only_once": "only_once: Adapt lights only when they are turned on (`true`) or keep adapting them (`false`). 🔄",
|
"reset_manual_control_on_sleep_mode_change": "reset_manual_control_on_sleep_mode_change: Reset manual control when the sleep mode switch is toggled. Set to `false` to preserve manual control across sleep mode changes. 😴",
|
||||||
"adapt_only_on_bare_turn_on": "adapt_only_on_bare_turn_on: When turning lights on initially. If set to `true`, AL adapts only if `light.turn_on` is invoked without specifying color or brightness. ❌🌈 This e.g., prevents adaptation when activating a scene. If `false`, AL adapts regardless of the presence of color or brightness in the initial `service_data`. Needs `take_over_control` enabled. 🕵️",
|
"separate_turn_on_commands": "separate_turn_on_commands: Use separate `light.turn_on` calls for color and brightness, needed for some light types. 🔀",
|
||||||
"separate_turn_on_commands": "separate_turn_on_commands: Use separate `light.turn_on` calls for color and brightness, needed for some light types. 🔀",
|
"send_split_delay": "send_split_delay",
|
||||||
"send_split_delay": "send_split_delay",
|
"adapt_delay": "adapt_delay",
|
||||||
"adapt_delay": "adapt_delay",
|
"skip_redundant_commands": "skip_redundant_commands: Skip sending adaptation commands whose target state already equals the light's known state. Minimizes network traffic and improves the adaptation responsivity in some situations. 📉Disable if physical light states get out of sync with HA's recorded state.",
|
||||||
"skip_redundant_commands": "skip_redundant_commands: Skip sending adaptation commands whose target state already equals the light's known state. Minimizes network traffic and improves the adaptation responsivity in some situations. 📉Disable if physical light states get out of sync with HA's recorded state.",
|
"intercept": "intercept: Intercept and adapt `light.turn_on` calls to enabling instantaneous color and brightness adaptation. 🏎️ Disable for lights that do not support `light.turn_on` with color and brightness.",
|
||||||
"intercept": "intercept: Intercept and adapt `light.turn_on` calls to enabling instantaneous color and brightness adaptation. 🏎️ Disable for lights that do not support `light.turn_on` with color and brightness.",
|
"multi_light_intercept": "multi_light_intercept: Intercept and adapt `light.turn_on` calls that target multiple lights. ➗⚠️ This might result in splitting up a single `light.turn_on` call into multiple calls, e.g., when lights are in different switches. Requires `intercept` to be enabled.",
|
||||||
"multi_light_intercept": "multi_light_intercept: Intercept and adapt `light.turn_on` calls that target multiple lights. ➗⚠️ This might result in splitting up a single `light.turn_on` call into multiple calls, e.g., when lights are in different switches. Requires `intercept` to be enabled.",
|
"include_config_in_attributes": "include_config_in_attributes: Show all options as attributes on the switch in Home Assistant when set to `true`. 📝",
|
||||||
"include_config_in_attributes": "include_config_in_attributes: Show all options as attributes on the switch in Home Assistant when set to `true`. 📝"
|
"expand_light_groups": "expand_light_groups: Expand light groups to their members (`true`, default). Set `false` to send commands to the group and track manual control for the group. Explicit member targets in services stay individual targets."
|
||||||
},
|
},
|
||||||
"data_description": {
|
"data_description": {
|
||||||
"initial_transition": "Duration of the first transition when lights turn from `off` to `on` in seconds. ⏲️",
|
"initial_transition": "Duration of the first transition when lights turn from `off` to `on` in seconds. ⏲️",
|
||||||
"sleep_rgb_or_color_temp": "Use either `\"rgb_color\"` or `\"color_temp\"` in sleep mode. 🌙",
|
"sleep_rgb_or_color_temp": "Use either `\"rgb_color\"` or `\"color_temp\"` in sleep mode. 🌙",
|
||||||
"sleep_rgb_color": "RGB color in sleep mode (used when `sleep_rgb_or_color_temp` is \"rgb_color\"). 🌈",
|
"sleep_rgb_color": "RGB color in sleep mode (used when `sleep_rgb_or_color_temp` is \"rgb_color\"). 🌈",
|
||||||
"sleep_transition": "Duration of transition when \"sleep mode\" is toggled in seconds. 😴",
|
"sleep_transition": "Duration of transition when \"sleep mode\" is toggled in seconds. 😴",
|
||||||
"sunrise_time": "Set a fixed time (HH:MM:SS) for sunrise. 🌅",
|
"sunrise_time": "Set a fixed time (HH:MM:SS) for sunrise. 🌅",
|
||||||
"min_sunrise_time": "Set the earliest virtual sunrise time (HH:MM:SS), allowing for later sunrises. 🌅",
|
"min_sunrise_time": "Set the earliest virtual sunrise time (HH:MM:SS), allowing for later sunrises. 🌅",
|
||||||
"max_sunrise_time": "Set the latest virtual sunrise time (HH:MM:SS), allowing for earlier sunrises. 🌅",
|
"max_sunrise_time": "Set the latest virtual sunrise time (HH:MM:SS), allowing for earlier sunrises. 🌅",
|
||||||
"sunrise_offset": "Adjust sunrise time with a positive or negative offset in seconds. ⏰",
|
"sunrise_offset": "Adjust sunrise time with a positive or negative offset in seconds. ⏰",
|
||||||
"sunset_time": "Set a fixed time (HH:MM:SS) for sunset. 🌇",
|
"sunset_time": "Set a fixed time (HH:MM:SS) for sunset. 🌇",
|
||||||
"min_sunset_time": "Set the earliest virtual sunset time (HH:MM:SS), allowing for later sunsets. 🌇",
|
"min_sunset_time": "Set the earliest virtual sunset time (HH:MM:SS), allowing for later sunsets. 🌇",
|
||||||
"max_sunset_time": "Set the latest virtual sunset time (HH:MM:SS), allowing for earlier sunsets. 🌇",
|
"max_sunset_time": "Set the latest virtual sunset time (HH:MM:SS), allowing for earlier sunsets. 🌇",
|
||||||
"sunset_offset": "Adjust sunset time with a positive or negative offset in seconds. ⏰",
|
"sunset_offset": "Adjust sunset time with a positive or negative offset in seconds. ⏰",
|
||||||
"brightness_mode": "Brightness mode to use. Possible values are `default`, `linear`, and `tanh` (uses `brightness_mode_time_dark` and `brightness_mode_time_light`). 📈",
|
"brightness_mode": "Brightness mode to use. Possible values are `default`, `linear`, and `tanh` (uses `brightness_mode_time_dark` and `brightness_mode_time_light`). 📈",
|
||||||
"brightness_mode_time_dark": "(Ignored if `brightness_mode='default'`) The duration in seconds to ramp up/down the brightness before/after sunrise/sunset. 📈📉",
|
"brightness_mode_time_dark": "(Ignored if `brightness_mode='default'`) The duration in seconds to ramp up/down the brightness before/after sunrise/sunset. 📈📉",
|
||||||
"brightness_mode_time_light": "(Ignored if `brightness_mode='default'`) The duration in seconds to ramp up/down the brightness after/before sunrise/sunset. 📈📉.",
|
"brightness_mode_time_light": "(Ignored if `brightness_mode='default'`) The duration in seconds to ramp up/down the brightness after/before sunrise/sunset. 📈📉.",
|
||||||
"autoreset_control_seconds": "Automatically reset the manual control after a number of seconds. Set to 0 to disable. ⏲️",
|
"take_over_control_mode": "The adaptation pausing mode when other sources change brightness and/or color of lights. `pause_all` always pauses both brightness and color adaptation. `pause_changed` pauses the adaptation of only the changed attributes and continues adapting unchanged attributes, e.g., continues color adaptation when only brightness was changed.",
|
||||||
"send_split_delay": "Delay (ms) between `separate_turn_on_commands` for lights that don't support simultaneous brightness and color setting. ⏲️",
|
"autoreset_control_seconds": "Automatically reset the manual control after a number of seconds. Set to 0 to disable. ⏲️",
|
||||||
"adapt_delay": "Wait time (seconds) between light turn on and Adaptive Lighting applying changes. Might help to avoid flickering. ⏲️"
|
"send_split_delay": "Delay (ms) between `separate_turn_on_commands` for lights that don't support simultaneous brightness and color setting. ⏲️",
|
||||||
|
"adapt_delay": "Wait time (seconds) between light turn on and Adaptive Lighting applying changes. Might help to avoid flickering. ⏲️"
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
@ -197,7 +160,7 @@
|
||||||
"name": "lights"
|
"name": "lights"
|
||||||
},
|
},
|
||||||
"manual_control": {
|
"manual_control": {
|
||||||
"description": "Whether to add (\"true\") or remove (\"false\") the light from the \"manual_control\" list. 🔒",
|
"description": "Whether to add (\"true\") or remove (\"false\") all adapted attributes of the light from the \"manual_control\" list, or the name of an attribute for selective addition. 🔒",
|
||||||
"name": "manual_control"
|
"name": "manual_control"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -206,10 +169,6 @@
|
||||||
"name": "change_switch_settings",
|
"name": "change_switch_settings",
|
||||||
"description": "Change any settings you'd like in the switch. All options here are the same as in the config flow.",
|
"description": "Change any settings you'd like in the switch. All options here are the same as in the config flow.",
|
||||||
"fields": {
|
"fields": {
|
||||||
"entity_id": {
|
|
||||||
"description": "Entity ID of the switch. 📝",
|
|
||||||
"name": "entity_id"
|
|
||||||
},
|
|
||||||
"use_defaults": {
|
"use_defaults": {
|
||||||
"description": "Sets the default values not specified in this service call. Options: \"current\" (default, retains current values), \"factory\" (resets to documented defaults), or \"configuration\" (reverts to switch config defaults). ⚙️",
|
"description": "Sets the default values not specified in this service call. Options: \"current\" (default, retains current values), \"factory\" (resets to documented defaults), or \"configuration\" (reverts to switch config defaults). ⚙️",
|
||||||
"name": "use_defaults"
|
"name": "use_defaults"
|
||||||
|
|
@ -254,6 +213,10 @@
|
||||||
"description": "Whether to prefer RGB color adjustment over light color temperature when possible. 🌈",
|
"description": "Whether to prefer RGB color adjustment over light color temperature when possible. 🌈",
|
||||||
"name": "prefer_rgb_color"
|
"name": "prefer_rgb_color"
|
||||||
},
|
},
|
||||||
|
"expand_light_groups": {
|
||||||
|
"description": "Expand light groups to their members (`true`, default). Set `false` to send commands to the group and track manual control for the group. Explicit member targets in services stay individual targets.",
|
||||||
|
"name": "expand_light_groups"
|
||||||
|
},
|
||||||
"separate_turn_on_commands": {
|
"separate_turn_on_commands": {
|
||||||
"description": "Use separate `light.turn_on` calls for color and brightness, needed for some light types. 🔀",
|
"description": "Use separate `light.turn_on` calls for color and brightness, needed for some light types. 🔀",
|
||||||
"name": "separate_turn_on_commands"
|
"name": "separate_turn_on_commands"
|
||||||
|
|
@ -303,13 +266,21 @@
|
||||||
"name": "min_sunset_time"
|
"name": "min_sunset_time"
|
||||||
},
|
},
|
||||||
"take_over_control": {
|
"take_over_control": {
|
||||||
"description": "Disable Adaptive Lighting if another source calls `light.turn_on` while lights are on and being adapted. Note that this calls `homeassistant.update_entity` every `interval`! 🔒",
|
"description": "Pause adaptation of individual lights and hand over (manual) control to other sources that issue `light.turn_on` calls for lights that are on. 🔒",
|
||||||
"name": "take_over_control"
|
"name": "take_over_control"
|
||||||
},
|
},
|
||||||
|
"take_over_control_mode": {
|
||||||
|
"description": "The adaptation pausing mode when other sources change brightness and/or color of lights. `pause_all` always pauses both brightness and color adaptation. `pause_changed` pauses the adaptation of only the changed attributes and continues adapting unchanged attributes, e.g., continues color adaptation when only brightness was changed.",
|
||||||
|
"name": "take_over_control_mode"
|
||||||
|
},
|
||||||
"detect_non_ha_changes": {
|
"detect_non_ha_changes": {
|
||||||
"description": "Detects and halts adaptations for non-`light.turn_on` state changes. Needs `take_over_control` enabled. 🕵️ Caution: ⚠️ Some lights might falsely indicate an 'on' state, which could result in lights turning on unexpectedly. Disable this feature if you encounter such issues.",
|
"description": "Detects and halts adaptations for non-`light.turn_on` state changes. Needs `take_over_control` enabled. 🕵️ Caution: ⚠️ Some lights might falsely indicate an 'on' state, which could result in lights turning on unexpectedly. Note that this calls `homeassistant.update_entity` every `interval`! Disable this feature if you encounter such issues.",
|
||||||
"name": "detect_non_ha_changes"
|
"name": "detect_non_ha_changes"
|
||||||
},
|
},
|
||||||
|
"manual_control_on_external_turn_on": {
|
||||||
|
"description": "Treat turn-ons without a matching Home Assistant `light.turn_on` context as manual control. Normal manual-control resets apply. Still allows `detect_non_ha_changes` for already-on lights. Needs `take_over_control` enabled. 🕵️",
|
||||||
|
"name": "manual_control_on_external_turn_on"
|
||||||
|
},
|
||||||
"transition": {
|
"transition": {
|
||||||
"description": "Duration of transition when lights change, in seconds. 🕑",
|
"description": "Duration of transition when lights change, in seconds. 🕑",
|
||||||
"name": "transition"
|
"name": "transition"
|
||||||
|
|
|
||||||
|
|
@ -5,59 +5,56 @@
|
||||||
"init": {
|
"init": {
|
||||||
"title": "Configuración de la Iluminación Adaptativa",
|
"title": "Configuración de la Iluminación Adaptativa",
|
||||||
"data_description": {
|
"data_description": {
|
||||||
"sleep_color_temp": "Temperatura de color en modo noche (usado cuando`sleep_rgb_or_color_temp` es `color_temp`) en grados Kelvin. 😴",
|
"interval": "Frecuencia de adaptación de las luces, en segundos. 🔄",
|
||||||
"transition": "Duración de la transición cuando las luces se adaptan, en segundos. ⏲️",
|
"transition": "Duración de la transición cuando las luces se adaptan, en segundos. ⏲️",
|
||||||
"sleep_brightness": "Porcentaje de brillo de las luces en el modo noche. 😴",
|
"sleep_brightness": "Porcentaje de brillo de las luces en el modo noche. 😴",
|
||||||
"interval": "Frecuencia de adaptación de las luces, en segundos. 🔄"
|
"sleep_color_temp": "Temperatura de color en modo noche (usado cuando`sleep_rgb_or_color_temp` es `color_temp`) en grados Kelvin. 😴"
|
||||||
},
|
},
|
||||||
"data": {
|
"data": {
|
||||||
"min_color_temp": "min_color_temp: Temperatura de color más cálida en grados Kelvin. 🔥",
|
|
||||||
"lights": "lights: Lista de entity_ids de luces a controlar (puede estar vacía). 🌟",
|
"lights": "lights: Lista de entity_ids de luces a controlar (puede estar vacía). 🌟",
|
||||||
|
"min_brightness": "min_brightness: Porcentaje mínimo de brillo. 💡",
|
||||||
"max_brightness": "max_brightness: Porcentaje máximo de brillo. 💡",
|
"max_brightness": "max_brightness: Porcentaje máximo de brillo. 💡",
|
||||||
"max_color_temp": "max_color_temp: Temperatura de color más fría en grados Kelvin. ❄️",
|
"min_color_temp": "min_color_temp: Temperatura de color más cálida en grados Kelvin. 🔥",
|
||||||
"min_brightness": "min_brightness: Porcentaje mínimo de brillo. 💡"
|
"max_color_temp": "max_color_temp: Temperatura de color más fría en grados Kelvin. ❄️"
|
||||||
},
|
},
|
||||||
"description": "Configura un componente Adaptive Lighting. Los nombres de las opciones se asemejan a las disponibles en la configuración YAML. Si has definido esta entrada en YAML, no aparecerá ninguna opción aquí. Para gráficos interactivos que demuestran los efectos de los parámetros, visita [esta web app](https://basnijholt.github.io/adaptive-lighting). Para más detalles, ver la [documentación oficial](https://github.com/basnijholt/adaptive-lighting#readme).",
|
"description": "Configura un componente Adaptive Lighting. Los nombres de las opciones se asemejan a las disponibles en la configuración YAML. Si has definido esta entrada en YAML, no aparecerá ninguna opción aquí. Para gráficos interactivos que demuestran los efectos de los parámetros, visita [esta web app]({webapp_url}). Para más detalles, ver la [documentación oficial]({docs_url}).",
|
||||||
"menu_options": {
|
"sections": {
|
||||||
"advanced": "Configurar opciones avanzadas",
|
"advanced": {
|
||||||
"finish": "Guardar y finalizar"
|
"data": {
|
||||||
}
|
"prefer_rgb_color": "prefer_rgb_color: Preferir ajustar el color RGB a la temperatura de color cuando sea posible. 🌈",
|
||||||
},
|
"transition_until_sleep": "transition_until_sleep: Cuando habilitado, Adaptive Lighting tratará los ajustes del modo noche como los valores mínimos, transicionando a esos valores tras la puesta del sol. 🌙",
|
||||||
"advanced": {
|
"take_over_control": "take_over_control: Deshabilita Adaptive Lighting si otra fuente llama`light.turn_on` mientras las luces están encendidas y adaptándose. Cuidado, esto llama`homeassistant.update_entity` cada `interval`! 🔒",
|
||||||
"title": "Configuración avanzada",
|
"detect_non_ha_changes": "detect_non_ha_changes: Detecta e interrumpe adaptaciones para cambios de estado no `light.turn_on`. Necesita `take_over_control` habilitado. 🕵️ Precaución: ⚠️ Algunas luces pueden indicar de forma errónea un estado 'on', que puede resultar en luces que se enciendan de forma no esperada. Deshabilita esta función si encuentras dichos problemas.",
|
||||||
"description": "Configura las opciones avanzadas de Adaptive Lighting. La mayoría de los usuarios no necesitan cambiar esta configuración.",
|
"only_once": "only_once: Adapta las luces sólo cuando se encienden (`true`) o mantener adaptadas (`false`). 🔄",
|
||||||
"data": {
|
"adapt_only_on_bare_turn_on": "adapt_only_on_bare_turn_on: Al encender las luces. Si el valor es `true`, AL adapta sólo si se llama `light.turn_on` sin especificar el color o brillo. ❌🌈 Esto, por ejemplo, previene la adaptación al activar una escena. Si el valor es `false`, AL adapta independientemente de la presencia de color o brillo en `service_data` inicial. Necesita `take_over_control` habilitado. 🕵️",
|
||||||
"adapt_only_on_bare_turn_on": "adapt_only_on_bare_turn_on: Al encender las luces. Si el valor es `true`, AL adapta sólo si se llama `light.turn_on` sin especificar el color o brillo. ❌🌈 Esto, por ejemplo, previene la adaptación al activar una escena. Si el valor es `false`, AL adapta independientemente de la presencia de color o brillo en `service_data` inicial. Necesita `take_over_control` habilitado. 🕵️",
|
"separate_turn_on_commands": "separate_turn_on_commands: Usar llamadas independientes a `light.turn_on` para color y brillo, necesario para ciertos tipos de luces. 🔀",
|
||||||
"detect_non_ha_changes": "detect_non_ha_changes: Detecta e interrumpe adaptaciones para cambios de estado no `light.turn_on`. Necesita `take_over_control` habilitado. 🕵️ Precaución: ⚠️ Algunas luces pueden indicar de forma errónea un estado 'on', que puede resultar en luces que se enciendan de forma no esperada. Deshabilita esta función si encuentras dichos problemas.",
|
"skip_redundant_commands": "skip_redundant_commands: Evitar mandar comandos de adaptación a luces cuyo estado ya sea el esperado. Reduce tráfico en la red y mejora la respuesta de la adaptación en ciertas situaciones. 📉Deshabilitar si el estado real de las luces se desincroniza con el estado registrado en Home Assistant.",
|
||||||
"intercept": "intercept: Intercepta y adapta llamadas a `light.turn_on` para habilitar adaptaciones instantáneas de color y brillo. 🏎️ Deshabilitar para luces que no soporten `light.turn_on` con color y brillo.",
|
"intercept": "intercept: Intercepta y adapta llamadas a `light.turn_on` para habilitar adaptaciones instantáneas de color y brillo. 🏎️ Deshabilitar para luces que no soporten `light.turn_on` con color y brillo.",
|
||||||
"prefer_rgb_color": "prefer_rgb_color: Preferir ajustar el color RGB a la temperatura de color cuando sea posible. 🌈",
|
"multi_light_intercept": "multi_light_intercept: Intercepta y adapta llamadas a `light.turn_on` que apuntan a múltiples luces. ➗⚠️ Esto puede resultar en dividir una única llamada a `light.turn_on` en múltiples llamadas, por ejemplo, cuando las luces están vinculadas a distintos interruptores. Requiere que `intercept` esté habilitado.",
|
||||||
"transition_until_sleep": "transition_until_sleep: Cuando habilitado, Adaptive Lighting tratará los ajustes del modo noche como los valores mínimos, transicionando a esos valores tras la puesta del sol. 🌙",
|
"include_config_in_attributes": "include_config_in_attributes: Muestra todas las opciones como atributes del interruptor en Home Assistant cuando sea `true`. 📝"
|
||||||
"include_config_in_attributes": "include_config_in_attributes: Muestra todas las opciones como atributes del interruptor en Home Assistant cuando sea `true`. 📝",
|
},
|
||||||
"multi_light_intercept": "multi_light_intercept: Intercepta y adapta llamadas a `light.turn_on` que apuntan a múltiples luces. ➗⚠️ Esto puede resultar en dividir una única llamada a `light.turn_on` en múltiples llamadas, por ejemplo, cuando las luces están vinculadas a distintos interruptores. Requiere que `intercept` esté habilitado.",
|
"data_description": {
|
||||||
"only_once": "only_once: Adapta las luces sólo cuando se encienden (`true`) o mantener adaptadas (`false`). 🔄",
|
"initial_transition": "Duración de la primera transición cuando las luces pasan de `off` a `on` en segundos. ⏲️",
|
||||||
"separate_turn_on_commands": "separate_turn_on_commands: Usar llamadas independientes a `light.turn_on` para color y brillo, necesario para ciertos tipos de luces. 🔀",
|
"sleep_rgb_or_color_temp": "Usar el modo`\"rgb_color\"` o `\"color_temp\"` en el modo noche. 🌙",
|
||||||
"skip_redundant_commands": "skip_redundant_commands: Evitar mandar comandos de adaptación a luces cuyo estado ya sea el esperado. Reduce tráfico en la red y mejora la respuesta de la adaptación en ciertas situaciones. 📉Deshabilitar si el estado real de las luces se desincroniza con el estado registrado en Home Assistant.",
|
"sleep_rgb_color": "Color RGB en modo noche(usado cuando `sleep_rgb_or_color_temp` es \"rgb_color\"). 🌈",
|
||||||
"take_over_control": "take_over_control: Deshabilita Adaptive Lighting si otra fuente llama`light.turn_on` mientras las luces están encendidas y adaptándose. Cuidado, esto llama`homeassistant.update_entity` cada `interval`! 🔒"
|
"sleep_transition": "Duración de la transición cuando el \"modo noche\" se activa o desactiva, en segundos. 😴",
|
||||||
},
|
"sunrise_time": "Fijar una hora (HH:MM:SS) para el amanecer. 🌅",
|
||||||
"data_description": {
|
"min_sunrise_time": "Define el amanecer virtual más temprano (HH:MM:SS), permitiendo amaneceres más tardíos. 🌅",
|
||||||
"sunset_offset": "Define la hora de la puesta del sol con un desfase (positivo o negativo) en segundos. ⏰",
|
"max_sunrise_time": "Define el amanecer virtual más tardío (HH:MM:SS), permitiendo amaneceres más tempranos. 🌅",
|
||||||
"sunrise_offset": "Define la hora de la salida del sol con un desfase (positivo o negativo) en segundos. ⏰",
|
"sunrise_offset": "Define la hora de la salida del sol con un desfase (positivo o negativo) en segundos. ⏰",
|
||||||
"send_split_delay": "Retraso (ms) entre `separate_turn_on_commands` para luces que no soportan ajustes simultáneos de brillo y color. ⏲️",
|
"sunset_time": "Fijar una hora (HH:MM:SS) para el atardecer. 🌇",
|
||||||
"initial_transition": "Duración de la primera transición cuando las luces pasan de `off` a `on` en segundos. ⏲️",
|
"min_sunset_time": "Define el atardecer virtual más temprano (HH:MM:SS), permitiendo atardeceres más tardíos. 🌇",
|
||||||
"sleep_transition": "Duración de la transición cuando el \"modo noche\" se activa o desactiva, en segundos. 😴",
|
"max_sunset_time": "Define el atardecer virtual más tardío (HH:MM:SS), permitiendo atardeceres más tempranos. 🌇",
|
||||||
"max_sunrise_time": "Define el amanecer virtual más tardío (HH:MM:SS), permitiendo amaneceres más tempranos. 🌅",
|
"sunset_offset": "Define la hora de la puesta del sol con un desfase (positivo o negativo) en segundos. ⏰",
|
||||||
"max_sunset_time": "Define el atardecer virtual más tardío (HH:MM:SS), permitiendo atardeceres más tempranos. 🌇",
|
"brightness_mode": "Modo de brillo a usar. Valores posibles son: `default`, `linear` y `tanh` (usa`brightness_mode_time_dark` y `brightness_mode_time_light`). 📈",
|
||||||
"sleep_rgb_color": "Color RGB en modo noche(usado cuando `sleep_rgb_or_color_temp` es \"rgb_color\"). 🌈",
|
"brightness_mode_time_dark": "(Ignorado si `brightness_mode='default'`) La duración, en segundos, de la transición del brillo después/antes del amanecer/atardecer. 📈📉.",
|
||||||
"sunrise_time": "Fijar una hora (HH:MM:SS) para el amanecer. 🌅",
|
"brightness_mode_time_light": "(Ignorado si `brightness_mode='default'`) La duración, en segundos, de la transición del brillo después/antes del amanecer/atardecer. 📈📉.",
|
||||||
"min_sunrise_time": "Define el amanecer virtual más temprano (HH:MM:SS), permitiendo amaneceres más tardíos. 🌅",
|
"take_over_control_mode": "El modo de pausa de adaptación cuando otras fuentes cambian el brillo y/o el color de las luces. `pause_all` siempre pausa tanto la adaptación de brillo como la de color. `pause_changed` pausa la adaptación solo de los atributos cambiados y continúa adaptando los atributos sin cambios, por ejemplo, continúa la adaptación de color cuando solo se cambió el brillo.",
|
||||||
"sleep_rgb_or_color_temp": "Usar el modo`\"rgb_color\"` o `\"color_temp\"` en el modo noche. 🌙",
|
"autoreset_control_seconds": "Resetear automáticamente el control manual tras `X` segundos. Poner a 0 para deshabilitar.",
|
||||||
"autoreset_control_seconds": "Resetear automáticamente el control manual tras `X` segundos. Poner a 0 para deshabilitar.",
|
"send_split_delay": "Retraso (ms) entre `separate_turn_on_commands` para luces que no soportan ajustes simultáneos de brillo y color. ⏲️",
|
||||||
"brightness_mode": "Modo de brillo a usar. Valores posibles son: `default`, `linear` y `tanh` (usa`brightness_mode_time_dark` y `brightness_mode_time_light`). 📈",
|
"adapt_delay": "Tiempo de espera (segundos) entre el encendido de la luz y Adaptive Lighting aplicando cambios. Puede ayudar a evitar parpadeos. ⏲️"
|
||||||
"brightness_mode_time_light": "(Ignorado si `brightness_mode='default'`) La duración, en segundos, de la transición del brillo después/antes del amanecer/atardecer. 📈📉.",
|
}
|
||||||
"brightness_mode_time_dark": "(Ignorado si `brightness_mode='default'`) La duración, en segundos, de la transición del brillo después/antes del amanecer/atardecer. 📈📉.",
|
}
|
||||||
"sunset_time": "Fijar una hora (HH:MM:SS) para el atardecer. 🌇",
|
|
||||||
"min_sunset_time": "Define el atardecer virtual más temprano (HH:MM:SS), permitiendo atardeceres más tardíos. 🌇",
|
|
||||||
"adapt_delay": "Tiempo de espera (segundos) entre el encendido de la luz y Adaptive Lighting aplicando cambios. Puede ayudar a evitar parpadeos. ⏲️"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
@ -205,6 +202,13 @@
|
||||||
"user": {
|
"user": {
|
||||||
"title": "Elige un nombre para la instancia de Adaptive Lighting",
|
"title": "Elige un nombre para la instancia de Adaptive Lighting",
|
||||||
"description": "Cada instancia puede contener múltiples luces!"
|
"description": "Cada instancia puede contener múltiples luces!"
|
||||||
|
},
|
||||||
|
"menu": {
|
||||||
|
"title": "Crear o duplicar",
|
||||||
|
"description": "¿Quieres crear una nueva instancia o duplicar una existente?",
|
||||||
|
"data": {
|
||||||
|
"action": "Acción"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"abort": {
|
"abort": {
|
||||||
|
|
|
||||||
|
|
@ -22,34 +22,30 @@
|
||||||
"data": {
|
"data": {
|
||||||
"lights": "valgustid",
|
"lights": "valgustid",
|
||||||
"interval": "Intervall, aeg muutuste vahel sekundites",
|
"interval": "Intervall, aeg muutuste vahel sekundites",
|
||||||
"max_brightness": "Suurim heledus %",
|
"transition": "Üleminekud, sekundites",
|
||||||
"max_color_temp": "Suurim värvustemperatuur Kelvinites",
|
|
||||||
"min_brightness": "Vähim heledus %",
|
"min_brightness": "Vähim heledus %",
|
||||||
|
"max_brightness": "Suurim heledus %",
|
||||||
"min_color_temp": "Vähim värvustemperatuur Kelvinites",
|
"min_color_temp": "Vähim värvustemperatuur Kelvinites",
|
||||||
|
"max_color_temp": "Suurim värvustemperatuur Kelvinites",
|
||||||
"sleep_brightness": "Unerežiimi heledus %",
|
"sleep_brightness": "Unerežiimi heledus %",
|
||||||
"sleep_color_temp": "Uneržiimi värvus Kelvinites",
|
"sleep_color_temp": "Uneržiimi värvus Kelvinites"
|
||||||
"transition": "Üleminekud, sekundites"
|
|
||||||
},
|
},
|
||||||
"menu_options": {
|
"sections": {
|
||||||
"advanced": "Configure advanced options",
|
"advanced": {
|
||||||
"finish": "Save and finish"
|
"data": {
|
||||||
},
|
"initial_transition": "Algne üleminek kui valgustid lülituvad sisse/välja või unerežiim muutub",
|
||||||
"data_description": {}
|
"prefer_rgb_color": "Eelista RGB värve, võimalusel kasuta RGB sätteid värvustemperatuuri asemel",
|
||||||
},
|
"sunrise_time": "Päikesetõusu aeg 'HH:MM:SS' vormingus. (Kui jätta tühjaks kasutatakse asukohajärgset)",
|
||||||
"advanced": {
|
"sunrise_offset": "Nihe päikesetõusust, +/- sekundit",
|
||||||
"title": "Advanced Settings",
|
"sunset_time": "Päikeseloojangu aeg 'HH:MM:SS' vormingus. (Kui jätta tühjaks kasutatakse asukohajärgset)",
|
||||||
"description": "Configure advanced Adaptive Lighting options. Most users don't need to change these settings.",
|
"sunset_offset": "Nihe päikeseloojangust, +/- sekundit",
|
||||||
"data": {
|
"take_over_control": "Käsitsi juhtimine: kui miski peale kohanduva valguse enda lültiab valgusti sisse ja see juba põleb, katkesta kohandamine kuni järgmise välise lülitamiseni.",
|
||||||
"initial_transition": "Algne üleminek kui valgustid lülituvad sisse/välja või unerežiim muutub",
|
"detect_non_ha_changes": "Märka väliseid lülitusi: kui mõni säte muutub üle 10% (isegi väljaspoolt HA juhituna) siis peab käsitsi juhtimine olema lubatud (kutsutakse 'homeassistant.update_entity')'interval'!)",
|
||||||
"only_once": "Ainult üks kord, rakendub ainult valgusti sisselülitamisel",
|
"only_once": "Ainult üks kord, rakendub ainult valgusti sisselülitamisel",
|
||||||
"prefer_rgb_color": "Eelista RGB värve, võimalusel kasuta RGB sätteid värvustemperatuuri asemel",
|
"separate_turn_on_commands": "Eraldi lülitused iga valiku (värvus, heledus jne.) sisselülitamiseks, mõned valgustid vajavad seda."
|
||||||
"separate_turn_on_commands": "Eraldi lülitused iga valiku (värvus, heledus jne.) sisselülitamiseks, mõned valgustid vajavad seda.",
|
},
|
||||||
"sunrise_offset": "Nihe päikesetõusust, +/- sekundit",
|
"data_description": {}
|
||||||
"sunrise_time": "Päikesetõusu aeg 'HH:MM:SS' vormingus. (Kui jätta tühjaks kasutatakse asukohajärgset)",
|
}
|
||||||
"sunset_offset": "Nihe päikeseloojangust, +/- sekundit",
|
|
||||||
"sunset_time": "Päikeseloojangu aeg 'HH:MM:SS' vormingus. (Kui jätta tühjaks kasutatakse asukohajärgset)",
|
|
||||||
"take_over_control": "Käsitsi juhtimine: kui miski peale kohanduva valguse enda lültiab valgusti sisse ja see juba põleb, katkesta kohandamine kuni järgmise välise lülitamiseni.",
|
|
||||||
"detect_non_ha_changes": "Märka väliseid lülitusi: kui mõni säte muutub üle 10% (isegi väljaspoolt HA juhituna) siis peab käsitsi juhtimine olema lubatud (kutsutakse 'homeassistant.update_entity')'interval'!)"
|
|
||||||
},
|
},
|
||||||
"data_description": {}
|
"data_description": {}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -138,60 +138,56 @@
|
||||||
"step": {
|
"step": {
|
||||||
"init": {
|
"init": {
|
||||||
"data_description": {
|
"data_description": {
|
||||||
"sleep_brightness": "Valojen kirkkausmäärä prosenteissa unitilassa (sleep mode).",
|
"interval": "Tiheys valojen mukauttamiseen sekunneissa. 🔄",
|
||||||
"transition": "Valojen siirtymän kesto sekunneissa, kun valaistusta muutetaan.",
|
"transition": "Valojen siirtymän kesto sekunneissa, kun valaistusta muutetaan.",
|
||||||
"sleep_color_temp": "Värilämpötila lepotilassa (käytetään, kun `sleep_rgb_or_color_temp` on `color_temp`) kelvineinä. 😴",
|
"sleep_brightness": "Valojen kirkkausmäärä prosenteissa unitilassa (sleep mode).",
|
||||||
"interval": "Tiheys valojen mukauttamiseen sekunneissa. 🔄"
|
"sleep_color_temp": "Värilämpötila lepotilassa (käytetään, kun `sleep_rgb_or_color_temp` on `color_temp`) kelvineinä. 😴"
|
||||||
},
|
},
|
||||||
"description": "Määritä Adaptive Lighting -komponentti. Vaihtoehtojen nimet vastaavat YAML-asetuksia. Jos olet määrittänyt tämän merkinnän YAML:ssa, tässä ei näy vaihtoehtoja. Interaktiiviset kaaviot, jotka esittelevät parametrien vaikutuksia, on [tässä verkkosovelluksessa](https://basnijholt.github.io/adaptive-lighting). Lisätietoja löytyy [virallisesta dokumentaatiosta](https://github.com/basnijholt/adaptive-lighting#readme).",
|
"description": "Määritä Adaptive Lighting -komponentti. Vaihtoehtojen nimet vastaavat YAML-asetuksia. Jos olet määrittänyt tämän merkinnän YAML:ssa, tässä ei näy vaihtoehtoja. Interaktiiviset kaaviot, jotka esittelevät parametrien vaikutuksia, on [tässä verkkosovelluksessa]({webapp_url}). Lisätietoja löytyy [virallisesta dokumentaatiosta]({docs_url}).",
|
||||||
"data": {
|
"data": {
|
||||||
"lights": "lights: Luettelo ohjattavista valon entity_ids:stä (voi olla tyhjä). 🌟",
|
"lights": "lights: Luettelo ohjattavista valon entity_ids:stä (voi olla tyhjä). 🌟",
|
||||||
"max_brightness": "max_brightness: Enimmäiskirkkausprosentti. 💡",
|
|
||||||
"max_color_temp": "max_color_temp: Kylmin värilämpötila kelvineinä. ❄️",
|
|
||||||
"min_brightness": "min_brightness: Vähittäiskirkkausprosentti. 💡",
|
"min_brightness": "min_brightness: Vähittäiskirkkausprosentti. 💡",
|
||||||
"min_color_temp": "min_color_temp: Lämpimin värilämpötila kelvineinä. 🔥"
|
"max_brightness": "max_brightness: Enimmäiskirkkausprosentti. 💡",
|
||||||
|
"min_color_temp": "min_color_temp: Lämpimin värilämpötila kelvineinä. 🔥",
|
||||||
|
"max_color_temp": "max_color_temp: Kylmin värilämpötila kelvineinä. ❄️"
|
||||||
},
|
},
|
||||||
"title": "Adaptive Lightingin vaihtoehdot",
|
"title": "Adaptive Lightingin vaihtoehdot",
|
||||||
"menu_options": {
|
"sections": {
|
||||||
"advanced": "Määritä lisäasetukset",
|
"advanced": {
|
||||||
"finish": "Tallenna ja lopeta"
|
"data": {
|
||||||
}
|
"prefer_rgb_color": "prefer_rgb_color: valitaanko RGB-värien säätö valon värilämpötilan sijaan, kun mahdollista. 🌈",
|
||||||
},
|
"transition_until_sleep": "shift_until_sleep: Kun käytössä, Adaptive Lighting käsittelee lepoasetukset miniminä ja siirtyy näihin arvoihin auringonlaskun jälkeen. 🌙",
|
||||||
"advanced": {
|
"take_over_control": "take_over_control: Poista mukautuva valaistus käytöstä, jos toinen lähde kutsuu `light.turn_on`, kun valot ovat päällä ja niitä mukautetaan. Huomaa, että tämä kutsuu `homeassistant.update_entity` joka `interval`! 🔒",
|
||||||
"title": "Lisäasetukset",
|
"detect_non_ha_changes": "detect_non_ha_changes: Havaitsee ja pysäyttää mukautukset ei-\"light.turn_on\" -tilanmuutoksille. Vaatii \"take_over_control\" käyttöönoton. 🕵️ Varoitus: ⚠️ Jotkut valot saatavat osoittaa virheellisesti 'on'-tilan, mikä voi johtaa valojen syttymiseen odottamatta. Poista tämä ominaisuus käytöstä, jos kohtaat tällaisia ongelmia.",
|
||||||
"description": "Määritä Adaptive Lightingin lisäasetukset. Useimpien käyttäjien ei tarvitse muuttaa näitä asetuksia.",
|
"only_once": "only_once: Mukauta valot vain, kun ne ovat päällä (\"true\") tai mukauta niitä jatkuvasti (\"false\"). 🔄",
|
||||||
"data": {
|
"adapt_only_on_bare_turn_on": "adapt_only_on_bare_turn_on: Kun valot sytytetään ensimmäisen kerran. Jos asetuksena on \"true\", Adaptive Lighting mukautuu vain, jos \"light.turn_on\" kutsutaan määrittelemättä väriä tai kirkkautta. ❌🌈 Tämä esimerkiksi estää mukautumisen näkymää aktivoitaessa. Jos \"false\", Adaptive Lighting mukautuu riippumatta siitä, onko alkuperäisessä \"service_data\"-arvossa väri tai kirkkaus. Vaatii \"take_over_control\":n käyttöönoton. 🕵️",
|
||||||
"adapt_only_on_bare_turn_on": "adapt_only_on_bare_turn_on: Kun valot sytytetään ensimmäisen kerran. Jos asetuksena on \"true\", Adaptive Lighting mukautuu vain, jos \"light.turn_on\" kutsutaan määrittelemättä väriä tai kirkkautta. ❌🌈 Tämä esimerkiksi estää mukautumisen näkymää aktivoitaessa. Jos \"false\", Adaptive Lighting mukautuu riippumatta siitä, onko alkuperäisessä \"service_data\"-arvossa väri tai kirkkaus. Vaatii \"take_over_control\":n käyttöönoton. 🕵️",
|
"separate_turn_on_commands": "separate_turn_on_commands: Käytä erillisiä `light.turn_on`-kutsuja värin ja kirkkauden määrittämiseksi, joita tarvitaan joissakin valotyypeissä. 🔀",
|
||||||
"multi_light_intercept": "multi_light_intercept: sieppaa ja mukauta light.turn_on-kutsut, jotka kohdistuvat useisiin valoihin. ➗⚠️ Tämä saattaa johtaa yksittäisen light.turn_on-kutsun jakamiseen useiksi kutsuiksi, esimerkiksi kun valot ovat eri kytkimissä. Vaadi `intercept`:n käyttöönotto.",
|
"skip_redundant_commands": "skip_redundant_commands: Ohita mukautuskomentojen lähettäminen, joiden kohdetila on jo yhtä suuri kuin valon tunnettu tila. Minimoi verkkoliikenteen ja parantaa mukautumisvastetta joissain tilanteissa. 📉 Poista käytöstä, jos fyysiset valotilat eivät ole synkronoitu kotiavustajan tallennetun tilan kanssa.",
|
||||||
"only_once": "only_once: Mukauta valot vain, kun ne ovat päällä (\"true\") tai mukauta niitä jatkuvasti (\"false\"). 🔄",
|
"intercept": "intercept: sieppaa ja mukauta \"light.turn_on\"-kutsut mahdollistamaan välitön värin ja kirkkauden mukauttaminen. 🏎️ Poista käytöstä valot, jotka eivät tue \"light.turn_on\" värin ja kirkkauden kanssa.",
|
||||||
"skip_redundant_commands": "skip_redundant_commands: Ohita mukautuskomentojen lähettäminen, joiden kohdetila on jo yhtä suuri kuin valon tunnettu tila. Minimoi verkkoliikenteen ja parantaa mukautumisvastetta joissain tilanteissa. 📉 Poista käytöstä, jos fyysiset valotilat eivät ole synkronoitu kotiavustajan tallennetun tilan kanssa.",
|
"multi_light_intercept": "multi_light_intercept: sieppaa ja mukauta light.turn_on-kutsut, jotka kohdistuvat useisiin valoihin. ➗⚠️ Tämä saattaa johtaa yksittäisen light.turn_on-kutsun jakamiseen useiksi kutsuiksi, esimerkiksi kun valot ovat eri kytkimissä. Vaadi `intercept`:n käyttöönotto.",
|
||||||
"take_over_control": "take_over_control: Poista mukautuva valaistus käytöstä, jos toinen lähde kutsuu `light.turn_on`, kun valot ovat päällä ja niitä mukautetaan. Huomaa, että tämä kutsuu `homeassistant.update_entity` joka `interval`! 🔒",
|
"include_config_in_attributes": "include_config_in_attributes: Näytä kaikki vaihtoehdot attribuutteina Kotiavustajan kytkimessä, kun asetuksena on \"true\". 📝"
|
||||||
"detect_non_ha_changes": "detect_non_ha_changes: Havaitsee ja pysäyttää mukautukset ei-\"light.turn_on\" -tilanmuutoksille. Vaatii \"take_over_control\" käyttöönoton. 🕵️ Varoitus: ⚠️ Jotkut valot saatavat osoittaa virheellisesti 'on'-tilan, mikä voi johtaa valojen syttymiseen odottamatta. Poista tämä ominaisuus käytöstä, jos kohtaat tällaisia ongelmia.",
|
},
|
||||||
"prefer_rgb_color": "prefer_rgb_color: valitaanko RGB-värien säätö valon värilämpötilan sijaan, kun mahdollista. 🌈",
|
"data_description": {
|
||||||
"transition_until_sleep": "shift_until_sleep: Kun käytössä, Adaptive Lighting käsittelee lepoasetukset miniminä ja siirtyy näihin arvoihin auringonlaskun jälkeen. 🌙",
|
"initial_transition": "Ensimmäisen siirtymän kesto sekunneissa, kun valot kytketään 'off'-tilasta 'on'-tilaan.",
|
||||||
"include_config_in_attributes": "include_config_in_attributes: Näytä kaikki vaihtoehdot attribuutteina Kotiavustajan kytkimessä, kun asetuksena on \"true\". 📝",
|
"sleep_rgb_or_color_temp": "Käytä joko `\"rgb_color\"` tai `\"color_temp\"` lepotilassa. 🌙",
|
||||||
"intercept": "intercept: sieppaa ja mukauta \"light.turn_on\"-kutsut mahdollistamaan välitön värin ja kirkkauden mukauttaminen. 🏎️ Poista käytöstä valot, jotka eivät tue \"light.turn_on\" värin ja kirkkauden kanssa.",
|
"sleep_rgb_color": "RGB-väri lepotilassa (käytetään, kun `sleep_rgb_or_color_temp` on \"rgb_color\"). 🌈",
|
||||||
"separate_turn_on_commands": "separate_turn_on_commands: Käytä erillisiä `light.turn_on`-kutsuja värin ja kirkkauden määrittämiseksi, joita tarvitaan joissakin valotyypeissä. 🔀"
|
"sleep_transition": "Siirtymän kesto, kun \"lepotila\" vaihdetaan sekunneiksi. 😴",
|
||||||
},
|
"sunrise_time": "Aseta kiinteä aika (TT:MM:SS) auringonnousulle. 🌅",
|
||||||
"data_description": {
|
"min_sunrise_time": "Aseta aikaisin virtuaalinen auringonnousuaika (TT:MM:SS), myöhempiä auringonnousuja sallien. 🌅",
|
||||||
"autoreset_control_seconds": "Resetoi manuaalisen ohjauksen automaattisesti määritetyn sekuntimäärän jälkeen. Aseta arvoon 0 jos et halua käyttää asetusta.",
|
"max_sunrise_time": "Aseta aikaisin virtuaalinen auringonnousuaika (TT:MM:SS), aikaisempia auringonnousuja sallien. 🌅",
|
||||||
"sunrise_offset": "Muuta auringonnousun aikaa positiivisella tai negatiivisella korjauksella määritettynä sekunneissa.",
|
"sunrise_offset": "Muuta auringonnousun aikaa positiivisella tai negatiivisella korjauksella määritettynä sekunneissa.",
|
||||||
"brightness_mode": "Kirkkaus-moodi jota käytetään. Mahdolliset arvot ovat `default`, `linear`, and `tanh` (käyttää arvoja `brightness_mode_time_dark` ja `brightness_mode_time_light`).",
|
"sunset_time": "Aseta kiinteä aika (TT:MM:SS) auringonlaskulle. 🌇",
|
||||||
"sunset_offset": "Muuta auringonlaskun aikaa positiivisella tai negatiivisella korjauksella määritettynä sekunneissa.",
|
"min_sunset_time": "Aseta aikaisin virtuaalinen auringonlaskuaika (TT:MM:SS), myöhempiä auringonlaskuja sallien. 🌅",
|
||||||
"initial_transition": "Ensimmäisen siirtymän kesto sekunneissa, kun valot kytketään 'off'-tilasta 'on'-tilaan.",
|
"max_sunset_time": "Aseta viimeisin virtuaalinen auringonlaskuaika (TT:MM:SS), jotta aikaisemmat auringonlaskut ovat mahdollisia. 🌇",
|
||||||
"send_split_delay": "Viive (ms) `separate_turn_on_commands` välillä valoille, jotka eivät tue yhtäaikaista kirkkauden ja värilämpötilan säätöä.",
|
"sunset_offset": "Muuta auringonlaskun aikaa positiivisella tai negatiivisella korjauksella määritettynä sekunneissa.",
|
||||||
"brightness_mode_time_dark": "(Ohitetaan, jos `brightness_mode='default'`) Kesto sekunteina kirkkauden lisäämiseen/vähentämiseen auringonnousun/auringonlaskun jälkeen/ennen. 📈📉.",
|
"brightness_mode": "Kirkkaus-moodi jota käytetään. Mahdolliset arvot ovat `default`, `linear`, and `tanh` (käyttää arvoja `brightness_mode_time_dark` ja `brightness_mode_time_light`).",
|
||||||
"adapt_delay": "Odotusaika (sekunteina) valon syttymisen ja Adaptive Lightingin muutosten käyttöönoton välillä. Saattaa auttaa välttämään välkkymistä. ⏲️",
|
"brightness_mode_time_dark": "(Ohitetaan, jos `brightness_mode='default'`) Kesto sekunteina kirkkauden lisäämiseen/vähentämiseen auringonnousun/auringonlaskun jälkeen/ennen. 📈📉.",
|
||||||
"sleep_transition": "Siirtymän kesto, kun \"lepotila\" vaihdetaan sekunneiksi. 😴",
|
"brightness_mode_time_light": "(Ohitetaan, jos `brightness_mode='default'`) Kesto sekunteina kirkkauden lisäämiseen/vähentämiseen auringonnousun/auringonlaskun jälkeen/ennen. 📈📉.",
|
||||||
"brightness_mode_time_light": "(Ohitetaan, jos `brightness_mode='default'`) Kesto sekunteina kirkkauden lisäämiseen/vähentämiseen auringonnousun/auringonlaskun jälkeen/ennen. 📈📉.",
|
"autoreset_control_seconds": "Resetoi manuaalisen ohjauksen automaattisesti määritetyn sekuntimäärän jälkeen. Aseta arvoon 0 jos et halua käyttää asetusta.",
|
||||||
"sleep_rgb_color": "RGB-väri lepotilassa (käytetään, kun `sleep_rgb_or_color_temp` on \"rgb_color\"). 🌈",
|
"send_split_delay": "Viive (ms) `separate_turn_on_commands` välillä valoille, jotka eivät tue yhtäaikaista kirkkauden ja värilämpötilan säätöä.",
|
||||||
"sunrise_time": "Aseta kiinteä aika (TT:MM:SS) auringonnousulle. 🌅",
|
"adapt_delay": "Odotusaika (sekunteina) valon syttymisen ja Adaptive Lightingin muutosten käyttöönoton välillä. Saattaa auttaa välttämään välkkymistä. ⏲️"
|
||||||
"sunset_time": "Aseta kiinteä aika (TT:MM:SS) auringonlaskulle. 🌇",
|
}
|
||||||
"min_sunset_time": "Aseta aikaisin virtuaalinen auringonlaskuaika (TT:MM:SS), myöhempiä auringonlaskuja sallien. 🌅",
|
}
|
||||||
"min_sunrise_time": "Aseta aikaisin virtuaalinen auringonnousuaika (TT:MM:SS), myöhempiä auringonnousuja sallien. 🌅",
|
|
||||||
"max_sunrise_time": "Aseta aikaisin virtuaalinen auringonnousuaika (TT:MM:SS), aikaisempia auringonnousuja sallien. 🌅",
|
|
||||||
"sleep_rgb_or_color_temp": "Käytä joko `\"rgb_color\"` tai `\"color_temp\"` lepotilassa. 🌙",
|
|
||||||
"max_sunset_time": "Aseta viimeisin virtuaalinen auringonlaskuaika (TT:MM:SS), jotta aikaisemmat auringonlaskut ovat mahdollisia. 🌇"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,10 @@
|
||||||
"data": {
|
"data": {
|
||||||
"name": "Nom"
|
"name": "Nom"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"menu": {
|
||||||
|
"title": "Créer ou dupliquer",
|
||||||
|
"description": "Voulez-vous créer une nouvelle instance, ou dupliquer une existante ?"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"abort": {
|
"abort": {
|
||||||
|
|
@ -18,70 +22,66 @@
|
||||||
"step": {
|
"step": {
|
||||||
"init": {
|
"init": {
|
||||||
"title": "Options d'éclairage adaptatif",
|
"title": "Options d'éclairage adaptatif",
|
||||||
"description": "Configurer un composant d'éclairage adaptatif. Les noms correspondent aux paramètres YAML. Si vous avez défini cette entrée en YAML, aucune option n'apparaît ici. Pour les graphiques interactifs qui montrent les effets des paramètres, visiter [cette application web](https://basnijholt.github.io/adaptive-lighting). Pour plus de détail, voir la [documentation](https://github.com/basnijholt/adaptive-lighting#readme)",
|
"description": "Configurer un composant d'éclairage adaptatif. Les noms correspondent aux paramètres YAML. Si vous avez défini cette entrée en YAML, aucune option n'apparaît ici. Pour les graphiques interactifs qui montrent les effets des paramètres, visiter [cette application web]({webapp_url}). Pour plus de détail, voir la [documentation]({docs_url})",
|
||||||
"data": {
|
"data": {
|
||||||
"lights": "lights : Liste d'\"entity_ids\" de lumières à controller (peu être vide). 🌟",
|
"lights": "lights : Liste d'\"entity_ids\" de lumières à controller (peu être vide). 🌟",
|
||||||
"interval": "interval : Temps (en secondes) entre deux mises à jour du commutateur.",
|
"interval": "interval : Temps (en secondes) entre deux mises à jour du commutateur.",
|
||||||
"max_brightness": "max_brightness : Luminosité maximum (en pourcentage). 💡",
|
"transition": "transition : Durée de la transition (en secondes) des changements appliqués aux lampes.",
|
||||||
"max_color_temp": "max_color_temp : Couleur la plus froide (en Kelvins). ❄️",
|
|
||||||
"min_brightness": "min_brightness : Luminosité minimale en pourcentage. 💡",
|
"min_brightness": "min_brightness : Luminosité minimale en pourcentage. 💡",
|
||||||
|
"max_brightness": "max_brightness : Luminosité maximum (en pourcentage). 💡",
|
||||||
"min_color_temp": "min_color_temp : Couleur de température la plus chaude en kelvins. 🔥",
|
"min_color_temp": "min_color_temp : Couleur de température la plus chaude en kelvins. 🔥",
|
||||||
|
"max_color_temp": "max_color_temp : Couleur la plus froide (en Kelvins). ❄️",
|
||||||
"sleep_brightness": "sleep_brightness : Luminosité (en pourcentage) du mode nuit.",
|
"sleep_brightness": "sleep_brightness : Luminosité (en pourcentage) du mode nuit.",
|
||||||
"sleep_color_temp": "sleep_color_temp : Température de couleur (en kelvins) du mode nuit.",
|
"sleep_color_temp": "sleep_color_temp : Température de couleur (en kelvins) du mode nuit."
|
||||||
"transition": "transition : Durée de la transition (en secondes) des changements appliqués aux lampes."
|
|
||||||
},
|
},
|
||||||
"data_description": {
|
"data_description": {
|
||||||
"interval": "Fréquence d'adaptation des lumières, en secondes. 🔄",
|
"interval": "Fréquence d'adaptation des lumières, en secondes. 🔄",
|
||||||
|
"transition": "Durée de la transition des changements lumineux, en secondes. 🕑",
|
||||||
"sleep_brightness": "Pourcentage de luminosité des lumières en mode nuit. 😴",
|
"sleep_brightness": "Pourcentage de luminosité des lumières en mode nuit. 😴",
|
||||||
"sleep_color_temp": "Température de couleur en mode nuit en Kelvin (utilisée lorsque \"sleep_rgb_or_color_temp\" est égaler à \"color_temp\") . 😴",
|
"sleep_color_temp": "Température de couleur en mode nuit en Kelvin (utilisée lorsque \"sleep_rgb_or_color_temp\" est égaler à \"color_temp\") . 😴"
|
||||||
"transition": "Durée de la transition des changements lumineux, en secondes. 🕑"
|
|
||||||
},
|
},
|
||||||
"menu_options": {
|
"sections": {
|
||||||
"advanced": "Configurer les options avancées",
|
"advanced": {
|
||||||
"finish": "Enregistrer et terminer"
|
"data": {
|
||||||
}
|
"initial_transition": "initial_transition : Transition (en secondes) lorsque l'état d'une lampe passe d'« éteinte » à « allumée ».",
|
||||||
},
|
"prefer_rgb_color": "prefer_rgb_color : Indique s'il est préférable d'utiliser le réglage de couleur RBG plutôt que la température de couleur lorsque cela est possible. 🌈",
|
||||||
"advanced": {
|
"sleep_transition": "sleep_transition : Transition (en secondes) lorsque « sleep_state » est commuté.",
|
||||||
"title": "Paramètres avancés",
|
"transition_until_sleep": "transition_until_sleep : Lorsque cela est activée, l'éclairage Adaptatif considérera les paramètres du mode nuit comme le minimum, effectuant la transition vers ces valeurs après le coucher du soleil. 🌙",
|
||||||
"description": "Configurez les options avancées de l'éclairage adaptatif. La plupart des utilisateurs n'ont pas besoin de modifier ces paramètres.",
|
"sunrise_time": "sunrise_time : Heure (HH:MM:SS) du lever du soleil. Si « None », utilise l'heure correspondant à votre emplacement.",
|
||||||
"data": {
|
"sunrise_offset": "sunrise_offset : Décalage (en secondes [- : passé, + : futur]) du cycle par rapport au lever du soleil.",
|
||||||
"initial_transition": "initial_transition : Transition (en secondes) lorsque l'état d'une lampe passe d'« éteinte » à « allumée ».",
|
"sunset_time": "sunset_time : Heure (HH:MM:SS) du coucher du soleil. Si « None », utilise l'heure correspondant à votre emplacement.",
|
||||||
"sleep_transition": "sleep_transition : Transition (en secondes) lorsque « sleep_state » est commuté.",
|
"sunset_offset": "sunset_offset : Décalage (en secondes [- : passé, + : futur]) du cycle par rapport au coucher du soleil.",
|
||||||
"only_once": "only_once : Adapter les lampes uniquement au moment où elles sont allumées. 🔄",
|
"take_over_control": "take_over_control : Désactive l'éclairage adaptatif si une autre source appelle \"light.turn_on\" pendant que la lumière est allumée ou adoptée. Notez que cela appelle \"homeassistant.update_entity\" chaque \"interval\"! 🔒",
|
||||||
"prefer_rgb_color": "prefer_rgb_color : Indique s'il est préférable d'utiliser le réglage de couleur RBG plutôt que la température de couleur lorsque cela est possible. 🌈",
|
"detect_non_ha_changes": "detect_non_ha_changes : Détecter et arrête les changement d'états autre que \"light.turn_on\". Nécessite que \"take_over_control\" soit activé. 🕵️ Attention : ⚠️ Certaines lumière peuvent faussement indiqué un état \"on\", ce qui pourrait occasionner des lumières s'allumant de façon inattendu. Désactivez cette fonctionnalité si vous rencontrez de tels problème.",
|
||||||
"separate_turn_on_commands": "separate_turn_on_commands : Utiliser des appels \"light.turn_on\" séparés pour la couleur et la luminosité, nécessaires pour certains types de lumière. 🔀",
|
"only_once": "only_once : Adapter les lampes uniquement au moment où elles sont allumées. 🔄",
|
||||||
"sunrise_offset": "sunrise_offset : Décalage (en secondes [- : passé, + : futur]) du cycle par rapport au lever du soleil.",
|
"adapt_only_on_bare_turn_on": "adapt_only_on_bare_turn_on: Lors de l'allumage initiale des lumières. Si le paramètre est \"vrai\", AL s'adapte uniquement si l'on invoque \"light.turn_on\" sans préciser la couleur ou la luminosité. ❌🌈 Ceci, par exemple, empêche l'adaptation lors de l'activation d'une scène. Si \"false\", AL adapte indépendamment de la présence de couleur ou de luminosité dans le \"service_data\" initial. \"take_over_control\" doit être activé. 🕵",
|
||||||
"sunrise_time": "sunrise_time : Heure (HH:MM:SS) du lever du soleil. Si « None », utilise l'heure correspondant à votre emplacement.",
|
"separate_turn_on_commands": "separate_turn_on_commands : Utiliser des appels \"light.turn_on\" séparés pour la couleur et la luminosité, nécessaires pour certains types de lumière. 🔀",
|
||||||
"sunset_offset": "sunset_offset : Décalage (en secondes [- : passé, + : futur]) du cycle par rapport au coucher du soleil.",
|
"skip_redundant_commands": "skip_redundant_commands : Évite d'envoyer des commandes d'adaptation lorsque l'état cible est déjà égal à l'état connu de la lumière. Minimise le trafic réseau et améliore la réactivité de l'adaptation dans certaines situations. 📉 Désactivez si les états physiques des lumières ne correspondent pas à l'état enregistré de Home Assistant.",
|
||||||
"sunset_time": "sunset_time : Heure (HH:MM:SS) du coucher du soleil. Si « None », utilise l'heure correspondant à votre emplacement.",
|
"intercept": "intercept : Intercepter et adapter les appels à \"light.turn_on\" pour permettre une adaptation instantanée de la couleur et de la luminosité. 🏎️ Désactivez cette option pour les lumières qui ne prennent pas en charge \"light.turn_on\" avec couleur et luminosité.",
|
||||||
"take_over_control": "take_over_control : Désactive l'éclairage adaptatif si une autre source appelle \"light.turn_on\" pendant que la lumière est allumée ou adoptée. Notez que cela appelle \"homeassistant.update_entity\" chaque \"interval\"! 🔒",
|
"multi_light_intercept": "multi_light_intercept : Intercepte et adapte les appels à \"light.turn_on\" qui ciblent plusieurs lumières. ➗⚠️ Cela peut entraîner la division d'un seul appel \"light.turn_on\" en plusieurs appels, par exemple, lorsque les lumières sont dans différents interrupteurs. Nécessite que \"intercept\" soit activé.",
|
||||||
"detect_non_ha_changes": "detect_non_ha_changes : Détecter et arrête les changement d'états autre que \"light.turn_on\". Nécessite que \"take_over_control\" soit activé. 🕵️ Attention : ⚠️ Certaines lumière peuvent faussement indiqué un état \"on\", ce qui pourrait occasionner des lumières s'allumant de façon inattendu. Désactivez cette fonctionnalité si vous rencontrez de tels problème.",
|
"include_config_in_attributes": "include_config_in_attributes : Afficher toutes les options en tant qu'attributs sur l'interrupteur dans Home Assistant lorsqu'il est défini sur \"true\". 📝"
|
||||||
"adapt_only_on_bare_turn_on": "adapt_only_on_bare_turn_on: Lors de l'allumage initiale des lumières. Si le paramètre est \"vrai\", AL s'adapte uniquement si l'on invoque \"light.turn_on\" sans préciser la couleur ou la luminosité. ❌🌈 Ceci, par exemple, empêche l'adaptation lors de l'activation d'une scène. Si \"false\", AL adapte indépendamment de la présence de couleur ou de luminosité dans le \"service_data\" initial. \"take_over_control\" doit être activé. 🕵",
|
},
|
||||||
"multi_light_intercept": "multi_light_intercept : Intercepte et adapte les appels à \"light.turn_on\" qui ciblent plusieurs lumières. ➗⚠️ Cela peut entraîner la division d'un seul appel \"light.turn_on\" en plusieurs appels, par exemple, lorsque les lumières sont dans différents interrupteurs. Nécessite que \"intercept\" soit activé.",
|
"data_description": {
|
||||||
"intercept": "intercept : Intercepter et adapter les appels à \"light.turn_on\" pour permettre une adaptation instantanée de la couleur et de la luminosité. 🏎️ Désactivez cette option pour les lumières qui ne prennent pas en charge \"light.turn_on\" avec couleur et luminosité.",
|
"initial_transition": "Durée de la première transition des lampes passent de \"off\" à \"on\" (en secondes). ⏲️",
|
||||||
"include_config_in_attributes": "include_config_in_attributes : Afficher toutes les options en tant qu'attributs sur l'interrupteur dans Home Assistant lorsqu'il est défini sur \"true\". 📝",
|
"sleep_rgb_or_color_temp": "Utilisez soit \"rgb_color\" soit \"color_temp\" en mode nuit. 🌙",
|
||||||
"skip_redundant_commands": "skip_redundant_commands : Évite d'envoyer des commandes d'adaptation lorsque l'état cible est déjà égal à l'état connu de la lumière. Minimise le trafic réseau et améliore la réactivité de l'adaptation dans certaines situations. 📉 Désactivez si les états physiques des lumières ne correspondent pas à l'état enregistré de Home Assistant.",
|
"sleep_rgb_color": "Couleur RGB en mode nuit (utilisée lorsque \"sleep_rgb_or_color_temp\" est \"rgb_color\"). 🌈",
|
||||||
"transition_until_sleep": "transition_until_sleep : Lorsque cela est activée, l'éclairage Adaptatif considérera les paramètres du mode nuit comme le minimum, effectuant la transition vers ces valeurs après le coucher du soleil. 🌙"
|
"sleep_transition": "Durée de la transition quand le \"mode nuit\" est déclenché. (en secondes) 😴",
|
||||||
},
|
"sunrise_time": "Définir une heure fixe (HH:MM:SS) pour le lever du soleil. 🌅",
|
||||||
"data_description": {
|
"min_sunrise_time": "Définir l'heure virtuelle de lever du soleil la plus précoce (HH:MM:SS), permettant des levers de soleil tardifs. 🌅",
|
||||||
"autoreset_control_seconds": "Réinitialiser automatiquement la commande manuelle après un certain nombre de secondes. Définir à 0 pour désactiver. ⏲️",
|
"max_sunrise_time": "Définir l'heure virtuelle de lever du soleil la plus tardive (HH:MM:SS), permettant des levers de soleil plus tôt. 🌅",
|
||||||
"sunset_offset": "Réglez le l'heure de coucher du soleil avec un décalage positif ou négatif en quelques secondes. ⏰",
|
"sunrise_offset": "Ajuster l'heure du lever de soleil avec un décalage positif ou négatif en secondes. ⏰",
|
||||||
"brightness_mode": "Mode de luminosité à utiliser. Les valeurs possibles sont \"défaut\" , \"linear\" (linéaire) et \"tanh\" (tangente) utilise \"brightness_mode_time_dark\" et \"brightness_mode_time_light\". 📈",
|
"sunset_time": "Définir une heure fixe (HH:MM:SS) pour le coucher du soleil. 🌇",
|
||||||
"send_split_delay": "Délai (ms) entre \"separate_turn_on_commands\" pour les lumières qui ne supportent pas la commande de luminosité et le réglage de couleur en même temps. ⏲️",
|
"min_sunset_time": "Définir l'heure virtuelle de coucher du soleil la plus précoce (HH:MM:SS), permettant des couchers de soleil tardifs. 🌇",
|
||||||
"sunrise_offset": "Ajuster l'heure du lever de soleil avec un décalage positif ou négatif en secondes. ⏰",
|
"max_sunset_time": "Définir l'heure virtuelle de coucher du soleil la plus tardive (HH:MM:SS), permettant des couchers de soleil plus précoces. 🌇",
|
||||||
"initial_transition": "Durée de la première transition des lampes passent de \"off\" à \"on\" (en secondes). ⏲️",
|
"sunset_offset": "Réglez le l'heure de coucher du soleil avec un décalage positif ou négatif en quelques secondes. ⏰",
|
||||||
"sleep_transition": "Durée de la transition quand le \"mode nuit\" est déclenché. (en secondes) 😴",
|
"brightness_mode": "Mode de luminosité à utiliser. Les valeurs possibles sont \"défaut\" , \"linear\" (linéaire) et \"tanh\" (tangente) utilise \"brightness_mode_time_dark\" et \"brightness_mode_time_light\". 📈",
|
||||||
"min_sunset_time": "Définir l'heure virtuelle de coucher du soleil la plus précoce (HH:MM:SS), permettant des couchers de soleil tardifs. 🌇",
|
"brightness_mode_time_dark": "(Ignoré si \"brightness_mode='default'\") La durée en secondes pour augmenter/diminuer progressivement la luminosité après/avant le lever/coucher du soleil. 📈📉.",
|
||||||
"sleep_rgb_color": "Couleur RGB en mode nuit (utilisée lorsque \"sleep_rgb_or_color_temp\" est \"rgb_color\"). 🌈",
|
"brightness_mode_time_light": "(Ignoré si \"brightness_mode='default'\") La durée en secondes pour augmenter/diminuer progressivement la luminosité après/avant le lever/coucher du soleil. 📈📉.",
|
||||||
"brightness_mode_time_light": "(Ignoré si \"brightness_mode='default'\") La durée en secondes pour augmenter/diminuer progressivement la luminosité après/avant le lever/coucher du soleil. 📈📉.",
|
"autoreset_control_seconds": "Réinitialiser automatiquement la commande manuelle après un certain nombre de secondes. Définir à 0 pour désactiver. ⏲️",
|
||||||
"sunset_time": "Définir une heure fixe (HH:MM:SS) pour le coucher du soleil. 🌇",
|
"send_split_delay": "Délai (ms) entre \"separate_turn_on_commands\" pour les lumières qui ne supportent pas la commande de luminosité et le réglage de couleur en même temps. ⏲️",
|
||||||
"sunrise_time": "Définir une heure fixe (HH:MM:SS) pour le lever du soleil. 🌅",
|
"adapt_delay": "Temps d'attente (en secondes) entre l'allumage de la lumière et l'application des changements par l'Éclairage Adaptatif. Peut aider à éviter les scintillements. ⏲️"
|
||||||
"brightness_mode_time_dark": "(Ignoré si \"brightness_mode='default'\") La durée en secondes pour augmenter/diminuer progressivement la luminosité après/avant le lever/coucher du soleil. 📈📉.",
|
}
|
||||||
"sleep_rgb_or_color_temp": "Utilisez soit \"rgb_color\" soit \"color_temp\" en mode nuit. 🌙",
|
}
|
||||||
"min_sunrise_time": "Définir l'heure virtuelle de lever du soleil la plus précoce (HH:MM:SS), permettant des levers de soleil tardifs. 🌅",
|
|
||||||
"adapt_delay": "Temps d'attente (en secondes) entre l'allumage de la lumière et l'application des changements par l'Éclairage Adaptatif. Peut aider à éviter les scintillements. ⏲️",
|
|
||||||
"max_sunset_time": "Définir l'heure virtuelle de coucher du soleil la plus tardive (HH:MM:SS), permettant des couchers de soleil plus précoces. 🌇",
|
|
||||||
"max_sunrise_time": "Définir l'heure virtuelle de lever du soleil la plus tardive (HH:MM:SS), permettant des levers de soleil plus tôt. 🌅"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -3,25 +3,21 @@
|
||||||
"step": {
|
"step": {
|
||||||
"init": {
|
"init": {
|
||||||
"data_description": {
|
"data_description": {
|
||||||
"sleep_brightness": "Porcentaxe de brillo das luces en modo durmir. 😴",
|
"interval": "Frecuencia para adaptar as luces, en segundos. 🔄",
|
||||||
"interval": "Frecuencia para adaptar as luces, en segundos. 🔄"
|
"sleep_brightness": "Porcentaxe de brillo das luces en modo durmir. 😴"
|
||||||
},
|
},
|
||||||
"title": "Configuración de Iluminación Adaptativa",
|
"title": "Configuración de Iluminación Adaptativa",
|
||||||
"menu_options": {
|
"sections": {
|
||||||
"advanced": "Configurar opcións avanzadas",
|
"advanced": {
|
||||||
"finish": "Gardar e rematar"
|
"data": {},
|
||||||
|
"data_description": {
|
||||||
|
"sunrise_offset": "Axusta a hora do amencer cun desfasamento positivo ou negativo en segundos. ⏰",
|
||||||
|
"sunset_offset": "Axusta a hora da posta de sol cun desfasamento positivo ou negativo en segundos. ⏰",
|
||||||
|
"send_split_delay": "Retraso (ms) entre `separate_turn_on_commands`"
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"data": {}
|
"data": {}
|
||||||
},
|
|
||||||
"advanced": {
|
|
||||||
"title": "Configuración avanzada",
|
|
||||||
"description": "Configura as opcións avanzadas de Adaptive Lighting. A maioría dos usuarios non precisan cambiar esta configuración.",
|
|
||||||
"data": {},
|
|
||||||
"data_description": {
|
|
||||||
"send_split_delay": "Retraso (ms) entre `separate_turn_on_commands`",
|
|
||||||
"sunrise_offset": "Axusta a hora do amencer cun desfasamento positivo ou negativo en segundos. ⏰",
|
|
||||||
"sunset_offset": "Axusta a hora da posta de sol cun desfasamento positivo ou negativo en segundos. ⏰"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -5,20 +5,16 @@
|
||||||
"title": "Opcije prilagodljivog osvjetljenja",
|
"title": "Opcije prilagodljivog osvjetljenja",
|
||||||
"data_description": {},
|
"data_description": {},
|
||||||
"data": {},
|
"data": {},
|
||||||
"menu_options": {
|
"sections": {
|
||||||
"advanced": "Configure advanced options",
|
"advanced": {
|
||||||
"finish": "Save and finish"
|
"data": {
|
||||||
}
|
"adapt_only_on_bare_turn_on": "adapt_only_on_bare_turn_on: Prilikom početnog paljenja svjetla. Ako je postavljeno na \"true\", AL se prilagođava samo ako se \"light.turn_on\" pozove bez navođenja boje ili svjetline. ❌🌈 Ovo npr. sprječava prilagodbu prilikom aktiviranja scene. Ako je \"false\", AL se prilagođava bez obzira na prisutnost boje ili svjetline u početnim \"service_data\". Potrebno je omogućiti `take_over_control`. 🕵️ "
|
||||||
},
|
},
|
||||||
"advanced": {
|
"data_description": {
|
||||||
"title": "Advanced Settings",
|
"sunrise_offset": "Podesite vrijeme izlaska sunca s pozitivnim ili negativnim pomakom u sekundama. ⏰",
|
||||||
"description": "Configure advanced Adaptive Lighting options. Most users don't need to change these settings.",
|
"sunset_offset": "Podesite vrijeme izlaska sunca s pozitivnim ili negativnim pomakom u sekundama. ⏰"
|
||||||
"data": {
|
}
|
||||||
"adapt_only_on_bare_turn_on": "adapt_only_on_bare_turn_on: Prilikom početnog paljenja svjetla. Ako je postavljeno na \"true\", AL se prilagođava samo ako se \"light.turn_on\" pozove bez navođenja boje ili svjetline. ❌🌈 Ovo npr. sprječava prilagodbu prilikom aktiviranja scene. Ako je \"false\", AL se prilagođava bez obzira na prisutnost boje ili svjetline u početnim \"service_data\". Potrebno je omogućiti `take_over_control`. 🕵️ "
|
}
|
||||||
},
|
|
||||||
"data_description": {
|
|
||||||
"sunrise_offset": "Podesite vrijeme izlaska sunca s pozitivnim ili negativnim pomakom u sekundama. ⏰",
|
|
||||||
"sunset_offset": "Podesite vrijeme izlaska sunca s pozitivnim ili negativnim pomakom u sekundama. ⏰"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -3,60 +3,56 @@
|
||||||
"step": {
|
"step": {
|
||||||
"init": {
|
"init": {
|
||||||
"data_description": {
|
"data_description": {
|
||||||
"sleep_color_temp": "Színhőmérséklet alvó üzemmódban (amikor a `sleep_rgb_or_color_temp` értéke `color_temp`) Kelvinben megadva. 😴",
|
|
||||||
"sleep_brightness": "Az alvó üzemmódban lévő lights fényerejének százalékos értéke. 😴",
|
|
||||||
"interval": "Gyakoriság a lights illesztéséhez, másodpercekben. 🔄",
|
"interval": "Gyakoriság a lights illesztéséhez, másodpercekben. 🔄",
|
||||||
"transition": "Az transition időtartama, amikor a lights változnak, másodpercben. 🕑"
|
"transition": "Az transition időtartama, amikor a lights változnak, másodpercben. 🕑",
|
||||||
|
"sleep_brightness": "Az alvó üzemmódban lévő lights fényerejének százalékos értéke. 😴",
|
||||||
|
"sleep_color_temp": "Színhőmérséklet alvó üzemmódban (amikor a `sleep_rgb_or_color_temp` értéke `color_temp`) Kelvinben megadva. 😴"
|
||||||
},
|
},
|
||||||
"data": {
|
"data": {
|
||||||
"max_brightness": "max_brightness: Maximális fényerő százalékban megadva. 💡",
|
|
||||||
"max_color_temp": "max_color_temp: A leghidegebb színhőmérséklet kelvinben. ❄️",
|
|
||||||
"lights": "lights: Az entity_id-k listája, amelyeket az AL vezéreljen (üresen is maradhat).🌟",
|
"lights": "lights: Az entity_id-k listája, amelyeket az AL vezéreljen (üresen is maradhat).🌟",
|
||||||
"min_brightness": "min_brightness: Minimális fényerő százalékban. 💡",
|
"min_brightness": "min_brightness: Minimális fényerő százalékban. 💡",
|
||||||
"min_color_temp": "min_color_temp: A legmelegebb színhőmérséklet Kelvinben. 🔥"
|
"max_brightness": "max_brightness: Maximális fényerő százalékban megadva. 💡",
|
||||||
|
"min_color_temp": "min_color_temp: A legmelegebb színhőmérséklet Kelvinben. 🔥",
|
||||||
|
"max_color_temp": "max_color_temp: A leghidegebb színhőmérséklet kelvinben. ❄️"
|
||||||
},
|
},
|
||||||
"title": "Adaptív világítás beállításai",
|
"title": "Adaptív világítás beállításai",
|
||||||
"description": "Egy Adaptív világítás komponens konfigurálása. Az opciók nevei a YAML-beállításokhoz igazodnak. Ha ezt a bejegyzést YAML-ben definiálta, itt nem jelennek meg beállítások. A paraméterek hatásait bemutató interaktív grafikonokért látogasson el [erre a webes alkalmazásra](https://basnijholt.github.io/adaptive-lighting). További részletekért olvasd el a [hivatalos dokumentációt](https://github.com/basnijholt/adaptive-lighting#readme).",
|
"description": "Egy Adaptív világítás komponens konfigurálása. Az opciók nevei a YAML-beállításokhoz igazodnak. Ha ezt a bejegyzést YAML-ben definiálta, itt nem jelennek meg beállítások. A paraméterek hatásait bemutató interaktív grafikonokért látogasson el [erre a webes alkalmazásra]({webapp_url}). További részletekért olvasd el a [hivatalos dokumentációt]({docs_url}).",
|
||||||
"menu_options": {
|
"sections": {
|
||||||
"advanced": "Speciális beállítások konfigurálása",
|
"advanced": {
|
||||||
"finish": "Mentés és befejezés"
|
"data": {
|
||||||
}
|
"prefer_rgb_color": "prefer_rgb_color: Lehetőség szerint az RGB színbeállítás előnyben részesítése a fény színhőmérsékletével szemben. 🌈",
|
||||||
},
|
"transition_until_sleep": "transition_until_sleep: Ha engedélyezve van, az Adaptív világítás az alvó mód beállításokat minimálisnak tekinti, és napnyugta után ezekre az értékekre vált át. 🌙",
|
||||||
"advanced": {
|
"take_over_control": "take_over_control: Adaptív világítás kikapcsolása, amennyiben más forrásból érkező `Világítás: Bekapcsolás` szolgáltatás hívás történik, miközben a fények be vannak kapcsolva és illesztve vannak. Vegye figyelembe, hogy ez minden `interval`-ban meghívja a `homeassistant.update_entity`-t! 🔒",
|
||||||
"title": "Speciális beállítások",
|
"detect_non_ha_changes": "detect_non_ha_changes: `Világítás: Bekapcsolás`- szolgáltatás meghívástól eltérő állapotváltozások esetén észleli és leállítja az illesztéseket. A `take_over_control` beállítás engedélyezése szükséges. 🕵️ Vigyázat: ⚠️ Egyes lights tévesen jelezhetik a \"bekapcsolt\" állapotot, ami váratlanul bekapcsolódó lámpákhoz vezethet. Ha ilyen problémákat tapasztal, tiltsa le ezt a funkciót.",
|
||||||
"description": "Az Adaptive Lighting speciális beállításainak konfigurálása. A legtöbb felhasználónak nem kell módosítania ezeket a beállításokat.",
|
"only_once": "only_once: lights illesztése kizárólag, amikor azok be vannak kapcsolva (`igaz`) vagy tartsa folyamatosan illesztve őket (`false`). 🔄",
|
||||||
"data": {
|
"adapt_only_on_bare_turn_on": "adapt_only_on_bare_turn_on: Kizárólag a bekapcsoláskor érvényes. A beállítást \"igaz\"-ra állítva, az AL csak akkor végzi az illesztést, amennyiben a \"Világítás: Bekapcsolás\" szolgáltatás meghívása a szín és fényerő paraméterek megadása nélkül történik.❌🌈 Ez pl. alkalmas az illesztés felfüggesztésére egy jelenet aktiválásakor. \"Hamis\" beállítás esetén az AL elvégzi a kezdeti illesztést a szín és fényerő paraméterek meghívásától függetlenül. A használatához engedélyezve kell lennie a \"take_over_control\" beállításnak. 🕵️",
|
||||||
"detect_non_ha_changes": "detect_non_ha_changes: `Világítás: Bekapcsolás`- szolgáltatás meghívástól eltérő állapotváltozások esetén észleli és leállítja az illesztéseket. A `take_over_control` beállítás engedélyezése szükséges. 🕵️ Vigyázat: ⚠️ Egyes lights tévesen jelezhetik a \"bekapcsolt\" állapotot, ami váratlanul bekapcsolódó lámpákhoz vezethet. Ha ilyen problémákat tapasztal, tiltsa le ezt a funkciót.",
|
"separate_turn_on_commands": "separate_turn_on_commands: Elkülönített `Világítás: Bekapcsolás` hívásokat használ a szín és a fényerő beállításához, ami néhány világítás típusnál szükséges. 🔀",
|
||||||
"multi_light_intercept": "multi_light_intercept: `Világítás: Bekapcsolás` szolgáltatás hívások elfogása és adaptálása, amelyek több fényt céloznak meg. ➗⚠️ Ez azt eredményezheti, hogy egyetlen `Világítás: Bekapcsolás` szolgáltatás hívás több hívásra oszlik fel, pl. ha a lights különböző kapcsolókban vannak. Az `elfogás` engedélyezése szükséges.",
|
"skip_redundant_commands": "skip_redundant_commands: Az olyan adaptációs parancsok küldésének kihagyása, amelyek célállapota már megegyezik a fény ismert állapotával. Minimalizálja a hálózati forgalmat, és bizonyos helyzetekben javítja az adaptációs reakciókészséget. 📉Kapcsolja ki, ha a fizikai fényállapotok nem szinkronizálódnak a HA rögzített állapotával.",
|
||||||
"adapt_only_on_bare_turn_on": "adapt_only_on_bare_turn_on: Kizárólag a bekapcsoláskor érvényes. A beállítást \"igaz\"-ra állítva, az AL csak akkor végzi az illesztést, amennyiben a \"Világítás: Bekapcsolás\" szolgáltatás meghívása a szín és fényerő paraméterek megadása nélkül történik.❌🌈 Ez pl. alkalmas az illesztés felfüggesztésére egy jelenet aktiválásakor. \"Hamis\" beállítás esetén az AL elvégzi a kezdeti illesztést a szín és fényerő paraméterek meghívásától függetlenül. A használatához engedélyezve kell lennie a \"take_over_control\" beállításnak. 🕵️",
|
"intercept": "elfogás: `Világítás: Bekapcsolás` szolgáltatás hívások elfogása és adaptálása a színek és a fényerő azonnali illesztésének lehetővé tétele érdekében. 🏎️ Letiltja az olyan lights esetében, amelyek nem támogatják a `Világítás: Bekapcsolás` szolgáltatás színnel és fényerővel történő szín- és fényerőszabályozását.",
|
||||||
"skip_redundant_commands": "skip_redundant_commands: Az olyan adaptációs parancsok küldésének kihagyása, amelyek célállapota már megegyezik a fény ismert állapotával. Minimalizálja a hálózati forgalmat, és bizonyos helyzetekben javítja az adaptációs reakciókészséget. 📉Kapcsolja ki, ha a fizikai fényállapotok nem szinkronizálódnak a HA rögzített állapotával.",
|
"multi_light_intercept": "multi_light_intercept: `Világítás: Bekapcsolás` szolgáltatás hívások elfogása és adaptálása, amelyek több fényt céloznak meg. ➗⚠️ Ez azt eredményezheti, hogy egyetlen `Világítás: Bekapcsolás` szolgáltatás hívás több hívásra oszlik fel, pl. ha a lights különböző kapcsolókban vannak. Az `elfogás` engedélyezése szükséges.",
|
||||||
"separate_turn_on_commands": "separate_turn_on_commands: Elkülönített `Világítás: Bekapcsolás` hívásokat használ a szín és a fényerő beállításához, ami néhány világítás típusnál szükséges. 🔀",
|
"include_config_in_attributes": "include_config_in_attributes: A kapcsoló összes opciójának attribútumként való megjelenítése a Home Assistantben, ha a beállítás értéke `igaz`. 📝"
|
||||||
"prefer_rgb_color": "prefer_rgb_color: Lehetőség szerint az RGB színbeállítás előnyben részesítése a fény színhőmérsékletével szemben. 🌈",
|
},
|
||||||
"intercept": "elfogás: `Világítás: Bekapcsolás` szolgáltatás hívások elfogása és adaptálása a színek és a fényerő azonnali illesztésének lehetővé tétele érdekében. 🏎️ Letiltja az olyan lights esetében, amelyek nem támogatják a `Világítás: Bekapcsolás` szolgáltatás színnel és fényerővel történő szín- és fényerőszabályozását.",
|
"data_description": {
|
||||||
"only_once": "only_once: lights illesztése kizárólag, amikor azok be vannak kapcsolva (`igaz`) vagy tartsa folyamatosan illesztve őket (`false`). 🔄",
|
"initial_transition": "Az első transition időtartama, amikor a lights \"kikapcsolt\" állapotból \"bekapcsolt\" állapotba váltanak, másodpercben. ⏲️",
|
||||||
"take_over_control": "take_over_control: Adaptív világítás kikapcsolása, amennyiben más forrásból érkező `Világítás: Bekapcsolás` szolgáltatás hívás történik, miközben a fények be vannak kapcsolva és illesztve vannak. Vegye figyelembe, hogy ez minden `interval`-ban meghívja a `homeassistant.update_entity`-t! 🔒",
|
"sleep_rgb_or_color_temp": "Az `\"rgb_color\" vagy a `\"color_temp\" használata alvó üzemmódban. 🌙",
|
||||||
"transition_until_sleep": "transition_until_sleep: Ha engedélyezve van, az Adaptív világítás az alvó mód beállításokat minimálisnak tekinti, és napnyugta után ezekre az értékekre vált át. 🌙",
|
"sleep_rgb_color": "RGB szín alvó üzemmódban (akkor érvényes, ha a `sleep_rgb_or_color_temp` értéke \"rgb_color\"). 🌈",
|
||||||
"include_config_in_attributes": "include_config_in_attributes: A kapcsoló összes opciójának attribútumként való megjelenítése a Home Assistantben, ha a beállítás értéke `igaz`. 📝"
|
"sleep_transition": "Az transition időtartama az \"alvó üzemmód\" kapcsolásakor másodpercben. 😴",
|
||||||
},
|
"sunrise_time": "Állítson be egy fix időpontot (HH:MM:SS) a napfelkeltéhez. 🌅",
|
||||||
"data_description": {
|
"min_sunrise_time": "Állítsa be a legkorábbi virtuális napfelkelte időpontját (HH:MM:SS), lehetővé téve a későbbi napfelkeltét. 🌅",
|
||||||
"sleep_rgb_or_color_temp": "Az `\"rgb_color\" vagy a `\"color_temp\" használata alvó üzemmódban. 🌙",
|
"max_sunrise_time": "A legkésőbbi virtuális napfelkelte időpontjának beállítása (HH:MM:SS), amely lehetővé teszi a korábbi napfelkeltét. 🌅",
|
||||||
"sleep_transition": "Az transition időtartama az \"alvó üzemmód\" kapcsolásakor másodpercben. 😴",
|
"sunrise_offset": "A napfelkelte idejének beállítása pozitív vagy negatív eltolással másodpercekben. ⏰",
|
||||||
"autoreset_control_seconds": "Automatikusan visszaállítja a kézi vezérlést néhány másodperc után. A letiltáshoz állítsa 0-ra. ⏲️",
|
"sunset_time": "Állítson be egy fix időpontot (HH:MM:SS) a naplementéhez. 🌇",
|
||||||
"min_sunset_time": "Állítsa be a legkorábbi virtuális naplemente időpontját (HH:MM:SS), lehetővé téve a későbbi naplementéket. 🌇",
|
"min_sunset_time": "Állítsa be a legkorábbi virtuális naplemente időpontját (HH:MM:SS), lehetővé téve a későbbi naplementéket. 🌇",
|
||||||
"min_sunrise_time": "Állítsa be a legkorábbi virtuális napfelkelte időpontját (HH:MM:SS), lehetővé téve a későbbi napfelkeltét. 🌅",
|
"max_sunset_time": "A legkésőbbi virtuális napnyugta időpontjának beállítása (HH:MM:SS), amely lehetővé teszi a korábbi naplementéket. 🌇",
|
||||||
"adapt_delay": "Várakozási idő (másodpercben) a világítás bekapcsolása és az Adaptív világítás alkalmazása között. Segíthet elkerülni a villódzást. ⏲️",
|
"sunset_offset": "A naplemente idejének beállítása pozitív vagy negatív eltolással másodpercekben. ⏰",
|
||||||
"sleep_rgb_color": "RGB szín alvó üzemmódban (akkor érvényes, ha a `sleep_rgb_or_color_temp` értéke \"rgb_color\"). 🌈",
|
"brightness_mode": "Használandó fényerő üzemmód. A lehetséges értékek: `default`, `linear` és `tanh` (a `brightness_mode_time_dark` és `brightness_mode_time_light` értékeket használja). 📈",
|
||||||
"sunrise_offset": "A napfelkelte idejének beállítása pozitív vagy negatív eltolással másodpercekben. ⏰",
|
"brightness_mode_time_dark": "(Figyelmen kívül hagyva, ha `brightness_mode='default'`) A fényerő növelésének/csökkentésének időtartama másodpercben napfelkelte/napnyugta után/előtt. 📈📉.",
|
||||||
"brightness_mode": "Használandó fényerő üzemmód. A lehetséges értékek: `default`, `linear` és `tanh` (a `brightness_mode_time_dark` és `brightness_mode_time_light` értékeket használja). 📈",
|
"brightness_mode_time_light": "(Figyelmen kívül hagyva, ha `brightness_mode='default'`) A fényerő növelésének/csökkentésének időtartama másodpercben napfelkelte/napnyugta után/előtt. 📈📉.",
|
||||||
"brightness_mode_time_light": "(Figyelmen kívül hagyva, ha `brightness_mode='default'`) A fényerő növelésének/csökkentésének időtartama másodpercben napfelkelte/napnyugta után/előtt. 📈📉.",
|
"autoreset_control_seconds": "Automatikusan visszaállítja a kézi vezérlést néhány másodperc után. A letiltáshoz állítsa 0-ra. ⏲️",
|
||||||
"sunset_offset": "A naplemente idejének beállítása pozitív vagy negatív eltolással másodpercekben. ⏰",
|
"send_split_delay": "Késleltetés (ms-ban) a `separate_turn_on_commands` (különálló_bekapcsolási_parancsok) között olyan lights esetében, amelyek nem támogatják a fényerő és a szín egyidejű beállítását. ⏲️",
|
||||||
"sunset_time": "Állítson be egy fix időpontot (HH:MM:SS) a naplementéhez. 🌇",
|
"adapt_delay": "Várakozási idő (másodpercben) a világítás bekapcsolása és az Adaptív világítás alkalmazása között. Segíthet elkerülni a villódzást. ⏲️"
|
||||||
"max_sunset_time": "A legkésőbbi virtuális napnyugta időpontjának beállítása (HH:MM:SS), amely lehetővé teszi a korábbi naplementéket. 🌇",
|
}
|
||||||
"sunrise_time": "Állítson be egy fix időpontot (HH:MM:SS) a napfelkeltéhez. 🌅",
|
}
|
||||||
"initial_transition": "Az első transition időtartama, amikor a lights \"kikapcsolt\" állapotból \"bekapcsolt\" állapotba váltanak, másodpercben. ⏲️",
|
|
||||||
"brightness_mode_time_dark": "(Figyelmen kívül hagyva, ha `brightness_mode='default'`) A fényerő növelésének/csökkentésének időtartama másodpercben napfelkelte/napnyugta után/előtt. 📈📉.",
|
|
||||||
"max_sunrise_time": "A legkésőbbi virtuális napfelkelte időpontjának beállítása (HH:MM:SS), amely lehetővé teszi a korábbi napfelkeltét. 🌅",
|
|
||||||
"send_split_delay": "Késleltetés (ms-ban) a `separate_turn_on_commands` (különálló_bekapcsolási_parancsok) között olyan lights esetében, amelyek nem támogatják a fényerő és a szín egyidejű beállítását. ⏲️"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -137,60 +137,56 @@
|
||||||
"step": {
|
"step": {
|
||||||
"init": {
|
"init": {
|
||||||
"data_description": {
|
"data_description": {
|
||||||
"sleep_color_temp": "Suhu warna dalam mode tidur (digunakan ketika `sleep_rgb_or_color_temp` adalah `color_temp`) dalam Kelvin. 😴",
|
|
||||||
"sleep_brightness": "Persentase kecerahan lampu dalam mode tidur. 😴",
|
|
||||||
"interval": "Frekuensi untuk menyesuaikan lampu, dalam hitungan detik. 🔄",
|
"interval": "Frekuensi untuk menyesuaikan lampu, dalam hitungan detik. 🔄",
|
||||||
"transition": "Durasi transisi saat lampu berganti, dalam hitungan detik. 🕑"
|
"transition": "Durasi transisi saat lampu berganti, dalam hitungan detik. 🕑",
|
||||||
|
"sleep_brightness": "Persentase kecerahan lampu dalam mode tidur. 😴",
|
||||||
|
"sleep_color_temp": "Suhu warna dalam mode tidur (digunakan ketika `sleep_rgb_or_color_temp` adalah `color_temp`) dalam Kelvin. 😴"
|
||||||
},
|
},
|
||||||
"data": {
|
"data": {
|
||||||
"max_color_temp": "max_color_temp: Suhu warna terdingin dalam Kelvin. ❄️",
|
|
||||||
"max_brightness": "max_brightness: Persentase kecerahan maksimum. 💡",
|
|
||||||
"lights": "lights: Daftar entity_ids lampu yang akan dikontrol (boleh kosong). 🌟",
|
"lights": "lights: Daftar entity_ids lampu yang akan dikontrol (boleh kosong). 🌟",
|
||||||
"min_brightness": "min_brightness: Persentase kecerahan minimum. 💡",
|
"min_brightness": "min_brightness: Persentase kecerahan minimum. 💡",
|
||||||
"min_color_temp": "min_color_temp: Suhu warna terhangat dalam Kelvin. 🔥"
|
"max_brightness": "max_brightness: Persentase kecerahan maksimum. 💡",
|
||||||
|
"min_color_temp": "min_color_temp: Suhu warna terhangat dalam Kelvin. 🔥",
|
||||||
|
"max_color_temp": "max_color_temp: Suhu warna terdingin dalam Kelvin. ❄️"
|
||||||
},
|
},
|
||||||
"title": "Opsi Pencahayaan Adaptif",
|
"title": "Opsi Pencahayaan Adaptif",
|
||||||
"description": "Konfigurasikan komponen Pencahayaan Adaptif. Nama opsi selaras dengan pengaturan YAML. Jika Anda telah menentukan entri ini di YAML, tidak ada opsi yang akan muncul di sini. Untuk grafik interaktif yang menunjukkan efek parameter, kunjungi [aplikasi web ini](https://basnijholt.github.io/adaptive-lighting). Untuk detail lebih lanjut, lihat [dokumentasi resmi](https://github.com/basnijholt/adaptive-lighting#readme).",
|
"description": "Konfigurasikan komponen Pencahayaan Adaptif. Nama opsi selaras dengan pengaturan YAML. Jika Anda telah menentukan entri ini di YAML, tidak ada opsi yang akan muncul di sini. Untuk grafik interaktif yang menunjukkan efek parameter, kunjungi [aplikasi web ini]({webapp_url}). Untuk detail lebih lanjut, lihat [dokumentasi resmi]({docs_url}).",
|
||||||
"menu_options": {
|
"sections": {
|
||||||
"advanced": "Configure advanced options",
|
"advanced": {
|
||||||
"finish": "Save and finish"
|
"data": {
|
||||||
}
|
"prefer_rgb_color": "prefer_rgb_color: Kalau lebih memilih penyesuaian warna RGB dibandingkan suhu warna terang jika memungkinkan. 🌈",
|
||||||
},
|
"transition_until_sleep": "transition_until_sleep: Jika diaktifkan, Pencahayaan Adaptif akan menganggap pengaturan tidur sebagai minimum, dan beralih ke nilai ini setelah matahari terbenam. 🌙",
|
||||||
"advanced": {
|
"take_over_control": "take_over_control: Nonaktifkan Pencahayaan Adaptif jika sumber lain memanggil `light.turn_on` saat lampu menyala dan sedang diadaptasi. Perhatikan bahwa ini memanggil `homeassistant.update_entity` setiap `interval`! 🔒",
|
||||||
"title": "Advanced Settings",
|
"detect_non_ha_changes": "detect_non_ha_changes: Mendeteksi dan menghentikan adaptasi untuk perubahan status non-`light.turn_on`. Perlu mengaktifkan `take_over_control`. 🕵️ Perhatian: ⚠️ Beberapa lampu mungkin salah menunjukkan status 'hidup' yang dapat mengakibatkan lampu menyala secara tidak terduga. Nonaktifkan fitur ini jika Anda mengalami masalah seperti itu.",
|
||||||
"description": "Configure advanced Adaptive Lighting options. Most users don't need to change these settings.",
|
"only_once": "only_once: Sesuaikan lampu hanya saat menyala (`true`) atau terus sesuaikan (`false`). 🔄",
|
||||||
"data": {
|
"adapt_only_on_bare_turn_on": "adapt_only_on_bare_turn_on: Saat menyalakan lampu pada awalnya. Jika diatur ke `true`, AL hanya beradaptasi jika `light.turn_on` dipanggil tanpa menentukan warna atau kecerahan. ❌🌈 Misalnya, mencegah adaptasi ketika mengaktifkan scene. Jika `false`, AL akan beradaptasi tanpa menghiraukan keberadaan warna atau kecerahan dalam `service_data` awal. Perlu `take_over_control` diaktifkan. 🕵️",
|
||||||
"detect_non_ha_changes": "detect_non_ha_changes: Mendeteksi dan menghentikan adaptasi untuk perubahan status non-`light.turn_on`. Perlu mengaktifkan `take_over_control`. 🕵️ Perhatian: ⚠️ Beberapa lampu mungkin salah menunjukkan status 'hidup' yang dapat mengakibatkan lampu menyala secara tidak terduga. Nonaktifkan fitur ini jika Anda mengalami masalah seperti itu.",
|
"separate_turn_on_commands": "separate_turn_on_commands: Gunakan panggilan `light.turn_on` terpisah untuk warna dan kecerahan, diperlukan untuk beberapa jenis lampu. 🔀",
|
||||||
"multi_light_intercept": "multi_light_intercept: Cegat dan sesuaikan panggilan `light.turn_on` yang menargetkan banyak lampu. ➗⚠️ Hal ini dapat mengakibatkan satu panggilan `light.turn_on` terpecah menjadi beberapa panggilan, misalnya saat lampu berada di sakelar yang berbeda. Membutuhkan `intercept` untuk diaktifkan.",
|
"skip_redundant_commands": "skip_redundant_commands: Lewati pengiriman perintah adaptasi yang status targetnya sudah sama dengan status cahaya yang diketahui. Meminimalkan lalu lintas jaringan dan meningkatkan respons adaptasi dalam beberapa situasi. 📉Nonaktifkan jika status cahaya fisik tidak sinkron dengan status rekaman HA.",
|
||||||
"adapt_only_on_bare_turn_on": "adapt_only_on_bare_turn_on: Saat menyalakan lampu pada awalnya. Jika diatur ke `true`, AL hanya beradaptasi jika `light.turn_on` dipanggil tanpa menentukan warna atau kecerahan. ❌🌈 Misalnya, mencegah adaptasi ketika mengaktifkan scene. Jika `false`, AL akan beradaptasi tanpa menghiraukan keberadaan warna atau kecerahan dalam `service_data` awal. Perlu `take_over_control` diaktifkan. 🕵️",
|
"intercept": "intercept: Cegat dan sesuaikan panggilan `light.turn_on` untuk mengaktifkan adaptasi warna dan kecerahan seketika. 🏎️ Nonaktifkan untuk lampu yang tidak mendukung `light.turn_on` dengan warna dan kecerahan.",
|
||||||
"skip_redundant_commands": "skip_redundant_commands: Lewati pengiriman perintah adaptasi yang status targetnya sudah sama dengan status cahaya yang diketahui. Meminimalkan lalu lintas jaringan dan meningkatkan respons adaptasi dalam beberapa situasi. 📉Nonaktifkan jika status cahaya fisik tidak sinkron dengan status rekaman HA.",
|
"multi_light_intercept": "multi_light_intercept: Cegat dan sesuaikan panggilan `light.turn_on` yang menargetkan banyak lampu. ➗⚠️ Hal ini dapat mengakibatkan satu panggilan `light.turn_on` terpecah menjadi beberapa panggilan, misalnya saat lampu berada di sakelar yang berbeda. Membutuhkan `intercept` untuk diaktifkan.",
|
||||||
"separate_turn_on_commands": "separate_turn_on_commands: Gunakan panggilan `light.turn_on` terpisah untuk warna dan kecerahan, diperlukan untuk beberapa jenis lampu. 🔀",
|
"include_config_in_attributes": "include_config_in_attributes: Tampilkan semua opsi sebagai atribut pada sakelar di Home Assistant ketika diatur ke `true`. 📝"
|
||||||
"prefer_rgb_color": "prefer_rgb_color: Kalau lebih memilih penyesuaian warna RGB dibandingkan suhu warna terang jika memungkinkan. 🌈",
|
},
|
||||||
"intercept": "intercept: Cegat dan sesuaikan panggilan `light.turn_on` untuk mengaktifkan adaptasi warna dan kecerahan seketika. 🏎️ Nonaktifkan untuk lampu yang tidak mendukung `light.turn_on` dengan warna dan kecerahan.",
|
"data_description": {
|
||||||
"only_once": "only_once: Sesuaikan lampu hanya saat menyala (`true`) atau terus sesuaikan (`false`). 🔄",
|
"initial_transition": "Durasi transisi pertama saat lampu berubah dari `mati` ke `hidup` dalam hitungan detik. ⏲️",
|
||||||
"take_over_control": "take_over_control: Nonaktifkan Pencahayaan Adaptif jika sumber lain memanggil `light.turn_on` saat lampu menyala dan sedang diadaptasi. Perhatikan bahwa ini memanggil `homeassistant.update_entity` setiap `interval`! 🔒",
|
"sleep_rgb_or_color_temp": "Gunakan `\"rgb_color\"` atau `\"color_temp\"` dalam mode tidur. 🌙",
|
||||||
"transition_until_sleep": "transition_until_sleep: Jika diaktifkan, Pencahayaan Adaptif akan menganggap pengaturan tidur sebagai minimum, dan beralih ke nilai ini setelah matahari terbenam. 🌙",
|
"sleep_rgb_color": "Warna RGB dalam mode tidur (digunakan ketika `sleep_rgb_or_color_temp` adalah \"rgb_color\"). 🌈",
|
||||||
"include_config_in_attributes": "include_config_in_attributes: Tampilkan semua opsi sebagai atribut pada sakelar di Home Assistant ketika diatur ke `true`. 📝"
|
"sleep_transition": "Durasi transisi ketika \"mode tidur\" diubah, dalam hitungan detik. 😴",
|
||||||
},
|
"sunrise_time": "Tetapkan waktu tetap (HH:MM:SS) untuk matahari terbit. 🌅",
|
||||||
"data_description": {
|
"min_sunrise_time": "Tetapkan waktu matahari terbit virtual paling awal (HH:MM:SS), memungkinkan matahari terbit di kemudian waktu. 🌅",
|
||||||
"sleep_rgb_or_color_temp": "Gunakan `\"rgb_color\"` atau `\"color_temp\"` dalam mode tidur. 🌙",
|
"max_sunrise_time": "Atur waktu matahari terbit virtual terkini (HH:MM:SS), memungkinkan matahari terbit lebih cepat. 🌅",
|
||||||
"sleep_transition": "Durasi transisi ketika \"mode tidur\" diubah, dalam hitungan detik. 😴",
|
"sunrise_offset": "Sesuaikan waktu matahari terbit dengan offset positif atau negatif dalam hitungan detik. ⏰",
|
||||||
"autoreset_control_seconds": "Secara otomatis mengatur ulang kontrol manual setelah beberapa detik. Setel ke 0 untuk menonaktifkan. ⏲️",
|
"sunset_time": "Tetapkan waktu tetap (HH:MM:SS) untuk matahari terbenam. 🌇",
|
||||||
"min_sunset_time": "Tetapkan waktu matahari terbenam virtual paling awal (HH:MM:SS), memungkinkan matahari terbenam di kemudian waktu. 🌇",
|
"min_sunset_time": "Tetapkan waktu matahari terbenam virtual paling awal (HH:MM:SS), memungkinkan matahari terbenam di kemudian waktu. 🌇",
|
||||||
"min_sunrise_time": "Tetapkan waktu matahari terbit virtual paling awal (HH:MM:SS), memungkinkan matahari terbit di kemudian waktu. 🌅",
|
"max_sunset_time": "Atur waktu matahari terbenam virtual terkini (HH:MM:SS), memungkinkan matahari terbenam lebih cepat. 🌇",
|
||||||
"adapt_delay": "Waktu tunggu (detik) antara lampu menyala dan penerapan ubahan Pencahayaan Adaptif. Mungkin membantu untuk menghindari kedipan. ⏲️",
|
"sunset_offset": "Sesuaikan waktu matahari terbenam dengan offset positif atau negatif dalam hitungan detik. ⏰",
|
||||||
"sleep_rgb_color": "Warna RGB dalam mode tidur (digunakan ketika `sleep_rgb_or_color_temp` adalah \"rgb_color\"). 🌈",
|
"brightness_mode": "Mode kecerahan untuk digunakan. Nilai yang memungkinkan adalah `default`, `linear`, dan `tanh` (menggunakan `brightness_mode_time_dark` dan `brightness_mode_time_light`). 📈",
|
||||||
"sunrise_offset": "Sesuaikan waktu matahari terbit dengan offset positif atau negatif dalam hitungan detik. ⏰",
|
"brightness_mode_time_dark": "(Diabaikan jika `brightness_mode='default'`) Durasi dalam hitungan detik untuk meningkatkan/menurunkan kecerahan sebelum/sesudah matahari terbit/terbenam. 📈📉",
|
||||||
"brightness_mode": "Mode kecerahan untuk digunakan. Nilai yang memungkinkan adalah `default`, `linear`, dan `tanh` (menggunakan `brightness_mode_time_dark` dan `brightness_mode_time_light`). 📈",
|
"brightness_mode_time_light": "(Ignored if `brightness_mode='default'`) Durasi dalam hitungan detik untuk meningkatkan/menurunkan kecerahan setelah/sebelum matahari terbit/terbenam. 📈📉.",
|
||||||
"brightness_mode_time_light": "(Ignored if `brightness_mode='default'`) Durasi dalam hitungan detik untuk meningkatkan/menurunkan kecerahan setelah/sebelum matahari terbit/terbenam. 📈📉.",
|
"autoreset_control_seconds": "Secara otomatis mengatur ulang kontrol manual setelah beberapa detik. Setel ke 0 untuk menonaktifkan. ⏲️",
|
||||||
"sunset_offset": "Sesuaikan waktu matahari terbenam dengan offset positif atau negatif dalam hitungan detik. ⏰",
|
"send_split_delay": "Waktu tunda (ms) antara `separate_turn_on_commands` untuk lampu yang tidak mendukung pengaturan kecerahan dan warna secara bersamaan. ⏲️",
|
||||||
"sunset_time": "Tetapkan waktu tetap (HH:MM:SS) untuk matahari terbenam. 🌇",
|
"adapt_delay": "Waktu tunggu (detik) antara lampu menyala dan penerapan ubahan Pencahayaan Adaptif. Mungkin membantu untuk menghindari kedipan. ⏲️"
|
||||||
"max_sunset_time": "Atur waktu matahari terbenam virtual terkini (HH:MM:SS), memungkinkan matahari terbenam lebih cepat. 🌇",
|
}
|
||||||
"sunrise_time": "Tetapkan waktu tetap (HH:MM:SS) untuk matahari terbit. 🌅",
|
}
|
||||||
"initial_transition": "Durasi transisi pertama saat lampu berubah dari `mati` ke `hidup` dalam hitungan detik. ⏲️",
|
|
||||||
"brightness_mode_time_dark": "(Diabaikan jika `brightness_mode='default'`) Durasi dalam hitungan detik untuk meningkatkan/menurunkan kecerahan sebelum/sesudah matahari terbit/terbenam. 📈📉",
|
|
||||||
"max_sunrise_time": "Atur waktu matahari terbit virtual terkini (HH:MM:SS), memungkinkan matahari terbit lebih cepat. 🌅",
|
|
||||||
"send_split_delay": "Waktu tunda (ms) antara `separate_turn_on_commands` untuk lampu yang tidak mendukung pengaturan kecerahan dan warna secara bersamaan. ⏲️"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -22,67 +22,63 @@
|
||||||
"data": {
|
"data": {
|
||||||
"lights": "luci",
|
"lights": "luci",
|
||||||
"interval": "interval: Tempo tra i cambiamenti dello switch. (secondi)",
|
"interval": "interval: Tempo tra i cambiamenti dello switch. (secondi)",
|
||||||
"max_brightness": "max_brightness: Luminosità massima delle luci durante un ciclo. (%)",
|
"transition": "Tempo di transizione quando viene applicata una modifica alle luci (secondi)",
|
||||||
"max_color_temp": "max_color_temp: Gradazione più fredda del ciclo di temperatura del colore. (Kelvin)",
|
|
||||||
"min_brightness": "min_brightness: Luminosità minima delle luci durante un ciclo. (%)",
|
"min_brightness": "min_brightness: Luminosità minima delle luci durante un ciclo. (%)",
|
||||||
|
"max_brightness": "max_brightness: Luminosità massima delle luci durante un ciclo. (%)",
|
||||||
"min_color_temp": "min_color_temp: Gradazione più calda del ciclo di temperatura del colore. (Kelvin)",
|
"min_color_temp": "min_color_temp: Gradazione più calda del ciclo di temperatura del colore. (Kelvin)",
|
||||||
|
"max_color_temp": "max_color_temp: Gradazione più fredda del ciclo di temperatura del colore. (Kelvin)",
|
||||||
"sleep_brightness": "sleep_brightness: Impostazione della luminosità per la modalità notturna. (%)",
|
"sleep_brightness": "sleep_brightness: Impostazione della luminosità per la modalità notturna. (%)",
|
||||||
"sleep_color_temp": "sleep_color_temp: Impostazione della temperatura colore per la modalità notturna. (Kelvin)",
|
"sleep_color_temp": "sleep_color_temp: Impostazione della temperatura colore per la modalità notturna. (Kelvin)"
|
||||||
"transition": "Tempo di transizione quando viene applicata una modifica alle luci (secondi)"
|
|
||||||
},
|
},
|
||||||
"data_description": {
|
"data_description": {
|
||||||
"sleep_color_temp": "Temperatura colore per la modalità notturna (utilizzata quando `sleep_rgb_or_color_temp` vale `color_temp`), espressa in Kelvin. 😴",
|
|
||||||
"sleep_brightness": "Luminosità percentuale delle luci in modalità notturna. 😴",
|
|
||||||
"interval": "Frequenza di adattamento delle luci, espressa in secondi. 🔄",
|
"interval": "Frequenza di adattamento delle luci, espressa in secondi. 🔄",
|
||||||
"transition": "Durata della transizione quando le luci cambiano, espressa in secondi. 🕑"
|
"transition": "Durata della transizione quando le luci cambiano, espressa in secondi. 🕑",
|
||||||
|
"sleep_brightness": "Luminosità percentuale delle luci in modalità notturna. 😴",
|
||||||
|
"sleep_color_temp": "Temperatura colore per la modalità notturna (utilizzata quando `sleep_rgb_or_color_temp` vale `color_temp`), espressa in Kelvin. 😴"
|
||||||
},
|
},
|
||||||
"menu_options": {
|
"sections": {
|
||||||
"advanced": "Configura opzioni avanzate",
|
"advanced": {
|
||||||
"finish": "Salva e termina"
|
"data": {
|
||||||
}
|
"initial_transition": "initial_transition: Quando le luci vengono accese (off -> on). (secondi)",
|
||||||
},
|
"prefer_rgb_color": "prefer_rgb_color: Usa 'rgb_color' al posto di 'color_temp' quando possibile.",
|
||||||
"advanced": {
|
"sleep_transition": "sleep_transition: Quando 'sleep_state' cambia. (secondi)",
|
||||||
"title": "Impostazioni avanzate",
|
"transition_until_sleep": "transition_until_sleep: Quando abilitato, Adaptive Lighting tratterà le impostazioni di sleep come valori minimi, facendo la transizione a questi valori dopo il tramonto. 🌙",
|
||||||
"description": "Configura le opzioni avanzate di Adaptive Lighting. La maggior parte degli utenti non ha bisogno di modificare queste impostazioni.",
|
"sunrise_time": "sunrise_time: Imposta manualmente l'ora dell'alba, se 'None', usa l'ora effettiva dell'alba alla tua posizione (HH:MM:SS)",
|
||||||
"data": {
|
"sunrise_offset": "sunrise_offset: Imposta quanto anticipare(-) o ritardare(+) l'alba nel ciclo (+/- secondi)",
|
||||||
"initial_transition": "initial_transition: Quando le luci vengono accese (off -> on). (secondi)",
|
"sunset_time": "sunset_time: Imposta manualmente l'ora del tramonto, se 'None', usa l'ora effettiva del tramonto alla tua posizione (HH:MM:SS)",
|
||||||
"sleep_transition": "sleep_transition: Quando 'sleep_state' cambia. (secondi)",
|
"sunset_offset": "sunset_offset: Imposta quanto anticipare(-) o ritardare(+) il tramonto nel ciclo (+/- secondi)",
|
||||||
"only_once": "only_once: Adatta le luci solo quando vengono accese.",
|
"take_over_control": "take_over_control: Se viene chiamato il servizio 'lights.turn_on' (non da Illuminazione Adattiva) quando una luce è già accesa, interrompi l'adattamento della luce finquando essa o l'interruttore non vengono riaccesi (off -> on.)",
|
||||||
"prefer_rgb_color": "prefer_rgb_color: Usa 'rgb_color' al posto di 'color_temp' quando possibile.",
|
"detect_non_ha_changes": "detect_non_ha_changes: rileva tutti i cambiamenti >10% applicati alle luci (anche fuori da HA), richiede che 'take_over_control' sia abilitato (chiama 'homeassistant.update_entity' ad ogni 'intervallo'!)",
|
||||||
"separate_turn_on_commands": "separate_turn_on_commands: Separa i comandi per ogni attributo (color, brightness, etc.) in 'light.turn_on' (richiesto per alcune luci).",
|
"only_once": "only_once: Adatta le luci solo quando vengono accese.",
|
||||||
"sunrise_offset": "sunrise_offset: Imposta quanto anticipare(-) o ritardare(+) l'alba nel ciclo (+/- secondi)",
|
"adapt_only_on_bare_turn_on": "adapt_only_on_bare_turn_on: Quando accendi le luci la prima volta. Se impostato su `true`, AL adatta solo se `light.turn_on è invocato senza specificare il colore o la luminosità. ❌🌈 Questo, per esempio, previene l'adattamento quando si attiva una scena. Se `false`, AL adatta indipendentemente dalla presenza di colore o luminosità nei `service_data` iniziali. Necessita che `take_over_control` sia abilitato. 🕵️ ",
|
||||||
"sunrise_time": "sunrise_time: Imposta manualmente l'ora dell'alba, se 'None', usa l'ora effettiva dell'alba alla tua posizione (HH:MM:SS)",
|
"separate_turn_on_commands": "separate_turn_on_commands: Separa i comandi per ogni attributo (color, brightness, etc.) in 'light.turn_on' (richiesto per alcune luci).",
|
||||||
"sunset_offset": "sunset_offset: Imposta quanto anticipare(-) o ritardare(+) il tramonto nel ciclo (+/- secondi)",
|
"adapt_delay": "Tempo di attesa tra l'accensione della luce, e Illuminazione Adattiva che applica le modifiche allo stato della luce. Potrebbe evitare sfarfallii.",
|
||||||
"sunset_time": "sunset_time: Imposta manualmente l'ora del tramonto, se 'None', usa l'ora effettiva del tramonto alla tua posizione (HH:MM:SS)",
|
"skip_redundant_commands": "skip_redundant_commands: Salta l'invio di comandi di adattamento rivolti ad entità in cui lo stato desiderato è identico allo stato attuale. Minimizza il traffico sulla rete e migliora la responsività dell'adattamento in alcune situazioni. 📉 Disabilitalo se lo stato reale delle luci va fuori sincrono con quello registrato da HA.",
|
||||||
"take_over_control": "take_over_control: Se viene chiamato il servizio 'lights.turn_on' (non da Illuminazione Adattiva) quando una luce è già accesa, interrompi l'adattamento della luce finquando essa o l'interruttore non vengono riaccesi (off -> on.)",
|
"intercept": "intercept: Intercetta e adatta alle chiamate a`light.turn_on` per abilitare adattamenti istantanei di colore e luminosità. 🏎️ Disabilita per quelle luci che non supportano l'impostazione di luci e colori a seguito dell'evento `light.turn_on`.",
|
||||||
"detect_non_ha_changes": "detect_non_ha_changes: rileva tutti i cambiamenti >10% applicati alle luci (anche fuori da HA), richiede che 'take_over_control' sia abilitato (chiama 'homeassistant.update_entity' ad ogni 'intervallo'!)",
|
"multi_light_intercept": "multi_light_intercept: Intercetta e adatta le chiamate a `light.turn_on` destinate a più luci. ➗⚠️ Questo potrebbe causare la divisione della singola chiamata `light.turn_on`in più chiamate, ad esempio quando le luci sono su switch diversi. Richiede che l'opzione `intercept` sia abilitata.",
|
||||||
"adapt_delay": "Tempo di attesa tra l'accensione della luce, e Illuminazione Adattiva che applica le modifiche allo stato della luce. Potrebbe evitare sfarfallii.",
|
"include_config_in_attributes": "include_config_in_attributes: Quando impostato come `true`, mostra tutte le opzioni come attributi dello switch in Home Assistant. 📝"
|
||||||
"transition_until_sleep": "transition_until_sleep: Quando abilitato, Adaptive Lighting tratterà le impostazioni di sleep come valori minimi, facendo la transizione a questi valori dopo il tramonto. 🌙",
|
},
|
||||||
"adapt_only_on_bare_turn_on": "adapt_only_on_bare_turn_on: Quando accendi le luci la prima volta. Se impostato su `true`, AL adatta solo se `light.turn_on è invocato senza specificare il colore o la luminosità. ❌🌈 Questo, per esempio, previene l'adattamento quando si attiva una scena. Se `false`, AL adatta indipendentemente dalla presenza di colore o luminosità nei `service_data` iniziali. Necessita che `take_over_control` sia abilitato. 🕵️ ",
|
"data_description": {
|
||||||
"multi_light_intercept": "multi_light_intercept: Intercetta e adatta le chiamate a `light.turn_on` destinate a più luci. ➗⚠️ Questo potrebbe causare la divisione della singola chiamata `light.turn_on`in più chiamate, ad esempio quando le luci sono su switch diversi. Richiede che l'opzione `intercept` sia abilitata.",
|
"initial_transition": "Durata della prima transizione quando le luci passano dallo stato `off` a `on`, espressa in secondi. ⏲️",
|
||||||
"skip_redundant_commands": "skip_redundant_commands: Salta l'invio di comandi di adattamento rivolti ad entità in cui lo stato desiderato è identico allo stato attuale. Minimizza il traffico sulla rete e migliora la responsività dell'adattamento in alcune situazioni. 📉 Disabilitalo se lo stato reale delle luci va fuori sincrono con quello registrato da HA.",
|
"sleep_rgb_or_color_temp": "Usa uno tra `\"rgb_color\"` or`\"color_temp\"` in modalità notturna. 🌙",
|
||||||
"intercept": "intercept: Intercetta e adatta alle chiamate a`light.turn_on` per abilitare adattamenti istantanei di colore e luminosità. 🏎️ Disabilita per quelle luci che non supportano l'impostazione di luci e colori a seguito dell'evento `light.turn_on`.",
|
"sleep_rgb_color": "Colore RGB in modalità notturna (usato quando `sleep_rgb_or_color_temp` è impostato su \"rgb_color\"). 🌈",
|
||||||
"include_config_in_attributes": "include_config_in_attributes: Quando impostato come `true`, mostra tutte le opzioni come attributi dello switch in Home Assistant. 📝"
|
"sleep_transition": "Durata della transizione al passaggio da/verso la modalità luce notturna, espressa in secondi. 😴",
|
||||||
},
|
"sunrise_time": "Imposta un orario fisso (HH:MM:SS) per l'alba. 🌅",
|
||||||
"data_description": {
|
"min_sunrise_time": "Imposta il minimo orario per l'alba (HH:MM:SS), per eventualmente ritardarla. 🌅",
|
||||||
"sunrise_offset": "Regola il momento dell'alba con un offset positivo o negativo. ⏰",
|
"max_sunrise_time": "Imposta l'orario massimo per l'alba (HH:MM:SS), in modo da eventualmente anticiparla. 🌅",
|
||||||
"sunset_offset": "Modifica l'orario del tramonto con un offset in secondi positivo o negativo. ⏰",
|
"sunrise_offset": "Regola il momento dell'alba con un offset positivo o negativo. ⏰",
|
||||||
"sleep_rgb_or_color_temp": "Usa uno tra `\"rgb_color\"` or`\"color_temp\"` in modalità notturna. 🌙",
|
"sunset_time": "Imposta un orario fisso (HH:MM:SS) per il tramonto. 🌇",
|
||||||
"sleep_transition": "Durata della transizione al passaggio da/verso la modalità luce notturna, espressa in secondi. 😴",
|
"min_sunset_time": "Imposta il minimo orario per il tramonto (HH:MM:SS), per eventualmente ritardarlo. 🌅",
|
||||||
"autoreset_control_seconds": "Rimuovi automaticamente il colore impostato manualmente dopo un certo numero di secondi. Imposta 0 per disabilitare. ⏲️",
|
"max_sunset_time": "Imposta il massimo orario per il tramonto (HH:MM:SS), in modo da eventualmente anticiparlo. 🌇",
|
||||||
"min_sunset_time": "Imposta il minimo orario per il tramonto (HH:MM:SS), per eventualmente ritardarlo. 🌅",
|
"sunset_offset": "Modifica l'orario del tramonto con un offset in secondi positivo o negativo. ⏰",
|
||||||
"min_sunrise_time": "Imposta il minimo orario per l'alba (HH:MM:SS), per eventualmente ritardarla. 🌅",
|
"brightness_mode": "Modalità per la luminosità da utilizzare. I valori possibili sono `default`, `linear`, and `tanh` (usa`brightness_mode_time_dark` e `brightness_mode_time_light`). 📈",
|
||||||
"adapt_delay": "Tempo di attesa (in secondi) tra l'accensione della luce e i cambiamenti indotti da Illuminazione Adattativa. Può contribuire a ridurre lo sfarfallio. ⏲️",
|
"brightness_mode_time_dark": "La durata, espressa in secondi, della variazione di luminosità durante le albe/tramonti (ignorato se `brightness_mode='default'`). 📈📉",
|
||||||
"sleep_rgb_color": "Colore RGB in modalità notturna (usato quando `sleep_rgb_or_color_temp` è impostato su \"rgb_color\"). 🌈",
|
"brightness_mode_time_light": "La durata, espressa in secondi, della variazione di luminosità durante le albe/tramonti (ignorato se `brightness_mode='default'`). 📈📉",
|
||||||
"brightness_mode": "Modalità per la luminosità da utilizzare. I valori possibili sono `default`, `linear`, and `tanh` (usa`brightness_mode_time_dark` e `brightness_mode_time_light`). 📈",
|
"autoreset_control_seconds": "Rimuovi automaticamente il colore impostato manualmente dopo un certo numero di secondi. Imposta 0 per disabilitare. ⏲️",
|
||||||
"brightness_mode_time_light": "La durata, espressa in secondi, della variazione di luminosità durante le albe/tramonti (ignorato se `brightness_mode='default'`). 📈📉",
|
"send_split_delay": "Ritardo (ms) tra i comandi, per le luci che hanno `separate_turn_on_commands` e che non supportano l'impostazione simultanea di luminosità e colore. ⏲️",
|
||||||
"sunset_time": "Imposta un orario fisso (HH:MM:SS) per il tramonto. 🌇",
|
"adapt_delay": "Tempo di attesa (in secondi) tra l'accensione della luce e i cambiamenti indotti da Illuminazione Adattativa. Può contribuire a ridurre lo sfarfallio. ⏲️"
|
||||||
"max_sunset_time": "Imposta il massimo orario per il tramonto (HH:MM:SS), in modo da eventualmente anticiparlo. 🌇",
|
}
|
||||||
"sunrise_time": "Imposta un orario fisso (HH:MM:SS) per l'alba. 🌅",
|
}
|
||||||
"initial_transition": "Durata della prima transizione quando le luci passano dallo stato `off` a `on`, espressa in secondi. ⏲️",
|
|
||||||
"brightness_mode_time_dark": "La durata, espressa in secondi, della variazione di luminosità durante le albe/tramonti (ignorato se `brightness_mode='default'`). 📈📉",
|
|
||||||
"max_sunrise_time": "Imposta l'orario massimo per l'alba (HH:MM:SS), in modo da eventualmente anticiparla. 🌅",
|
|
||||||
"send_split_delay": "Ritardo (ms) tra i comandi, per le luci che hanno `separate_turn_on_commands` e che non supportano l'impostazione simultanea di luminosità e colore. ⏲️"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -31,20 +31,16 @@
|
||||||
"data": {},
|
"data": {},
|
||||||
"data_description": {},
|
"data_description": {},
|
||||||
"title": "明るさの自動調整オプション",
|
"title": "明るさの自動調整オプション",
|
||||||
"menu_options": {
|
"sections": {
|
||||||
"advanced": "詳細オプションを設定",
|
"advanced": {
|
||||||
"finish": "保存して終了"
|
"data": {
|
||||||
}
|
"adapt_only_on_bare_turn_on": "adapt_only_on_bare_turn_on: 最初に照明オンにするとき。`true`を設定すると、AL(適応型照明)は調色や明るさを指定せずや`light.turn_on`をしたときのみ適応します。❌🌈 例えば、適応型照明をシーンを有効にするときにしないようにする。`false`であれば、`service_data`に最初から、ALはシーンの状態に関係なく調色や明るさを適応する。`take_over_control`を有効にすることが必要。🕵️ "
|
||||||
},
|
},
|
||||||
"advanced": {
|
"data_description": {
|
||||||
"title": "詳細設定",
|
"sunrise_offset": "日の出時間を基準に秒単位で正値もしくは負値で調整する。⏰",
|
||||||
"description": "Adaptive Lightingの詳細オプションを設定します。ほとんどのユーザーはこれらの設定を変更する必要はありません。",
|
"sunset_offset": "日の入時間を基準に秒単位で正値もしくは負値で調整する。⏰"
|
||||||
"data": {
|
}
|
||||||
"adapt_only_on_bare_turn_on": "adapt_only_on_bare_turn_on: 最初に照明オンにするとき。`true`を設定すると、AL(適応型照明)は調色や明るさを指定せずや`light.turn_on`をしたときのみ適応します。❌🌈 例えば、適応型照明をシーンを有効にするときにしないようにする。`false`であれば、`service_data`に最初から、ALはシーンの状態に関係なく調色や明るさを適応する。`take_over_control`を有効にすることが必要。🕵️ "
|
}
|
||||||
},
|
|
||||||
"data_description": {
|
|
||||||
"sunrise_offset": "日の出時間を基準に秒単位で正値もしくは負値で調整する。⏰",
|
|
||||||
"sunset_offset": "日の入時間を基準に秒単位で正値もしくは負値で調整する。⏰"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -18,7 +18,7 @@
|
||||||
"step": {
|
"step": {
|
||||||
"init": {
|
"init": {
|
||||||
"title": "적응형 조명 옵션",
|
"title": "적응형 조명 옵션",
|
||||||
"description": "적응형 조명 구성요소를 구성합니다. 옵션 이름은 YAML 설정과 일치합니다. 이 항목을 YAML에서 정의한 경우 여기에 옵션이 표시되지 않습니다. 매개변수 효과를 시연하는 인터랙티브 그래프는 [이 웹 앱](https://basnijholt.github.io/adaptive-lighting)에서 확인할 수 있습니다. 자세한 내용은 [공식 문서](https://github.com/basnijholt/adaptive-lighting#readme)를 참조하세요.",
|
"description": "적응형 조명 구성요소를 구성합니다. 옵션 이름은 YAML 설정과 일치합니다. 이 항목을 YAML에서 정의한 경우 여기에 옵션이 표시되지 않습니다. 매개변수 효과를 시연하는 인터랙티브 그래프는 [이 웹 앱]({webapp_url})에서 확인할 수 있습니다. 자세한 내용은 [공식 문서]({docs_url})를 참조하세요.",
|
||||||
"data": {
|
"data": {
|
||||||
"lights": "조명: 제어될 조명 entity_ids의 목록 (비어 있을 수 있음). 🌟",
|
"lights": "조명: 제어될 조명 entity_ids의 목록 (비어 있을 수 있음). 🌟",
|
||||||
"interval": "간격",
|
"interval": "간격",
|
||||||
|
|
@ -36,64 +36,60 @@
|
||||||
"sleep_brightness": "수면 모드에서 조명의 밝기 퍼센트. 😴",
|
"sleep_brightness": "수면 모드에서 조명의 밝기 퍼센트. 😴",
|
||||||
"sleep_color_temp": "수면 모드에서 색온도 (sleep_rgb_or_color_temp가 `color_temp`일 때 사용) 켈빈 단위. 😴"
|
"sleep_color_temp": "수면 모드에서 색온도 (sleep_rgb_or_color_temp가 `color_temp`일 때 사용) 켈빈 단위. 😴"
|
||||||
},
|
},
|
||||||
"menu_options": {
|
"sections": {
|
||||||
"advanced": "고급 옵션 구성",
|
"advanced": {
|
||||||
"finish": "저장 및 완료"
|
"data": {
|
||||||
}
|
"initial_transition": "초기 전환",
|
||||||
},
|
"prefer_rgb_color": "RGB 색상 선호: 가능할 경우 색온도 조정보다 RGB 색상 조정을 선호하는지 여부. 🌈",
|
||||||
"advanced": {
|
"sleep_rgb_or_color_temp": "수면 rgb_or_color_temp",
|
||||||
"title": "고급 설정",
|
"sleep_rgb_color": "수면 RGB 색상",
|
||||||
"description": "Adaptive Lighting 고급 옵션을 구성합니다. 대부분의 사용자는 이러한 설정을 변경할 필요가 없습니다.",
|
"sleep_transition": "수면 전환",
|
||||||
"data": {
|
"transition_until_sleep": "수면까지 전환: 활성화되면, 적응형 조명은 수면 설정을 최소값으로 취급하고 일몰 후 이 값으로 전환합니다. 🌙",
|
||||||
"initial_transition": "초기 전환",
|
"sunrise_time": "일출 시간",
|
||||||
"prefer_rgb_color": "RGB 색상 선호: 가능할 경우 색온도 조정보다 RGB 색상 조정을 선호하는지 여부. 🌈",
|
"min_sunrise_time": "최소 일출 시간",
|
||||||
"sleep_rgb_or_color_temp": "수면 rgb_or_color_temp",
|
"max_sunrise_time": "최대 일출 시간",
|
||||||
"sleep_rgb_color": "수면 RGB 색상",
|
"sunrise_offset": "일출 오프셋",
|
||||||
"sleep_transition": "수면 전환",
|
"sunset_time": "일몰 시간",
|
||||||
"transition_until_sleep": "수면까지 전환: 활성화되면, 적응형 조명은 수면 설정을 최소값으로 취급하고 일몰 후 이 값으로 전환합니다. 🌙",
|
"min_sunset_time": "최소 일몰 시간",
|
||||||
"sunrise_time": "일출 시간",
|
"max_sunset_time": "최대 일몰 시간",
|
||||||
"min_sunrise_time": "최소 일출 시간",
|
"sunset_offset": "일몰 오프셋",
|
||||||
"max_sunrise_time": "최대 일출 시간",
|
"brightness_mode": "밝기 모드",
|
||||||
"sunrise_offset": "일출 오프셋",
|
"brightness_mode_time_dark": "어두울 때 밝기 모드 시간",
|
||||||
"sunset_time": "일몰 시간",
|
"brightness_mode_time_light": "밝을 때 밝기 모드 시간",
|
||||||
"min_sunset_time": "최소 일몰 시간",
|
"take_over_control": "제어 인계: 다른 소스가 조명이 켜져 있고 조정 중일 때 `light.turn_on`을 호출하면 적응형 조명을 비활성화합니다. 이는 매 `간격`마다 `homeassistant.update_entity`를 호출합니다! 🔒",
|
||||||
"max_sunset_time": "최대 일몰 시간",
|
"detect_non_ha_changes": "비HA 변경 감지: `light.turn_on`이 아닌 상태 변경을 감지하고 조정을 중단합니다. `take_over_control`이 활성화되어 있어야 합니다. 🕵️ 주의: ⚠️ 일부 조명은 잘못된 '켜짐' 상태를 나타낼 수 있으며, 이로 인해 조명이 예상치 못하게 켜질 수 있습니다. 이러한 문제가 발생하면 이 기능을 비활성화하세요.",
|
||||||
"sunset_offset": "일몰 오프셋",
|
"autoreset_control_seconds": "자동 제어 리셋 초",
|
||||||
"brightness_mode": "밝기 모드",
|
"only_once": "한 번만: 조명을 켤 때만 조정 (`true`) 또는 계속해서 조정 (`false`). 🔄",
|
||||||
"brightness_mode_time_dark": "어두울 때 밝기 모드 시간",
|
"adapt_only_on_bare_turn_on": "초기 켜짐 시 조정만: 조명을 처음 켤 때. `true`로 설정하면 `light.turn_on`이 색상이나 밝기를 지정하지 않고 호출될 때만 AL이 조정합니다. ❌🌈 예를 들어, 장면을 활성화할 때 조정을 방지합니다. `false`로 설정하면, AL은 초기 `service_data`에 색상이나 밝기의 존재 여부와 관계없이 조정합니다. `take_over_control`이 활성화되어 있어야 합니다. 🕵️",
|
||||||
"brightness_mode_time_light": "밝을 때 밝기 모드 시간",
|
"separate_turn_on_commands": "분리된 켜기 명령 사용: 일부 조명 유형에 필요한 색상과 밝기에 대해 별도의 `light.turn_on` 호출을 사용합니다. 🔀",
|
||||||
"take_over_control": "제어 인계: 다른 소스가 조명이 켜져 있고 조정 중일 때 `light.turn_on`을 호출하면 적응형 조명을 비활성화합니다. 이는 매 `간격`마다 `homeassistant.update_entity`를 호출합니다! 🔒",
|
"send_split_delay": "분할 전송 지연",
|
||||||
"detect_non_ha_changes": "비HA 변경 감지: `light.turn_on`이 아닌 상태 변경을 감지하고 조정을 중단합니다. `take_over_control`이 활성화되어 있어야 합니다. 🕵️ 주의: ⚠️ 일부 조명은 잘못된 '켜짐' 상태를 나타낼 수 있으며, 이로 인해 조명이 예상치 못하게 켜질 수 있습니다. 이러한 문제가 발생하면 이 기능을 비활성화하세요.",
|
"adapt_delay": "조정 지연",
|
||||||
"autoreset_control_seconds": "자동 제어 리셋 초",
|
"skip_redundant_commands": "중복 명령 건너뛰기: 목표 상태가 이미 조명의 알려진 상태와 동일한 조정 명령을 보내지 않습니다. 네트워크 트래픽을 최소화하고 일부 상황에서 조정 반응성을 향상시킵니다. 📉 물리적 조명 상태가 HA의 기록된 상태와 동기화되지 않는 경우 비활성화하세요.",
|
||||||
"only_once": "한 번만: 조명을 켤 때만 조정 (`true`) 또는 계속해서 조정 (`false`). 🔄",
|
"intercept": "가로채기: 색상과 밝기의 즉각적인 조정을 가능하게 하기 위해 `light.turn_on` 호출을 가로챕니다. 🏎️ 색상과 밝기를 지원하지 않는 조명에 대해 비활성화합니다.",
|
||||||
"adapt_only_on_bare_turn_on": "초기 켜짐 시 조정만: 조명을 처음 켤 때. `true`로 설정하면 `light.turn_on`이 색상이나 밝기를 지정하지 않고 호출될 때만 AL이 조정합니다. ❌🌈 예를 들어, 장면을 활성화할 때 조정을 방지합니다. `false`로 설정하면, AL은 초기 `service_data`에 색상이나 밝기의 존재 여부와 관계없이 조정합니다. `take_over_control`이 활성화되어 있어야 합니다. 🕵️",
|
"multi_light_intercept": "다중 조명 가로채기: 여러 조명을 대상으로 하는 `light.turn_on` 호출을 가로채고 조정합니다. ➗⚠️ 이는 단일 `light.turn_on` 호출을 여러 호출로 분할할 수 있음을 의미합니다. 예를 들어, 조명이 다른 스위치에 있을 때. `intercept`가 활성화되어 있어야 합니다.",
|
||||||
"separate_turn_on_commands": "분리된 켜기 명령 사용: 일부 조명 유형에 필요한 색상과 밝기에 대해 별도의 `light.turn_on` 호출을 사용합니다. 🔀",
|
"include_config_in_attributes": "속성에 구성 포함: `true`로 설정하면 Home Assistant에서 스위치의 모든 옵션을 속성으로 표시합니다. 📝"
|
||||||
"send_split_delay": "분할 전송 지연",
|
},
|
||||||
"adapt_delay": "조정 지연",
|
"data_description": {
|
||||||
"skip_redundant_commands": "중복 명령 건너뛰기: 목표 상태가 이미 조명의 알려진 상태와 동일한 조정 명령을 보내지 않습니다. 네트워크 트래픽을 최소화하고 일부 상황에서 조정 반응성을 향상시킵니다. 📉 물리적 조명 상태가 HA의 기록된 상태와 동기화되지 않는 경우 비활성화하세요.",
|
"initial_transition": "조명이 `off`에서 `on`으로 바뀔 때 첫 번째 전환의 지속 시간, 초 단위. ⏲️",
|
||||||
"intercept": "가로채기: 색상과 밝기의 즉각적인 조정을 가능하게 하기 위해 `light.turn_on` 호출을 가로챕니다. 🏎️ 색상과 밝기를 지원하지 않는 조명에 대해 비활성화합니다.",
|
"sleep_rgb_or_color_temp": "수면 모드에서 `\"rgb_color\"` 또는 `\"color_temp\"` 사용. 🌙",
|
||||||
"multi_light_intercept": "다중 조명 가로채기: 여러 조명을 대상으로 하는 `light.turn_on` 호출을 가로채고 조정합니다. ➗⚠️ 이는 단일 `light.turn_on` 호출을 여러 호출로 분할할 수 있음을 의미합니다. 예를 들어, 조명이 다른 스위치에 있을 때. `intercept`가 활성화되어 있어야 합니다.",
|
"sleep_rgb_color": "수면 모드에서 RGB 색상 (sleep_rgb_or_color_temp가 \"rgb_color\"일 때 사용). 🌈",
|
||||||
"include_config_in_attributes": "속성에 구성 포함: `true`로 설정하면 Home Assistant에서 스위치의 모든 옵션을 속성으로 표시합니다. 📝"
|
"sleep_transition": "\"수면 모드\"가 전환될 때 전환 기간, 초 단위. 😴",
|
||||||
},
|
"sunrise_time": "일출 시간을 고정된 시간 (HH:MM:SS)으로 설정. 🌅",
|
||||||
"data_description": {
|
"min_sunrise_time": "가장 이른 가상 일출 시간 (HH:MM:SS)을 설정하여 더 늦은 일출을 허용. 🌅",
|
||||||
"initial_transition": "조명이 `off`에서 `on`으로 바뀔 때 첫 번째 전환의 지속 시간, 초 단위. ⏲️",
|
"max_sunrise_time": "가장 늦은 가상 일출 시간 (HH:MM:SS)을 설정하여 더 일찍 일출을 허용. 🌅",
|
||||||
"sleep_rgb_or_color_temp": "수면 모드에서 `\"rgb_color\"` 또는 `\"color_temp\"` 사용. 🌙",
|
"sunrise_offset": "양수 또는 음수 오프셋(초)으로 일출 시간을 조정. ⏰",
|
||||||
"sleep_rgb_color": "수면 모드에서 RGB 색상 (sleep_rgb_or_color_temp가 \"rgb_color\"일 때 사용). 🌈",
|
"sunset_time": "일몰 시간을 고정된 시간 (HH:MM:SS)으로 설정. 🌇",
|
||||||
"sleep_transition": "\"수면 모드\"가 전환될 때 전환 기간, 초 단위. 😴",
|
"min_sunset_time": "가장 이른 가상 일몰 시간 (HH:MM:SS)을 설정하여 더 늦은 일몰을 허용. 🌇",
|
||||||
"sunrise_time": "일출 시간을 고정된 시간 (HH:MM:SS)으로 설정. 🌅",
|
"max_sunset_time": "가장 늦은 가상 일몰 시간 (HH:MM:SS)을 설정하여 더 일찍 일몰을 허용. 🌇",
|
||||||
"min_sunrise_time": "가장 이른 가상 일출 시간 (HH:MM:SS)을 설정하여 더 늦은 일출을 허용. 🌅",
|
"sunset_offset": "양수 또는 음수 오프셋(초)으로 일몰 시간을 조정. ⏰",
|
||||||
"max_sunrise_time": "가장 늦은 가상 일출 시간 (HH:MM:SS)을 설정하여 더 일찍 일출을 허용. 🌅",
|
"brightness_mode": "사용할 밝기 모드. 가능한 값은 `default`, `linear`, `tanh` (uses `brightness_mode_time_dark` and `brightness_mode_time_light`). 📈",
|
||||||
"sunrise_offset": "양수 또는 음수 오프셋(초)으로 일출 시간을 조정. ⏰",
|
"brightness_mode_time_dark": "(`brightness_mode='default'`인 경우 무시됨) 일출/일몰 전/후에 밝기를 높이거나 낮추는 데 걸리는 시간, 초 단위. 📈📉",
|
||||||
"sunset_time": "일몰 시간을 고정된 시간 (HH:MM:SS)으로 설정. 🌇",
|
"brightness_mode_time_light": "(`brightness_mode='default'`인 경우 무시됨) 일출/일몰 후/전에 밝기를 높이거나 낮추는 데 걸리는 시간, 초 단위. 📈📉.",
|
||||||
"min_sunset_time": "가장 이른 가상 일몰 시간 (HH:MM:SS)을 설정하여 더 늦은 일몰을 허용. 🌇",
|
"autoreset_control_seconds": "특정 초 후에 수동 제어를 자동으로 재설정. 0으로 설정하면 비활성화됩니다. ⏲️",
|
||||||
"max_sunset_time": "가장 늦은 가상 일몰 시간 (HH:MM:SS)을 설정하여 더 일찍 일몰을 허용. 🌇",
|
"send_split_delay": "`separate_turn_on_commands`에 대한 호출 사이의 지연 시간(밀리초)으로, 밝기와 색상을 동시에 설정하지 않는 조명에 대한 지연. ⏲️",
|
||||||
"sunset_offset": "양수 또는 음수 오프셋(초)으로 일몰 시간을 조정. ⏰",
|
"adapt_delay": "조명을 켠 후 적응형 조명이 변경 사항을 적용하기까지의 대기 시간(초). 깜박임을 피하는 데 도움이 될 수 있습니다. ⏲️"
|
||||||
"brightness_mode": "사용할 밝기 모드. 가능한 값은 `default`, `linear`, `tanh` (uses `brightness_mode_time_dark` and `brightness_mode_time_light`). 📈",
|
}
|
||||||
"brightness_mode_time_dark": "(`brightness_mode='default'`인 경우 무시됨) 일출/일몰 전/후에 밝기를 높이거나 낮추는 데 걸리는 시간, 초 단위. 📈📉",
|
}
|
||||||
"brightness_mode_time_light": "(`brightness_mode='default'`인 경우 무시됨) 일출/일몰 후/전에 밝기를 높이거나 낮추는 데 걸리는 시간, 초 단위. 📈📉.",
|
|
||||||
"autoreset_control_seconds": "특정 초 후에 수동 제어를 자동으로 재설정. 0으로 설정하면 비활성화됩니다. ⏲️",
|
|
||||||
"send_split_delay": "`separate_turn_on_commands`에 대한 호출 사이의 지연 시간(밀리초)으로, 밝기와 색상을 동시에 설정하지 않는 조명에 대한 지연. ⏲️",
|
|
||||||
"adapt_delay": "조명을 켠 후 적응형 조명이 변경 사항을 적용하기까지의 대기 시간(초). 깜박임을 피하는 데 도움이 될 수 있습니다. ⏲️"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -22,65 +22,61 @@
|
||||||
"data": {
|
"data": {
|
||||||
"lights": "Lys / Lyskilder",
|
"lights": "Lys / Lyskilder",
|
||||||
"interval": "'interval': tiden mellom oppdateringer (i sekunder)",
|
"interval": "'interval': tiden mellom oppdateringer (i sekunder)",
|
||||||
"max_brightness": "'max_brightness': den høyeste lysstyrken (i prosent) på lysene i løpet av en syklus",
|
"transition": "'transition': varigheten (i sekunder) på overgangen når lysene oppdateres ",
|
||||||
"max_color_temp": "'max_color_temp': den høyeste fargetemperaturen (i kelvin) på lysene i løpet av en syklus",
|
|
||||||
"min_brightness": "'min_brightness': den laveste lysstyrken (i prosent) på lysene i løpet av en syklus",
|
"min_brightness": "'min_brightness': den laveste lysstyrken (i prosent) på lysene i løpet av en syklus",
|
||||||
|
"max_brightness": "'max_brightness': den høyeste lysstyrken (i prosent) på lysene i løpet av en syklus",
|
||||||
"min_color_temp": "'min_color_temp': den laveste fargetemperaturen (i kelvin) på lysene i løpet av en syklus",
|
"min_color_temp": "'min_color_temp': den laveste fargetemperaturen (i kelvin) på lysene i løpet av en syklus",
|
||||||
|
"max_color_temp": "'max_color_temp': den høyeste fargetemperaturen (i kelvin) på lysene i løpet av en syklus",
|
||||||
"sleep_brightness": "'sleep_brightness': lysstyrken på lysene (i prosent) når 'sleep_mode' (søvnmodus) er aktiv",
|
"sleep_brightness": "'sleep_brightness': lysstyrken på lysene (i prosent) når 'sleep_mode' (søvnmodus) er aktiv",
|
||||||
"sleep_color_temp": "'sleep_color_temp': fargetemperaturen på lysene (i kelvin) når 'sleep_mode' (søvnmodus) er aktiv",
|
"sleep_color_temp": "'sleep_color_temp': fargetemperaturen på lysene (i kelvin) når 'sleep_mode' (søvnmodus) er aktiv"
|
||||||
"transition": "'transition': varigheten (i sekunder) på overgangen når lysene oppdateres "
|
|
||||||
},
|
},
|
||||||
"data_description": {
|
"data_description": {
|
||||||
"sleep_brightness": "Lysstyrkeprosent på lysene i sove modus.",
|
"interval": "Frekvens til å tilpasse lys, i sekunder.",
|
||||||
"sleep_color_temp": "Fargetemperatur i sove modus (brukes når `sleep_rgb_or_color_temp` er `color_temp`) i Kelvin.",
|
|
||||||
"transition": "Varighet på overgang når lysene endres, i sekunder.",
|
"transition": "Varighet på overgang når lysene endres, i sekunder.",
|
||||||
"interval": "Frekvens til å tilpasse lys, i sekunder."
|
"sleep_brightness": "Lysstyrkeprosent på lysene i sove modus.",
|
||||||
|
"sleep_color_temp": "Fargetemperatur i sove modus (brukes når `sleep_rgb_or_color_temp` er `color_temp`) i Kelvin."
|
||||||
},
|
},
|
||||||
"menu_options": {
|
"sections": {
|
||||||
"advanced": "Konfigurer avanserte innstillinger",
|
"advanced": {
|
||||||
"finish": "Lagre og avslutt"
|
"data": {
|
||||||
}
|
"initial_transition": "'initial_transition': overgangen (i sekunder) når lysene skrus av eller på - eller når 'sleep_state' endres",
|
||||||
},
|
"prefer_rgb_color": "'prefer_rgb_color': benytt rgb i stedet for fargetemperatur dersom det er mulig",
|
||||||
"advanced": {
|
"transition_until_sleep": "transition_until_sleep: Når aktivert, Adaptive lightning vil behandle sove innstillingene som minimum, bevege seg til disse verdiene etter solnedgang.",
|
||||||
"title": "Avanserte innstillinger",
|
"sunrise_time": "'sunrise_time': definer tidspunktet for soloppgang manuelt (i følgende format: TT:MM:SS)",
|
||||||
"description": "Konfigurer avanserte Adaptive Lighting innstillinger. De fleste brukere trenger ikke å endre disse innstillingene.",
|
"sunrise_offset": "'sunrise_offset': hvor lenge før (-) eller etter (+) tidspunktet solen står opp (lokalt) skal defineres som soloppgang (i sekunder)",
|
||||||
"data": {
|
"sunset_time": "'sunset_time': definer tidspunktet for solnedgang manuelt (i følgende format: TT:MM:SS - f. eks: '20:30:00' vil definere tidspunktet for solnegang som halv-ni på kvelden)",
|
||||||
"initial_transition": "'initial_transition': overgangen (i sekunder) når lysene skrus av eller på - eller når 'sleep_state' endres",
|
"sunset_offset": "'sunset_offset': hvor lenge før (-) eller etter (+) tidspunktet solen går ned (lokalt) skal defineres som solnedgang (i sekunder)",
|
||||||
"only_once": "'only_once': anvend innstillingene for adaptiv belysning kun når lysene skrus av eller på",
|
"take_over_control": "'take_over_control': dersom en annen tjeneste enn adaptiv belysning skrur lysene av eller på, vil automatisk adaptering av lyset stoppes inntil lyset (eller den tilhørende bryteren for adaptiv belysning) blir slått av - og på igjen",
|
||||||
"prefer_rgb_color": "'prefer_rgb_color': benytt rgb i stedet for fargetemperatur dersom det er mulig",
|
"detect_non_ha_changes": "'detect_non_ha_changes': registrerer alle endringer i lysstyrke over 10% med opprinnelse utenfor Home Assistant - krever at 'take_over_control' er aktivert (OBS: tilkaller 'homeassistant.update_entity' ved hvert 'interval'!)",
|
||||||
"separate_turn_on_commands": "'separate_turn_on_commands': separer kommandone i 'light.turn_on' for hver attributt (farge, lysstyrke, osv.). Dette kan være nødvendig for enkelte typer lys / lyskilder",
|
"only_once": "'only_once': anvend innstillingene for adaptiv belysning kun når lysene skrus av eller på",
|
||||||
"sunrise_offset": "'sunrise_offset': hvor lenge før (-) eller etter (+) tidspunktet solen står opp (lokalt) skal defineres som soloppgang (i sekunder)",
|
"adapt_only_on_bare_turn_on": "adapt_only_on_bare_on: Når lysene skrues på. Hvis satt til \"sann\", AL vil bare hvis \"light.turn_on\" er aktivert uten spesifisert farge og styrke. Dette f.eks. forhindrer aktivering når en scene aktiveres. Hvis \"false\", AL vil aktivere uansett om farge og stryke er satt av i opprinnelig \"service_data\". Trenger \"take_over_control\" er aktivert. ",
|
||||||
"sunrise_time": "'sunrise_time': definer tidspunktet for soloppgang manuelt (i følgende format: TT:MM:SS)",
|
"separate_turn_on_commands": "'separate_turn_on_commands': separer kommandone i 'light.turn_on' for hver attributt (farge, lysstyrke, osv.). Dette kan være nødvendig for enkelte typer lys / lyskilder",
|
||||||
"sunset_offset": "'sunset_offset': hvor lenge før (-) eller etter (+) tidspunktet solen går ned (lokalt) skal defineres som solnedgang (i sekunder)",
|
"skip_redundant_commands": "skip_redundant_commands: Dropp sending av tilpassnings kommandoer hvor målets tilstand allerede er lik den kjente tilstanden til lyset. Minimerer nettverk trafikk og forbedrer tilpasningens responsitivitet i noen situasjoner. Skru av hvis fysisk tilstand til lyset er ute av synkronisering med HA´s registrere tilstand.",
|
||||||
"sunset_time": "'sunset_time': definer tidspunktet for solnedgang manuelt (i følgende format: TT:MM:SS - f. eks: '20:30:00' vil definere tidspunktet for solnegang som halv-ni på kvelden)",
|
"intercept": "Bryt: Bryt og tilpass `light.turn_on` kall for å aktivere umiddelbar farge og styrke tilpassning. Deaktiver for lys som ikke støtter `light.turn_on` med farge og styrke.",
|
||||||
"take_over_control": "'take_over_control': dersom en annen tjeneste enn adaptiv belysning skrur lysene av eller på, vil automatisk adaptering av lyset stoppes inntil lyset (eller den tilhørende bryteren for adaptiv belysning) blir slått av - og på igjen",
|
"multi_light_intercept": "multi_light_incept: Avskjære og tilpasse \"light.turn_on\" kall til flere lyskilder. Dette kan medføre oppsplitting av et enkelt \"light.turn_on\" kall til flere kall, f.eks når lys tilhører flere brytere. Dette krever at \"intercept\" er aktivert.",
|
||||||
"detect_non_ha_changes": "'detect_non_ha_changes': registrerer alle endringer i lysstyrke over 10% med opprinnelse utenfor Home Assistant - krever at 'take_over_control' er aktivert (OBS: tilkaller 'homeassistant.update_entity' ved hvert 'interval'!)",
|
"include_config_in_attributes": "include_config_in_attributes: Vis alle valg som attributes på bryteren i Home Assistant når satt til `true`."
|
||||||
"transition_until_sleep": "transition_until_sleep: Når aktivert, Adaptive lightning vil behandle sove innstillingene som minimum, bevege seg til disse verdiene etter solnedgang.",
|
},
|
||||||
"skip_redundant_commands": "skip_redundant_commands: Dropp sending av tilpassnings kommandoer hvor målets tilstand allerede er lik den kjente tilstanden til lyset. Minimerer nettverk trafikk og forbedrer tilpasningens responsitivitet i noen situasjoner. Skru av hvis fysisk tilstand til lyset er ute av synkronisering med HA´s registrere tilstand.",
|
"data_description": {
|
||||||
"adapt_only_on_bare_turn_on": "adapt_only_on_bare_on: Når lysene skrues på. Hvis satt til \"sann\", AL vil bare hvis \"light.turn_on\" er aktivert uten spesifisert farge og styrke. Dette f.eks. forhindrer aktivering når en scene aktiveres. Hvis \"false\", AL vil aktivere uansett om farge og stryke er satt av i opprinnelig \"service_data\". Trenger \"take_over_control\" er aktivert. ",
|
"initial_transition": "Varighet på første overgang når lysene endres fra `off` til `on` i sekunder.",
|
||||||
"intercept": "Bryt: Bryt og tilpass `light.turn_on` kall for å aktivere umiddelbar farge og styrke tilpassning. Deaktiver for lys som ikke støtter `light.turn_on` med farge og styrke.",
|
"sleep_rgb_or_color_temp": "Bruk enten `\"rgb_color\"` eller `\"color_temp\"` i sove modus.",
|
||||||
"multi_light_intercept": "multi_light_incept: Avskjære og tilpasse \"light.turn_on\" kall til flere lyskilder. Dette kan medføre oppsplitting av et enkelt \"light.turn_on\" kall til flere kall, f.eks når lys tilhører flere brytere. Dette krever at \"intercept\" er aktivert.",
|
"sleep_rgb_color": "RGB farger i sove modus (brukes når \"sleep_rgb_or_color_temp\" er \"rgb_color\")",
|
||||||
"include_config_in_attributes": "include_config_in_attributes: Vis alle valg som attributes på bryteren i Home Assistant når satt til `true`."
|
"sleep_transition": "Varighet på overgang når \"sleep mode\" er aktivert i sekunder.",
|
||||||
},
|
"sunrise_time": "Sett et fast tidspunkt (TT:MM:SS) for soloppgang.",
|
||||||
"data_description": {
|
"min_sunrise_time": "Sett tidligste virituelle tidspunkt for soloppgang (TT:MM:SS), muliggjør for senere soloppganger",
|
||||||
"sunrise_offset": "Juster soloppgang tidspunkt med en positiv eller negativ forskyvning i sekunder. ⏰",
|
"max_sunrise_time": "Sett det seneste virituelle tidspunktet for soloppgang (TT:MM:SS), muliggjør for tidligere soloppganger.",
|
||||||
"sunset_offset": "Juster soloppgang tidspunkt med en positiv eller negativ forskyvning i sekunder. ⏰",
|
"sunrise_offset": "Juster soloppgang tidspunkt med en positiv eller negativ forskyvning i sekunder. ⏰",
|
||||||
"sleep_rgb_or_color_temp": "Bruk enten `\"rgb_color\"` eller `\"color_temp\"` i sove modus.",
|
"sunset_time": "Sett et fast tidspunkt (TT:MM:SS) for solnedgang.",
|
||||||
"sleep_rgb_color": "RGB farger i sove modus (brukes når \"sleep_rgb_or_color_temp\" er \"rgb_color\")",
|
"min_sunset_time": "Sett det tidligste virituelle tidspunktet for solnedgang (TT:MM:SS), muliggjør for senere solnedgang.",
|
||||||
"initial_transition": "Varighet på første overgang når lysene endres fra `off` til `on` i sekunder.",
|
"max_sunset_time": "Sett det seneste virituelle tidspunktet for solnedgang (TT:MM:SS), muliggjør for tidligere solnedgang.",
|
||||||
"sunset_time": "Sett et fast tidspunkt (TT:MM:SS) for solnedgang.",
|
"sunset_offset": "Juster soloppgang tidspunkt med en positiv eller negativ forskyvning i sekunder. ⏰",
|
||||||
"sleep_transition": "Varighet på overgang når \"sleep mode\" er aktivert i sekunder.",
|
"brightness_mode": "Hvilken lysstyrke moduse skal brukes. Mulige verdier er `default`, `linear`, and `tanh` (bruker `brightness_mode_time_dark` og `brightness_mode_time_light`).",
|
||||||
"sunrise_time": "Sett et fast tidspunkt (TT:MM:SS) for soloppgang.",
|
"brightness_mode_time_dark": "(Ignorere hvis `brightness_mode='default'`) Varigheten i sekunder for å justere opp/ned lysstyrken før/etter soloppgang/solnedgang.",
|
||||||
"min_sunrise_time": "Sett tidligste virituelle tidspunkt for soloppgang (TT:MM:SS), muliggjør for senere soloppganger",
|
"brightness_mode_time_light": "(Ignorere hvis `brightness_mode='default'`) Varigheten i sekunder for å justere opp/ned lysstyrken før/etter soloppgang/solnedgang.",
|
||||||
"max_sunrise_time": "Sett det seneste virituelle tidspunktet for soloppgang (TT:MM:SS), muliggjør for tidligere soloppganger.",
|
"autoreset_control_seconds": "Automatisk reset manuell kontroll etter et gitt antall sekunder. Sett til 0 for å skru av.",
|
||||||
"min_sunset_time": "Sett det tidligste virituelle tidspunktet for solnedgang (TT:MM:SS), muliggjør for senere solnedgang.",
|
"send_split_delay": "Forsinkelse (ms) mellom `separate_turn_on_commands` for lys som ikke støtter simultane styrke og farge innstillinger.",
|
||||||
"max_sunset_time": "Sett det seneste virituelle tidspunktet for solnedgang (TT:MM:SS), muliggjør for tidligere solnedgang.",
|
"adapt_delay": "Ventetid (sekunder) mellom at lyset skrues på og Adaptive Lightning sender endringer. Kan hjelpe til for å unngå blinking."
|
||||||
"brightness_mode": "Hvilken lysstyrke moduse skal brukes. Mulige verdier er `default`, `linear`, and `tanh` (bruker `brightness_mode_time_dark` og `brightness_mode_time_light`).",
|
}
|
||||||
"send_split_delay": "Forsinkelse (ms) mellom `separate_turn_on_commands` for lys som ikke støtter simultane styrke og farge innstillinger.",
|
}
|
||||||
"adapt_delay": "Ventetid (sekunder) mellom at lyset skrues på og Adaptive Lightning sender endringer. Kan hjelpe til for å unngå blinking.",
|
|
||||||
"autoreset_control_seconds": "Automatisk reset manuell kontroll etter et gitt antall sekunder. Sett til 0 for å skru av.",
|
|
||||||
"brightness_mode_time_light": "(Ignorere hvis `brightness_mode='default'`) Varigheten i sekunder for å justere opp/ned lysstyrken før/etter soloppgang/solnedgang.",
|
|
||||||
"brightness_mode_time_dark": "(Ignorere hvis `brightness_mode='default'`) Varigheten i sekunder for å justere opp/ned lysstyrken før/etter soloppgang/solnedgang."
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,13 @@
|
||||||
"data": {
|
"data": {
|
||||||
"name": "Naam"
|
"name": "Naam"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"menu": {
|
||||||
|
"data": {
|
||||||
|
"action": "Actie"
|
||||||
|
},
|
||||||
|
"title": "Maak of dupliceer",
|
||||||
|
"description": "Wil je een nieuwe instantie aanmaken of een bestaande dupliceren?"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"abort": {
|
"abort": {
|
||||||
|
|
@ -18,76 +25,73 @@
|
||||||
"step": {
|
"step": {
|
||||||
"init": {
|
"init": {
|
||||||
"title": "Adaptieve verlichting instellingen",
|
"title": "Adaptieve verlichting instellingen",
|
||||||
"description": "Alle instellingen voor een Adaptieve verlichting component. De optienamen komen overeen met de YAML-instellingen. Er worden geen opties weergegeven als u het item `adaptive_lighting` hebt gedefinieerd in uw YAML-configuratie.\nVoor een demonstratie met interactieve grafieken, parameters en effecten, bezoek [deze web applicatie](https://basnijholt.github.io/adaptive-lighting). Voor verdere details, bekijk de [officiële documentatie](https://github.com/basnijholt/adaptive-lighting#readme).",
|
"description": "Alle instellingen voor een Adaptieve verlichting component. De optienamen komen overeen met de YAML-instellingen. Er worden geen opties weergegeven als u het item `adaptive_lighting` hebt gedefinieerd in uw YAML-configuratie.\nVoor een demonstratie met interactieve grafieken, parameters en effecten, bezoek [deze web applicatie]({webapp_url}). Voor verdere details, bekijk de [officiële documentatie]({docs_url}).",
|
||||||
"data": {
|
"data": {
|
||||||
"lights": "Lampen: lijst van `light` entiteiten om te bedienen (kan leeg zijn). 🌟",
|
"lights": "Lampen: lijst van `light` entiteiten om te bedienen (kan leeg zijn). 🌟",
|
||||||
"interval": "interval: Tijd tussen switch-updates. (seconden)",
|
"interval": "interval: Tijd tussen switch-updates. (seconden)",
|
||||||
"max_brightness": "max_brightness: Hoogste helderheid van lichten tijdens een cyclus. (%)",
|
"transition": "Overgangstijd bij het aanbrengen van een wijziging op de lichten (seconden)",
|
||||||
"max_color_temp": "max_color_temp: Koudste tint van de kleurtemperatuurcyclus. (kelvin)",
|
|
||||||
"min_brightness": "min_brightness: Laagste helderheid van lichten tijdens een cyclus. (%)",
|
"min_brightness": "min_brightness: Laagste helderheid van lichten tijdens een cyclus. (%)",
|
||||||
|
"max_brightness": "max_brightness: Hoogste helderheid van lichten tijdens een cyclus. (%)",
|
||||||
"min_color_temp": "min_color_temp, Warmste tint van de kleurtemperatuurcyclus. (Kelvin)",
|
"min_color_temp": "min_color_temp, Warmste tint van de kleurtemperatuurcyclus. (Kelvin)",
|
||||||
|
"max_color_temp": "max_color_temp: Koudste tint van de kleurtemperatuurcyclus. (kelvin)",
|
||||||
"sleep_brightness": "sleep_brightness, helderheidsinstelling voor slaapstand. (%)",
|
"sleep_brightness": "sleep_brightness, helderheidsinstelling voor slaapstand. (%)",
|
||||||
"sleep_color_temp": "sleep_color_temp: Kleurtemperatuurinstelling voor slaapstand. (kelvin)",
|
"sleep_color_temp": "sleep_color_temp: Kleurtemperatuurinstelling voor slaapstand. (kelvin)"
|
||||||
"transition": "Overgangstijd bij het aanbrengen van een wijziging op de lichten (seconden)"
|
|
||||||
},
|
},
|
||||||
"data_description": {
|
"data_description": {
|
||||||
"interval": "Frequentie om de lampen aan te passen, in seconden. 🔄",
|
"interval": "Frequentie om de lampen aan te passen, in seconden. 🔄",
|
||||||
|
"transition": "Duur van de overgang, in seconden, als lampen aanpassen. 🕑",
|
||||||
"sleep_brightness": "Helderheidspercentage van lampen in slaapstand. 😴",
|
"sleep_brightness": "Helderheidspercentage van lampen in slaapstand. 😴",
|
||||||
"sleep_color_temp": "Kleurtemperatuur in slaapmodus (gebruikt wanneer `sleep_rgb_or_color_temp` gelijk is aan `color_temp`) in Kelvin. 😴",
|
"sleep_color_temp": "Kleurtemperatuur in slaapmodus (gebruikt wanneer `sleep_rgb_or_color_temp` gelijk is aan `color_temp`) in Kelvin. 😴"
|
||||||
"transition": "Duur van de overgang, in seconden, als lampen aanpassen. 🕑"
|
|
||||||
},
|
},
|
||||||
"menu_options": {
|
"sections": {
|
||||||
"advanced": "Geavanceerde opties configureren",
|
"advanced": {
|
||||||
"finish": "Opslaan en voltooien"
|
"data": {
|
||||||
}
|
"initial_transition": "initial_transition: Wanneer lichten van 'uit' naar 'aan' gaan. (seconden)",
|
||||||
},
|
"prefer_rgb_color": "prefer_rgb_color: Gebruik waar mogelijk 'rgb_color' in plaats van 'color_temp'.",
|
||||||
"advanced": {
|
"sleep_rgb_or_color_temp": "sleep_rgb_or_color_temp, gebruik 'rgb_color' of 'color_temp'",
|
||||||
"title": "Geavanceerde instellingen",
|
"sleep_rgb_color": "sleep_rgb_color, in RGB",
|
||||||
"description": "Configureer geavanceerde Adaptive Lighting opties. De meeste gebruikers hoeven deze instellingen niet te wijzigen.",
|
"sleep_transition": "sleep_transition: Wanneer 'sleep_state' verandert. (seconden)",
|
||||||
"data": {
|
"transition_until_sleep": "transition_until_sleep: Wanneer ingeschakeld, zal Adaptieve verlichting de slaapinstellingen behandelen als het minimum, overgaand naar deze waarden na zonsondergang. 🌙",
|
||||||
"initial_transition": "initial_transition: Wanneer lichten van 'uit' naar 'aan' gaan. (seconden)",
|
"sunrise_time": "sunrise_time: Handmatige wijziging van de zonsopgangstijd, indien 'Geen', wordt de werkelijke zonsopgangstijd op uw locatie gebruikt (UU:MM:SS)",
|
||||||
"sleep_transition": "sleep_transition: Wanneer 'sleep_state' verandert. (seconden)",
|
"max_sunrise_time": "max_sunrise_time: handmatige aanpassing van de maximale zonsopgangstijd, indien 'Geen', wordt de werkelijke zonsopgangstijd op uw locatie gebruikt (UU:MM:SS)",
|
||||||
"only_once": "only_once: pas de verlichting alleen aan wanneer u ze aanzet.",
|
"sunrise_offset": "sunrise_offset: Hoe lang voor(-) of na(+) zonsopgang uitvoeren (+/- seconden)",
|
||||||
"prefer_rgb_color": "prefer_rgb_color: Gebruik waar mogelijk 'rgb_color' in plaats van 'color_temp'.",
|
"sunset_time": "sunset_time: handmatige onderdrukking van de zonsondergangstijd, indien 'Geen', wordt de werkelijke zonsopgangstijd op uw locatie gebruikt (UU:MM:SS)",
|
||||||
"separate_turn_on_commands": "separate_turn_on_commands: Scheid de commando's voor elk attribuut (kleur, helderheid, enz.) in 'light.turn_on' (vereist voor sommige lampen).",
|
"min_sunset_time": "min_sunset_time: handmatige onderdrukking van de minimale zonsondergangstijd, indien 'Geen', wordt de werkelijke zonsondergangstijd op uw locatie gebruikt (UU:MM:SS)",
|
||||||
"send_split_delay": "send_split_delay: wacht tussen commando's (milliseconden), wanneer separate_turn_on_commands wordt gebruikt. Kan ervoor zorgen dat beide commando's correct door de lamp worden afgehandeld.",
|
"sunset_offset": "sunset_offset: Hoe lang voor(-) of na(+) zonsondergang uitvoeren (+/- seconden)",
|
||||||
"sleep_rgb_or_color_temp": "sleep_rgb_or_color_temp, gebruik 'rgb_color' of 'color_temp'",
|
"take_over_control": "take_over_control: Als iets anders dan Adaptieve verlichting 'light.turn_on' roept wanneer een lamp al aan is, stop dan met het aanpassen van het licht totdat het (of de schakelaar) uit -> aan gaat.",
|
||||||
"sleep_rgb_color": "sleep_rgb_color, in RGB",
|
"detect_non_ha_changes": "detect_non_ha_changes: Detecteert en stopt aanpassingen voor`light.turn_on` statuswijzigingen. Vereist dat`take_over_control` is ingeschakeld. 🕵️ Voorzichtig: ⚠️ Sommige lampen kunnen een 'aan' status vals aangeven, wat kan leiden tot onverwacht inschakelen van lampen. Schakel deze functie uit als je dergelijke problemen tegenkomt.",
|
||||||
"sunrise_offset": "sunrise_offset: Hoe lang voor(-) of na(+) zonsopgang uitvoeren (+/- seconden)",
|
"only_once": "only_once: pas de verlichting alleen aan wanneer u ze aanzet.",
|
||||||
"sunrise_time": "sunrise_time: Handmatige wijziging van de zonsopgangstijd, indien 'Geen', wordt de werkelijke zonsopgangstijd op uw locatie gebruikt (UU:MM:SS)",
|
"adapt_only_on_bare_turn_on": "adapt_only_on_bare_turn_on: Bij het initieel inschakelen van de lampen. Als dit op `true` is ingesteld, past Av alleen aan als `light.turn_on` wordt aangeroepen zonder een kleur of helderheid te specificeren. ❌🌈 Dit voorkomt bijvoorbeeld aanpassing bij het activeren van een scène. Als het `false` is, past Av aan ongeacht de aanwezigheid van kleur of helderheid in de initiële `service_data`. `take_over_control` moet ingeschakeld zijn. 🕵️",
|
||||||
"max_sunrise_time": "max_sunrise_time: handmatige aanpassing van de maximale zonsopgangstijd, indien 'Geen', wordt de werkelijke zonsopgangstijd op uw locatie gebruikt (UU:MM:SS)",
|
"separate_turn_on_commands": "separate_turn_on_commands: Scheid de commando's voor elk attribuut (kleur, helderheid, enz.) in 'light.turn_on' (vereist voor sommige lampen).",
|
||||||
"sunset_offset": "sunset_offset: Hoe lang voor(-) of na(+) zonsondergang uitvoeren (+/- seconden)",
|
"send_split_delay": "send_split_delay: wacht tussen commando's (milliseconden), wanneer separate_turn_on_commands wordt gebruikt. Kan ervoor zorgen dat beide commando's correct door de lamp worden afgehandeld.",
|
||||||
"sunset_time": "sunset_time: handmatige onderdrukking van de zonsondergangstijd, indien 'Geen', wordt de werkelijke zonsopgangstijd op uw locatie gebruikt (UU:MM:SS)",
|
"adapt_delay": "adapt_delay: wachttijd tussen het inschakelen van het licht (seconden) en het aanbrengen van wijzigingen in de lichtstatus door Adaptieve verlichting. Kan flikkering voorkomen.",
|
||||||
"min_sunset_time": "min_sunset_time: handmatige onderdrukking van de minimale zonsondergangstijd, indien 'Geen', wordt de werkelijke zonsondergangstijd op uw locatie gebruikt (UU:MM:SS)",
|
"skip_redundant_commands": "skip_redundant_commands: Sla het verzenden van aanpassingscommando's over waarvan de doelstatus al gelijk is aan de bekende status van de lamp. Minimaliseert netwerkverkeer en verbetert de responsiviteit van de aanpassing in sommige situaties. 📉Schakel uit als de fysieke lichtstatus niet meer synchroon loopt met de door HA geregistreerde status.",
|
||||||
"take_over_control": "take_over_control: Als iets anders dan Adaptieve verlichting 'light.turn_on' roept wanneer een lamp al aan is, stop dan met het aanpassen van het licht totdat het (of de schakelaar) uit -> aan gaat.",
|
"intercept": "intercept: Onderschep en pas `light.turn_on` oproepen aan om directe kleur- en helderheidsaanpassing mogelijk te maken. 🏎️ Schakel uit voor lampen die `light.turn_on` niet ondersteunen met kleur en helderheid.",
|
||||||
"detect_non_ha_changes": "detect_non_ha_changes: Detecteert en stopt aanpassingen voor`light.turn_on` statuswijzigingen. Vereist dat`take_over_control` is ingeschakeld. 🕵️ Voorzichtig: ⚠️ Sommige lampen kunnen een 'aan' status vals aangeven, wat kan leiden tot onverwacht inschakelen van lampen. Schakel deze functie uit als je dergelijke problemen tegenkomt.",
|
"multi_light_intercept": "multi_light_intercept: Onderschep en pas `light.turn_on` oproepen aan die gericht zijn op meerdere lampen. ➗⚠️ Dit kan resulteren in het opsplitsen van een enkele `light.turn_on` call in meerdere calls, bijvoorbeeld wanneer lampen zich in verschillende schakelaars bevinden. Vereist dat `intercept` is ingeschakeld.",
|
||||||
"adapt_delay": "adapt_delay: wachttijd tussen het inschakelen van het licht (seconden) en het aanbrengen van wijzigingen in de lichtstatus door Adaptieve verlichting. Kan flikkering voorkomen.",
|
"include_config_in_attributes": "include_config_in_attributes: Toon alle opties als attributen op de schakelaar in Home Assistant wanneer ingesteld op `true`. 📝"
|
||||||
"adapt_only_on_bare_turn_on": "adapt_only_on_bare_turn_on: Bij het initieel inschakelen van de lampen. Als dit op `true` is ingesteld, past Av alleen aan als `light.turn_on` wordt aangeroepen zonder een kleur of helderheid te specificeren. ❌🌈 Dit voorkomt bijvoorbeeld aanpassing bij het activeren van een scène. Als het `false` is, past Av aan ongeacht de aanwezigheid van kleur of helderheid in de initiële `service_data`. `take_over_control` moet ingeschakeld zijn. 🕵️",
|
},
|
||||||
"transition_until_sleep": "transition_until_sleep: Wanneer ingeschakeld, zal Adaptieve verlichting de slaapinstellingen behandelen als het minimum, overgaand naar deze waarden na zonsondergang. 🌙",
|
"data_description": {
|
||||||
"skip_redundant_commands": "skip_redundant_commands: Sla het verzenden van aanpassingscommando's over waarvan de doelstatus al gelijk is aan de bekende status van de lamp. Minimaliseert netwerkverkeer en verbetert de responsiviteit van de aanpassing in sommige situaties. 📉Schakel uit als de fysieke lichtstatus niet meer synchroon loopt met de door HA geregistreerde status.",
|
"initial_transition": "Duur van de eerste overgang wanneer de lampen van `uit` naar `aan`gaan, in seconden. ⏲️",
|
||||||
"intercept": "intercept: Onderschep en pas `light.turn_on` oproepen aan om directe kleur- en helderheidsaanpassing mogelijk te maken. 🏎️ Schakel uit voor lampen die `light.turn_on` niet ondersteunen met kleur en helderheid.",
|
"sleep_rgb_or_color_temp": "Gebruik één van beide `\"rgb_color\"` of `\"color_temp\"` in slaapstand. 🌙",
|
||||||
"include_config_in_attributes": "include_config_in_attributes: Toon alle opties als attributen op de schakelaar in Home Assistant wanneer ingesteld op `true`. 📝",
|
"sleep_rgb_color": "RGB kleur in slaapstand (wordt gebruikt wanneer `sleep_rgb_or_color_temp` gelijk is aan \"rgb_color\"). 🌈",
|
||||||
"multi_light_intercept": "multi_light_intercept: Onderschep en pas `light.turn_on` oproepen aan die gericht zijn op meerdere lampen. ➗⚠️ Dit kan resulteren in het opsplitsen van een enkele `light.turn_on` call in meerdere calls, bijvoorbeeld wanneer lampen zich in verschillende schakelaars bevinden. Vereist dat `intercept` is ingeschakeld."
|
"sleep_transition": "Duur van de overgang in seconden, als slaapstand wordt geactiveerd. 😴",
|
||||||
},
|
"sunrise_time": "Stel een vaste tijd (HH:MM:SS) in voor zonsopkomst. 🌅",
|
||||||
"data_description": {
|
"min_sunrise_time": "Stel de tijd (HH:MM:SS) in voor de meest vroege virtuele zonsopkomst, maakt latere zonsopkomsten mogelijk. 🌅",
|
||||||
"sunrise_offset": "Pas de zonsopkomsttijd aan met een positieve of negatieve offset in seconden. ⏰",
|
"max_sunrise_time": "Stel de tijd (HH:MM:SS) in voor de laatste virtuele zonsopkomst, maakt eerdere zonsopkomsten mogelijk. 🌅",
|
||||||
"sunset_offset": "Pas de tijd van zonsondergang aan met een positieve of negatieve verschuiving in seconden. ⏰",
|
"sunrise_offset": "Pas de zonsopkomsttijd aan met een positieve of negatieve offset in seconden. ⏰",
|
||||||
"sleep_transition": "Duur van de overgang in seconden, als slaapstand wordt geactiveerd. 😴",
|
"sunset_time": "Stel een vaste tijd (HH:MM:SS) in voor zonsondergang. 🌇",
|
||||||
"autoreset_control_seconds": "Herstel de handmatige bediening automatisch na een aantal seconden. Stel in op 0 om uit te schakelen.",
|
"min_sunset_time": "Stel de tijd (HH:MM:SS) in voor de meest vroege virtuele zonsondergang, maakt latere zonsondergangen mogelijk. 🌇",
|
||||||
"brightness_mode": "Helderheidsmodus om te gebruiken. Mogelijke waarden zijn `default`, `linear` en `tanh` (gebruikt `brightness_mode_time_dark` en `brightness_mode_time_light`). 📈",
|
"max_sunset_time": "Stel de tijd (HH:MM:SS) in voor de laatste virtuele zonsondergang, maakt eerdere zonsondergangen mogelijk. 🌇",
|
||||||
"send_split_delay": "Vertraging (ms) tussen `separate_turn_on_commands` voor lampen die geen gelijktijdige helderheids- en kleurinstelling ondersteunen. ⏲️",
|
"sunset_offset": "Pas de tijd van zonsondergang aan met een positieve of negatieve verschuiving in seconden. ⏰",
|
||||||
"initial_transition": "Duur van de eerste overgang wanneer de lampen van `uit` naar `aan`gaan, in seconden. ⏲️",
|
"brightness_mode": "Helderheidsmodus om te gebruiken. Mogelijke waarden zijn `default`, `linear` en `tanh` (gebruikt `brightness_mode_time_dark` en `brightness_mode_time_light`). 📈",
|
||||||
"sleep_rgb_or_color_temp": "Gebruik één van beide `\"rgb_color\"` of `\"color_temp\"` in slaapstand. 🌙",
|
"brightness_mode_time_dark": "(Negeer wanneer `brightness_mode='default'`) De duur in seconden van oplopende/aflopende helderheid na/voor zonsopkomst/zonsondergang. 📈📉.",
|
||||||
"min_sunset_time": "Stel de tijd (HH:MM:SS) in voor de meest vroege virtuele zonsondergang, maakt latere zonsondergangen mogelijk. 🌇",
|
"brightness_mode_time_light": "(Negeer wanneer `brightness_mode='default'`) De duur in seconden van oplopende/aflopende helderheid na/voor zonsopkomst/zonsondergang. 📈📉.",
|
||||||
"min_sunrise_time": "Stel de tijd (HH:MM:SS) in voor de meest vroege virtuele zonsopkomst, maakt latere zonsopkomsten mogelijk. 🌅",
|
"take_over_control_mode": "De adaptie pauzeermodus wanneer andere bronnen de helderheid en/of kleur van lampen veranderen. `pause_all` pauzeert altijd verandering van zowel helderheid als kleur. `pause_changed` pauzeert alleen de verandering van de extern veranderde eigenschappen en blijft onveranderde eigenschappen aanpassen, bijv. doorgaan met kleur veranderen als alleen helderheid extern is veranderd.",
|
||||||
"adapt_delay": "Wachttijd in (seconden) tussen het aanzetten van de lamp en het toepassen van Adaptieve verlichting veranderingen. Het kan helpen om knipperen tegen te gaan. ⏲️",
|
"autoreset_control_seconds": "Herstel de handmatige bediening automatisch na een aantal seconden. Stel in op 0 om uit te schakelen.",
|
||||||
"sleep_rgb_color": "RGB kleur in slaapstand (wordt gebruikt wanneer `sleep_rgb_or_color_temp` gelijk is aan \"rgb_color\"). 🌈",
|
"send_split_delay": "Vertraging (ms) tussen `separate_turn_on_commands` voor lampen die geen gelijktijdige helderheids- en kleurinstelling ondersteunen. ⏲️",
|
||||||
"brightness_mode_time_light": "(Negeer wanneer `brightness_mode='default'`) De duur in seconden van oplopende/aflopende helderheid na/voor zonsopkomst/zonsondergang. 📈📉.",
|
"adapt_delay": "Wachttijd in (seconden) tussen het aanzetten van de lamp en het toepassen van Adaptieve verlichting veranderingen. Het kan helpen om knipperen tegen te gaan. ⏲️"
|
||||||
"sunset_time": "Stel een vaste tijd (HH:MM:SS) in voor zonsondergang. 🌇",
|
}
|
||||||
"max_sunset_time": "Stel de tijd (HH:MM:SS) in voor de laatste virtuele zonsondergang, maakt eerdere zonsondergangen mogelijk. 🌇",
|
}
|
||||||
"sunrise_time": "Stel een vaste tijd (HH:MM:SS) in voor zonsopkomst. 🌅",
|
|
||||||
"brightness_mode_time_dark": "(Negeer wanneer `brightness_mode='default'`) De duur in seconden van oplopende/aflopende helderheid na/voor zonsopkomst/zonsondergang. 📈📉.",
|
|
||||||
"max_sunrise_time": "Stel de tijd (HH:MM:SS) in voor de laatste virtuele zonsopkomst, maakt eerdere zonsopkomsten mogelijk. 🌅"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
@ -185,6 +189,9 @@
|
||||||
},
|
},
|
||||||
"min_sunset_time": {
|
"min_sunset_time": {
|
||||||
"description": "Stel de tijd (HH:MM:SS) in voor de meest vroege virtuele zonsondergang, maakt latere zonsondergangen mogelijk. 🌇"
|
"description": "Stel de tijd (HH:MM:SS) in voor de meest vroege virtuele zonsondergang, maakt latere zonsondergangen mogelijk. 🌇"
|
||||||
|
},
|
||||||
|
"take_over_control_mode": {
|
||||||
|
"description": "De adaptie pauzeermodus wanneer andere bronnen de helderheid en/of kleur van lampen veranderen. `pause_all` pauzeert altijd verandering van zowel helderheid als kleur. `pause_changed` pauzeert alleen de verandering van de extern veranderde eigenschappen en blijft onveranderde eigenschappen aanpassen, bijv. doorgaan met kleur veranderen als alleen helderheid extern is veranderd."
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"description": "Wijzig alle gewenste instellingen in de schakelaar. Alle opties hier zijn hetzelfde als in de configuratie."
|
"description": "Wijzig alle gewenste instellingen in de schakelaar. Alle opties hier zijn hetzelfde als in de configuratie."
|
||||||
|
|
|
||||||
|
|
@ -18,70 +18,66 @@
|
||||||
"step": {
|
"step": {
|
||||||
"init": {
|
"init": {
|
||||||
"title": "Opcje adaptacyjnego oświetlenia",
|
"title": "Opcje adaptacyjnego oświetlenia",
|
||||||
"description": "Konfiguracja komponentu Adaptacyjnego oświetlenia. Nazwy opcji odpowiadają ustawieniom YAML. Żadne opcje nie są wyświetlane, jeśli są zdefiniowane w konfiguracji YAML. Aby zobaczyć interaktywne wykresy demonstrujące działanie parametrów odwiedź [tą aplikację webową](https://basnijholt.github.io/adaptive-lighting). Aby zobaczyć więcej szczegółów odwiedź [oficjalną dokumentację](https://github.com/basnijholt/adaptive-lighting#readme).",
|
"description": "Konfiguracja komponentu Adaptacyjnego oświetlenia. Nazwy opcji odpowiadają ustawieniom YAML. Żadne opcje nie są wyświetlane, jeśli są zdefiniowane w konfiguracji YAML. Aby zobaczyć interaktywne wykresy demonstrujące działanie parametrów odwiedź [tą aplikację webową]({webapp_url}). Aby zobaczyć więcej szczegółów odwiedź [oficjalną dokumentację]({docs_url}).",
|
||||||
"data": {
|
"data": {
|
||||||
"lights": "lights: Lista `entity_id`, które mają być kontrolowane (może być pusta). 🌟",
|
"lights": "lights: Lista `entity_id`, które mają być kontrolowane (może być pusta). 🌟",
|
||||||
"interval": "interval: Time between switch updates. (sekund)",
|
"interval": "interval: Time between switch updates. (sekund)",
|
||||||
"max_brightness": "max_brightness: Maksymalna jasność (w procentach). 💡",
|
"transition": "Transition time when applying a change to the lights (sekund)",
|
||||||
"max_color_temp": "max_color_temp: Najzimniejsza temperatura barwowa (w Kelwinach). ❄️",
|
|
||||||
"min_brightness": "min_brightness: Minimalna jasność (w procentach). 💡",
|
"min_brightness": "min_brightness: Minimalna jasność (w procentach). 💡",
|
||||||
|
"max_brightness": "max_brightness: Maksymalna jasność (w procentach). 💡",
|
||||||
"min_color_temp": "min_color_temp: Najcieplejsza temperatura barwowa (w Kelwinach). 🔥",
|
"min_color_temp": "min_color_temp: Najcieplejsza temperatura barwowa (w Kelwinach). 🔥",
|
||||||
|
"max_color_temp": "max_color_temp: Najzimniejsza temperatura barwowa (w Kelwinach). ❄️",
|
||||||
"sleep_brightness": "sleep_brightness, Brightness setting for Sleep Mode. (%)",
|
"sleep_brightness": "sleep_brightness, Brightness setting for Sleep Mode. (%)",
|
||||||
"sleep_color_temp": "sleep_color_temp: Color temperature setting for Sleep Mode. (Kelvin)",
|
"sleep_color_temp": "sleep_color_temp: Color temperature setting for Sleep Mode. (Kelvin)"
|
||||||
"transition": "Transition time when applying a change to the lights (sekund)"
|
|
||||||
},
|
},
|
||||||
"data_description": {
|
"data_description": {
|
||||||
"interval": "Częstotliwość adaptacji świateł w sekundach. 🔄",
|
"interval": "Częstotliwość adaptacji świateł w sekundach. 🔄",
|
||||||
"transition": "Długość przejścia do nowego stanu (w sekundach). 🕑",
|
"transition": "Długość przejścia do nowego stanu (w sekundach). 🕑",
|
||||||
"sleep_color_temp": "Temperatura barwowa w trybie spania (używane gdy `sleep_rgb_or_color_temp` jest `color_temp`) (w Kelwinach). 😴",
|
"sleep_brightness": "Jasność świateł w trybie spania (w procentach). 😴",
|
||||||
"sleep_brightness": "Jasność świateł w trybie spania (w procentach). 😴"
|
"sleep_color_temp": "Temperatura barwowa w trybie spania (używane gdy `sleep_rgb_or_color_temp` jest `color_temp`) (w Kelwinach). 😴"
|
||||||
},
|
},
|
||||||
"menu_options": {
|
"sections": {
|
||||||
"advanced": "Skonfiguruj opcje zaawansowane",
|
"advanced": {
|
||||||
"finish": "Zapisz i zakończ"
|
"data": {
|
||||||
}
|
"initial_transition": "initial_transition: When lights turn 'off' to 'on'. (sekund)",
|
||||||
},
|
"prefer_rgb_color": "prefer_rgb_color: Czy w miarę możliwości preferować regulację kolorów RGB zamiast regulacji temperatury barwowej światła. 🌈",
|
||||||
"advanced": {
|
"sleep_transition": "sleep_transition: When 'sleep_state' changes. (sekund)",
|
||||||
"title": "Ustawienia zaawansowane",
|
"transition_until_sleep": "transition_until_sleep: Gdy włączone, Adaptacyjne oświetlenie będzie traktowało ustawienia spania jako minimalne i przejdzie do nich po zachodzie słońca. 🌙",
|
||||||
"description": "Skonfiguruj zaawansowane opcje Adaptive Lighting. Większość użytkowników nie musi zmieniać tych ustawień.",
|
"sunrise_time": "sunrise_time: Manual override of the sunrise time, if 'None', it uses the actual sunrise time at your location (HH:MM:SS)",
|
||||||
"data": {
|
"sunrise_offset": "sunrise_offset: How long before(-) or after(+) to define the sunrise point of the cycle (+/- sekund)",
|
||||||
"initial_transition": "initial_transition: When lights turn 'off' to 'on'. (sekund)",
|
"sunset_time": "sunset_time: Manual override of the sunset time, if 'None', it uses the actual sunset time at your location (HH:MM:SS)",
|
||||||
"sleep_transition": "sleep_transition: When 'sleep_state' changes. (sekund)",
|
"sunset_offset": "sunset_offset: How long before(-) or after(+) to define the sunset point of the cycle (+/- sekund)",
|
||||||
"only_once": "only_once: Adaptuj światło tylko podczas włączenia (`true`) lub adaptuj cały czas (`false`). 🔄",
|
"take_over_control": "take_over_control: Wyłącz adaptowanie oświetlenia, kiedy inna usługa wywoła `light.turn_on`, gdy oświetlenie jest już włączone. Zauważ, że to wywołuje `homeassistant.update_entity` co`interval`! 🔒",
|
||||||
"prefer_rgb_color": "prefer_rgb_color: Czy w miarę możliwości preferować regulację kolorów RGB zamiast regulacji temperatury barwowej światła. 🌈",
|
"detect_non_ha_changes": "detect_non_ha_changes: Wykrywa i zatrzymuje adaptacje oświetlenia przy zmianach nie pochodzących od `light.turn_on`. Wymaga aktywnego `take_over_control`. 🕵️ Uwaga: ⚠️ Niektóre światła mogą błędnie wskazywać stan \"on\", co może powodować nieoczekiwane włączanie się świateł. Wyłącz to ustawienie, jeżeli doświadczasz takich objawów.",
|
||||||
"separate_turn_on_commands": "separate_turn_on_commands: Używaj oddzielnych wywołań `light.turn_on` dla koloru i jasności, wymagane dla niektórych typów świateł. 🔀",
|
"only_once": "only_once: Adaptuj światło tylko podczas włączenia (`true`) lub adaptuj cały czas (`false`). 🔄",
|
||||||
"sunrise_offset": "sunrise_offset: How long before(-) or after(+) to define the sunrise point of the cycle (+/- sekund)",
|
"adapt_only_on_bare_turn_on": "adapt_only_on_bare_turn_on: Gdy włączone (`true`) to adaptacyjne oświetlenie zastosuje adaptacje tylko jeżeli `light.turn_on` jest wywołane bez konkretnego koloru lub jasności. ❌🌈 To ustawienie zapobiega między innymi adaptacji, gdy aktywowana jest scena. Gdy wyłączone (`false`), adaptacyjne oświetlenie zastosuje adaptacje niezależnie czy `service_data` zawiera kolor lub jasność. Potrzebuje włączonej opcji `take_over_control`. 🕵️",
|
||||||
"sunrise_time": "sunrise_time: Manual override of the sunrise time, if 'None', it uses the actual sunrise time at your location (HH:MM:SS)",
|
"separate_turn_on_commands": "separate_turn_on_commands: Używaj oddzielnych wywołań `light.turn_on` dla koloru i jasności, wymagane dla niektórych typów świateł. 🔀",
|
||||||
"sunset_offset": "sunset_offset: How long before(-) or after(+) to define the sunset point of the cycle (+/- sekund)",
|
"skip_redundant_commands": "skip_redundant_commands: Pomiń wysyłanie polecenia adaptacji, jeżeli stan światła jest taki sam jak docelowy stan adaptacji. Minimalizuje to ruch sieciowy oraz w niektórych przypadkach poprawia szybkość działania. 📉 Wyłącz, jeżeli faktyczny stan światła się nie pokrywa z tym który widnieje w Home Assistant.",
|
||||||
"sunset_time": "sunset_time: Manual override of the sunset time, if 'None', it uses the actual sunset time at your location (HH:MM:SS)",
|
"intercept": "intercept: Przechwyć i zaadaptuj wywołanie `light.turn_on`, aby błyskawicznie dostosować kolor i jasność. 🏎️ Wyłącz dla świateł, które nie akceptują wywołania `light.turn_on` zawierającego kolor i jasność.",
|
||||||
"take_over_control": "take_over_control: Wyłącz adaptowanie oświetlenia, kiedy inna usługa wywoła `light.turn_on`, gdy oświetlenie jest już włączone. Zauważ, że to wywołuje `homeassistant.update_entity` co`interval`! 🔒",
|
"multi_light_intercept": "multi_light_intercept: Przechwyć i zaadaptuj wywołanie `light.turn_on`, które dotyczą wielu świateł. ➗⚠️ Może to powodować rozdzielenie pojedynczego wywołania `light.turn_on` na wiele wywołań, na przykład gdy światła są przypisane do rożnych instancji. Wymaga włączonej opcji `intercept`.",
|
||||||
"detect_non_ha_changes": "detect_non_ha_changes: Wykrywa i zatrzymuje adaptacje oświetlenia przy zmianach nie pochodzących od `light.turn_on`. Wymaga aktywnego `take_over_control`. 🕵️ Uwaga: ⚠️ Niektóre światła mogą błędnie wskazywać stan \"on\", co może powodować nieoczekiwane włączanie się świateł. Wyłącz to ustawienie, jeżeli doświadczasz takich objawów.",
|
"include_config_in_attributes": "include_config_in_attributes: Gdy włączone (`true`) pokaż ustawienia jako atrybuty w encji przełącznika w Home Assistant. 📝"
|
||||||
"transition_until_sleep": "transition_until_sleep: Gdy włączone, Adaptacyjne oświetlenie będzie traktowało ustawienia spania jako minimalne i przejdzie do nich po zachodzie słońca. 🌙",
|
},
|
||||||
"adapt_only_on_bare_turn_on": "adapt_only_on_bare_turn_on: Gdy włączone (`true`) to adaptacyjne oświetlenie zastosuje adaptacje tylko jeżeli `light.turn_on` jest wywołane bez konkretnego koloru lub jasności. ❌🌈 To ustawienie zapobiega między innymi adaptacji, gdy aktywowana jest scena. Gdy wyłączone (`false`), adaptacyjne oświetlenie zastosuje adaptacje niezależnie czy `service_data` zawiera kolor lub jasność. Potrzebuje włączonej opcji `take_over_control`. 🕵️",
|
"data_description": {
|
||||||
"skip_redundant_commands": "skip_redundant_commands: Pomiń wysyłanie polecenia adaptacji, jeżeli stan światła jest taki sam jak docelowy stan adaptacji. Minimalizuje to ruch sieciowy oraz w niektórych przypadkach poprawia szybkość działania. 📉 Wyłącz, jeżeli faktyczny stan światła się nie pokrywa z tym który widnieje w Home Assistant.",
|
"initial_transition": "Długość pierwszego przejścia, gdy światło zostanie przełączone z `off` na `on` (w sekundach). ⏲️",
|
||||||
"include_config_in_attributes": "include_config_in_attributes: Gdy włączone (`true`) pokaż ustawienia jako atrybuty w encji przełącznika w Home Assistant. 📝",
|
"sleep_rgb_or_color_temp": "Użyj `\"rgb_color\"` albo `\"color_temp\"` w trybie spania. 🌙",
|
||||||
"intercept": "intercept: Przechwyć i zaadaptuj wywołanie `light.turn_on`, aby błyskawicznie dostosować kolor i jasność. 🏎️ Wyłącz dla świateł, które nie akceptują wywołania `light.turn_on` zawierającego kolor i jasność.",
|
"sleep_rgb_color": "Kolor RGB w trybie spania (używane, gdy `sleep_rgb_or_color_temp` jest `rgb_color`). 🌈",
|
||||||
"multi_light_intercept": "multi_light_intercept: Przechwyć i zaadaptuj wywołanie `light.turn_on`, które dotyczą wielu świateł. ➗⚠️ Może to powodować rozdzielenie pojedynczego wywołania `light.turn_on` na wiele wywołań, na przykład gdy światła są przypisane do rożnych instancji. Wymaga włączonej opcji `intercept`."
|
"sleep_transition": "Długość przejścia, gdy nastąpi włączenie/wyłączenie \"trybu spania\" (w sekundach). 😴",
|
||||||
},
|
"sunrise_time": "Ustaw stały czas wschodu słońca (HH:MM:SS). 🌅",
|
||||||
"data_description": {
|
"min_sunrise_time": "Ustaw czas najwcześniejszego wirtualnego wschodu słońca (HH:MM:SS), pozwala na opóźnienie wschodu słońca. 🌅",
|
||||||
"initial_transition": "Długość pierwszego przejścia, gdy światło zostanie przełączone z `off` na `on` (w sekundach). ⏲️",
|
"max_sunrise_time": "Ustaw czas najpóźniejszego wirtualnego wschodu słońca (HH:MM:SS), pozwala na przyspieszenie wschodu słońca. 🌅",
|
||||||
"sleep_rgb_or_color_temp": "Użyj `\"rgb_color\"` albo `\"color_temp\"` w trybie spania. 🌙",
|
"sunrise_offset": "Dostosuj czas wschodu słońca - przesunięcie o +/- sekund. ⏰",
|
||||||
"sleep_rgb_color": "Kolor RGB w trybie spania (używane, gdy `sleep_rgb_or_color_temp` jest `rgb_color`). 🌈",
|
"sunset_time": "Ustaw stały czas zachodu słońca (HH:MM:SS). 🌇",
|
||||||
"sleep_transition": "Długość przejścia, gdy nastąpi włączenie/wyłączenie \"trybu spania\" (w sekundach). 😴",
|
"min_sunset_time": "Ustaw czas najwcześniejszego wirtualnego zachodu słońca (HH:MM:SS), pozwala na opóźnienie zachodu słońca. 🌇",
|
||||||
"sunrise_time": "Ustaw stały czas wschodu słońca (HH:MM:SS). 🌅",
|
"max_sunset_time": "Ustaw czas najpóźniejszego wirtualnego zachodu słońca (HH:MM:SS), pozwala na przyspieszenie zachodu słońca. 🌇",
|
||||||
"min_sunrise_time": "Ustaw czas najwcześniejszego wirtualnego wschodu słońca (HH:MM:SS), pozwala na opóźnienie wschodu słońca. 🌅",
|
"sunset_offset": "Dostosuj czas zachodu słońca - przesunięcie o +/- sekund. ⏰",
|
||||||
"max_sunrise_time": "Ustaw czas najpóźniejszego wirtualnego wschodu słońca (HH:MM:SS), pozwala na przyspieszenie wschodu słońca. 🌅",
|
"brightness_mode": "Tryb ustawiania jasności. Dostępne opcje to `default`, `linear` i `tanh` (używa `brightness_mode_time_dark` i `brightness_mode_time_light`). 📈",
|
||||||
"sunrise_offset": "Dostosuj czas wschodu słońca - przesunięcie o +/- sekund. ⏰",
|
"brightness_mode_time_dark": "(Pomijany, gdy `brightness_mode='default'`). Czas w sekundach, kiedy jasność będzie zwiększana przed wschodem słońca/zmniejszana po zachodzie słońca. 📈📉",
|
||||||
"sunset_time": "Ustaw stały czas zachodu słońca (HH:MM:SS). 🌇",
|
"brightness_mode_time_light": "(Pomijany, gdy `brightness_mode='default'`). Czas w sekundach, kiedy jasność będzie zwiększana po wschodzie słońca/zmniejszana przed zachodem słońca. 📈📉",
|
||||||
"min_sunset_time": "Ustaw czas najwcześniejszego wirtualnego zachodu słońca (HH:MM:SS), pozwala na opóźnienie zachodu słońca. 🌇",
|
"autoreset_control_seconds": "Czas, po którym manualna kontrola zostanie wyłączona (w sekundach). Ustaw 0, aby wyłączyć. ⏲️",
|
||||||
"brightness_mode": "Tryb ustawiania jasności. Dostępne opcje to `default`, `linear` i `tanh` (używa `brightness_mode_time_dark` i `brightness_mode_time_light`). 📈",
|
"send_split_delay": "Opóźnienie (w ms) pomiędzy `separate_turn_on_commands` dla świateł, które nie akceptują jednoczesnego ustawiania jasności i koloru. ⏲️",
|
||||||
"max_sunset_time": "Ustaw czas najpóźniejszego wirtualnego zachodu słońca (HH:MM:SS), pozwala na przyspieszenie zachodu słońca. 🌇",
|
"adapt_delay": "Czas (w sekundach) pomiędzy włączeniem światła, a rozpoczęciem adaptowania przez Adaptacyjne oświetlenie. Może pomóc zredukować migotanie. ⏲️"
|
||||||
"sunset_offset": "Dostosuj czas zachodu słońca - przesunięcie o +/- sekund. ⏰",
|
}
|
||||||
"brightness_mode_time_dark": "(Pomijany, gdy `brightness_mode='default'`). Czas w sekundach, kiedy jasność będzie zwiększana przed wschodem słońca/zmniejszana po zachodzie słońca. 📈📉",
|
}
|
||||||
"brightness_mode_time_light": "(Pomijany, gdy `brightness_mode='default'`). Czas w sekundach, kiedy jasność będzie zwiększana po wschodzie słońca/zmniejszana przed zachodem słońca. 📈📉",
|
|
||||||
"autoreset_control_seconds": "Czas, po którym manualna kontrola zostanie wyłączona (w sekundach). Ustaw 0, aby wyłączyć. ⏲️",
|
|
||||||
"send_split_delay": "Opóźnienie (w ms) pomiędzy `separate_turn_on_commands` dla świateł, które nie akceptują jednoczesnego ustawiania jasności i koloru. ⏲️",
|
|
||||||
"adapt_delay": "Czas (w sekundach) pomiędzy włączeniem światła, a rozpoczęciem adaptowania przez Adaptacyjne oświetlenie. Może pomóc zredukować migotanie. ⏲️"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,13 @@
|
||||||
"data": {
|
"data": {
|
||||||
"name": "Nome"
|
"name": "Nome"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"menu": {
|
||||||
|
"data": {
|
||||||
|
"action": "Ação"
|
||||||
|
},
|
||||||
|
"description": "Você deseja criar uma nova instância ou duplicar uma já existente?",
|
||||||
|
"title": "Criar ou Duplicar"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"abort": {
|
"abort": {
|
||||||
|
|
@ -22,46 +29,164 @@
|
||||||
"data": {
|
"data": {
|
||||||
"lights": "luzes",
|
"lights": "luzes",
|
||||||
"interval": "interval: Tempo entre as atualizações do switch. (segundos)",
|
"interval": "interval: Tempo entre as atualizações do switch. (segundos)",
|
||||||
"max_brightness": "max_brightness: Maior brilho das luzes durante um ciclo. (%)",
|
"transition": "Tempo de transição ao aplicar uma mudança nas luzes (segundos)",
|
||||||
"max_color_temp": "max_color_temp: Matiz mais frio do ciclo de temperatura de cor. (Kelvin)",
|
|
||||||
"min_brightness": "min_brightness: Menor brilho das luzes durante um ciclo. (%)",
|
"min_brightness": "min_brightness: Menor brilho das luzes durante um ciclo. (%)",
|
||||||
|
"max_brightness": "max_brightness: Maior brilho das luzes durante um ciclo. (%)",
|
||||||
"min_color_temp": "min_color_temp, matiz mais quente do ciclo de temperatura de cor. (Kelvin)",
|
"min_color_temp": "min_color_temp, matiz mais quente do ciclo de temperatura de cor. (Kelvin)",
|
||||||
|
"max_color_temp": "max_color_temp: Matiz mais frio do ciclo de temperatura de cor. (Kelvin)",
|
||||||
"sleep_brightness": "sleep_brightness, configuração de brilho para o modo de suspensão. (%)",
|
"sleep_brightness": "sleep_brightness, configuração de brilho para o modo de suspensão. (%)",
|
||||||
"sleep_color_temp": "sleep_color_temp: configuração de temperatura de cor para o modo de suspensão. (Kelvin)",
|
"sleep_color_temp": "sleep_color_temp: configuração de temperatura de cor para o modo de suspensão. (Kelvin)"
|
||||||
"transition": "Tempo de transição ao aplicar uma mudança nas luzes (segundos)"
|
|
||||||
},
|
},
|
||||||
"menu_options": {
|
"data_description": {
|
||||||
"advanced": "Configurar opções avançadas",
|
"interval": "Frequência, em segundos, para adaptar as luzes. 🔄",
|
||||||
"finish": "Salvar e finalizar"
|
"transition": "Duração da transição, em segundos, quando as luzes mudam. 🕑",
|
||||||
|
"sleep_brightness": "Porcentagem do brilho das luzes no modo dormir. 😴",
|
||||||
|
"sleep_color_temp": "Temperatura de Cor no modo dormir (usado quando `sleep_rgb_or_color_temp` é `color_temp`) em Kelvin. 😴"
|
||||||
},
|
},
|
||||||
"data_description": {}
|
"sections": {
|
||||||
},
|
"advanced": {
|
||||||
"advanced": {
|
"data": {
|
||||||
"title": "Configurações avançadas",
|
"initial_transition": "initial_transition: Quando as luzes mudam de 'off' para 'on'. (segundos)",
|
||||||
"description": "Configure as opções avançadas do Adaptive Lighting. A maioria dos usuários não precisa alterar essas configurações.",
|
"prefer_rgb_color": "prefer_rgb_color: Use 'rgb_color' em vez de 'color_temp' quando possível.",
|
||||||
"data": {
|
"sleep_transition": "sleep_transition: Quando 'sleep_state' muda. (segundos)",
|
||||||
"initial_transition": "initial_transition: Quando as luzes mudam de 'off' para 'on'. (segundos)",
|
"transition_until_sleep": "transition_until_sleep: Quando ativada, a Iluminação Adaptativa considerará as configurações de sono como o valor mínimo, transicionando para esses valores após o pôr do sol. 🌙",
|
||||||
"sleep_transition": "sleep_transition: Quando 'sleep_state' muda. (segundos)",
|
"sunrise_time": "sunrise_time: substituição manual do horário do nascer do sol, se 'Nenhum', ele usa o horário real do nascer do sol em sua localização (HH:MM:SS)",
|
||||||
"only_once": "only_once: Apenas adapte as luzes ao ligá-las.",
|
"sunrise_offset": "sunrise_offset: Quanto tempo antes (-) ou depois (+) para definir o ponto do nascer do sol do ciclo (+/- segundos)",
|
||||||
"prefer_rgb_color": "prefer_rgb_color: Use 'rgb_color' em vez de 'color_temp' quando possível.",
|
"sunset_time": "sunset_time: substituição manual do horário do pôr do sol, se 'Nenhum', ele usa o horário real do nascer do sol em sua localização (HH:MM:SS)",
|
||||||
"separate_turn_on_commands": "separar_turn_on_commands: Separe os comandos para cada atributo (cor, brilho, etc.) em 'light.turn_on' (necessário para algumas luzes).",
|
"sunset_offset": "Sunset_offset: Quanto tempo antes (-) ou depois (+) para definir o ponto de pôr do sol do ciclo (+/- segundos)",
|
||||||
"sunrise_offset": "sunrise_offset: Quanto tempo antes (-) ou depois (+) para definir o ponto do nascer do sol do ciclo (+/- segundos)",
|
"take_over_control": "take_over_control: Se qualquer coisa, exceto Adaptive Lighting, chamar 'light.turn_on' quando uma luz já estiver acesa, pare de adaptar essa luz até que ela (ou o interruptor) desligue -> ligue.",
|
||||||
"sunrise_time": "sunrise_time: substituição manual do horário do nascer do sol, se 'Nenhum', ele usa o horário real do nascer do sol em sua localização (HH:MM:SS)",
|
"detect_non_ha_changes": "detect_non_ha_changes: detecta todas as alterações > 10% feitas nas luzes (também fora do HA), requer que 'take_over_control' seja ativado (chama 'homeassistant.update_entity' a cada 'intervalo'!)",
|
||||||
"sunset_offset": "Sunset_offset: Quanto tempo antes (-) ou depois (+) para definir o ponto de pôr do sol do ciclo (+/- segundos)",
|
"only_once": "only_once: Apenas adapte as luzes ao ligá-las.",
|
||||||
"sunset_time": "sunset_time: substituição manual do horário do pôr do sol, se 'Nenhum', ele usa o horário real do nascer do sol em sua localização (HH:MM:SS)",
|
"adapt_only_on_bare_turn_on": "adapt_only_on_bare_turn_on: Ao ligar as luzes inicialmente. Se definido como `true`, a Iluminação Adaptativa se adapta somente se o comando `light.turn_on` for chamado sem especificar cor ou brilho. ❌🌈 Isso, por exemplo, impede a adaptação ao ativar uma cena. Se false, a Iluminação Adaptativa se adapta independentemente da presença de cor ou brilho nos dados iniciais do `service_data`. Precisa de `take_over_control` ativado. 🕵️",
|
||||||
"take_over_control": "take_over_control: Se qualquer coisa, exceto Adaptive Lighting, chamar 'light.turn_on' quando uma luz já estiver acesa, pare de adaptar essa luz até que ela (ou o interruptor) desligue -> ligue.",
|
"separate_turn_on_commands": "separar_turn_on_commands: Separe os comandos para cada atributo (cor, brilho, etc.) em 'light.turn_on' (necessário para algumas luzes).",
|
||||||
"detect_non_ha_changes": "detect_non_ha_changes: detecta todas as alterações > 10% feitas nas luzes (também fora do HA), requer que 'take_over_control' seja ativado (chama 'homeassistant.update_entity' a cada 'intervalo'!)",
|
"skip_redundant_commands": "skip_redundant_commands: Deixar de enviar comandos de adaptação cujo estado alvo já seja igual ao estado atual da luz. Minimiza o tráfego de rede e melhora a responsividade da adaptação em algumas situações. 📉Desative se os estados físicos das luzes podem ficar diferentes do estado registrado no HA.",
|
||||||
"skip_redundant_commands": "skip_redundant_commands: Deixar de enviar comandos de adaptação cujo estado alvo já seja igual ao estado atual da luz. Minimiza o tráfego de rede e melhora a responsividade da adaptação em algumas situações. 📉Desative se os estados físicos das luzes podem ficar diferentes do estado registrado no HA.",
|
"intercept": "intercept: Interceptar e adaptar os chamados `light.turn_on` para ativar a adaptação instantânea de cor e brilho. 🏎️ Desative para luzes que não suportam `light.turn_on` com cor e brilho.",
|
||||||
"transition_until_sleep": "transition_until_sleep: Quando ativada, a Iluminação Adaptativa considerará as configurações de sono como o valor mínimo, transicionando para esses valores após o pôr do sol. 🌙",
|
"multi_light_intercept": "multi_light_intercept: Interceptar e adaptar chamadas de 'light.turn_on' que visem múltiplas luzes. ➗⚠️ Isso pode resultar na divisão de uma única chamada de 'light.turn_on' em múltiplas chamadas, por exemplo, quando as luzes estão em interruptores diferentes. Exige que 'intercept' esteja ativado.",
|
||||||
"adapt_only_on_bare_turn_on": "adapt_only_on_bare_turn_on: Ao ligar as luzes inicialmente. Se definido como `true`, a Iluminação Adaptativa se adapta somente se o comando `light.turn_on` for chamado sem especificar cor ou brilho. ❌🌈 Isso, por exemplo, impede a adaptação ao ativar uma cena. Se false, a Iluminação Adaptativa se adapta independentemente da presença de cor ou brilho nos dados iniciais do `service_data`. Precisa de `take_over_control` ativado. 🕵️",
|
"include_config_in_attributes": "include_config_in_attributes: Mostra todas as opções como atributos no interruptor do Home Assistant quando está definido para `true`. 📝"
|
||||||
"intercept": "intercept: Interceptar e adaptar os chamados `light.turn_on` para ativar a adaptação instantânea de cor e brilho. 🏎️ Desative para luzes que não suportam `light.turn_on` com cor e brilho."
|
},
|
||||||
},
|
"data_description": {
|
||||||
"data_description": {}
|
"initial_transition": "Duração da primeira transição, em segundos, quando as luzes alternarem de 'desligado' para 'ligado'. ⏲️",
|
||||||
|
"sleep_rgb_or_color_temp": "Use `\"rgb_color\"` ou `\"color_temp\"` no modo dormir. 🌙",
|
||||||
|
"sleep_transition": "Duração da transição em segundos quando o modo dormir é alterado. 😴",
|
||||||
|
"sunrise_time": "Define um horário fixo (HH:MM:SS) para o nascer do sol. 🌅",
|
||||||
|
"min_sunrise_time": "Defina o horário virtual mais cedo do nascer do sol (HH:MM:SS), permitindo nasceres do sol mais tarde. 🌅",
|
||||||
|
"max_sunrise_time": "Defina o horário virtual mais recente do nascer do sol (HH:MM:SS), permitindo nasceres do sol mais cedo. 🌅",
|
||||||
|
"sunrise_offset": "Ajusta o horário do nascer do sol com um deslocamento positivo ou negativo em segundos. ⏰",
|
||||||
|
"sunset_time": "Definir um horário fixo (HH:MM:SS) para o pôr do sol. 🌇",
|
||||||
|
"min_sunset_time": "Defina o horário virtual mais cedo do pôr do sol (HH:MM:SS), permitindo pores do sol mais tarde. 🌇",
|
||||||
|
"max_sunset_time": "Defina o horário virtual mais recente do pôr do sol (HH:MM:SS), permitindo pores do sol mais cedo. 🌇",
|
||||||
|
"sunset_offset": "Ajusta o horário do pôr do sol com um deslocamento positivo ou negativo em segundos. ⏰",
|
||||||
|
"autoreset_control_seconds": "Redefine automaticamente o controle manual após um período de tempo definido em segundos. Defina 0 para desabilitar. ⏲️",
|
||||||
|
"adapt_delay": "Tempo de espera (segundos) entre a luz ligar e a aplicação das mudanças da iluminação adaptativa. Pode ajudar a evitar que a luz pisque. ⏲️"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"error": {
|
"error": {
|
||||||
"option_error": "Opção inválida",
|
"option_error": "Opção inválida",
|
||||||
"entity_missing": "Uma luz selecionada não foi encontrada"
|
"entity_missing": "Uma luz selecionada não foi encontrada"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"services": {
|
||||||
|
"change_switch_settings": {
|
||||||
|
"fields": {
|
||||||
|
"sleep_transition": {
|
||||||
|
"description": "Duração da transição em segundos quando o \"modo dormir\" é alternado. 😴"
|
||||||
|
},
|
||||||
|
"entity_id": {
|
||||||
|
"description": "ID da entidade do switch. 📝"
|
||||||
|
},
|
||||||
|
"max_brightness": {
|
||||||
|
"description": "Porcentagem máxima do brilho. 💡"
|
||||||
|
},
|
||||||
|
"autoreset_control_seconds": {
|
||||||
|
"description": "Redefine automaticamente o controle manual após um período de tempo definido em segundos. Defina 0 para desabilitar. ⏲️"
|
||||||
|
},
|
||||||
|
"transition": {
|
||||||
|
"description": "Duração da transição, em segundos, quando as luzes mudam. 🕑"
|
||||||
|
},
|
||||||
|
"sleep_brightness": {
|
||||||
|
"description": "Porcentagem do brilho das luzes no modo dormir. 😴"
|
||||||
|
},
|
||||||
|
"turn_on_lights": {
|
||||||
|
"description": "Se deve ligar as luzes que estão atualmente desligadas. 🔆"
|
||||||
|
},
|
||||||
|
"initial_transition": {
|
||||||
|
"description": "Duração da primeira transição, em segundos, quando as luzes alternarem de 'desligado' para 'ligado'. ⏲️"
|
||||||
|
},
|
||||||
|
"sunset_offset": {
|
||||||
|
"description": "Ajusta o horário do pôr do sol com um deslocamento positivo ou negativo em segundos. ⏰"
|
||||||
|
},
|
||||||
|
"sunrise_offset": {
|
||||||
|
"description": "Ajusta o horário do nascer do sol com um deslocamento positivo ou negativo em segundos. ⏰"
|
||||||
|
},
|
||||||
|
"sunset_time": {
|
||||||
|
"description": "Definir um horário fixo (HH:MM:SS) para o pôr do sol. 🌇"
|
||||||
|
},
|
||||||
|
"max_color_temp": {
|
||||||
|
"description": "Temperatura de cor mais fria em Kelvin. ❄️"
|
||||||
|
},
|
||||||
|
"sleep_color_temp": {
|
||||||
|
"description": "Temperatura de Cor no modo dormir (usado quando `sleep_rgb_or_color_temp` é `color_temp`) em Kelvin. 😴"
|
||||||
|
},
|
||||||
|
"sunrise_time": {
|
||||||
|
"description": "Define um horário fixo (HH:MM:SS) para o nascer do sol. 🌅"
|
||||||
|
},
|
||||||
|
"include_config_in_attributes": {
|
||||||
|
"description": "Exibe todas as opções como atributos no interruptor no Home Assistant quando definido para `true`. 📝"
|
||||||
|
},
|
||||||
|
"sleep_rgb_or_color_temp": {
|
||||||
|
"description": "Use `\"rgb_color\"` ou `\"color_temp\"` no modo dormir. 🌙"
|
||||||
|
},
|
||||||
|
"adapt_delay": {
|
||||||
|
"description": "Tempo de espera (segundos) entre a luz ligar e a aplicação das mudanças da iluminação adaptativa. Pode ajudar a evitar que a luz pisque. ⏲️"
|
||||||
|
},
|
||||||
|
"separate_turn_on_commands": {
|
||||||
|
"description": "Usa chamada separada de `light.turn_on` para cor e brilho, necessário para alguns tipos de luz. 🔀"
|
||||||
|
},
|
||||||
|
"use_defaults": {
|
||||||
|
"description": "Define os valores padrão não especificados nessa chamada de serviço. Opções: \"current\" (padrão, mantém os valores atuais), \"factory\" (reinicia para os padrões documentados) ou \"configuration\" (retorna aos padrões de configuração do interruptor). ⚙️"
|
||||||
|
},
|
||||||
|
"max_sunrise_time": {
|
||||||
|
"description": "Defina o horário virtual mais recente do nascer do sol (HH:MM:SS), permitindo nasceres do sol mais cedo. 🌅"
|
||||||
|
},
|
||||||
|
"min_sunset_time": {
|
||||||
|
"description": "Defina o horário virtual mais cedo do pôr do sol (HH:MM:SS), permitindo pores do sol mais tarde. 🌇"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"description": "Altere quaisquer configurações que você quiser . Todas as opções aqui são as mesmas que no fluxo de configuração."
|
||||||
|
},
|
||||||
|
"apply": {
|
||||||
|
"fields": {
|
||||||
|
"turn_on_lights": {
|
||||||
|
"description": "Se deve ligar as luzes que estão atualmente desligadas. 🔆"
|
||||||
|
},
|
||||||
|
"lights": {
|
||||||
|
"description": "Uma luz (ou lista de luzes) para aplicar as configurações. 💡"
|
||||||
|
},
|
||||||
|
"transition": {
|
||||||
|
"description": "Duração da transição, em segundos, quando as luzes mudam. 🕑"
|
||||||
|
},
|
||||||
|
"entity_id": {
|
||||||
|
"description": "O 'entity_id' do interruptor com as configurações para aplicar. 📝"
|
||||||
|
},
|
||||||
|
"adapt_brightness": {
|
||||||
|
"description": "Se deve adaptar o brilho da luz. 🌞"
|
||||||
|
},
|
||||||
|
"adapt_color": {
|
||||||
|
"description": "Se deve adaptar a cor das luzes que suportam este recurso. 🌈"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"description": "Aplica as configurações atuais de iluminação adaptativa nas luzes."
|
||||||
|
},
|
||||||
|
"set_manual_control": {
|
||||||
|
"description": "Marque se uma luz é 'controlada manualmente'.",
|
||||||
|
"fields": {
|
||||||
|
"lights": {
|
||||||
|
"description": "entity_id(s) das luzes, se não especificadas, todas as luzes do interruptor são selecionadas. 💡"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -67,7 +67,7 @@
|
||||||
"sleep_brightness": "Porcentagem do brilho da lâmpadas no modo \"sleep mode\"."
|
"sleep_brightness": "Porcentagem do brilho da lâmpadas no modo \"sleep mode\"."
|
||||||
},
|
},
|
||||||
"title": "Opções da Iluminação Adaptativa",
|
"title": "Opções da Iluminação Adaptativa",
|
||||||
"description": "Configure um componente da Iluminação Adaptativa. O nome das opções são as mesmas que as do YML. Se você já definiu essa configuração no YAML, nenhuma opção vai aparecer aqui. Para acessar um gráfico que demonstra o efeito dos parâmetros, acesse [esse app](https://basnijholt.github.io/adaptive-lighting). Para mais detalhes, veja a [documentação oficial](https://github.com/basnijholt/adaptive-lighting#readme).",
|
"description": "Configure um componente da Iluminação Adaptativa. O nome das opções são as mesmas que as do YML. Se você já definiu essa configuração no YAML, nenhuma opção vai aparecer aqui. Para acessar um gráfico que demonstra o efeito dos parâmetros, acesse [esse app]({webapp_url}). Para mais detalhes, veja a [documentação oficial]({docs_url}).",
|
||||||
"data": {
|
"data": {
|
||||||
"lights": "lights: Lista das entity_ids das luzes para serem controladas (pode ser vazia). 🌟",
|
"lights": "lights: Lista das entity_ids das luzes para serem controladas (pode ser vazia). 🌟",
|
||||||
"min_brightness": "min_brightness: Percentagem minima de brilho. 💡",
|
"min_brightness": "min_brightness: Percentagem minima de brilho. 💡",
|
||||||
|
|
@ -75,25 +75,21 @@
|
||||||
"min_color_temp": "min_color_temp: Cor mais quente em Kelvin. 🔥",
|
"min_color_temp": "min_color_temp: Cor mais quente em Kelvin. 🔥",
|
||||||
"max_color_temp": "max_color_temp: Cor mais fria em Kelvin. ❄️"
|
"max_color_temp": "max_color_temp: Cor mais fria em Kelvin. ❄️"
|
||||||
},
|
},
|
||||||
"menu_options": {
|
"sections": {
|
||||||
"advanced": "Configurar opções avançadas",
|
"advanced": {
|
||||||
"finish": "Salvar e terminar"
|
"data": {
|
||||||
}
|
"prefer_rgb_color": "prefer_rgb_color: Quando possível escolher ajuste em RGB em vez de temperatura da cor. 🌈",
|
||||||
},
|
"transition_until_sleep": "transition_until_sleep: Quando ativado, Adaptive Lighting usará as definições do modo noturno como os mínimos, passando para esses valores no por do sol. 🌙",
|
||||||
"advanced": {
|
"take_over_control": "take_over_control: Desativa Adaptive Lighting se alguma fonte chamar`light.turn_on` enquanto as luzes estiverem ligadas e a serem controladas. Tomar nota que esta opção chama o serviço `homeassistant.update_entity` a cada `interval`! 🔒"
|
||||||
"title": "Configurações avançadas",
|
},
|
||||||
"description": "Configure as opções avançadas do Adaptive Lighting. A maioria dos usuários não precisa alterar essas configurações.",
|
"data_description": {
|
||||||
"data": {
|
"sleep_transition": "Duração da transição quando o \"modo dormir\" é alternado em segundos. 😴",
|
||||||
"prefer_rgb_color": "prefer_rgb_color: Quando possível escolher ajuste em RGB em vez de temperatura da cor. 🌈",
|
"sunrise_offset": "Ajustar a hora do nascer do sol com um offset positivo ou negativo em segundos. ⏰",
|
||||||
"transition_until_sleep": "transition_until_sleep: Quando ativado, Adaptive Lighting usará as definições do modo noturno como os mínimos, passando para esses valores no por do sol. 🌙",
|
"sunset_offset": "Ajustar a hora do pôr do sol com um offset positivo ou negativo em segundos. ⏰",
|
||||||
"take_over_control": "take_over_control: Desativa Adaptive Lighting se alguma fonte chamar`light.turn_on` enquanto as luzes estiverem ligadas e a serem controladas. Tomar nota que esta opção chama o serviço `homeassistant.update_entity` a cada `interval`! 🔒"
|
"brightness_mode": "Brilho que irá ser usado. Possíveis valores são `default`, `linear` e `tanh`(usa `brightness_mode_time_dark` e `brightness_mode_time_light`). 📈",
|
||||||
},
|
"autoreset_control_seconds": "Reiniciar o controlo manual automaticamente após um número de segundos. Definir 0 para desativar. ⏲️"
|
||||||
"data_description": {
|
}
|
||||||
"sunrise_offset": "Ajustar a hora do nascer do sol com um offset positivo ou negativo em segundos. ⏰",
|
}
|
||||||
"sunset_offset": "Ajustar a hora do pôr do sol com um offset positivo ou negativo em segundos. ⏰",
|
|
||||||
"sleep_transition": "Duração da transição quando o \"modo dormir\" é alternado em segundos. 😴",
|
|
||||||
"autoreset_control_seconds": "Reiniciar o controlo manual automaticamente após um número de segundos. Definir 0 para desativar. ⏲️",
|
|
||||||
"brightness_mode": "Brilho que irá ser usado. Possíveis valores são `default`, `linear` e `tanh`(usa `brightness_mode_time_dark` e `brightness_mode_time_light`). 📈"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -14,28 +14,24 @@
|
||||||
"step": {
|
"step": {
|
||||||
"init": {
|
"init": {
|
||||||
"data_description": {
|
"data_description": {
|
||||||
"sleep_brightness": "Procentul luminozităţii luminilor în modul 'somn'.",
|
"interval": "Frecvenţa adaptării luminilor, în secunde.",
|
||||||
"interval": "Frecvenţa adaptării luminilor, în secunde."
|
"sleep_brightness": "Procentul luminozităţii luminilor în modul 'somn'."
|
||||||
},
|
},
|
||||||
"title": "Opţiuni Iluminare Adaptivă",
|
"title": "Opţiuni Iluminare Adaptivă",
|
||||||
"data": {},
|
"data": {},
|
||||||
"menu_options": {
|
"sections": {
|
||||||
"advanced": "Configurați opțiunile avansate",
|
"advanced": {
|
||||||
"finish": "Salvați și terminați"
|
"data": {
|
||||||
}
|
"adapt_only_on_bare_turn_on": "adaptează_doar_la_comanda_de_arpindere: La aprinderea iniţială a luminilor. Dacă este activat, IA va adapta luminile doar dacă se invocă 'light.turn_on' fără a specifica culoarea sau luminozitatea. Aceasta, de exemplu, previne adaptarea atunci când se activează o scenă. Dacă este dezactivat,IA va adaptata luminile indiferent de prezența valorilor culorii sau luminozității în service_data. Necesită activarea opţiunii 'preia_controlul. "
|
||||||
},
|
},
|
||||||
"advanced": {
|
"data_description": {
|
||||||
"title": "Setări avansate",
|
"sunrise_offset": "Ajustați ora răsăritului cu un decalaj pozitiv sau negativ în secunde.⏰",
|
||||||
"description": "Configurați opțiunile avansate Adaptive Lighting. Majoritatea utilizatorilor nu trebuie să modifice aceste setări.",
|
"sunset_offset": "Ajustați ora răsăritului cu un decalaj pozitiv sau negativ în secunde.",
|
||||||
"data": {
|
"brightness_mode": "Mod de luminozitate de utilizat. Valorile posibile sunt: 'implicit', 'liniar' şi 'hiperbolic' ( ultilizează 'mod_luminozitate_timp_de_noapte' şi 'mod_luminozitate_timp_de_zi').",
|
||||||
"adapt_only_on_bare_turn_on": "adaptează_doar_la_comanda_de_arpindere: La aprinderea iniţială a luminilor. Dacă este activat, IA va adapta luminile doar dacă se invocă 'light.turn_on' fără a specifica culoarea sau luminozitatea. Aceasta, de exemplu, previne adaptarea atunci când se activează o scenă. Dacă este dezactivat,IA va adaptata luminile indiferent de prezența valorilor culorii sau luminozității în service_data. Necesită activarea opţiunii 'preia_controlul. "
|
"brightness_mode_time_light": "(Se ignoră dacă `modul_de_luminozitate='implicit'`) Durată în secunde a modificării luminozităţii în sus/jos cand poziţia sorelui este înainte sau după răsărit/apus.",
|
||||||
},
|
"autoreset_control_seconds": "Resetare automată al controlului manual după un număr de secunde. Setaţi la 0 pentru a dezactiva."
|
||||||
"data_description": {
|
}
|
||||||
"brightness_mode_time_light": "(Se ignoră dacă `modul_de_luminozitate='implicit'`) Durată în secunde a modificării luminozităţii în sus/jos cand poziţia sorelui este înainte sau după răsărit/apus.",
|
}
|
||||||
"sunrise_offset": "Ajustați ora răsăritului cu un decalaj pozitiv sau negativ în secunde.⏰",
|
|
||||||
"autoreset_control_seconds": "Resetare automată al controlului manual după un număr de secunde. Setaţi la 0 pentru a dezactiva.",
|
|
||||||
"brightness_mode": "Mod de luminozitate de utilizat. Valorile posibile sunt: 'implicit', 'liniar' şi 'hiperbolic' ( ultilizează 'mod_luminozitate_timp_de_noapte' şi 'mod_luminozitate_timp_de_zi').",
|
|
||||||
"sunset_offset": "Ajustați ora răsăritului cu un decalaj pozitiv sau negativ în secunde."
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -22,67 +22,72 @@
|
||||||
"data": {
|
"data": {
|
||||||
"lights": "Осветительные приборы: список источников света, которыми нужно управлять (может быть пустым). 🌟",
|
"lights": "Осветительные приборы: список источников света, которыми нужно управлять (может быть пустым). 🌟",
|
||||||
"interval": "interval: Интервал между обновлениями переключателя. (секунды)",
|
"interval": "interval: Интервал между обновлениями переключателя. (секунды)",
|
||||||
"max_brightness": "max_brightness: Максимальная яркость света во время цикла. (%)",
|
"transition": "Время перехода при применении изменения к источникам света. (секунды)",
|
||||||
"max_color_temp": "max_color_temp: Самый холодный оттенок цветовой температуры во время цикла. (Kelvin)",
|
|
||||||
"min_brightness": "min_brightness: Минимальная яркость света во время цикла. (%)",
|
"min_brightness": "min_brightness: Минимальная яркость света во время цикла. (%)",
|
||||||
|
"max_brightness": "max_brightness: Максимальная яркость света во время цикла. (%)",
|
||||||
"min_color_temp": "min_color_temp: Самый теплый оттенок цветовой температуры во время цикла. (Kelvin)",
|
"min_color_temp": "min_color_temp: Самый теплый оттенок цветовой температуры во время цикла. (Kelvin)",
|
||||||
|
"max_color_temp": "max_color_temp: Самый холодный оттенок цветовой температуры во время цикла. (Kelvin)",
|
||||||
"sleep_brightness": "sleep_brightness: Настройка яркости для Режима Сна (Sleep Mode). (%)",
|
"sleep_brightness": "sleep_brightness: Настройка яркости для Режима Сна (Sleep Mode). (%)",
|
||||||
"sleep_color_temp": "sleep_color_temp: Настройка цветовой температуры для Режима Сна (Sleep Mode). (Kelvin)",
|
"sleep_color_temp": "sleep_color_temp: Настройка цветовой температуры для Режима Сна (Sleep Mode). (Kelvin)"
|
||||||
"transition": "Время перехода при применении изменения к источникам света. (секунды)"
|
|
||||||
},
|
},
|
||||||
"data_description": {
|
"data_description": {
|
||||||
"sleep_color_temp": "Цветовая температура в спящем режиме (используется, когда параметр `sleep_rgb_or_color_temp` имеет значение `color_temp`) в Кельвинах. 😴",
|
|
||||||
"sleep_brightness": "Процент яркости света в спящем режиме. 😴",
|
|
||||||
"interval": "Частота адаптации освещения в секундах. 🔄",
|
"interval": "Частота адаптации освещения в секундах. 🔄",
|
||||||
"transition": "Продолжительность перехода при смене освещения, в секундах. 🕑"
|
"transition": "Продолжительность перехода при смене освещения, в секундах. 🕑",
|
||||||
|
"sleep_brightness": "Процент яркости света в спящем режиме. 😴",
|
||||||
|
"sleep_color_temp": "Цветовая температура в спящем режиме (используется, когда параметр `sleep_rgb_or_color_temp` имеет значение `color_temp`) в Кельвинах. 😴"
|
||||||
},
|
},
|
||||||
"menu_options": {
|
"sections": {
|
||||||
"advanced": "Расширенные настройки",
|
"advanced": {
|
||||||
"finish": "Сохранить и завершить"
|
"data": {
|
||||||
}
|
"initial_transition": "initial_transition: Начальный переход, когда свет переключается с 'off' на 'on'. (секунды)",
|
||||||
},
|
"prefer_rgb_color": "prefer_rgb_color: По возможности использовать 'rgb_color' вместо 'color_temp'.",
|
||||||
"advanced": {
|
"sleep_rgb_or_color_temp": "sleep_rgb_or_color_temp: Использовать либо 'rgb_color', либо 'color_temp' в режиме сна. 🌙",
|
||||||
"title": "Расширенные настройки",
|
"sleep_rgb_color": "sleep_rgb_color: Цвет RGB в режиме сна (используется при 'sleep_rgb_or_color_temp' как 'rgb_color'). 🌈",
|
||||||
"description": "Настройте расширенные параметры адаптивного освещения. Большинству пользователей не нужно изменять эти настройки.",
|
"sleep_transition": "sleep_transition: Когда прибор переходит в Режима Сна (Sleep Mode) и 'sleep_state' изменяется. (секунды)",
|
||||||
"data": {
|
"transition_until_sleep": "transition_until_sleep: когда включено, адаптивное освещение будет рассматривать настройки сна как минимальные, переходя к этим значениям после захода солнца. 🌙",
|
||||||
"initial_transition": "initial_transition: Начальный переход, когда свет переключается с 'off' на 'on'. (секунды)",
|
"sunrise_time": "sunrise_time: Ручное изменение времени восхода солнца, если указано 'None', используется фактическое время восхода в Вашем местоположении. (ЧЧ:ММ:СС)",
|
||||||
"sleep_transition": "sleep_transition: Когда прибор переходит в Режима Сна (Sleep Mode) и 'sleep_state' изменяется. (секунды)",
|
"min_sunrise_time": "min_sunrise_time: Самое раннее время виртуального восхода (ЧЧ:ММ:СС). 🌅",
|
||||||
"only_once": "only_once: Адаптировать свет только при включении.",
|
"max_sunrise_time": "max_sunrise_time: Самое позднее время виртуального восхода (ЧЧ:ММ:СС). 🌅",
|
||||||
"prefer_rgb_color": "prefer_rgb_color: По возможности использовать 'rgb_color' вместо 'color_temp'.",
|
"sunrise_offset": "sunrise_offset: За сколько времени до (-) или после (+) переопределить время восхода во время цикла. (+/- секунды)",
|
||||||
"separate_turn_on_commands": "separate_turn_on_commands: Раздельные команды для каждого атрибута (цвет, яркость и т.д.) в 'light.turn_on' (требуется для некоторых источников света).",
|
"sunset_time": "sunset_time: Ручное изменение времени заката солнца, если указано 'None', используется фактическое время заката в Вашем местоположении. (ЧЧ:ММ:СС)",
|
||||||
"sunrise_offset": "sunrise_offset: За сколько времени до (-) или после (+) переопределить время восхода во время цикла. (+/- секунды)",
|
"min_sunset_time": "min_sunset_time: Самое раннее время виртуального заката (ЧЧ:ММ:СС). 🌇",
|
||||||
"sunrise_time": "sunrise_time: Ручное изменение времени восхода солнца, если указано 'None', используется фактическое время восхода в Вашем местоположении. (ЧЧ:ММ:СС)",
|
"max_sunset_time": "max_sunset_time: Самое позднее время виртуального заката (ЧЧ:ММ:СС). 🌇",
|
||||||
"sunset_offset": "sunset_offset: За сколько времени до (-) или после (+) переопределить время заката во время цикла. (+/- секунды)",
|
"sunset_offset": "sunset_offset: За сколько времени до (-) или после (+) переопределить время заката во время цикла. (+/- секунды)",
|
||||||
"sunset_time": "sunset_time: Ручное изменение времени заката солнца, если указано 'None', используется фактическое время заката в Вашем местоположении. (ЧЧ:ММ:СС)",
|
"brightness_mode": "brightness_mode: Режим яркости для использования (default, linear, tanh). 📈",
|
||||||
"take_over_control": "take_over_control: Если что-либо, кроме Adaptive Lighting, вызывает службу 'light.turn_on', когда свет уже включен, прекратить адаптацию этого осветительного прибора, пока он (или переключатель) не переключится off -> on.",
|
"take_over_control": "take_over_control: Если что-либо, кроме Adaptive Lighting, вызывает службу 'light.turn_on', когда свет уже включен, прекратить адаптацию этого осветительного прибора, пока он (или переключатель) не переключится off -> on.",
|
||||||
"detect_non_ha_changes": "detect_non_ha_changes: Обнаруживает все изменения на >10% примененные к освещению (также и из-за пределов Home Assistant), требует включения 'take_over_control' (вызывает 'homeassistant.update_entity' каждый 'interval'!)",
|
"detect_non_ha_changes": "detect_non_ha_changes: Обнаруживает все изменения на >10% примененные к освещению (также и из-за пределов Home Assistant), требует включения 'take_over_control' (вызывает 'homeassistant.update_entity' каждый 'interval'!)",
|
||||||
"adapt_delay": "Время ожидания между включением света и применением адаптации. Может помочь избежать мерцания. (секунды)",
|
"autoreset_control_seconds": "autoreset_control_seconds: Автосброс ручного управления через X секунд. ⏲️",
|
||||||
"multi_light_intercept": "multi_light_intercept: перехватывает и адаптирует вызовы `light.turn_on`, нацеленные на несколько источников света. ➗⚠️ Это может привести к разделению одного вызова `light.turn_on` на несколько вызовов, например, когда освещение включено в разные выключатели. Требуется, чтобы `перехват` был включен.",
|
"only_once": "only_once: Адаптировать свет только при включении.",
|
||||||
"adapt_only_on_bare_turn_on": "Adapt_only_on_bare_turn_on: При первоначальном включении света. Если установлено значение «true», AL адаптируется только в том случае, если «light.turn_on» вызывается без указания цвета или яркости. ❌🌈 Это, например, предотвращает адаптацию при активации сцены. Если false, AL адаптируется независимо от наличия цвета или яркости в исходных service_data. Требуется включить take_over_control. 🕵️",
|
"adapt_only_on_bare_turn_on": "Adapt_only_on_bare_turn_on: При первоначальном включении света. Если установлено значение «true», AL адаптируется только в том случае, если «light.turn_on» вызывается без указания цвета или яркости. ❌🌈 Это, например, предотвращает адаптацию при активации сцены. Если false, AL адаптируется независимо от наличия цвета или яркости в исходных service_data. Требуется включить take_over_control. 🕵️",
|
||||||
"skip_redundant_commands": "Skip_redundant_commands: Пропустить отправку команд адаптации, целевое состояние которых уже равно известному состоянию источника света. Минимизирует сетевой трафик и улучшает скорость адаптации в некоторых ситуациях. 📉Отключите, если физические состояния освещения не синхронизируются с записанным состоянием HA.",
|
"separate_turn_on_commands": "separate_turn_on_commands: Раздельные команды для каждого атрибута (цвет, яркость и т.д.) в 'light.turn_on' (требуется для некоторых источников света).",
|
||||||
"intercept": "intercept: перехватывать и адаптировать вызовы `light.turn_on` для обеспечения мгновенной адаптации цвета и яркости. 🏎️ Отключите источники света, которые не поддерживают `light.turn_on` с цветом и яркостью.",
|
"send_split_delay": "send_split_delay: Задержка между отдельными командами включения для источников света. ⏲️",
|
||||||
"include_config_in_attributes": "include_config_in_attributes: отображать все параметры в качестве атрибутов на переключателе в Home Assistant, если установлено значение `true`. 📝",
|
"adapt_delay": "Время ожидания между включением света и применением адаптации. Может помочь избежать мерцания. (секунды)",
|
||||||
"transition_until_sleep": "transition_until_sleep: когда включено, адаптивное освещение будет рассматривать настройки сна как минимальные, переходя к этим значениям после захода солнца. 🌙"
|
"skip_redundant_commands": "Skip_redundant_commands: Пропустить отправку команд адаптации, целевое состояние которых уже равно известному состоянию источника света. Минимизирует сетевой трафик и улучшает скорость адаптации в некоторых ситуациях. 📉Отключите, если физические состояния освещения не синхронизируются с записанным состоянием HA.",
|
||||||
},
|
"intercept": "intercept: перехватывать и адаптировать вызовы `light.turn_on` для обеспечения мгновенной адаптации цвета и яркости. 🏎️ Отключите источники света, которые не поддерживают `light.turn_on` с цветом и яркостью.",
|
||||||
"data_description": {
|
"multi_light_intercept": "multi_light_intercept: перехватывает и адаптирует вызовы `light.turn_on`, нацеленные на несколько источников света. ➗⚠️ Это может привести к разделению одного вызова `light.turn_on` на несколько вызовов, например, когда освещение включено в разные выключатели. Требуется, чтобы `перехват` был включен.",
|
||||||
"sleep_rgb_or_color_temp": "Используйте либо `\"rgb_color\"`, либо `\"color_temp\"` в спящем режиме. 🌙",
|
"include_config_in_attributes": "include_config_in_attributes: отображать все параметры в качестве атрибутов на переключателе в Home Assistant, если установлено значение `true`. 📝"
|
||||||
"sleep_transition": "Длительность перехода при переключении \"спящего режима\" в секундах. 😴",
|
},
|
||||||
"autoreset_control_seconds": "Автоматический сброс ручного управления через несколько секунд. Установите значение 0, чтобы отключить. ⏲️",
|
"data_description": {
|
||||||
"min_sunset_time": "Устанавливает самое раннее время виртуального заката (ЧЧ:ММ:СС), чтобы обеспечить более поздние закаты. 🌇",
|
"initial_transition": "Продолжительность первого перехода, когда освещение переключается с `выключено` на `включено` в секундах. ⏲️",
|
||||||
"min_sunrise_time": "Устанавливает самое раннее время виртуального восхода солнца (ЧЧ:ММ:СС), чтобы обеспечить возможность более позднего восхода солнца. 🌅",
|
"sleep_rgb_or_color_temp": "Используйте либо `\"rgb_color\"`, либо `\"color_temp\"` в спящем режиме. 🌙",
|
||||||
"adapt_delay": "Время ожидания (в секундах) между включением света и применением изменений адаптивного освещения. Возможно поможет избежать мерцания. ⏲️",
|
"sleep_rgb_color": "Цвет RGB в спящем режиме (используется, когда параметр `sleep_rgb_or_color_temp` имеет значение \"rgb_color\"). 🌈",
|
||||||
"sleep_rgb_color": "Цвет RGB в спящем режиме (используется, когда параметр `sleep_rgb_or_color_temp` имеет значение \"rgb_color\"). 🌈",
|
"sleep_transition": "Длительность перехода при переключении \"спящего режима\" в секундах. 😴",
|
||||||
"sunrise_offset": "Регулирует время восхода солнца с положительным или отрицательным смещением в секундах. ⏰",
|
"sunrise_time": "Устанавливает фиксированное время (ЧЧ:ММ:СС) восхода солнца. 🌅",
|
||||||
"brightness_mode": "Режим яркости для использования. Возможные значения: `default`, `linear` и `tanh` (используются `brightness_mode_time_dark` и `brightness_mode_time_light`). 📈",
|
"min_sunrise_time": "Устанавливает самое раннее время виртуального восхода солнца (ЧЧ:ММ:СС), чтобы обеспечить возможность более позднего восхода солнца. 🌅",
|
||||||
"brightness_mode_time_light": "(Игнорируется, если `brightness_mode='default'`) Продолжительность в секундах увеличения/уменьшения яркости после/до восхода/заката. 📈📉.",
|
"max_sunrise_time": "Устанавливает последнее время виртуального восхода солнца (ЧЧ:ММ:СС), что позволит восходить раньше. 🌅",
|
||||||
"sunset_offset": "Регулирует время заката с помощью положительного или отрицательного смещения в секундах. ⏰",
|
"sunrise_offset": "Регулирует время восхода солнца с положительным или отрицательным смещением в секундах. ⏰",
|
||||||
"sunset_time": "Устанавливает фиксированное время (ЧЧ:ММ:СС) для заката. 🌇",
|
"sunset_time": "Устанавливает фиксированное время (ЧЧ:ММ:СС) для заката. 🌇",
|
||||||
"max_sunset_time": "Устанавливает последнее время виртуального заката (ЧЧ:ММ:СС), чтобы обеспечить более ранние закаты. 🌇",
|
"min_sunset_time": "Устанавливает самое раннее время виртуального заката (ЧЧ:ММ:СС), чтобы обеспечить более поздние закаты. 🌇",
|
||||||
"sunrise_time": "Устанавливает фиксированное время (ЧЧ:ММ:СС) восхода солнца. 🌅",
|
"max_sunset_time": "Устанавливает последнее время виртуального заката (ЧЧ:ММ:СС), чтобы обеспечить более ранние закаты. 🌇",
|
||||||
"initial_transition": "Продолжительность первого перехода, когда освещение переключается с `выключено` на `включено` в секундах. ⏲️",
|
"sunset_offset": "Регулирует время заката с помощью положительного или отрицательного смещения в секундах. ⏰",
|
||||||
"brightness_mode_time_dark": "(Игнорируется, если `brightness_mode='default'`) Продолжительность в секундах увеличения/уменьшения яркости до/после восхода/заката. 📈📉",
|
"brightness_mode": "Режим яркости для использования. Возможные значения: `default`, `linear` и `tanh` (используются `brightness_mode_time_dark` и `brightness_mode_time_light`). 📈",
|
||||||
"max_sunrise_time": "Устанавливает последнее время виртуального восхода солнца (ЧЧ:ММ:СС), что позволит восходить раньше. 🌅",
|
"brightness_mode_time_dark": "(Игнорируется, если `brightness_mode='default'`) Продолжительность в секундах увеличения/уменьшения яркости до/после восхода/заката. 📈📉",
|
||||||
"send_split_delay": "Задержка (миллисекунды) между отдельными командами поворота для источников света, которые не поддерживают одновременную настройку яркости и цвета. ⏲️"
|
"brightness_mode_time_light": "(Игнорируется, если `brightness_mode='default'`) Продолжительность в секундах увеличения/уменьшения яркости после/до восхода/заката. 📈📉.",
|
||||||
|
"autoreset_control_seconds": "Автоматический сброс ручного управления через несколько секунд. Установите значение 0, чтобы отключить. ⏲️",
|
||||||
|
"send_split_delay": "Задержка (миллисекунды) между отдельными командами поворота для источников света, которые не поддерживают одновременную настройку яркости и цвета. ⏲️",
|
||||||
|
"adapt_delay": "Время ожидания (в секундах) между включением света и применением изменений адаптивного освещения. Возможно поможет избежать мерцания. ⏲️"
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -3,60 +3,56 @@
|
||||||
"step": {
|
"step": {
|
||||||
"init": {
|
"init": {
|
||||||
"data": {
|
"data": {
|
||||||
"max_color_temp": "max_color_temp: Najvyššia teplota svetla (v ˚K). ❄️",
|
|
||||||
"max_brightness": "max_brightness: Najvyšší jas (v %). 💡",
|
|
||||||
"lights": "svetlá: Zoznam svetiel (entity_id), ktoré majú byť ovládané (môže byť prázdny). 🌟",
|
"lights": "svetlá: Zoznam svetiel (entity_id), ktoré majú byť ovládané (môže byť prázdny). 🌟",
|
||||||
"min_brightness": "min_brightness: Najnižší jas (v %). 💡",
|
"min_brightness": "min_brightness: Najnižší jas (v %). 💡",
|
||||||
"min_color_temp": "min_color_temp: Najnižšia teplota svetla (v ˚K). 🔥"
|
"max_brightness": "max_brightness: Najvyšší jas (v %). 💡",
|
||||||
|
"min_color_temp": "min_color_temp: Najnižšia teplota svetla (v ˚K). 🔥",
|
||||||
|
"max_color_temp": "max_color_temp: Najvyššia teplota svetla (v ˚K). ❄️"
|
||||||
},
|
},
|
||||||
"data_description": {
|
"data_description": {
|
||||||
"sleep_color_temp": "Teplota svetla (v ˚K) v režime spánku (pokiaľ `sleep_rgb_or_color_temp` je `color_temp`). 😴",
|
|
||||||
"sleep_brightness": "Jas svetiel pri režime spánku (v %). 😴",
|
|
||||||
"interval": "Frekvencia s akou prispôsobovať svetlá (v sekundách). 🔄",
|
"interval": "Frekvencia s akou prispôsobovať svetlá (v sekundách). 🔄",
|
||||||
"transition": "Trvanie prechodu, keď sú svetlá zmenené (v sekundách). ⏲️"
|
"transition": "Trvanie prechodu, keď sú svetlá zmenené (v sekundách). ⏲️",
|
||||||
|
"sleep_brightness": "Jas svetiel pri režime spánku (v %). 😴",
|
||||||
|
"sleep_color_temp": "Teplota svetla (v ˚K) v režime spánku (pokiaľ `sleep_rgb_or_color_temp` je `color_temp`). 😴"
|
||||||
},
|
},
|
||||||
"title": "Nastavenia Adaptívneho osvetlenia",
|
"title": "Nastavenia Adaptívneho osvetlenia",
|
||||||
"description": "Nastavte komponentu Adaptívneho osvetlenia. Názvy nastavení sú zhodné s názvami v súbore YAML. Ak ste túto položku nastavili už v YAML, tak tu sa nezobrazia žiadne možnosti nastavenia. Interaktívne grafy, ktoré zobrazujú vplyv nastavení, nájdete na [tejto webovej aplikácii](https://basnijholt.github.io/adaptive-lighting). Ďalšie informácie nájdete v [oficiálnej dokumentácii](https://github.com/basnijholt/adaptive-lighting#readme).",
|
"description": "Nastavte komponentu Adaptívneho osvetlenia. Názvy nastavení sú zhodné s názvami v súbore YAML. Ak ste túto položku nastavili už v YAML, tak tu sa nezobrazia žiadne možnosti nastavenia. Interaktívne grafy, ktoré zobrazujú vplyv nastavení, nájdete na [tejto webovej aplikácii]({webapp_url}). Ďalšie informácie nájdete v [oficiálnej dokumentácii]({docs_url}).",
|
||||||
"menu_options": {
|
"sections": {
|
||||||
"advanced": "Konfigurovať pokročilé možnosti",
|
"advanced": {
|
||||||
"finish": "Uložiť a dokončiť"
|
"data": {
|
||||||
}
|
"prefer_rgb_color": "prefer_rgb_color: Či preferovať nastavenie cez RGB než nastavením teploty svetla, ak je to možné. 🌈",
|
||||||
},
|
"transition_until_sleep": "transition_until_sleep: Keď je funkcia povolená, Adaptívne osvetlenie bude považovať nastavenia režimu spánku ako minimum, a na tieto hodnoty prejde po západe slnka. 🌙",
|
||||||
"advanced": {
|
"take_over_control": "take_over_control: Ak sú svetlá zapnuté a prispôsobované a niečo zavolá službu `light.turn_on`, dôjde k vypnutiu Adaptívneho osvetlenia. Poznámka: Zapnutie tejto voľby spôsobí volanie služby `homeassistant.update_entity` každý `interval`! 🔒",
|
||||||
"title": "Pokročilé nastavenia",
|
"detect_non_ha_changes": "detect_non_ha_changes: Deteguje a zastaví prispôbovanie pre zmeny mimo `light.turn_on`. Vyžaduje zapnutie `take_over_control`. 🕵️ Upozornenie: ⚠️ Niektoré svetlá môžu falošne indikovať zapnutý stav, čo spôsobí, že sa svetlo neočakávane zapne. Ak narazíte na tento problém, funkciu vypnite.",
|
||||||
"description": "Nakonfigurujte pokročilé možnosti Adaptive Lighting. Väčšina používateľov tieto nastavenia meniť nemusí.",
|
"only_once": "only_once: Prispôsobiť svetlá iba pri zapnutí (`true`) alebo prispôsobovať ich priebežne (`false`). 🔄",
|
||||||
"data": {
|
"adapt_only_on_bare_turn_on": "adapt_only_on_bare_turn_on: Len pri čistom zapnutí svetiel. Pri nastavení `true` prispôsobí Adaptívne osvetlenie svetlá len pri zavolaní služby `light.turn_on` bez parametrov jasu alebo teploty svetla. ❌🌈 Napríklad: zamedzí to prispôsobovaniu ak je aktivovaná scéna. Pri nastavení `false` dôjde k prispôsobeniu nezávisle na tom či sú parametre jasu alebo teploty svetla prítomné v`service_data`. Vyžaduje zapnutie `take_over_control`. 🕵️ ",
|
||||||
"detect_non_ha_changes": "detect_non_ha_changes: Deteguje a zastaví prispôbovanie pre zmeny mimo `light.turn_on`. Vyžaduje zapnutie `take_over_control`. 🕵️ Upozornenie: ⚠️ Niektoré svetlá môžu falošne indikovať zapnutý stav, čo spôsobí, že sa svetlo neočakávane zapne. Ak narazíte na tento problém, funkciu vypnite.",
|
"separate_turn_on_commands": "separate_turn_on_commands: Použiť samostatné volania služby `light.turn_on` pre nastavenie teploty svetla a jasu (môže byť potrebné pre niektoré typy svetiel). 🔀",
|
||||||
"adapt_only_on_bare_turn_on": "adapt_only_on_bare_turn_on: Len pri čistom zapnutí svetiel. Pri nastavení `true` prispôsobí Adaptívne osvetlenie svetlá len pri zavolaní služby `light.turn_on` bez parametrov jasu alebo teploty svetla. ❌🌈 Napríklad: zamedzí to prispôsobovaniu ak je aktivovaná scéna. Pri nastavení `false` dôjde k prispôsobeniu nezávisle na tom či sú parametre jasu alebo teploty svetla prítomné v`service_data`. Vyžaduje zapnutie `take_over_control`. 🕵️ ",
|
"skip_redundant_commands": "skip_redundant_commands: Preskočiť odoslanie prispôsobovacích príkazov, ktorých cieľový stav je zhodný s posledným známym stavom. Nastavenie minimalizuje sieťovú prevádzku a v niektorých prípadoch môže zlepšiť odozvu prispôsobovania. 📉 Vypnite, pokiaľ skutočný stav svetiel prestáva odpovedať stavu zaznamenanom v HA.",
|
||||||
"separate_turn_on_commands": "separate_turn_on_commands: Použiť samostatné volania služby `light.turn_on` pre nastavenie teploty svetla a jasu (môže byť potrebné pre niektoré typy svetiel). 🔀",
|
"intercept": "intercept: Zachytiť a prispôsobiť volania `light.turn_on`, aby došlo k okamžitému prispôsobeniu jasu a teploty svetla. 🏎️ Vypnite pre svetlá, ktoré nepodporujú `light.turn_on` s teplotou svetla a jasom zároveň.",
|
||||||
"prefer_rgb_color": "prefer_rgb_color: Či preferovať nastavenie cez RGB než nastavením teploty svetla, ak je to možné. 🌈",
|
"multi_light_intercept": "multi_light_intercept: Zachytiť a prispôsobiť volanie služby`light.turn_on`, ktoré ovlyvňuje viacero svetiel. ➗⚠️ Toto môže spôsobiť rozdelenie jedného volania `light.turn_on`na viacero volaní, napr. ak sú svetlá pod rôznymi prepínačmi adaptívneho osvetlenia. Vyžaduje zapnutie `intercept`.",
|
||||||
"only_once": "only_once: Prispôsobiť svetlá iba pri zapnutí (`true`) alebo prispôsobovať ich priebežne (`false`). 🔄",
|
"include_config_in_attributes": "include_config_in_attributes: Zobraziť všetky nastavenia ako atribúty prepínača v Home Assistant. 📝"
|
||||||
"take_over_control": "take_over_control: Ak sú svetlá zapnuté a prispôsobované a niečo zavolá službu `light.turn_on`, dôjde k vypnutiu Adaptívneho osvetlenia. Poznámka: Zapnutie tejto voľby spôsobí volanie služby `homeassistant.update_entity` každý `interval`! 🔒",
|
},
|
||||||
"transition_until_sleep": "transition_until_sleep: Keď je funkcia povolená, Adaptívne osvetlenie bude považovať nastavenia režimu spánku ako minimum, a na tieto hodnoty prejde po západe slnka. 🌙",
|
"data_description": {
|
||||||
"multi_light_intercept": "multi_light_intercept: Zachytiť a prispôsobiť volanie služby`light.turn_on`, ktoré ovlyvňuje viacero svetiel. ➗⚠️ Toto môže spôsobiť rozdelenie jedného volania `light.turn_on`na viacero volaní, napr. ak sú svetlá pod rôznymi prepínačmi adaptívneho osvetlenia. Vyžaduje zapnutie `intercept`.",
|
"initial_transition": "Trvanie prvého prechodu, keď sú svetlá zapnuté z `off` na `on` (v sekundách). ⏲️",
|
||||||
"skip_redundant_commands": "skip_redundant_commands: Preskočiť odoslanie prispôsobovacích príkazov, ktorých cieľový stav je zhodný s posledným známym stavom. Nastavenie minimalizuje sieťovú prevádzku a v niektorých prípadoch môže zlepšiť odozvu prispôsobovania. 📉 Vypnite, pokiaľ skutočný stav svetiel prestáva odpovedať stavu zaznamenanom v HA.",
|
"sleep_rgb_or_color_temp": "V režime spánku použiť `\"rgb_color\"` alebo `\"color_temp\"`. 🌙",
|
||||||
"intercept": "intercept: Zachytiť a prispôsobiť volania `light.turn_on`, aby došlo k okamžitému prispôsobeniu jasu a teploty svetla. 🏎️ Vypnite pre svetlá, ktoré nepodporujú `light.turn_on` s teplotou svetla a jasom zároveň.",
|
"sleep_rgb_color": "Farba svetla RGB v režime spánku (pokiaľ `sleep_rgb_or_color_temp` je `rgb_color `). 🌈",
|
||||||
"include_config_in_attributes": "include_config_in_attributes: Zobraziť všetky nastavenia ako atribúty prepínača v Home Assistant. 📝"
|
"sleep_transition": "Trvanie prechodu do alebo z režimu spánku (v sekundách). 😴",
|
||||||
},
|
"sunrise_time": "Nastaviť pevný čas (HH:MM:SS) pre východ slnka. 🌅",
|
||||||
"data_description": {
|
"min_sunrise_time": "Nastavte najskorší možný virtuálny východ slnka (HH:MM:SS). Umožňuje neskorší východ slnka. 🌅",
|
||||||
"sunset_time": "Nastaviť pevný čas (HH:MM:SS) pre západ slnka. 🌇",
|
"max_sunrise_time": "Nastavte najneskorší možný virtuálny východ slnka (HH:MM:SS). Umožňuje skorší východ slnka. 🌅",
|
||||||
"sunrise_time": "Nastaviť pevný čas (HH:MM:SS) pre východ slnka. 🌅",
|
"sunrise_offset": "Upravte čas východu slnka o sekundy vpred alebo vzad. ⏰",
|
||||||
"sleep_rgb_or_color_temp": "V režime spánku použiť `\"rgb_color\"` alebo `\"color_temp\"`. 🌙",
|
"sunset_time": "Nastaviť pevný čas (HH:MM:SS) pre západ slnka. 🌇",
|
||||||
"sleep_transition": "Trvanie prechodu do alebo z režimu spánku (v sekundách). 😴",
|
"min_sunset_time": "Nastavte najskorší možný virtuálny západ slnka (HH:MM:SS). Umožňuje neskorší západ slnka. 🌅",
|
||||||
"autoreset_control_seconds": "Automaticky ukončiť manuálne ovládanie po zadanom množtve sekúnd. Pre vypnutie nastavte 0. ⏲️",
|
"max_sunset_time": "Nastavte najneskorší možný virtuálny západ slnka (HH:MM:SS). Umožňuje skorší západ slnka. 🌅",
|
||||||
"min_sunset_time": "Nastavte najskorší možný virtuálny západ slnka (HH:MM:SS). Umožňuje neskorší západ slnka. 🌅",
|
"sunset_offset": "Upravte čas západu slnka o sekundy vpred alebo vzad. ⏰",
|
||||||
"min_sunrise_time": "Nastavte najskorší možný virtuálny východ slnka (HH:MM:SS). Umožňuje neskorší východ slnka. 🌅",
|
"brightness_mode": "Výber režimu jasu. Možné hodnotu sú `default`, `linear` a `tanh` (používa `brightness_mode_time_dark` a `brightness_mode_time_light`). 📈",
|
||||||
"adapt_delay": "Pauza (v sekundách) medzi zapnutím svetla a aplikáciou zmien Adaptívneho osvetlenia. Môže pomôcť zabrániť blikaniu. ⏲️",
|
"brightness_mode_time_dark": "(Ignorované ak `brightness_mode='default'`) Čas na zvýšenie/zníženie jasu po udalosti/pred udalosťou východu/západu slnka. 📈📉",
|
||||||
"sleep_rgb_color": "Farba svetla RGB v režime spánku (pokiaľ `sleep_rgb_or_color_temp` je `rgb_color `). 🌈",
|
"brightness_mode_time_light": "(Ignorovaný, ak `brightness_mode = 'predvolené') Trvanie v sekundách na rampu / vypnutie jasu po / pred východ slnka/sunset. 📈📉.",
|
||||||
"sunrise_offset": "Upravte čas východu slnka o sekundy vpred alebo vzad. ⏰",
|
"autoreset_control_seconds": "Automaticky ukončiť manuálne ovládanie po zadanom množtve sekúnd. Pre vypnutie nastavte 0. ⏲️",
|
||||||
"brightness_mode": "Výber režimu jasu. Možné hodnotu sú `default`, `linear` a `tanh` (používa `brightness_mode_time_dark` a `brightness_mode_time_light`). 📈",
|
"send_split_delay": "Pauza (v ms) medzi príkazmi pri zapnutom `separate_turn_on_commands` pre svetlá, ktoré nepodporujú súčasné nastavenie jasu a teploty svetla. ⏲️",
|
||||||
"brightness_mode_time_light": "(Ignorovaný, ak `brightness_mode = 'predvolené') Trvanie v sekundách na rampu / vypnutie jasu po / pred východ slnka/sunset. 📈📉.",
|
"adapt_delay": "Pauza (v sekundách) medzi zapnutím svetla a aplikáciou zmien Adaptívneho osvetlenia. Môže pomôcť zabrániť blikaniu. ⏲️"
|
||||||
"sunset_offset": "Upravte čas západu slnka o sekundy vpred alebo vzad. ⏰",
|
}
|
||||||
"max_sunset_time": "Nastavte najneskorší možný virtuálny západ slnka (HH:MM:SS). Umožňuje skorší západ slnka. 🌅",
|
}
|
||||||
"initial_transition": "Trvanie prvého prechodu, keď sú svetlá zapnuté z `off` na `on` (v sekundách). ⏲️",
|
|
||||||
"brightness_mode_time_dark": "(Ignorované ak `brightness_mode='default'`) Čas na zvýšenie/zníženie jasu po udalosti/pred udalosťou východu/západu slnka. 📈📉",
|
|
||||||
"max_sunrise_time": "Nastavte najneskorší možný virtuálny východ slnka (HH:MM:SS). Umožňuje skorší východ slnka. 🌅",
|
|
||||||
"send_split_delay": "Pauza (v ms) medzi príkazmi pri zapnutom `separate_turn_on_commands` pre svetlá, ktoré nepodporujú súčasné nastavenie jasu a teploty svetla. ⏲️"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -10,52 +10,48 @@
|
||||||
"max_color_temp": "max_color_temp: Najhladnejša barvna temperatura v kelvinih. ❄️"
|
"max_color_temp": "max_color_temp: Najhladnejša barvna temperatura v kelvinih. ❄️"
|
||||||
},
|
},
|
||||||
"data_description": {
|
"data_description": {
|
||||||
"transition": "Trajanje prehoda pri spreminjanju luči, v sekundah. 🕑",
|
|
||||||
"interval": "Pogostost prilagajanja luči, v sekundah. 🔄",
|
"interval": "Pogostost prilagajanja luči, v sekundah. 🔄",
|
||||||
|
"transition": "Trajanje prehoda pri spreminjanju luči, v sekundah. 🕑",
|
||||||
"sleep_brightness": "Odstotek svetlosti luči v načinu spanja. 😴",
|
"sleep_brightness": "Odstotek svetlosti luči v načinu spanja. 😴",
|
||||||
"sleep_color_temp": "Barvna temperatura v načinu spanja (uporabljena, ko je \"sleep_rgb_or_color_temp\" nastavljena na \"color_temp\") v Kelvinih. 😴"
|
"sleep_color_temp": "Barvna temperatura v načinu spanja (uporabljena, ko je \"sleep_rgb_or_color_temp\" nastavljena na \"color_temp\") v Kelvinih. 😴"
|
||||||
},
|
},
|
||||||
"title": "Nastavitve prilagodljive osvetlitve",
|
"title": "Nastavitve prilagodljive osvetlitve",
|
||||||
"description": "Konfigurirajte komponento Adaptive Lighting. Imena možnosti so usklajena z nastavitvami v YAML. Če ste ta vnos definirali v YAML, tukaj ne bodo prikazane nobene možnosti. Za interaktivne grafe, ki ponazarjajo učinke parametrov, obiščite to [spletno aplikacijo](https://basnijholt.github.io/adaptive-lighting). Za dodatne podrobnosti glejte [uradno dokumentacijo](https://github.com/basnijholt/adaptive-lighting#readme).",
|
"description": "Konfigurirajte komponento Adaptive Lighting. Imena možnosti so usklajena z nastavitvami v YAML. Če ste ta vnos definirali v YAML, tukaj ne bodo prikazane nobene možnosti. Za interaktivne grafe, ki ponazarjajo učinke parametrov, obiščite to [spletno aplikacijo]({webapp_url}). Za dodatne podrobnosti glejte [uradno dokumentacijo]({docs_url}).",
|
||||||
"menu_options": {
|
"sections": {
|
||||||
"advanced": "Konfiguriraj napredne možnosti",
|
"advanced": {
|
||||||
"finish": "Shrani in zaključi"
|
"data": {
|
||||||
}
|
"prefer_rgb_color": "prefer_rgb_color: Ali v primeru možnosti raje uporabiti prilagoditev RGB barve kot barvno temperaturo luči. 🌈",
|
||||||
},
|
"transition_until_sleep": "transition_until_sleep: Če je omogočeno, bo Adaptive Lighting obravnaval nastavitve spanja kot minimalne vrednosti in bo po zahodu sonca prehajal na te vrednosti. 🌙",
|
||||||
"advanced": {
|
"take_over_control": "take_over_control: Onemogoči Adaptive Lighting, če drug vir pokliče \"light.turn_on\", ko so luči prižgane in se prilagajajo. Opozorilo: to ob vsakem intervalu kliče \"homeassistant.update_entity\"! 🔒",
|
||||||
"title": "Napredne nastavitve",
|
"detect_non_ha_changes": "„detect_non_ha_changes: Zazna in ustavi prilagoditve za spremembe stanja, ki niso posledica \"light.turn_on\". Zahteva omogočeno \"take_over_control\". 🕵️ Pozor: ⚠️ Nekatere luči lahko nepravilno poročajo, da so prižgane, kar lahko povzroči nepričakovano vklapljanje. Onemogočite to funkcijo, če naletite na takšne težave.",
|
||||||
"description": "Konfigurirajte napredne možnosti Adaptive Lighting. Večina uporabnikov teh nastavitev ne potrebuje spreminjati.",
|
"only_once": "only_once: Prilagodi luči samo ob vklopu (true) ali pa jih še naprej prilagajaj (false). 🔄",
|
||||||
"data": {
|
"adapt_only_on_bare_turn_on": "adapt_only_on_bare_turn_on: Ob začetnem vklopu luči. Če je nastavljeno na \"true\", AL prilagodi samo, če je \"light.turn_on\" klic brez podanih parametrov barve ali jakosti. ❌🌈 S tem se npr. prepreči prilagajanje pri aktivaciji scene. Če je \"false\", AL prilagodi ne glede na prisotnost barve ali jakosti v začetnih \"service_data\". Zahteva omogočeno \"take_over_control\". 🕵️",
|
||||||
"prefer_rgb_color": "prefer_rgb_color: Ali v primeru možnosti raje uporabiti prilagoditev RGB barve kot barvno temperaturo luči. 🌈",
|
"separate_turn_on_commands": "separate_turn_on_commands: Uporabi ločene klice \"light.turn_on\" za barvo in jakost, kar je potrebno za nekatere tipe luči. 🔀",
|
||||||
"transition_until_sleep": "transition_until_sleep: Če je omogočeno, bo Adaptive Lighting obravnaval nastavitve spanja kot minimalne vrednosti in bo po zahodu sonca prehajal na te vrednosti. 🌙",
|
"skip_redundant_commands": "skip_redundant_commands: Preskoči pošiljanje prilagoditvenih ukazov, če je ciljano stanje že enako poznanemu stanju luči. Zmanjšuje omrežni promet in izboljšuje odzivnost prilagajanja v določenih situacijah. 📉 Onemogočite, če se fizična stanja luči ne ujemajo z zabeleženim stanjem v HA.",
|
||||||
"take_over_control": "take_over_control: Onemogoči Adaptive Lighting, če drug vir pokliče \"light.turn_on\", ko so luči prižgane in se prilagajajo. Opozorilo: to ob vsakem intervalu kliče \"homeassistant.update_entity\"! 🔒",
|
"intercept": "intercept: Prestreza in prilagaja klice \"light.turn_on\" za takojšnjo prilagoditev barve in jakosti. 🏎️ Onemogočite za luči, ki ne podpirajo \"light.turn_on\" z barvo in svetlostjo.",
|
||||||
"detect_non_ha_changes": "„detect_non_ha_changes: Zazna in ustavi prilagoditve za spremembe stanja, ki niso posledica \"light.turn_on\". Zahteva omogočeno \"take_over_control\". 🕵️ Pozor: ⚠️ Nekatere luči lahko nepravilno poročajo, da so prižgane, kar lahko povzroči nepričakovano vklapljanje. Onemogočite to funkcijo, če naletite na takšne težave.",
|
"multi_light_intercept": "multi_light_intercept: Prestreza in prilagaja klice \"light.turn_on\", ki ciljajo več luči. ➗⚠️ To lahko privede do razdelitve enega klica \"light.turn_on\" v več klicev, npr. ko so luči na različnih stikalih. Zahteva omogočeno \"intercept\".",
|
||||||
"separate_turn_on_commands": "separate_turn_on_commands: Uporabi ločene klice \"light.turn_on\" za barvo in jakost, kar je potrebno za nekatere tipe luči. 🔀",
|
"include_config_in_attributes": "include_config_in_attributes: Ko je nastavljeno na \"true\", prikaže vse možnosti kot atribute stikala v Home Assistantu. 📝"
|
||||||
"skip_redundant_commands": "skip_redundant_commands: Preskoči pošiljanje prilagoditvenih ukazov, če je ciljano stanje že enako poznanemu stanju luči. Zmanjšuje omrežni promet in izboljšuje odzivnost prilagajanja v določenih situacijah. 📉 Onemogočite, če se fizična stanja luči ne ujemajo z zabeleženim stanjem v HA.",
|
},
|
||||||
"intercept": "intercept: Prestreza in prilagaja klice \"light.turn_on\" za takojšnjo prilagoditev barve in jakosti. 🏎️ Onemogočite za luči, ki ne podpirajo \"light.turn_on\" z barvo in svetlostjo.",
|
"data_description": {
|
||||||
"multi_light_intercept": "multi_light_intercept: Prestreza in prilagaja klice \"light.turn_on\", ki ciljajo več luči. ➗⚠️ To lahko privede do razdelitve enega klica \"light.turn_on\" v več klicev, npr. ko so luči na različnih stikalih. Zahteva omogočeno \"intercept\".",
|
"initial_transition": "Trajanje prvega prehoda, ko se luči prižgejo (iz \"off\" v \"on\"), v sekundah. ⏲️",
|
||||||
"include_config_in_attributes": "include_config_in_attributes: Ko je nastavljeno na \"true\", prikaže vse možnosti kot atribute stikala v Home Assistantu. 📝",
|
"sleep_rgb_or_color_temp": "V načinu spanja uporabi \"rgb_color\" ali \"color_temp\". 🌙",
|
||||||
"only_once": "only_once: Prilagodi luči samo ob vklopu (true) ali pa jih še naprej prilagajaj (false). 🔄",
|
"sleep_rgb_color": "RGB barva v načinu spanja (uporabljena, ko je \"sleep_rgb_or_color_temp\" nastavljeno na \"rgb_color\"). 🌈",
|
||||||
"adapt_only_on_bare_turn_on": "adapt_only_on_bare_turn_on: Ob začetnem vklopu luči. Če je nastavljeno na \"true\", AL prilagodi samo, če je \"light.turn_on\" klic brez podanih parametrov barve ali jakosti. ❌🌈 S tem se npr. prepreči prilagajanje pri aktivaciji scene. Če je \"false\", AL prilagodi ne glede na prisotnost barve ali jakosti v začetnih \"service_data\". Zahteva omogočeno \"take_over_control\". 🕵️"
|
"sleep_transition": "Trajanje prehoda, ko se preklopi način spanja, v sekundah. 😴",
|
||||||
},
|
"sunrise_time": "Nastavi fiksni čas (HH:MM:SS) sončnega vzhoda. 🌅",
|
||||||
"data_description": {
|
"min_sunrise_time": "Nastavi najzgodnejši navidezni sončni vzhod (HH:MM:SS), dovoljuje kasnejše vzhode. 🌅",
|
||||||
"sunrise_offset": "Prilagodite čas sončnega vzhoda z pozitivnim ali negativnim zamikom v sekundah. ⏰",
|
"max_sunrise_time": "Nastavi najkasnejši virtualni sončni vzhod (HH:MM:SS), dovoljuje zgodnejše vzhode. 🌅",
|
||||||
"send_split_delay": "Zamik (ms) med \"separate_turn_on_commands\" za luči, ki ne podpirajo hkratne nastavitve jakosti in barve. ⏲️",
|
"sunrise_offset": "Prilagodite čas sončnega vzhoda z pozitivnim ali negativnim zamikom v sekundah. ⏰",
|
||||||
"sleep_rgb_or_color_temp": "V načinu spanja uporabi \"rgb_color\" ali \"color_temp\". 🌙",
|
"sunset_time": "Nastavite fiksni čas (HH:MM:SS) za sončni zahod. 🌇",
|
||||||
"sleep_transition": "Trajanje prehoda, ko se preklopi način spanja, v sekundah. 😴",
|
"min_sunset_time": "Nastavite najzgodnejši navidezni čas sončnega zahoda (HH:MM:SS), dovoljuje kasnejše sončne zahode. 🌇",
|
||||||
"sunrise_time": "Nastavi fiksni čas (HH:MM:SS) sončnega vzhoda. 🌅",
|
"max_sunset_time": "Nastavite najpoznejši navidezni čas sončnega zahoda (HH:MM:SS), dovoljuje zgodnejše sončne zahode. 🌇",
|
||||||
"min_sunrise_time": "Nastavi najzgodnejši navidezni sončni vzhod (HH:MM:SS), dovoljuje kasnejše vzhode. 🌅",
|
"sunset_offset": "Prilagodite čas sončnega zahoda s pozitivnim ali negativnim zamikom v sekundah. ⏰",
|
||||||
"sunset_time": "Nastavite fiksni čas (HH:MM:SS) za sončni zahod. 🌇",
|
"brightness_mode": "Način upravljanja svetlosti. Možne vrednosti so \"default\", \"linear\" in \"tanh\" (uporablja \"brightness_mode_time_dark\" in \"brightness_mode_time_light\"). 📈",
|
||||||
"min_sunset_time": "Nastavite najzgodnejši navidezni čas sončnega zahoda (HH:MM:SS), dovoljuje kasnejše sončne zahode. 🌇",
|
"brightness_mode_time_dark": "(Prezrto, če je \"brightness_mode='default'\") Trajanje v sekundah za postopno povečanje ali zmanjšanje svetlosti pred/po sončnem vzhodu/zahodu. 📈📉",
|
||||||
"sunset_offset": "Prilagodite čas sončnega zahoda s pozitivnim ali negativnim zamikom v sekundah. ⏰",
|
"brightness_mode_time_light": "(Prezrto, če je \"brightness_mode='default'\") Trajanje v sekundah za postopno povečanje ali zmanjšanje svetlosti po/pred sončnem vzhodu/zahodu. 📈📉",
|
||||||
"brightness_mode_time_dark": "(Prezrto, če je \"brightness_mode='default'\") Trajanje v sekundah za postopno povečanje ali zmanjšanje svetlosti pred/po sončnem vzhodu/zahodu. 📈📉",
|
"autoreset_control_seconds": "Samodejno ponastavi ročni nadzor po določenem številu sekund. Nastavite na 0, da onemogočite. ⏲️",
|
||||||
"brightness_mode_time_light": "(Prezrto, če je \"brightness_mode='default'\") Trajanje v sekundah za postopno povečanje ali zmanjšanje svetlosti po/pred sončnem vzhodu/zahodu. 📈📉",
|
"send_split_delay": "Zamik (ms) med \"separate_turn_on_commands\" za luči, ki ne podpirajo hkratne nastavitve jakosti in barve. ⏲️"
|
||||||
"autoreset_control_seconds": "Samodejno ponastavi ročni nadzor po določenem številu sekund. Nastavite na 0, da onemogočite. ⏲️",
|
}
|
||||||
"max_sunrise_time": "Nastavi najkasnejši virtualni sončni vzhod (HH:MM:SS), dovoljuje zgodnejše vzhode. 🌅",
|
}
|
||||||
"max_sunset_time": "Nastavite najpoznejši navidezni čas sončnega zahoda (HH:MM:SS), dovoljuje zgodnejše sončne zahode. 🌇",
|
|
||||||
"brightness_mode": "Način upravljanja svetlosti. Možne vrednosti so \"default\", \"linear\" in \"tanh\" (uporablja \"brightness_mode_time_dark\" in \"brightness_mode_time_light\"). 📈",
|
|
||||||
"initial_transition": "Trajanje prvega prehoda, ko se luči prižgejo (iz \"off\" v \"on\"), v sekundah. ⏲️",
|
|
||||||
"sleep_rgb_color": "RGB barva v načinu spanja (uporabljena, ko je \"sleep_rgb_or_color_temp\" nastavljeno na \"rgb_color\"). 🌈"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,13 @@
|
||||||
"data": {
|
"data": {
|
||||||
"name": "Namn"
|
"name": "Namn"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"menu": {
|
||||||
|
"data": {
|
||||||
|
"action": "Åtgärd"
|
||||||
|
},
|
||||||
|
"title": "Skapa eller duplicera",
|
||||||
|
"description": "Vill du skapa en ny instans eller duplicera en befintlig?"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"abort": {
|
"abort": {
|
||||||
|
|
@ -22,65 +29,62 @@
|
||||||
"data": {
|
"data": {
|
||||||
"lights": "lights, ljuskällor",
|
"lights": "lights, ljuskällor",
|
||||||
"interval": "interval, Tid mellan uppdateringar i sekunder",
|
"interval": "interval, Tid mellan uppdateringar i sekunder",
|
||||||
"max_brightness": "max_brightness, i procent %",
|
"transition": "transition, i sekunder",
|
||||||
"max_color_temp": "max_color_temp, i Kelvin",
|
|
||||||
"min_brightness": "min_brightness, i %",
|
"min_brightness": "min_brightness, i %",
|
||||||
|
"max_brightness": "max_brightness, i procent %",
|
||||||
"min_color_temp": "min_color_temp, i Kelvin",
|
"min_color_temp": "min_color_temp, i Kelvin",
|
||||||
|
"max_color_temp": "max_color_temp, i Kelvin",
|
||||||
"sleep_brightness": "sleep_brightness, i %",
|
"sleep_brightness": "sleep_brightness, i %",
|
||||||
"sleep_color_temp": "sleep_color_temp, i Kelvin",
|
"sleep_color_temp": "sleep_color_temp, i Kelvin"
|
||||||
"transition": "transition, i sekunder"
|
|
||||||
},
|
},
|
||||||
"data_description": {
|
"data_description": {
|
||||||
"sleep_color_temp": "Färgtemperatur i sovläge (används när `sleep_rgb_or_color_temp` är `color_temp`) i Kelvin. 😴",
|
|
||||||
"sleep_brightness": "Procent ljusstyrka för lampor i sovläge. 😴",
|
|
||||||
"interval": "Frekvens för att anpassa lamporna, i sekunder. 🔄",
|
"interval": "Frekvens för att anpassa lamporna, i sekunder. 🔄",
|
||||||
"transition": "Dröjsmål för övergång när lampor ändras, i sekunder. 🕑"
|
"transition": "Dröjsmål för övergång när lampor ändras, i sekunder. 🕑",
|
||||||
|
"sleep_brightness": "Procent ljusstyrka för lampor i sovläge. 😴",
|
||||||
|
"sleep_color_temp": "Färgtemperatur i sovläge (används när `sleep_rgb_or_color_temp` är `color_temp`) i Kelvin. 😴"
|
||||||
},
|
},
|
||||||
"menu_options": {
|
"sections": {
|
||||||
"advanced": "Konfigurera avancerade alternativ",
|
"advanced": {
|
||||||
"finish": "Spara och avsluta"
|
"data": {
|
||||||
}
|
"initial_transition": "initial_transition, när ljuskällorna går från 'av' till 'på' eller när 'sleep_state' ändras",
|
||||||
},
|
"prefer_rgb_color": "prefer_rgb_color, Använd 'rgb_color' över 'color_temp' om möjligt",
|
||||||
"advanced": {
|
"transition_until_sleep": "transition_until_sleep: När aktiverat kommer Adaptive Lighting att behandla sömninställningarna som ett minimum och övergå till dessa värden efter solnedgången. 🌙",
|
||||||
"title": "Avancerade inställningar",
|
"sunrise_time": "sunrise_time, i 'HH:MM:SS' format (om 'None', används den faktiskta soluppgången för din position)",
|
||||||
"description": "Konfigurera avancerade alternativ för Adaptiv Ljussättning. De flesta användare behöver inte ändra dessa inställningar.",
|
"sunrise_offset": "sunrise_offset, i +/- sekunder",
|
||||||
"data": {
|
"sunset_time": "sunset_time, i 'HH:MM:SS' format (om 'None', används den faktiskta solnedgången för din position)",
|
||||||
"initial_transition": "initial_transition, när ljuskällorna går från 'av' till 'på' eller när 'sleep_state' ändras",
|
"sunset_offset": "sunset_offset, i +/- sekunder",
|
||||||
"only_once": "only_once, Adaptivt justera endast ljuskällorna när de sätts från 'av' till 'på'",
|
"take_over_control": "take_over_control, om något utöver 'Adaptiv Ljussättning' komponenten kallar på 'light.turn_on' när en ljuskälla redan är på, stängs den adaptiva justeringen av tills ljuskällan stängs av -> på igen, alternativt switchen för konfigurationen",
|
||||||
"prefer_rgb_color": "prefer_rgb_color, Använd 'rgb_color' över 'color_temp' om möjligt",
|
"detect_non_ha_changes": "detect_non_ha_changes, Upptäcker alla ändringar större än 5% gjorda på ljuskällorna som inte kommer från HA. Kräver att 'take_over_control' är påslaget.(Kallar på 'homeassistant.update_entity' vid varje 'interval'!)",
|
||||||
"separate_turn_on_commands": "separate_turn_on_commands, for each attribute (color, brightness, etc.) in 'light.turn_on', required for some lights.",
|
"only_once": "only_once, Adaptivt justera endast ljuskällorna när de sätts från 'av' till 'på'",
|
||||||
"sunrise_offset": "sunrise_offset, i +/- sekunder",
|
"adapt_only_on_bare_turn_on": "adapt_only_on_bare_turn_on: När lampor först tänds. Om satt till \"true\", anpassar AL endast om \"light.turn_on\" anropas utan att ange färg eller ljusstyrka. ❌🌈 Detta förhindrar t.ex. anpassning när en scen aktiveras. Om \"false\" anpassas AL oavsett förekomsten av färg eller ljusstyrka i den initiala \"service_data\". \"takeover_control\" måste vara aktiverat. 🕵️",
|
||||||
"sunrise_time": "sunrise_time, i 'HH:MM:SS' format (om 'None', används den faktiskta soluppgången för din position)",
|
"separate_turn_on_commands": "separate_turn_on_commands, for each attribute (color, brightness, etc.) in 'light.turn_on', required for some lights.",
|
||||||
"sunset_offset": "sunset_offset, i +/- sekunder",
|
"skip_redundant_commands": "skip_redundant_commands: Hoppa över att skicka anpassningskommandon vars måltillstånd redan är lika med lampans kända tillstånd. Minimerar nätverkstrafik och förbättrar anpassningsförmågan i vissa situationer. 📉 Inaktivera om lampans tillstånd blir osynkroniserade med HA:s registrerade tillstånd.",
|
||||||
"sunset_time": "sunset_time, i 'HH:MM:SS' format (om 'None', används den faktiskta solnedgången för din position)",
|
"intercept": "intercept: Fånga upp och anpassa `light.turn_on`-anrop för att möjliggöra omedelbar anpassning av färg och ljusstyrka. 🏎️ Inaktivera för lampor som inte stöder `light.turn_on` med färg och ljusstyrka.",
|
||||||
"take_over_control": "take_over_control, om något utöver 'Adaptiv Ljussättning' komponenten kallar på 'light.turn_on' när en ljuskälla redan är på, stängs den adaptiva justeringen av tills ljuskällan stängs av -> på igen, alternativt switchen för konfigurationen",
|
"multi_light_intercept": "multi_light_intercept: Fånga upp och anpassa \"light.turn_on\"-anrop som riktar sig mot flera lampor. ➗⚠️ Detta kan resultera i att ett enda `light.turn_on`-anrop delas upp i flera anrop, t.ex. när lamporna är kopplade till olika strömbrytare. Kräver att \"intercept\" är aktiverat.",
|
||||||
"detect_non_ha_changes": "detect_non_ha_changes, Upptäcker alla ändringar större än 5% gjorda på ljuskällorna som inte kommer från HA. Kräver att 'take_over_control' är påslaget.(Kallar på 'homeassistant.update_entity' vid varje 'interval'!)",
|
"include_config_in_attributes": "include_config_in_attributes: Visa alla alternativ som attribut på strömbrytaren i Home Assistant när den är inställd på \"true\". 📝"
|
||||||
"multi_light_intercept": "multi_light_intercept: Fånga upp och anpassa \"light.turn_on\"-anrop som riktar sig mot flera lampor. ➗⚠️ Detta kan resultera i att ett enda `light.turn_on`-anrop delas upp i flera anrop, t.ex. när lamporna är kopplade till olika strömbrytare. Kräver att \"intercept\" är aktiverat.",
|
},
|
||||||
"adapt_only_on_bare_turn_on": "adapt_only_on_bare_turn_on: När lampor först tänds. Om satt till \"true\", anpassar AL endast om \"light.turn_on\" anropas utan att ange färg eller ljusstyrka. ❌🌈 Detta förhindrar t.ex. anpassning när en scen aktiveras. Om \"false\" anpassas AL oavsett förekomsten av färg eller ljusstyrka i den initiala \"service_data\". \"takeover_control\" måste vara aktiverat. 🕵️",
|
"data_description": {
|
||||||
"skip_redundant_commands": "skip_redundant_commands: Hoppa över att skicka anpassningskommandon vars måltillstånd redan är lika med lampans kända tillstånd. Minimerar nätverkstrafik och förbättrar anpassningsförmågan i vissa situationer. 📉 Inaktivera om lampans tillstånd blir osynkroniserade med HA:s registrerade tillstånd.",
|
"initial_transition": "Den första övergångens varaktighet när lampan slås från ”av” till ”på” i sekunder. ⏲️",
|
||||||
"intercept": "intercept: Fånga upp och anpassa `light.turn_on`-anrop för att möjliggöra omedelbar anpassning av färg och ljusstyrka. 🏎️ Inaktivera för lampor som inte stöder `light.turn_on` med färg och ljusstyrka.",
|
"sleep_rgb_or_color_temp": "Använd antingen`\"rgb_color\"` eller `\"color_temp\"` i sovläge. 🌙",
|
||||||
"transition_until_sleep": "transition_until_sleep: När aktiverat kommer Adaptive Lighting att behandla sömninställningarna som ett minimum och övergå till dessa värden efter solnedgången. 🌙",
|
"sleep_rgb_color": "RGB-färg i sovläge (används när \"sleep_rgb_or_color_temp\" är \"rgb_color\"). 🌈",
|
||||||
"include_config_in_attributes": "include_config_in_attributes: Visa alla alternativ som attribut på strömbrytaren i Home Assistant när den är inställd på \"true\". 📝"
|
"sleep_transition": "Dröjsmål för övergång när \"sov läge\" slås på/av, i sekunder. 🕑",
|
||||||
},
|
"sunrise_time": "Ställ in en fast tid (TT:MM:SS) för soluppgången. 🌅",
|
||||||
"data_description": {
|
"min_sunrise_time": "Ställ in den tidigaste virtuella soluppgångstiden (TT: MM: SS), vilket möjliggör senare soluppgångar. 🌅",
|
||||||
"sleep_transition": "Dröjsmål för övergång när \"sov läge\" slås på/av, i sekunder. 🕑",
|
"max_sunrise_time": "Ställ in den senaste virtuella soluppgångstiden (TT: MM: SS), vilket möjliggör tidigare soluppgångar. 🌅",
|
||||||
"autoreset_control_seconds": "Nollställ automatiskt manuell kontroll efter ett antal sekunder. Sätt till 0 för at avaktivera. ⏲️",
|
"sunrise_offset": "Justera soluppgångstiden med positiv och negativ förskutning is sekunder. ⏰",
|
||||||
"sunrise_offset": "Justera soluppgångstiden med positiv och negativ förskutning is sekunder. ⏰",
|
"sunset_time": "Ställ in en fast tid (TT:MM:SS) för solnedgången. 🌇",
|
||||||
"sunset_offset": "Justera solnedgångstiden med positiv och negativ förskutning is sekunder. ⏰",
|
"min_sunset_time": "Ställ in den tidigaste virtuella solnedgångstiden (TT: MM: SS), vilket möjliggör senare solnedgångar. 🌇",
|
||||||
"send_split_delay": "Dröjsmål (ms) mellan `separate_turn_on_commands` för lampor som inte stödjer samtidiga ljussyrke och färg inställningar. ⏲️",
|
"max_sunset_time": "Ställ in den senaste virtuella solnedgångstiden (TT: MM: SS), vilket möjliggör tidigare solnedgångar. 🌇",
|
||||||
"sleep_rgb_or_color_temp": "Använd antingen`\"rgb_color\"` eller `\"color_temp\"` i sovläge. 🌙",
|
"sunset_offset": "Justera solnedgångstiden med positiv och negativ förskutning is sekunder. ⏰",
|
||||||
"min_sunset_time": "Ställ in den tidigaste virtuella solnedgångstiden (TT: MM: SS), vilket möjliggör senare solnedgångar. 🌇",
|
"brightness_mode": "Ljusstyrkeinställing att använda. Möjliga värden är \"default\", \"linear\" och \"tanh\" (använder \"brightness_mode_time_dark\" och \"brightness_mode_time_light\"). 📈",
|
||||||
"min_sunrise_time": "Ställ in den tidigaste virtuella soluppgångstiden (TT: MM: SS), vilket möjliggör senare soluppgångar. 🌅",
|
"brightness_mode_time_dark": "(Ignoreras om `brightness_mode='default'`) Varaktigheten i sekunder för att öka/minska ljusstyrkan efter/före soluppgång/solnedgång. 📈📉.",
|
||||||
"adapt_delay": "Väntetid (sekunder) mellan lamptändning och Adaptiv Ljussättning tillämpar ändringar. Kan hjälpa till att undvika flimmer. ⏲️",
|
"brightness_mode_time_light": "(Ignoreras om `brightness_mode='default'`) Varaktigheten i sekunder för att öka/minska ljusstyrkan efter/före soluppgång/solnedgång. 📈📉.",
|
||||||
"sleep_rgb_color": "RGB-färg i sovläge (används när \"sleep_rgb_or_color_temp\" är \"rgb_color\"). 🌈",
|
"take_over_control_mode": "Anpassningspausläget när andra källor ändrar ljusstyrka och/eller färg på belysningen. `pause_all` pausar alltid både ljusstyrka och färganpassning. `pause_changed` pausar endast anpassningen av de ändrade attributen och fortsätter att anpassa oförändrade attribut, t.ex. fortsätter färganpassningen när endast ljusstyrkan har ändrats.",
|
||||||
"sunset_time": "Ställ in en fast tid (TT:MM:SS) för solnedgången. 🌇",
|
"autoreset_control_seconds": "Nollställ automatiskt manuell kontroll efter ett antal sekunder. Sätt till 0 för at avaktivera. ⏲️",
|
||||||
"max_sunset_time": "Ställ in den senaste virtuella solnedgångstiden (TT: MM: SS), vilket möjliggör tidigare solnedgångar. 🌇",
|
"send_split_delay": "Dröjsmål (ms) mellan `separate_turn_on_commands` för lampor som inte stödjer samtidiga ljussyrke och färg inställningar. ⏲️",
|
||||||
"sunrise_time": "Ställ in en fast tid (TT:MM:SS) för soluppgången. 🌅",
|
"adapt_delay": "Väntetid (sekunder) mellan lamptändning och Adaptiv Ljussättning tillämpar ändringar. Kan hjälpa till att undvika flimmer. ⏲️"
|
||||||
"initial_transition": "Den första övergångens varaktighet när lampan slås från ”av” till ”på” i sekunder. ⏲️",
|
}
|
||||||
"max_sunrise_time": "Ställ in den senaste virtuella soluppgångstiden (TT: MM: SS), vilket möjliggör tidigare soluppgångar. 🌅",
|
}
|
||||||
"brightness_mode": "Ljusstyrkeinställing att använda. Möjliga värden är \"default\", \"linear\" och \"tanh\" (använder \"brightness_mode_time_dark\" och \"brightness_mode_time_light\"). 📈",
|
|
||||||
"brightness_mode_time_light": "(Ignoreras om `brightness_mode='default'`) Varaktigheten i sekunder för att öka/minska ljusstyrkan efter/före soluppgång/solnedgång. 📈📉.",
|
|
||||||
"brightness_mode_time_dark": "(Ignoreras om `brightness_mode='default'`) Varaktigheten i sekunder för att öka/minska ljusstyrkan efter/före soluppgång/solnedgång. 📈📉."
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
@ -178,6 +182,9 @@
|
||||||
},
|
},
|
||||||
"use_defaults": {
|
"use_defaults": {
|
||||||
"description": "Ställer in standardvärden som inte anges i detta serviceanrop. Alternativ: \"current\" (standard, behåller nuvarande värden), \"factory\" (återställer till dokumenterade standardinställningar) eller \"configuration\" (återgår till strömbrytarens standardinställningar). ⚙️"
|
"description": "Ställer in standardvärden som inte anges i detta serviceanrop. Alternativ: \"current\" (standard, behåller nuvarande värden), \"factory\" (återställer till dokumenterade standardinställningar) eller \"configuration\" (återgår till strömbrytarens standardinställningar). ⚙️"
|
||||||
|
},
|
||||||
|
"take_over_control_mode": {
|
||||||
|
"description": "Anpassningspausläget när andra källor ändrar ljusstyrka och/eller färg på belysningen. `pause_all` pausar alltid både ljusstyrka och färganpassning. `pause_changed` pausar endast anpassningen av de ändrade attributen och fortsätter att anpassa oförändrade attribut, t.ex. fortsätter färganpassningen när endast ljusstyrkan har ändrats."
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"description": "Ändra vilka inställningar du vill ha i strömbrytaren. All dessa inställningar är likadana som i config flow."
|
"description": "Ändra vilka inställningar du vill ha i strömbrytaren. All dessa inställningar är likadana som i config flow."
|
||||||
|
|
@ -194,7 +201,7 @@
|
||||||
"description": "Strömbrytarens ”entity_id\" i vilken lampan ska (av)markeras som \"manuellt styrd\". 📝"
|
"description": "Strömbrytarens ”entity_id\" i vilken lampan ska (av)markeras som \"manuellt styrd\". 📝"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"description": "Swedish: Markera om en lampa är \"styrd manuellt\"."
|
"description": "Markera om en lampa är \"styrd manuellt\"."
|
||||||
},
|
},
|
||||||
"apply": {
|
"apply": {
|
||||||
"description": "Tillämpar nuvarande Adaptiv Ljussätting inställningar till lampor.",
|
"description": "Tillämpar nuvarande Adaptiv Ljussätting inställningar till lampor.",
|
||||||
|
|
|
||||||
|
|
@ -149,7 +149,7 @@
|
||||||
"step": {
|
"step": {
|
||||||
"init": {
|
"init": {
|
||||||
"title": "தகவமைப்பு விளக்கு விருப்பங்கள்",
|
"title": "தகவமைப்பு விளக்கு விருப்பங்கள்",
|
||||||
"description": "தகவமைப்பு விளக்கு கூறுகளை உள்ளமைக்கவும். விருப்பப் பெயர்கள் YAML அமைப்புகளுடன் சீரமைக்கப்படுகின்றன. இந்த உள்ளீட்டை நீங்கள் YAML இல் வரையறுத்திருந்தால், இங்கே எந்த விருப்பங்களும் தோன்றாது. அளவுரு விளைவுகளை நிரூபிக்கும் ஊடாடும் வரைபடங்களுக்கு, [இந்த வலை பயன்பாடு] (https://basnijholt.github.io/adaptive-lighting) ஐப் பார்வையிடவும். மேலும் விவரங்களுக்கு, [அதிகாரப்பூர்வ ஆவணங்கள்] (https://github.com/basnijholt/adaptive-lighting#readme) ஐப் பார்க்கவும்.",
|
"description": "தகவமைப்பு விளக்கு கூறுகளை உள்ளமைக்கவும். விருப்பப் பெயர்கள் YAML அமைப்புகளுடன் சீரமைக்கப்படுகின்றன. இந்த உள்ளீட்டை நீங்கள் YAML இல் வரையறுத்திருந்தால், இங்கே எந்த விருப்பங்களும் தோன்றாது. அளவுரு விளைவுகளை நிரூபிக்கும் ஊடாடும் வரைபடங்களுக்கு, [இந்த வலை பயன்பாடு]({webapp_url}) ஐப் பார்வையிடவும். மேலும் விவரங்களுக்கு, [அதிகாரப்பூர்வ ஆவணங்கள்]({docs_url}) ஐப் பார்க்கவும்.",
|
||||||
"data": {
|
"data": {
|
||||||
"lights": "விளக்குகள்: கட்டுப்படுத்தப்பட வேண்டிய ஒளி நிறுவனம்_டுகளின் பட்டியல் (காலியாக இருக்கலாம்). .",
|
"lights": "விளக்குகள்: கட்டுப்படுத்தப்பட வேண்டிய ஒளி நிறுவனம்_டுகளின் பட்டியல் (காலியாக இருக்கலாம்). .",
|
||||||
"min_brightness": "min_brightness: குறைந்தபட்ச ஒளி விழுக்காடு. .",
|
"min_brightness": "min_brightness: குறைந்தபட்ச ஒளி விழுக்காடு. .",
|
||||||
|
|
@ -163,46 +163,42 @@
|
||||||
"sleep_brightness": "தூக்க பயன்முறையில் விளக்குகளின் ஒளி விழுக்காடு. .",
|
"sleep_brightness": "தூக்க பயன்முறையில் விளக்குகளின் ஒளி விழுக்காடு. .",
|
||||||
"sleep_color_temp": "ச்லீப் பயன்முறையில் வண்ண வெப்பநிலை (கெல்வினில் `SLEEP_RGB_OR_COLOR_TEMP` என்பது` color_temp` ஆக இருக்கும்போது பயன்படுத்தப்படுகிறது). ."
|
"sleep_color_temp": "ச்லீப் பயன்முறையில் வண்ண வெப்பநிலை (கெல்வினில் `SLEEP_RGB_OR_COLOR_TEMP` என்பது` color_temp` ஆக இருக்கும்போது பயன்படுத்தப்படுகிறது). ."
|
||||||
},
|
},
|
||||||
"menu_options": {
|
"sections": {
|
||||||
"advanced": "Configure advanced options",
|
"advanced": {
|
||||||
"finish": "Save and finish"
|
"data": {
|
||||||
}
|
"prefer_rgb_color": "bey_rgb_color: முடிந்தவரை ஒளி வண்ண வெப்பநிலையை விட RGB வண்ண சரிசெய்தலை விரும்பலாமா. .",
|
||||||
},
|
"transition_until_sleep": "Transition_until_sleep: இயக்கப்பட்டால், தகவமைப்பு விளக்குகள் தூக்க அமைப்புகளை குறைந்தபட்சமாகக் கருதும், சூரிய அச்தமனத்திற்குப் பிறகு இந்த மதிப்புகளுக்கு மாறும். .",
|
||||||
"advanced": {
|
"take_over_control": "Take_over_control: விளக்குகள் இயக்கத்தில் இருக்கும்போது மற்றொரு சான்று `லைட்.டர்ன்_ஓஎன்` என்று அழைத்தால் தகவமைப்பு விளக்குகளை முடக்கு. இது `ஓமாசிச்டன்ட்.பிடேட்_என்டிட்டி` ஒவ்வொரு` இடைவெளியையும் 'என்று அழைக்கிறது என்பதை நினைவில் கொள்க! .",
|
||||||
"title": "Advanced Settings",
|
"detect_non_ha_changes": "கண்டறிதல்_நான்_ஆ_சேஞ்ச்ச்: `விளக்கு அல்லாத. டர்ன்_ஓஎன்` மாநில மாற்றங்களுக்கான தழுவல்களைக் கண்டறிந்து நிறுத்துகிறது. `Take_over_control` இயக்கப்பட்டது. 🕵œ எச்சரிக்கை: ⚠œ சில விளக்குகள் ஒரு 'ஆன்' நிலையை பொய்யாகக் குறிக்கக்கூடும், இதனால் விளக்குகள் எதிர்பாராத விதமாக இயக்கப்படலாம். இதுபோன்ற சிக்கல்களை நீங்கள் சந்தித்தால் இந்த அம்சத்தை முடக்கு.",
|
||||||
"description": "Configure advanced Adaptive Lighting options. Most users don't need to change these settings.",
|
"only_once": "மட்டும்_இன்: விளக்குகள் இயக்கப்படும்போது மட்டுமே (`உண்மை`) மாற்றியமைக்கும்போது அல்லது அவற்றைத் தழுவிக்கொள்ளுங்கள் (` தவறு`). .",
|
||||||
"data": {
|
"adapt_only_on_bare_turn_on": "சரிசெய்_only_on_bare_turn_on: ஆரம்பத்தில் விளக்குகளை இயக்கும்போது. `உண்மை` என அமைக்கப்பட்டால், வண்ணம் அல்லது பிரகாசத்தைக் குறிப்பிடாமல்` லைட்.டர்ன்_ஓஎன்` செயல்படுத்தப்பட்டால் மட்டுமே அல் மாற்றியமைக்கிறது. ❌🌈 இது எ.கா., ஒரு காட்சியைச் செயல்படுத்தும்போது தழுவலைத் தடுக்கிறது. `தவறு` என்றால், ஆரம்ப` சேவை_டா` இல் நிறம் அல்லது ஒளி இருப்பதைப் பொருட்படுத்தாமல் AL மாற்றியமைக்கிறது. `Take_over_control` இயக்கப்பட்டது. . 🕵️",
|
||||||
"prefer_rgb_color": "bey_rgb_color: முடிந்தவரை ஒளி வண்ண வெப்பநிலையை விட RGB வண்ண சரிசெய்தலை விரும்பலாமா. .",
|
"separate_turn_on_commands": "தனித்தனி_டர்ன்_ஆன்_காமண்ட்ச்: சில ஒளி வகைகளுக்கு தேவைப்படும் வண்ணம் மற்றும் பிரகாசத்திற்கான தனித்தனி `லைட்.டர்ன்_ஓஎன்` அழைப்புகளைப் பயன்படுத்தவும். .",
|
||||||
"transition_until_sleep": "Transition_until_sleep: இயக்கப்பட்டால், தகவமைப்பு விளக்குகள் தூக்க அமைப்புகளை குறைந்தபட்சமாகக் கருதும், சூரிய அச்தமனத்திற்குப் பிறகு இந்த மதிப்புகளுக்கு மாறும். .",
|
"skip_redundant_commands": "Skip_redundant_commands: தழுவல் கட்டளைகளை அனுப்புவதைத் தவிர்க்கவும், அதன் இலக்கு நிலை ஏற்கனவே ஒளியின் அறியப்பட்ட நிலைக்கு சமம். பிணையம் போக்குவரத்தை குறைக்கிறது மற்றும் சில சூழ்நிலைகளில் தழுவல் மறுமொழியை மேம்படுத்துகிறது. ஆ இன் பதிவு செய்யப்பட்ட நிலையுடன் இயற்பியல் ஒளி நிலைகள் ஒத்திசைவிலிருந்து வெளியேறினால் அது காணக்கூடியது.",
|
||||||
"take_over_control": "Take_over_control: விளக்குகள் இயக்கத்தில் இருக்கும்போது மற்றொரு சான்று `லைட்.டர்ன்_ஓஎன்` என்று அழைத்தால் தகவமைப்பு விளக்குகளை முடக்கு. இது `ஓமாசிச்டன்ட்.பிடேட்_என்டிட்டி` ஒவ்வொரு` இடைவெளியையும் 'என்று அழைக்கிறது என்பதை நினைவில் கொள்க! .",
|
"intercept": "இடைமறிப்பு: உடனடி வண்ணம் மற்றும் பிரகாசமான தழுவலை செயல்படுத்த `ஒளி. Color வண்ணம் மற்றும் பிரகாசத்துடன் `ஒளி.",
|
||||||
"detect_non_ha_changes": "கண்டறிதல்_நான்_ஆ_சேஞ்ச்ச்: `விளக்கு அல்லாத. டர்ன்_ஓஎன்` மாநில மாற்றங்களுக்கான தழுவல்களைக் கண்டறிந்து நிறுத்துகிறது. `Take_over_control` இயக்கப்பட்டது. 🕵œ எச்சரிக்கை: ⚠œ சில விளக்குகள் ஒரு 'ஆன்' நிலையை பொய்யாகக் குறிக்கக்கூடும், இதனால் விளக்குகள் எதிர்பாராத விதமாக இயக்கப்படலாம். இதுபோன்ற சிக்கல்களை நீங்கள் சந்தித்தால் இந்த அம்சத்தை முடக்கு.",
|
"multi_light_intercept": "Mulli_light_intect: பல விளக்குகளை குறிவைக்கும் `light.turn_on` அழைப்புகளை இடைமறிக்கவும் மாற்றவும். ➗⚠œ இது ஒரு `லைட்.டர்ன்_ஒன்` அழைப்பை பல அழைப்புகளாக பிரிக்கக்கூடும், எ.கா., விளக்குகள் வெவ்வேறு சுவிட்சுகளில் இருக்கும்போது. இயக்கப்பட வேண்டும் `இடைமறிப்பு` தேவை.",
|
||||||
"only_once": "மட்டும்_இன்: விளக்குகள் இயக்கப்படும்போது மட்டுமே (`உண்மை`) மாற்றியமைக்கும்போது அல்லது அவற்றைத் தழுவிக்கொள்ளுங்கள் (` தவறு`). .",
|
"include_config_in_attributes": "அடங்கும்_கான்ஃபிக்_இன்_அட்ரிபியூட்: `உண்மை` என அமைக்கப்பட்டிருக்கும் போது வீட்டு உதவியாளரின் சுவிட்சில் உள்ள பண்புகளாக அனைத்து விருப்பங்களையும் காட்டுங்கள். ."
|
||||||
"adapt_only_on_bare_turn_on": "சரிசெய்_only_on_bare_turn_on: ஆரம்பத்தில் விளக்குகளை இயக்கும்போது. `உண்மை` என அமைக்கப்பட்டால், வண்ணம் அல்லது பிரகாசத்தைக் குறிப்பிடாமல்` லைட்.டர்ன்_ஓஎன்` செயல்படுத்தப்பட்டால் மட்டுமே அல் மாற்றியமைக்கிறது. ❌🌈 இது எ.கா., ஒரு காட்சியைச் செயல்படுத்தும்போது தழுவலைத் தடுக்கிறது. `தவறு` என்றால், ஆரம்ப` சேவை_டா` இல் நிறம் அல்லது ஒளி இருப்பதைப் பொருட்படுத்தாமல் AL மாற்றியமைக்கிறது. `Take_over_control` இயக்கப்பட்டது. . 🕵️",
|
},
|
||||||
"separate_turn_on_commands": "தனித்தனி_டர்ன்_ஆன்_காமண்ட்ச்: சில ஒளி வகைகளுக்கு தேவைப்படும் வண்ணம் மற்றும் பிரகாசத்திற்கான தனித்தனி `லைட்.டர்ன்_ஓஎன்` அழைப்புகளைப் பயன்படுத்தவும். .",
|
"data_description": {
|
||||||
"skip_redundant_commands": "Skip_redundant_commands: தழுவல் கட்டளைகளை அனுப்புவதைத் தவிர்க்கவும், அதன் இலக்கு நிலை ஏற்கனவே ஒளியின் அறியப்பட்ட நிலைக்கு சமம். பிணையம் போக்குவரத்தை குறைக்கிறது மற்றும் சில சூழ்நிலைகளில் தழுவல் மறுமொழியை மேம்படுத்துகிறது. ஆ இன் பதிவு செய்யப்பட்ட நிலையுடன் இயற்பியல் ஒளி நிலைகள் ஒத்திசைவிலிருந்து வெளியேறினால் அது காணக்கூடியது.",
|
"initial_transition": "விளக்குகள் `ஆஃப்` முதல்` ஆன் `வரை நொடிகளில் மாறும் போது முதல் மாற்றத்தின் காலம். .",
|
||||||
"intercept": "இடைமறிப்பு: உடனடி வண்ணம் மற்றும் பிரகாசமான தழுவலை செயல்படுத்த `ஒளி. Color வண்ணம் மற்றும் பிரகாசத்துடன் `ஒளி.",
|
"sleep_rgb_or_color_temp": "தூக்க பயன்முறையில் `\" rgb_color \"` அல்லது `\" Color_Temp \"key ஐப் பயன்படுத்தவும். .",
|
||||||
"multi_light_intercept": "Mulli_light_intect: பல விளக்குகளை குறிவைக்கும் `light.turn_on` அழைப்புகளை இடைமறிக்கவும் மாற்றவும். ➗⚠œ இது ஒரு `லைட்.டர்ன்_ஒன்` அழைப்பை பல அழைப்புகளாக பிரிக்கக்கூடும், எ.கா., விளக்குகள் வெவ்வேறு சுவிட்சுகளில் இருக்கும்போது. இயக்கப்பட வேண்டும் `இடைமறிப்பு` தேவை.",
|
"sleep_rgb_color": "தூக்க பயன்முறையில் RGB வண்ணம் (`SLEEP_RGB_OR_COLOR_TEMP`\" RGB_COLOR \"ஆக இருக்கும்போது பயன்படுத்தப்படுகிறது). .",
|
||||||
"include_config_in_attributes": "அடங்கும்_கான்ஃபிக்_இன்_அட்ரிபியூட்: `உண்மை` என அமைக்கப்பட்டிருக்கும் போது வீட்டு உதவியாளரின் சுவிட்சில் உள்ள பண்புகளாக அனைத்து விருப்பங்களையும் காட்டுங்கள். ."
|
"sleep_transition": "\"தூக்க பயன்முறை\" நொடிகளில் மாற்றப்படும்போது மாற்றத்தின் காலம். .",
|
||||||
},
|
"sunrise_time": "சூரிய உதயத்திற்கு ஒரு நிலையான நேரத்தை (HH: MM: SS) அமைக்கவும். .",
|
||||||
"data_description": {
|
"min_sunrise_time": "ஆரம்பகால மெய்நிகர் சூரிய உதய நேரத்தை (HH: MM: SS) அமைக்கவும், பின்னர் சூரிய உதயங்களை அனுமதிக்கிறது. .",
|
||||||
"initial_transition": "விளக்குகள் `ஆஃப்` முதல்` ஆன் `வரை நொடிகளில் மாறும் போது முதல் மாற்றத்தின் காலம். .",
|
"max_sunrise_time": "ஆரம்பகால சூரிய உதயத்தை அனுமதிக்கும் அண்மைக் கால மெய்நிகர் சூரிய தோன்றுகை நேரத்தை (HH: MM: SS) அமைக்கவும். .",
|
||||||
"sleep_rgb_or_color_temp": "தூக்க பயன்முறையில் `\" rgb_color \"` அல்லது `\" Color_Temp \"key ஐப் பயன்படுத்தவும். .",
|
"sunrise_offset": "விநாடிகளில் நேர்மறை அல்லது எதிர்மறை ஆஃப்செட் மூலம் சூரிய தோன்றுகை நேரத்தை சரிசெய்யவும். .",
|
||||||
"sleep_rgb_color": "தூக்க பயன்முறையில் RGB வண்ணம் (`SLEEP_RGB_OR_COLOR_TEMP`\" RGB_COLOR \"ஆக இருக்கும்போது பயன்படுத்தப்படுகிறது). .",
|
"sunset_time": "சூரிய அச்தமனத்திற்கு ஒரு நிலையான நேரத்தை (HH: MM: SS) அமைக்கவும். .",
|
||||||
"sleep_transition": "\"தூக்க பயன்முறை\" நொடிகளில் மாற்றப்படும்போது மாற்றத்தின் காலம். .",
|
"min_sunset_time": "ஆரம்பகால மெய்நிகர் சூரிய மறைவு நேரத்தை (HH: MM: SS) அமைக்கவும், பின்னர் சூரிய அச்தமனங்களை அனுமதிக்கிறது. .",
|
||||||
"sunrise_time": "சூரிய உதயத்திற்கு ஒரு நிலையான நேரத்தை (HH: MM: SS) அமைக்கவும். .",
|
"max_sunset_time": "முந்தைய சூரிய அச்தமனங்களை அனுமதிக்கும் அண்மைக் கால மெய்நிகர் சன்செட் நேரத்தை (HH: MM: SS) அமைக்கவும். .",
|
||||||
"min_sunrise_time": "ஆரம்பகால மெய்நிகர் சூரிய உதய நேரத்தை (HH: MM: SS) அமைக்கவும், பின்னர் சூரிய உதயங்களை அனுமதிக்கிறது. .",
|
"sunset_offset": "விநாடிகளில் நேர்மறை அல்லது எதிர்மறை ஆஃப்செட் மூலம் சூரிய மறைவு நேரத்தை சரிசெய்யவும். .",
|
||||||
"max_sunrise_time": "ஆரம்பகால சூரிய உதயத்தை அனுமதிக்கும் அண்மைக் கால மெய்நிகர் சூரிய தோன்றுகை நேரத்தை (HH: MM: SS) அமைக்கவும். .",
|
"brightness_mode": "பயன்படுத்த பிரகாசமான முறை. சாத்தியமான மதிப்புகள் `இயல்புநிலை`,` லீனியர்`, மற்றும் `டான்` (` பிரகாசம்_மோட்_ நேரம்_டார்க்` மற்றும் `பிரகாசம்_மோட்_மட்_லிட்` ஆகியவற்றைப் பயன்படுத்துகின்றன). .",
|
||||||
"sunrise_offset": "விநாடிகளில் நேர்மறை அல்லது எதிர்மறை ஆஃப்செட் மூலம் சூரிய தோன்றுகை நேரத்தை சரிசெய்யவும். .",
|
"brightness_mode_time_dark": ". .",
|
||||||
"sunset_time": "சூரிய அச்தமனத்திற்கு ஒரு நிலையான நேரத்தை (HH: MM: SS) அமைக்கவும். .",
|
"brightness_mode_time_light": ". ..",
|
||||||
"min_sunset_time": "ஆரம்பகால மெய்நிகர் சூரிய மறைவு நேரத்தை (HH: MM: SS) அமைக்கவும், பின்னர் சூரிய அச்தமனங்களை அனுமதிக்கிறது. .",
|
"autoreset_control_seconds": "பல விநாடிகளுக்குப் பிறகு தானாகவே கையேடு கட்டுப்பாட்டை மீட்டமைக்கவும். முடக்க 0 என அமைக்கவும். .",
|
||||||
"max_sunset_time": "முந்தைய சூரிய அச்தமனங்களை அனுமதிக்கும் அண்மைக் கால மெய்நிகர் சன்செட் நேரத்தை (HH: MM: SS) அமைக்கவும். .",
|
"send_split_delay": "ஒரே நேரத்தில் ஒளி மற்றும் வண்ண அமைப்பை ஆதரிக்காத விளக்குகளுக்கு `தனி_டர்ன்_ஆன்_காமண்ட்ச்` இடையே நேரந்தவறுகை (எம்.எச்). .",
|
||||||
"sunset_offset": "விநாடிகளில் நேர்மறை அல்லது எதிர்மறை ஆஃப்செட் மூலம் சூரிய மறைவு நேரத்தை சரிசெய்யவும். .",
|
"adapt_delay": "லைட் டர்ன் மற்றும் தகவமைப்பு விளக்குகள் இடையே காத்திருப்பு நேரம் (விநாடிகள்) மாற்றங்களைப் பயன்படுத்துகிறது. ஒளிரும் தவிர்க்க உதவலாம். ."
|
||||||
"send_split_delay": "ஒரே நேரத்தில் ஒளி மற்றும் வண்ண அமைப்பை ஆதரிக்காத விளக்குகளுக்கு `தனி_டர்ன்_ஆன்_காமண்ட்ச்` இடையே நேரந்தவறுகை (எம்.எச்). .",
|
}
|
||||||
"adapt_delay": "லைட் டர்ன் மற்றும் தகவமைப்பு விளக்குகள் இடையே காத்திருப்பு நேரம் (விநாடிகள்) மாற்றங்களைப் பயன்படுத்துகிறது. ஒளிரும் தவிர்க்க உதவலாம். .",
|
}
|
||||||
"brightness_mode": "பயன்படுத்த பிரகாசமான முறை. சாத்தியமான மதிப்புகள் `இயல்புநிலை`,` லீனியர்`, மற்றும் `டான்` (` பிரகாசம்_மோட்_ நேரம்_டார்க்` மற்றும் `பிரகாசம்_மோட்_மட்_லிட்` ஆகியவற்றைப் பயன்படுத்துகின்றன). .",
|
|
||||||
"brightness_mode_time_dark": ". .",
|
|
||||||
"brightness_mode_time_light": ". ..",
|
|
||||||
"autoreset_control_seconds": "பல விநாடிகளுக்குப் பிறகு தானாகவே கையேடு கட்டுப்பாட்டை மீட்டமைக்கவும். முடக்க 0 என அமைக்கவும். ."
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -6,58 +6,54 @@
|
||||||
"title": "Akıllı Aydınlatma seçenekleri",
|
"title": "Akıllı Aydınlatma seçenekleri",
|
||||||
"data": {
|
"data": {
|
||||||
"lights": "`lights`: Kontrol edilecek ışıkların entity_id listesi (boş bırakılabilir). 🌟",
|
"lights": "`lights`: Kontrol edilecek ışıkların entity_id listesi (boş bırakılabilir). 🌟",
|
||||||
"max_brightness": "`max_brightness`: Maksimum parlaklık yüzdesi. 💡",
|
|
||||||
"max_color_temp": "`max_color_temp`: En düşük renk sıcaklığı (Kelvin cinsinden). ❄️",
|
|
||||||
"min_brightness": "min_brightness: Minimum parlaklık yüzdesi.💡",
|
"min_brightness": "min_brightness: Minimum parlaklık yüzdesi.💡",
|
||||||
"min_color_temp": "`min_color_temp`: En yüksek (sıcak) renk sıcaklığı (Kelvin cinsinden). 🔥"
|
"max_brightness": "`max_brightness`: Maksimum parlaklık yüzdesi. 💡",
|
||||||
|
"min_color_temp": "`min_color_temp`: En yüksek (sıcak) renk sıcaklığı (Kelvin cinsinden). 🔥",
|
||||||
|
"max_color_temp": "`max_color_temp`: En düşük renk sıcaklığı (Kelvin cinsinden). ❄️"
|
||||||
},
|
},
|
||||||
"data_description": {
|
"data_description": {
|
||||||
"sleep_brightness": "Uyku modundayken ışıkların parlaklık yüzdesi 😴",
|
"interval": "Işıkların uyarlanma sıklığı (saniye cinsinden). 🔄",
|
||||||
"sleep_color_temp": "Uyku modunda renk sıcaklığı ( `sleep_rgb_or_color_temp` `color_temp` olarak ayarlandığında kullanılır) Kelvin cinsinden. 😴",
|
|
||||||
"transition": "Işıklar değişirken geçiş süresi (saniye cinsinden). 🕑",
|
"transition": "Işıklar değişirken geçiş süresi (saniye cinsinden). 🕑",
|
||||||
"interval": "Işıkların uyarlanma sıklığı (saniye cinsinden). 🔄"
|
"sleep_brightness": "Uyku modundayken ışıkların parlaklık yüzdesi 😴",
|
||||||
|
"sleep_color_temp": "Uyku modunda renk sıcaklığı ( `sleep_rgb_or_color_temp` `color_temp` olarak ayarlandığında kullanılır) Kelvin cinsinden. 😴"
|
||||||
},
|
},
|
||||||
"description": "Bir Adaptive Lighting bileşenini yapılandırın. Seçenek adları YAML ayarlarıyla uyumludur. Eğer bu girdiyi YAML’da tanımladıysanız, burada seçenekler görünmez. \nParametrelerin etkilerini gösteren etkileşimli grafikler için [bu web uygulamasını](https://basnijholt.github.io/adaptive-lighting) ziyaret edebilirsiniz. Daha fazla bilgi için [resmi dokümantasyona](https://github.com/basnijholt/adaptive-lighting#readme) bakın.",
|
"description": "Bir Adaptive Lighting bileşenini yapılandırın. Seçenek adları YAML ayarlarıyla uyumludur. Eğer bu girdiyi YAML’da tanımladıysanız, burada seçenekler görünmez. \nParametrelerin etkilerini gösteren etkileşimli grafikler için [bu web uygulamasını]({webapp_url}) ziyaret edebilirsiniz. Daha fazla bilgi için [resmi dokümantasyona]({docs_url}) bakın.",
|
||||||
"menu_options": {
|
"sections": {
|
||||||
"advanced": "Gelişmiş seçenekleri yapılandır",
|
"advanced": {
|
||||||
"finish": "Kaydet ve bitir"
|
"data": {
|
||||||
}
|
"prefer_rgb_color": "`prefer_rgb_color`: Mümkünse ışık renk sıcaklığı yerine RGB renk ayarını tercih edip etmeyeceğini belirler. 🌈",
|
||||||
},
|
"transition_until_sleep": "`transition_until_sleep`: Etkinleştirildiğinde, Adaptive Lighting uyku ayarlarını minimum değer olarak kabul eder ve gün batımından sonra bu değerlere geçiş yapar. 🌙",
|
||||||
"advanced": {
|
"take_over_control": "`take_over_control`: Işıklar açıkken ve uyarlanırken başka bir kaynaktan `light.turn_on` çağrılırsa Adaptive Lighting’i devre dışı bırakır. Dikkat: Bu işlem her `interval` süresinde `homeassistant.update_entity` çağrısı yapar! 🔒",
|
||||||
"title": "Gelişmiş Ayarlar",
|
"detect_non_ha_changes": "`detect_non_ha_changes`: `light.turn_on` dışındaki durum değişikliklerini algılar ve uyarlamayı durdurur. Bu ayarın çalışması için `take_over_control` etkin olmalıdır. 🕵️\nDikkat: ⚠️ Bazı ışıklar yanlışlıkla “açık” durumunu bildirebilir, bu da ışıkların beklenmedik şekilde açılmasına yol açabilir. Böyle bir durumla karşılaşırsanız bu özelliği devre dışı bırakın.",
|
||||||
"description": "Gelişmiş Adaptive Lighting seçeneklerini yapılandırın. Çoğu kullanıcının bu ayarları değiştirmesine gerek yoktur.",
|
"only_once": "`only_once`: Işıkları yalnızca açıldıklarında mı uyarlasın (`true`), yoksa sürekli uyarlamaya devam mı etsin (`false`). 🔄",
|
||||||
"data": {
|
"adapt_only_on_bare_turn_on": "Işıklar açıldığında geçerlidir. `true` olarak ayarlanırsa, eklenti yalnızca `light.turn_on` işlemi renk veya parlaklık belirtilmeden çağrıldığında uyarlama yapar (örneğin sahne etkinleştirmelerinde uyarlama yapılmaz). ❌🌈\n`false` olarak ayarlanırsa, renk veya parlaklık belirtilmiş olsa bile uyarlama yapılır. Bu ayarın çalışması için `take_over_control` etkin olmalıdır. 🕵️",
|
||||||
"adapt_only_on_bare_turn_on": "Işıklar açıldığında geçerlidir. `true` olarak ayarlanırsa, eklenti yalnızca `light.turn_on` işlemi renk veya parlaklık belirtilmeden çağrıldığında uyarlama yapar (örneğin sahne etkinleştirmelerinde uyarlama yapılmaz). ❌🌈\n`false` olarak ayarlanırsa, renk veya parlaklık belirtilmiş olsa bile uyarlama yapılır. Bu ayarın çalışması için `take_over_control` etkin olmalıdır. 🕵️",
|
"separate_turn_on_commands": "`separate_turn_on_commands`: Renk ve parlaklık için ayrı `light.turn_on` çağrıları kullanır; bazı ışık türleri için gereklidir. 🔀",
|
||||||
"detect_non_ha_changes": "`detect_non_ha_changes`: `light.turn_on` dışındaki durum değişikliklerini algılar ve uyarlamayı durdurur. Bu ayarın çalışması için `take_over_control` etkin olmalıdır. 🕵️\nDikkat: ⚠️ Bazı ışıklar yanlışlıkla “açık” durumunu bildirebilir, bu da ışıkların beklenmedik şekilde açılmasına yol açabilir. Böyle bir durumla karşılaşırsanız bu özelliği devre dışı bırakın.",
|
"skip_redundant_commands": "`skip_redundant_commands`: Hedef durumu ışığın bilinen durumu ile aynı olan uyarlama komutlarını atlar. Ağ trafiğini azaltır ve bazı durumlarda uyarlamanın yanıt hızını artırır. 📉 \nFiziksel ışık durumları HA’daki kaydedilen durumla senkronize değilse devre dışı bırakın.",
|
||||||
"include_config_in_attributes": "`include_config_in_attributes`: `true` olarak ayarlandığında, tüm seçenekleri Home Assistant’ta anahtarın attribute’ları olarak gösterir. 📝",
|
"intercept": "`intercept`: `light.turn_on` çağrılarını yakalar ve renk ile parlaklığın anında uyarlanmasını sağlar. 🏎️ Renk ve parlaklığı desteklemeyen ışıklar için devre dışı bırakın.",
|
||||||
"intercept": "`intercept`: `light.turn_on` çağrılarını yakalar ve renk ile parlaklığın anında uyarlanmasını sağlar. 🏎️ Renk ve parlaklığı desteklemeyen ışıklar için devre dışı bırakın.",
|
"multi_light_intercept": "`multi_light_intercept`: Birden fazla ışığı hedefleyen `light.turn_on` çağrılarını yakalar ve uyarlama yapar. ➗⚠️ Bu, örneğin ışıklar farklı anahtarlardaysa tek bir `light.turn_on` çağrısının birden fazla çağrıya bölünmesine yol açabilir. `intercept` etkin olmalıdır.",
|
||||||
"multi_light_intercept": "`multi_light_intercept`: Birden fazla ışığı hedefleyen `light.turn_on` çağrılarını yakalar ve uyarlama yapar. ➗⚠️ Bu, örneğin ışıklar farklı anahtarlardaysa tek bir `light.turn_on` çağrısının birden fazla çağrıya bölünmesine yol açabilir. `intercept` etkin olmalıdır.",
|
"include_config_in_attributes": "`include_config_in_attributes`: `true` olarak ayarlandığında, tüm seçenekleri Home Assistant’ta anahtarın attribute’ları olarak gösterir. 📝"
|
||||||
"only_once": "`only_once`: Işıkları yalnızca açıldıklarında mı uyarlasın (`true`), yoksa sürekli uyarlamaya devam mı etsin (`false`). 🔄",
|
},
|
||||||
"prefer_rgb_color": "`prefer_rgb_color`: Mümkünse ışık renk sıcaklığı yerine RGB renk ayarını tercih edip etmeyeceğini belirler. 🌈",
|
"data_description": {
|
||||||
"separate_turn_on_commands": "`separate_turn_on_commands`: Renk ve parlaklık için ayrı `light.turn_on` çağrıları kullanır; bazı ışık türleri için gereklidir. 🔀",
|
"initial_transition": "Işıklar `off` durumundan `on` durumuna geçerken ilk geçişin süresi (saniye cinsinden). ⏲️",
|
||||||
"skip_redundant_commands": "`skip_redundant_commands`: Hedef durumu ışığın bilinen durumu ile aynı olan uyarlama komutlarını atlar. Ağ trafiğini azaltır ve bazı durumlarda uyarlamanın yanıt hızını artırır. 📉 \nFiziksel ışık durumları HA’daki kaydedilen durumla senkronize değilse devre dışı bırakın.",
|
"sleep_rgb_or_color_temp": "Uyku modunda `\"rgb_color\"` veya `\"color_temp\"` kullanın. 🌙",
|
||||||
"take_over_control": "`take_over_control`: Işıklar açıkken ve uyarlanırken başka bir kaynaktan `light.turn_on` çağrılırsa Adaptive Lighting’i devre dışı bırakır. Dikkat: Bu işlem her `interval` süresinde `homeassistant.update_entity` çağrısı yapar! 🔒",
|
"sleep_rgb_color": "Uyku modunda RGB renk ( `sleep_rgb_or_color_temp` \"rgb_color\" olarak ayarlandığında kullanılır). 🌈",
|
||||||
"transition_until_sleep": "`transition_until_sleep`: Etkinleştirildiğinde, Adaptive Lighting uyku ayarlarını minimum değer olarak kabul eder ve gün batımından sonra bu değerlere geçiş yapar. 🌙"
|
"sleep_transition": "“Uyku modu” açılıp kapatıldığında geçiş süresi (saniye cinsinden). 😴",
|
||||||
},
|
"sunrise_time": "Gün doğumu için sabit bir saat (SS:DD:YY) belirleyin. 🌅",
|
||||||
"data_description": {
|
"min_sunrise_time": "En erken sanal gün doğumu saatini (SS:DD:YY) belirleyin; daha geç gün doğumlarına izin verir. 🌅",
|
||||||
"sunrise_offset": "Gün doğumu saatini, saniye cinsinden pozitif veya negatif bir kaydırma ile ayarlayın. ⏰",
|
"max_sunrise_time": "En geç sanal gün doğumu saatini (SS:DD:YY) belirleyin; daha erken gün doğumlarına izin verir. 🌅",
|
||||||
"sunset_offset": "Gün batımı saatini, saniye cinsinden pozitif veya negatif bir kaydırma ile ayarlayın. ⏰",
|
"sunrise_offset": "Gün doğumu saatini, saniye cinsinden pozitif veya negatif bir kaydırma ile ayarlayın. ⏰",
|
||||||
"autoreset_control_seconds": "Manuel kontrolü belirtilen saniye sonunda otomatik olarak sıfırlar. Devre dışı bırakmak için 0 olarak ayarlayın. ⏲️",
|
"sunset_time": "Gün batımı için sabit bir saat (SS:DD:YY) belirleyin. 🌇",
|
||||||
"brightness_mode": "Kullanılacak parlaklık modunu belirtir. Olası değerler: `default`, `linear` ve `tanh` (`brightness_mode_time_dark` ve `brightness_mode_time_light` ayarlarını kullanır). 📈",
|
"min_sunset_time": "En erken sanal gün batımı saatini (SS:DD:YY) belirleyin; daha geç gün batımlarına izin verir. 🌇",
|
||||||
"send_split_delay": "Parlaklık ve renk ayarını aynı anda desteklemeyen ışıklar için `separate_turn_on_commands` arasındaki gecikme (ms). ⏲️",
|
"max_sunset_time": "En geç sanal gün batımı saatini (SS:DD:YY) belirleyin; daha erken gün batımlarına izin verir. 🌇",
|
||||||
"initial_transition": "Işıklar `off` durumundan `on` durumuna geçerken ilk geçişin süresi (saniye cinsinden). ⏲️",
|
"sunset_offset": "Gün batımı saatini, saniye cinsinden pozitif veya negatif bir kaydırma ile ayarlayın. ⏰",
|
||||||
"sleep_transition": "“Uyku modu” açılıp kapatıldığında geçiş süresi (saniye cinsinden). 😴",
|
"brightness_mode": "Kullanılacak parlaklık modunu belirtir. Olası değerler: `default`, `linear` ve `tanh` (`brightness_mode_time_dark` ve `brightness_mode_time_light` ayarlarını kullanır). 📈",
|
||||||
"brightness_mode_time_light": "(`brightness_mode='default'` ise göz ardı edilir) Gün doğumu/gün batımı öncesi/sonrası parlaklığı kademeli olarak artırma/azaltma süresi (saniye cinsinden). 📈📉",
|
"brightness_mode_time_dark": "(`brightness_mode='default'` ise göz ardı edilir) Gün doğumu/gün batımı öncesi/sonrası parlaklığı kademeli olarak artırma/azaltma süresi (saniye cinsinden). 📈📉",
|
||||||
"brightness_mode_time_dark": "(`brightness_mode='default'` ise göz ardı edilir) Gün doğumu/gün batımı öncesi/sonrası parlaklığı kademeli olarak artırma/azaltma süresi (saniye cinsinden). 📈📉",
|
"brightness_mode_time_light": "(`brightness_mode='default'` ise göz ardı edilir) Gün doğumu/gün batımı öncesi/sonrası parlaklığı kademeli olarak artırma/azaltma süresi (saniye cinsinden). 📈📉",
|
||||||
"sleep_rgb_color": "Uyku modunda RGB renk ( `sleep_rgb_or_color_temp` \"rgb_color\" olarak ayarlandığında kullanılır). 🌈",
|
"autoreset_control_seconds": "Manuel kontrolü belirtilen saniye sonunda otomatik olarak sıfırlar. Devre dışı bırakmak için 0 olarak ayarlayın. ⏲️",
|
||||||
"sunrise_time": "Gün doğumu için sabit bir saat (SS:DD:YY) belirleyin. 🌅",
|
"send_split_delay": "Parlaklık ve renk ayarını aynı anda desteklemeyen ışıklar için `separate_turn_on_commands` arasındaki gecikme (ms). ⏲️",
|
||||||
"sunset_time": "Gün batımı için sabit bir saat (SS:DD:YY) belirleyin. 🌇",
|
"adapt_delay": "Işık açıldıktan sonra Adaptive Lighting’in değişiklikleri uygulamasına kadar bekleme süresi (saniye cinsinden). Titremeyi önlemeye yardımcı olabilir. ⏲️"
|
||||||
"min_sunrise_time": "En erken sanal gün doğumu saatini (SS:DD:YY) belirleyin; daha geç gün doğumlarına izin verir. 🌅",
|
}
|
||||||
"min_sunset_time": "En erken sanal gün batımı saatini (SS:DD:YY) belirleyin; daha geç gün batımlarına izin verir. 🌇",
|
}
|
||||||
"max_sunrise_time": "En geç sanal gün doğumu saatini (SS:DD:YY) belirleyin; daha erken gün doğumlarına izin verir. 🌅",
|
|
||||||
"max_sunset_time": "En geç sanal gün batımı saatini (SS:DD:YY) belirleyin; daha erken gün batımlarına izin verir. 🌇",
|
|
||||||
"sleep_rgb_or_color_temp": "Uyku modunda `\"rgb_color\"` veya `\"color_temp\"` kullanın. 🌙",
|
|
||||||
"adapt_delay": "Işık açıldıktan sonra Adaptive Lighting’in değişiklikleri uygulamasına kadar bekleme süresi (saniye cinsinden). Titremeyi önlemeye yardımcı olabilir. ⏲️"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,13 @@
|
||||||
"data": {
|
"data": {
|
||||||
"name": "Ім’я"
|
"name": "Ім’я"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"menu": {
|
||||||
|
"data": {
|
||||||
|
"action": "Дія"
|
||||||
|
},
|
||||||
|
"title": "Створити або дублювати",
|
||||||
|
"description": "Ви хочете створити новий екземпляр чи скопіювати існуючий?"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"abort": {
|
"abort": {
|
||||||
|
|
@ -22,65 +29,62 @@
|
||||||
"data": {
|
"data": {
|
||||||
"lights": "прилади",
|
"lights": "прилади",
|
||||||
"interval": "interval: Час між оновленнями перемикача. (секунди)",
|
"interval": "interval: Час між оновленнями перемикача. (секунди)",
|
||||||
"max_brightness": "max_brightness: Найвища яскравість світла під час циклу. (%)",
|
"transition": "Час переходу, який застосовується до освітлення (секунди)",
|
||||||
"max_color_temp": "max_color_temp: Найхолодніший відтінок циклу кольорової температури. (Кельвін)",
|
|
||||||
"min_brightness": "min_brightness: Найнижча яскравість світла під час циклу. (%)",
|
"min_brightness": "min_brightness: Найнижча яскравість світла під час циклу. (%)",
|
||||||
|
"max_brightness": "max_brightness: Найвища яскравість світла під час циклу. (%)",
|
||||||
"min_color_temp": "min_color_temp: Найтепліший відтінок циклу кольорової температури. (%)",
|
"min_color_temp": "min_color_temp: Найтепліший відтінок циклу кольорової температури. (%)",
|
||||||
|
"max_color_temp": "max_color_temp: Найхолодніший відтінок циклу кольорової температури. (Кельвін)",
|
||||||
"sleep_brightness": "sleep_brightness: Налаштування яскравості для Режиму сну. (%)",
|
"sleep_brightness": "sleep_brightness: Налаштування яскравості для Режиму сну. (%)",
|
||||||
"sleep_color_temp": "sleep_color_temp: Температура кольору для Режиму сну. (Кельвін)",
|
"sleep_color_temp": "sleep_color_temp: Температура кольору для Режиму сну. (Кельвін)"
|
||||||
"transition": "Час переходу, який застосовується до освітлення (секунди)"
|
|
||||||
},
|
},
|
||||||
"data_description": {
|
"data_description": {
|
||||||
"transition": "Тривалість переходу, коли світло змінюється, у секундах. 🕑",
|
|
||||||
"interval": "Частота адаптації освітлення, у секундах. 🔄",
|
"interval": "Частота адаптації освітлення, у секундах. 🔄",
|
||||||
|
"transition": "Тривалість переходу, коли світло змінюється, у секундах. 🕑",
|
||||||
"sleep_brightness": "Відсоток яскравості світла в режимі сну. 😴",
|
"sleep_brightness": "Відсоток яскравості світла в режимі сну. 😴",
|
||||||
"sleep_color_temp": "Колірна температура в режимі сну (використовується, коли `sleep_rgb_or_color_temp` має значення `color_temp`) у Кельвінах. 😴"
|
"sleep_color_temp": "Колірна температура в режимі сну (використовується, коли `sleep_rgb_or_color_temp` має значення `color_temp`) у Кельвінах. 😴"
|
||||||
},
|
},
|
||||||
"menu_options": {
|
"sections": {
|
||||||
"advanced": "Налаштувати розширені параметри",
|
"advanced": {
|
||||||
"finish": "Зберегти та завершити"
|
"data": {
|
||||||
}
|
"initial_transition": "initial_transition: Коли прилад вимикається (off), вмикається (on), або змінює 'sleep_state'. (секунди)",
|
||||||
},
|
"prefer_rgb_color": "prefer_rgb_color: Використовувати 'rgb_color' замість 'color_temp', коли можливо.",
|
||||||
"advanced": {
|
"transition_until_sleep": "transition_until_sleep: Коли активовано, адаптивне освітлення буде ставитись до налаштування сну як мінімум, переходячи до цих значень після заходу сонця. 🌙",
|
||||||
"title": "Розширені налаштування",
|
"sunrise_time": "sunrise_time: Ручний перезапис часу сходу сонця, якщо 'None', тоді використовується час сходу сонця у вашій локації (HH:MM:SS)",
|
||||||
"description": "Налаштуйте розширені параметри адаптивного освітлення. Більшості користувачів не потрібно змінювати ці налаштування.",
|
"sunrise_offset": "sunrise_offset: Як за довго до(-) або після(+) визначати точку сходу сонця для циклу (+/- секунд)",
|
||||||
"data": {
|
"sunset_time": "sunset_time: Ручний перезапис часу заходу сонця, якщо 'None', тоді використовується час заходу сонця у вашій локації (HH:MM:SS)",
|
||||||
"initial_transition": "initial_transition: Коли прилад вимикається (off), вмикається (on), або змінює 'sleep_state'. (секунди)",
|
"sunset_offset": "sunset_offset: Як за довго до(-) або після(+) визначати точку заходу сонця для циклу (+/- секунд)",
|
||||||
"only_once": "only_once: Адаптувати світло лише після початкового увімкнення.",
|
"take_over_control": "take_over_control: Якщо що-небудь, окрім Адаптивного освітлення, викликає 'light.turn_on', коли світло вже увімкнено, чи адаптувати освітлення допоки світло (або перемикач) перемкнеться (off -> on).",
|
||||||
"prefer_rgb_color": "prefer_rgb_color: Використовувати 'rgb_color' замість 'color_temp', коли можливо.",
|
"detect_non_ha_changes": "detect_non_ha_changes: виявляти всі зміни >10% до освітлення (включаючи ті, що зроблені поза HA), вимагає, щоб 'take_over_control' був включений (виклик 'homeassistant.update_entity' кожного оновлення 'interval'!)",
|
||||||
"separate_turn_on_commands": "separate_turn_on_commands: Окремі команди для кожного атрибута (колір, яскравість, тощо.) в 'light.turn_on' (необхідні для деяких приладів).",
|
"only_once": "only_once: Адаптувати світло лише після початкового увімкнення.",
|
||||||
"sunrise_offset": "sunrise_offset: Як за довго до(-) або після(+) визначати точку сходу сонця для циклу (+/- секунд)",
|
"adapt_only_on_bare_turn_on": "adapt_only_on_bare_turn_on: На початку вмикання світла. Якщо `true`, освітлення адаптується лише якщо `light.turn_on` викликано без вказання кольору чи яскравості. ❌🌈 Це, наприклад, запобігає адаптації, коли сцена активується. Якщо `false`, освітлення адаптується незалежно від наявності кольору чи яскравості у початковому `service_data`. Потребує ввімкнення `take_over_control`. 🕵️",
|
||||||
"sunrise_time": "sunrise_time: Ручний перезапис часу сходу сонця, якщо 'None', тоді використовується час сходу сонця у вашій локації (HH:MM:SS)",
|
"separate_turn_on_commands": "separate_turn_on_commands: Окремі команди для кожного атрибута (колір, яскравість, тощо.) в 'light.turn_on' (необхідні для деяких приладів).",
|
||||||
"sunset_offset": "sunset_offset: Як за довго до(-) або після(+) визначати точку заходу сонця для циклу (+/- секунд)",
|
"skip_redundant_commands": "skip_redundant_commands: Пропускати надсилання команд адаптації, цільовий стан яких вже дорівнює відомому стану освітлення. Мінімізує мережевий трафік і покращує швидкість реагування адаптації в деяких ситуаціях. 📉Вимкнути, якщо фізичний стан освітлення не синхронізується із записаним станом HA.",
|
||||||
"sunset_time": "sunset_time: Ручний перезапис часу заходу сонця, якщо 'None', тоді використовується час заходу сонця у вашій локації (HH:MM:SS)",
|
"intercept": "intercept: Перехоплювати та адаптувати виклики увімкнення світла (`light.turn_on`), щоб увімкнути миттєву адаптацію кольору та яскравості. 🏎️ Вимкніть для світла, що не підтримує увімкнення світла (`light.turn_on`) з кольором та яскравістю.",
|
||||||
"take_over_control": "take_over_control: Якщо що-небудь, окрім Адаптивного освітлення, викликає 'light.turn_on', коли світло вже увімкнено, чи адаптувати освітлення допоки світло (або перемикач) перемкнеться (off -> on).",
|
"multi_light_intercept": "multi_light_intercept: Перехоплення та адаптація викликів `light.turn_on`, які спрямовані на кілька світильників. ➗⚠️ Це може призвести до розділення одного виклику `light.turn_on` на кілька викликів, наприклад, коли світильники підключені до різних вимикачів. Потрібно ввімкнути `intercept`.",
|
||||||
"detect_non_ha_changes": "detect_non_ha_changes: виявляти всі зміни >10% до освітлення (включаючи ті, що зроблені поза HA), вимагає, щоб 'take_over_control' був включений (виклик 'homeassistant.update_entity' кожного оновлення 'interval'!)",
|
"include_config_in_attributes": "Включити конфігурацію в атрибути (`include_config_in_attributes`): Показувати всі опції як атрибути на перемикачі в Home Assistant, якщо встановлено значення `true`. 📝"
|
||||||
"adapt_only_on_bare_turn_on": "adapt_only_on_bare_turn_on: На початку вмикання світла. Якщо `true`, освітлення адаптується лише якщо `light.turn_on` викликано без вказання кольору чи яскравості. ❌🌈 Це, наприклад, запобігає адаптації, коли сцена активується. Якщо `false`, освітлення адаптується незалежно від наявності кольору чи яскравості у початковому `service_data`. Потребує ввімкнення `take_over_control`. 🕵️",
|
},
|
||||||
"transition_until_sleep": "transition_until_sleep: Коли активовано, адаптивне освітлення буде ставитись до налаштування сну як мінімум, переходячи до цих значень після заходу сонця. 🌙",
|
"data_description": {
|
||||||
"intercept": "intercept: Перехоплювати та адаптувати виклики увімкнення світла (`light.turn_on`), щоб увімкнути миттєву адаптацію кольору та яскравості. 🏎️ Вимкніть для світла, що не підтримує увімкнення світла (`light.turn_on`) з кольором та яскравістю.",
|
"initial_transition": "Тривалість першого переходу, коли світло перемикається зі стану вимкнено `off` на увімкнено `on`, у секундах. ⏲️",
|
||||||
"include_config_in_attributes": "Включити конфігурацію в атрибути (`include_config_in_attributes`): Показувати всі опції як атрибути на перемикачі в Home Assistant, якщо встановлено значення `true`. 📝",
|
"sleep_rgb_or_color_temp": "Використовуйте `\"rgb_color\"` або `\"color_temp\"` у режимі сну. 🌙",
|
||||||
"multi_light_intercept": "multi_light_intercept: Перехоплення та адаптація викликів `light.turn_on`, які спрямовані на кілька світильників. ➗⚠️ Це може призвести до розділення одного виклику `light.turn_on` на кілька викликів, наприклад, коли світильники підключені до різних вимикачів. Потрібно ввімкнути `intercept`.",
|
"sleep_rgb_color": "Колір RGB у режимі сну (використовується, коли `sleep_rgb_or_color_temp` має значення \"rgb_color\"). 🌈",
|
||||||
"skip_redundant_commands": "skip_redundant_commands: Пропускати надсилання команд адаптації, цільовий стан яких вже дорівнює відомому стану освітлення. Мінімізує мережевий трафік і покращує швидкість реагування адаптації в деяких ситуаціях. 📉Вимкнути, якщо фізичний стан освітлення не синхронізується із записаним станом HA."
|
"sleep_transition": "Тривалість переходу, коли режим сну \"sleep mode\" увімкнено, у секундах. 😴",
|
||||||
},
|
"sunrise_time": "Встановіть фіксований час (ГГ:ХХ:СС) для сходу сонця. 🌅",
|
||||||
"data_description": {
|
"min_sunrise_time": "Встановіть найраніший час віртуального сходу сонця (ГГ:ХХ:СС), враховуючи пізніші сходи. 🌅",
|
||||||
"sunrise_offset": "Змінити час сходу сонця на +/- секунд. ⏰",
|
"max_sunrise_time": "Встановіть найпізніший час віртуального сходу сонця (ГГ:ХХ:СС), враховуючи більш ранні сходи сонця. 🌅",
|
||||||
"sunset_offset": "Змінити час заходу сонця на +/- секунд. ⏰",
|
"sunrise_offset": "Змінити час сходу сонця на +/- секунд. ⏰",
|
||||||
"autoreset_control_seconds": "Самочинно скидати ручне керування після кількох секунд. Встановіть 0, щоб вимкнути.",
|
"sunset_time": "Встановіть фіксований час (ГГ:ХХ:СС) для заходу сонця. 🌇",
|
||||||
"initial_transition": "Тривалість першого переходу, коли світло перемикається зі стану вимкнено `off` на увімкнено `on`, у секундах. ⏲️",
|
"min_sunset_time": "Встановіть найраніший час віртуального заходу сонця (ГГ:ХХ:СС), враховуючи пізніші заходи сонця. 🌇",
|
||||||
"brightness_mode": "Режим яскравості для використання. Можливі значення: default (стандартний) , linear (лінійний) та tanh (гіперболічний тангенс) (використовує значення brightness_mode_time_dark та brightness_mode_time_light).",
|
"max_sunset_time": "Встановіть найновіший час віртуального заходу сонця (ГГ:ХХ:СС), враховуючи більш ранні заходи сонця. 🌇",
|
||||||
"send_split_delay": "Затримка (мс) між `separate_turn_on_commands` (окремі команди увімкнення) для світла, що не підтримує одночасне налаштування яскравості та кольору. ⏲️",
|
"sunset_offset": "Змінити час заходу сонця на +/- секунд. ⏰",
|
||||||
"brightness_mode_time_dark": "(Ігнорується, якщо `brightness_mode='default'`) Тривалість у секундах для збільшення/зменшення яскравості до/після сходу/заходу сонця. 📈📉",
|
"brightness_mode": "Режим яскравості для використання. Можливі значення: default (стандартний) , linear (лінійний) та tanh (гіперболічний тангенс) (використовує значення brightness_mode_time_dark та brightness_mode_time_light).",
|
||||||
"brightness_mode_time_light": "(Ігнорується, якщо brightness_mode='default') Тривалість у секундах для збільшення/зменшення яскравості після/до сходу/заходу сонця. 📈📉.",
|
"brightness_mode_time_dark": "(Ігнорується, якщо `brightness_mode='default'`) Тривалість у секундах для збільшення/зменшення яскравості до/після сходу/заходу сонця. 📈📉",
|
||||||
"sleep_transition": "Тривалість переходу, коли режим сну \"sleep mode\" увімкнено, у секундах. 😴",
|
"brightness_mode_time_light": "(Ігнорується, якщо brightness_mode='default') Тривалість у секундах для збільшення/зменшення яскравості після/до сходу/заходу сонця. 📈📉.",
|
||||||
"sleep_rgb_color": "Колір RGB у режимі сну (використовується, коли `sleep_rgb_or_color_temp` має значення \"rgb_color\"). 🌈",
|
"take_over_control_mode": "Режим призупинення адаптації, коли інші джерела змінюють яскравість та/або колір світла. `pause_all` завжди призупиняє адаптацію як яскравості, так і кольору. `pause_changed` призупиняє адаптацію лише змінених атрибутів та продовжує адаптацію незмінних атрибутів, наприклад, продовжує адаптацію кольору, коли змінювалася лише яскравість.",
|
||||||
"sunrise_time": "Встановіть фіксований час (ГГ:ХХ:СС) для сходу сонця. 🌅",
|
"autoreset_control_seconds": "Самочинно скидати ручне керування після кількох секунд. Встановіть 0, щоб вимкнути.",
|
||||||
"sunset_time": "Встановіть фіксований час (ГГ:ХХ:СС) для заходу сонця. 🌇",
|
"send_split_delay": "Затримка (мс) між `separate_turn_on_commands` (окремі команди увімкнення) для світла, що не підтримує одночасне налаштування яскравості та кольору. ⏲️",
|
||||||
"min_sunrise_time": "Встановіть найраніший час віртуального сходу сонця (ГГ:ХХ:СС), враховуючи пізніші сходи. 🌅",
|
"adapt_delay": "Час очікування (секунди) між увімкненням світла та застосуванням змін системою адаптивного освітлення. Може допомогти уникнути мерехтіння. ⏲️"
|
||||||
"min_sunset_time": "Встановіть найраніший час віртуального заходу сонця (ГГ:ХХ:СС), враховуючи пізніші заходи сонця. 🌇",
|
}
|
||||||
"max_sunrise_time": "Встановіть найпізніший час віртуального сходу сонця (ГГ:ХХ:СС), враховуючи більш ранні сходи сонця. 🌅",
|
}
|
||||||
"max_sunset_time": "Встановіть найновіший час віртуального заходу сонця (ГГ:ХХ:СС), враховуючи більш ранні заходи сонця. 🌇",
|
|
||||||
"sleep_rgb_or_color_temp": "Використовуйте `\"rgb_color\"` або `\"color_temp\"` у режимі сну. 🌙",
|
|
||||||
"adapt_delay": "Час очікування (секунди) між увімкненням світла та застосуванням змін системою адаптивного освітлення. Може допомогти уникнути мерехтіння. ⏲️"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
@ -204,6 +208,9 @@
|
||||||
},
|
},
|
||||||
"turn_on_lights": {
|
"turn_on_lights": {
|
||||||
"description": "Чи вмикати світло, яке наразі вимкнене. 🔆"
|
"description": "Чи вмикати світло, яке наразі вимкнене. 🔆"
|
||||||
|
},
|
||||||
|
"take_over_control_mode": {
|
||||||
|
"description": "Режим призупинення адаптації, коли інші джерела змінюють яскравість та/або колір світла. `pause_all` завжди призупиняє адаптацію як яскравості, так і кольору. `pause_changed` призупиняє адаптацію лише змінених атрибутів та продовжує адаптацію незмінних атрибутів, наприклад, продовжує адаптацію кольору, коли змінювалася лише яскравість."
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"description": "Змініть будь-які налаштування, які ви бажаєте, у цьому перемикачі. Усі опції тут такі ж, як і в поточному конфігураційному файлі."
|
"description": "Змініть будь-які налаштування, які ви бажаєте, у цьому перемикачі. Усі опції тут такі ж, як і в поточному конфігураційному файлі."
|
||||||
|
|
|
||||||
|
|
@ -137,60 +137,56 @@
|
||||||
"step": {
|
"step": {
|
||||||
"init": {
|
"init": {
|
||||||
"data_description": {
|
"data_description": {
|
||||||
"sleep_color_temp": "کیلون میں نیند کے موڈ میں رنگ کا درجہ حرارت (جب 'sleep_rgb_or_color_temp' 'color_temp' ہوتا ہے) میں استعمال ہوتا ہے۔ 😴",
|
|
||||||
"sleep_brightness": "نیند کے موڈ میں روشنی کی چمک کا فیصد. 😴",
|
|
||||||
"interval": "روشنیوں کو سیکنڈوں میں ڈھالنے کی فریکوئنسی۔ 🔄",
|
"interval": "روشنیوں کو سیکنڈوں میں ڈھالنے کی فریکوئنسی۔ 🔄",
|
||||||
"transition": "جب روشنیاں تبدیل ہوتی ہیں تو منتقلی کا دورانیہ ، سیکنڈوں میں۔ 🕑"
|
"transition": "جب روشنیاں تبدیل ہوتی ہیں تو منتقلی کا دورانیہ ، سیکنڈوں میں۔ 🕑",
|
||||||
|
"sleep_brightness": "نیند کے موڈ میں روشنی کی چمک کا فیصد. 😴",
|
||||||
|
"sleep_color_temp": "کیلون میں نیند کے موڈ میں رنگ کا درجہ حرارت (جب 'sleep_rgb_or_color_temp' 'color_temp' ہوتا ہے) میں استعمال ہوتا ہے۔ 😴"
|
||||||
},
|
},
|
||||||
"data": {
|
"data": {
|
||||||
"max_color_temp": "max_color_temp: کیلون میں سرد ترین رنگ کا درجہ حرارت۔ ❄️",
|
|
||||||
"max_brightness": "max_brightness: زیادہ سے زیادہ چمک کا فیصد. 💡",
|
|
||||||
"lights": "لائٹس: کنٹرول کی جانے والی روشنی کے entity_ids کی فہرست (خالی ہوسکتی ہے). 🌟",
|
"lights": "لائٹس: کنٹرول کی جانے والی روشنی کے entity_ids کی فہرست (خالی ہوسکتی ہے). 🌟",
|
||||||
"min_brightness": "min_brightness: کم سے کم چمک کا فیصد. 💡",
|
"min_brightness": "min_brightness: کم سے کم چمک کا فیصد. 💡",
|
||||||
"min_color_temp": "min_color_temp: کیلون میں گرم ترین رنگ کا درجہ حرارت. 🔥"
|
"max_brightness": "max_brightness: زیادہ سے زیادہ چمک کا فیصد. 💡",
|
||||||
|
"min_color_temp": "min_color_temp: کیلون میں گرم ترین رنگ کا درجہ حرارت. 🔥",
|
||||||
|
"max_color_temp": "max_color_temp: کیلون میں سرد ترین رنگ کا درجہ حرارت۔ ❄️"
|
||||||
},
|
},
|
||||||
"title": "مطابقت پذیر روشنی کے اختیارات",
|
"title": "مطابقت پذیر روشنی کے اختیارات",
|
||||||
"description": "ایک مطابقت پذیر لائٹنگ جزو تشکیل دیں۔ آپشن کے نام YAML کی ترتیبات کے ساتھ مطابقت رکھتے ہیں۔ اگر آپ نے YAML میں اس اندراج کی وضاحت کی ہے تو ، یہاں کوئی آپشن ظاہر نہیں ہوگا۔ انٹرایکٹو گراف کے لئے جو پیرامیٹر کے اثرات کو ظاہر کرتے ہیں ، ملاحظہ کریں [اس ویب ایپ] (https://basnijholt.github.io/adaptive-lighting)۔ مزید تفصیلات کے لئے ، [سرکاری دستاویزات] (https://github.com/basnijholt/adaptive-lighting#readme) ملاحظہ کریں۔",
|
"description": "ایک مطابقت پذیر لائٹنگ جزو تشکیل دیں۔ آپشن کے نام YAML کی ترتیبات کے ساتھ مطابقت رکھتے ہیں۔ اگر آپ نے YAML میں اس اندراج کی وضاحت کی ہے تو ، یہاں کوئی آپشن ظاہر نہیں ہوگا۔ انٹرایکٹو گراف کے لئے جو پیرامیٹر کے اثرات کو ظاہر کرتے ہیں ، ملاحظہ کریں [اس ویب ایپ]({webapp_url})۔ مزید تفصیلات کے لئے ، [سرکاری دستاویزات]({docs_url}) ملاحظہ کریں۔",
|
||||||
"menu_options": {
|
"sections": {
|
||||||
"advanced": "Configure advanced options",
|
"advanced": {
|
||||||
"finish": "Save and finish"
|
"data": {
|
||||||
}
|
"prefer_rgb_color": "prefer_rgb_color: جب ممکن ہو تو روشنی کے رنگ کے درجہ حرارت پر آر جی بی رنگ ایڈجسٹمنٹ کو ترجیح دیں یا نہیں۔ 🌈",
|
||||||
},
|
"transition_until_sleep": "transition_until_sleep: جب فعال کیا جاتا ہے تو ، ایڈاپٹو لائٹنگ نیند کی ترتیبات کو کم سے کم تصور کرے گی ، غروب آفتاب کے بعد ان اقدار میں منتقل ہوگی۔ 🌙",
|
||||||
"advanced": {
|
"take_over_control": "take_over_control: اگر کوئی دوسرا ذریعہ 'light.turn_on' کا نام دیتا ہے تو ایڈاپٹو لائٹنگ کو غیر فعال کریں جب لائٹس آن ہیں اور اسے اپنایا جارہا ہے۔ نوٹ کریں کہ یہ ہر 'وقفے' کو 'homeassistant.update_entity' کہتا ہے! 🔒",
|
||||||
"title": "Advanced Settings",
|
"detect_non_ha_changes": "detect_non_ha_changes: غیر light.turn_on ریاست کی تبدیلیوں کے لئے موافقت کا پتہ لگاتا ہے اور روکتا ہے۔ 'take_over_control' کو فعال کرنے کی ضرورت ہے۔ 🕵️ احتیاط: ⚠️ کچھ لائٹس غلط طور پر 'آن' حالت کی نشاندہی کر سکتی ہیں ، جس کے نتیجے میں لائٹس غیر متوقع طور پر آن ہوسکتی ہیں۔ اگر آپ کو اس طرح کے مسائل کا سامنا کرنا پڑتا ہے تو اس خصوصیت کو غیر فعال کریں۔",
|
||||||
"description": "Configure advanced Adaptive Lighting options. Most users don't need to change these settings.",
|
"only_once": "only_once: لائٹس کو صرف اس وقت ڈھالیں جب وہ آن ہوں ('سچ') یا انہیں اپناتے رہیں ('جھوٹ')۔ 🔄",
|
||||||
"data": {
|
"adapt_only_on_bare_turn_on": "adapt_only_on_bare_turn_on: شروع میں لائٹس آن کرتے وقت۔ اگر 'true' پر سیٹ کیا جاتا ہے، AL صرف اس صورت میں موافق ہوتا ہے جب رنگ یا چمک کی وضاحت کیے بغیر 'light.turn_on' کو مدعو کیا جاتا ہے۔ ❌🌈 یہ مثال کے طور پر، کسی منظر کو چالو کرتے وقت موافقت کو روکتا ہے۔ اگر 'غلط'، AL ابتدائی `سروس_ڈیٹا` میں رنگ یا چمک کی موجودگی سے قطع نظر موافقت کرتا ہے۔ 'ٹیک_اوور_کنٹرول' کو فعال کرنے کی ضرورت ہے۔ 🕵️ ",
|
||||||
"detect_non_ha_changes": "detect_non_ha_changes: غیر light.turn_on ریاست کی تبدیلیوں کے لئے موافقت کا پتہ لگاتا ہے اور روکتا ہے۔ 'take_over_control' کو فعال کرنے کی ضرورت ہے۔ 🕵️ احتیاط: ⚠️ کچھ لائٹس غلط طور پر 'آن' حالت کی نشاندہی کر سکتی ہیں ، جس کے نتیجے میں لائٹس غیر متوقع طور پر آن ہوسکتی ہیں۔ اگر آپ کو اس طرح کے مسائل کا سامنا کرنا پڑتا ہے تو اس خصوصیت کو غیر فعال کریں۔",
|
"separate_turn_on_commands": "separate_turn_on_commands: رنگ اور چمک کے لئے الگ الگ 'light.turn_on' کا استعمال کریں، جو کچھ روشنی کی اقسام کے لئے ضروری ہے. 🔀",
|
||||||
"multi_light_intercept": "multi_light_intercept: 'light.turn_on' کالز کو روکیں اور ان کے مطابق ڈھالیں جو متعدد روشنیوں کو نشانہ بناتی ہیں۔ ➗⚠️ اس کے نتیجے میں ایک ہی 'light.turn_on' کال کو متعدد کالز میں تقسیم کیا جاسکتا ہے ، مثال کے طور پر ، جب لائٹس مختلف سوئچوں میں ہوتی ہیں۔ 'انٹرسیپٹ' کو فعال کرنے کی ضرورت ہے۔",
|
"skip_redundant_commands": "skip_redundant_commands: موافقت کے احکامات بھیجنے سے گریز کریں جن کی ہدف کی حالت پہلے سے ہی روشنی کی معلوم حالت کے برابر ہے۔ نیٹ ورک ٹریفک کو کم سے کم کرتا ہے اور کچھ حالات میں موافقت کی ذمہ داری کو بہتر بناتا ہے۔ 📉اگر جسمانی روشنی کی حالت یں ایچ اے کی ریکارڈ شدہ حالت کے ساتھ مطابقت سے باہر ہوجاتی ہیں تو غیر فعال کریں۔",
|
||||||
"adapt_only_on_bare_turn_on": "adapt_only_on_bare_turn_on: شروع میں لائٹس آن کرتے وقت۔ اگر 'true' پر سیٹ کیا جاتا ہے، AL صرف اس صورت میں موافق ہوتا ہے جب رنگ یا چمک کی وضاحت کیے بغیر 'light.turn_on' کو مدعو کیا جاتا ہے۔ ❌🌈 یہ مثال کے طور پر، کسی منظر کو چالو کرتے وقت موافقت کو روکتا ہے۔ اگر 'غلط'، AL ابتدائی `سروس_ڈیٹا` میں رنگ یا چمک کی موجودگی سے قطع نظر موافقت کرتا ہے۔ 'ٹیک_اوور_کنٹرول' کو فعال کرنے کی ضرورت ہے۔ 🕵️ ",
|
"intercept": "انٹرسیپٹ: 'light.turn_on' کالز کو فوری طور پر رنگ اور چمک کے مطابقت پذیری کو قابل بنانے کے لئے روکیں اور اپنائیں۔ 🏎️ ایسی روشنیوں کو غیر فعال کریں جو رنگ اور چمک کے ساتھ 'light.turn_on' کی حمایت نہیں کرتی ہیں۔",
|
||||||
"skip_redundant_commands": "skip_redundant_commands: موافقت کے احکامات بھیجنے سے گریز کریں جن کی ہدف کی حالت پہلے سے ہی روشنی کی معلوم حالت کے برابر ہے۔ نیٹ ورک ٹریفک کو کم سے کم کرتا ہے اور کچھ حالات میں موافقت کی ذمہ داری کو بہتر بناتا ہے۔ 📉اگر جسمانی روشنی کی حالت یں ایچ اے کی ریکارڈ شدہ حالت کے ساتھ مطابقت سے باہر ہوجاتی ہیں تو غیر فعال کریں۔",
|
"multi_light_intercept": "multi_light_intercept: 'light.turn_on' کالز کو روکیں اور ان کے مطابق ڈھالیں جو متعدد روشنیوں کو نشانہ بناتی ہیں۔ ➗⚠️ اس کے نتیجے میں ایک ہی 'light.turn_on' کال کو متعدد کالز میں تقسیم کیا جاسکتا ہے ، مثال کے طور پر ، جب لائٹس مختلف سوئچوں میں ہوتی ہیں۔ 'انٹرسیپٹ' کو فعال کرنے کی ضرورت ہے۔",
|
||||||
"separate_turn_on_commands": "separate_turn_on_commands: رنگ اور چمک کے لئے الگ الگ 'light.turn_on' کا استعمال کریں، جو کچھ روشنی کی اقسام کے لئے ضروری ہے. 🔀",
|
"include_config_in_attributes": "include_config_in_attributes: 'سچ' پر سیٹ ہونے پر ہوم اسسٹنٹ میں سوئچ پر خصوصیات کے طور پر تمام اختیارات دکھائیں۔ 📝"
|
||||||
"prefer_rgb_color": "prefer_rgb_color: جب ممکن ہو تو روشنی کے رنگ کے درجہ حرارت پر آر جی بی رنگ ایڈجسٹمنٹ کو ترجیح دیں یا نہیں۔ 🌈",
|
},
|
||||||
"intercept": "انٹرسیپٹ: 'light.turn_on' کالز کو فوری طور پر رنگ اور چمک کے مطابقت پذیری کو قابل بنانے کے لئے روکیں اور اپنائیں۔ 🏎️ ایسی روشنیوں کو غیر فعال کریں جو رنگ اور چمک کے ساتھ 'light.turn_on' کی حمایت نہیں کرتی ہیں۔",
|
"data_description": {
|
||||||
"only_once": "only_once: لائٹس کو صرف اس وقت ڈھالیں جب وہ آن ہوں ('سچ') یا انہیں اپناتے رہیں ('جھوٹ')۔ 🔄",
|
"initial_transition": "پہلی منتقلی کا دورانیہ جب لائٹس سیکنڈوں میں 'بند' سے 'آن' میں تبدیل ہوجاتی ہیں۔ ⏲️",
|
||||||
"take_over_control": "take_over_control: اگر کوئی دوسرا ذریعہ 'light.turn_on' کا نام دیتا ہے تو ایڈاپٹو لائٹنگ کو غیر فعال کریں جب لائٹس آن ہیں اور اسے اپنایا جارہا ہے۔ نوٹ کریں کہ یہ ہر 'وقفے' کو 'homeassistant.update_entity' کہتا ہے! 🔒",
|
"sleep_rgb_or_color_temp": "نیند کے موڈ میں \"rgb_color\" یا \"color_temp\" کا استعمال کریں۔ 🌙",
|
||||||
"transition_until_sleep": "transition_until_sleep: جب فعال کیا جاتا ہے تو ، ایڈاپٹو لائٹنگ نیند کی ترتیبات کو کم سے کم تصور کرے گی ، غروب آفتاب کے بعد ان اقدار میں منتقل ہوگی۔ 🌙",
|
"sleep_rgb_color": "نیند کے موڈ میں آر جی بی رنگ (جب 'sleep_rgb_or_color_temp' \"rgb_color\" ہوتا ہے تو استعمال کیا جاتا ہے). 🌈",
|
||||||
"include_config_in_attributes": "include_config_in_attributes: 'سچ' پر سیٹ ہونے پر ہوم اسسٹنٹ میں سوئچ پر خصوصیات کے طور پر تمام اختیارات دکھائیں۔ 📝"
|
"sleep_transition": "Duration of transition when \"sleep mode\" is toggled in seconds. 😴",
|
||||||
},
|
"sunrise_time": "طلوع آفتاب کے لئے ایک مقررہ وقت (ایچ ایچ: ایم ایم: ایس ایس) مقرر کریں۔ 🌅",
|
||||||
"data_description": {
|
"min_sunrise_time": "ابتدائی مجازی طلوع آفتاب کا وقت (ایچ ایچ: ایم ایم: ایس ایس) مقرر کریں ، جس سے بعد میں طلوع آفتاب کی اجازت ملتی ہے۔ 🌅",
|
||||||
"sleep_rgb_or_color_temp": "نیند کے موڈ میں \"rgb_color\" یا \"color_temp\" کا استعمال کریں۔ 🌙",
|
"max_sunrise_time": "تازہ ترین مجازی طلوع آفتاب کا وقت (ایچ ایچ: ایم ایم: ایس ایس) سیٹ کریں ، جس سے قبل طلوع آفتاب کی اجازت ملتی ہے۔ 🌅",
|
||||||
"sleep_transition": "Duration of transition when \"sleep mode\" is toggled in seconds. 😴",
|
"sunrise_offset": "طلوع آفتاب کے وقت کو سیکنڈوں میں مثبت یا منفی آفسیٹ کے ساتھ ایڈجسٹ کریں۔ ⏰",
|
||||||
"autoreset_control_seconds": "کئی سیکنڈ کے بعد دستی کنٹرول کو خود بخود ری سیٹ کریں۔ غیر فعال کرنے کے لئے 0 پر سیٹ کریں۔ ⏲️",
|
"sunset_time": "غروب آفتاب کے لئے ایک مقررہ وقت (ایچ ایچ: ایم ایم: ایس ایس) مقرر کریں۔ 🌇",
|
||||||
"min_sunset_time": "سب سے پہلے مجازی غروب آفتاب کا وقت (ایچ ایچ: ایم ایم: ایس ایس) مقرر کریں ، جس سے بعد میں غروب آفتاب کی اجازت ملتی ہے۔ 🌇",
|
"min_sunset_time": "سب سے پہلے مجازی غروب آفتاب کا وقت (ایچ ایچ: ایم ایم: ایس ایس) مقرر کریں ، جس سے بعد میں غروب آفتاب کی اجازت ملتی ہے۔ 🌇",
|
||||||
"min_sunrise_time": "ابتدائی مجازی طلوع آفتاب کا وقت (ایچ ایچ: ایم ایم: ایس ایس) مقرر کریں ، جس سے بعد میں طلوع آفتاب کی اجازت ملتی ہے۔ 🌅",
|
"max_sunset_time": "تازہ ترین مجازی غروب آفتاب کا وقت (ایچ ایچ: ایم ایم: ایس ایس) سیٹ کریں ، جس سے قبل غروب آفتاب کی اجازت ملتی ہے۔ 🌇",
|
||||||
"adapt_delay": "لائٹ آن ہونے اور ایڈاپٹو لائٹنگ کے درمیان انتظار کا وقت (سیکنڈ) تبدیلیاں لاگو کرتا ہے۔ جھلکنے سے بچنے میں مدد مل سکتی ہے۔ ⏲️",
|
"sunset_offset": "غروب آفتاب کے وقت کو سیکنڈوں میں مثبت یا منفی آفسیٹ کے ساتھ ایڈجسٹ کریں۔ ⏰",
|
||||||
"sleep_rgb_color": "نیند کے موڈ میں آر جی بی رنگ (جب 'sleep_rgb_or_color_temp' \"rgb_color\" ہوتا ہے تو استعمال کیا جاتا ہے). 🌈",
|
"brightness_mode": "استعمال کرنے کے لئے چمک کا موڈ۔ ممکنہ قدریں 'ڈیفالٹ'، 'لکیری' اور 'تن' ہیں ('brightness_mode_time_dark' اور 'brightness_mode_time_light' کا استعمال کرتی ہیں)۔ 📈",
|
||||||
"sunrise_offset": "طلوع آفتاب کے وقت کو سیکنڈوں میں مثبت یا منفی آفسیٹ کے ساتھ ایڈجسٹ کریں۔ ⏰",
|
"brightness_mode_time_dark": "(اگر 'brightness_mode='ڈیفالٹ') سورج طلوع ہونے سے پہلے / غروب آفتاب سے پہلے / بعد میں چمک کو بڑھانے کے لئے سیکنڈ میں دورانیہ۔ 📈📉",
|
||||||
"brightness_mode": "استعمال کرنے کے لئے چمک کا موڈ۔ ممکنہ قدریں 'ڈیفالٹ'، 'لکیری' اور 'تن' ہیں ('brightness_mode_time_dark' اور 'brightness_mode_time_light' کا استعمال کرتی ہیں)۔ 📈",
|
"brightness_mode_time_light": "(اگر 'brightness_mode='ڈیفالٹ') سورج طلوع ہونے کے بعد / اس سے پہلے / غروب آفتاب سے پہلے چمک کو بڑھانے کے لئے سیکنڈوں میں دورانیہ۔ 📈📉.",
|
||||||
"brightness_mode_time_light": "(اگر 'brightness_mode='ڈیفالٹ') سورج طلوع ہونے کے بعد / اس سے پہلے / غروب آفتاب سے پہلے چمک کو بڑھانے کے لئے سیکنڈوں میں دورانیہ۔ 📈📉.",
|
"autoreset_control_seconds": "کئی سیکنڈ کے بعد دستی کنٹرول کو خود بخود ری سیٹ کریں۔ غیر فعال کرنے کے لئے 0 پر سیٹ کریں۔ ⏲️",
|
||||||
"sunset_offset": "غروب آفتاب کے وقت کو سیکنڈوں میں مثبت یا منفی آفسیٹ کے ساتھ ایڈجسٹ کریں۔ ⏰",
|
"send_split_delay": "ان روشنیوں کے لئے 'separate_turn_on_commands' کے درمیان تاخیر (ایم ایس) جو بیک وقت چمک اور رنگ کی ترتیب کی حمایت نہیں کرتی ہیں۔ ⏲️",
|
||||||
"sunset_time": "غروب آفتاب کے لئے ایک مقررہ وقت (ایچ ایچ: ایم ایم: ایس ایس) مقرر کریں۔ 🌇",
|
"adapt_delay": "لائٹ آن ہونے اور ایڈاپٹو لائٹنگ کے درمیان انتظار کا وقت (سیکنڈ) تبدیلیاں لاگو کرتا ہے۔ جھلکنے سے بچنے میں مدد مل سکتی ہے۔ ⏲️"
|
||||||
"max_sunset_time": "تازہ ترین مجازی غروب آفتاب کا وقت (ایچ ایچ: ایم ایم: ایس ایس) سیٹ کریں ، جس سے قبل غروب آفتاب کی اجازت ملتی ہے۔ 🌇",
|
}
|
||||||
"sunrise_time": "طلوع آفتاب کے لئے ایک مقررہ وقت (ایچ ایچ: ایم ایم: ایس ایس) مقرر کریں۔ 🌅",
|
}
|
||||||
"initial_transition": "پہلی منتقلی کا دورانیہ جب لائٹس سیکنڈوں میں 'بند' سے 'آن' میں تبدیل ہوجاتی ہیں۔ ⏲️",
|
|
||||||
"brightness_mode_time_dark": "(اگر 'brightness_mode='ڈیفالٹ') سورج طلوع ہونے سے پہلے / غروب آفتاب سے پہلے / بعد میں چمک کو بڑھانے کے لئے سیکنڈ میں دورانیہ۔ 📈📉",
|
|
||||||
"max_sunrise_time": "تازہ ترین مجازی طلوع آفتاب کا وقت (ایچ ایچ: ایم ایم: ایس ایس) سیٹ کریں ، جس سے قبل طلوع آفتاب کی اجازت ملتی ہے۔ 🌅",
|
|
||||||
"send_split_delay": "ان روشنیوں کے لئے 'separate_turn_on_commands' کے درمیان تاخیر (ایم ایس) جو بیک وقت چمک اور رنگ کی ترتیب کی حمایت نہیں کرتی ہیں۔ ⏲️"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -18,7 +18,7 @@
|
||||||
"step": {
|
"step": {
|
||||||
"init": {
|
"init": {
|
||||||
"title": "自适应照明选项",
|
"title": "自适应照明选项",
|
||||||
"description": "配置自适应照明组件。选项名称与YAML设置对齐。如果在YAML中定义了此条目,则此处不会显示任何选项。有关演示参数影响的交互式图表,请访问[此Web应用程序](https://basnijholt.github.io/adaptive-lighting)。有关更多详细信息,请参阅[官方文档](https://github.com/basnijholt/adaptive-lighting#readme)。",
|
"description": "配置自适应照明组件。选项名称与YAML设置对齐。如果在YAML中定义了此条目,则此处不会显示任何选项。有关演示参数影响的交互式图表,请访问[此Web应用程序]({webapp_url})。有关更多详细信息,请参阅[官方文档]({docs_url})。",
|
||||||
"data": {
|
"data": {
|
||||||
"lights": "lights:要控制的灯光实体ID列表(可以为空)。🌟",
|
"lights": "lights:要控制的灯光实体ID列表(可以为空)。🌟",
|
||||||
"interval": "频率(interval)",
|
"interval": "频率(interval)",
|
||||||
|
|
@ -36,64 +36,60 @@
|
||||||
"sleep_brightness": "睡眠模式中的亮度百分比。😴",
|
"sleep_brightness": "睡眠模式中的亮度百分比。😴",
|
||||||
"sleep_color_temp": "睡眠模式中的色温(当`sleep_rgb_or_color_temp`为`color_temp`时使用),以开尔文为单位。😴"
|
"sleep_color_temp": "睡眠模式中的色温(当`sleep_rgb_or_color_temp`为`color_temp`时使用),以开尔文为单位。😴"
|
||||||
},
|
},
|
||||||
"menu_options": {
|
"sections": {
|
||||||
"advanced": "配置高级选项",
|
"advanced": {
|
||||||
"finish": "保存并完成"
|
"data": {
|
||||||
}
|
"initial_transition": "初始过渡(initial_transition)",
|
||||||
},
|
"prefer_rgb_color": "prefer_rgb_color:在可能时是否优先使用RGB颜色调整而不是灯光色温。🌈",
|
||||||
"advanced": {
|
"sleep_rgb_or_color_temp": "睡眠模式RGB或色温(sleep_rgb_or_color_temp)",
|
||||||
"title": "高级设置",
|
"sleep_rgb_color": "睡眠模式中的RGB颜色(sleep_rgb_color)",
|
||||||
"description": "配置自适应照明的高级选项。大多数用户不需要更改这些设置。",
|
"sleep_transition": "睡眠模式过渡时间(sleep_transition)",
|
||||||
"data": {
|
"transition_until_sleep": "transition_until_sleep:启用时,自适应照明将将睡眠设置视为最小值,在日落后过渡到这些值。🌙",
|
||||||
"initial_transition": "初始过渡(initial_transition)",
|
"sunrise_time": "日出时间(sunrise_time)",
|
||||||
"prefer_rgb_color": "prefer_rgb_color:在可能时是否优先使用RGB颜色调整而不是灯光色温。🌈",
|
"min_sunrise_time": "最早日出时间(min_sunrise_time)",
|
||||||
"sleep_rgb_or_color_temp": "睡眠模式RGB或色温(sleep_rgb_or_color_temp)",
|
"max_sunrise_time": "最晚日出时间(max_sunrise_time)",
|
||||||
"sleep_rgb_color": "睡眠模式中的RGB颜色(sleep_rgb_color)",
|
"sunrise_offset": "日出时间偏移(sunrise_offset)",
|
||||||
"sleep_transition": "睡眠模式过渡时间(sleep_transition)",
|
"sunset_time": "日落时间(sunset_time)",
|
||||||
"transition_until_sleep": "transition_until_sleep:启用时,自适应照明将将睡眠设置视为最小值,在日落后过渡到这些值。🌙",
|
"min_sunset_time": "最早日落时间(min_sunset_time)",
|
||||||
"sunrise_time": "日出时间(sunrise_time)",
|
"max_sunset_time": "最晚日落时间(max_sunset_time)",
|
||||||
"min_sunrise_time": "最早日出时间(min_sunrise_time)",
|
"sunset_offset": "日落时间偏移(sunset_offset)",
|
||||||
"max_sunrise_time": "最晚日出时间(max_sunrise_time)",
|
"brightness_mode": "亮度模式(brightness_mode)",
|
||||||
"sunrise_offset": "日出时间偏移(sunrise_offset)",
|
"brightness_mode_time_dark": "变暗时间(brightness_mode_time_dark)",
|
||||||
"sunset_time": "日落时间(sunset_time)",
|
"brightness_mode_time_light": "变亮时间(brightness_mode_time_light)",
|
||||||
"min_sunset_time": "最早日落时间(min_sunset_time)",
|
"take_over_control": "take_over_control: 如果在灯光处于开启并处于适应照明的状态时,另一个来源调用`light.turn_on`,则禁用自适应照明。请注意,这会在每个`interval`调用`homeassistant.update_entity`!🔒",
|
||||||
"max_sunset_time": "最晚日落时间(max_sunset_time)",
|
"detect_non_ha_changes": "detect_non_ha_changes: 检测非`light.turn_on`的状态更改,并停止自适应照明。需要启用`take_over_control`。🕵️ 注意:⚠️ 一些灯光可能错误地显示为“开启”状态,这可能会导致灯光意外打开。如果遇到此类问题,请禁用此功能。",
|
||||||
"sunset_offset": "日落时间偏移(sunset_offset)",
|
"autoreset_control_seconds": "自动重置时间(autoreset_control_seconds)",
|
||||||
"brightness_mode": "亮度模式(brightness_mode)",
|
"only_once": "only_once:仅在打开时调整灯光(`true`)或始终调整灯光(`false`)。🔄",
|
||||||
"brightness_mode_time_dark": "变暗时间(brightness_mode_time_dark)",
|
"adapt_only_on_bare_turn_on": "adapt_only_on_bare_turn_on:当首次打开灯光时。如果设置为`true`,仅在没有指定颜色或亮度的情况下,AL才进行适应。❌🌈 例如,这可以防止在激活场景时进行适应。如果为`false`,则不考虑初始`service_data`中是否存在颜色或亮度,AL都会适应。需要启用`take_over_control`。🕵️",
|
||||||
"brightness_mode_time_light": "变亮时间(brightness_mode_time_light)",
|
"separate_turn_on_commands": "separate_turn_on_commands:为某些灯光类型需要使用单独的`light.turn_on`调用来设置颜色和亮度。🔀",
|
||||||
"take_over_control": "take_over_control: 如果在灯光处于开启并处于适应照明的状态时,另一个来源调用`light.turn_on`,则禁用自适应照明。请注意,这会在每个`interval`调用`homeassistant.update_entity`!🔒",
|
"send_split_delay": "指令发送间隔延迟(send_split_delay)",
|
||||||
"detect_non_ha_changes": "detect_non_ha_changes: 检测非`light.turn_on`的状态更改,并停止自适应照明。需要启用`take_over_control`。🕵️ 注意:⚠️ 一些灯光可能错误地显示为“开启”状态,这可能会导致灯光意外打开。如果遇到此类问题,请禁用此功能。",
|
"adapt_delay": "自适应照明延迟(adapt_delay)",
|
||||||
"autoreset_control_seconds": "自动重置时间(autoreset_control_seconds)",
|
"skip_redundant_commands": "skip_redundant_commands:跳过目标状态已经等于灯光已知状态的自适应命令。在某些情况下,可以减少网络流量并提高适应响应性。📉如果物理灯光状态与HA的记录状态不同步,请禁用此功能。",
|
||||||
"only_once": "only_once:仅在打开时调整灯光(`true`)或始终调整灯光(`false`)。🔄",
|
"intercept": "intercept:拦截并适应`light.turn_on`调用,以实现即时的颜色和亮度适应。🏎️ 对于不支持使用颜色和亮度进行`light.turn_on`的灯光,禁用此功能。",
|
||||||
"adapt_only_on_bare_turn_on": "adapt_only_on_bare_turn_on:当首次打开灯光时。如果设置为`true`,仅在没有指定颜色或亮度的情况下,AL才进行适应。❌🌈 例如,这可以防止在激活场景时进行适应。如果为`false`,则不考虑初始`service_data`中是否存在颜色或亮度,AL都会适应。需要启用`take_over_control`。🕵️",
|
"multi_light_intercept": "multi_light_intercept:拦截和适应针对多个灯光的`light.turn_on`调用。➗⚠️ 这可能会将单个`light.turn_on`调用拆分为多个调用,例如当灯光位于不同的开关中时。需要启用`intercept`。",
|
||||||
"separate_turn_on_commands": "separate_turn_on_commands:为某些灯光类型需要使用单独的`light.turn_on`调用来设置颜色和亮度。🔀",
|
"include_config_in_attributes": "include_config_in_attributes:在Home Assistant中将所有选项显示为开关的属性时,设置为`true`。📝"
|
||||||
"send_split_delay": "指令发送间隔延迟(send_split_delay)",
|
},
|
||||||
"adapt_delay": "自适应照明延迟(adapt_delay)",
|
"data_description": {
|
||||||
"skip_redundant_commands": "skip_redundant_commands:跳过目标状态已经等于灯光已知状态的自适应命令。在某些情况下,可以减少网络流量并提高适应响应性。📉如果物理灯光状态与HA的记录状态不同步,请禁用此功能。",
|
"initial_transition": "灯光从“关闭”到“开启”时的第一个过渡持续时间,以秒为单位。⏲️",
|
||||||
"intercept": "intercept:拦截并适应`light.turn_on`调用,以实现即时的颜色和亮度适应。🏎️ 对于不支持使用颜色和亮度进行`light.turn_on`的灯光,禁用此功能。",
|
"sleep_rgb_or_color_temp": "在睡眠模式中使用“rgb_color”或“color_temp”。🌙",
|
||||||
"multi_light_intercept": "multi_light_intercept:拦截和适应针对多个灯光的`light.turn_on`调用。➗⚠️ 这可能会将单个`light.turn_on`调用拆分为多个调用,例如当灯光位于不同的开关中时。需要启用`intercept`。",
|
"sleep_rgb_color": "睡眠模式中的RGB颜色(当`sleep_rgb_or_color_temp`为“rgb_color”时使用)。🌈",
|
||||||
"include_config_in_attributes": "include_config_in_attributes:在Home Assistant中将所有选项显示为开关的属性时,设置为`true`。📝"
|
"sleep_transition": "切换“睡眠模式”时的过渡持续时间,以秒为单位。😴",
|
||||||
},
|
"sunrise_time": "设置固定的日出时间(HH:MM:SS)。🌅",
|
||||||
"data_description": {
|
"min_sunrise_time": "设置最早的虚拟日出时间(HH:MM:SS),允许更晚的日出。🌅",
|
||||||
"initial_transition": "灯光从“关闭”到“开启”时的第一个过渡持续时间,以秒为单位。⏲️",
|
"max_sunrise_time": "设置最晚的虚拟日出时间(HH:MM:SS),允许更早的日出。🌅",
|
||||||
"sleep_rgb_or_color_temp": "在睡眠模式中使用“rgb_color”或“color_temp”。🌙",
|
"sunrise_offset": "以秒为单位的正负偏移调整日出时间。⏰",
|
||||||
"sleep_rgb_color": "睡眠模式中的RGB颜色(当`sleep_rgb_or_color_temp`为“rgb_color”时使用)。🌈",
|
"sunset_time": "设置固定的日落时间(HH:MM:SS)。🌇",
|
||||||
"sleep_transition": "切换“睡眠模式”时的过渡持续时间,以秒为单位。😴",
|
"min_sunset_time": "设置最早的虚拟日落时间(HH:MM:SS),允许更晚的日落。🌇",
|
||||||
"sunrise_time": "设置固定的日出时间(HH:MM:SS)。🌅",
|
"max_sunset_time": "设置最晚的虚拟日落时间(HH:MM:SS),允许更早的日落。🌇",
|
||||||
"min_sunrise_time": "设置最早的虚拟日出时间(HH:MM:SS),允许更晚的日出。🌅",
|
"sunset_offset": "以秒为单位的正负偏移调整日落时间。⏰",
|
||||||
"max_sunrise_time": "设置最晚的虚拟日出时间(HH:MM:SS),允许更早的日出。🌅",
|
"brightness_mode": "要使用的亮度模式。可能的值为`default`、`linear`和`tanh`(使用`brightness_mode_time_dark`和`brightness_mode_time_light`)。📈",
|
||||||
"sunrise_offset": "以秒为单位的正负偏移调整日出时间。⏰",
|
"brightness_mode_time_dark": "(如果`brightness_mode='default'`将被忽略)日出/日落之前/之后亮度逐渐增加/减少的持续时间,以秒为单位。📈📉",
|
||||||
"sunset_time": "设置固定的日落时间(HH:MM:SS)。🌇",
|
"brightness_mode_time_light": "(如果`brightness_mode='default'`将被忽略)日出/日落之后/之前亮度逐渐增加/减少的持续时间,以秒为单位。📈📉。",
|
||||||
"min_sunset_time": "设置最早的虚拟日落时间(HH:MM:SS),允许更晚的日落。🌇",
|
"autoreset_control_seconds": "在若干秒后自动重置手动控制。设置为0以禁用。⏲️",
|
||||||
"max_sunset_time": "设置最晚的虚拟日落时间(HH:MM:SS),允许更早的日落。🌇",
|
"send_split_delay": "对于不支持同时设置亮度和颜色的灯光,`separate_turn_on_commands`之间的延迟时间(毫秒)。⏲️",
|
||||||
"sunset_offset": "以秒为单位的正负偏移调整日落时间。⏰",
|
"adapt_delay": "灯光打开和自适应照明应用更改之间的等待时间(秒)。可能有助于避免闪烁。⏲️"
|
||||||
"brightness_mode": "要使用的亮度模式。可能的值为`default`、`linear`和`tanh`(使用`brightness_mode_time_dark`和`brightness_mode_time_light`)。📈",
|
}
|
||||||
"brightness_mode_time_dark": "(如果`brightness_mode='default'`将被忽略)日出/日落之前/之后亮度逐渐增加/减少的持续时间,以秒为单位。📈📉",
|
}
|
||||||
"brightness_mode_time_light": "(如果`brightness_mode='default'`将被忽略)日出/日落之后/之前亮度逐渐增加/减少的持续时间,以秒为单位。📈📉。",
|
|
||||||
"autoreset_control_seconds": "在若干秒后自动重置手动控制。设置为0以禁用。⏲️",
|
|
||||||
"send_split_delay": "对于不支持同时设置亮度和颜色的灯光,`separate_turn_on_commands`之间的延迟时间(毫秒)。⏲️",
|
|
||||||
"adapt_delay": "灯光打开和自适应照明应用更改之间的等待时间(秒)。可能有助于避免闪烁。⏲️"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
|
||||||
1
docs/CNAME
Normal file
1
docs/CNAME
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
adaptive-lighting.nijho.lt
|
||||||
122
docs/advanced/brightness-modes.md
Normal file
122
docs/advanced/brightness-modes.md
Normal file
|
|
@ -0,0 +1,122 @@
|
||||||
|
---
|
||||||
|
icon: lucide/trending-up
|
||||||
|
---
|
||||||
|
|
||||||
|
# Brightness Modes
|
||||||
|
|
||||||
|
Enhance your control over brightness transitions during sunrise and sunset with the `brightness_mode` option.
|
||||||
|
|
||||||
|
## Available Modes
|
||||||
|
|
||||||
|
Adaptive Lighting supports three brightness modes:
|
||||||
|
|
||||||
|
| Mode | Description |
|
||||||
|
|------|-------------|
|
||||||
|
| `default` | Standard behavior based on sun position |
|
||||||
|
| `linear` | Linear ramp between min/max brightness |
|
||||||
|
| `tanh` | Smooth S-curve using hyperbolic tangent |
|
||||||
|
|
||||||
|
## Detailed Explanation
|
||||||
|
|
||||||
|
<!-- CODE:START -->
|
||||||
|
<!-- print(include_section("../../README.md", "brightness-modes", strip_heading=True)) -->
|
||||||
|
<!-- CODE:END -->
|
||||||
|
<!-- OUTPUT:START -->
|
||||||
|
<!-- ⚠️ This content is auto-generated by `markdown-code-runner`. -->
|
||||||
|
<details markdown="1">
|
||||||
|
<summary>Enhance your control over brightness transitions during sunrise and sunset with <code>brightness_mode</code> (click here to learn more 🧠).</summary>
|
||||||
|
|
||||||
|
With Adaptive Lighting, you can set a `brightness_mode` to specify how the brightness changes during sunrise and sunset. The `brightness_mode` can be set to `"default"` ([as illustrated in other graphs above](#high_brightness-brightness)), `"linear"`, or `"tanh"`. If you choose to deviate from the `"default"` mode, you can adjust `brightness_mode_time_dark` and `brightness_mode_time_light` to further customize the lighting transitions.
|
||||||
|
|
||||||
|
When `brightness_mode` is set to `"linear"`:
|
||||||
|
|
||||||
|
- During **_sunset_**, the brightness begins to gradually decrease from `max_brightness` starting at `time=sunset_time - brightness_mode_time_light`, until it reaches `min_brightness` at `time=sunset_time + brightness_mode_time_dark`.
|
||||||
|
- During **_sunrise_**, the brightness begins to gradually increase from `min_brightness` starting at `time=sunrise_time - brightness_mode_time_dark`, until it reaches `max_brightness` at `time=sunrise_time + brightness_mode_time_light`.
|
||||||
|
|
||||||
|
When `brightness_mode` is set to `"tanh"`, it uses the smooth transition of a [hyperbolic tangent function](https://mathworld.wolfram.com/HyperbolicTangent.html):
|
||||||
|
|
||||||
|
- During **_sunset_**, the brightness starts to decrease from 95% of `max_brightness` starting at `time=sunset_time - brightness_mode_time_light`, until it reaches 5% of `min_brightness` at `time=sunset_time + brightness_mode_time_dark`.
|
||||||
|
- During **_sunrise_**, the brightness starts to increase from 5% of `min_brightness` starting at `time=sunrise_time - brightness_mode_time_dark`, until it reaches 95% of `max_brightness` at `time=sunrise_time + brightness_mode_time_light`.
|
||||||
|
</details>
|
||||||
|
|
||||||
|
Notice the values of `brightness_mode_time_light` and `brightness_mode_time_dark` in the text box.
|
||||||
|

|
||||||
|

|
||||||
|

|
||||||
|

|
||||||
|
|
||||||
|
> Check out the interactive webapp on https://basnijholt.github.io/adaptive-lighting/ to play with the parameters and see how the brightness changes!
|
||||||
|
|
||||||
|
<!-- OUTPUT:END -->
|
||||||
|
|
||||||
|
## Configuration Parameters
|
||||||
|
|
||||||
|
When using `linear` or `tanh` modes, you can fine-tune the transition with these parameters:
|
||||||
|
|
||||||
|
| Parameter | Default | Description |
|
||||||
|
|-----------|---------|-------------|
|
||||||
|
| `brightness_mode_time_dark` | 900 (15 min) | Duration to ramp brightness before/after sunrise/sunset |
|
||||||
|
| `brightness_mode_time_light` | 3600 (1 hour) | Duration to ramp brightness after/before sunrise/sunset |
|
||||||
|
|
||||||
|
## Example Configurations
|
||||||
|
|
||||||
|
### Quick Transition (Linear)
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
adaptive_lighting:
|
||||||
|
- name: "Quick transitions"
|
||||||
|
lights:
|
||||||
|
- light.living_room
|
||||||
|
brightness_mode: linear
|
||||||
|
brightness_mode_time_dark: 600 # 10 minutes
|
||||||
|
brightness_mode_time_light: 1800 # 30 minutes
|
||||||
|
```
|
||||||
|
|
||||||
|
### Smooth Transition (Tanh)
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
adaptive_lighting:
|
||||||
|
- name: "Smooth transitions"
|
||||||
|
lights:
|
||||||
|
- light.bedroom
|
||||||
|
brightness_mode: tanh
|
||||||
|
brightness_mode_time_dark: 1200 # 20 minutes
|
||||||
|
brightness_mode_time_light: 3600 # 1 hour
|
||||||
|
```
|
||||||
|
|
||||||
|
## Graphs
|
||||||
|
|
||||||
|
These graphs show how brightness changes throughout the day based on calculated values:
|
||||||
|
|
||||||
|
<!-- CODE:START -->
|
||||||
|
<!-- print(include_section("../../README.md", "graphs", strip_heading=True)) -->
|
||||||
|
<!-- CODE:END -->
|
||||||
|
<!-- OUTPUT:START -->
|
||||||
|
<!-- ⚠️ This content is auto-generated by `markdown-code-runner`. -->
|
||||||
|
These graphs were generated using the values calculated by the Adaptive Lighting sensor/switch(es).
|
||||||
|
|
||||||
|
### :sunny: Sun Position
|
||||||
|

|
||||||
|
|
||||||
|
### :thermometer: Color Temperature
|
||||||
|

|
||||||
|
|
||||||
|
### :high_brightness: Brightness
|
||||||
|

|
||||||
|
|
||||||
|
### While using `transition_until_sleep: true`
|
||||||
|

|
||||||
|
|
||||||
|
<!-- OUTPUT:END -->
|
||||||
|
|
||||||
|
## Interactive Simulator
|
||||||
|
|
||||||
|
The best way to understand brightness modes is to experiment with the interactive simulator:
|
||||||
|
|
||||||
|
<div style="text-align: center; margin: 2rem 0;">
|
||||||
|
<a href="../simulator/" class="simulator-link">
|
||||||
|
Try the Simulator
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
Adjust the `brightness_mode`, `brightness_mode_time_dark`, and `brightness_mode_time_light` parameters to see how they affect the brightness curve in real-time.
|
||||||
201
docs/advanced/manual-control.md
Normal file
201
docs/advanced/manual-control.md
Normal file
|
|
@ -0,0 +1,201 @@
|
||||||
|
---
|
||||||
|
icon: lucide/hand
|
||||||
|
---
|
||||||
|
|
||||||
|
# Manual Control
|
||||||
|
|
||||||
|
Adaptive Lighting is designed to work seamlessly with manual adjustments, detecting when you or another source changes light settings and pausing adaptation accordingly.
|
||||||
|
|
||||||
|
## How It Works
|
||||||
|
|
||||||
|
<!-- CODE:START -->
|
||||||
|
<!-- print(include_section("../../README.md", "manual-control", strip_heading=True)) -->
|
||||||
|
<!-- CODE:END -->
|
||||||
|
<!-- OUTPUT:START -->
|
||||||
|
<!-- ⚠️ This content is auto-generated by `markdown-code-runner`. -->
|
||||||
|
Adaptive Lighting is designed to automatically detect when you or another source (e.g., automation) manually changes light settings 🕹️.
|
||||||
|
When this occurs, the affected light is marked as "manually controlled," and Adaptive Lighting will not make further adjustments until the light is turned off and back on or reset using the `adaptive_lighting.set_manual_control` service call.
|
||||||
|
This feature is available when `take_over_control` is enabled.
|
||||||
|
|
||||||
|
Additionally, enabling `detect_non_ha_changes` allows Adaptive Lighting to detect all state changes, including those made outside of Home Assistant, by comparing the light's state to its previously used settings.
|
||||||
|
The `adaptive_lighting.manual_control` event is fired when a light is marked as "manually controlled," allowing for integration with automations 🤖.
|
||||||
|
|
||||||
|
With `expand_light_groups: false`, manual control belongs to the group. A direct member change cannot pause adaptation for only that member; use group-level manual control or enable expansion for individual tracking.
|
||||||
|
Explicit member targets in Adaptive Lighting services stay individual targets and do not mark or command the whole group.
|
||||||
|
Changing expansion at runtime discards tracking and pending adaptation for targets no longer used by any profile.
|
||||||
|
|
||||||
|
The Adaptive Lighting switch exposes these read-only attributes for its lights:
|
||||||
|
|
||||||
|
- `manual_control`: lights with any attribute marked as manually controlled.
|
||||||
|
- `manual_control_brightness`: lights with brightness marked as manually controlled.
|
||||||
|
- `manual_control_color`: lights with color marked as manually controlled.
|
||||||
|
|
||||||
|
These lists report manual-control flags. Actual adaptation also depends on `take_over_control_mode` and the brightness/color adaptation switches. For example, under the default `pause_all` mode, manually changing only brightness leaves `manual_control_color` empty while pausing both brightness and color adaptation. Under `pause_changed`, color can continue adapting.
|
||||||
|
|
||||||
|
The attributes are absent when the Adaptive Lighting switch is off. Use a fallback when checking them in templates:
|
||||||
|
|
||||||
|
```jinja
|
||||||
|
{{ 'light.bedroom' in (state_attr('switch.adaptive_lighting_bedroom', 'manual_control_brightness') or []) }}
|
||||||
|
```
|
||||||
|
|
||||||
|
> ⚠️ **_Caution: Some lights might falsely indicate an 'on' state, which could result in lights turning on unexpectedly. Disable `detect_non_ha_changes` if you encounter such issues._**
|
||||||
|
|
||||||
|
<!-- OUTPUT:END -->
|
||||||
|
|
||||||
|
## Configuration Options
|
||||||
|
|
||||||
|
### take_over_control
|
||||||
|
|
||||||
|
When enabled (default: `true`), Adaptive Lighting detects `light.turn_on` service calls that specify brightness or color values. If such a call is detected for a light that's already on, that light is marked as "manually controlled".
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
adaptive_lighting:
|
||||||
|
- name: "With manual control detection"
|
||||||
|
lights:
|
||||||
|
- light.living_room
|
||||||
|
take_over_control: true # default
|
||||||
|
```
|
||||||
|
|
||||||
|
### take_over_control_mode
|
||||||
|
|
||||||
|
Controls how adaptation pauses when manual changes are detected:
|
||||||
|
|
||||||
|
| Mode | Behavior |
|
||||||
|
|------|----------|
|
||||||
|
| `pause_all` | Pause both brightness and color adaptation (default) |
|
||||||
|
| `pause_changed` | Only pause adaptation of the changed attribute |
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
adaptive_lighting:
|
||||||
|
- name: "Selective pause"
|
||||||
|
lights:
|
||||||
|
- light.living_room
|
||||||
|
take_over_control: true
|
||||||
|
take_over_control_mode: pause_changed # Only pause changed attributes
|
||||||
|
```
|
||||||
|
|
||||||
|
### detect_non_ha_changes
|
||||||
|
|
||||||
|
When enabled, Adaptive Lighting detects state changes made outside of Home Assistant by comparing the light's current state to its previously applied settings.
|
||||||
|
|
||||||
|
> [!WARNING]
|
||||||
|
> **Use with caution.** Some lights may falsely report an "on" state, which could result in lights turning on unexpectedly. Disable this option if you encounter such issues.
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
adaptive_lighting:
|
||||||
|
- name: "Detect external changes"
|
||||||
|
lights:
|
||||||
|
- light.living_room
|
||||||
|
take_over_control: true
|
||||||
|
detect_non_ha_changes: true
|
||||||
|
```
|
||||||
|
|
||||||
|
### autoreset_control_seconds
|
||||||
|
|
||||||
|
Automatically resets the manual control flag after a specified number of seconds. Set to `0` to disable (default).
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
adaptive_lighting:
|
||||||
|
- name: "Auto-reset after 2 hours"
|
||||||
|
lights:
|
||||||
|
- light.living_room
|
||||||
|
take_over_control: true
|
||||||
|
autoreset_control_seconds: 7200 # 2 hours
|
||||||
|
```
|
||||||
|
|
||||||
|
### adapt_only_on_bare_turn_on
|
||||||
|
|
||||||
|
When enabled, Adaptive Lighting only adapts lights when `light.turn_on` is called without specifying brightness or color. This is useful when you want scenes to work without interference.
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
adaptive_lighting:
|
||||||
|
- name: "Respect scenes"
|
||||||
|
lights:
|
||||||
|
- light.living_room
|
||||||
|
take_over_control: true
|
||||||
|
adapt_only_on_bare_turn_on: true
|
||||||
|
```
|
||||||
|
|
||||||
|
### manual_control_on_external_turn_on
|
||||||
|
|
||||||
|
When enabled, a turn-on without a state-change context matching the latest recorded Home Assistant `light.turn_on` is treated as manual control. This pauses brightness and color adaptation until manual control resets, rather than skipping just the first adjustment. The usual off/on, explicit reset, and configured timeout rules apply. A later unmatched turn-on marks the light manually controlled again.
|
||||||
|
|
||||||
|
Manual-control flags are shared by profiles controlling the same light. Use the same turn-on policy on those profiles; mixed policies can allow an earlier profile to adapt before another marks the light manually controlled.
|
||||||
|
|
||||||
|
Enable this if you want turn-ons from physical controls or native scenes to preserve their brightness and color. To adapt unmatched turn-ons, leave this disabled and enable `detect_non_ha_changes`.
|
||||||
|
|
||||||
|
Its advantage over simply disabling `detect_non_ha_changes` is that the two behaviors are decoupled: you can keep `detect_non_ha_changes: true` to catch manual dimming of lights that are *already on*, while leaving unmatched turn-ons untouched.
|
||||||
|
|
||||||
|
Adaptive Lighting cannot identify every physical versus Home Assistant source. Some integrations replace or omit the service context when they publish device state. In that case, even a Home Assistant turn-on does not match and this option treats it as external.
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
adaptive_lighting:
|
||||||
|
- name: "Respect physical switches and Lutron scenes"
|
||||||
|
lights:
|
||||||
|
- light.living_room
|
||||||
|
take_over_control: true
|
||||||
|
detect_non_ha_changes: true # still catch manual changes to already-on lights
|
||||||
|
manual_control_on_external_turn_on: true # leave unmatched off→on events unchanged
|
||||||
|
```
|
||||||
|
|
||||||
|
## Checking Manual Control Status
|
||||||
|
|
||||||
|
You can see which lights are marked as manually controlled by checking the switch attributes:
|
||||||
|
|
||||||
|
1. Go to **Developer Tools** → **States**
|
||||||
|
2. Find your Adaptive Lighting switch (e.g., `switch.adaptive_lighting_living_room`)
|
||||||
|
3. Look at the `manual_control` attribute - it lists all manually controlled lights
|
||||||
|
|
||||||
|
## Resetting Manual Control
|
||||||
|
|
||||||
|
### Via Service Call
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
service: adaptive_lighting.set_manual_control
|
||||||
|
data:
|
||||||
|
entity_id: switch.adaptive_lighting_living_room
|
||||||
|
lights:
|
||||||
|
- light.floor_lamp
|
||||||
|
manual_control: false # Resume adaptation
|
||||||
|
```
|
||||||
|
|
||||||
|
### By Turning Light Off and On
|
||||||
|
|
||||||
|
Simply turning a light off and then back on will reset its manual control status.
|
||||||
|
|
||||||
|
### Via Automation
|
||||||
|
|
||||||
|
See [Automation Examples](../automation-examples.md) for automation recipes that automatically reset manual control.
|
||||||
|
|
||||||
|
## Events
|
||||||
|
|
||||||
|
When a light is marked as manually controlled, Adaptive Lighting fires an event:
|
||||||
|
|
||||||
|
**Event type:** `adaptive_lighting.manual_control`
|
||||||
|
|
||||||
|
**Event data:**
|
||||||
|
```yaml
|
||||||
|
entity_id: light.living_room
|
||||||
|
switch: switch.adaptive_lighting_living_room
|
||||||
|
```
|
||||||
|
|
||||||
|
You can use this event to trigger automations:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
automation:
|
||||||
|
- alias: "Notify on manual control"
|
||||||
|
trigger:
|
||||||
|
platform: event
|
||||||
|
event_type: adaptive_lighting.manual_control
|
||||||
|
action:
|
||||||
|
- service: notify.mobile_app
|
||||||
|
data:
|
||||||
|
message: "{{ trigger.event.data.entity_id }} was manually adjusted"
|
||||||
|
```
|
||||||
|
|
||||||
|
## Best Practices
|
||||||
|
|
||||||
|
1. **Use Zigbee groups** when controlling multiple bulbs together - this ensures consistent manual control detection
|
||||||
|
2. **Set reasonable autoreset times** if you want lights to eventually resume adaptation
|
||||||
|
3. **Use `pause_changed` mode** if you only adjust brightness or color individually
|
||||||
|
4. **Disable `detect_non_ha_changes`** if you experience unexpected light turn-ons
|
||||||
57
docs/advanced/sleep-mode.md
Normal file
57
docs/advanced/sleep-mode.md
Normal file
|
|
@ -0,0 +1,57 @@
|
||||||
|
---
|
||||||
|
icon: lucide/moon
|
||||||
|
---
|
||||||
|
|
||||||
|
# Sleep Mode
|
||||||
|
|
||||||
|
Sleep mode is a special operating mode that sets your lights to minimal brightness and very warm color, perfect for winding down at night without disrupting your circadian rhythm.
|
||||||
|
|
||||||
|
## Activating Sleep Mode
|
||||||
|
|
||||||
|
Each Adaptive Lighting configuration creates a sleep mode switch:
|
||||||
|
|
||||||
|
```
|
||||||
|
switch.adaptive_lighting_sleep_mode_<name>
|
||||||
|
```
|
||||||
|
|
||||||
|
Turn it on to activate sleep mode:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
service: switch.turn_on
|
||||||
|
target:
|
||||||
|
entity_id: switch.adaptive_lighting_sleep_mode_living_room
|
||||||
|
```
|
||||||
|
|
||||||
|
Sleep mode stays active until this switch is turned off. It does not turn off
|
||||||
|
automatically at sunrise, and Home Assistant restores its previous state after a
|
||||||
|
restart. Use an automation, such as the sleep-mode blueprint linked under
|
||||||
|
Automation Examples, when you want the switch to follow a schedule or helper.
|
||||||
|
|
||||||
|
If lights unexpectedly use `sleep_brightness` or `sleep_color_temp` during the
|
||||||
|
day, first check that the sleep-mode switch is off. While the main Adaptive
|
||||||
|
Lighting switch is on, it reports the current calculated `brightness_pct` and
|
||||||
|
`color_temp_kelvin` targets, including the sleep settings while sleep mode is on.
|
||||||
|
You can compare these attributes with the physical light state. They are `None`
|
||||||
|
when the main switch is off. In debug logs,
|
||||||
|
`initial_sleep=True` describes an internal delay before sending a command; it does
|
||||||
|
not mean that sleep mode is active.
|
||||||
|
|
||||||
|
## Configuration Options
|
||||||
|
|
||||||
|
Sleep mode is configured through the main Adaptive Lighting configuration. See the [Configuration](../configuration.md) page for the full options table. The sleep-related options are:
|
||||||
|
|
||||||
|
| Option | Default | Description |
|
||||||
|
|--------|---------|-------------|
|
||||||
|
| `sleep_brightness` | 1 | Brightness percentage in sleep mode |
|
||||||
|
| `sleep_rgb_or_color_temp` | `color_temp` | Use `rgb_color` or `color_temp` in sleep mode |
|
||||||
|
| `sleep_color_temp` | 1000 | Color temperature in Kelvin for sleep mode |
|
||||||
|
| `sleep_rgb_color` | `[255, 56, 0]` | RGB color for sleep mode |
|
||||||
|
| `sleep_transition` | 1 | Transition duration in seconds |
|
||||||
|
| `transition_until_sleep` | false | Gradually transition to sleep settings after sunset |
|
||||||
|
|
||||||
|
## Automation Examples
|
||||||
|
|
||||||
|
See [Automation Examples](../automation-examples.md) for sleep mode automation recipes, including:
|
||||||
|
|
||||||
|
- Toggle sleep mode using an `input_boolean`
|
||||||
|
- Set sunrise/sunset based on alarm time
|
||||||
BIN
docs/assets/logo.png
Normal file
BIN
docs/assets/logo.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 17 KiB |
46
docs/assets/stylesheets/extra.css
Normal file
46
docs/assets/stylesheets/extra.css
Normal file
|
|
@ -0,0 +1,46 @@
|
||||||
|
/* Adaptive Lighting Documentation Custom Styles */
|
||||||
|
|
||||||
|
/* Hero section on index page */
|
||||||
|
.md-content__inner > h1:first-child {
|
||||||
|
font-size: 2.5rem;
|
||||||
|
margin-bottom: 0.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Logo in header - make it slightly larger */
|
||||||
|
.md-header__button.md-logo img {
|
||||||
|
height: 1.8rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Simulator link button styling */
|
||||||
|
.simulator-link {
|
||||||
|
display: inline-block;
|
||||||
|
padding: 0.75rem 1.5rem;
|
||||||
|
background: linear-gradient(135deg, var(--md-primary-fg-color), var(--md-accent-fg-color));
|
||||||
|
color: white !important;
|
||||||
|
text-decoration: none;
|
||||||
|
border-radius: 2rem;
|
||||||
|
font-weight: 600;
|
||||||
|
font-size: 1.1rem;
|
||||||
|
transition: transform 0.2s ease, box-shadow 0.2s ease;
|
||||||
|
box-shadow: 0 4px 15px rgba(0, 0, 0, 0.2);
|
||||||
|
}
|
||||||
|
|
||||||
|
.simulator-link:hover {
|
||||||
|
transform: translateY(-2px);
|
||||||
|
box-shadow: 0 6px 20px rgba(0, 0, 0, 0.3);
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Code block improvements */
|
||||||
|
.highlight code {
|
||||||
|
font-size: 0.85rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Table improvements */
|
||||||
|
.md-typeset table:not([class]) {
|
||||||
|
font-size: 0.8rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.md-typeset table:not([class]) th {
|
||||||
|
font-weight: 700;
|
||||||
|
}
|
||||||
471
docs/automation-examples.md
Normal file
471
docs/automation-examples.md
Normal file
|
|
@ -0,0 +1,471 @@
|
||||||
|
---
|
||||||
|
icon: lucide/bot
|
||||||
|
---
|
||||||
|
|
||||||
|
# Automation Examples
|
||||||
|
|
||||||
|
Real-world automation examples showing how to integrate Adaptive Lighting with your Home Assistant setup.
|
||||||
|
|
||||||
|
<!-- CODE:START -->
|
||||||
|
<!-- from adaptive_lighting.docs_gen import _transform_readme_links -->
|
||||||
|
<!-- print(_transform_readme_links(include_section("../README.md", "automation-examples", strip_heading=True))) -->
|
||||||
|
<!-- CODE:END -->
|
||||||
|
<!-- OUTPUT:START -->
|
||||||
|
<!-- ⚠️ This content is auto-generated by `markdown-code-runner`. -->
|
||||||
|
Replace every entity ID below with the IDs from your Home Assistant instance. Fresh Adaptive Lighting profiles use child IDs such as `switch.adaptive_lighting_living_room_sleep_mode`; profiles created before the device-based entity change may retain older IDs.
|
||||||
|
|
||||||
|
Blocks that begin with `- alias` are entries for `automations.yaml`. Blocks with a top-level `script:` or `adaptive_lighting:` key are complete `configuration.yaml` examples. If your configuration uses `script: !include scripts.yaml`, omit that outer key and place its contents in `scripts.yaml`.
|
||||||
|
|
||||||
|
Five examples also have blueprints with selectors, so you can configure them without editing YAML:
|
||||||
|
|
||||||
|
| Blueprint | Purpose | Import |
|
||||||
|
| --- | --- | --- |
|
||||||
|
| [Sleep mode](https://github.com/basnijholt/adaptive-lighting/blob/main/blueprints/automation/sleep_mode.yaml) | Synchronize several profiles with one sleep-mode helper. | [](https://my.home-assistant.io/redirect/blueprint_import/?blueprint_url=https%3A%2F%2Fgithub.com%2Fbasnijholt%2Fadaptive-lighting%2Fblob%2Fmain%2Fblueprints%2Fautomation%2Fsleep_mode.yaml) |
|
||||||
|
| [Minimum brightness](https://github.com/basnijholt/adaptive-lighting/blob/main/blueprints/automation/turn_off_at_minimum.yaml) | Turn one light off when its target crosses down to the minimum. | [](https://my.home-assistant.io/redirect/blueprint_import/?blueprint_url=https%3A%2F%2Fgithub.com%2Fbasnijholt%2Fadaptive-lighting%2Fblob%2Fmain%2Fblueprints%2Fautomation%2Fturn_off_at_minimum.yaml) |
|
||||||
|
| [Pause at minimum](https://github.com/basnijholt/adaptive-lighting/blob/main/blueprints/automation/manual_control_at_minimum.yaml) | Pause brightness through manual control, using its existing reset behavior. | [](https://my.home-assistant.io/redirect/blueprint_import/?blueprint_url=https%3A%2F%2Fgithub.com%2Fbasnijholt%2Fadaptive-lighting%2Fblob%2Fmain%2Fblueprints%2Fautomation%2Fmanual_control_at_minimum.yaml) |
|
||||||
|
| [Schedule profile](https://github.com/basnijholt/adaptive-lighting/blob/main/blueprints/automation/schedule_profile.yaml) | Apply brightness and color temperature from Schedule helper blocks. | [](https://my.home-assistant.io/redirect/blueprint_import/?blueprint_url=https%3A%2F%2Fgithub.com%2Fbasnijholt%2Fadaptive-lighting%2Fblob%2Fmain%2Fblueprints%2Fautomation%2Fschedule_profile.yaml) |
|
||||||
|
| [Daylight limit](https://github.com/basnijholt/adaptive-lighting/blob/main/blueprints/automation/daylight_limit.yaml) | Lower maximum brightness in strong daylight. | [](https://my.home-assistant.io/redirect/blueprint_import/?blueprint_url=https%3A%2F%2Fgithub.com%2Fbasnijholt%2Fadaptive-lighting%2Fblob%2Fmain%2Fblueprints%2Fautomation%2Fdaylight_limit.yaml) |
|
||||||
|
|
||||||
|
Click a blueprint's import badge, confirm the import in Home Assistant, then create an automation and select your entities. You can also copy its source link into **Settings → Automations & scenes → Blueprints → Import Blueprint**. Read the matching example below for setup and behavior. Each blueprint is tested through Home Assistant alongside its YAML example. The built-in manual-control timeout needs no automation; the scripts below remain useful as actions in your own automations.
|
||||||
|
|
||||||
|
`change_switch_settings` updates a profile while its main switch is off, but lights are adapted only while that switch is on. It preserves manual-control flags, so manually controlled lights remain paused.
|
||||||
|
|
||||||
|
<details markdown="1">
|
||||||
|
<summary>Automatically reset manual control after one hour.</summary>
|
||||||
|
|
||||||
|
Use the built-in timeout so every new manual change renews a single timer for that light:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
adaptive_lighting:
|
||||||
|
- name: "Living Room"
|
||||||
|
lights:
|
||||||
|
- light.living_room
|
||||||
|
autoreset_control_seconds: 3600
|
||||||
|
```
|
||||||
|
|
||||||
|
This is a top-level `configuration.yaml` example. The timer clears manual control and immediately readapts a light when both it and the Adaptive Lighting switch are on.
|
||||||
|
|
||||||
|
</details>
|
||||||
|
|
||||||
|
<details markdown="1">
|
||||||
|
<summary>Toggle multiple Adaptive Lighting switches to "sleep mode" using an <code>input_boolean.sleep_mode</code>.</summary>
|
||||||
|
|
||||||
|
Also available as a [blueprint](https://github.com/basnijholt/adaptive-lighting/blob/main/blueprints/automation/sleep_mode.yaml). Select an input boolean and the sleep-mode switches it should control.
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
- alias: "Adaptive lighting: toggle 'sleep mode'"
|
||||||
|
mode: restart
|
||||||
|
trigger:
|
||||||
|
- platform: state
|
||||||
|
entity_id: input_boolean.sleep_mode
|
||||||
|
- platform: homeassistant
|
||||||
|
event: start # apply the helper's restored state
|
||||||
|
variables:
|
||||||
|
sleep_mode: "{{ states('input_boolean.sleep_mode') }}"
|
||||||
|
conditions:
|
||||||
|
- condition: template
|
||||||
|
value_template: "{{ sleep_mode in ['on', 'off'] }}"
|
||||||
|
actions:
|
||||||
|
- action: "switch.turn_{{ sleep_mode }}"
|
||||||
|
target:
|
||||||
|
entity_id:
|
||||||
|
- switch.adaptive_lighting_living_room_sleep_mode
|
||||||
|
- switch.adaptive_lighting_bedroom_sleep_mode
|
||||||
|
```
|
||||||
|
|
||||||
|
</details>
|
||||||
|
|
||||||
|
<details markdown="1">
|
||||||
|
<summary>Turn a light off when its adaptive brightness target reaches the minimum.</summary>
|
||||||
|
|
||||||
|
Prefer a form over editing YAML? Import the [blueprint](https://github.com/basnijholt/adaptive-lighting/blob/main/blueprints/automation/turn_off_at_minimum.yaml) in Home Assistant under **Settings → Automations & scenes → Blueprints → Import Blueprint**. Select your profile, its matching adapt brightness switch, one light managed by that profile, and its minimum brightness percentage. Create one automation per light. If you change the profile's minimum later, update the automation too. The blueprint and YAML example below have the same behavior.
|
||||||
|
|
||||||
|
The Adaptive Lighting switch already exposes its calculated `brightness_pct` target. Use its state changes to choose a power policy in an automation; no custom event is needed. This example assumes `min_brightness: 1`. Change `minimum_pct` to match your profile, and replace the switch and light entity IDs with your own.
|
||||||
|
|
||||||
|
The comparison uses the same rounded 0–255 brightness as an adaptation command. Comparing floating-point percentages for exact equality can miss the minimum between updates. This detects the calculated target reaching its minimum command, not the bulb finishing a transition or reaching its physical dimming limit.
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
- alias: "Adaptive lighting: turn off at minimum brightness"
|
||||||
|
mode: single
|
||||||
|
triggers:
|
||||||
|
- trigger: state
|
||||||
|
entity_id: switch.adaptive_lighting_living_room
|
||||||
|
attribute: brightness_pct
|
||||||
|
conditions:
|
||||||
|
- condition: state
|
||||||
|
entity_id:
|
||||||
|
- switch.adaptive_lighting_living_room
|
||||||
|
- switch.adaptive_lighting_living_room_adapt_brightness
|
||||||
|
state: "on"
|
||||||
|
- condition: template
|
||||||
|
value_template: >-
|
||||||
|
{% set minimum_pct = 1 %}
|
||||||
|
{% set minimum = (minimum_pct * 255 / 100) | round(0) %}
|
||||||
|
{% set before = trigger.from_state.attributes.get('brightness_pct')
|
||||||
|
if trigger.from_state else none %}
|
||||||
|
{% set after = trigger.to_state.attributes.get('brightness_pct')
|
||||||
|
if trigger.to_state else none %}
|
||||||
|
{{ is_number(before) and is_number(after)
|
||||||
|
and (before | float * 255 / 100) | round(0) > minimum
|
||||||
|
and (after | float * 255 / 100) | round(0) <= minimum }}
|
||||||
|
- condition: state
|
||||||
|
entity_id: light.living_room
|
||||||
|
state: "on"
|
||||||
|
- condition: template
|
||||||
|
value_template: >-
|
||||||
|
{{ 'light.living_room' not in
|
||||||
|
(state_attr('switch.adaptive_lighting_living_room', 'manual_control') or []) }}
|
||||||
|
actions:
|
||||||
|
- action: light.turn_off
|
||||||
|
target:
|
||||||
|
entity_id: light.living_room
|
||||||
|
```
|
||||||
|
|
||||||
|
This runs once when a valid target crosses down into the minimum range. It skips lights currently marked as manually controlled, does not repeatedly turn them off while the target remains low, and does not turn them back on later. Startup or re-enabling the profile while already at the minimum is not a new crossing. Sleep mode can also cause a crossing if its brightness is at or below the chosen minimum. Changing sleep mode clears manual control by default; set `reset_manual_control_on_sleep_mode_change: false` if you want to preserve it. For a bedtime-only policy, trigger directly on the sleep-mode switch changing to `on` instead.
|
||||||
|
|
||||||
|
</details>
|
||||||
|
|
||||||
|
<details markdown="1">
|
||||||
|
<summary>Pause brightness at the minimum using manual control.</summary>
|
||||||
|
|
||||||
|
Use the [blueprint](https://github.com/basnijholt/adaptive-lighting/blob/main/blueprints/automation/manual_control_at_minimum.yaml) to mark an individual light's brightness as manually controlled when the calculated target reaches its minimum. The light stays on and the adaptation switches stay enabled. Set `take_over_control_mode: pause_changed` on the profile to keep adapting color; the default `pause_all` pauses both attributes.
|
||||||
|
|
||||||
|
Select the profile, its adapt-brightness switch, and a light managed by it. Match the minimum percentage to the profile's `min_brightness`. This YAML example assumes `min_brightness: 1`; change `minimum_pct` and the entity IDs to match your setup.
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
- alias: "Adaptive lighting: pause brightness at minimum"
|
||||||
|
mode: single
|
||||||
|
variables:
|
||||||
|
minimum_pct: 1
|
||||||
|
minimum: "{{ (minimum_pct * 255 / 100) | round(0) }}"
|
||||||
|
triggers:
|
||||||
|
- trigger: state
|
||||||
|
entity_id: switch.adaptive_lighting_living_room
|
||||||
|
attribute: brightness_pct
|
||||||
|
conditions:
|
||||||
|
- condition: state
|
||||||
|
entity_id:
|
||||||
|
- switch.adaptive_lighting_living_room
|
||||||
|
- switch.adaptive_lighting_living_room_adapt_brightness
|
||||||
|
state: "on"
|
||||||
|
- condition: template
|
||||||
|
value_template: >-
|
||||||
|
{% set before = trigger.from_state.attributes.get('brightness_pct')
|
||||||
|
if trigger.from_state else none %}
|
||||||
|
{% set after = trigger.to_state.attributes.get('brightness_pct')
|
||||||
|
if trigger.to_state else none %}
|
||||||
|
{{ is_number(before) and is_number(after)
|
||||||
|
and (before | float * 255 / 100) | round(0) > minimum
|
||||||
|
and (after | float * 255 / 100) | round(0) <= minimum }}
|
||||||
|
- condition: state
|
||||||
|
entity_id: light.living_room
|
||||||
|
state: "on"
|
||||||
|
- condition: template
|
||||||
|
value_template: >-
|
||||||
|
{{ 'light.living_room' not in
|
||||||
|
(state_attr('switch.adaptive_lighting_living_room', 'manual_control_brightness') or []) }}
|
||||||
|
actions:
|
||||||
|
- variables:
|
||||||
|
light_session: "{{ states.light.living_room.last_changed.isoformat() }}"
|
||||||
|
profile_session: "{{ states.switch.adaptive_lighting_living_room.last_changed.isoformat() }}"
|
||||||
|
brightness_session: "{{ states.switch.adaptive_lighting_living_room_adapt_brightness.last_changed.isoformat() }}"
|
||||||
|
- wait_template: >-
|
||||||
|
{% set target = state_attr('switch.adaptive_lighting_living_room', 'brightness_pct') %}
|
||||||
|
{{ not is_state('light.living_room', 'on')
|
||||||
|
or not is_state('switch.adaptive_lighting_living_room', 'on')
|
||||||
|
or not is_state('switch.adaptive_lighting_living_room_adapt_brightness', 'on')
|
||||||
|
or states.light.living_room.last_changed.isoformat() != light_session
|
||||||
|
or states.switch.adaptive_lighting_living_room.last_changed.isoformat() != profile_session
|
||||||
|
or states.switch.adaptive_lighting_living_room_adapt_brightness.last_changed.isoformat() != brightness_session
|
||||||
|
or not is_number(target) or (target | float * 255 / 100) | round(0) > minimum
|
||||||
|
or 'light.living_room' in
|
||||||
|
(state_attr('switch.adaptive_lighting_living_room', 'manual_control_brightness') or [])
|
||||||
|
or (state_attr('light.living_room', 'brightness') | float(256)) <= minimum }}
|
||||||
|
timeout: "00:05:00"
|
||||||
|
continue_on_timeout: false
|
||||||
|
- condition: template
|
||||||
|
value_template: >-
|
||||||
|
{% set target = state_attr('switch.adaptive_lighting_living_room', 'brightness_pct') %}
|
||||||
|
{{ is_state('light.living_room', 'on')
|
||||||
|
and is_state('switch.adaptive_lighting_living_room', 'on')
|
||||||
|
and is_state('switch.adaptive_lighting_living_room_adapt_brightness', 'on')
|
||||||
|
and states.light.living_room.last_changed.isoformat() == light_session
|
||||||
|
and states.switch.adaptive_lighting_living_room.last_changed.isoformat() == profile_session
|
||||||
|
and states.switch.adaptive_lighting_living_room_adapt_brightness.last_changed.isoformat() == brightness_session
|
||||||
|
and is_number(target) and (target | float * 255 / 100) | round(0) <= minimum
|
||||||
|
and (state_attr('light.living_room', 'brightness') | float(256)) <= minimum
|
||||||
|
and 'light.living_room' not in
|
||||||
|
(state_attr('switch.adaptive_lighting_living_room', 'manual_control_brightness') or []) }}
|
||||||
|
- action: adaptive_lighting.set_manual_control
|
||||||
|
data:
|
||||||
|
entity_id: switch.adaptive_lighting_living_room
|
||||||
|
lights: light.living_room
|
||||||
|
manual_control: >-
|
||||||
|
{{ true if 'light.living_room' in
|
||||||
|
(state_attr('switch.adaptive_lighting_living_room', 'manual_control_color') or [])
|
||||||
|
else 'brightness' }}
|
||||||
|
```
|
||||||
|
|
||||||
|
The comparison uses the rounded 0–255 target, so it does not depend on sampling an exact floating-point minimum. It waits up to five minutes for the light to report that minimum before marking manual control, so the final dimming command can complete. Reported brightness does not prove physical fade completion. If the light, profile, or adapt-brightness switch is toggled, the target rises, brightness is marked manually controlled elsewhere, or brightness never reaches the minimum, the attempt is abandoned. Lights that cannot report the configured minimum will not be paused. Existing manual color flags are preserved, and lights whose brightness is already manually controlled are left alone. Manual-control state is shared for lights managed by multiple profiles, so their existing takeover policies still apply.
|
||||||
|
|
||||||
|
The usual resets apply: turning the light off, the configured `autoreset_control_seconds` timeout, clearing manual control through its service, and existing profile/sleep-switch reset behavior. After a reset, normal adaptation can increase brightness again. This runs once per downward crossing; resetting while the target remains at its minimum does not immediately mark the light again. Startup at the minimum is not a crossing either.
|
||||||
|
|
||||||
|
This pauses further dimming as well as brightening. To pause brightness immediately after a brightness change made through Home Assistant, use `take_over_control_mode: pause_changed` with `take_over_control: true`; that needs no additional automation.
|
||||||
|
|
||||||
|
</details>
|
||||||
|
|
||||||
|
<details markdown="1">
|
||||||
|
<summary>Set sunrise and sunset from an alarm.</summary>
|
||||||
|
|
||||||
|
Call this script from your alarm automation. It sets one Adaptive Lighting profile's sunrise to the current time and its sunset to 12 hours later on the local clock.
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
script:
|
||||||
|
set_adaptive_lighting_alarm_times:
|
||||||
|
alias: "Adaptive lighting: set times from alarm"
|
||||||
|
variables:
|
||||||
|
alarm_time: '{{ now().strftime("%H:%M:%S") }}'
|
||||||
|
sequence:
|
||||||
|
- action: adaptive_lighting.change_switch_settings
|
||||||
|
data:
|
||||||
|
entity_id: switch.adaptive_lighting_alarm_lights
|
||||||
|
sunrise_time: "{{ alarm_time }}"
|
||||||
|
sunset_time: >
|
||||||
|
{{ (strptime(alarm_time, "%H:%M:%S") + timedelta(hours=12))
|
||||||
|
.strftime("%H:%M:%S") }}
|
||||||
|
```
|
||||||
|
|
||||||
|
</details>
|
||||||
|
|
||||||
|
<details markdown="1">
|
||||||
|
<summary>Use a Schedule helper as a step-based custom lighting profile.</summary>
|
||||||
|
|
||||||
|
Also available as a [blueprint](https://github.com/basnijholt/adaptive-lighting/blob/main/blueprints/automation/schedule_profile.yaml). Select the main profile switch and your Schedule helper.
|
||||||
|
|
||||||
|
Create a [Schedule helper](https://www.home-assistant.io/integrations/schedule/) named `Adaptive Lighting Profile`. Add time blocks with Additional data like this:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
brightness_pct: 20
|
||||||
|
color_temp_kelvin: 2500
|
||||||
|
```
|
||||||
|
|
||||||
|
Use different values for each block. The automation below applies the active block whenever the schedule state or its attributes change. Setting both brightness limits and both color temperature limits to the same value keeps each block at its setpoint. Outside a block, the configured Adaptive Lighting settings are restored.
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
- alias: "Adaptive lighting: apply scheduled profile"
|
||||||
|
triggers:
|
||||||
|
- trigger: state
|
||||||
|
entity_id: schedule.adaptive_lighting_profile
|
||||||
|
- trigger: homeassistant
|
||||||
|
event: start
|
||||||
|
actions:
|
||||||
|
- choose:
|
||||||
|
- conditions:
|
||||||
|
- condition: state
|
||||||
|
entity_id: schedule.adaptive_lighting_profile
|
||||||
|
state: "on"
|
||||||
|
sequence:
|
||||||
|
- action: adaptive_lighting.change_switch_settings
|
||||||
|
data:
|
||||||
|
entity_id: switch.adaptive_lighting_living_room
|
||||||
|
min_brightness: >
|
||||||
|
{{ state_attr('schedule.adaptive_lighting_profile', 'brightness_pct') | int(1) }}
|
||||||
|
max_brightness: >
|
||||||
|
{{ state_attr('schedule.adaptive_lighting_profile', 'brightness_pct') | int(1) }}
|
||||||
|
min_color_temp: >
|
||||||
|
{{ state_attr('schedule.adaptive_lighting_profile', 'color_temp_kelvin') | int(2000) }}
|
||||||
|
max_color_temp: >
|
||||||
|
{{ state_attr('schedule.adaptive_lighting_profile', 'color_temp_kelvin') | int(2000) }}
|
||||||
|
default:
|
||||||
|
- action: adaptive_lighting.change_switch_settings
|
||||||
|
data:
|
||||||
|
entity_id: switch.adaptive_lighting_living_room
|
||||||
|
use_defaults: configuration
|
||||||
|
mode: restart
|
||||||
|
```
|
||||||
|
|
||||||
|
This creates step changes at block boundaries. It does not interpolate between schedule points. Runtime settings also reset when Home Assistant restarts, so the startup trigger reapplies the active block. The default branch restores every configured setting; restore only the four fields explicitly if other automations also change runtime settings.
|
||||||
|
|
||||||
|
</details>
|
||||||
|
|
||||||
|
<details markdown="1">
|
||||||
|
<summary>Reduce daytime brightness when an illuminance sensor detects strong daylight.</summary>
|
||||||
|
|
||||||
|
Also available as a [blueprint](https://github.com/basnijholt/adaptive-lighting/blob/main/blueprints/automation/daylight_limit.yaml). Select the profile and sensor, then set the lux thresholds and brightness limits. The high lux threshold must exceed the low threshold; the blueprint does nothing if they are reversed or equal.
|
||||||
|
|
||||||
|
Keep a low configured `min_brightness` for late night and let an automation lower `max_brightness` while the room has ample daylight. Use a sensor that is not significantly affected by the controlled lights to avoid a feedback loop.
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
- alias: "Adaptive lighting: limit brightness in daylight"
|
||||||
|
triggers:
|
||||||
|
- trigger: numeric_state
|
||||||
|
entity_id: sensor.living_room_illuminance
|
||||||
|
above: 300
|
||||||
|
- trigger: numeric_state
|
||||||
|
entity_id: sensor.living_room_illuminance
|
||||||
|
below: 200
|
||||||
|
- trigger: homeassistant
|
||||||
|
event: start
|
||||||
|
id: startup
|
||||||
|
actions:
|
||||||
|
- if:
|
||||||
|
- condition: trigger
|
||||||
|
id: startup
|
||||||
|
then:
|
||||||
|
- wait_template: >
|
||||||
|
{{ is_number(states('sensor.living_room_illuminance')) }}
|
||||||
|
timeout: "00:05:00"
|
||||||
|
continue_on_timeout: false
|
||||||
|
- choose:
|
||||||
|
- conditions:
|
||||||
|
- condition: numeric_state
|
||||||
|
entity_id: sensor.living_room_illuminance
|
||||||
|
above: 300
|
||||||
|
sequence:
|
||||||
|
- action: adaptive_lighting.change_switch_settings
|
||||||
|
data:
|
||||||
|
entity_id: switch.adaptive_lighting_living_room
|
||||||
|
max_brightness: 30
|
||||||
|
- conditions:
|
||||||
|
- condition: numeric_state
|
||||||
|
entity_id: sensor.living_room_illuminance
|
||||||
|
below: 200
|
||||||
|
sequence:
|
||||||
|
- action: adaptive_lighting.change_switch_settings
|
||||||
|
data:
|
||||||
|
entity_id: switch.adaptive_lighting_living_room
|
||||||
|
max_brightness: 100
|
||||||
|
mode: restart
|
||||||
|
```
|
||||||
|
|
||||||
|
The separate 200 and 300 lux thresholds add hysteresis. After a restart, the automation waits for a numeric sensor state before evaluating it. If the initial value is between the thresholds, Adaptive Lighting keeps its configured maximum. Replace `30` and `100` with your desired daytime limit and normal maximum.
|
||||||
|
|
||||||
|
`min_brightness` and `max_brightness` are the solar-midnight and daytime endpoints of the brightness curve. Setting `min_brightness` higher than `max_brightness` is supported and creates an inverted curve that is brighter at night and dimmer during the day. If you only want a daytime limit, keep the reduced maximum at or above the configured minimum.
|
||||||
|
|
||||||
|
</details>
|
||||||
|
|
||||||
|
<details markdown="1">
|
||||||
|
<summary>Turn on Hue-controlled lights with the current Adaptive Lighting values.</summary>
|
||||||
|
|
||||||
|
For a Hue button exposed to Home Assistant, call this script from the button automation. It turns on the listed lights directly with the current Adaptive Lighting brightness and color.
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
script:
|
||||||
|
living_room_adaptive_lighting:
|
||||||
|
alias: "Living room: adaptive lighting"
|
||||||
|
sequence:
|
||||||
|
- action: adaptive_lighting.apply
|
||||||
|
data:
|
||||||
|
entity_id: switch.adaptive_lighting_living_room
|
||||||
|
lights:
|
||||||
|
- light.living_room_ceiling
|
||||||
|
- light.living_room_table
|
||||||
|
turn_on_lights: true
|
||||||
|
transition: 0
|
||||||
|
```
|
||||||
|
|
||||||
|
This requires Home Assistant to receive the button event. The one-shot `apply` call works while the main Adaptive Lighting switch is off, turns on the listed lights, and applies values even if a light is marked as manually controlled. It leaves the profile switch and manual-control state unchanged.
|
||||||
|
|
||||||
|
Adaptive Lighting does not update scenes stored on the Hue Bridge, so scenes activated only inside Hue cannot use this script and retain Hue's operation when Home Assistant is unavailable.
|
||||||
|
|
||||||
|
</details>
|
||||||
|
|
||||||
|
<details markdown="1">
|
||||||
|
<summary>Use a fixed RGB stage before sleep mode.</summary>
|
||||||
|
|
||||||
|
This script starts sleep mode with a fixed dim red color, waits 30 minutes, and then restores the configured Adaptive Lighting settings. The main profile switch and the light must already be on.
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
script:
|
||||||
|
adaptive_lighting_bedtime:
|
||||||
|
alias: "Adaptive lighting: bedtime"
|
||||||
|
mode: restart
|
||||||
|
sequence:
|
||||||
|
- action: adaptive_lighting.change_switch_settings
|
||||||
|
data:
|
||||||
|
entity_id: switch.adaptive_lighting_bedroom
|
||||||
|
sleep_rgb_or_color_temp: rgb_color
|
||||||
|
sleep_rgb_color: [255, 56, 0]
|
||||||
|
sleep_brightness: 20
|
||||||
|
- action: switch.turn_on
|
||||||
|
target:
|
||||||
|
entity_id: switch.adaptive_lighting_bedroom_sleep_mode
|
||||||
|
- delay: "00:30:00"
|
||||||
|
- action: adaptive_lighting.change_switch_settings
|
||||||
|
data:
|
||||||
|
entity_id: switch.adaptive_lighting_bedroom
|
||||||
|
use_defaults: configuration
|
||||||
|
```
|
||||||
|
|
||||||
|
The light must support RGB color. The first stage uses a fixed brightness rather than following the normal brightness curve. When sleep mode changes from off to on, the default `reset_manual_control_on_sleep_mode_change: true` returns manually controlled lights to Adaptive Lighting control so they receive the stage. If you disable that option, manually controlled lights remain paused. Restoring configuration defaults resets every runtime setting on this Adaptive Lighting switch, so restore only the sleep fields explicitly if other automations also change runtime settings.
|
||||||
|
|
||||||
|
Stopping this script or reloading scripts during the delay prevents the final action, leaving the runtime overrides active. To recover, call `adaptive_lighting.change_switch_settings` for the profile with `use_defaults: configuration`. A Home Assistant restart reloads the configured settings.
|
||||||
|
|
||||||
|
</details>
|
||||||
|
|
||||||
|
<details markdown="1">
|
||||||
|
<summary>Run a fixed virtual day across midnight.</summary>
|
||||||
|
|
||||||
|
Fixed virtual sunrise and sunset times can cross midnight. This configuration ramps an indoor garden from its minimum at 16:00 to its maximum at 22:00, then back to its minimum at 04:00.
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
adaptive_lighting:
|
||||||
|
- name: "Indoor Garden"
|
||||||
|
lights:
|
||||||
|
- light.indoor_garden
|
||||||
|
sunrise_time: "16:00:00"
|
||||||
|
sunset_time: "04:00:00"
|
||||||
|
min_brightness: 10
|
||||||
|
max_brightness: 100
|
||||||
|
brightness_mode: linear
|
||||||
|
brightness_mode_time_dark: 0
|
||||||
|
brightness_mode_time_light: 21600 # 6 hours
|
||||||
|
```
|
||||||
|
|
||||||
|
Adaptive Lighting changes brightness and color while a light is on; it does not manage the light's power schedule. This separate automation turns the example light on and off:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
- alias: "Indoor garden: power schedule"
|
||||||
|
triggers:
|
||||||
|
- trigger: time
|
||||||
|
at: "16:00:00"
|
||||||
|
id: turn_on
|
||||||
|
- trigger: time
|
||||||
|
at: "04:00:00"
|
||||||
|
id: turn_off
|
||||||
|
- trigger: homeassistant
|
||||||
|
event: start
|
||||||
|
id: startup
|
||||||
|
actions:
|
||||||
|
- choose:
|
||||||
|
- conditions:
|
||||||
|
- condition: trigger
|
||||||
|
id: turn_on
|
||||||
|
sequence:
|
||||||
|
- action: light.turn_on
|
||||||
|
target:
|
||||||
|
entity_id: light.indoor_garden
|
||||||
|
- conditions:
|
||||||
|
- condition: trigger
|
||||||
|
id: startup
|
||||||
|
- condition: time
|
||||||
|
after: "16:00:00"
|
||||||
|
before: "04:00:00"
|
||||||
|
sequence:
|
||||||
|
- action: light.turn_on
|
||||||
|
target:
|
||||||
|
entity_id: light.indoor_garden
|
||||||
|
default:
|
||||||
|
- action: light.turn_off
|
||||||
|
target:
|
||||||
|
entity_id: light.indoor_garden
|
||||||
|
```
|
||||||
|
|
||||||
|
Use `min_sunrise_time`, `max_sunrise_time`, `min_sunset_time`, or `max_sunset_time` instead when you want to constrain astronomical sunrise or sunset to an earliest or latest time rather than replace it.
|
||||||
|
|
||||||
|
</details>
|
||||||
|
|
||||||
|
<!-- OUTPUT:END -->
|
||||||
|
|
||||||
|
> [!TIP]
|
||||||
|
> **Have a useful automation?** Share your automation examples by [opening an issue](https://github.com/basnijholt/adaptive-lighting/issues) or submitting a pull request to the README.
|
||||||
147
docs/configuration.md
Normal file
147
docs/configuration.md
Normal file
|
|
@ -0,0 +1,147 @@
|
||||||
|
---
|
||||||
|
icon: lucide/settings
|
||||||
|
---
|
||||||
|
|
||||||
|
# Configuration
|
||||||
|
|
||||||
|
Adaptive Lighting supports configuration through both YAML and the Home Assistant UI, with identical option names in both methods.
|
||||||
|
|
||||||
|
## Basic Configuration
|
||||||
|
|
||||||
|
The simplest setup uses the Home Assistant UI. Go to **Settings** → **Devices & Services** → **Add Integration** → **Adaptive Lighting**. No `adaptive_lighting:` entry is needed in `configuration.yaml`.
|
||||||
|
|
||||||
|
## YAML Configuration
|
||||||
|
|
||||||
|
Alternatively, you can specify lights and options in `configuration.yaml`:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
adaptive_lighting:
|
||||||
|
- name: "Living Room"
|
||||||
|
lights:
|
||||||
|
- light.living_room_ceiling
|
||||||
|
- light.living_room_lamp
|
||||||
|
```
|
||||||
|
|
||||||
|
## All Options
|
||||||
|
|
||||||
|
All configuration options are listed below with their default values. These options work identically in both YAML and the UI.
|
||||||
|
|
||||||
|
<!-- CODE:START -->
|
||||||
|
<!-- from adaptive_lighting._docs_helpers import generate_config_markdown_table -->
|
||||||
|
<!-- print(generate_config_markdown_table()) -->
|
||||||
|
<!-- CODE:END -->
|
||||||
|
<!-- OUTPUT:START -->
|
||||||
|
<!-- ⚠️ This content is auto-generated by `markdown-code-runner`. -->
|
||||||
|
| Variable name | Description | Default | Type |
|
||||||
|
|:--------------------------------------------|:----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|:---------------|:----------------------------------------|
|
||||||
|
| `lights` | List of light entity_ids to be controlled (may be empty). 🌟 | `[]` | list of `entity_id`s |
|
||||||
|
| `interval` | Frequency to adapt the lights, in seconds. 🔄 | `90` | `int > 0` |
|
||||||
|
| `transition` | Duration of transition when lights change, in seconds. 🕑 | `45` | `float` 0-6553 |
|
||||||
|
| `initial_transition` | Duration of the first transition when lights turn from `off` to `on` in seconds. ⏲️ | `1` | `float` 0-6553 |
|
||||||
|
| `min_brightness` | Minimum brightness percentage. 💡 | `1` | `int` 1-100 |
|
||||||
|
| `max_brightness` | Maximum brightness percentage. 💡 | `100` | `int` 1-100 |
|
||||||
|
| `min_color_temp` | Warmest color temperature in Kelvin. 🔥 | `2000` | `int` 1000-10000 |
|
||||||
|
| `max_color_temp` | Coldest color temperature in Kelvin. ❄️ | `5500` | `int` 1000-10000 |
|
||||||
|
| `prefer_rgb_color` | Whether to prefer RGB color adjustment over light color temperature when possible. 🌈 | `False` | `bool` |
|
||||||
|
| `sleep_brightness` | Brightness percentage of lights in sleep mode. 😴 | `1` | `int` 1-100 |
|
||||||
|
| `sleep_rgb_or_color_temp` | Use either `"rgb_color"` or `"color_temp"` in sleep mode. 🌙 | `color_temp` | one of `['color_temp', 'rgb_color']` |
|
||||||
|
| `sleep_color_temp` | Color temperature in sleep mode (used when `sleep_rgb_or_color_temp` is `color_temp`) in Kelvin. 😴 | `1000` | `int` 1000-10000 |
|
||||||
|
| `sleep_rgb_color` | RGB color in sleep mode (used when `sleep_rgb_or_color_temp` is "rgb_color"). 🌈 | `[255, 56, 0]` | RGB color |
|
||||||
|
| `sleep_transition` | Duration of transition when "sleep mode" is toggled in seconds. 😴 | `1` | `float` 0-6553 |
|
||||||
|
| `transition_until_sleep` | When enabled, Adaptive Lighting will treat sleep settings as the minimum, transitioning to these values after sunset. 🌙 | `False` | `bool` |
|
||||||
|
| `sunrise_time` | Set a fixed time (HH:MM:SS) for sunrise. 🌅 | `None` | `str` |
|
||||||
|
| `min_sunrise_time` | Set the earliest virtual sunrise time (HH:MM:SS), allowing for later sunrises. 🌅 | `None` | `str` |
|
||||||
|
| `max_sunrise_time` | Set the latest virtual sunrise time (HH:MM:SS), allowing for earlier sunrises. 🌅 | `None` | `str` |
|
||||||
|
| `sunrise_offset` | Adjust sunrise time with a positive or negative offset in seconds. ⏰ | `0` | `int` |
|
||||||
|
| `sunset_time` | Set a fixed time (HH:MM:SS) for sunset. 🌇 | `None` | `str` |
|
||||||
|
| `min_sunset_time` | Set the earliest virtual sunset time (HH:MM:SS), allowing for later sunsets. 🌇 | `None` | `str` |
|
||||||
|
| `max_sunset_time` | Set the latest virtual sunset time (HH:MM:SS), allowing for earlier sunsets. 🌇 | `None` | `str` |
|
||||||
|
| `sunset_offset` | Adjust sunset time with a positive or negative offset in seconds. ⏰ | `0` | `int` |
|
||||||
|
| `brightness_mode` | Brightness mode to use. Possible values are `default`, `linear`, and `tanh` (uses `brightness_mode_time_dark` and `brightness_mode_time_light`). 📈 | `default` | one of `['default', 'linear', 'tanh']` |
|
||||||
|
| `brightness_mode_time_dark` | (Ignored if `brightness_mode='default'`) The duration in seconds to ramp up/down the brightness before/after sunrise/sunset. 📈📉 | `900` | `int` |
|
||||||
|
| `brightness_mode_time_light` | (Ignored if `brightness_mode='default'`) The duration in seconds to ramp up/down the brightness after/before sunrise/sunset. 📈📉. | `3600` | `int` |
|
||||||
|
| `take_over_control` | Pause adaptation of individual lights and hand over (manual) control to other sources that issue `light.turn_on` calls for lights that are on. 🔒 | `True` | `bool` |
|
||||||
|
| `take_over_control_mode` | The adaptation pausing mode when other sources change brightness and/or color of lights. `pause_all` always pauses both brightness and color adaptation. `pause_changed` pauses the adaptation of only the changed attributes and continues adapting unchanged attributes, e.g., continues color adaptation when only brightness was changed. | `pause_all` | one of `['pause_all', 'pause_changed']` |
|
||||||
|
| `detect_non_ha_changes` | Detects and halts adaptations for non-`light.turn_on` state changes. Needs `take_over_control` enabled. 🕵️ Caution: ⚠️ Some lights might falsely indicate an 'on' state, which could result in lights turning on unexpectedly. Note that this calls `homeassistant.update_entity` every `interval`! Disable this feature if you encounter such issues. | `False` | `bool` |
|
||||||
|
| `autoreset_control_seconds` | Automatically reset the manual control after a number of seconds. Set to 0 to disable. ⏲️ | `0` | `int` 0-31536000 |
|
||||||
|
| `only_once` | Adapt lights only when they are turned on (`true`) or keep adapting them (`false`). 🔄 | `False` | `bool` |
|
||||||
|
| `adapt_only_on_bare_turn_on` | When turning lights on initially. If set to `true`, AL adapts only if `light.turn_on` is invoked without specifying color or brightness. ❌🌈 This e.g., prevents adaptation when activating a scene and marks the light as manually controlled. If `false`, AL adapts regardless of the presence of color or brightness in the initial `service_data`. Needs `take_over_control` enabled. 🕵️ | `False` | `bool` |
|
||||||
|
| `manual_control_on_external_turn_on` | Treat turn-ons without a matching Home Assistant `light.turn_on` context as manual control. Normal manual-control resets apply. Still allows `detect_non_ha_changes` for already-on lights. Needs `take_over_control` enabled. 🕵️ | `False` | `bool` |
|
||||||
|
| `reset_manual_control_on_sleep_mode_change` | Reset manual control when the sleep mode switch is toggled. Set to `false` to preserve manual control across sleep mode changes. 😴 | `True` | `bool` |
|
||||||
|
| `separate_turn_on_commands` | Use separate `light.turn_on` calls for color and brightness, needed for some light types. 🔀 | `False` | `bool` |
|
||||||
|
| `send_split_delay` | Delay (ms) between `separate_turn_on_commands` for lights that don't support simultaneous brightness and color setting. ⏲️ | `0` | `int` 0-10000 |
|
||||||
|
| `adapt_delay` | Wait time (seconds) between light turn on and Adaptive Lighting applying changes. Might help to avoid flickering. ⏲️ | `0` | `float > 0` |
|
||||||
|
| `skip_redundant_commands` | Skip sending adaptation commands whose target state already equals the light's known state. Minimizes network traffic and improves the adaptation responsivity in some situations. 📉Disable if physical light states get out of sync with HA's recorded state. | `False` | `bool` |
|
||||||
|
| `intercept` | Intercept and adapt `light.turn_on` calls to enabling instantaneous color and brightness adaptation. 🏎️ Disable for lights that do not support `light.turn_on` with color and brightness. | `True` | `bool` |
|
||||||
|
| `multi_light_intercept` | Intercept and adapt `light.turn_on` calls that target multiple lights. ➗⚠️ This might result in splitting up a single `light.turn_on` call into multiple calls, e.g., when lights are in different switches. Requires `intercept` to be enabled. | `True` | `bool` |
|
||||||
|
| `include_config_in_attributes` | Show all options as attributes on the switch in Home Assistant when set to `true`. 📝 | `False` | `bool` |
|
||||||
|
| `expand_light_groups` | Expand light groups to their members (`true`, default). Set `false` to send commands to the group and track manual control for the group. Explicit member targets in services stay individual targets. | `True` | `bool` |
|
||||||
|
|
||||||
|
<!-- OUTPUT:END -->
|
||||||
|
|
||||||
|
## Full Configuration Example
|
||||||
|
|
||||||
|
<!-- CODE:START -->
|
||||||
|
<!-- from adaptive_lighting.docs_gen import _transform_readme_links -->
|
||||||
|
<!-- print(_transform_readme_links(include_section("../README.md", "config-example-full"))) -->
|
||||||
|
<!-- CODE:END -->
|
||||||
|
<!-- OUTPUT:START -->
|
||||||
|
<!-- ⚠️ This content is auto-generated by `markdown-code-runner`. -->
|
||||||
|
Full example:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
# Example configuration.yaml entry
|
||||||
|
adaptive_lighting:
|
||||||
|
- name: "default"
|
||||||
|
lights: []
|
||||||
|
prefer_rgb_color: false
|
||||||
|
transition: 45
|
||||||
|
initial_transition: 1
|
||||||
|
interval: 90
|
||||||
|
min_brightness: 1
|
||||||
|
max_brightness: 100
|
||||||
|
min_color_temp: 2000
|
||||||
|
max_color_temp: 5500
|
||||||
|
sleep_brightness: 1
|
||||||
|
sleep_color_temp: 1000
|
||||||
|
sunrise_time: "08:00:00" # override the sunrise time
|
||||||
|
sunrise_offset:
|
||||||
|
sunset_time:
|
||||||
|
sunset_offset: 1800 # in seconds or '00:30:00'
|
||||||
|
take_over_control: true
|
||||||
|
detect_non_ha_changes: false
|
||||||
|
only_once: false
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
<!-- OUTPUT:END -->
|
||||||
|
|
||||||
|
## Multiple Configurations
|
||||||
|
|
||||||
|
You can create multiple Adaptive Lighting configurations for different areas or use cases:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
adaptive_lighting:
|
||||||
|
- name: "Daytime Spaces"
|
||||||
|
lights:
|
||||||
|
- light.living_room
|
||||||
|
- light.kitchen
|
||||||
|
- light.office
|
||||||
|
min_brightness: 30
|
||||||
|
max_brightness: 100
|
||||||
|
|
||||||
|
- name: "Bedroom"
|
||||||
|
lights:
|
||||||
|
- light.bedroom_ceiling
|
||||||
|
- light.bedroom_lamp
|
||||||
|
min_brightness: 5
|
||||||
|
max_brightness: 80
|
||||||
|
sleep_brightness: 1
|
||||||
|
sleep_color_temp: 1000
|
||||||
|
```
|
||||||
|
|
||||||
|
## Related Topics
|
||||||
|
|
||||||
|
- [Brightness Modes](advanced/brightness-modes.md) - Detailed explanation of brightness calculation modes
|
||||||
|
- [Sleep Mode](advanced/sleep-mode.md) - Sleep mode configuration
|
||||||
|
- [Manual Control](advanced/manual-control.md) - How manual control detection works
|
||||||
102
docs/getting-started.md
Normal file
102
docs/getting-started.md
Normal file
|
|
@ -0,0 +1,102 @@
|
||||||
|
---
|
||||||
|
icon: lucide/rocket
|
||||||
|
---
|
||||||
|
|
||||||
|
# Getting Started
|
||||||
|
|
||||||
|
This guide will help you install and configure Adaptive Lighting for the first time.
|
||||||
|
|
||||||
|
## Prerequisites
|
||||||
|
|
||||||
|
- [Home Assistant](https://www.home-assistant.io/) 2025.9.0 or newer
|
||||||
|
- [HACS](https://hacs.xyz/) (Home Assistant Community Store) installed
|
||||||
|
|
||||||
|
## Installation
|
||||||
|
|
||||||
|
### Via HACS (Recommended)
|
||||||
|
|
||||||
|
1. Open HACS in your Home Assistant instance
|
||||||
|
2. Click on **Integrations**
|
||||||
|
3. Click the **+ Explore & Download Repositories** button
|
||||||
|
4. Search for "Adaptive Lighting"
|
||||||
|
5. Click **Download**
|
||||||
|
6. Restart Home Assistant
|
||||||
|
|
||||||
|
Or use this button to open HACS directly:
|
||||||
|
|
||||||
|
[](https://my.home-assistant.io/redirect/hacs_repository/?owner=basnijholt&repository=adaptive-lighting&category=integration)
|
||||||
|
|
||||||
|
### Manual Installation
|
||||||
|
|
||||||
|
1. Download the latest release from [GitHub](https://github.com/basnijholt/adaptive-lighting/releases)
|
||||||
|
2. Extract the `adaptive_lighting` folder to your `config/custom_components/` directory
|
||||||
|
3. Restart Home Assistant
|
||||||
|
|
||||||
|
## Configuration
|
||||||
|
|
||||||
|
Choose one of two configuration methods:
|
||||||
|
|
||||||
|
=== "Via UI"
|
||||||
|
|
||||||
|
1. Go to **Settings** → **Devices & Services**
|
||||||
|
2. Click **+ Add Integration**
|
||||||
|
3. Search for "Adaptive Lighting"
|
||||||
|
4. Follow the setup wizard to name your Adaptive Lighting instance
|
||||||
|
5. Find Adaptive Lighting and click **Configure**
|
||||||
|
6. Select your lights and adjust the settings
|
||||||
|
|
||||||
|
No `adaptive_lighting:` entry is needed in `configuration.yaml`.
|
||||||
|
|
||||||
|
=== "Via YAML"
|
||||||
|
|
||||||
|
Instances configured through YAML must be edited in YAML.
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
adaptive_lighting:
|
||||||
|
- name: "Living Room"
|
||||||
|
lights:
|
||||||
|
- light.living_room_ceiling
|
||||||
|
- light.living_room_lamp
|
||||||
|
min_brightness: 20
|
||||||
|
max_brightness: 100
|
||||||
|
min_color_temp: 2200
|
||||||
|
max_color_temp: 5500
|
||||||
|
```
|
||||||
|
|
||||||
|
Restart Home Assistant after changing the YAML configuration.
|
||||||
|
|
||||||
|
## Basic YAML Configuration Example
|
||||||
|
|
||||||
|
Here's a simple configuration to get you started:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
adaptive_lighting:
|
||||||
|
- name: "Main Lights"
|
||||||
|
lights:
|
||||||
|
- light.living_room
|
||||||
|
- light.bedroom
|
||||||
|
- light.kitchen
|
||||||
|
transition: 30
|
||||||
|
min_brightness: 10
|
||||||
|
max_brightness: 100
|
||||||
|
min_color_temp: 2000
|
||||||
|
max_color_temp: 5500
|
||||||
|
```
|
||||||
|
|
||||||
|
## Verifying Installation
|
||||||
|
|
||||||
|
After configuration, you should see new switches in Home Assistant:
|
||||||
|
|
||||||
|
- `switch.adaptive_lighting_main_lights`
|
||||||
|
- `switch.adaptive_lighting_sleep_mode_main_lights`
|
||||||
|
- `switch.adaptive_lighting_adapt_brightness_main_lights`
|
||||||
|
- `switch.adaptive_lighting_adapt_color_main_lights`
|
||||||
|
|
||||||
|
Turn on `switch.adaptive_lighting_main_lights` to start adapting your lights!
|
||||||
|
|
||||||
|
## Next Steps
|
||||||
|
|
||||||
|
- [Configuration Reference](configuration.md) - Explore all available options
|
||||||
|
- [Services](services.md) - Learn about service calls for automations
|
||||||
|
- [Automation Examples](automation-examples.md) - See real-world automation recipes
|
||||||
|
- [Troubleshooting](troubleshooting.md) - Common issues and solutions
|
||||||
74
docs/index.md
Normal file
74
docs/index.md
Normal file
|
|
@ -0,0 +1,74 @@
|
||||||
|
---
|
||||||
|
icon: lucide/sun
|
||||||
|
---
|
||||||
|
|
||||||
|
# Adaptive Lighting
|
||||||
|
|
||||||
|
**Enhance Your Home's Atmosphere with Smart, Sun-Synchronized Lighting**
|
||||||
|
|
||||||
|
<div style="text-align: center; margin: 2rem 0;">
|
||||||
|
<img src="assets/logo.png" alt="Adaptive Lighting Logo" width="200" />
|
||||||
|
</div>
|
||||||
|
|
||||||
|
[Adaptive Lighting](https://github.com/basnijholt/adaptive-lighting) is a custom component for [Home Assistant](https://www.home-assistant.io/) that intelligently adjusts the brightness and color of your lights based on the sun's position, while still allowing for manual control.
|
||||||
|
|
||||||
|
<div style="text-align: center; margin: 2rem 0;">
|
||||||
|
<a href="https://my.home-assistant.io/redirect/hacs_repository/?owner=basnijholt&repository=adaptive-lighting&category=integration" class="md-button md-button--primary">
|
||||||
|
Install via HACS
|
||||||
|
</a>
|
||||||
|
<a href="simulator/" class="md-button">
|
||||||
|
Try the Simulator
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
By automatically adapting the settings of your lights throughout the day, Adaptive Lighting helps maintain your natural circadian rhythm, which can lead to improved sleep, mood, and overall well-being. Experience cooler color temperatures at noon, gradually transitioning to warmer colors at sunset and sunrise.
|
||||||
|
|
||||||
|
## Features
|
||||||
|
|
||||||
|
<!-- CODE:START -->
|
||||||
|
<!-- from adaptive_lighting.docs_gen import _transform_readme_links -->
|
||||||
|
<!-- print(_transform_readme_links(include_section("../README.md", "features", strip_heading=True))) -->
|
||||||
|
<!-- CODE:END -->
|
||||||
|
<!-- OUTPUT:START -->
|
||||||
|
<!-- ⚠️ This content is auto-generated by `markdown-code-runner`. -->
|
||||||
|
When initially turning on a light that is controlled by Adaptive Lighting, the `light.turn_on` service call is intercepted, and the light's brightness and color are automatically adjusted based on the sun's position.
|
||||||
|
After that, the light's brightness and color are automatically adjusted at a regular interval.
|
||||||
|
|
||||||
|
Adaptive Lighting provides four switches (using "living_room" as an example component name):
|
||||||
|
|
||||||
|
- `switch.adaptive_lighting_living_room`: Turn Adaptive Lighting on or off and view current light settings through its attributes.
|
||||||
|
- `switch.adaptive_lighting_sleep_mode_living_room`: Activate "sleep mode" 😴 and set custom sleep_brightness and sleep_color_temp.
|
||||||
|
- `switch.adaptive_lighting_adapt_brightness_living_room`: Enable or disable brightness adaptation 🔆 for supported lights.
|
||||||
|
- `switch.adaptive_lighting_adapt_color_living_room`: Enable or disable color adaptation 🌈 for supported lights.
|
||||||
|
|
||||||
|
<!-- OUTPUT:END -->
|
||||||
|
|
||||||
|
## Quick Start
|
||||||
|
|
||||||
|
1. **Install via HACS**: Search for "Adaptive Lighting" in the [Home Assistant Community Store](https://hacs.xyz/)
|
||||||
|
2. **Add the integration**: Go to **Settings** → **Devices & Services** → **Add Integration** → **Adaptive Lighting**, then name your instance
|
||||||
|
3. **Configure**: Open Adaptive Lighting, click **Configure**, select your lights, and adjust the settings. No YAML entry is needed.
|
||||||
|
|
||||||
|
[Get Started →](getting-started.md){ .md-button .md-button--primary }
|
||||||
|
[View All Options →](configuration.md){ .md-button }
|
||||||
|
|
||||||
|
## How It Works
|
||||||
|
|
||||||
|
Adaptive Lighting provides four switches for each configuration (using "living_room" as an example):
|
||||||
|
|
||||||
|
| Switch | Purpose |
|
||||||
|
|--------|---------|
|
||||||
|
| `switch.adaptive_lighting_living_room` | Main on/off control |
|
||||||
|
| `switch.adaptive_lighting_sleep_mode_living_room` | Activate sleep mode |
|
||||||
|
| `switch.adaptive_lighting_adapt_brightness_living_room` | Enable/disable brightness adaptation |
|
||||||
|
| `switch.adaptive_lighting_adapt_color_living_room` | Enable/disable color adaptation |
|
||||||
|
|
||||||
|
## Interactive Simulator
|
||||||
|
|
||||||
|
Visualize how Adaptive Lighting will work with your settings using the interactive simulator:
|
||||||
|
|
||||||
|
<div style="text-align: center; margin: 2rem 0;">
|
||||||
|
<a href="simulator/" class="simulator-link">
|
||||||
|
Try the Interactive Simulator
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
|
@ -0,0 +1,6 @@
|
||||||
|
<!-- Privacy-friendly analytics by Plausible -->
|
||||||
|
<script async src="https://plausible.nijho.lt/js/pa-yNpTS2silFzWxGYjHM_Bk.js"></script>
|
||||||
|
<script>
|
||||||
|
window.plausible=window.plausible||function(){(plausible.q=plausible.q||[]).push(arguments)},plausible.init=plausible.init||function(i){plausible.o=i||{}};
|
||||||
|
plausible.init()
|
||||||
|
</script>
|
||||||
71
docs/run_markdown_code_runner.py
Executable file
71
docs/run_markdown_code_runner.py
Executable file
|
|
@ -0,0 +1,71 @@
|
||||||
|
#!/usr/bin/env python3
|
||||||
|
# ruff: noqa: T201, S603, S607
|
||||||
|
"""Update all markdown files that use markdown-code-runner for auto-generation.
|
||||||
|
|
||||||
|
Run from repo root: uv run python docs/run_markdown_code_runner.py
|
||||||
|
"""
|
||||||
|
|
||||||
|
from __future__ import annotations
|
||||||
|
|
||||||
|
import subprocess
|
||||||
|
import sys
|
||||||
|
from pathlib import Path
|
||||||
|
|
||||||
|
|
||||||
|
def find_markdown_files_with_code_blocks(docs_dir: Path) -> list[Path]:
|
||||||
|
"""Find all markdown files containing markdown-code-runner markers."""
|
||||||
|
files_with_code = []
|
||||||
|
for md_file in docs_dir.rglob("*.md"):
|
||||||
|
content = md_file.read_text()
|
||||||
|
if "<!-- CODE:START -->" in content:
|
||||||
|
files_with_code.append(md_file)
|
||||||
|
return sorted(files_with_code)
|
||||||
|
|
||||||
|
|
||||||
|
def run_markdown_code_runner(files: list[Path], repo_root: Path) -> bool:
|
||||||
|
"""Run markdown-code-runner on all files. Returns True if all succeeded."""
|
||||||
|
if not files:
|
||||||
|
print("No files with CODE:START markers found.")
|
||||||
|
return True
|
||||||
|
|
||||||
|
print(f"Found {len(files)} file(s) with auto-generated content:")
|
||||||
|
for f in files:
|
||||||
|
print(f" - {f.relative_to(repo_root)}")
|
||||||
|
print()
|
||||||
|
|
||||||
|
all_success = True
|
||||||
|
for file in files:
|
||||||
|
rel_path = file.relative_to(repo_root)
|
||||||
|
print(f"Updating {rel_path}...", end=" ", flush=True)
|
||||||
|
result = subprocess.run(
|
||||||
|
["markdown-code-runner", str(file)],
|
||||||
|
check=False,
|
||||||
|
capture_output=True,
|
||||||
|
text=True,
|
||||||
|
)
|
||||||
|
if result.returncode == 0:
|
||||||
|
print("✓")
|
||||||
|
else:
|
||||||
|
print("✗")
|
||||||
|
print(f" Error: {result.stderr}")
|
||||||
|
all_success = False
|
||||||
|
|
||||||
|
return all_success
|
||||||
|
|
||||||
|
|
||||||
|
def main() -> int:
|
||||||
|
"""Main entry point."""
|
||||||
|
repo_root = Path(__file__).parent.parent
|
||||||
|
|
||||||
|
# Process docs/ files and README.md
|
||||||
|
files = find_markdown_files_with_code_blocks(repo_root / "docs")
|
||||||
|
readme = repo_root / "README.md"
|
||||||
|
if readme.exists() and "<!-- CODE:START -->" in readme.read_text():
|
||||||
|
files.append(readme)
|
||||||
|
|
||||||
|
success = run_markdown_code_runner(files, repo_root)
|
||||||
|
return 0 if success else 1
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
sys.exit(main())
|
||||||
73
docs/see-also.md
Normal file
73
docs/see-also.md
Normal file
|
|
@ -0,0 +1,73 @@
|
||||||
|
---
|
||||||
|
icon: lucide/external-link
|
||||||
|
---
|
||||||
|
|
||||||
|
# See Also
|
||||||
|
|
||||||
|
Resources, tutorials, and related projects for Adaptive Lighting.
|
||||||
|
|
||||||
|
## Tutorials & Articles
|
||||||
|
|
||||||
|
<!-- CODE:START -->
|
||||||
|
<!-- from adaptive_lighting.docs_gen import _transform_readme_links -->
|
||||||
|
<!-- print(_transform_readme_links(include_section("../README.md", "see-also", strip_heading=True))) -->
|
||||||
|
<!-- CODE:END -->
|
||||||
|
<!-- OUTPUT:START -->
|
||||||
|
<!-- ⚠️ This content is auto-generated by `markdown-code-runner`. -->
|
||||||
|
- [*Sleep better with Adaptive Lighting in Home Assistant*](https://wartner.io/sleep-better-with-adaptive-lightning-in-home-assistant/) by Florian Wartner on 2023-02-23 (blog post 📜)
|
||||||
|
- [*Automatic smart light brightness and color based on the sun*](https://www.youtube.com/watch?v=Rg3zI1Oyk3c) by Home Automation Guy on 2022-08-31 (YouTube video 📺)
|
||||||
|
- [*Adaptive Lighting Blew My Mind in Home Assistant - How to set it up*](https://www.youtube.com/watch?v=c1cnccmgl3k) by Smart Home Junkie on 2022-06-26 (YouTube video 📺)
|
||||||
|
|
||||||
|
<!-- OUTPUT:END -->
|
||||||
|
|
||||||
|
## Interactive Tools
|
||||||
|
|
||||||
|
### Adaptive Lighting Simulator
|
||||||
|
|
||||||
|
Visualize how different settings affect your lighting throughout the day:
|
||||||
|
|
||||||
|
<div style="text-align: center; margin: 2rem 0;">
|
||||||
|
<a href="../simulator/" class="simulator-link">
|
||||||
|
Open the Simulator
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
The simulator lets you:
|
||||||
|
|
||||||
|
- Adjust all configuration parameters in real-time
|
||||||
|
- See how brightness and color temperature change throughout the day
|
||||||
|
- Visualize the effects of different `brightness_mode` settings
|
||||||
|
- Test sleep mode transitions
|
||||||
|
|
||||||
|
## Related Projects
|
||||||
|
|
||||||
|
### Circadian Lighting
|
||||||
|
|
||||||
|
Adaptive Lighting was initially inspired by [hass-circadian_lighting](https://github.com/claytonjn/hass-circadian_lighting) by @claytonjn, but has since been entirely rewritten and expanded with many new features.
|
||||||
|
|
||||||
|
## Official Documentation
|
||||||
|
|
||||||
|
- [Home Assistant Documentation (PR Preview)](https://deploy-preview-14877--home-assistant-docs.netlify.app/integrations/adaptive_lighting/)
|
||||||
|
- [Home Assistant Community Store (HACS)](https://hacs.xyz/)
|
||||||
|
|
||||||
|
## Community
|
||||||
|
|
||||||
|
- [Home Assistant Community Forums](https://community.home-assistant.io/)
|
||||||
|
- [Home Assistant Discord](https://discord.gg/home-assistant)
|
||||||
|
- [Reddit r/homeassistant](https://www.reddit.com/r/homeassistant/)
|
||||||
|
|
||||||
|
## Contributing
|
||||||
|
|
||||||
|
Interested in contributing to Adaptive Lighting?
|
||||||
|
|
||||||
|
- [GitHub Repository](https://github.com/basnijholt/adaptive-lighting)
|
||||||
|
- [Issue Tracker](https://github.com/basnijholt/adaptive-lighting/issues)
|
||||||
|
- [Translation via Weblate](https://hosted.weblate.org/engage/adaptive-lighting/)
|
||||||
|
|
||||||
|
### Translation
|
||||||
|
|
||||||
|
Help translate Adaptive Lighting into your language on [Hosted Weblate](https://hosted.weblate.org/engage/adaptive-lighting/). No programming knowledge required!
|
||||||
|
|
||||||
|
<a href="https://hosted.weblate.org/engage/adaptive-lighting/">
|
||||||
|
<img src="https://hosted.weblate.org/widget/adaptive-lighting/multi-auto.svg" alt="Translation status" />
|
||||||
|
</a>
|
||||||
203
docs/services.md
Normal file
203
docs/services.md
Normal file
|
|
@ -0,0 +1,203 @@
|
||||||
|
---
|
||||||
|
icon: lucide/zap
|
||||||
|
---
|
||||||
|
|
||||||
|
# Services
|
||||||
|
|
||||||
|
Adaptive Lighting provides three services for programmatic control, allowing you to integrate with automations and scripts.
|
||||||
|
|
||||||
|
## adaptive_lighting.apply
|
||||||
|
|
||||||
|
Applies the current Adaptive Lighting settings to lights on demand. Useful for forcing an immediate update or applying settings to lights that aren't in the regular adaptation cycle.
|
||||||
|
Provide a switch in `entity_id`, a list of `lights`, or both.
|
||||||
|
|
||||||
|
### Parameters
|
||||||
|
|
||||||
|
<!-- CODE:START -->
|
||||||
|
<!-- from adaptive_lighting._docs_helpers import generate_apply_markdown_table -->
|
||||||
|
<!-- print(generate_apply_markdown_table()) -->
|
||||||
|
<!-- CODE:END -->
|
||||||
|
<!-- OUTPUT:START -->
|
||||||
|
<!-- ⚠️ This content is auto-generated by `markdown-code-runner`. -->
|
||||||
|
| Service data attribute | Description | Required | Type |
|
||||||
|
|:-------------------------|:--------------------------------------------------------------------------------------|:-----------|:---------------------|
|
||||||
|
| `entity_id` | The `entity_id` of the switch with the settings to apply. 📝 | ❌ | list of `entity_id`s |
|
||||||
|
| `lights` | A light (or list of lights) to apply the settings to. 💡 | ❌ | list of `entity_id`s |
|
||||||
|
| `transition` | Duration of transition when lights change, in seconds. 🕑 | ❌ | `float` 0-6553 |
|
||||||
|
| `adapt_brightness` | Whether to adapt the brightness of the light. 🌞 | ❌ | bool |
|
||||||
|
| `adapt_color` | Whether to adapt the color on supporting lights. 🌈 | ❌ | bool |
|
||||||
|
| `prefer_rgb_color` | Whether to prefer RGB color adjustment over light color temperature when possible. 🌈 | ❌ | bool |
|
||||||
|
| `turn_on_lights` | Whether to turn on lights that are currently off. 🔆 | ❌ | bool |
|
||||||
|
|
||||||
|
<!-- OUTPUT:END -->
|
||||||
|
|
||||||
|
### Example Usage
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
# Apply current settings to specific lights
|
||||||
|
service: adaptive_lighting.apply
|
||||||
|
data:
|
||||||
|
entity_id: switch.adaptive_lighting_living_room
|
||||||
|
lights:
|
||||||
|
- light.floor_lamp
|
||||||
|
- light.desk_lamp
|
||||||
|
turn_on_lights: false
|
||||||
|
```
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
# Force apply with custom transition
|
||||||
|
service: adaptive_lighting.apply
|
||||||
|
data:
|
||||||
|
entity_id: switch.adaptive_lighting_bedroom
|
||||||
|
transition: 5
|
||||||
|
adapt_brightness: true
|
||||||
|
adapt_color: true
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## adaptive_lighting.set_manual_control
|
||||||
|
|
||||||
|
Marks or unmarks a light as "manually controlled". When a light is marked as manually controlled, Adaptive Lighting will not adjust it until the manual control flag is cleared.
|
||||||
|
Provide a switch in `entity_id`, a list of `lights`, or both.
|
||||||
|
|
||||||
|
### Parameters
|
||||||
|
|
||||||
|
<!-- CODE:START -->
|
||||||
|
<!-- from adaptive_lighting._docs_helpers import generate_set_manual_control_markdown_table -->
|
||||||
|
<!-- print(generate_set_manual_control_markdown_table()) -->
|
||||||
|
<!-- CODE:END -->
|
||||||
|
<!-- OUTPUT:START -->
|
||||||
|
<!-- ⚠️ This content is auto-generated by `markdown-code-runner`. -->
|
||||||
|
| Service data attribute | Description | Required | Type |
|
||||||
|
|:-------------------------|:-----------------------------------------------------------------------------------------------------------------------------------------------------------------------|:-----------|:-----------------------------------------|
|
||||||
|
| `entity_id` | The `entity_id` of the switch in which to (un)mark the light as being `manually controlled`. 📝 | ❌ | list of `entity_id`s |
|
||||||
|
| `lights` | entity_id(s) of lights, if not specified, all lights in the switch are selected. 💡 | ❌ | list of `entity_id`s |
|
||||||
|
| `manual_control` | Whether to add ("true") or remove ("false") all adapted attributes of the light from the "manual_control" list, or the name of an attribute for selective addition. 🔒 | ❌ | bool or one of `['brightness', 'color']` |
|
||||||
|
|
||||||
|
<!-- OUTPUT:END -->
|
||||||
|
|
||||||
|
### Example Usage
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
# Remove manual control from a light (resume adaptation)
|
||||||
|
service: adaptive_lighting.set_manual_control
|
||||||
|
data:
|
||||||
|
entity_id: switch.adaptive_lighting_living_room
|
||||||
|
lights:
|
||||||
|
- light.floor_lamp
|
||||||
|
manual_control: false
|
||||||
|
```
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
# Mark a light as manually controlled (pause adaptation)
|
||||||
|
service: adaptive_lighting.set_manual_control
|
||||||
|
data:
|
||||||
|
entity_id: switch.adaptive_lighting_living_room
|
||||||
|
lights:
|
||||||
|
- light.floor_lamp
|
||||||
|
manual_control: true
|
||||||
|
```
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
# Only pause brightness adaptation, continue color adaptation
|
||||||
|
service: adaptive_lighting.set_manual_control
|
||||||
|
data:
|
||||||
|
entity_id: switch.adaptive_lighting_living_room
|
||||||
|
lights:
|
||||||
|
- light.floor_lamp
|
||||||
|
manual_control: brightness
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## adaptive_lighting.change_switch_settings
|
||||||
|
|
||||||
|
<!-- CODE:START -->
|
||||||
|
<!-- from adaptive_lighting.docs_gen import _transform_readme_links -->
|
||||||
|
<!-- print(_transform_readme_links(include_section("../README.md", "change-switch-settings", strip_heading=True))) -->
|
||||||
|
<!-- CODE:END -->
|
||||||
|
<!-- OUTPUT:START -->
|
||||||
|
<!-- ⚠️ This content is auto-generated by `markdown-code-runner`. -->
|
||||||
|
`adaptive_lighting.change_switch_settings` (new in 1.7.0) Change any of the above configuration options of Adaptive Lighting (such as `sunrise_time` or `prefer_rgb_color`) with a service call directly from your script/automation.
|
||||||
|
|
||||||
|
> [!WARNING]
|
||||||
|
> These settings will **not** be written to your config and will be reset on restart of Home Assistant! You can see the current settings in the `switch.adaptive_lighting_XXX` attributes if `include_config_in_attributes` is enabled.
|
||||||
|
|
||||||
|
| Service data attribute | Required | Description |
|
||||||
|
| --------------------------------------------------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
||||||
|
| `use_defaults` | ❌ | (default: `current` for current settings) Choose from `factory`, `configuration`, or `current` to reset variables not being set with this service call. `current` leaves them as they are, `configuration` resets to initial startup values, `factory` resets to default values listed in the documentation. |
|
||||||
|
| **all other keys** (except the ones in the table below ⚠️) | ❌ | See the table below for disallowed keys. |
|
||||||
|
|
||||||
|
The following keys are disallowed:
|
||||||
|
|
||||||
|
| **DISALLOWED** service data | Description |
|
||||||
|
| --------------------------- | ----------------------------------------------------------------------------------------------- |
|
||||||
|
| `entity_id` | You cannot change the switch's `entity_id`, as it has already been registered. |
|
||||||
|
| `lights` | You may call `adaptive_lighting.apply` with your lights or create a new config instead. |
|
||||||
|
| `name` | You can rename your switch's display name in Home Assistant's UI. |
|
||||||
|
| `interval` | The interval is used only once when the config loads. A config change and restart are required. |
|
||||||
|
|
||||||
|
<!-- OUTPUT:END -->
|
||||||
|
|
||||||
|
### Example Usage
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
# Temporarily change color temperature range
|
||||||
|
service: adaptive_lighting.change_switch_settings
|
||||||
|
data:
|
||||||
|
entity_id: switch.adaptive_lighting_living_room
|
||||||
|
min_color_temp: 2500
|
||||||
|
max_color_temp: 4000
|
||||||
|
```
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
# Override sunrise time for the day
|
||||||
|
service: adaptive_lighting.change_switch_settings
|
||||||
|
data:
|
||||||
|
entity_id: switch.adaptive_lighting_bedroom
|
||||||
|
sunrise_time: "07:00:00"
|
||||||
|
use_defaults: current
|
||||||
|
```
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
# Reset to configuration defaults
|
||||||
|
service: adaptive_lighting.change_switch_settings
|
||||||
|
data:
|
||||||
|
entity_id: switch.adaptive_lighting_living_room
|
||||||
|
use_defaults: configuration
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Events
|
||||||
|
|
||||||
|
Adaptive Lighting also fires events that you can use in automations.
|
||||||
|
|
||||||
|
### adaptive_lighting.manual_control
|
||||||
|
|
||||||
|
Fired when a light is marked as "manually controlled" due to a detected manual change.
|
||||||
|
|
||||||
|
**Event Data:**
|
||||||
|
|
||||||
|
| Attribute | Description |
|
||||||
|
|-----------|-------------|
|
||||||
|
| `entity_id` | The light that was marked as manually controlled |
|
||||||
|
| `switch` | The Adaptive Lighting switch entity |
|
||||||
|
|
||||||
|
### Example Automation
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
automation:
|
||||||
|
- alias: "Log manual control events"
|
||||||
|
trigger:
|
||||||
|
platform: event
|
||||||
|
event_type: adaptive_lighting.manual_control
|
||||||
|
action:
|
||||||
|
- service: notify.mobile_app
|
||||||
|
data:
|
||||||
|
title: "Adaptive Lighting"
|
||||||
|
message: "{{ trigger.event.data.entity_id }} was manually controlled"
|
||||||
|
```
|
||||||
|
|
||||||
|
See [Automation Examples](automation-examples.md) for more use cases.
|
||||||
133
docs/troubleshooting.md
Normal file
133
docs/troubleshooting.md
Normal file
|
|
@ -0,0 +1,133 @@
|
||||||
|
---
|
||||||
|
icon: lucide/life-buoy
|
||||||
|
---
|
||||||
|
|
||||||
|
# Troubleshooting
|
||||||
|
|
||||||
|
This guide covers common issues and their solutions when using Adaptive Lighting.
|
||||||
|
|
||||||
|
## Enable Debug Logging
|
||||||
|
|
||||||
|
<!-- CODE:START -->
|
||||||
|
<!-- from adaptive_lighting.docs_gen import _transform_readme_links -->
|
||||||
|
<!-- print(_transform_readme_links(include_section("../README.md", "troubleshooting-intro", strip_heading=True))) -->
|
||||||
|
<!-- CODE:END -->
|
||||||
|
<!-- OUTPUT:START -->
|
||||||
|
<!-- ⚠️ This content is auto-generated by `markdown-code-runner`. -->
|
||||||
|
Encountering issues? Enable debug logging in your `configuration.yaml`:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
logger:
|
||||||
|
default: warning
|
||||||
|
logs:
|
||||||
|
custom_components.adaptive_lighting: debug
|
||||||
|
```
|
||||||
|
|
||||||
|
After the issue occurs, create a new issue report with the log (`/config/home-assistant.log`).
|
||||||
|
|
||||||
|
For support, use Home Assistant's **Download diagnostics** action on the
|
||||||
|
Adaptive Lighting config entry. The download is an on-demand snapshot of the
|
||||||
|
profile's current switches and currently tracked light targets. It does not
|
||||||
|
refresh group membership or predict targets a disabled profile would use after
|
||||||
|
being enabled. It does not create live sensors; existing switch attributes
|
||||||
|
remain the interface for automations.
|
||||||
|
The reported last adaptation values are the shared manager's latest retained
|
||||||
|
value for each attribute. They can come from different commands and do not
|
||||||
|
represent one sent command or the current desired state.
|
||||||
|
|
||||||
|
<!-- OUTPUT:END -->
|
||||||
|
|
||||||
|
## Common Problems & Solutions
|
||||||
|
|
||||||
|
<!-- CODE:START -->
|
||||||
|
<!-- from adaptive_lighting.docs_gen import _transform_readme_links -->
|
||||||
|
<!-- print(_transform_readme_links(include_section("../README.md", "common-problems", strip_heading=True))) -->
|
||||||
|
<!-- CODE:END -->
|
||||||
|
<!-- OUTPUT:START -->
|
||||||
|
<!-- ⚠️ This content is auto-generated by `markdown-code-runner`. -->
|
||||||
|
#### :bulb: Lights Only Adapt After Reloading
|
||||||
|
|
||||||
|
If lights stop adapting after you turn them on with a physical switch or a Zigbee-bound remote, check the Adaptive Lighting switch's `manual_control` attribute. With `take_over_control: true` and `detect_non_ha_changes: false`, a turn-on without a matching Home Assistant `light.turn_on` call marks the light as manually controlled. Reloading clears that state, but the next physical turn-on can trigger it again.
|
||||||
|
|
||||||
|
To adapt these turn-ons while still detecting later manual changes, enable `detect_non_ha_changes` and leave `manual_control_on_external_turn_on` disabled. This requires the light integration to report its state reliably. If you want Adaptive Lighting to keep adapting regardless of manual changes, disable `take_over_control` along with the options that require it: `detect_non_ha_changes`, `adapt_only_on_bare_turn_on`, and `manual_control_on_external_turn_on`.
|
||||||
|
|
||||||
|
This explains the physical-switch case in [#1056](https://github.com/basnijholt/adaptive-lighting/issues/1056), but not every report in that thread. If the light is not listed in `manual_control`, include diagnostics and debug logs from the failed turn-on when reporting it. Lights returning from `unavailable` after a power cut are a separate case from an `off` to `on` state change.
|
||||||
|
|
||||||
|
#### :bulb: Lights Not Responding or Turning On by Themselves
|
||||||
|
|
||||||
|
Adaptive Lighting sends more commands to lights than a typical human user would. If your light control network is unhealthy, you may experience:
|
||||||
|
|
||||||
|
- Laggy manual commands (e.g., turning lights on or off).
|
||||||
|
- Unresponsive lights.
|
||||||
|
- Home Assistant reporting incorrect light states, causing Adaptive Lighting to inadvertently turn lights back on.
|
||||||
|
|
||||||
|
Most issues that appear to be caused by Adaptive Lighting are actually due to unrelated problems.
|
||||||
|
Addressing these issues will significantly improve your Home Assistant experience.
|
||||||
|
|
||||||
|
In case lights are suddenly turning on by themselves, this is most likely due to the light incorrectly reporting an "on" state to Home Assistant, leading to an undesired Adaptive Lighting action.
|
||||||
|
To prevent adapting in cases *where the state of the light is suddenly "on" and only adapt if there is an associated `light.turn_on` service call*, set `detect_non_ha_changes: false`.
|
||||||
|
|
||||||
|
To keep detecting manual changes to lights that are already on while leaving unmatched `off` to `on` state events unchanged, enable `manual_control_on_external_turn_on`. Matching uses the exact context of the most recently recorded `light.turn_on` call. Some integrations replace or omit that context, so Adaptive Lighting cannot distinguish every physical versus Home Assistant turn-on source.
|
||||||
|
|
||||||
|
#### :signal_strength: WiFi Networks
|
||||||
|
|
||||||
|
Ensure your light bulbs have a strong WiFi connection. If the signal strength is less than -70dBm, the connection may be weak and prone to dropping messages.
|
||||||
|
|
||||||
|
#### :spider_web: Zigbee, Z-Wave, and Other Mesh Networks
|
||||||
|
|
||||||
|
Mesh networks typically require powered devices to act as routers, relaying messages back to the central coordinator (the radio connected to Home Assistant).
|
||||||
|
Most modern lights function as routers, very early models may not.
|
||||||
|
If devices become unresponsive or fail to respond to commands, Adaptive Lighting can exacerbate the issue.
|
||||||
|
Use network maps (available in ZHA, zigbee2mqtt, deCONZ, and ZWaveJS UI) to evaluate your network health.
|
||||||
|
Smart plugs can be an affordable way to add more routers to your network.
|
||||||
|
|
||||||
|
For most Zigbee networks, **using groups is essential for optimal performance**.
|
||||||
|
For example, if you want to use Adaptive Lighting in a hallway with six bulbs, adding each bulb individually to the Adaptive Lighting configuration could overwhelm the network with commands.
|
||||||
|
Instead, create a group in your Zigbee software (not a regular Home Assistant group) and add that single group to the Adaptive Lighting configuration.
|
||||||
|
This sends a single broadcast command to adjust all bulbs, improving response times and keeping the bulbs in sync.
|
||||||
|
|
||||||
|
As a rule of thumb, if you always control lights together (e.g., bulbs in a ceiling fixture), they should be in a Zigbee group.
|
||||||
|
Expose only the group (not individual bulbs) in Home Assistant Dashboards and external systems like Google Home or Apple HomeKit.
|
||||||
|
|
||||||
|
> :warning: **If you control lights individually, `manual_control` cannot behave correctly! If you need to control lights individually as well, use a [Home Assistant Light Group](https://www.home-assistant.io/integrations/group/).**
|
||||||
|
|
||||||
|
When mixing group types, avoid nesting: do not add integration-level groups (e.g., Zigbee2MQTT groups) to a [Home Assistant Light Group](https://www.home-assistant.io/integrations/group/) that is managed by Adaptive Lighting, and do not nest Home Assistant Light Groups inside each other.
|
||||||
|
Adaptive Lighting cannot expand an integration-level group into its member lights, and nested groups make it unpredictable which entity Adaptive Lighting tracks and adapts, which can prevent lights from being adapted at all (see [#1378](https://github.com/basnijholt/adaptive-lighting/issues/1378)).
|
||||||
|
Instead, add the individual light entities or a single Zigbee group directly to the Adaptive Lighting configuration.
|
||||||
|
Also note that bulbs turned on via a Zigbee group broadcast may briefly flash their last (cached) brightness and color before the adapted values arrive; this happens inside the bulbs and cannot be prevented by Home Assistant or Adaptive Lighting.
|
||||||
|
|
||||||
|
#### :rainbow: Light Colors Not Matching
|
||||||
|
|
||||||
|
Bulbs from different manufacturers or models may have varying color temperature specifications. For instance, if you have two Adaptive Lighting configurations—one with only Philips Hue White Ambiance bulbs and another with a mix of Philips Hue White Ambiance and Sengled bulbs—the Philips Hue bulbs may appear to have different color temperatures despite having identical settings.
|
||||||
|
|
||||||
|
To resolve this:
|
||||||
|
|
||||||
|
1. Include only bulbs of the same make and model in a single Adaptive Lighting configuration.
|
||||||
|
2. Rearrange bulbs so that different color temperatures are not visible simultaneously.
|
||||||
|
|
||||||
|
#### :bulb: Bulb-Specific Issues
|
||||||
|
|
||||||
|
These lights are known to exhibit disadvantageous behaviour due to firmware bugs, insufficient functionality, or hardware limitations:
|
||||||
|
|
||||||
|
- [Sengled Z01-A19NAE26](https://www.zigbee2mqtt.io/devices/Z01-A19NAE26.html#sengled-z01-a19nae26)
|
||||||
|
- Unexpected turn-ons: If Adaptive Lighting sends a long transition time (like the default 45 seconds), and the bulb is turned off during that time, it may turn back on after approximately 10 seconds to continue the transition command. Since the bulb is turning itself on, there will be no obvious trigger in Home Assistant or other logs indicating the cause of the light turning on. To fix this, set a much shorter `transition` time, such as 1 second.
|
||||||
|
- Heat sensitivity: Additionally, these bulbs may perform poorly in enclosed "dome" style ceiling lights, particularly when hot. While most LEDs (even non-smart ones) state in the fine print that they do not support working in enclosed fixtures, in practice, more expensive bulbs like Philips Hue generally perform better. To resolve this issue, move the problematic bulbs to open-air fixtures.
|
||||||
|
- Ikea Tradfri bulbs/drivers (and related Ikea smart light products)
|
||||||
|
- Unsupported simultaneous transition of brightness and color: When receiving such a command, they switch the brightness instantly and only transition the color. To get smooth transitions of both brightness and color, enable `separate_turn_on_commands`.
|
||||||
|
- Unresponsiveness during color transitions: No other commands are processed during an ongoing color transition, e.g., turn-off commands are ignored and lights stay on despite being reported as off to Home Assistant. The default config with long transitions thus results in long periods of unresponsiveness. To work around this, disable transitions by setting `transition` to `0`, and increase the adaptation frequency by setting `interval` to a short time, e.g., `15` seconds, to retain the impression of smooth continuous adaptations. Keeping the `initial_transition` is recommended for a smooth fade-in (lights are usually not turned off momentarily after being turned on, in which case a short period of unresponsiveness is tolerable).
|
||||||
|
- [Lonsonho ZB-RGBCW](https://www.zigbee2mqtt.io/devices/ZB-RGBCW.html#lonsonho-zb-rgbcw)
|
||||||
|
- Some Zigbee2MQTT/eWeLight firmware combinations do not turn the bulb on when the initial `light.turn_on` call includes brightness or color, although later adjustments work. Disable `intercept` for affected bulbs.
|
||||||
|
|
||||||
|
<!-- OUTPUT:END -->
|
||||||
|
|
||||||
|
## Getting Help
|
||||||
|
|
||||||
|
If you're still having issues:
|
||||||
|
|
||||||
|
1. Enable debug logging and capture the relevant logs
|
||||||
|
2. Open an issue on [GitHub](https://github.com/basnijholt/adaptive-lighting/issues)
|
||||||
|
3. Include:
|
||||||
|
- Your configuration (redact sensitive info)
|
||||||
|
- Debug logs
|
||||||
|
- Home Assistant version
|
||||||
|
- Description of expected vs actual behavior
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
{
|
{
|
||||||
"name": "Adaptive Lighting",
|
"name": "Adaptive Lighting",
|
||||||
"render_readme": true,
|
"render_readme": true,
|
||||||
"homeassistant": "2024.12.0"
|
"homeassistant": "2025.9.0"
|
||||||
}
|
}
|
||||||
|
|
|
||||||
66
pyproject.toml
Normal file
66
pyproject.toml
Normal file
|
|
@ -0,0 +1,66 @@
|
||||||
|
[build-system]
|
||||||
|
requires = ["hatchling"]
|
||||||
|
build-backend = "hatchling.build"
|
||||||
|
|
||||||
|
[project]
|
||||||
|
name = "adaptive-lighting"
|
||||||
|
version = "1.32.0"
|
||||||
|
description = "Automatically adjust brightness and color of lights based on the sun position"
|
||||||
|
readme = "README.md"
|
||||||
|
license = "Apache-2.0"
|
||||||
|
requires-python = ">=3.12"
|
||||||
|
|
||||||
|
[dependency-groups]
|
||||||
|
docs = [
|
||||||
|
"astral",
|
||||||
|
"homeassistant",
|
||||||
|
"markdown-code-runner>=2.7.0",
|
||||||
|
"markdown-gfm-admonition",
|
||||||
|
"pandas",
|
||||||
|
"shinylive",
|
||||||
|
"tabulate",
|
||||||
|
"ulid-transform",
|
||||||
|
"voluptuous",
|
||||||
|
"zensical",
|
||||||
|
]
|
||||||
|
dev = [
|
||||||
|
"mypy",
|
||||||
|
"pre-commit",
|
||||||
|
"ruff",
|
||||||
|
]
|
||||||
|
|
||||||
|
[tool.hatch.build.targets.wheel]
|
||||||
|
packages = ["custom_components/adaptive_lighting"]
|
||||||
|
|
||||||
|
[tool.ruff]
|
||||||
|
target-version = "py312"
|
||||||
|
line-length = 88
|
||||||
|
|
||||||
|
[tool.ruff.lint]
|
||||||
|
select = [
|
||||||
|
"E", # pycodestyle errors
|
||||||
|
"W", # pycodestyle warnings
|
||||||
|
"F", # Pyflakes
|
||||||
|
"I", # isort
|
||||||
|
"UP", # pyupgrade
|
||||||
|
"RUF", # Ruff-specific rules
|
||||||
|
"B", # flake8-bugbear
|
||||||
|
"C4", # flake8-comprehensions
|
||||||
|
"SIM", # flake8-simplify
|
||||||
|
]
|
||||||
|
ignore = [
|
||||||
|
"E501", # line too long (handled by formatter)
|
||||||
|
]
|
||||||
|
|
||||||
|
[tool.ruff.lint.isort]
|
||||||
|
known-first-party = ["adaptive_lighting"]
|
||||||
|
|
||||||
|
[tool.mypy]
|
||||||
|
python_version = "3.12"
|
||||||
|
warn_return_any = true
|
||||||
|
warn_unused_configs = true
|
||||||
|
ignore_missing_imports = true
|
||||||
|
|
||||||
|
[tool.pytest.ini_options]
|
||||||
|
testpaths = ["tests"]
|
||||||
|
asyncio_mode = "auto"
|
||||||
2
scripts/develop
Normal file → Executable file
2
scripts/develop
Normal file → Executable file
|
|
@ -17,4 +17,4 @@ fi
|
||||||
export PYTHONPATH="${PYTHONPATH}:${PWD}/custom_components"
|
export PYTHONPATH="${PYTHONPATH}:${PWD}/custom_components"
|
||||||
|
|
||||||
# Start Home Assistant
|
# Start Home Assistant
|
||||||
hass --config "${PWD}/config" --debug
|
uv run hass --config "${PWD}/config" --debug
|
||||||
|
|
|
||||||
2
scripts/lint
Normal file → Executable file
2
scripts/lint
Normal file → Executable file
|
|
@ -4,4 +4,4 @@ set -e
|
||||||
|
|
||||||
cd "$(dirname "$0")/.."
|
cd "$(dirname "$0")/.."
|
||||||
|
|
||||||
pre-commit run --all-files
|
uv run pre-commit run --all-files
|
||||||
|
|
|
||||||
|
|
@ -5,13 +5,45 @@ cd "$(dirname "$0")/.."
|
||||||
# Remove mypy-dev from requirements_test.txt since the maintainer deletes old versions from PyPI.
|
# Remove mypy-dev from requirements_test.txt since the maintainer deletes old versions from PyPI.
|
||||||
# We'll install the latest version separately below.
|
# We'll install the latest version separately below.
|
||||||
# See: https://github.com/cdce8p/mypy-dev/issues/62
|
# See: https://github.com/cdce8p/mypy-dev/issues/62
|
||||||
sed -i '/^mypy-dev/d' core/requirements_test.txt
|
grep -v '^mypy-dev' core/requirements_test.txt > core/requirements_test.txt.tmp && mv core/requirements_test.txt.tmp core/requirements_test.txt
|
||||||
|
|
||||||
uv pip install -r core/requirements.txt
|
uv pip install -r core/requirements.txt
|
||||||
uv pip install -r core/requirements_test.txt
|
uv pip install -r core/requirements_test.txt
|
||||||
|
|
||||||
|
# HA 2026.4+ imports aiohasupervisor from tests/components/conftest.py
|
||||||
|
# but pins it in requirements_test_all.txt instead of requirements_test.txt.
|
||||||
|
# HA 2026.8+ removed requirements_test_all.txt (home-assistant/core#171530);
|
||||||
|
# the pin lives in requirements_all.txt there.
|
||||||
|
aiohasupervisor_req=""
|
||||||
|
if [[ -f core/requirements_test_all.txt ]]; then
|
||||||
|
aiohasupervisor_req="$(grep -m1 '^aiohasupervisor' core/requirements_test_all.txt || true)"
|
||||||
|
elif [[ -f core/requirements_all.txt ]]; then
|
||||||
|
aiohasupervisor_req="$(grep -m1 '^aiohasupervisor' core/requirements_all.txt || true)"
|
||||||
|
fi
|
||||||
|
if [[ -n "${aiohasupervisor_req}" ]]; then
|
||||||
|
uv pip install "${aiohasupervisor_req}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# HA 2026.4+ validates service translations through translations/en.json.
|
||||||
|
# The core checkout keeps English source strings in strings.json, so seed en.json
|
||||||
|
# in the temporary CI checkout before tests load integrations.
|
||||||
|
for strings_file in core/homeassistant/components/*/strings.json; do
|
||||||
|
[[ -f "${strings_file}" ]] || continue
|
||||||
|
translations_dir="$(dirname "${strings_file}")/translations"
|
||||||
|
en_translation="${translations_dir}/en.json"
|
||||||
|
if [[ ! -f "${en_translation}" ]]; then
|
||||||
|
mkdir -p "${translations_dir}"
|
||||||
|
cp "${strings_file}" "${en_translation}"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
uv pip install -e core/
|
uv pip install -e core/
|
||||||
uv pip install ulid-transform # this is in Adaptive-lighting's manifest.json
|
uv pip install ulid-transform # this is in Adaptive-lighting's manifest.json
|
||||||
uv pip install $(python test_dependencies.py)
|
uv pip install $(python3 test_dependencies.py)
|
||||||
|
|
||||||
# Install the latest mypy-dev (not pinned since old versions get deleted from PyPI)
|
# Install the latest mypy-dev (not pinned since old versions get deleted from PyPI)
|
||||||
uv pip install --upgrade mypy-dev
|
uv pip install --upgrade mypy-dev
|
||||||
|
|
||||||
|
# Workaround for aiodns/pycares compatibility issue
|
||||||
|
# See: https://github.com/aio-libs/aiodns/issues/214
|
||||||
|
uv pip install --upgrade aiodns
|
||||||
|
|
|
||||||
|
|
@ -10,9 +10,12 @@ fi
|
||||||
pip install \
|
pip install \
|
||||||
colorlog \
|
colorlog \
|
||||||
pip \
|
pip \
|
||||||
ruff
|
ruff \
|
||||||
|
uv
|
||||||
|
|
||||||
uv venv --python 3.13
|
pip cache purge
|
||||||
|
|
||||||
|
uv venv --clear --python 3.14.2
|
||||||
./scripts/setup-dependencies
|
./scripts/setup-dependencies
|
||||||
./scripts/setup-symlinks
|
./scripts/setup-symlinks
|
||||||
uv run pre-commit install-hooks
|
uv run pre-commit install-hooks
|
||||||
|
|
|
||||||
|
|
@ -2,12 +2,17 @@
|
||||||
set -ex
|
set -ex
|
||||||
cd "$(dirname "$0")/.."
|
cd "$(dirname "$0")/.."
|
||||||
|
|
||||||
|
# '-n' keeps a re-run idempotent: without it 'ln -fs' follows an existing
|
||||||
|
# symlink and creates the new link *inside* the target directory, leaving a
|
||||||
|
# stray 'tests/tests' and 'custom_components/adaptive_lighting/adaptive_lighting'
|
||||||
|
# in the working tree.
|
||||||
|
|
||||||
# Link custom components
|
# Link custom components
|
||||||
cd core/homeassistant/components/
|
cd core/homeassistant/components/
|
||||||
ln -fs ../../../custom_components/adaptive_lighting adaptive_lighting
|
ln -fsn ../../../custom_components/adaptive_lighting adaptive_lighting
|
||||||
cd -
|
cd -
|
||||||
|
|
||||||
# Link tests
|
# Link tests
|
||||||
cd core/tests/components/
|
cd core/tests/components/
|
||||||
ln -fs ../../../tests/ adaptive_lighting
|
ln -fsn ../../../tests/ adaptive_lighting
|
||||||
cd -
|
cd -
|
||||||
|
|
|
||||||
11
scripts/update-generated-content
Executable file
11
scripts/update-generated-content
Executable file
|
|
@ -0,0 +1,11 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
set -ex
|
||||||
|
|
||||||
|
cd "$(dirname "$0")/.."
|
||||||
|
|
||||||
|
uv sync --group docs
|
||||||
|
uv pip install -e .
|
||||||
|
uv run python docs/run_markdown_code_runner.py
|
||||||
|
uv run python .github/update-services.py
|
||||||
|
uv run python .github/update-strings.py
|
||||||
148
scripts/update-test-matrix.py
Executable file
148
scripts/update-test-matrix.py
Executable file
|
|
@ -0,0 +1,148 @@
|
||||||
|
#!/usr/bin/env python3
|
||||||
|
"""Update the pytest workflow matrix with latest HA Core versions.
|
||||||
|
|
||||||
|
This script fetches the latest Home Assistant Core release versions from GitHub
|
||||||
|
and updates the pytest workflow matrix to test against them.
|
||||||
|
|
||||||
|
Usage:
|
||||||
|
python scripts/update-test-matrix.py
|
||||||
|
"""
|
||||||
|
|
||||||
|
from __future__ import annotations
|
||||||
|
|
||||||
|
import json
|
||||||
|
import re
|
||||||
|
import urllib.request
|
||||||
|
from pathlib import Path
|
||||||
|
|
||||||
|
# Keep the latest stable release month and the preceding 12 monthly release lines.
|
||||||
|
# Update this explicit floor when dropping another supported release month.
|
||||||
|
MIN_VERSION = (2025, 9)
|
||||||
|
|
||||||
|
|
||||||
|
def get_ha_core_versions() -> list[str]:
|
||||||
|
"""Fetch latest stable HA Core versions from GitHub API."""
|
||||||
|
all_tags = []
|
||||||
|
page = 1
|
||||||
|
|
||||||
|
# Paginate through all tags to ensure we get older versions too
|
||||||
|
while True:
|
||||||
|
url = f"https://api.github.com/repos/home-assistant/core/tags?per_page=100&page={page}"
|
||||||
|
with urllib.request.urlopen(url) as response:
|
||||||
|
tags = json.loads(response.read().decode())
|
||||||
|
|
||||||
|
if not tags:
|
||||||
|
break
|
||||||
|
|
||||||
|
all_tags.extend(tags)
|
||||||
|
|
||||||
|
# Check if we've gone far enough back
|
||||||
|
# Stop if we've found versions older than our minimum
|
||||||
|
oldest_in_page = None
|
||||||
|
for t in tags:
|
||||||
|
if re.match(r"^\d+\.\d+\.\d+$", t["name"]):
|
||||||
|
parts = t["name"].split(".")
|
||||||
|
year, month = int(parts[0]), int(parts[1])
|
||||||
|
if oldest_in_page is None or (year, month) < oldest_in_page:
|
||||||
|
oldest_in_page = (year, month)
|
||||||
|
|
||||||
|
if oldest_in_page and oldest_in_page < MIN_VERSION:
|
||||||
|
break
|
||||||
|
|
||||||
|
page += 1
|
||||||
|
if page > 10: # Safety limit
|
||||||
|
break
|
||||||
|
|
||||||
|
# Filter to stable releases only (no beta/rc)
|
||||||
|
stable_pattern = re.compile(r"^\d+\.\d+\.\d+$")
|
||||||
|
versions = [t["name"] for t in all_tags if stable_pattern.match(t["name"])]
|
||||||
|
|
||||||
|
# Group by minor version and get latest patch for each
|
||||||
|
latest: dict[str, str] = {}
|
||||||
|
for version in versions:
|
||||||
|
parts = version.split(".")
|
||||||
|
year, month = int(parts[0]), int(parts[1])
|
||||||
|
# Only include versions >= MIN_VERSION
|
||||||
|
if (year, month) >= MIN_VERSION:
|
||||||
|
minor_key = f"{parts[0]}.{parts[1]}"
|
||||||
|
# Keep the one with highest patch number
|
||||||
|
if minor_key not in latest:
|
||||||
|
latest[minor_key] = version
|
||||||
|
else:
|
||||||
|
current_patch = int(latest[minor_key].split(".")[2])
|
||||||
|
new_patch = int(parts[2])
|
||||||
|
if new_patch > current_patch:
|
||||||
|
latest[minor_key] = version
|
||||||
|
|
||||||
|
# Sort by version
|
||||||
|
return sorted(latest.values(), key=lambda v: [int(x) for x in v.split(".")])
|
||||||
|
|
||||||
|
|
||||||
|
def get_python_version(ha_version: str) -> str:
|
||||||
|
"""Determine Python version based on HA Core version."""
|
||||||
|
parts = ha_version.split(".")
|
||||||
|
year, month = int(parts[0]), int(parts[1])
|
||||||
|
# 2025.9 through 2026.2 use Python 3.13.
|
||||||
|
# 2026.3+ uses Python 3.14.
|
||||||
|
if year > 2026 or (year == 2026 and month >= 3):
|
||||||
|
return "3.14.2"
|
||||||
|
return "3.13"
|
||||||
|
|
||||||
|
|
||||||
|
def generate_matrix_yaml(versions: list[str]) -> str:
|
||||||
|
"""Generate the YAML matrix include block."""
|
||||||
|
lines = []
|
||||||
|
for version in versions:
|
||||||
|
python_ver = get_python_version(version)
|
||||||
|
lines.append(f' - core-version: "{version}"')
|
||||||
|
lines.append(f' python-version: "{python_ver}"')
|
||||||
|
# Add dev version
|
||||||
|
lines.append(' - core-version: "dev"')
|
||||||
|
lines.append(' python-version: "3.14.2"')
|
||||||
|
return "\n".join(lines)
|
||||||
|
|
||||||
|
|
||||||
|
def update_workflow_file(workflow_path: Path, new_matrix: str) -> bool:
|
||||||
|
"""Update the workflow file with new matrix. Returns True if changed."""
|
||||||
|
content = workflow_path.read_text()
|
||||||
|
|
||||||
|
# Pattern to match the matrix include block
|
||||||
|
# Matches from "include:" to just before " steps:"
|
||||||
|
pattern = re.compile(
|
||||||
|
r"( include:\n)(.*?)( steps:)",
|
||||||
|
re.DOTALL,
|
||||||
|
)
|
||||||
|
|
||||||
|
def replacer(match: re.Match) -> str:
|
||||||
|
return f"{match.group(1)}{new_matrix}\n{match.group(3)}"
|
||||||
|
|
||||||
|
new_content = pattern.sub(replacer, content)
|
||||||
|
|
||||||
|
if new_content == content:
|
||||||
|
return False
|
||||||
|
|
||||||
|
workflow_path.write_text(new_content)
|
||||||
|
return True
|
||||||
|
|
||||||
|
|
||||||
|
def main() -> None:
|
||||||
|
"""Main entry point."""
|
||||||
|
print("Fetching latest HA Core versions...") # noqa: T201
|
||||||
|
versions = get_ha_core_versions()
|
||||||
|
print(f"Found {len(versions)} versions: {', '.join(versions)}") # noqa: T201
|
||||||
|
|
||||||
|
print("\nGenerating matrix...") # noqa: T201
|
||||||
|
matrix = generate_matrix_yaml(versions)
|
||||||
|
print(matrix) # noqa: T201
|
||||||
|
|
||||||
|
workflow_path = Path(__file__).parent.parent / ".github/workflows/pytest.yaml"
|
||||||
|
print(f"\nUpdating {workflow_path}...") # noqa: T201
|
||||||
|
|
||||||
|
if update_workflow_file(workflow_path, matrix):
|
||||||
|
print("Workflow updated successfully!") # noqa: T201
|
||||||
|
else:
|
||||||
|
print("No changes needed.") # noqa: T201
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
|
|
@ -7,6 +7,10 @@ deps = defaultdict(list)
|
||||||
components, packages = [], []
|
components, packages = [], []
|
||||||
|
|
||||||
requirements = Path("core") / "requirements_test_all.txt"
|
requirements = Path("core") / "requirements_test_all.txt"
|
||||||
|
if not requirements.exists():
|
||||||
|
# Removed from HA core in 2026.8 (home-assistant/core#171530); the same
|
||||||
|
# per-integration annotations live in requirements_all.txt.
|
||||||
|
requirements = Path("core") / "requirements_all.txt"
|
||||||
|
|
||||||
with requirements.open() as f:
|
with requirements.open() as f:
|
||||||
lines = f.readlines()
|
lines = f.readlines()
|
||||||
|
|
|
||||||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue