• Nebyly nalezeny žádné výsledky

Hlavní práce76915_klep03.pdf, 2.3 MB Stáhnout

N/A
N/A
Protected

Academic year: 2022

Podíl "Hlavní práce76915_klep03.pdf, 2.3 MB Stáhnout"

Copied!
52
0
0

Načítání.... (zobrazit plný text nyní)

Fulltext

(1)

Vysoká škola ekonomická v Praze Fakulta informatiky a statistiky

Použití Raspberry Pi pro automatizaci osvětlení chytré domácnosti

BAKALÁŘSKÁ PRÁCE

Studijní program: Aplikovaná informatika Studijní obor: Aplikovaná informatika

Autor: Petr Klepetko

Vedoucí bakalářské práce: doc. Ing. Miloš Maryška, Ph.D.

Praha, duben 2021

(2)

Prohlášení

(3)

Poděkování

Rád bych poděkoval svému vedoucímu práce, doc. Ing. Miloši Maryškovi, Ph.D., za pomoc při výběru tématu, jeho připomínky, rady a komentáře k práci.

(4)

Abstrakt

Tato práce se věnuje konceptu IoT českém prostředí. Je zkoumáno aktuální vymezení pojmů IoT pomocí analýzy a syntézy dostupných zdrojů. Dále je pomocí zmiňovaných metod zkoumán trh IoT v České republice, zejména v oblasti chytrých domácností, za účelem nalezení silných subjektů a produktů na trhu. Praktická část se týká

automatizovaného ovládání LED pásku pomocí minipočítače Raspberry Pi. Ten je přímo napojen k LED pásku a ovládá ho na základě příkazů, které získá přes vlastní API

rozhraní. Příkazy jsou na API rozhraní odesílány na základě automatizací, které mají jako vstup data z otevřených API meteorologických stanic, údaje o čase (západ a východ slunce), světelného senzoru nebo konkrétní uživatelský vstup z vlastního UI umístěném na serveru. Práce popisuje obecnou funkcionalitu, popis vývoje jednotlivých částí a překážky, které při práci vznikly včetně způsobu jejich překonání.

Klíčová slova

IoT, internet věcí, Raspberry Pi, automatizace

JEL klasifikace

C88, C89, O14

(5)

Abstract

The topic of this thesis is the concept of IoT in Czechia. Firstly, the focus of the research is current definition of concepts such as IoT based on available sources. Next comes

an analysis of IoT market, especially the area of Smart homes, in order to find strong companies in this field. The practical part of this thesis aims at LED strip automation using a single board computer Raspberry Pi, directly connected to it. Raspberry Pi should be in charge of controlling the strip, using own API interface as an input. The API is meant to be called by scripts which use data from an open API of a weather station, time (to be able to tell when the sun sets and rises), light sensor or own UI located on its server.

The thesis describes the general functionality, the process of development of each parts of the automation and the obstacles, including how they were overcome.

Keywords

IoT, Internet of things, Raspberry Pi, Automation

JEL Classification

C88, C89, O14

(6)

Obsah

Úvod ... 9

1.1 Cíle práce ... 9

1.1.1 Hlavní cíl práce ... 9

1.1.2 Dílčí cíle práce ... 9

1.2 Metody práce ... 10

1.3 Oblasti neřešené v rámci práce ... 10

1.4 Struktura práce ... 10

1.4.1 Vstupy ... 11

1.4.2 Řešení ... 11

1.4.3 Výstupy ... 12

1.5 Přínosy práce ... 12

2 IoT ... 13

2.1 Chytrá domácnost ... 13

2.2 Historie chytrých domácností ... 13

2.2.1 ECHO IV - 1966 ... 14

2.2.2 Gerontechnologie – 90. léta 20. stol. ... 15

2.2.3 Současná podoba chytrých domácností ... 16

3 Trh Smart Home produktů ... 17

3.1 Vymezení trhu ... 17

3.2 Oblíbené produkty ... 17

3.3 Český trh ... 17

3.3.1 Custom build řešení ... 17

3.3.2 Profesionální komplexní řešení s instalací ... 18

3.4 Existující produkty pro automatizaci osvětlení ... 19

3.4.1 Philips Hue Lightstrip Plus ... 19

3.4.2 Xiaomi Yeelight LED Lightstrip Plus ... 19

(7)

4.4.1 Web server ... 24

5 Automatizace osvětlení ... 25

5.1 LED pásek ... 25

5.2 Ovládání pásku přes API ... 27

5.2.1 Přístupová práva ... 28

5.3 Obecná funkcionalita automatizace ... 28

5.4 Světelný senzor ... 28

5.4.1 Nastavení hraniční hodnoty osvětlení ... 29

5.5 Napojení na meteorologickou stanici ... 30

5.6 Soubory uchovávající stavové informace ... 30

5.6.1 Soubor settings.json ... 30

5.6.2 Soubor currentColor.json ... 31

5.6.3 Soubor userColor.json ... 31

5.7 Koncové body na ovládání souborů se stavovými informacemi ... 32

5.7.1.1 Koncový bod /Automation/Intensity/ ... 32

5.7.2 Koncový bod /Automation/Mode/ ... 32

5.7.3 Koncový bod /Led/Color/SaveColors/ ... 33

5.7.4 Koncový bod /Led/Color/SaveUserColors/ ... 33

5.8 Speciální Koncové body ... 33

5.8.1 Koncový bod /Automation/Weather/ ... 33

5.8.2 Koncový bod /Led/Reset/ ... 33

5.8.3 Koncový bod /Led/Color/ ... 34

5.8.4 Koncový bod /Automation/ ... 34

5.9 Automatizace pomocí cron ... 35

5.9.1 Funkcionalita ... 35

5.9.2 Konkrétní skript ... 35

5.10 Webový front-end ... 36

5.10.1 Ruční nastavení barvy ... 36

5.10.2 Nastavení intenzity ... 37

5.10.3 Obecné nastavení ... 37

5.11 Popis vlastní automatizace z hlediska uživatele ... 38

5.11.1 Ruční mód ... 38

5.11.2 Automatický mód ... 39

5.12 Otestování funkčnosti automatizace ... 39

5.12.1 Zacyklení python scriptu ... 40

(8)

5.12.2 Zacyklení kvůli světelnému senzoru ... 40

5.12.3 Potřeba jednotného textového výstupu z koncových bodů ... 40

6 Porovnání vlastní automatizace s vybranou variantou na trhu ... 41

6.1 Vlastní řešení pomocí RPI ... 41

6.1.1 Rozšiřitelnost ... 41

6.1.2 Silné stránky ... 42

6.1.3 Slabé stránky ... 43

6.2 Porovnání s vybranými komerčními alternativami ... 43

6.2.1 Porovnání s řešením od Philips Hue ... 43

6.2.2 Porovnání s řešením od Xiaomi ... 43

6.2.3 Porovnání s řešením od Nitebird ... 44

6.3 Shrnutí všech porovnání ... 44

Závěr ... 45

Dosažení stanovených cílů ... 45

Využití výsledků práce ... 45

Doporučení ... 46

Použitá literatura ... 47

(9)

Úvod

Internet věcí (dále jen IoT) je popisován jako hlavní součást tzv. průmyslu 4.0, neboli čtvrté průmyslové revoluce. Pojem Industry 4.0 (průmysl 4.0) označuje trend v průmyslu, spočívající v propojení M2M (machine to machine) a zmiňovaného IoT. Obsahuje principy jako automatizace, zlepšení komunikace mezi komponenty, monitoring nebo i přístroje, které jsou schopny samy identifikovat chybu a také ji opravit [6].

Kromě svého průmyslového využití IoT pronikl i do oblasti spotřebního zboží, jako jsou například chytré domácnosti. V této práci je zkoumán internet věcí pro použití právě v takovém kontextu [5].

Podle webu techradar.com [6] se za první průmyslovou revoluci se považuje 19. století, které je spojené s vynálezem parního stroje a vznikem prvních průmyslových továren.

Druhá průmyslová revoluce má spadat do období v letech 1850 do první světové války, konkrétně počátek výroby oceli, základní elektrifikace továren a počátkem masové výroby.

Třetí průmyslová revoluce poté spočívá v přesunu analogických, mechanických a elektronických technologií do digitálních. Toto se datuje do 50. až 70. let 20. století.

Zatím poslední průmyslová revoluce, kterou svět aktuálně prochází, je tedy v pořadí čtvrtá, a tím si získala zmíněný název Industry 4.0. Mezi její hlavní pilíře patří kromě

zmiňovaného IoT také zpracovávání tzv. Big data – velké množství dat, jejichž analýza umožňuje získat informace potřebné k dalším akcím a rozhodnutím. ‚Velké množství dat‘

v tomto případě znamená množství větší, než které je možné v reálném čase zpracovat běžnými prostředky (transakčními databázemi).

Další pilíř je umělá inteligence. Ta je opět používaná za účelem automatizace

a pro nahrazení práce (rozhodování) lidí, což umožní urychlení celého procesu a snížení nákladů.

Mezi ostatní pilíře patří také digitalizace nebo automatizace včetně automatické optimalizace [6].

1.1 Cíle práce

1.1.1 Hlavní cíl práce

Hlavním cílem práce je návrh a implementace řešení automatizovaného osvětlení LED páskem za použití minipočítače Raspberry Pi. Automatizace spočívá v napojení na API meteorologické stanice, odkud se získají informace o aktuálním počasí, času východu a západu slunce a údajů ze světelného senzoru.

Na základě těchto dat budou řízeny parametry osvětlení, např. jeho intenzita nebo teplota.

1.1.2Dílčí cíle práce

Hlavního cíle práce je dosaženo pomocí dílčích:

• popis významu a historie pojmů internet of things a chytrá domácnost,

• nastavení Raspberry Pi, tj. instalace potřebného SW,

• napojení LED pásku k Raspberry Pi,

(10)

• naprogramování automatizací osvětlení,

• nalezení alternativních produktů na trhu, které by umožnily podobnou automatizaci, a jejich porovnání s Raspberry Pi.

1.2 Metody práce

V této práci jsou použity logické kvalitativní metody, konkrétně analýza a syntéza, indukce a abstrakce. Stav věcí je tedy zkoumán do hloubky jako celek na jednom případě – tvorbě vlastní automatizace – pomocí analýzy a syntézy dostupných informací. Z tohoto případu jsou odvozována a navrhována obecná pravidla a hypotézy (indukce a abstrakce) s cílem popsat možnosti využití Raspberry Pi pro osvětlení chytré domácnosti.

Nevýhodou těchto metod je absence kvantitativního šetření, které by vyřčené obecné závěry mohlo potvrdit na větším vzorku domácností.

Součástí vyhodnocování obecných závěrů je také komparace zjištěných vlastností zde vytvořené automatizace s tržními alternativami, která je prováděna opět na základě analýzy a syntézy informací o všech variantách dle daných kritérií.

1.3 Oblasti neřešené v rámci práce

Ačkoli je tato automatizace založena na síťové komunikaci mezi jednotlivými zařízeními, v této práci nebude řešené síťové zabezpečení Raspberry Pi jako serveru. Důraz je kladen na zajištění dané funkcionality, tedy automatizovaného osvětlení, jako takové.

1.4 Struktura práce

Práce je pomyslně rozdělena na teoretickou a praktickou část. Teoretická práce obsahuje úvod do kontextu práce a souvisejících oblastí. Kromě toho také hledá jiné možnosti, jak docílit stejného efektu pomocí produktů dostupných na trhu.

Praktická část popisuje vytvoření automatizace osvětlení pomocí Raspberry Pi.

(11)

Obrázek 1 – Struktura práce, vlastní zpracování

1.4.1Vstupy

Problematika internetu věcí je dobře zdrojovaná, stejně jako Raspberry Pi. Co se týká složitější práce s Raspberry Pi, například zmiňované propojení s LED páskem, zdroje jsou spíše v podobě návodů vytvořených nadšenci do elektroniky umístěných na serverech pro Raspberry Pi komunitu.

1.4.2Řešení

Pracuje se s předpokladem, že na trhu jsou produkty umožňující centrální dálkové ovládání osvětlení, včetně jednoduchých automatizací. V rámci této práce se zjišťují možnosti, jak lze tuto ‚službu‘ vytvořit pomocí minipočítače Raspberry Pi.

V 5. kapitole (Automatizace osvětlení) je popsáno vytváření automatizace, v čemž spočívá hlavní cíl práce. 6. kapitola (Porovnání vlastní automatizace s vybranou variantou na trhu) poté porovnává vlastní vytvořené řešení s tržními alternativami nalezenými

v kapitole 3 (Trh chytrých domácností).

(12)

1.4.3 Výstupy

Výstupem této práce je popis vytvoření funkční automatizace osvětlení řízené pomocí Raspberry Pi, společně s jejím vyhodnocením z hlediska nákladů, technické náročnosti, funkcionality a možnosti rozšíření či přizpůsobení, společně s doporučením, zda je toto řešení vhodné oproti jiným na trhu.

1.5 Přínosy práce

Hlavním přínosem práce je vytvoření levného řešení automatizovaného osvětlení pomocí Raspberry Pi. Díky tomu bude možné určit, zda se zmiňované řešení vyrovná komerčním výrobkům na trhu. Mimo to se prozkoumají možnosti Raspberry Pi v tomto směru, tedy automatizace osvětlení v chytré domácnosti.

(13)

2 IoT

V této kapitole je uveden kontext celé práce – koncept internetu věcí a chytrých domácností. Nejprve jsou definovány základní pojmy, poté popsána stručná historie až po aktuální stav.

Pojem Internet of Things (IoT) byl poprvé použit Kevinem Ashtonem v roce 1999

při prezentaci pro společnost Procter & Gamble. ve zmíněné prezentaci uvedl, že tehdejší zařízení informačních technologií téměř výhradně závisí na vstupu od uživatele.

Uživatelský vstup má být podle něj ale neefektivní – lidé mají limitovaný čas, pozornost a přesnost. Ideální přístup popsal jako takový, kdy by počítače měly k dispozici všechny potřebné informace automatizovaně, bez lidského vstupu. Tím by se redukovaly ztráty a náklady vzniklé z lidské práce [1][2].

Podle webu TechTarget internet věcí (IoT) sestává z navzájem propojených výpočetních zařízení, mechanických nebo digitálních přístrojů, objektů, zvířat nebo lidí, kteří mají unikátní identifikátor (UID) a schopnost přenášet data přes síť bez interakce mezi člověkem a počítačem, nebo mezi lidmi navzájem.

IoT ‚věc‘ (thing) tedy nemusí být pouze zařízení, může se jednat o libovolnou entitu, která si je vědoma svého kontextu a je schopna komunikovat s ostatními, čímž je přístupná odkudkoliv v reálném čase. Vize IoT je vytvoření souvislé integrace mezi zařízeními a lidmi, která umožní neustálé sledování fyzického světa a převod dat do virtuálního prostředí [2].

IoT zařízení by šly rozdělit na 3 hlavní skupiny – pro sbírání, transfer a analýzu dat. Sběr dat probíhá na zařízeních s vestavěnými systémy – minipočítači s procesorem, senzorem a komunikačním rozhraním. Ty poté odesílají získaná data na IoT hub nebo gateway, který je dále za pomocí různých komunikačních protokolů přesune k zařízením pro zpracování dat. Ty zde mohou být v podobě uživatelského rozhraní (pro čtení uživatelem), analytické aplikace (CRM, ERP, …) nebo jiné back-endové systémy [21].

2.1 Chytrá domácnost

Chytrá domácnost je definována jako domácnost, ve které jsou nainstalovány informační technologie za účelem komunikace s okolním světem. Dále také pro získávání dat

o domácnosti, anticipování a reagování na jejich potřeby, zajištění pohodlnosti, komfortu, zábavy nebo bezpečí. Kromě těchto vlastností se definice zmiňuje také o centrální kontrole zařízení / spotřebičů, které jsou v domácnosti používány [3].

Další klíčová funkce, která z předchozích vyplývá, je automatizace provozu určitých domácích spotřebičů, např. okna, žaluzie, nebo osvětlení [4].

2.2 Historie chytrých domácností

Drew Hendricks ve článku ‚The history of Smart homes‘ začíná popisovat historii chytrých domácností už na začátku 20. století, kdy začaly vznikat přístroje jako vysavač nebo

pračka, které byly poháněné elektrickým proudem. V kontextu dané doby to autor popisuje

(14)

jako ukázku chytré domácnosti, jelikož se zautomatizovaly práce dříve prováděné ručně [5].

2.2.1ECHO IV – 1966

Za další milník se považuje přístroj s názvem ECHO IV [5]. Zkratka ECHO znamená Electronic Computing Home Operator, což implikuje, že s jeho pomocí bude možné ovládat domácnost. Jedná se o ‚počítač‘ postavený v roce 1966 Jimem Sutherlandem pro sebe a jeho rodinu, aby jim pomáhal v každodenních úkonech. Základní elektrické spotřebiče byly napojeny a integrovány do jednoho velkého celku, který bylo pro rodinu jako uživatele možné ovládat vstupními zařízeními v podobě dvou klávesnic a hlavního panelu samotného počítače.

Počítač ovládal hodiny a budíky v celém domě, termostat nebo televizi, viz. obr. 1.

Jim Sutherland svým vynálezem předběhl dobu, jelikož postavil něco, co se dostalo do obliby širší veřejnosti až na začátku 21. století [7].

Obrázek 2 – Echo IV, hlavní systémový diagram, přeloženo z [7]

(15)

Obrázek 3 – Systémový diagram Echo IV, přeloženo z [7]

2.2.2 Gerontechnologie – 90. léta 20. stol.

V 90. letech se objevil koncept tzv. gerontechnologie, který spočívá v ochraně a zajištění bezpečnějšího a obecně lepšího života seniorů za pomoci technologií [5].

Samotný pojem pochází ze slov gerontologie, tedy vědecké zkoumání stárnutí, a technologie – výzkum, design a vývoj nových technik, produktů a služeb [8].

(16)

Gerontechnologie má pět základních směrů [8]:

1. prevence chorob přicházejících s vyšším věkem,

2. umožnění starším lidem dělat věci, které jim věk neumožňuje, za využití jim přívětivých technologií – využívá se to, co mohou dělat,

3. kompenzování schopností, které s věkem oslabují, např. zrak,

4. technická podpora pro pečovatele, aby mohli jednodušeji pomáhat pacientům, 5. výzkum v oblasti stárnutí.

K tématu chytrých domácností se tedy váže hlavně druhý a čtvrtý směr, kde jsou využívány technologie pro podporu života starších lidí. Může se např. jednat o zařízení detekující pád, které zavolá pomoc. Dále to mohou být obecně jakékoliv senzory, které monitorují životní funkce sledované osoby [9].

2.2.3Současná podoba chytrých domácností

Na přelomu tisíciletí se díky jejich zpopularizování a snížení cen staly IoT technologie dostupné pro běžné domácnosti. V této době to byla jednoduchá zařízení připojená k místní síti [5].

Dnešní chytré domácnosti jsou zacílené na zabezpečení (kamery, alarmy) a ekologii (minimalizaci energetických ztrát). Konkrétní příklady využití jsou například

automatizované osvětlení nebo termostat, notifikace napojené na mobilní zařízení (e-mail, sms atd.) či kamery, které je možné ovládat vzdáleně. Další cíl spočívá v uživatelském pohodlí [44].

(17)

3 Trh Smart Home produktů

V následující kapitole je popsán trh produktů patřících do kategorie chytrých domácností, tedy tzv. smart home. Kapitola má primární cíl nalézt alternativy automatizovaného osvětlení, které by byly srovnatelné s vlastním řešením vytvářeném v kapitole 5. Trh je popsán obecně a následně je rozdělen na základní kategorie za účelem zařazení

automatizace vytvořené autorem.

3.1 Vymezení trhu

Dle webu statista.com je popsán jako trh s produkty komunikujících po síti za účelem zajištění domácích automatizací pro koncové uživatele (spotřebitele), jejichž hlavní funkce je ovládání, monitorování a regulace určitých funkcionalit v rámci domácnosti [22].

Konkrétněji se jedná o zařízení ovládající osvětlení, termostat, zábavní prvky, ostatní spotřebiče a bezpečnostní prvky jako kamery nebo alarmy [23]. V rámci této práce je kladen důraz na automatizaci osvětlení, jelikož právě toho se týká hlavní cíl.

3.2 Oblíbené produkty

Na evropském trhu v roce 2020 dominovala kategorie videozábavy (52 %) a chytrých reproduktorů (23,6 %). Dalšími významnými kategoriemi jsou osvětlení, monitoring a bezpečnost nebo chytré termostaty [17]. Významný vliv na tento trh má pravděpodobně i vliv onemocnění Covid-19, který způsobil přesun výdajů z oblasti dovolené nebo

kulturních či společenských akcí do oblasti domácí zábavy a zařízení pro usnadnění života [14]. Naproti tomu ale jde pokles nákupů chytrých televizorů, který je způsoben např. odsunem velkých sportovních událostí na rok 2021, což by za jiných okolností byl častý důvod k zakoupení nového zařízení [17].

3.3

Český trh

Obecně jsou dvě základní možnosti, jak chytrou domácnost zařídit [15]. Jednou z nich je zakoupení hotových sad obsahujících všechny potřebné přístroje a jejich zapojení

svépomocí – zde spolu zařízení typicky komunikují bezdrátově kvůli jednoduché instalaci.

Druhá spočívá v najmutí profesionální firmy, která vytvoří konkrétní návrh pro specifické potřeby klienta a provede instalaci.

3.3.1 Custom build řešení

První zmiňovaný způsob zařízení chytré domácnosti spočívá v tom, že si spotřebitel nakoupí postupně všechny komponenty, které ve své domácnosti chce mít. Zde se může jednat o různé senzory, zástrčky, či světla ovládatelná přes WIFI [15].

(18)

E-shop Alza.cz kategorii Custom build řešení dělí ještě na dvě podkategorie [16]:

• jednoúčelové sady,

• řešení s centrální jednotkou uprostřed.

Jednoúčelové sady plní pouze jednu funkci, například dálkové ovládání žárovky nebo zástrčky přes aplikaci v chytrém telefonu. V případě rozšíření je většinou nutné používat novou aplikaci pro nově nakoupené zařízení a nemusí být možné nové přístroje propojit se starými. Z toho vyplývá obecně horší propojitelnost s jinými zařízeními, kdybychom pomocí těchto chtěli vytvořit komplexní řešení [16].

Řešení s centrální jednotkou (hubem) uprostřed jsou libovolně rozšiřitelná. Hub obvykle komunikuje pomocí určitého protokolu (ZigBee, Z-Wave, popř. Apple home kit), je pouze potřeba ho připojit k elektrické síti a routeru. Další přikoupené přístroje musí pouze

podporovat příslušný protokol, poté je možné je používat dohromady a vytvořit komplexní řešení [16].

Společnou charakteristikou obou podkategorií je bezdrátové propojení. To může být buď přes WIFI, tedy přes lokální síť, přes bluetooth, GSM (telefonní síť) nebo přes protokoly ZigBee a Z-Wave. Není tedy potřeba odborná montáž, zasahování do zdí apod.

Jeden z hlavních dodavatelů v českém prostředí je například Phillips Hue. Specializuje se zejména na oblast osvětlení, tedy chytré žárovky, LED pásky, pohybová čidla nebo ovládací prvky. Ovládání probíhá přes vlastní aplikaci, lze nastavit i automatizace [15].

Phillips Hue nabízí řešení spadající do obou kategorií, je možné koupit řešení bez centrální jednotky pouze s bluetooth aplikací [46], které lze v jakékoliv fázi začít používat přes tzv. Hue Bridge [47] jako centrální jednotku. To přinese určité výhody, např. rozdělení světel do místností.

Další významní výrobci jsou D-link (WIFI kamery bez nutnosti veřejné IP adresy, chytré zásuvky, patří kategorie bez centrálních jednotek), Netatmo (kamery s rozpoznáváním obličeje, opět kategorie bez centrální jednotky) nebo O2 se svým produktem

O2 smart box – hubem pro propojení chytrých zařízení (řešení s centrální jednotkou) [15].

Obecně tedy tento přístup spočívá v bezdrátové komunikaci, staví si ho a instaluje sám koncový zákazník a rozšiřování systému může být problematické až nemožné.

3.3.2 Profesionální komplexní řešení s instalací

Druhý přístup je najmout si firmu, která navrhne řešení na míru, poskytne konzultaci k celému projektu a zařízení nainstaluje. Zde se nevyužívají pouze bezdrátová připojení, ale i kabelová. Instalace je prováděna profesionální firmou, je tedy možné upravit infrastrukturu domu nebo bytu, do kterého se řešení instaluje, a položit zde zmíněné kabely [15]. Firmy zde využívají své expertizy jako přidané hodnoty, což je důvod, proč je jako resellera klient upřednostní vedle řešení, které stačí zapnout a funguje.

Existují firmy [48], které nabízí služby jako pomoc při návrhu nového domu, ale i úpravu

(19)

3.4 Existující produkty pro automatizaci osvětlení

Hlavní cíl této práce je vytvoření automatizace osvětlení na základě určitých vstupů pomocí LED pásku. Konkrétně se jedná o LED pásek, který lze ovládat na dálku, např. pomocí smartphonu, lze měnit barvy a nastavovat automatické chování. V rámci práce je vytvořena automatizace prostřednictvím minipočítače Raspberry Pi. To vzbuzuje otázku, jak by tato obstála v porovnáním s existujícími produkty na trhu, které plní obdobnou funkci.

Automatizace osvětlení vytvářená v rámci práce by se dala zařadit podle dělení v kapitole 3.3 do kategorie Custom build s centrální jednotkou uprostřed, kterou je

Raspberry Pi. Tržní alternativa by tedy měla spadat do téže kategorie, ale ne nutně. Dále by měla odpovídat vlastnímu řešení z hlediska ceny, tedy zhruba 2000,- Kč a přibližné délky, která je jeden metr.

Jelikož je na výběr velké množství produktů, které se liší zejména značkou a cenou, nikoliv funkcionalitou a principem, jsou vybrány pásky patřící do tří cenových skupin – okolo 2000,- Kč, 1000,- Kč a poté co nejlevnější.

Jako příklad byly vybrány Philips Hue LightStrip Plus V4 [49], Xiaomi Yeelight LED Lightstrip Plus [50] a Nitebird Smart Led Strip SL1 [51].

3.4.1 Philips Hue Lightstrip Plus

V kapitole 3.3.1 byly zmíněny produkty Phillips Hue, které mj. vyrábí dálkově ovládané LED pásky [49]. Jejich LED pásek pro vnitřní použití napojený na centrální hub Hue Bridge odpovídá řešení vytvářenému v této práci. Jedná se o 2m pásek (možnost

prodloužení až na 10 m) s 16 miliony barev, které jdou nastavit. Přímé nastavení barvy je možné provést přes Amazon Alexa nebo Apple Home Kit, bluetooth a mobilní aplikaci, ale je doporučeno používat bridge umožňující více funckionalit, např. různé načasování nebo ovládání většího počtu pásků. Philips Hue nabízí mnoho možností automatizací nebo customizací v rámci svého ekosystému, např. synchronizace světel s obrazovkou počítače či monitoru [52] nebo využití pohybového senzoru pro automatické zapnutí světel [53].

Kromě pohybu senzor reaguje také na světlo, tedy pokud je světla dostatek, nezapne se.

Na e-shopu Alza.cz se prodává za 2036,- Kč [49].

3.4.2 Xiaomi Yeelight LED Lightstrip Plus

Další příklad je LED pásek od Xiaomi. Pásek je dlouhý 2 m (s možností prodloužení až na 10 m), je možné ho ovládat přes vlastní mobilní aplikaci, nebo připojením ke Google Assistant a Amazon Alexa. Kromě toho je kompatibilní s chytrou domácností od Xiaomi.

Navíc obsahuje funkci synchronizace světla s přehrávanou hudbou. Dal by se také zařadit do obou podkategorií – může být použit bez i s centrální jednotkou. Oproti Philips Hue řešení je levnější, na e-shopu czc.cz se prodává za 1090,- Kč [50].

(20)

3.4.3 Nitebird Smart Led Strip SL1

‚Budget‘ zástupcem je 2,8 m dlouhý LED pásek Nitebird Smart Led Strip SL1. Tento pásek lze ovládat pomocí vlastní aplikace do smartphonu, fyzického ovladače, Amazon Alexa, Echo Dot nebo Google Home. Je možné navolit libovolnou barvu, včetně načítání vytvořených scén, nebo vytvoření vlastní. Firma Nitebird má užší sortiment než

např. Philips Hue, zaměřuje se zejména na LED pásky a žárovky, které lze ovládat přes WIFI. Výrobky umožňují integraci s univerzálními huby, jako zmiňovaná Alexa od Amazonu nebo Google Home, nemá však vlastní centrální jednotku ani ekosystém, který by umožňoval propojení s více podpůrnými výrobky, jako senzory u Philips Hue.

Na alza.cz je prodáván za 396,- Kč.

(21)

4 Raspberry Pi

V rámci této kapitoly je popsán minipočítač Raspberry Pi. Nejprve je věnována pozornost výrobci – Raspberry Pi Foundation, poté výběr konkrétního zařízení a jeho instalace.

V předchozí kapitole byly rozděleny řešení chytrých domácností na dvě základní

kategorie – bezdrátové s centrální jednotkou a profesionální komplexní řešení s montáží.

Řešení vytvářené v této práci lze zařadit do první jmenované s tím, že jako centrální jednotka vystupuje minipočítač Raspberry Pi a propojení probíhá přes WIFI,

resp. domácí síť.

4.1 Raspberry Pi Foundation

Raspberry Pi Foundation – výrobce Raspberry Pi – je vzdělávací charita z Velké Británie.

Její cíl je pokročit se vzděláváním dospělých lidí i dětí v oblasti počítačů, informatiky a souvisejících oblastí. Má toho být dosaženo pomocí poskytnutí výkonných a levných jednodeskových počítačů [18].

4.1.1 Produkty vyvíjené společností Raspberry Pi Foundation

Raspberry Pi Foundation nabízí více produktů, které by se daly rozdělit do několika základních kategorií, a to podle řady a velikosti, resp. počtu a druhu konektorů. Dle druhé jmenované existují následující typy:

• Zero,

• model A/A+,

• model B/B+,

• speciální (např. Raspberry Pi 400 a Pico).

Modely jsou seřazeny dle velikosti základní desky (Zero je nejmenší), s čímž souvisí množství komponentů, které obsahují. Kategorie ‚speciální‘ se toto řazení netýká, jelikož tyto produkty výrazně vybočují. V rámci těchto typů modelů jsou nabízeny ještě 4 řady označené pořadovým číslem, např. je možné tedy zakoupit Raspberry Pi 3 model B+.

Například RPI (Raspberry Pi) Zero jakožto ‚nejúspornější z minipočítačů Raspberry Pi‘ je k dispozici od oficiálního českého resellera (RPishop.cz) v nejnižší konfiguraci za 157,- Kč a obsahuje 40 neosazených GPIO pinů, CSI port pro připojení oficiální kamery

pro Raspberry Pi, napájecí a datový microUSB konektor a microHDMI video konektor [19].

Pro kontrast, největší a hardwarově nejsilnější produkt – Raspberry Pi 4 model B – je již považovaný za plnohodnotnou náhradu osobního počítače. Oproti Zero variantě má například silnější procesor, podporu přehrávání 4k videa s konektory (microHDMI) pro 2 monitory, gigabitový ethernet konektor, WIFI a bluetooth adaptér a audio jack.

Pro splnění cíle práce je využita právě tato varianta, konkrétně s 2 GB RAM [20].

(22)

4.2 Výběr konkrétního modelu

Při výběru konkrétního počítače je třeba zohlednit několik faktorů.

Z důvodu potenciální nekompatibility starších modelů je obecně vhodnější koupit aktuální.

V zamýšleném scénáři se počítá s vystupováním Raspberry Pi jako zmíněná

‚centrální jednotka‘. Bude tedy hostovat server, poběží na něm API koncové body a na základě přijatých požadavků bude fyzicky ovládat LED pásek. To samo o sobě

vyřazuje např. modul Pico kvůli absenci síťového rozhraní. WIFI adaptér není podmínkou, nicméně ušetří jeden kabel, který by jinak musel k minipočítači vést.

Z těchto důvodů byl vybrán model 4 B (konkrétně varianta s 2 GB RAM) – patří do aktuální řady, je zatím nejvýkonnější a má síťové rozhraní v podobě WIFI adaptéru.

Díky tomu je ho nutné zapojit pouze do zásuvky v dosahu domácího routeru a vše ostatní bude fungovat bezdrátově.

Počítač je řízen čtyřjádrovým procesorem Broadcom BCM2711 s frekvencí 1,5 GHz.

Z hlediska konektivity je zde přítomen také bluetooth adaptér, který umožňuje ovládání přes bluetooth myš nebo klávesnici. Pro síťovou komunikaci je k dispozici kromě WIFI také gigabitový ethernet konektor. Pro připojení periferií jsou zde celkem 4 USB-A porty, z toho dva verze 2.0 (vhodné pro klávesnici a myš) a dva verze 3.0 (vhodná například pro datová úložiště). Pro obrazový výstup jsou k dispozici dva microHDMI porty, které nahradily jeden klasický HDMI port z minulé generace [27].

Při nákupu 4. řady Raspberry Pi je ale také nutné vzít v úvahu výrobní vadu – některé adaptéry třetích stran ho považují za audio zařízení, což způsobuje problémy

s napájením [24], které probíhá přes USB-C konektor. Tento problém lze vyřešit nákupem originálního zdroje od Raspberry Pi, u kterého se zmíněná chyba neprojevila.

Důležitá část Raspberry Pi jsou GPIO piny, které jsou popsány ve vlastní kapitole.

4.3 GPIO

GPIO (general purpose input-output) rozhraní je klíčová vlastnost počítačů Raspberry Pi.

Jedná se o 40 pin konektorů sloužících k ovládání libovolných elektrických součástek, které jsou k nim připojené [28].

(23)

Obrázek 4 – Diagram GPIO pinů, převzato z [28]

Piny lze rozdělit na dva základní druhy:

• programovatelné,

• neprogramovatelné.

Neprogramovatelnými piny jsou zde myšleny konektory, které slouží k napájení bez možnosti ovlivnění přes programování. Konkrétně jsou to piny pro 5V výstup (piny 2, 4), piny pro 3,3V výstup (piny 1, 17) a ground piny (piny 6, 14, 20, 30, 34, 9, 25, 39).

Programovatelné piny jsou všechny zbývající. Liší se tím, že jejich výstup je možné ovládat pomocí vlastního kódu, např. v pythonu pomocí knihovny gpiozero [29].

Programovatelné piny umožňují více funkcionalit, některé z nich jsou specifické pro dané piny, některé jsou na všech [28]. Tyto ‚programovatelné piny‘, v obrázku označené jako GPIO {{číslo pinu}} slouží jako vstup nebo výstup, mohou tedy ovládat připojené zařízení, nebo od něj zpracovávat přijímaná data.

Jako příklad je možné uvést PWM piny – PWM (pulse width modulation = pulzně šířková modulace). Princip spočívá v přeměně signálu, který funguje binárně – buď proud prochází (1) nebo neprochází (0) – na signál, který může být zmenšený na libovolný zlomek

maximálního proudu. Tedy, např. kromě 0 a 1 přidá navíc hodnoty jako 0,1, 0,2 apod.

Signál v každou danou chvíli sice stále prochází plně nebo neprochází vůbec, ale pomocí tzv. ‚pulzů‘ dojde k tomu, že v určité době bude průměrný proud na požadované

hodnotě [30]. Tato funkce je potřeba např. pro ovládání LED pásku.

(24)

4.4 Operační systém

Raspberry Pi přichází bez operačního systému, je tedy na uživateli, aby ho zvolil

a nainstaloval sám. Ačkoli je možné zvolit více operačních systémů [31], pro tuto práci je zvolen doporučený operační systém od výrobce – Raspberry Pi OS (dříve Raspbian).

Raspberry Pi OS je volně dostupný operační systém vyvíjený společností Raspberry Pi.

Je založen na Linuxu, konkrétně na Debianu, přičemž je optimalizován pro použití na Raspberry Pi [32].

4.4.1Web server

Jako server byl vybrán Apache http server od společnosti The Apache Software

Foundation. Jedná se o open-source http server pro UNIX-ové systémy i pro Windows [34]

a je využíván na zhruba 40 % serverů na světě [35].

Instalace je provedena přes apt-get pomocí příkazu:

sudo apt-get install apache2

vlastní zpracování

Adresář obsahující soubory zobrazené serverem se nachází v /var/www/html/ a její vlastník je uživatel ‚root‘. V rámci zjednodušení práce je tato složka zpřístupněna všem pomocí příkazu:

chmod -R 777 /var/www/html

vlastní zpracování

Práva s hodnotou 777 znamenají, že jakýkoliv uživatel může číst, zapisovat i spouštět.

7 = 4 + 2 + 1, 4 odpovídá právům pro čtení, 2 právům pro zápis a 1 právům pro spouštění.

První číslo platí pro vlastníka, druhé pro skupinu a třetí pro ostatní uživatele [56].

Je to z důvodu jednoduchého kopírování dat přes SCP a možnost jednoduché editace všech souborů uživatelem ‚pi‘, stejně jako spouštění skriptů zde uložených.

Na serveru budou nastaveny koncové body pro práci s LED páskem. Jako platforma byl vybrán jazyk PHP, je tedy třeba doinstalovat PHP pro Apache pomocí:

sudo apt install php libapache2-mod-php -y vlastní zpracování

(25)

5 Automatizace osvětlení

Následující kapitola se týká vlastní automatizace osvětlení pomocí LED pásku a Raspberry Pi. Nejprve je popsán LED pásek, jeho zapojení a způsob ovládání. Následně je věnována pozornost možným vstupům, kterými je možné pásek ovládat. Konkrétně se jedná

o uživatelské rozhraní, informace o počasí a světelné čidlo.

5.1 LED pásek

Pro automatizaci byl vybrán 1m adresovatelný RGB LED pásek od společnosti

Makeblock [36]. Pro účely naší práce je třeba, aby pásek byl typu RGB, tedy aby mohl vytvářet jakoukoliv barvu. To primárně umožní omezení modrého světla ve večerních hodinách, ale také přinese více možností přizpůsobení. Pásek dále musí být adresovatelný, tj. každou diodu lze ovládat individuálně vstupním zdrojem.

Pásek má tři vstupy označené 5V (‚plus‘ od zdroje), GND (ground, ‚minus‘ ke zdroji) a DO, tedy konektor pro ovládání pásku. Pro účely práce je jako zdroj napájení pásku použit samotný Raspberry Pi, konkrétně 5V PIN 2 jako ‚+‘ a GND PIN 6 jako ‚-‘. Pásek je nutné ovládat např. pomocí PMW [30], je tedy třeba ‚datový vstup‘ pásku připojit

na některý z pinů, který PWM podporuje. Zde to bude PIN 12.

Obrázek 5 – Použité piny, obrázek z [11], doplněno o popis

(26)

Pro umožnění ovládání pásku přes python je postupováno podle návodu

na tutorials-raspberrypi.com [37]. Na konkrétní ovládání je použita knihovna z GitHubu [38]. Podle jejich instrukcí je třeba zakázat používání audio výstupu, jelikož také používá PWM. To je možné udělat vytvořením souboru [38] /etc/modprobe.d/snd-blacklist.conf s obsahem:

blacklist snd_bcm2835

Zbytek instalace potřebných komponent a zmíněné knihovny probíhá podle návodu [37].

Nejprve se nainstalují potřebné balíčky, poté samotná knihovna.

Knihovna nabízí několik ukázkových skriptů v pythonu, ze kterých je zřejmé, jak ovládat pásek přes objekt Adafruit_NeoPixel. Při vytváření instance se předává konstruktoru několik hodnot popisujících pásek, např. počet diod, který PIN konektor je připojen apod.

Po vytvoření instance se pásek inicializuje pomocí metody begin(). Pro rozsvícení určitého pixelu slouží metoda setPixelColor(čísloPixelu, barva). Ta z parametru získá pořadové číslo pixelu, se kterým se manipuluje, a požadovanou barvu. Pro aplikování této změny je nutné zavolat metodu show().

Pro účely automatizace osvětlení je třeba vytvořit skript získávající argumenty z terminálu, pomocí kterých mu budou předány hodnoty barev (red, green, blue) pro rozsvícení. Kostra zmiňovaného skriptu pochází z ukázkového souboru, jež je změněn, aby přijímal

argumenty a vkládal je do upravené funkce.

#!/usr/bin/env python3

import time

from rpi_ws281x import * import argparse

# LED strip configuration:

LED_COUNT = 30 # Number of LED pixels.

LED_PIN = 18 # GPIO pin connected to the pixels (18 uses PWM!).

#LED_PIN = 10 # GPIO pin connected to the pixels (10 uses SPI /dev/spidev0.0).

LED_FREQ_HZ = 800000 # LED signal frequency in hertz (usually 800khz) LED_DMA = 10 # DMA channel to use for generating signal (try 10)

LED_BRIGHTNESS = 255 # Set to 0 for darkest and 255 for brightest LED_INVERT = False # True to invert the signal (when using NPN transistor level shift)

(27)

strip.setPixelColor(i, color) strip.show()

# Main program logic follows:

if __name__ == '__main__':

# parser instance

parser = argparse.ArgumentParser()

# adding parameters for each color

parser.add_argument("red", help="red value", type=int) parser.add_argument("green", help="green value", type=int) parser.add_argument("blue", help="blue value", type=int)

# parse parameters

args = parser.parse_args()

# instance of Adafruit_NeoPixel - LED strip

strip = Adafruit_NeoPixel(LED_COUNT, LED_PIN, LED_FREQ_HZ, LED_DMA, LED_INVERT, LED_BRIGHTNESS, LED_CHANNEL)

strip.begin()

# change all the LED colors to what was given in parameters colorWipe(strip, Color(args.red, args.green, args.blue))

Soubor lightOn.py, vlastní zpracování

Tímto skriptem tedy můžeme přímo ovládat LED pásek, např. tímto příkazem z terminálu:

sudo python3 /cesta/k/souboru/lightOn.py 255 255 255

Po spuštění by se pásek rozsvítil bílou barvou na maximální intenzitě.

5.2 Ovládání pásku přes API

Aby bylo možné ovládání na dálku a jednodušeji pomocí kódu, je třeba vytvořit koncový bod, který skript bude spouštět. V PHP je možné spouštět skript přes terminál pomocí příkazu shell_exec(), např. takto:

<?php

shell_exec("sudo -u root python3 lightOn.py 255 255 255");

?>

Ukázka spuštění python skriptu z PHP, vlastní zpracování

(28)

5.2.1Přístupová práva

Jelikož knihovna pro práci s LED páskem využívá systémové soubory, je potřeba pro spuštění prokázat práva super uživatele (sudo). U běžného skriptu by mělo stačit nastavit právo na spuštění všem, nicméně to zde nestačí ze zmíněného důvodu. Konkrétně se jedná o to, že skript pracuje se souborem /dev/mem, který není možné nechat veřejný.

I kdyby se tak nastavil, po restartu počítače se práva vrátí na původní hodnoty.

Řešením je tedy zařídit, aby skript nebyl spuštěn PHP (vystupující jako uživatel

www-data), ale jako ‚root‘. Toho lze dosáhnout pomocí přidání sudo -u root před příkaz.

Následně se skript spouští, jako kdyby byl iniciován uživatelem ‚root‘, který potřebná oprávnění má.

5.3 Obecná funkcionalita automatizace

Před popisem jednotlivých koncových bodů je vhodné uvést celkový kontext a schéma všech procesů.

LED pásek je fyzicky ovládán python skriptem, který je kvůli zapouzdření ovládání pásku spouštěn pouze z jednoho k tomu určeného koncového bodu. Pro jakoukoliv manipulaci s páskem je tedy třeba zavolat tento koncový bod.

Ovládání probíhá v jednom ze dvou módů – automatickém a ručním. Ruční spočívá v nastavení barvy uživatelem, přičemž tato tam trvale zůstává. Automatický režim je komplikovanější, probíhá zde vyhodnocení několika podmínek, na jejichž základě je určena barva k zobrazení. Vstupy pro podmínky jsou primárně výstup ze světelného čidla, vysoká oblačnost a informace, zda je den či noc. Do těchto podmínek se také započítává atribut nazvaný „intenzita“. Tento jde přímo ovlivnit uživatelem, pokud by se mu zdálo aktuální světlo příliš ostré, může ho nastavit např. na 60 %.

Stavové informace o pásku, jako například uživatelem zvolená barva, aktuálně zobrazená barva, mód, ve kterém se pásek nachází, nebo intenzita jsou uloženy ve vlastních JSON souborech. Klíčové atributy mají vlastní koncové body na jejich editování, které spočívají v převzetí parametru z query stringu (komunikace tedy probíhá pomocí metody GET) a uložení ho do příslušného souboru.

5.4 Světelný senzor

Jeden ze vstupů pro automatizaci osvětlení je světelný senzor UUGear Light Sensor Module [39]. Funguje tím způsobem, že pokud zaznamená úroveň světla vyšší než definovaná hranice, vrátí 0, jinak vrátí 1.

Modul má 4 výstupy v podobě pinů, konkrétně:

(29)

Signál ze světelného senzoru nevyžaduje instalaci externí knihovny, jedná se pouze o zpracování jednoduchého vstupu. Informace o osvětlení jsou získávány pomocí následujícího python skriptu:

import RPi.GPIO as GPIO GPIO.setmode(GPIO.BCM) GPIO.setup(4,GPIO.IN)

print (GPIO.input(4))

Soubor lightSensor.py, vlastní zpracování

Skript nastaví pin 7 (GPIO 4) jako vstupní a získá aktuální hodnotu výstupu ze senzoru.

Ta bude 0 v případě, že úroveň světla přesáhla stanovenou minimální úroveň, a 1 pokud je světla méně než minimální úroveň. Daná hodnota je poté vypsána jako výstup skriptu.

5.4.1 Nastavení hraniční hodnoty osvětlení

Hranici úrovně světla je možné nastavit fyzicky na modulu malým křížovým šroubovákem.

Otáčením regulačního šroubku je třeba správně nakalibrovat hodnotu, aby modul reagoval při požadované úrovni světla.

Při instalaci se naskytl problém – hodnota byla nastavena tak, že při zhasnutí pásku senzor detekoval tmu a pásek se zapnul. Nicméně zapnutí pásku stačilo k tomu, aby senzor zaznamenal světla dostatek, pásek se tedy vypl a celý proces se zacyklil. Tomu je třeba předejít tím, že se mezní hodnota nastaví tak, aby pouze osvětlení z pásku nestačilo k jejímu překonání a aby pásek co nejméně svítil na senzor.

Obrázek 6 – UUGear Light Sensor Module, převzato z [39]

(30)

5.5 Napojení na meteorologickou stanici

Dalším vstupem pro automatizaci osvětlení jsou data pravidelně získávaná

z meteorologické stanice. Jako zdroj je vybrána stránka openweathermap.org. Na stránce je možné získat historické informace z celého světa, aktuální meteorologické informace s aktualizacemi po 10 minutách a předpověď počasí [41].

Pro účely práce je využita možnost získávání aktuálních meteorologických informací podle města. Pro umožnění přístupu je založen účet zdarma a vytvořen odběr pro koncový bod Current weather data, který po zavolání vrací JSON soubor obsahující informace o počasí pro danou lokalitu. Openweather poskytuje také placené plány, ale free plán má limit 60 požadavků za minutu, což pro účely práce stačí. Placené plány poskytují možnost více požadavků za minutu a dodatečné služby, které nejsou relevantní [42].

Příklad požadavku může být tento:

http://api.openweathermap.org/data/2.5/weather?q=Prague&appid={{apiKey}}&

units=metric

Parametr q obsahuje město, appid je API klíč získaný po vytvoření účtu a zapnutí odběru daného koncového bodu (je tedy specifický pro každého uživatele) a parametr units přenáší typ jednotek, ve kterých má být odpověď zaslána. V našem případě jsou to metrické

jednotky.

V práci je tento koncový bod (stejně jako všechny ostatní) volán přes curl z linuxového terminálu, opět pomocí PHP funkce shell_exec().

<?php

shell_exec("curl

'http://api.openweathermap.org/data/2.5/weather?q=$city&appid=$apiKey&uni ts=$units'");

?>

5.6 Soubory uchovávající stavové informace

V kapitole 5.3 byly zmíněny JSON soubory, které uchovávají informace o aktuálním stavu nastavení LED pásku. Tyto soubory obecně uchovávají informace potřebné pro načtení dat do uživatelského front-endu, nebo parametry nastavení, určující, co se konkrétně bude s páskem dít na automatické úrovni.

Soubory mají pro jednoduché ovládání nastavená práva na 777.

(31)

Příklad podoby souboru settings.json je tento:

{

"intensity": "1",

"apiKey": "f3c99f0f47b9db5df7a2e0a2a36bff43", "city": "Prague",

"units": "metric", "mode": "automatic"

}

Soubor settings.json, vlastní zpracování

5.6.2 Soubor currentColor.json

V tomto souboru jsou uloženy hodnoty pro červenou, zelenou a modrou barvu v rozmezí 0–255. K tomuto souboru se přistupuje pouze koncovým bodem ovládajícím pásek, a to při každé změně. Obsahuje tedy v každém okamžiku barvu právě zobrazenou na pásku. Slouží k tomu, aby bylo možné uživateli do jeho rozhraní načíst aktuální barvu a aby bylo možné automatizací pouze ‚nechat původní barvu‘ a tedy ji neměnit.

{

"red": "255", "green": "255", "blue": "255"

}

Soubor currentColor.json, vlastní zpracování

5.6.3 Soubor userColor.json

Zde je technicky stejná situace jako v souboru currentColor.json, liší se pouze v účelu.

Je sem zapisována pouze barva, kterou uživatel nastaví sám v uživatelském rozhraní v ručním módu pásku.

Důvod pro toto rozdělení je možné vyjádřit v následujícím scénáři:

1. Uživatel si nastaví v ručním módu svou barvu, která neodpovídá tomu, co by bylo nastaveno automaticky. Barva se uloží do obou souborů (currentColor.json

i userColor.json).

2. Uživatel přepne mód na automatický, čímž se změní barva na vygenerovanou v rámci automatizace a ta se uloží pouze do souboru currentColor.json.

3. Když uživatel přejde do ručního nastavení barvy, zobrazí se mu hodnoty

odpovídající právě zobrazené barvě (vytvořené automaticky a získané ze souboru currentColor.json).

4. Nyní má uživatel dvě možnosti:

a. Změnit některou z hodnot v závislosti na tom, jaká barva je právě

nastavena, bude tedy pouze upravovat aktuální. Tím se automaticky zapne ruční režim, aby daná barva setrvala.

(32)

b. Nastavit režim zpět na ruční mód bez změny barvy, čímž se na pásku zobrazí barva, kterou nastavil ručně v kroku jedna (ta je stále uložená v druhém souboru, resp. userColor.json). Toto může být výhodné, pokud by uživatel neúmyslně nastavil automatický režim, čímž ztratí dříve ručně nastavenou barvu, a chtěl by se na ni vrátit zpět.

{

"red": 0, "green": 0, "blue": 0 }

Soubor userColor.json, vlastní zpracování

5.7 Koncové body na ovládání souborů se stavovými informacemi

Pro práci se soubory z minulé kapitoly jsou vytvořeny koncové body, které slouží k ukládání změn v těchto souborech. Obecně fungují pomocí metody GET, kdy jsou v URL parametru (query string) uloženy hodnoty, které mají být vepsány do souboru namísto původních. U některých je také kontrola úspěšnosti zapsání změn. Ta vrátí odpověď s hláškou o úspěchu či neúspěchu spolu se stavovým kódem. Je tedy už i v prohlížeči vidět, že daný koncový bod vykonal něco chybně. Pro zjednodušení URL adres jsou všechny koncové body uloženy pod názvem index.php, spouští se tedy pouze pomocí zavolání cesty ke složce, ve které se nacházejí, např. /Automation/Intensity/. Je tím dosaženo určité přehlednosti, jelikož v URL nejsou přípony (.php) souborů.

5.7.1.1Koncový bod /Automation/Intensity/

Tento koncový bod se váže na soubor settings.json, obsahující mj. atribut ‚intensity‘. Tento atribut je používán při automatickém módu pásku, aby procentuálně snížil hodnotu světla, které by jinak bylo automatizací nastaveno.

Pro snadnou změnu tohoto atributu je vytvořen popisovaný koncový bod, který z query string parametru získá hodnotu ‚intensity‘ a přepíše s ní předchozí hodnotu

v souboru settings.json. Následně znovu získá zmíněný soubor a zkontroluje, že se hodnota zapsala správně, na základě čehož vrátí odpověď se stavovým kódem.

(33)

V rámci běhu tohoto koncového bodu je kontrolován předávaný parametr. Pokud neodpovídá hodnotám ‚user‘ nebo ‚automatic‘, nezmění nic.

5.7.3Koncový bod /Led/Color/SaveColors/

Koncový bod SaveColors/ přepisuje hodnoty v souboru currentColor.json. Je volán při každé změně barvy koncovým bodem /Led/Color/, popsaným dále.

Skript získá hodnoty pro červenou, zelenou a modrou v URL parametrech (query string, metoda GET) s názvy ‚red‘, ‚green‘ a ‚blue‘. Ty poté uloží do zmiňovaného souboru.

Pokud některý z parametrů není přítomný, je automaticky nastaven na 0, kromě případu, kdy není přítomen žádný parametr. Tehdy se vrátí chybová hláška a nezmění se nic.

5.7.4 Koncový bod /Led/Color/SaveUserColors/

Tento koncový bod je analogický ke koncovému bodu SaveColors/ – získá barvy přes parametry ‚red‘, ‚green‘ a ‚blue‘, chybějící hodnoty nastaví na 0, pokud nepřišel žádný parametr, nenastaví nic a vrátí chybu. Rozdíl je v souboru, který upravuje, zde se jedná o soubor userColors.json.

5.8 Speciální Koncové body

Následující koncové body se nedají zařadit do dříve jmenované kategorie, jelikož plní určitou charakteristickou funkci. V této podkapitole jsou postupně popsány.

5.8.1 Koncový bod /Automation/Weather/

Tento koncový bod slouží pro získání informací o počasí. Jedná se o zapouzdření volání API meteorologické stanice pomocí údajů uložených v souboru settings.json (api klíč, město a jednotky). Skript zavolá koncový bod pomocí nástroje curl v podobě funkce shell_exex(curl ‚URL‘), popsané v 5.5. Získaný JSON soubor s údaji o počasí poté vypíše přes echo do standardního výstupu pro další zpracování.

5.8.2Koncový bod /Led/Reset/

Při testování funkčnosti automatizace se stával určitý typ chyby. Python skript lightOn.py, sloužící pro přímé ovládání LED pásku musí pro správný běh skončit dříve, než je zavolán znovu. Pokud se tak nestane, tak ‚zamrzne‘ a blokuje všechny ostatní pokusy ho spustit.

Pásek poté není možné ovládat.

V Linuxovém terminálu je možné si nechat vypsat všechny běžící python skripty s názvem lightOn.py např. pomocí tohoto příkazu:

ps -aux | grep python3 | grep lightOn.py

Procesy lze následně vypnout např. takto:

sudo pkill -f \"lightOn.py\"

(34)

Skript na pozadí tohoto koncového bodu provede nejprve první zmiňovaný příkaz

pro zjištění, zda nějaké procesy odpovídající daným podmínkám běží. Následně je vypne pomocí druhého příkazu a poté znovu prvním příkazem zkontroluje, zda byly procesy opravdu ukončeny.

5.8.3 Koncový bod /Led/Color/

Tento skript odpovídá za zobrazení barev na LED pásku, resp. spouštění skriptu lightOn.py.

Koncový bod získává čtyři parametry, tři hodnoty barev a parametr ‚mode‘. Poslední jmenovaný může nabývat hodnot ‚word‘ a ‚rgb‘.

Mód ‚word‘ slouží spíše pro testování, aby bylo možné do URL napsat slovně název barvy místo dlouhého výpisu tří čísel. V tomto případě skript přijímá ještě parametr ‚color‘, kde může být pouze ‚red‘, ‚green‘ nebo ‚blue‘. Dle barvy se spustí příslušný python skript pojmenovaný ve stylu barva.py, který pouze nastaví na LED pásek příslušnou barvu.

Pro běžný chod se používá mód ‚rgb‘, po kterém musí následovat parametry ‚red‘, ‚green‘,

‚blue‘ obsahující čísla od 0 do 255. Ty jsou následně předány jako argumenty python skriptu lightOn.py, aby je zobrazil na pásku.

Zobrazenou barvu, resp. hodnoty pro red, green a blue také uloží do souboru currentColor.json zavoláním koncového bodu /Led/SaveColors/.

Kromě zmíněných funkcionalit skript odešle informace o úspěchu nebo neúspěchu.

5.8.4 Koncový bod /Automation/

Koncový bod Automation/ je stěžejní pro chod automatizace. Zde probíhá veškeré větvení a rozhodování, jaká barva bude zobrazena. V průběhu jsou volány koncové body

pro provedení potřebných akcí. Koncové body se volají již zmíněným způsobem, přes funkci shell_exec() a nástroj curl v Linuxovém terminálu, např. takto:

<?php

shell_exec(„curl ‚localhost/Led/Reset/‘“);

?>

Nejprve jsou ukončeny všechny potenciálně zaseknuté běhy python skriptu lightOn.py, které by znemožňovaly práci s LED páskem (viz kapitola 5.8.2) zavoláním koncového bodu /Led/Reset/.

Následně jsou získány informace o počasí (přes koncový bod /Automation/Weather/), světelného senzoru a nastavení (soubor settings.json), konkrétně mód a intenzita.

Na základě těchto vstupů se postupuje následovně:

Pokud je uživatelský mód ‚user‘ neboli ruční, získá se uživatelská barva ze souboru

(35)

světla se nastaví na hodnotu procentuálně odpovídající oblačnosti (oblačnost je 95 %, pásek svítí hodnotou 255 * 0,95). V noci se v tomto kroku vždy nastaví modrá barva na 0.

Nakonec se aktuální hodnoty barev vynásobí intenzitou (pokud je intenzita 50 %, vezme se aktuální číslo a vynásobí 0,5).

Výsledná barva je zobrazena pomocí koncového bodu /Led/Color/.

5.9 Automatizace pomocí cron

Linux obsahuje vestavěnou funkcionalitu na automatické spouštění procesů s názvem cron.

Cron je služba, která umožňuje naplánované spouštění nastavených operací v určitý čas nebo podle určitých pravidel [43]. Dá se tak učinit přes tzv. tabulku (jedná se ale o textový soubor), jejichž záznamy (řádky) odpovídají naplánovaným operacím. Editace tabulky je možná zadáním příkazu:

crontab -e

5.9.1 Funkcionalita

V řádku je vždy specifikováno plánování a akce, která má být vykonána. Časové plánování se zapisuje pomocí 5-ti hodnot odpovídajících minutám, hodinám, dnům v měsíci,

měsícům a dnům v týdnu (v tomto pořadí) oddělených mezerami [43]. Je možné napsat konkrétní hodnoty, rozsahy nebo hvězdičku, která odpovídá jakékoliv hodnotě. V této práci je použito plánování v podobě ‚* 8-22 * * *‘, jelikož chceme skript pouštět každou minutu každý den, ale pouze od 8 hodin ráno do 22:59.

5.9.2 Konkrétní skript

Cíl automatizace v cronu je pravidelné volání koncového bodu /Automation/. Cron neumožňuje častější spouštění než každou minutu, proto je vytvořen spustitelný skript pro linuxový terminál, který bude volat zmíněný koncový bod každé 3 vteřiny celkem 18krát, poté skončí a je spuštěn znovu cronem, jelikož nastane další minuta (vykonání akce na koncovém bodu může trvat až několik vteřin, na konci každé minuty je ponechána rezerva, aby se skript nespustil vícekrát najednou). Skript vypadá následovně:

#!/bin/bash for i in {1..18}

do

curl 'localhost/Automation/' sleep 3

done

Soubor setWeather.sh, vlastní zpracování

Aby byl tento skript spouštěn pravidelně, je do cron tabulky přidán následující řádek:

* 8-22 * * * bash /home/pi/Automation/setWeather.sh Výpis z cron tabulky, vlastní zpracování.

(36)

5.10 Webový front-end

Pro ovládání pásku je vytvořeno uživatelské rozhraní dostupné na adrese /Led/. Rozhraní se skládá ze tří částí:

• ruční nastavení barvy,

• nastavení intenzity,

• obecné nastavení.

Zde se jedná o front-end, skripty tedy poběží na klientovi. Základní vykreslení stránek probíhá v PHP, jelikož je možné některá data připravit, např. hodnoty posuvníků na základě hodnot uložených ve stavových souborech. Veškerá ostatní komunikace je napsaná v javascriptu, na konci každé kapitoly je napsaný název souboru ovládající danou stránku.

5.10.1Ruční nastavení barvy

Tato část se skládá ze tří posuvníků, každý ovládající úroveň jedné ze tří základních barev – červená, zelená a modrá. Kdykoliv dojde ke změně jednoho z posuvníků, nově nastavená barva se zobrazí na pásku zavoláním koncového bodu /Led/Color/. Kromě toho se barva uloží jako uživatelská barva v souboru userColor.json.

Dále se také pomocí koncového bodu /Automation/Mode/ nastaví mód uživatelský, tedy

‚user‘. Jakmile by uživatel při zapnutém automatickém režimu zadal barvu, při další aktualizaci za několik vteřin by se vrátila jiná, automaticky nastavená. Proto se při jakékoliv ruční změně barvy zapíná ruční mód.

Stránka je v /Led/ManualColor/ a ovládá ji skript ledControl.js.

(37)

5.10.2Nastavení intenzity

Podobně jako minulá část při jakékoliv změně zapínala ruční mód (‚user‘), jakákoliv změna zde zapíná automatický mód (‚automatic‘).

V této části uživatelského rozhraní lze měnit pouze intenzitu barvy automaticky vybrané.

Opět je k dispozici posuvník, který může být v hodnotách 0–100, kde 0 je vypnuto a 100 je plná barva, která byla vybrána koncovým bodem /Automation/.

Stránka se nachází v /Led/ a ovládá ji skript intensity.js

Obrázek 8 – Nastavení intenzity, vlastní zpracování

5.10.3Obecné nastavení

V této části je možné přepínačem změnit mód, resp. vybrat mezi ‚user‘ a ‚automatic‘.

Změna módu okamžitě volá koncový bod /Automation/, což způsobí ‚překreslení‘ pásku na základě učiněné změny.

Dále je zde tlačítko ‚reset‘, které zavolá koncový bod /Led/Reset/, což má za účel ukončit potenciální zaseknuté běhy skriptu lightOn.py, který je zodpovědný za manipulaci

s páskem.

Tato stránka je v /Led/Settings/ a je ovládaná skriptem settings.js.

(38)

Obrázek 9 – Obecné nastavení, vlastní zpracování

5.11 Popis vlastní automatizace z hlediska uživatele

Systémový background vlastního řešení je již popsán, nicméně nebyl dán důraz na používání pásku z hlediska uživatele, tedy jak by se měl či mohl používat.

Při vývoji systému pro ovládání pásku byl dán důraz na umožnění kontroly nad páskem, zejména jednoduchá možnost nastavení libovolné barvy. Pro tyto účely existuje tzv. ‚ruční mód‘. Možnosti automatizace, kdy je osvětlení upravováno automaticky na základě

vnějších podmínek, jsou využívány v ‚automatickém módu‘.

5.11.1Ruční mód

Ruční mód je možné zapnout ručně přes nastavení, viz kapitola 5.10.3, nebo tím, že uživatel jakkoliv změní barvu v ručním nastavení barvy (kapitola 5.10.1). Při ruční změně barvy tedy daná barva již zůstane, nebude se automaticky měnit. V rámci ručního módu je možné nastavit libovolnou barvu pomocí posuvníků pro červenou, zelenou a modrou, přičemž rozsah posuvníků je 256 hodnot (0–255).

Hlavní nabídku pro ruční mód, tedy stránku pro ruční nastavení barev (5.10.1), je možné

(39)

Při načtení v jakýkoliv okamžik z libovolného zařízení se načte aktuální barva, která je právě na pásku nastavená (posuvníky jsou nastavené na hodnotách odpovídajících dané barvě). To umožňuje jemně doupravit aktuální barvu bez toho, aby se musela hledat.

Jelikož je hodnota uložena na serveru, může se barva nejprve nastavit např. na počítači a při otevření aplikace na jiném zařízení (např. na smartphonu) se změna projeví a posuvníky budou ukazovat barvu aktuální.

5.11.2Automatický mód

Na tento mód je opět možné přepnout pomocí nastavení (5.10.3) nebo změnou posuvníku intenzity světla v nastavení intenzity (5.10.2). Funkcionalita je stejná jako při změně barvy, pouze při změně intenzity se automaticky změní mód na ‚automatický‘.

Jak napovídá název, v tomto módu se pásek zapíná, vypíná a upravuje sám v závislosti na okolním prostředí. O prostředí dostává informace ze senzoru světla a pomocí napojení na API aplikace OpenWeatherMap.

Podmínky fungují následovně:

• Pásek se rozsvítí pouze, pokud senzor nahlásí nedostatek světla.

o Př.: Kdyby byla noc, ale rozsvícené jiné světlo, které způsobí dostatek světla pro senzor, pásek je vypnutý.

o Př.: Pokud je den, ale dle senzoru je tma, např. při bouřce, tak se rozsvítí.

• Ve dne je hodnota nastavena na 90 % z maximální hodnoty – 255 pro každou barvu.

o Pokud je oblačnost přes 90 %, nastaví se barvy na stejný počet procent z 255.

o Př.: Oblačnost je 95 %, světla svítí na 95 % z 255.

• V noci se nastaví modré světlo na 0, tedy nebude svítit.

• Výsledné hodnoty barev se vynásobí intenzitou, přičemž intenzita 100 odpovídá 100 %, tedy 1.

Pomocí intenzity lze tedy nastavit barvu na maximálně 90 %, více je možné dosáhnout pouze, pokud je velká oblačnost. Dále je možné pásek vypnout pomocí nastavení intenzity na 0.

5.12 Otestování funkčnosti automatizace

Testování funkčnosti probíhalo v průběhu vývoje jednotlivých komponent. Pásek byl po celou dobu vývoje a poté 7 dní v testovacím provozu používaný jako večerní osvětlení ložnice. Během této doby byla kontrolována funkcionalita v následujících ohledech:

• pásek se zapne při snížení úrovně osvětlení v místnosti a vypne při dosažení minimální hodnoty,

• po západu slunce se vypne modré světlo,

• v jakoukoliv chvíli je možné přepnout mezi ručním a automatickým módem v Základním nastavení (5.10.3),

• změna intenzity (5.10.2) zapne automatický mód,

• změna barvy (5.10.1) zapne ruční mód,

Odkazy

Související dokumenty

L'int~grale de Riemann-Liouville et le probl~me de

cifra: nevíme kolik máme možností, protože záleží na tom, jestli už na místo druhé nebo t ř etí cifry byla vybrána nula ( ⇒ 8 možností pro první cifru) nebo ne ( ⇒

Doporučuji marketingovému oddělení zaměřit se na jednu výhodu, co konkurence nenabízí (např. některou podle praktických příkladů z předešlé kapitoly) a

Mechanismy chemického účinku výrazně ovlivňuje sloţení leštící suspenze, musí být iontově vyváţeno, aby nedocházelo k destabilizaci. Výsledkem mohou být

(dále jen Hon-kovo) a na základ ě této analýzy zpracovat návrh nového systému operativního ř ízení zakázkové výroby.. Strategické ř ízení výroby II.

Informa č ní systém Advanced Planning and Scheduling APS definujeme jako nástroj pro pokro č ilé plánování a rozvrhování výroby na úrovni jednoho

Cílem této kapitoly je popis grafického rozhraní vytvo ené ídicí aplikace pro model domu, na které jsou ukázány možnosti Raspberry Pi 2 s dotykovým LCD

Název práce: Použití Raspberry Pi pro automatizaci osvětlení chytré domácnosti Řešitel: Petr Klepetko.. Vedoucí