Home Assistant – powiadomienia

Powiadomienia w systemie automatyki domowej są jakby niezbędne. 
Fakt. 
Jakie – każdy sobie wybiera. Ja lubię akurat e-maile, bo nie wymagają ode mnie dodatkowych elementów. Poniżej swoje dane musicie uzupełnić odpowiednimi Waszymi, które odczytacie w konfiguracji serwerów na przykład na stronie dostawcy.
Na początek konieczne są dodatkowe sekcje w configuration.yaml. Nadpisujemy/dodajemy wpisy dotyczące notify.
notify:
  – name: Cezar
    platform: smtp
    server: !secret email_server
    port: 587
    timeout: 15
    sender: !secret email_sender
    encryption: starttls
    username: !secret email_username
    password: !secret email_password
    recipient:
      – !secret email_cezar
    sender_name: My Home Assistant
Hasła trzymamy oczywiście w pliku secrets.yaml.
Później restart i mały test. Przechodzimy na Developer Tools, Services i jak w przykładzie w dokumentacji podane, wprowadzamy:
{
  „message”: „The sun is {% if is_state(’sun.sun', 'above_horizon') %}up{% else %}down{% endif %}!”
}

Później Configuration -> Automations

Ja stworzyłem sobie powiadomienie o włączeniu świateł przed domem godzinę po zachodzie słońca.

Przyciskamy 'Duży, pomarańczowy plus' i wybieramy:
W sekcji Triggers – czyli 'wyzwalaczy' zdarzenia
– nazwę
– ewentualny opis
– trigger type: Sun, Sunset, Offset
Conditions, czyli w tym przypadku włącz światło tylko jeżeli jest wyłączone:

No i w końcu Actions – co ma się dziać:
– u mnie włącz Sonoff
– wyślij powiadomienie

Zrobione. Tyle na dzisiaj. Muszę wrócić do częstszego, a krótszego pisania o HA.

dzVents – skrypt informujący o większym zużyciu prądu, gdy nie ma nas w domu

Aloha!

Od pewnego czasu miałem w głowie (w sumie jeden z podstawowych jakie powinienem napisać!) skrypt w dzVents:
sprawdzam zużycie prądu w domu i gdy jest zbyt duże o zadanych godzinach, w danych dniach – wyślij mi e-mail. W dniach tygodnia i w godzinach o których przeważnie jesteśmy w pracy.

Dlaczego? A może zapomniałem o włączonym żelazku? A może włączyło się coś, co nie powinno?

Z tego to oto powodu system powinien:
– od poniedziałku do piątku w godzinach 8:15 – 15:00 sprawdzić zużycie prądu
– jeżeli jest wyższe niż 400 Watt ma mi wysłać e-mail z powiadomieniem

— Author: Adam Sobczak
— Date created: 2018-10-18
— Script takes current energy reading, and when it’s bigger than suggested on weekdays between 8:15 – 15:00 – notifies user.
return {
    on = {
        [’timer'] = {’every 15 minutes between 8:15 and 15:00 on mon,tue,wed,thu,fri'}
    },
    execute = function(domoticz)
    local Energy = domoticz.devices(’OWL').usage
    local EnergyLimit = 400

    function round(num, numDecimalPlaces)
          local mult = 10^(numDecimalPlaces or 0)
          return math.floor(num * mult + 0.5) / mult
        end
   
    if (Energy > EnergyLimit) then
            domoticz.notify(’Energia', 'Uwaga, zużycie energii większe niż zwykle: ' ..round(Energy,1) .. '!', domoticz.PRIORITY_NORMAL)
        end
    end
}

Tyle. Proste i działa. Powodzenia przy próbach zrobienia tego w Blockly 😉

Coś jednak z tymi gadżetami wypadałoby zrobić… Na początek zdarzenia i powiadomienia na czujnikach…

Samo czytanie danych z czujników już jest fajne.

Dobrze by jednak było jakoś tym wszystkim sterować i wykonywać pewne zadania na podstawie danych zewnętrznych, innych czujników albo przełączników.

I tym zajmę się w tym i kolejnych wpisach.

Generalnie Domoticz ma kilka możliwości notyfikacji oraz wykonywania zadań:
– bezpośrednio na samych czujnikach
– schematy blokowe w Blockly
– skrypty Lua lub Python
– dzVents

Na początek pierwszy punkt. Każdy z czujników w Domoticz ma cztery przyciski:
– Log
– Edit
– Timers
– Notifications

Nas interesują w tym momencie dwa ostatnie.

Jak widać, jeżeli 'pod nimi' jest cokolwiek stworzone, zapisane – kolor się zmienia. Znaczy to ni mniej ni więcej niż to, że gdzieś tam jest skrypt lub akcja, która ma zostać wywołana.

Tak w sumie to była jedna z pierwszych rzeczy jakie zrobiłem. Nawet nie w Domoticz, jeszcze wcześniej w małym systemie Pilight. Miałem wtedy podłączone na breadboard tani nadajnik i odbiornik, gniazdka 433MHz zakupione w Biedronce i byłem zafascynowany tym, że mogę je zdalnie włączyć z poziomu Raspberry Pi. Jak tak patrzę, to wiele się przez te dwa lata zmieniło.

Ok, dość sentymentalnych wspomnień. Cel – włączyć światła przed domem godzinę po zachodzie słońca i wyłączyć zawsze o 22. I jeszcze do tego dostać powiadomienie na e-mail.

W polu Type możemy wybrać sposób 'wyzwalania' zdarzenia. Przed/po wschodzie/zachodzie słońca, o konkretnej godzinie, w dniach parzystych/nieparzystych, miesięcznie (na przykład zawsze 3 dnia, albo w drugi wtorek miesiąca, itp.) oraz rocznie (na podobnych zasadach).

Ja wybrałem:
– włącz 1 godzinę po zachodzie słońca w każdy dzień tygodnia (można ustawić na przykład dni pracujące, weekend, albo wybrane konkretne dni)
– wyłącz zawsze o 22

No, to mamy za sobą. W lecie był czas, kiedy światła włączały się o 21:57 i gasły o 22 😉

Teraz powiadomienia e-mail. Przede wszystkim trzeba skonfigurować adres.

Setup -> Email jest odpowiednim miejscem na zrobienie tego.

Podajemy adres wyjściowy (z parametrami serwera pocztowego) oraz docelowy.

Gdy już to mamy za sobą – dalej proste ustawienie 'wyzwalacza' zdarzenia. Jeżeli przełącznik przejdzie w stan On, mam otrzymać e-mail z konkretną wiadomością.

Jak poniżej:

Dobra, skoro to już mamy, kolejny temat.

Mamy sobie odkurzacz Roomba. Świetny, rewelacyjny patent, który od razu zaczął być używany u nas w domu codziennie. Jednak drażni mnie w nim jedna rzecz – zasilasz 'strzela' co pewien czas. Nie lubię tego, denerwuje mnie to. Oczywiście rozumiem, że Roomba musi być jakoś ładowana, ale (mimo, że teoretycznie powinien) nie chcę aby zasilacz był włączony cały czas.

Tutaj pomocne było automatyczne wyłączenie przełącznika po zadanym czasie (Off Delay). Czyli – jeżeli kiedykolwiek zostanie włączony, uruchamia się timer, który wyłączy go po skończeniu odliczania. Wyłączenie i ponowne włączenie resetuje licznik.

Ok, kolejny temat z głowy.

Co by tu wymyślić…

O, na przykład temperatura. Jeżeli wzrośnie w którymś z pokojów – może warto o tym dostać informację i (jeżeli macie, ja akurat niestety nie) – włączyć klimatyzator. Albo dostać po prostu powiadomienie na e-mail.

Nic prostszego: przycisk Notifications na czujniku temperatury, później kilka kliknięć, gotowe.

Dobra. Ale skąd teraz pewność, że nie będę dostawał tych powiadomień co minutę? Przecież temperatura może taka być przez kilka godzin.

Aaaaa, na to też mamy radę: Setup -> Settings -> zakładka Notifications.

Na końcu strony mamy Notification Intervals. I dla czujników ja osobiście mam ustawione 12 godzin. Switches – natychmiastowo.

Czyli – co 12 godzin, jeżeli nie nastąpiła zmiana statusu, dostaję powiadomienia.

To samo zastosowałem w przypadku Xiaomi MiFlora.

Jeżeli wilgotność w doniczce jest mniejsza niż 50% – e-mail.

Można sobie w ten sposób zapewnić powiadamianie w przypadku otwarcia drzwi, przekroczenia zużycia energii, pogorszenia jakości powietrza (i docelowo włączenia oczyszczacza), przekroczenia ilości czasu spędzonego przy konsoli przez dziecko, włączenia jakichś urządzeń, itp., itd.

W kolejnym wpisie – proste Blockly i przejdziemy do dzVents.

Do zobaczenia. Albo 'do poczytania'.

Wracam do remontu… Co też spłodzi kilka wpisów!