scrobik
(scrobik)
21 Sierpień 2025 12:31
1
Witam. W poniższym kodzie Czujka podczerwieni załącza światło na 30 sekund. Nie potrafię dodać kodu, żeby ta czujka załączała to światło w godzinach od 20 do 6 rano. I żeby to działało mimo braku połączenia z HA. Dziękuję z góry za pomoc
> binary_sensor:
> - platform: gpio
> name: "Magazyn wej. czujnik ruchu"
>
> pin:
> number: GPIO25
> mode:
> input: true
> pullup: true
>
>
> on_press:
> - switch.turn_on: Magazyn_lampa
> - delay: 30s
> - switch.turn_off: Magazyn_lampa
> switch:
> - platform: gpio
> name: "Magazyn Załączenie światła"
> device_class: switch
> id: Magazyn_lampa
> pin:
> # Use pin number 7
> number: GPIO22
> # One of INPUT or OUTPUT
> mode:
> output: true
> inverted: true
> restore_mode: RESTORE_DEFAULT_OFF
> # restore_mode: ALWAYS_OFF
angler
(Cezary.K)
21 Sierpień 2025 12:54
2
Proponuję abyś umieścił cały kod YAML dla tego urządzenia. Na początek, to skądś ESP musi wiedzieć jaki jest aktualny czas. Jeśli nie będzie połączenia z HA, jako źródła danych o aktualnym czasie, to musisz wskazać alternatywne.
scrobik
(scrobik)
22 Sierpień 2025 14:46
3
Dodałem taki kod component time ale to nie działa i pytanie czemu?
time:
- platform: sntp
id: sntp_time
timezone: "Europe/Warsaw"
on_time_sync:
then:
- logger.log: "Synchronized sntp clock"
on_time:
- seconds: 0
minutes: /1
then:
- lambda: |-
int t_now = parse_number<int>(id(sntp_time).now().strftime("%H%M")).value();
if ((t_now >= 2200) || ( (t_now <= 700) ) ){
id(czujnik_ruchu).publish_state(false);
} else {
id(czujnik_ruchu).publish_state(true);
}
boskikak
(Michał K.)
22 Sierpień 2025 16:02
4
Rzucił mi się w oczy brak wcięcia pod on_time. Czuje że wziąłeś gotowca lub chat gpt ci wypluł ten kod. Ja bym to ugryzł zupełnie inaczej czyli tak żebym przede wszystkim sam zrozumiał działanie tego kodu. Stworzył bym switch lub binary sensor który byłby włączany o tych godzinach co chcesz i jednocześnie byłby warunkiem uruchomienia akcji po wykryciu ruchu.
2 polubienia
MariuszAK
(mariuszak)
22 Sierpień 2025 17:52
5
A niby skąd miałby wiedzieć kiedy ma się włączyć, kiedy jest “ten czas”, skoro nie wie która jest godzina ? (przecież z założenia ma działać jakby nie było połączenia z HA).
Powinien najpierw zapewnić dostęp do aktualnego czasu …
szopen
22 Sierpień 2025 18:42
6
akurat to jest załatwione
1 polubienie
Piter
(Piter)
22 Sierpień 2025 18:51
7
Mam gniazdko które bierze czas z internetu, mam zrobione to tak:
# TIME FROM SNTP
time:
- platform: sntp
id: times
## time conditions https://esphome.io/components/time.html?highlight=clock#base-time-config
## on time condition supported formats https://crontab.guru/
on_time:
# od 0 do 1 cykl 10/20
- seconds: 0
minutes: 0,30
hours: 0-1
days_of_week: MON-SUN
then:
- switch.turn_on: relay
- seconds: 0
minutes: 13,40
hours: 0-1
days_of_week: MON-SUN
then:
- lambda: |-
if (!id(always_on).state) {
id(relay).turn_off();
}
servers: 0.pool.ntp.org
2 polubienia
scrobik
(scrobik)
17 Wrzesień 2025 08:34
8
Rozwiązałem to Czujnik ruchu załącza przekaźnik w godzinach od 20.00 do 7.00. :
> switch:
> - platform: gpio
> name: "Magazyn Załączenie światła"
> device_class: switch
> id: Magazyn_lampa
> pin:
> # Use pin number 7
> number: GPIO22
> # One of INPUT or OUTPUT
> mode:
> output: true
> inverted: true
> restore_mode: RESTORE_DEFAULT_OFF
binary_sensor:
- platform: template
name: "Template Sensor"
id: template_sens
- platform: gpio
name: "Magazyn wej. czujnik ruchu"
id: aktyw_cz
pin:
number: GPIO25
mode:
input: true
pullup: true
#filters:
# - delayed_on: 100ms
# - delayed_off: 100ms
on_press:
then:
- if:
condition:
binary_sensor.is_on: template_sens
then:
- script.execute: pomp3min
# - switch.turn_on: Magazyn_lampa
#- delay: 30s
#- switch.turn_off: Magazyn_lampa
else:
- switch.turn_off: Magazyn_lampa
time:
- platform: sntp
id: sntp_time
timezone: "Europe/Warsaw"
servers: 0.pool.ntp.org
on_time_sync:
then:
- logger.log: "Synchronized sntp clock"
on_time:
- seconds: 0
minutes: /1
then:
- lambda: |-
int t_now = parse_number<int>(id(sntp_time).now().strftime("%H%M")).value();
if ((t_now >= 2000) || ( (t_now <= 700) ) ){
id(template_sens).publish_state(true);
} else {
id(template_sens).publish_state(false);
}
script:
- id: pomp3min
then:
- switch.turn_on: Magazyn_lampa
- delay: 30s
- switch.turn_off: Magazyn_lampa
pozdrawiam
1 polubienie