Okos otthon is fókuszban

Arduino kalandok

Arduino kalandok

Asszistens és a naptár

2018. december 20. - denx

A Home Assistant-ról már elég sokat értekeztem, most is erről lesz szó. Vannak olyan dolgok, amiket az ember előre tud hogy mikor szeretné ha megtörténne, ezt pedig a legkézenfekvőbb felvenni egy naptárba. Google Calendar itt egy kézenfekvő eszköz, lássuk hogyan lehet hadra fogni a HASS-on belül az itt tárolt információkat!

Naptár

A Google Calendar-t talán senkinek nem kell bemutatni. Mindenkinek van ilyenje, aki használ GMail-t, vagy van Android-os telefonja. A cél az, hogy ha valamit felvesz az ember a saját naptárában, akkor arról tudjon a HASS is, netán ezek alapján tegyen is dolgokat.

Szerencsére itt sem kell újra feltalálni a meleg vizet, van már rá kész komponens: link. Bekonfigurálni ezt sem kifejezetten egyszerű (kb. mint a Messenger-t) de ha egyszer túltesszük magunkat rajta, akkor utána már nagyon kényelmes lesz a használata!

Test Scenario

Nem meglepő módon Én ezt is a termosztát projektemhez tervezem használni. Erre a célra felvettem egy külön naptárat a GCalendar-omban (mindenki vehet fel tetszőleges számút). Ebben nekem 3 különböző esemény fog bekerülni: Hétköznap, Hétvége és Távol. Ami fontos, az csak annyi, hogy ezek a szavak legyenek csak a naptár eseményének leírásában és jól legyen beállítva az esemény eleje és vége. Ha az első kettőt vesszük, akkor ott az egész napos esemény pont tökéletes.

Terveim szerint csak azokra a napokra fogok ide felvenni eseményt, amikor nem a magától értetődő programra van szükség. Az asszisztensem van annyira okos, hogy ismeri a magyar munkaidő-naptárat, vagyis hogy a törvények mikor írnak elő a szokásostól eltérő munkarendet. Azaz tudja a rendszerem, hogy mikor kell szombaton dolgozni, vagy hétköznap nem. Ebbe a dedikált naptárba tehát csak azokat az eseteket fogom felvinni, amikor más a terv.

Megjegyzés: van egy workday nevű binary sensor komponense a HASS-nak, de az nem tökéletes. Az egész egy Python lib-re épül, amiben rengeteg országnak fel vannak véve a nemzeti ünnepei. Sok mindent tud a cucc, de a magyar rendszert sajnos nem ismeri elég jól. Nálunk ugyanis a munkanap áthelyezéseket minden évben a törvényekben fektetik le és ezek nem kalkulálhatóak előre. Pl. azt sem lehet tudni (most, 2018-ban), hogy 2025 május 2-i pénteki napot mikor kell majd ledolgozni, hiszen ezt majd 2024-ben döntik el a törvényhozók. A munkanap-áthelyezéseket leszámítva a szenzor jól működik, de erre még ki kell valamit találnom...

Szóval a "Hétköznap" és "Hétvége" programok jók, ha egész napos naptár-események lesznek, de a "Távol" bejegyzést érdemes konkrét időpontokhoz kötni. Nálunk ha elutazunk, akkor általában délután érünk haza, mivel a gyerekek miatt alvásidőben szoktunk hosszabb utakat intézni. Ha távol vagyunk, olyankor 18 fokot tart a rendszer, innen mire felfűti a házat 21-22 fokra, na az legalább 2-3 óra, szóval ha azt tervezzük, hogy 4-re érünk haza, akkor 12-13 óra körül érdemes bekapcsolni a fűtést.

A képen például az látható, hogy mit raknék be ha egy hétre szabadságra mennék (amit otthon töltenék) és a ledolgozós szombaton sem szeretnék munkába menni.

Asszisztens

Miután az ember megtette a szükséges előkészületeket (Enable API, token, stb.) már állíthatja is be a google_calendars.yaml fájlban, hogy melyik naptárakban mire kíváncsi:

- cal_id: KrikszKrakszAmitAGugliKiköp@group.calendar.google.com
  entities:
  - device_id: futes_barmi
    name: "Fűtés"
    track: true
  - device_id: futes_hetkoznap
    name: "Fűtés hétköznap"
    track: true
    search: "Hétköznap"
  - device_id: futes_hetvege
    name: "Fűtés hétvége"
    track: true
    search: "Hétvége"
  - device_id: futes_tavol
    name: "Fűtés távol"
    track: true
    search: "Távol"

Ha jól sikerül a művelet, akkor létrejönnek olyan entitások a rendszerben, mint "calendar.futes_hetkoznap" és társai. Ezek mindegyike olyan lesz, mintha egy bináris kapcsoló lenne, amit kézzel nem lehet állítani. Ezek állapotát a rendszer a naptárból szedi, amit read-only módban ér el. A példa konfigban a három utolsó bejegyzésnél van 1-1 search megadva. Értelem szerűen ezek az entitások akkor lesznek "on" állapotúak, ha van a naptárban egy ilyen nevű esemény és épp folyamatban van. Az első naptár (futes_barmi) pedig bármire "on" állapotba ugrik. Ennek akkor lesz jelentősége, ha arra akarunk eseményt kötni, hogy mikor ér véget minden ami naptárból jön.

Fontos tanulság: a HASS 15 percenként kérdezi le hogy mi van a naptáradban. Ahogy most látszik ezen nem lehet konfigurálással alakítani, max ha az ember belenyúl a forráskódba. Igazából az esetek többségében a 15 perc nem perdöntő, ennél lassabban szoktak történni a dolgok, amiket az ember előre tud és naptárába rögzíti. Ahol ez előjöhet az a kezdeti próbálkozások: "Berakok valamit a naptáramba és nem látom a rendszeremben! Mi lehet ennek az oka?" Hát ez! Viszont hogy tiszta legyen: lehet ennél rövidebb időszakokra is eseményeket definiálni és azok precízen le is fognak futni, csak jó előre legyenek benne a naptárban!

A bejegyzés trackback címe:

https://ardu.blog.hu/api/trackback/id/tr2314474292

Kommentek:

A hozzászólások a vonatkozó jogszabályok  értelmében felhasználói tartalomnak minősülnek, értük a szolgáltatás technikai  üzemeltetője semmilyen felelősséget nem vállal, azokat nem ellenőrzi. Kifogás esetén forduljon a blog szerkesztőjéhez. Részletek a  Felhasználási feltételekben és az adatvédelmi tájékoztatóban.

süti beállítások módosítása