Domácí automatizace

Odpovědět
Uživatelský avatar
Metuzalem
Člen_SubaruFanClubu
Člen_SubaruFanClubu
Příspěvky: 2201
Registrován: pát zář 22, 2017 5:52 pm
Jméno a příjmení: Milan P.
Bydliště: venkov u Jaroměře

Re: Domácí automatizace

Příspěvek od Metuzalem »

No když teda jinak nedáte... :-) :-) :-)

Ale nejdřív pár poznámek:
hamoun: pokud něčemu budeš rozumět, tak určitě ne díky přečtení mých příspěvků :-)
VDC: když to zajímá dokonce tebe, tak proč vlastně čekám a HonzuCZ? No, jsem prostě slušný člověk :-)

A teď už k věci:

Home Automation à la Metuzalem
Kapitola 1. - Úvod (lze přeskočit)

Když jsem odešel do důchodu, tak jsem se rozhodl definitivně vyřešit frustraci z neznalostí, kterou jsem neměl čas řešit, dokud jsem pracoval. Jaké že neznalosti způsobovaly tu frustraci? Především fakt, že se živím programováním a neumím C(++), ke kterému jsem se v celém svém programátorském životě nedostal. A potom nenaplněná touha bastlit, tj. sestavit něco hmatatelného co funguje a navíc to můžu programem ovládat. Paradoxně mám sice ČVUT FEL, ale jednak silnoproud a jednak mě život nasměroval nejdřív k zvukařině (v ČR) a pak k programování v obskurních (MUMPS) i méně obskurních (Pascal, C#) "vyšších" programovacích jazycích. Směrem k HW jsem jen nesměle pokukoval, na koníčky nebylo moc času (do 35ti jsem navíc ještě jezdil jako muzikant po tancovačkách s bigbeatem), živil jsem 3 děti a doby byly rušné a peněz málo.

Tak jsem si pro důchodový boj s frustrací, stářím, parkinsonem a alzheimerem vytyčil 2 směry: zvládnout programování v C++ a bastlení spojené s Arduinem jako nejsnadnějším úvodem do mikroprocesorů. A aby to nebylo úplně samoúčelné, tak za cíl jsem zvolil malou domácí automatizaci. Po elementárních pokusech s měřením teploty a blikáním ledkou mi bylo jasné, že se mi nelíbí Arduino IDE a začal jsem bádat, jak se vlastně standardně programují mikroprocesory od Atmelu (nyní už Microchipu). Nainstaloval jsem Atmel Studio, zakoupil programátor Atmel ICE a naučil se psát a ladit programy, spuštěné v mikroprocesoru, v tomto prostředí. Nejprve jsem využil schopnosti Atmel Studia "nacucnout" do sebe projekt z Arduino IDE, pak jsem to už uměl založit od začátku sám (bez Arduino IDE) a mohl se pustit do psaní konkrétních programů.

Pokračování příště
Forester 2.0XT Comfort, MY2017, SJ - Šedivák
Uživatelský avatar
Metuzalem
Člen_SubaruFanClubu
Člen_SubaruFanClubu
Příspěvky: 2201
Registrován: pát zář 22, 2017 5:52 pm
Jméno a příjmení: Milan P.
Bydliště: venkov u Jaroměře

Re: Domácí automatizace

Příspěvek od Metuzalem »

Home Automation à la Metuzalem
Kapitola 2. - Proč chci domácí automatizaci (lze přeskočit)

Nepotřebuju ovládat světlo, teplo a venkovní žaluzie - to mám vyřešené dodavatelsky, před 10 lety nebyl čas dělat si to sám. Moduly jsou v rozvaděči, ven to propojuje sběrnice tvořené Cat5 dráty s napájením na 24V, sběrnice propojuje mozek v rozvaděči s tlačítky ovládajícími spínání světel a posouvání rolet, s ovládacím dotykovým displejem na zdi a s hlavicemi na radiátorech. Bylo by sice fajn mít to propojené s níže uvedeným mnou vytvářeným systémem, ale zatím to neplánuju.

Co ale nevím a přitom bych velmi chtěl vědět: co dělá v technické místnosti automatický kotel na pelety, jaké teploty jsou v jeho primáru, v akumulační nádrži, jakou teplotu pouštím do topení. A taky a hlavně potřebuju řešit relativně časté výpadky elektřiny. Když už dojde k výpadku a potom vše zase naběhne, potřebuju mít informaci, zda k výpadku došlo v době, kdy kotel topil nebo kdy byl odstaven, protože podle toho můžu kotel pustit bez osobní kontroly kotle (a teoreticky automaticky), zatímco v tom druhém musím dojít vyčistit topeniště. Ve skutečnosti je to ještě o trochu složitější, ale to není pro tento popis podstatné.

Dále pak chci vědět, co dělá vodárna - zda neběží nějak podezřele dlouho, protože to by znamenalo, že nám někde nezavře napouštění vody u WC (ze studny používáme vodu jako užitkovou na splachování WC) a to není moc dobré pro vodárnu, studnu, ani ČOVku. Toto se už stalo, vodárna byla rozpálená po několikahodinovém provozu jako pětník a trvat to ještě o něco dýl, tak je v lepším případě jen po motoru.

Podobně bych chtěl vědět, zda není nějaký podezřele douhotrvající odběr na obecním vodovodu (voda na mytí, vaření, praní, všechno kromě splachování WC), protože to by znamenalo, že někde teče voda na zem (z myčky, pračky apod.). To se naštěstí zatím ještě nestalo, ale všechno je jednou poprvé, že.

Toto jsou úplně základní požadavky, jako nadstavba pak můžu vymýšlet, jak sledovat stav a ovládat vrata garáže (bývalá stodola), vjezdovou bránu, sledovat průběh spotřeby proudu v domě, sledovat vjezd a branku kamerou, dát kamery na pozemek kvůli srnkám, prasatům, slepicím, zajícům apod. a další a další víceméně zbytné věci.

Pokračování příště
Forester 2.0XT Comfort, MY2017, SJ - Šedivák
Uživatelský avatar
Metuzalem
Člen_SubaruFanClubu
Člen_SubaruFanClubu
Příspěvky: 2201
Registrován: pát zář 22, 2017 5:52 pm
Jméno a příjmení: Milan P.
Bydliště: venkov u Jaroměře

Re: Domácí automatizace

Příspěvek od Metuzalem »

Home Automation à la Metuzalem
Kapitola 3. - Něco o HW (lze přeskočit)

Prvotní otázkou bylo, jak vymyslet síť se senzory a jakým způsobem se data ze senzorů dostanou na server.

Tahat další kabely po baráku jsem nechtěl, už tak jich tam je natahaných dost. A taky nepředpokládám, že moje neumětelské bastly vydrží bůhvíjak dlouho, tak abych pak, až skončí na smetišti dějin, neměli dědicové všude jen samé zbytečné a nevyužité zásuvky a dráty odnikud nikam. A taky předpokládám, že některé uzly budou umístěné tam, kde není přívod elektřiny a nevedou tam ani žádné jiné dráty a tahat je tam nechci neb je to blbost.

Takže vzduchem. Zkoušel jsem dosah WiFi v domě a po zahradě (7500 m2) a zdá se, že žádné běžně dostupné WiFi řešení neposkytne dostatečně spolehlivé spojení přes několik tlustých kamenných zdí a vzdálenost 80 m do stodoly a dál až 200 m do zahrady. Asi by se to dalo řešit nějakými repeatery, ale to mi není sympatické a většinou potřebuje přívod elektřiny.

Raději jsem pro komunikaci zvolil RF síť typu hvězda, kde jednotlivé uzly (node) jsou vybaveny Arduinem Pro Mini 3.3V/8MHz a transceiverem RFM69HW, pracujícím v 433 MHz pásmu a dosahem, který jsem pokusně ověřil a je víc než dostatečný a navíc regulovatelný výkonem transceiveru. Uzlů v jedné síti může být až 255, což mi bohatě stačí, provoz je šifrovaný, komunikační protokol je v té nejnižší úrovni dán transceiverem, vyšší úroveň jsem si vymyslel sám. Ve středu hvězdy je brána (gateway), která přímo komunikuje s každým obyčejným uzlem (vždy právě jen s jedním) a zprostředkovává komunikaci s nadřízeným serverem. Brána je vybavena mikroprocesorm ATMega 1284p 3.3V/16 MHz a stejným transceiverem RFM69HW. Konfigurace sítě je statická, takže se do ní nemůže automaticky přidat nový uzel (je nutné "ručně" překonfigurovat nadřízený server). Výhodou Arduina Pro Mini + RFM69HW je mj. relativně nízká spotřeba v klidovém stavu (spací spotřeba), což dovoluje koncipovat provoz vybraných uzlů na baterie.

Nadřízeným serverem je (přesněji bude) NodeJS backend aplikace, která má víc úkolů. Primárním úkolem je shromažďovat data získaná z uzlů RF sítě, ukládat je a předzpracovávat. Dále by měla fungovat jako html server pro aplikaci, která bude zobrazovat aktuální i historická data, umožní správu RF sítě, ovládání aktuátorů a správu havarijních stavů. Interface bude jako html aplikace spustitelný kdekoliv a není nějak moc závislý na zařízení, na kterém poběží.

NodeJS backend aplikace poběží na Raspberry Pi, které mám v jedné krabičce s bránou, se kterou bude komunikovat po sériové lince. Do LAN bude RasPi připojené přes drát, protože bude fyzicky ležet hned vedle WiFi routeru. Přehledová obrazovka interfacu trvale poběží na dalším Raspberry Pi s dotykovou obrazovkou, ale samozřejmě pustit si to půjde na telefonu, tabletu i počítači, a to přes WiFi.

Pokračování příště
Forester 2.0XT Comfort, MY2017, SJ - Šedivák
Uživatelský avatar
Metuzalem
Člen_SubaruFanClubu
Člen_SubaruFanClubu
Příspěvky: 2201
Registrován: pát zář 22, 2017 5:52 pm
Jméno a příjmení: Milan P.
Bydliště: venkov u Jaroměře

Re: Domácí automatizace

Příspěvek od Metuzalem »

Home Automation à la Metuzalem
Kapitola 4. - Něco o SW (lze přeskočit)

Záhy jsem pochopil, že se mi standardní knihovny pro Arduino nelíbí, ale taky jsem se necítil dost kovaný, abych si napsal všechno sám od píky. Naštěstí lze stát na ramenech obrů, pro mě se stal takovým obrem Mikael Patel a jeho projekt "Cosa, object-oriented platform for Arduino/AVR" (http://forum.arduino.cc/index.php/topic,150299.0.html a https://github.com/mikaelpatel/Cosa). Převedl jsem si jeho kód tak, aby šel kompilovat a ladit pod Atmel Studiem a stavím na něm přesto, že ho Mikael už dále nevyvíjí a jde už víceméně o mrtvý projekt.

Toto vývojové prostředí (Atmel Studio + programmer Atmel ICE + Cosa knihovny) v současnosti používám pouze pro elementární výzkum a ladění - vyvíjím a upravuji knihovny s drivery pro nejrůznější senzory / aktuátory (většinou najdu něco v Cosa, něco beru ze standardních knihoven pro Arduino a pak to dopracovávám dle datasheetů a svých potřeb. A taky Atmel Studio užívám pro zjištění aktuálního nastavení "fuses" a "lockbits" a případně otestování jejich změny).

Pro vývoj kompletní sady programů pro domácí automatizaci mi Atmel Studio nevyhovuje - např. je poměrně složité kombinovat mnoho různých knihoven v jednom projektu, současně je složité mít několik výstupů z kompilace projektu (pro různé procesory, různé uzly, gateway, pokusy, ...). Nastudoval jsem tedy CMake systém, naučil se překládat a flashovat (by avrdude) bez IDE a napsal si pro to v CMake podporu.

Pro backend jsem zvolil NodeJS + typescript (aspoň si bude s čím plést nově naučené C++), protože vím, že v tom budu umět napsat vícevláknovou aplikaci, webový server, komunikovat s databází, komunikovat se sériovým portem, všechno to bude přenositelné mezi windows a linuxem (na Raspi) a navíc jsem už něco málo v js napsal. Vím, že to není jediná možnost, jak backend napsat, ale nechtěl jsem použít předvařené komponenty, jako jsou Node-RED nebo Mosquitto MQTT broker + OpenHAB, protože nemám z principu rád deklarativní způsob práce - když mám napsat řádek kódu, je to pro mě zábava, když mám napsat řádek konfiguračního souboru, je to otrava. A už vůbec mě nebaví zkoumat, jak udělat to co chci s prostředky, které to buď v podstatě neumožňují, nebo to není popsané, nebo je to v nové enhanced verzi jinak a hack, co fungoval v minulé verzi, už v této nefunguje... Jako by nestačilo, že udržovat vývojový počítač v up-to-date stavu je dnes už pomalu práce na plný úvazek :-)

Jako IDE dlouho vedl editor Sublime Text, následoval Atom (Vim ani Emacs jsem se v mládí nenaučil a teď k stáru už to nedohoním), nakonec jsem zvolil Microsoft Visual Studio Code, aneb VSCode. Je v něm docela dobrá podpora (by extension) pro C++ i pro typescript/javascript a NodeJS, dá se tam psát dokumentace v markup, překládám a flashuju přes CMake a integrovanou cmdline, pomocné ladící výstupy z UARTu čtu přes putty. Debugger v C++ jsem ve VSCode zatím nerozchodil (potřebuju debugovat kód běžící na mikroprocesoru, nativně by to asi fungovalo). Debugger v typescriptu/javascriptu samozřejmě chodí bez problémů.

A jedna třešnička na dortu a výhoda tohoto řešení - CMake, AVR Toolchain, NodeJS + typescript jsou kompletně použitelné i pod Raspbianem, k dispozici je i starší verze VSCode, takže když je potřeba, lze pracovat (ladit) přímo na Raspi. Stačí nainstalovat potřebné programy a pak už jen sdílet nastavení VSCode, CMake moduly a kód v C++/typescriptu přes Mercurial nebo Git - já mám radši z historických důvodů Mercurial.

Pokračování příště
Forester 2.0XT Comfort, MY2017, SJ - Šedivák
Uživatelský avatar
Metuzalem
Člen_SubaruFanClubu
Člen_SubaruFanClubu
Příspěvky: 2201
Registrován: pát zář 22, 2017 5:52 pm
Jméno a příjmení: Milan P.
Bydliště: venkov u Jaroměře

Re: Domácí automatizace

Příspěvek od Metuzalem »

Home Automation à la Metuzalem
Kapitola 5. - Stav projektu? (lze přeskočit)

Aktuálně mám víceméně odladěné komplet všechny potřebné knihovny, napsaný firmware pro uzel u kotle a pro bránu (teď ladím komunikaci mezi těmito dvěma na prototypech desek, jejichž definitivní PCB v SMD variantě nechám po odladění udělat v Číně, zatím je dělám jako THT za babku v Pardubicích na plosnaky.cz, návrhy jsou v bezplatném Eaglu, osazuju si to samozřejmě sám). Mám rozchozené vývojové prostředí pod Raspi, ukryté v krabičce od nefunkčního settopboxu, na Raspi běží Raspbian z SSD disku (včetně bootu, SD kartu vůbec nepotřebuju), umím udělat komplet zálohu na externí USB disk (a taky komplet restore) pomocí shell skriptu a rsync.

Jsem tedy po cca dvou letech tak zhruba uprostřed celého projektu a netuším, kdy a zdali ho vůbec dokončím :-) Je tu tolik možností jak systém chránit před dokončením - stačí se zmínit o možnostech různých mini-UPS s superkondenzátory pro backend, kamery s detekcí pohybu zajíce, co hoduje na zelenině, ... Prostě mě to baví a je to relativně bezpečné hraní.

Pokračování příště
Forester 2.0XT Comfort, MY2017, SJ - Šedivák
Uživatelský avatar
Metuzalem
Člen_SubaruFanClubu
Člen_SubaruFanClubu
Příspěvky: 2201
Registrován: pát zář 22, 2017 5:52 pm
Jméno a příjmení: Milan P.
Bydliště: venkov u Jaroměře

Re: Domácí automatizace

Příspěvek od Metuzalem »

Home Automation à la Metuzalem
Obrazová příloha (lze přeskočit)
Přílohy
THT prototypová deska uzle pro kotel.
THT prototypová deska uzle pro kotel.
Pomocná deska, simulující bránu, sloužila při zjišťování dosahu komunikace.
Pomocná deska, simulující bránu, sloužila při zjišťování dosahu komunikace.
THT prototypová deska brány. Na obrázku je připojena k programátoru Atmel ICE.
THT prototypová deska brány. Na obrázku je připojena k programátoru Atmel ICE.
Pohledy do "dílny".
Pohledy do "dílny".
05_Shop2.jpg
06_Shop3.jpg
07_Shop4.jpg
Forester 2.0XT Comfort, MY2017, SJ - Šedivák
Uživatelský avatar
Metuzalem
Člen_SubaruFanClubu
Člen_SubaruFanClubu
Příspěvky: 2201
Registrován: pát zář 22, 2017 5:52 pm
Jméno a příjmení: Milan P.
Bydliště: venkov u Jaroměře

Re: Domácí automatizace

Příspěvek od Metuzalem »

Home Automation à la Metuzalem
Obrazová příloha - pokračování (lze přeskočit)

Pokračování příště nebude.

S díky za trpělivost
Váš Metuzalem
:-)
Přílohy
Programování ve VSCode.
Programování ve VSCode.
Programování v Atmel Studiu.
Programování v Atmel Studiu.
Forester 2.0XT Comfort, MY2017, SJ - Šedivák
Uživatelský avatar
VDC
Předseda klubu
Předseda klubu
Příspěvky: 49152
Registrován: ned črc 26, 2009 12:00 am
Jméno a příjmení: Tomáš Vlasák
Bydliště: Srázná 477/16a, Plzeň
Kontaktovat uživatele:

Re: Domácí automatizace

Příspěvek od VDC »

Milane moc mě to zajímá, ačkoliv programování vůbec nerozumím. Takže za mě fakt zajímavý !
http://monstersubaru.eu
https://www.instagram.com/vdc.monstersubaru/
Subaru Outback 3,0 H6 '01
Toyota Previa 4WD 2.4 ´97
Uživatelský avatar
quickly
Místopředseda klubu
Místopředseda klubu
Příspěvky: 16139
Registrován: pát srp 14, 2009 12:00 am
Jméno a příjmení: Daniel Rychlý
Bydliště: Hradubice
Kontaktovat uživatele:

Re: Domácí automatizace

Příspěvek od quickly »

Metuzalem: smekám před tebou :-()()-: . Máš to moc dobře vymyšlené. Už vím, co budu dělat v důchodu - vzor jsi TY >:-@
quickly

Outback BS 2.5 MY19 Obrázek Outback BR 3.6R MY10 Obrázek

Legacy BR 2.0 MY15
ex Legacy BL SpecB AT 9.8 l/100 124 tkm
ex Forester SJ CVT 7.3 l/100 km 267 tkm
ex Forester SH 2.0D 6.7 l/100km 218 tkm
Uživatelský avatar
mnov
Závislý uživatel
Závislý uživatel
Příspěvky: 7829
Registrován: ned lis 24, 2013 6:54 pm
Jméno a příjmení: Marek Novák
Bydliště: Praha

Re: Domácí automatizace

Příspěvek od mnov »

Metuzalem píše:Raspbian z SSD disku (včetně bootu, SD kartu vůbec nepotřebuju), umím udělat komplet zálohu na externí USB disk (a taky komplet restore) pomocí shell skriptu a rsync.
Tohle musím také udělat, protože už to bude zase rok co se naposled obnovovala SSD karta.
Jinak je vidět, že jsi pan Programátor. Pěkná zábava na důchod. ,,,,| (*_^) |,,,,
Forester 2004 2.0 MT LPG
Impreza 2004 2.0 AT
Uživatelský avatar
spm
Člen_SubaruFanClubu
Člen_SubaruFanClubu
Příspěvky: 22709
Registrován: úte kvě 03, 2016 3:19 pm
Jméno a příjmení: Jan Krajdl

Re: Domácí automatizace

Příspěvek od spm »

Moc pěkný :-) Jenom taková úplně blbá poznámka - ty screenshoty se dají vyřešit i líp ;-D
Subaru Outback BH 3.0 H6 Obrázek
Subaru Libero SDX Obrázek
Hyundai i20 1.2 2012 Obrázek
Volkswagen Transporter T4 Syncro 2.5TDI R5 Obrázek
Uživatelský avatar
mnov
Závislý uživatel
Závislý uživatel
Příspěvky: 7829
Registrován: ned lis 24, 2013 6:54 pm
Jméno a příjmení: Marek Novák
Bydliště: Praha

Re: Domácí automatizace

Příspěvek od mnov »

spm píše:Jenom taková úplně blbá poznámka - ty screenshoty se dají vyřešit i líp
Tohle se mi líbí na programátorech. Takové věci neřeší. :-)
Forester 2004 2.0 MT LPG
Impreza 2004 2.0 AT
Uživatelský avatar
HonzaCZ
Člen_SubaruFanClubu
Člen_SubaruFanClubu
Příspěvky: 21953
Registrován: pát črc 31, 2009 12:00 am
Bydliště: Praha

Re: Domácí automatizace

Příspěvek od HonzaCZ »

Tak to je paráda, jak si s tím hraješ. :-)

Mě teda víc baví většinu věcí pořešit z něčeho hotového a pak to jenom správně "zadrátovat", ať už ve smyslu HW nebo SW. Nebo jen trochu upravit. Vzhledem k verzovacím systémům není problém se "upnout" na nějaký verzi a není tedy nutný sledovat vývoj knihoven a hotových věcí a není potřeba se bát, že autor/ři něco rozbijí nebo změní. Obecně mě nebaví vymýšlet kolo a dost často ho ani vyrábět... tento přístup jsem si osvojil v práci a přijde mi dost zásadní. Neříkám, že tak to má každej, ale pro mě to je nutnost, pokud chci z toho dostat aspoň částečně funkční produkt. :-) Mě totiž nebaví vymýšlet ani programovat věci, o kterých jsem přesvědčenej, že už je musel někdo udělat. A taky nemám rád komplikovaný věci. Takže mě vyloženě baví naflashovat třeba do ESP8266 firmware ESPEasy a jenom si naklikat, co to má dělat. V případě automatizace mi ani tak nejde o to si hrát se samotnými prostředky, ale spíš řešit samotná pravidla a vytvářet tu funkcionalitu. Potřebuju, co nejlíp využít volný čas, který jsem do toho ochotný investovat. :-)
SOLCtech
V mládí jsem býval namyšlený, nicméně dnes už jsem bez chyby!
Legacy 3.0R sedan 5AT MY2007 (BLE) Obrázek [vlákno o autě]
Outback 2.5GX 4AT/VTD MY2001 (BH9) - prodáno
Uživatelský avatar
HonzaCZ
Člen_SubaruFanClubu
Člen_SubaruFanClubu
Příspěvky: 21953
Registrován: pát črc 31, 2009 12:00 am
Bydliště: Praha

Re: Domácí automatizace

Příspěvek od HonzaCZ »

mnov píše: Tohle se mi líbí na programátorech. Takové věci neřeší.
Jak kteří... :-D
SOLCtech
V mládí jsem býval namyšlený, nicméně dnes už jsem bez chyby!
Legacy 3.0R sedan 5AT MY2007 (BLE) Obrázek [vlákno o autě]
Outback 2.5GX 4AT/VTD MY2001 (BH9) - prodáno
Uživatelský avatar
hamoun
Člen_SubaruFanClubu
Člen_SubaruFanClubu
Příspěvky: 19080
Registrován: ned čer 12, 2011 9:16 pm
Jméno a příjmení: Petr Hanek
Bydliště: Kravaře

Re: Domácí automatizace

Příspěvek od hamoun »

Ja vedel, ze ten "příspěvek" bude stat za to :) Parada :)
PS: ja uz C++ zapomnel … a to jsem se jim i zivil ... smutny pribeh :)
škoda superb
ex WRX 2008
Odpovědět

Zpět na „Dům, dílna, zahrada“