Prosty sposób projektowania automatyzacji z możliwością szybkiej ich aktualizacji i sprawdzaniem przepływu, co pozwala nam szybko zweryfikować błąd i go poprawić!
Swoją przygodę z automatyzacjami zacząłem pewnie jak większość z Was - czyli od pisania ich z palca, po kolei. Coś nie działało, to była zagwozdka na kilkanaście minut a czasami i dłużej, bo gdzie popełniłem błąd? Szukanie najczęściej linijka po linijce. Następnie restart HA i sprawdzanie czy poprawka działa (bo nie chciały się przeładować same automatyzacje np.) Strata czasu ogromna (zwłaszcza na szukaniu błędu). A jak dalej coś było nie tak, to już w ogóle koszmar...
#
# ogrzewanie
#
- id: '1570706246806'
alias: Heat Living Room ON
trigger:
- entity_id: group.living_room_lights_cinema
for:
minutes: 5
platform: state
to: 'on'
condition:
- below: '16'
condition: numeric_state
entity_id: sensor.weather_tmp
- below: '20'
condition: numeric_state
entity_id: sensor.termostat_andromeda_temperature
action:
- data:
entity_id: climate.living_room
hvac_mode: heat
temperature: 21
service: climate.set_temperature
group.living_room_lights_cinema
wygląda następująco:
living_room_lights_cinema:
name: Living room lights and Cinema
entities:
- switch.sonoff_10005be2f1
- switch.sonoff_10005af23e
- switch.sonoff_100059c494
- switch.sonoff_10008c937e
- switch.kate_computer
- switch.sonoff_cinema
Oczywiście dalej wiele automatyzacji mam tak napisanych (skoro działają, to nie będę ich przepisywać), jednak wystarczy wejść w Configuration -> Automation
jakąś automatyzację edytować lub wyłączyć i wszystkie nasze # znikają. Najbardziej się wkurzyłem jak sobie wszystko ładnie rozdzieliłem - światła, ogrzewanie, kino domowe. Opisałem, po kolei. A potem ciach i poszło wszystko... bo sobie wszedłem przez ten powyższy moduł aby coś sprawdzić (chyba składnię) i zapisałem....
Ograniczeń tej metody jest naprawdę wiele, aczkolwiek czystość kodu jest po prostu niezaprzeczalna. I naprawdę warto od tego zacząć aby zrozumieć jak działają automatyzacje.
Instalacja
Hass.io -> Add-on store -> Node-Red -> Install
Tak naprawdę jedyne co musimy zrobić to ustawić credential_secret
(robimy to w szczegółach zakładki add-on Node-RED, gdzie klikaliśmy install
) ale uwaga, zapamiętajcie to hasło - ponieważ szyfruje ono dane a więc nie możemy tego potem zmienić, bo się do niczego nie dostaniemy! Następnie już tylko ssl
i require_ssl
na true
i start
:)
Uwaga, jeżeli coś nie działa to ustawiamy ssl
i require_ssl
na false
i start
:)
Pierwsza automatyzacja
Jak widzicie dostosowałem trochę trigger
zmieniając parametry temperatury na którą ma reagować.
Drugim ważniejszym trigger
jest dodanie Andromeda low than 21
nie musiałem nic przepisywać, dodałem tylko kafelek + linię.
Action
- ale zaraz poniżej mamy jeszcze Heating Living 12
w przypadku jak wszystko zostanie wyłączone w pokoju (najważniejsze elementy, które są włączone jak ktokolwiek jest w pokoju) to ogrzewanie ma się wyłączyć. Nie musiałem pisać nic na nowo. Wystarczyło tylko od Group Living On
wyjścia false
wyprowadzić nową action
.
Ustawiłem opóźnienie 5 minut zanim akcja się wykona (np. wieczorem wejdę na chwilę, włączę światło, znajdę co potrzebowałem i wychodzę - po co wtedy ma się włączyć ogrzewanie)? Dlatego zrobiłem, że po włączeniu grupy, ma odczekać 5 minut.
Następnie ponownie sprawdza czy grupa jest ON, jeżeli tak to ma iść dalej. Czyli sprawdzić warunki temperatury.
Możliwości
Widzimy kiedy dany warunek został wykonany, kiedy była odpowiedź true a kiedy false (czerwony lub zielony "kwadrat") oraz co najważniejsze cały przepływ działania.
Dodałem też timestamp
abym mógł szybko wywołać testowy trigger
w celu sprawdzenia przepływu pozostałych warunków (po prostu na niego klikamy i się wykonuje w Node-RED).
Jak widzicie możemy wprowadzać skomplikowane Data, nie ma tutaj ograniczeń a pomoc jest bardzo bogata.
A jeżeli potrzebuje czegoś bardziej zaawansowanego, też nie ma problemu.
Kopiuj, wklej, wytnij... export i import!
Elementy jak i całe przepływy możemy kopiować, wklejać w zakładki, wyłączać poszczególne elementy - możliwości jest naprawdę ogrom i wszystko działa intuicyjnie. Do tego możemy eksportować importować całe przepływy, co ułatwi korzystnie z gotowców dostępnych w internecie! Zobaczcie przykład i sobie go zaimportujcie do siebie:
[
{
"id": "1d69b86b.3d5998",
"type": "api-call-service",
"z": "150a1916.ccd1e7",
"name": "Light Off",
"server": "b3e9b226.7fd0c",
"version": 1,
"debugenabled": false,
"service_domain": "light",
"service": "turn_off",
"entityId": "light.desk_light",
"data": "",
"dataType": "json",
"mergecontext": "",
"output_location": "",
"output_location_type": "none",
"mustacheAltTags": false,
"x": 640,
"y": 340,
"wires": [
[]
]
},
{
"id": "b742d9a.9b12428",
"type": "server-state-changed",
"z": "150a1916.ccd1e7",
"name": "Magic Button",
"server": "b3e9b226.7fd0c",
"version": 1,
"entityidfilter": "binary_sensor.magic_button",
"entityidfiltertype": "exact",
"outputinitially": false,
"state_type": "str",
"haltifstate": "on",
"halt_if_type": "str",
"halt_if_compare": "is",
"outputs": 2,
"output_only_on_state_change": true,
"x": 210,
"y": 360,
"wires": [
[
"667c36ac.f2b738"
],
[]
]
},
{
"id": "a72b198d.0d1e78",
"type": "api-call-service",
"z": "150a1916.ccd1e7",
"name": "Light On",
"server": "b3e9b226.7fd0c",
"version": 1,
"debugenabled": false,
"service_domain": "light",
"service": "turn_on",
"entityId": "light.desk_light",
"data": "",
"dataType": "json",
"mergecontext": "",
"output_location": "",
"output_location_type": "none",
"mustacheAltTags": false,
"x": 640,
"y": 420,
"wires": [
[]
]
},
{
"id": "667c36ac.f2b738",
"type": "api-current-state",
"z": "150a1916.ccd1e7",
"name": "Desk light on?",
"server": "b3e9b226.7fd0c",
"version": 1,
"outputs": 2,
"halt_if": "on",
"halt_if_type": "str",
"halt_if_compare": "is",
"override_topic": false,
"entity_id": "light.desk_light",
"state_type": "str",
"state_location": "payload",
"override_payload": "msg",
"entity_location": "data",
"override_data": "msg",
"blockInputOverrides": false,
"x": 460,
"y": 360,
"wires": [
[
"1d69b86b.3d5998"
],
[
"a72b198d.0d1e78"
]
]
},
{
"id": "b3e9b226.7fd0c",
"type": "server",
"z": "",
"name": "Home Assistant"
}
]
Opcja jest dostępna w prawym górny rogu:
Deploy
Jak już mamy wszystko gotowe klikamy na ten przycisk, mija klika sekund i mamy wszystko przeładowane i gotowe do działania. Literówka? Zła wartość, żaden problem kilka poprawiamy, klikamy ponownie i gotowe!
Jest kilka dodatkowych opcji, gdy już mamy bardzo rozbudowane przepływy i nie chcemy resetować obecnego działania.
Debbugowanie
Jak widzicie na pod każdym kafelkiem mamy informację jaki stan został odebrany i gdzie przepływ poszedł dalej.
Jest to mega pomocne, bo możemy zobaczyć dokładnie gdzie coś się nam wysypuje i jakie wartości przybierają czujniki np. AQI w oczyszczaczu:
Oraz dokładnie przyglądnąć się błędom jak potrzebujemy więcej informacji:
Chcesz więcej?
Większość automatyzacji, które przedstawiam na blogu opierają się właśnie na tym rozwiązaniu - więcej przykładów znajdziesz tutaj: nodeRED
Podsumowanie
Obecnie używam tego do prostych jak i zaawansowanych automatyzacji, bo jest to po prostu mega proste narzędzie i naprawdę niesamowicie rozbudowane!
Chcesz wiedzieć więcej? Dołącz do grupy na FB. Będzie nam też miło jak polubisz Fanpage!

Oczyszczacz Xiaomi Air Purifier Pro H
Od: 795 zł 1110 zł | Powiadom gdy cena spadnie
Jest to najnowszy i najmocniejszy model, a zarazem największy i najdroższy - posiada zupełnie inne wymiary filtrów niż pozostali bracia, więc zwróćcie na to uwagę (oraz ich cenę) przy jego zakupie. Urządzenie posiada cały dobrobyt ekosystemu Xiaomi.
Dziwi brak reklam? Przeczytaj dlaczego i wesprzyj bloga na lub