Po dodaniu warunku czasu automatyzacja nie działa

Witam postanowiłem napisać automatyzację bezpośrednio w HA i tu zonk.

Wygląda to tak:

id: '1645531249108'
alias: Swiatlo dzien lazienka
description: Wlacza dzienne swiatlo w lazience
trigger:
  - type: motion
    platform: device
    device_id: fe7cdbe31b34faf8cec011f52cc2c22b
    entity_id: binary_sensor.lazienka_czujnik_ruchu_0x00158d0004ac076b_occupancy
    domain: binary_sensor
    for:
      hours: 0
      minutes: 6
      seconds: 30
condition:
  - condition: time
    after: '05:00'
    before: '23:00'
action:
  - type: turn_on
    device_id: cf901848e50c8447a3b0719867e7f730
    entity_id: light.yeelight_ceil26_0x159019f7_daylight
    domain: light
mode: restart

id: '1645535426010'
alias: Swiatlo noc lazienka
description: Wlacza nocne swiatlo w lazience
trigger:
  - type: motion
    platform: device
    device_id: fe7cdbe31b34faf8cec011f52cc2c22b
    entity_id: binary_sensor.lazienka_czujnik_ruchu_0x00158d0004ac076b_occupancy
    domain: binary_sensor
    for:
      hours: 0
      minutes: 6
      seconds: 30
condition:
  - condition: time
    after: '23:00'
    before: '05:00'
action:
  - type: turn_on
    device_id: cf901848e50c8447a3b0719867e7f730
    entity_id: light.yeelight_ceil26_0x159019f7_nightlight
    domain: light
mode: restart

Gdzie jest błąd, ja go nie widzę, a automatyzacja nie działa.

Mam wrażenie, że HA nie ogarnie przedziału 23-05. to są dwa osobne dni. Pokombinuj 00-05 i 23-23:59/00

Ok teraz wygląda to tak,

  1. automatyzacja dzienna.
id: '1645531249108'
alias: Swiatlo dzien lazienka
description: Wlacza dzienne swiatlo w lazience
trigger:
  - type: motion
    platform: device
    device_id: fe7cdbe31b34faf8cec011f52cc2c22b
    entity_id: binary_sensor.lazienka_czujnik_ruchu_0x00158d0004ac076b_occupancy
    domain: binary_sensor
    for:
      hours: 0
      minutes: 6
      seconds: 30
condition:
  - condition: time
    after: '05:00'
    before: '23:00'
action:
  - type: turn_on
    device_id: cf901848e50c8447a3b0719867e7f730
    entity_id: light.yeelight_ceil26_0x159019f7_daylight
    domain: light
mode: restart

  1. automatyzacja nocna
id: '1645535426010'
alias: Swiatlo noc lazienka
description: Wlacza nocne swiatlo w lazience
trigger:
  - type: motion
    platform: device
    device_id: fe7cdbe31b34faf8cec011f52cc2c22b
    entity_id: binary_sensor.lazienka_czujnik_ruchu_0x00158d0004ac076b_occupancy
    domain: binary_sensor
    for:
      hours: 0
      minutes: 6
      seconds: 30
condition:
  - condition: time
    after: '23:00'
    before: '23:59'
  - condition: time
    after: '00:55'
    before: '05:00'
action:
  - type: turn_on
    device_id: cf901848e50c8447a3b0719867e7f730
    entity_id: light.yeelight_ceil26_0x159019f7_nightlight
    domain: light
mode: restart

Popraw condition, bo tak się nie zapisuje złożonych Automation Conditions - Home Assistant
Ponadto chyba masz zły czas after w wieczornym.

To są dwie oddzielne automatyzacje i właśnie nie chcą działać. Nie to że działają niepoprawnie, one w ogóle nie działają. Nie jest ważne czy włączone są obie ta “dzienna” też nie działa. Co dziwne układ z Node-Red działa. Więc urządzenia wejściowe i wyjściowe są ok. Jak wybiorę uruchom akcję to światło się włącza.

Tak. Masz dwie osobne automatyzacje. Ale w nocnej masz od czapy conditiony, bez warunku między nimi. Sprawdź definiowaniu conditionów z “or”.

A to dziwne, ponieważ zapis wyeksportowałem z “pokaż ślad” - “Automation config”

Waliduje Ci się ten config?

Ok, domyślnie taki zapis to jest logiczny AND conditionów. Więc nie możesz mieć na raz godziny 23-00 i 00-05.
Przepisz to zgodnie z Conditions - Home Assistant

@Farenza
Zgodnie z dokumentacją:
the condition window is from 3pm to 2am.:

 condition: time
  # At least one of the following is required.
  after: "15:00:00"
  before: "02:00:00"

a Ty masz

 after: '23:00'

czyli po 23 minutach i powinno byc w " " a nie w ’ '.

Fragment dokumentacji (tak wiem, to z innego kawałka dokumentacji, ale ten format obowiązuje raczej wszędzie w automatyzacjach)
“A string that represents a time to fire on each day. Can be specified as HH:MM or HH:MM:SS. If the seconds are not specified, :00 will be used.”
natomiast kwestia cudzysłowów jest taka, że są zamienne z apostrofami (ale oba rodzaje są konieczne do zagnieżdżania).

I odnośnie przekraczania północy (nie trzeba definiować 2 warunków o ile podamy “początek i koniec” tj. oba końce zakresu, tylko jeśli podajemy jeden z nich, to drugim staje się północ)
“Time condition windows can span across the midnight threshold if both after and before keys are used. In the example above, the condition window is from 3pm to 2am.”

Ok już się porobiło, może od podstaw. Dlaczego to nie działa, zapis jest taki:

id: '1645531249108'
alias: Swiatlo dzien lazienka
description: Wlacza dzienne swiatlo w lazience
trigger:
  - type: motion
    platform: device
    device_id: fe7cdbe31b34faf8cec011f52cc2c22b
    entity_id: binary_sensor.lazienka_czujnik_ruchu_0x00158d0004ac076b_occupancy
    domain: binary_sensor
    for:
      hours: 0
      minutes: 6
      seconds: 30
condition:
  - condition: time
    after: '05:00'
    before: '23:00'
action:
  - type: turn_on
    device_id: cf901848e50c8447a3b0719867e7f730
    entity_id: light.yeelight_ceil26_0x159019f7_daylight
    domain: light
mode: restart

Jak robię taki to automatycznie kasuje dodane zera i jest tak

condition: time
after: '05:00:00'
before: '23:00'

:exploding_head:

PS.
teraz to już automatyzacja w HA nie działa w ogóle
PS 2.
poleciał restart

Niedoróbka edytora GUI (nie powinien nic kasować), ale miałeś dobrze, te zera nie są potrzebne.

W automatyzacjach masz taki guzik “debuguj automatyzację” (ikona timera do jajek :P) i korzystając z niego pewnie dowiesz się dlaczego nie działa.

Po restarcie HA pokazuje że czujnik wykrył ruch, ale światło się nie zapala. Zobaczę co wypluje ten do jajek :P.

Zrezygnowałem z czasu, uprościłem na max i nic to nie dało.
Oto wpis,

id: '1645531249108'
alias: Swiatlo dzien lazienka
description: Wlacza dzienne swiatlo w lazience
trigger:
  - type: motion
    platform: device
    device_id: fe7cdbe31b34faf8cec011f52cc2c22b
    entity_id: binary_sensor.lazienka_czujnik_ruchu_0x00158d0004ac076b_occupancy
    domain: binary_sensor
    for:
      hours: 0
      minutes: 6
      seconds: 30
condition: []
action:
  - type: turn_on
    device_id: cf901848e50c8447a3b0719867e7f730
    entity_id: light.yeelight_ceil26_0x159019f7_daylight
    domain: light
    brightness_pct: 50
mode: single

Zrobiłem to prostszym sposobem i teraz to już kuriozum


Iiii… niespodzianka włącza się światło nocne

Aleeee tu znowu niespodzianka, w kodzie tego nie widzę.

Co za … no ten tego.

Takie cosie wychodzą z gotowców w edytorze graficznym.

Teraz coś z “palca” w edytorze graficznym.
nr4
Niby światło włączone a się nie świeci.
nr5
Kod prosty z “palca” w edytorze graficznym.

Moje światło dzień / noc

alias: 'Prysznic Auto on/off  '
description: ''
trigger:
  - platform: state
    entity_id: binary_sensor.pir_prysznic_occupancy
    to: 'on'
condition: []
action:
  - choose:
      - conditions:
          - condition: time
            after: '07:00'
            before: '22:00'
        sequence:
          - service: light.turn_on
            data:
              brightness_pct: 100
            entity_id: light.showerroom
          - wait_for_trigger:
              - platform: state
                entity_id: binary_sensor.pir_prysznic_occupancy
                to: 'off'
                for: '00:10:00'
          - service: light.turn_off
            target:
              entity_id: light.showerroom
            data: {}
      - conditions:
          - condition: time
            after: '22:00'
            before: '07:00'
        sequence:
          - service: light.turn_on
            data:
              brightness_pct: 5
            target:
              entity_id: light.showerroom
          - wait_for_trigger:
              - platform: state
                entity_id: binary_sensor.pir_prysznic_occupancy
                to: 'off'
            timeout: '00:10:00'
            continue_on_timeout: false
          - service: light.turn_on
            target:
              entity_id: light.showerroom
            data:
              transition: 60
              brightness_pct: 0
    default: []
mode: restart

a co to jest np. to?

bo mam wrażenie, że po prostu naklikałeś za dużo (wystarczy wybrać tylko właściwą encję światła) a intryguje mnie to bo na początku wątku miałeś

i równocześnie w innej automatyzacji

To jest ta sama lampa, ale ma różne typy światła. idealna do łazienki. W nocy ma bardzo stłumione światło. O ile Node-Red rozróżnia co jest co to HA jak widać. W zamian w NR mam problem z przedłużeniem trwania sygnału ON, Czujniki Xiaomi są specyficzne? Wysyłają sygnał off po 1,5 min od utraty wykrywanego ruchu i nie można tego zmienić, a są miejsca gdzie czujnik nic nie widzi i się nerwówka zaczyna jak światło gaśnie. Więc szukam sposobu jak to obejść, w NR niby taki sposób znalazłem ale nie do końca działa jak trzeba.

A to OK, bo już podejrzewałem, że masz błędny id urządzenia.

Ok “znalazłem” (pod wpływem żony) trochę czasu i postanowiłem popastwić się nad automatyką łazienki.
Obejrzałem lekcję Artura i wyciągnąłem z niej (a tak mi się przynajmniej wydawało) to co mi potrzeba. Doszedłem do ściany i niestety ponownie włącznik sobie, czujka ruchu sobie.
Co robię nie tak, może czyjeś życzliwe oko zobaczy coś czego ja nie widzę?


Włacznik i czujnik ruchu w łazience.json (16,9 KB)
Trochę to zmodyfikowałem i wygląda że funkcja nie zmienia wartości zmiennej.

Wlącznik i czujnik ruchu łazienka.json (14,9 KB)

Uprościłem funkcję do bólu

flow.set("wlacznik_lazienka","off");
return msg;

“zawartość” przełącznika to

zawartość przełącznika

I nadal nic to nie daje.
treść funkcji to

flow.set("wlacznik_lazienka","off");
return msg;

i druga to

flow.set("wlacznik_lazienka","on");
return msg;

Jeżeli masz switch to po co ci jeszcze funkcja

Zamiast funkcji wstaw sobie bramkę która blokuje PIR i nie wyłączy ci światła niezależnie od jej stanu .

@Farenza

pir.json (12,2 KB)

Nod node-red-contrib-afya-counter-the-new licznik napisany przez naszego ziomala https://flows.nodered.org/node/node-red-contrib-afya-counter-the-new

Nod node-red-contrib-traffic https://flows.nodered.org/node/node-red-contrib-traffic

Funkcja podstawia wartości do włącznika? A przynajmniej tak to sobie wyobrażam. Nie wiem jak inaczej wymusić brak reakcji na PIR po użyciu włącznika.

PS
Przepraszam że dopiero dziś, ale wiecie życie, praca itd.
Dziękuję za pomoc, i prezentuję efekt końcowy. Wszelkie uwagi mile widziane i oczywiście do przetestowania. Na dziś działa i o to chodziło, jeszcze test długoterminowy i nowe pomysły :laughing:


Łazienka.json (8,5 KB)

PS2
A może by tak jeszcze dodać czujnik światła i zastosować to w przedpokoju i pokojach? :thinking:

PS3
Stety, niestety, ale automatyka w HA jest może i prostsza do “napisania” jednak w razie kłopotów trudno to analizować, NR jest lepsze, przynajmniej pod tym względem.