Witam.
Na ESPHome mam zrobioną lampę nad akwarium (zwykłe światło monochromatyczne - jeden kanał).
Chciał bym zrobić automatyzację wschodu z zachodu słońca o ustalonej porze, przez określony czas.
Samo włącz/wyłącz o zadanej godzinie potrafię zrobić.
Ale nie wiem jak zrobić, aby przez określony czas, lampa pomału rozświetlała się do ustawionej na jej suwaku jasności, i podobnie gasła.
@MarCiu poszukaj na forum - lupka w prawym górnym rogu, do wyszukania słowo: akwarium.
Dzięki. Jakoś przeoczyłem.
Edit:
Proszę podpowiedzcie mi jeszcze jedno.
Mam w ESP skrypt z pętlą zwiększającą stopniowo jasność.
script:
- id: light_on
then:
- repeat:
count: 10
then:
- light.dim_relative:
id: lampa
relative_brightness: 10%
transition_length: 1s
- delay: 1s
Czyli 10 literacji zwiększających jasność od 0 do 100% z krokiem 10% co 1sek.
A powiedzmy chciał bym aby pętla była: zwiększ do: X jasnośći
Jest pętla:
then:
- while:
condition:
....
then:
- light.dim_relative:
id: lampa
relative_brightness: 10%
transition_length: 1s
- delay: 1s
Jak ustawić warunek condition aby wykonywała się do zadanego X jasności?
Wiem, ze mogę dać od razu brightness X% i transition_length: Ys. Ale chciałbym zrozumieć tę pętle.
A i tak ładniej jak pasek nie skacze od razu do 100% a lampa dopiero z czasem się rozjaśnia/ściemnia.
Edit 2:
Jak by ktoś szukał podobnego rozwiązania, to zrobiłem to, tak dla warunku condition:
- lambda: |-
int val = int(id(lampa)->current_values.get_brightness() * 100); # pobierz obecną jasność
int max = int(id(max_brig)); # pobierz wartość max ze zmiennej
if ( val >= max - 1 ) { # porównaj czy już równe obie wartości
return false;
} else {
return true;
}
A tak obliczam ile ma trwać długość przejścia i delay, aby uzyskać rozświetlenie przez wyznaczony czas:
- lambda: |-
id(time_przejscia) = (int(id(sun_time)) * 60 * 1000) / int(id(max_brig)); # czas / ilość potrzebnych kroków wynik w ms
ESP_LOGD("custom", "Value: %d", id(time_przejscia)); # daj wynik na konsolę dla kontroli