Ovládání věcí - úvod do diskuze

Myšlenku nic neprogramovat a použít nějaký existující systém jsem byl nucen opustit

Co by to mělo umět:

  1. Světla (zapínání/vypínání, intenzita), asi s nějakou návazností na pohybová čidla a detekci světla venku.
  2. Sběr dat ze senzorů (teplota, spotřeba energií apod.)
  3. Ovládání věcí obecně s nějakou předpřípravou na obvyklé situace (brány, závory, dveře atd.)
  4. Alarmy a ostraha (jsem doma a nic to nemá hlásit, jsem doma, ale mělo by to na mne pípat, jsem pryč a pokud se něco stane, je to poplach).

Nějaké základní body, co by to mělo splňovat, jsou:

  1. Musí se to dát jednoduše definovat. Nejsem si jistý, jestli to vůbec jde, asi to bude chtít nějaké metodiky a příklady, jinak bude normální člověk ztracený.
  2. Ovládání by mělo fungovat pokud možno automaticky, případně používat v maximální míře fyzické ovladače. Fakt nechci kvůli zapnutí kdejaké blbosti vytahovat mobil a něco na něm dělat.

Trochu jsem to nastudoval a mám nějaké základní stavební kameny:

  1. Zařízení - věci, které něco hlásí nebo ovládají (teploměr, zásuvka, relé, tlačítko, žárovka apod.). Může to být cokoliv a ani to nemusí fyzicky existovat - třeba skript někde na serveru, který něco dělá. Nemá smysl o tom přemýšlet jako o HW.
  2. Skupiny - můžu ta zařízení dávat do skupin, abych těch šest žárovek na stropě mohl případně ovládat jedním příkazem a ne šesti.
  3. Scény - nastavení parametrů několika zařízení (zapnuto/vypnuto, jas žárovky apod.). Mám jednací místnost se světly na stropě a žaluziemi a nachystám si scény den (žaluzie nahoře, světla vypnutá), večer (žaluzie dole, světla na 80%) a prezentace (žaluzie dole, světla na 20%), a můžu to jednoduše přepínat.
  4. Sestavy - můžu si nadefinovat nějakou virtuální věc a říkat, co se má stát, když se stane něco. Ten pojem je nečitelný, ale to vyplyne.
  5. Časování - na základě času by to mělo něco dělat. Musí to umět “relativní” údaje jako pracovní/nepracovní den, úsvit / soumrak apod.

Většina problémů, které tady jsou, nesouvisí s technickou stránkou věci - to funguje a v podstatě není co řešit. Zkusím to popsat tady na budově a bráně na parkoviště.

  • Je tady klasická brána, která je buď manuálním módu (přepíná se ručně mezi otevřeno / zavřeno) nebo automatickém módu (je zavřená, někdo něco zmáčkne, brána se otevře a po projetí auta nebo nějakém čase se sama zavře).
  • Je tady závora (těsně za bránou) - funguje úplně stejně jako brána.
  • Základní myšlenka je, že v pracovní době bude brána otevřená (manuální režim) a závora bude v automatickém režimu. Důvodem je, že otvírání brány trvá dlouho a navíc její časté otvírání/zavírání opotřebovává motor a převodovku. V nepracovní době to bude naopak, závora bude zdvižená a brána pojede v automatickém režimu.
  • Praxe ukázala, že je potřeba vědět, jestli je brána i závora fyzicky otevřená, zavřená, v pohybu nebo zaseklá někde mezi. Bez toho to nebude pořádně fungovat.
  • Je tu stále živá myšlenka otevírat to automaticky na základě registrační značky vozidla (SPZ). To se ukázalo jako složitější, protože kamera zabírá i kus cesty a skáčou tam značky kolem jedoucích aut. Experimety s čidly přítomnosti nikam moc nevedou - buď to registruje kde co (radar), nebo to má problémy s deštěm, sněhem, sluncem apod. (ultrazvuk, laser). Spolehlivá by byla indukční smyčka pod asfaltem, ale to je nereálné. Asi to skončí lepším umístěním kamery a možná v kombinaci s analýzou obrazu (to funguje překvapivě dobře).

Celé se to dá uskutečnit relativně snadno:

  1. Jsou tady Zařízení, která to spínají (relé) a detekují požadavek na otevření (RFID čtečka ve sloupku, GSM modul pro otevření voláním, tlačítko pro restauraci kam jezdí dodavaté atd.)
  2. Nadefinují se Sestavy Brána a Závora, kde se “pospojují” relátka a otevírací zařízení (RFID, telefon, tlačítko).
  3. Vytvoří se scény:
    • Závora, tj. ta pracovní doba, kdy závora jede v automatu, brána je otevřená v manuálním módu a je zakázaná (tj. nereaguje na nic).
    • Brána - nepracovní doba, tj. opak scény Závora.
    • Otevřeno - jak brána, tak i závora jsou v manuálním režimu a jsou otevřené.
  4. Nastaví se nějaké časování, aby se ty scény samy přepínaly.

Tohle by asi mohlo pěkně fungovat, nicméně to otvírá nějaké otázky.

Automatické přepínání je fajn, ale na 100% bude potřeba to přepínat i ručně obsluhou. To se dá vyřešit nějakým radio buttonem, ať už na obrazovce, nebo fyzickým (nějaký zigbee ovladač, případně nějaká odolná věc s klasickými tango tlačítky apod.). Otázka je, co se stane s tím automatickým časovým přepínáním, když to někdo zmáčkne. Asi by tam mohl být nějaký timeout (15 minut, hodina?), případně na obrazovce my tam mohly být nějaké pull-down menu s předvybranými intervaly. Ale bude to složité - fakt ta obsluha něco takového bude chtít? A co když pět minut před koncem pracovní doby přepnu na Otevřeno - samo se to za těch pět minut přepne na Brána?

Další problém je, co se stane když někdo vezme ovladač, co byl k bráně, a zmáčkne ho. Ta brána se asi zavře (nebo otevře) - ale jak se to celé má potom zachovat? Teoreticky to jde vyřešit odebráním takových “nesystémových” ovladačů - ale pořád je tam (nouzový) zámek, který něco podobného umožňuje taky.

Taky je na zamyšlení, co dělat během otvírání / zavírání brány (když to jede) - v manuálním režimu to jde sepnutím relátka zastavit a dalším sepnutím pustit v obráceném směru. Má to smysl nějak řešit, nebo to prostě celé zablokovat, dokud to nedojede. A nevím, jak se to zachová, když někdo proběhne - to se bude muset nějak testovat, ale opět je otázka, co potom s tím.

Asi jsem na dost věcí zapomněl. Podobné problémy jako u brány jsou u dalších věcí - třeba u těch žaluzií (obecně asi všude, kde se kombinuje automatika a ruční ovládání).

Berte to jenom jako nějaký zmatený úvod do diskuze.

Já jsem dlouho přemýšlel, co k tomuto již dříve zmíněnému tématu napsat, ale sám jsem to neměl v hlavě moc ujasněné.

Je jasné, že u každého řešení budou asi drobné odlišnosti, že nejde udělat jeden systém, který bude vyhovovat všem. V zásadě souhlasím s tím co píšeš nahoře, jen bych to doplnil, že asi bude ještě celý systém potřeba obohatit o následující:

  1. bude potřeba mít možnost definovat nějaké proměnné (stavy), pro určité prvky, které půjde číst a půjde je používat např. v bodu 2
  2. bude potřeba umět definovat podmínky (např. stiknutím tlačítka se má zavřít brána, ale zkontroluje se, jestli náhodou není otevřená z nějakého jiného důvodu (např. nouzové otevření, časové otevření v určitou dobu apod.). Také bude potřeba umět číst např stav brány (otevřeno / zavřeno) a podle těchto stavů rozhodovat, co má udělat tlačítko otevřít, když brána bude již otevřená …
  3. bude potřeba umět definovat priority. kdy nejvyšší priorita přebije vše (např. tlačítko nouzové otevření otevře bez ohledu na ostatní tlačítka)

Já nevím, jestli chci takto technicky uvažovat - systémů, co jsou takto udělané, je dost a nemá smysl dělat další.

Podle mne je ta praktická logika věcí jasná - zapnutí zapnuté žárovky nic neudělá, protože ta žárovka ví že je zapnutá, takže to ignoruje. Podle mne přemýšlet, co mám dělat, když chce někdo zapnout zapnutou žárovku, nemá žádný praktický význam. Stejně jako u té brány - otevření otevřené brány nic neudělá - můžeme vést debatu maximálně o tom, jestli by se něco takového mělo zapsat do logu přístupů.

To je dobrý příklad. Ale jsi si jistý, že chceš něco takového řešit nastavováním nějakých proměnných a podmínek? A je takový příklad vůbec v reálném životě reálný?

Pokud mám bránu v pracovní době otevřenou, tak je otevřená. Může ji někdo chít zavřít? Podle mne ano - tak ať ji zavře, proto tam to tlačítko je.

Podle mne to Otevřeno je v podstatě to nouzové tlačítko.

Asi bych si dovedl představit nějaké tlačítko co to otevře a nepůjde to zavřít, dokud se to tlačítko znovu nezmáčkne. Ale v důsledku si nejsem tak úplně jistý, jestli je něco takového opravdu potřeba.

Když nebudu mít nějaké kontroly (podmínky), tak jak ošetřím, že když budu chtít rozsvítit žárovku na 1 minutu, a někdo stiskne jinde tlačítko vypnout. Tak to prostě zhasne? I když budu chtít, aby to svítilo tu 1 minutu?

Nebo ty priority ohledně bezpečnostního otevření v případě nebezpečí, tak ti to nikdo nesmi zavřít nějakým tlačítkem. Ta priorita to prostě musí všechno přebít …

Já nevím - proto jsem tu diskuzi otevřel.

Mně to přijde jako umělý příklad. Na co bych něco takového potřeboval? Prostě mne nenapadá žádný reálný důvod. Proč bych měl zapínat na minutu žárovku tak, aby ji nesměl nikdo zhasnout?

Já nevím, co myslíš prioritou. Jediný způsob, jak něco takového vyřešit, je to, že daný HW prvek umí přepínat stav Zakázáno/Povoleno. Když to bude Zakázáno, tak všechny požadavky kromě přepnutí na Povoleno budou ignorovány (de fakto na fyzické úrovni).
Jako umím si představit fyzické zelené/červené dvojtlačítko (jako je třeba na strojích), kde:

  • Červená nastaví scénu Otevřeno a relátka nastaví na Zakázáno.
  • Zelená nastaví relátka na Povoleno a zapne automatickou scénu podle času (třeba - nebo to otevře).

Taky by to šlo samozřejmě udělat na obrazovce.

Nicméně si pořád v reálném životě neumím moc představit, že by to bylo akutně potřeba. Přece když někdo příčetný tu bránu otevře, tak kolik bude dalších lidí, co ji můžou zavřít? A když ji budou moct zavřít - budou tam mít i to Nouzové tlačítko, které můžou stejně tak od-zmáčknout a teda to vlastně stejně zavřít?

Jako já proti tomu nejsem - ale nejdřív by se podle mne mělo vědět, jak se to má chovat - a až potom řešit, jak to udělat.

  • Například pohybové čidlo na schodišti dá pokyn rozsvítit na předem danou dobu (přitom můžu mít tlačítko na rozsvícení, zhasnutí např. pro stěhování)
  • Podobně to může být s otevřením turniketu pro stěhování. Dá se pokyn na otevření pro stěhování a někdo si pípne čipem a ono se to zavře.
  • Stejně tak můžu při pípnutí čipem si otevřít bránu a může mě to na 1 minutu rozsvítit osvětení, aby se přisvětlilo nahrávání z kamery (tady toto je asi nejhorší příklad).

Možná by se tady ty mé úvahy ale daly nahradit těmi scénáři, které by ovlivňovaly, co se v tom daném scénáři může skutečně dít a na co a jak reagovat …

Já mám pocit, že si nerozumíme. Já chápu, že spousta věcí se musí v důsledku chovat podobně, jak píšeš. Ale nechtěl bych to nějak definovat nějakým nastavením, proměnnýma a podmínkama, protože by to byl hrozný opruz, a nikdo by to neuměl (protože udělat to dobře je složité na vymyšlení).

Prostě musí existovat jakési modely chování věcí, které většinou fungují samy od sebe, nebo se aktivují nějakou volbou někde.

No budu mít aktivovanou scénu Noční režim a tam si zacvaknu, že pohybová čidla mají zapínat světla na 5% jasu s nějakým timeoutem.
Pokud bude na stěně vypínač (vypínač nebo tlačítko?), tak se dá diskutovat, co by měl v takovém případě udělat. Já nevím a myslím že to neví nikdo, kdo s tím nějakou dobu nežil. Možná nic, možná by měl přepnout scénu té místnosti na něco jiného, možná by první zmáčkutí mělo rosvítit světla naplno a druhé zmáčkuní zase vynutit ten noční režim.
Jako když jdu někdy v noci na záchod, tak většinou nic nestěhuju. A když vím, že budu stěhovat, tak nemačkám tlačítko Jdu spát. A lidi, co ve veřejné budově stěhují v jedenáct v noci jsou na zabití (nehledě na to, že tam by v nočním režimu měla být světla pořád na 5% a pohybová čidla by to přepínala třeba na 40% - ono to takto úplně stačí).

Ale pípnutí čipem nikdy nic nezavírá - pouze otvírá. A otevření otevřeného turniketu nic neudělá.

No jasně, ale to není případ toho, že to musí minutu svítit a nikdo to nesmí zhasnout. Buď tam žádný vypínač nebude, nebo tam bude a když ho zmáčku, tak chci aby to zhaslo.
Nehledě na to, že je jednodušší tam dát pohybové čidlo - pak si to posvítí i na lidi, co se tam jenom ochomýtají bez čipu.

Já to fakt nechci nějak sabotovat - ale když jsem to celé nastudoval, tak mi došlo, že takový superuniverzální systém bude velice složité udělat a v podstatě to bude nakonec nepoužitelné, protože než bych to takto složitě nastavoval, tak se na to radši vykašlu.

Já sám v tom mám hodně zmatek, možná přemýšlím až moc “nahlas”.

Určitě souhlasím s postupem začít jednoduše a život ukáže… Je to určitě lepší varianta, než udělat superdokonalý systém, který bude umět všechno, ale v důsledku ho nikdo nebude chtít nastavovat …