O upravljačkim sučeljima sistema Smart Home. Sistem pametne kuće

Server pametan dom- ovo je "mozak" kontrolnog sistema. Primjenjuje i održava cijelu mrežu. Generira i šalje potrebne signale kontrolerima koji su odgovorni za upravljanje senzorima, alarmima, kontrolom klime, ostalim funkcijama i načinima ugrađenim u softvera.

Pogledi servera

Pametnom kućom upravlja se sa servera. Može biti centralizovano (stacionarno) i decentralizovano (može raditi na daljinu).

Osnovni zahtjevi za poslužiteljem:

  • Stabilan rad.
  • Obavezna izrada sigurnosne kopije podataka.
  • Kontrola verzija softvera.
  • Mogućnost ažuriranja i pročišćavanja funkcionalnosti.
  • Brzo postavljanje u slučaju kvara.

Stacionarni server koji dolazi s pametnim kućnim kompletom je stabilan i ima širok spektar funkcionalnosti, ali ima i neke nedostatke. To je i trošak i potreba za instaliranjem sigurnosnog uređaja u slučaju kvara glavnog uređaja. Glavni nedostatak je nemogućnost upravljanja sistemom iz daljine.

Server i web-server pametne kuće srednje veličine

Pojavom tablet računara i pametnih telefona postalo je moguće upravljati raznim uređajima na daljinu, što uvelike pojednostavljuje život. Ako postavite kontrolu pametan dom zasnovan na serveru s udaljenim pristupom, tada će interakcija sa sistemom postati red veličine učinkovitija.

Raspberry Pi 2 platforma za izgradnju web servera pametne kuće

Web server za pametni dom je mikro, tablet ili pametni telefon. Svaki uređaj s velikom zapreminom može biti platforma za njega. ram memorija(Raspberry Pi 2 ili Raspberry Pi 3, AC500-eco, Arduino), snažni procesor i pristup Internetu. Web server kao dio pametnog doma pruža vizualizaciju kontrole putem preglednika.

Web server za pametnu kuću radi jednostavan princip... Mobilni uređaj djeluje kao glavna jezgra i šalje daljinske signale naredbi. Softver koji možete sami kupiti ili prepisati pretvara Android, Linux ili Windows uređaji do dispečerske stanice, komunicirajući s kontrolerima putem WiFi-ja. Prednosti web bloka pametne kuće su u tome što ne samo da možete kontrolirati sustave u kući, već i izvoditi bilo kakve operacije izvana. Moguća je i daljinska konfiguracija i pohrana u oblaku.

Pametno sučelje za kontrolu kuće

Funkcionisanje sistema je nemoguće bez interfejsa ( univerzalni lijek upravljanje). Princip rada temelji se na mogućnosti pristupa Internetu, odnosno softverska je platforma koja vam omogućava sveobuhvatno upravljanje svim kućama automatizirani sustavi... Takođe, pametno kućno sučelje pruža interakciju informacija i podršku radnom stanju. Ovaj sistem je kompatibilan sa bilo kojim računarom ili pametnim telefonom sa različitim platformama.

Pametno kućno sučelje kreirano je za svakog korisnika pojedinačno

IN savremeni sistem Internetsko sučelje pametne kuće čini modularnu arhitekturu, izgrađenu na PHP-u, CSS-u i JavaScript-u. Softver je napisan u dodacima za korisničko sučelje kao html ili css koji se nalaze u DLL resursima. Mogu se dodati ili promijeniti po vašem nahođenju. Približna struktura sučelja izgleda ovako:

  • Početna stranica na radnoj površini. Prikazuje sve kontrole u obliku ikona.
  • Dodaci sadrže odjeljke, podijeljene na sistem (za rad s postavkama) i korisnik (za izravnu kontrolu funkcija).

Samostalno kreiranje web sučelja za upravljanje pametnom kućom izvodi se pomoću posebnih mrežnih konstruktora s gotovim paketom podataka.

Kako napraviti server za pametnu kuću

Sasvim je jednostavno samostalno napraviti server. U slučaj neiskorišćen računar(poželjno je uzeti model iz izdanja 2006.) montira se po prioritetu:

  • jedinica za napajanje;
  • hladnjak sa smanjenom proizvodnjom buke;
  • matična ploča sa modernim procesorom;
  • RAM koji udovoljava zahtjevima procesora;
  • neke tvrdi diskovi(po mogućnosti NAS sistem) i sata kontroler;
  • mrežna kartica s podrškom za način rada domaćina;
  • wifi modul.

Kompletni set može se modificirati ovisno o zahtjevima. Nakon toga slijedi postavljanje servera pomoću usluga sa svim značajkama (Linux sistem će to učiniti) i instaliranje softvera.

Samoinstalacija servera za pametnu kuću zvanog AVRobot

Da bi se napravio web server za pametnu kuću, dovoljno je na računar ili pametni telefon instalirati odgovarajući softver koji komunicira sa kontrolisanim sistemima (senzori odgovorni za rad klima uređaja, uključivanje svjetla itd.)

27. marta 2015. u 15:18

Moja "Pametna kuća" na PLC-u i sa web interfejsom. Dio 1. Uvod

  • HTML,
  • SCADA

Uvod

O Habreu ima mnogo članaka o projektima pametne domove, ali skoro svi su bili uključeni domaća oprema i kineske sprave. U svom sam članku želio razgovarati o drugom pristupu koji pokazuje koliko je lakše dovršavati projekte koristeći se gotova rješenja svjetski proizvođači ( i izgleda solidnije), a takođe pokazuje mogućnost upotrebe opreme ne samo u industrijskim objektima, već i u privatnoj sferi. Rezultat je simbioza tehnologija i područja automatizacije. S jedne strane, korištenje PLC-a koji je uglavnom dizajniran za potrebe industrije, omogućavajući vam izvršavanje zadataka bilo koje složenosti bez ograničenja krutih algoritama gotovi uređaji pametne kuće (na primjer, zasnovane na KNX tehnologiji) s povezivanjem web tehnologija html / javascript daju neograničen let fantazija za širenje projekata.

Tekući troškovi - 170 hiljada rubalja (po starom kursu eura).

Počnimo.

Šta imam na umu

Mi upravljamo rasvjetom i napajanjem
- U osnovi, kontrolu će provoditi signal za uključivanje / isključivanje, ne želim i ne želim prigušiti;
- Želim kontrolu od različita mjesta, na primjer, ušao u spavaću sobu - upalio luster, legao na krevet - pritisnuo da ugasi luster. Ako je zaboravio isključiti svjetlo u predsoblju (ili u toaletu ...), pritisnuo je dugme „ugasi svjetlo svuda“. Prikladno;
- Pri izlasku iz stana pritisnem jedno dugme - svjetlo se gasi u cijelom stanu itd .;
- očitavanje očitanja sa brojila električne energije;
- nesmetano napajanje stanova za kontrolu i sigurnosne sisteme;
- Bez izuzetka, svim rasvjetnim grupama mora upravljati PLC. U slučaju požara, utičnice se moraju odvojiti od PLC-a u mašini - isključite napajanje stana u slučaju nužde;
- Svaka rasvjetna grupa mora doći do razvodne ploče i proći kroz najbliži prekidač kako bi mogla preoblikovati kontrolu rasvjete u uobičajenu shemu (ako prodam stan, uzet ću sve);
- Osigurajte ljudski senzor pokreta u hodniku za kontrolu osvjetljenja + vezanog alarmni sustav;
- Topao pod na balkonu, u toaletu, kupatilu, u hodniku - s mogućnošću upravljanja vremenom u zavisnosti od spoljne temperature.

Mi kontroliramo grijanje i ventilaciju
- kontrola grijanja - na svaku bateriju ugrađen je ventil sa aktuatorom (za kontrolu sobne temperature, za mjerenje sobne temperature potrebno je osigurati temperaturne senzore);
- Osigurati kontrolu klima uređaja putem IC kanala (trenutno rješenje problema još nije pronađeno, uvrnuti par izvodimo na unutarnja jedinica kondeya će smisliti dalje);
- Senzori temperature vanjska temperatura (sunčana i ne sunčana strana);
- IN zimski period dva su problema prilično česta - hladno je i nema se što disati. Rješenje je instaliranje sistema napajanja. Dalje osigurajte kontrolu sistem napajanja(temperatura kanala, vanjski senzor temperatura, tri stupnja grijanja, ventilator);
- Menadžment ispušni ventilatori(wc, kupaonica).

Sigurnosni alarm
Signalizacija stanja ulaznih vrata (arhiviranje stanja vrata - vrijeme otvaranja / zatvaranja);
Naoružavanje putem web sučelja ili preko prekidača za upravljanje svjetlom.

CCTV
Snimanje kamere prednjih vrata, parking na ulici;
Arhiviranje zapisa na udaljenom serveru.

Oprema

- Budući da sam se već navikao na PLC-ove iz ABB-a, AC500-eco PLC (PM554-ETH CPU s Ethernet podrškom) odabran je kao mozak za sistem upravljanja stanom;
- Tada sam počeo brojati novac i ... Morao sam odabrati okruženje za prikaz informacija s mogućnošću prikazivanja podataka o kući na mreži. Postoji mnogo opcija, ali u osnovi se sve temelji na rješenjima koja nisu više platformi, što kod mene ne funkcionira. Sve sa riječima SCADA i WEB imalo je pretjeranu cijenu. Morao sam malo uplašiti, što je rezultiralo odlukom da se ne koristi SCADA sistem, već okvir s velikom funkcionalnošću za HTML5. Došao na CSWorks. Ovaj okvir vam omogućava da ga besplatno koristite s ograničenjem od 999 varijabli, 1 klijent. Što mi je potpuno odgovaralo.
- JUNG, Serija A je odabrana kao prekidači i utičnice (upravljanje svjetlom). Od prednosti - mogu nositi do 4 tipke po stupu tipke (prekidač bez zasuna), imaju i indikacijske LED diode s naponom od 24V (ovaj napon je standardni industrijski napon napajanja za sisteme automatizacije). Ove funkcije nije vidio nijedan proizvođač električnih instalacija (ne računajući Kinu);

Početak rada

1. Način osvjetljenja ožičenja. Svaka grupa dolazi direktno u ormar za napajanje. Ormar sadrži kontaktore i releje za upravljanje. Zavojnice releja i sklopnika kontroliraju se pomoću PLC signala (DC24V). Za suvišno upravljanje koristim kontaktore sa ručno upravljanje... Opskrbna žica izrađena je prolazeći kroz sklopnu čašu tako da je bilo moguće preusmjeriti ožičenje na uobičajeni krug.

Sam ručni sklopnik:

Ormar je sastavljen i montiran:

Kao što sam gore napisao, odabrao sam prekidače bez zaključavanja sa led indikatorima. Najviše 4 tipke, moguće je prebaciti ove tipke u 8 grupa (pogledajte dokumentaciju za prekidač

Naracija sa kratkim tehničkim digresijama.

Kako je sve počelo

Ova priča započela je prije skoro godinu i po. Kupac nam je došao s „projektom iz snova“.
Narudžba je zvučala kratko i jednostavno: redizajnirajte korisničko sučelje trenutni sistem pametan dom.
Gledajući sistem, mogao bi se vidjeti tipični predstavnik pametne kuće, kojih sada ima mnogo, evo je u starom dizajnu.
Naime: dosadne ikone preuzete s weba, loše zamišljena logika zaslona, ​​neergonomska upotreba prostora male rezolucije, glamurozni gumbi za gradijent i senzori na tlocrtu napravljeni kao što je to radio programer.


Ali arhitektura projekta bila je prilično pametno rješenje. Postojao je server za upravljanje senzorima i analizu podataka, što je mali okvir na koji se možete povezati na tri načina:

  • OD kućni računar preko preglednika (poput usmjerivača) do administrativnog sučelja - za konfiguriranje svega i svih
  • Sa dodirne ploče na ulazu u kuću - za kontrolu alarma, scenarija, kamera i senzora (od nas je traženo da započnemo)
  • OD mobilni uređaji- za kontrolu kuće s bilo kojeg mjesta (u prvoj verziji, kroz isti admin panel)

Nakon razgovora s kupcem, odlučeno je napraviti interfejs u stilu Windows 8, iako ona sama još nije izašla, na mreži su postojali samo brojni snimci zaslona. Detalje takve odluke izostavit ćemo, samo ću reći da je jednoglasno usvojena i pristupili smo poslu.
Ovdje je vrijedno spomenuti da smo u to vrijeme imali određeno iskustvo u dizajniranju sličnih duha sučelja: upravljačka ploča za jahte (vrijedni su zasebnih članaka, ali postoji kruti NDA), brodski računalo za automatsko i štikle kioska osjetljivih na dodir.

Ideja

Tema dizajniranja pametnog doma već dugo uzbuđuje moju maštu. Rješenja koja postoje na tržištu ne približavaju se onome što bih mogao nazvati "pametnim".

Razmotrimo primjer

Pao je mrak. Morate upaliti svjetlo u sobi. Vaše akcije?
Kako to obično ide- ustaješ i pališ svjetlo.
Prema mnogim programerima sistema automatizacije- uzmete daljinski upravljač i upalite svjetlo.
Često ovdje ne vide uobičajene probleme. Prvo, daljinski upravljač možda nije u blizini, još uvijek morate ustati da biste ga pronašli, i drugo, ne zaboravite da je većina ovih uređaja sada sa ekran na dodir, to znači da daljinski upravljač takođe mora biti uključen. Nova moda- napravite daljinski upravljač od tableta ili telefona (zasebna aplikacija), što dodatno komplikuje zadatak:
Ustanite i pronađite uređaj -> Uključi ili otključaj zaslon -> Pokreni aplikaciju -> Pronađi željeni senzor-> Profit.
Nije li lakše ustati i uključiti prekidač?
Pametna kuća u mom razumijevanju- mora sam upaliti svjetlo kad vam zatreba, uzimajući u obzir jeste li budni ili se odmarate, sezonu, broj ljudi u sobi, vašu lokaciju u sobi i gomilu faktora, na osnovu vaših prethodnih odluka u takvim situacijama, predviđajući vaše želje. Inače, ovu kuću teško možemo nazvati „pametnom“.
Daljinski upravljač treba koristiti samo u posebnim slučajevima i ne bi trebao biti glavni element kućne kontrole. Zapravo, "Pametnom" kućom uopće nije potrebno upravljati - ona će sve učiniti sama.

Ali takvi su sustavi još uvijek daleko, možemo reći da je danas to nemoguće implementirati, pa ćemo poboljšati ono što možemo, naime, isti daljinski upravljač.

Jednostavnije je glavni problem ovih rješenja prikazati poznatom slikom:

Da, gotovo svi takvi sistemi su upravljačke ploče nuklearnog reaktora, što je ponekad teško razumjeti čak i naprednom korisniku.
Iz nekog razloga programeri pokušavaju uklopiti što više elemenata na ekran. više mogućnosti i kao posljedica toga, što više UX problema.

Pa šta je ideja?

Uklonite sve nepotrebne iz vida, apsolutno sve.
Ako samo želim isključiti svjetlo u spavaćoj sobi, zašto bih vidio komande za ventil za vodu u kuhinji?
Ako želim zatvoriti sve prozore u kući, želim to učiniti jednim dugmetom, a ne zabijati u svaki senzor posebno.
Ako kuću uključim na alarm, a u kući nema nikoga, to znači da se svuda moraju isključiti svjetla, spustiti temperatura, zatvoriti prozori, uključiti video nadzor. I sve se to mora dogoditi bez mog učešća!

Jedan prsten koji će njima vladati Jedan gumb - "Učinite dobro".

Najbolji interfejs je onaj koji ne vidite, na koji ne obraćate pažnju dok radite, koji čini sve za vas ili ga kontrolirate na podsvjesnom nivou, jer:
a) navikli ste na to
b) očigledno je
Obratite li pažnju na to gdje je dugme Reprodukuj na Youtubeu? Gdje je dugme za zatvaranje prozora preglednika? Ili gdje je Googleov okvir za pretragu?
Hoće li vas stotine senzora na jednom ekranu sistema pametne kuće baciti u omamljenost?
Istina, sve što je zapravo potrebno od takvih sistema je da riješe jedan određeni problem (poput Reprodukuj u uređaju za reprodukciju ili Pronađi u pretraživanju). Stoga nema smisla prikazivati ​​sve moguće kontrole na ekranu.

Ne tako jednostavan zadatak zapravo.

Prvi prototip.

Od kupca smo njegovu viziju dobili otprilike ovako:

Gledali smo, razmišljali i jedina stvar koja je korištena od njegovih materijala su specifikacije senzora i naredbi (korisnički scenariji)
U okvir nas je uvelo nekoliko točaka:

  • Dodirna tabla nije imala podršku za MultiTouch i imala je rezoluciju 1024 * 768 i 1024 * 600
  • Metro sučelje je bilo novo i nije se moglo osjetiti na tabletima (8 još nije izašlo). Imali smo WP7 telefon, koji je dao određeni uvid.
  • Kupac nije mogao promijeniti neke točke u sistemu (ograničenja željeza, rast cijene sustava, lične želje itd.)

Općenito, nije bio problem dizajnirati takve ekrane kao što su: glavni izbornik, video nadzor i interfon, vremenska prognoza preko broda, sistemske obavijesti i slično, i o tome ne treba razgovarati, bila je to prva verzija, biti zanimljiviji dalje.
Problematičan je bio samo glavni upravljački zaslon senzora. Pisaću o njemu.

Plan kuće

Evo slike tipičnog kontrolnog zaslona senzora s tlocrtom preuzetim s Interneta:

Recite mi, koliko vas razumije šta je nacrtano na ovom planu?
Hoće li vaše dijete razumjeti ovaj plan? A tvoja baka? A prijatelj koji je došao vidjeti galebove će se orijentirati?
Mislim da je problem jasan.

Plan bi trebali čitati svi odjednom. Da biste to učinili, vaša kuća mora biti vidljiva na njoj, s bojom zidova i osnovnim namještajem:

Idealno bi bilo da plan uvijek bude postavljen u odnosu na glavne točke.
Takvo je rješenje skuplje, a preuređivanje namještaja učinit će plan nepreciznim, ali ovdje, u svakom slučaju, postoji kompromis. Međutim, ništa ne sprečava uključivanje bilo kojeg plana u projekt, ili čak bez njega (također smo osmislili takvo rješenje).
Inače, u prvim verzijama za premium klasu željeli su napraviti plan u 3D-u, ali rješenje je mnogo skuplje i suvišno, izgledi su sasvim dovoljni.

Senzori

Najviše veliki problem- vizuelni prikaz kontrolnih senzora na planu riješen je brže nego što se očekivalo. Kao što se sada sjećam, dizajner i ja smo sjedili i crtali budući sistem WireFrames na papiru, a odluka je došla sama od sebe:

Ispod sam priložio video koji pokazuje kako to funkcionira.

Jedno dugme

"Pa, gdje je ovdje jedno dugme?"- pitate.
I evo gdje:
"Jedno dugme" je konvencija pod kojom mislim na jednu funkciju - najvažniju i istaknutu u prvi plan.
Naša je rezolucija mala, loša je ideja prikazati šareni plan i držati ga se senzorima "Stvarno ne želim".
Vrijedno je zapamtiti da sada opisujem stvaranje stacionarne verzije daljinskog upravljača (to je ovo zidni monitor).
Glavni scenariji za tipičnu upotrebu ove ploče su sljedeći:

  • Čovjek se otvori ulazna vrata-> ploča je aktivirana i upozorava nas da isključimo alarm -> unese se lozinka -> aktiviraju se skripte postavljene za ovu kuću.
  • ista stvar kada izlazite iz kuće - uključite alarm
  • Ako netko pozvoni na vrata - kroz portafon, koji se prikazuje na bilo kojem ekranu kad se zove s ulice, gledamo koga i otvorimo vrata.
  • Aktiviranje prilagođenih scenarija - na primjer, režim "Noć", kada su vrata i prozori zaključani, uključen video nadzor, pad temperature itd.

Upravljanje pojedinačnim senzorima s ove ploče nije baš zgodno (pa, prosudite sami, hoćete li prilagoditi svjetlinu svjetla u spavaćoj sobi dok ste u hodniku?)
Kontrola je moguća ako su paneli ugrađeni u cijelu kuću.
Ali, prema mišljenju kupca, ova funkcija je tamo neophodna, to morate učiniti.

Odluka

Ulaskom na ekran, korisnik vidi samo plan kuće. Senzori su vidljivi kao vrlo male tačke (kako bi znali gdje su).
Pored mogućnosti prebacivanja poda, korisnik ima samo 2 mogućnosti:
1) Aktivirajte ploču s opcijama, što će vam omogućiti, na primjer, da sve termostate u kući privedete planu i prilagodite temperaturu kako nije predviđeno u scenarijima ili, na primjer, aktivirate utičnice u garaži.

2) Povećajte plan. Što se više povećavamo, to se više senzora od male točke pretvara u punopravnu kontrolu upravljanja, senzori se pojavljuju ovisno o prioritetu. Dakle, bez pretrpavanja prostora.

Oni. korisnik uvijek vidi samo ono što mu treba.

Integracija

Kupčevo rješenje bilo je u WPF-u, a integracija dizajna u XAML je moja glavna specijalizacija. Stoga ne samo da smo „crtali slike“, već smo i dizajn primijenili u praksi.
Možete napisati zaseban veliki članak o tome kako smo napravili kontrole i njihov XAML, sve je to bilo animirano i vezano za plan kuće, ali što manje konkurenata zna, to smo vrijedniji kao stručnjaci. I nema nikakve posebne svrhe u opisivanju rješenja stacionarne konzole, budući da dalje ćemo se fokusirati na verziju tableta.

Koga ne zanima samo zaslon za upravljanje senzorom, već i sve ostalo, konačni rezultat može vidjeti na slikama
Ili na video snimku:

Ukupno nam je trebalo oko 5 mjeseci da ga osmislimo, osmislimo i implementiramo u demo aplikaciju, koja je kasnije otišla korisničkim programerima izravno da povežu hardver i logiku.
I, kao što to obično biva, nakon što napravite projekt, uvijek ga želite ponoviti, jer već vidite kako ga poboljšati, njegove nedostatke i slabosti, i slabe tačke bilo ih je mnogo.

Dok sam radio XAML, izašao je pregled za programere za Windows i odmah sam požurio da ga dodirnem na radnoj površini i tabletu (Aser Iconia W500). Objavljene su i službene smjernice, što je omogućilo da se Metro UI pogleda na nov način.

Dio 2.

Sve što smo napravili je sranje

Kupac je bio vrlo zadovoljan, posebno kada smo predstavili radni demo. Možemo reći da njegovoj sreći nije bilo ograničenja. Vidio sam nedostatke projekta, ali istovremeno sam znao da ga je moguće dovesti do savršenstva samo dugotrajnim radom na njemu u tandemu s timom dobrih programera, ali to u ovoj fazi nije bilo važno razvoja proizvoda.
Kupac, poput mene, već je pogledao novi prozori 8, i oboje smo mislili da je jako dobra. Stoga je na moj prijedlog: „Napravimo verziju za tablet?“ Reagirao vrlo pozitivno. Predložio sam da se ne mijenja sistem ugrađen u zid. nije podržavao MultiTouch, nije bilo svrhe stavljati osmicu tamo. Njegov redizajn je ostavljen do boljih vremena, usredotočujući se na aplikaciju Metro / Windows trgovina (naime Metro, jer će to omogućiti distribuciju demonstracije na tržištu kako bi privukli kupce).
Nažalost, pokazalo se da proračun kupca nije gumeni, ali složio sam se, zapravo, predstavili smo verziju za Windows 8. To je bilo dijelom neophodno, imali smo vrlo dobar posao u portfelju čak i prije izlaska osmice.

Drugi prototip.

Nakon nekoliko tjedana, moj dizajner mi je dao svoju viziju za tablet verziju proizvoda:


Puna verzija dizajna može biti

Bio sam malo uzrujan, dizajn je bio daleko od onoga što je trebalo, pokušao sam objasniti pogreške, ali ne možete naučiti plivati ​​a da ne uđete u vodu, dizajner mi nije mogao dati ono što sam želio, jer je tada imao premalo iskustvo sa Windowsom 8.

Stoga je odlučeno sve ponoviti, ali raditi na dizajnu zajedno sa mnom, radeći sve odjednom u XAML-u.
Ovo će riješiti problem nedostatka dizajnerskih vještina kod dizajnera i neće mi dopustiti da, kao programer, pokvarim sliku.

V2 dizajn i simultana integracija

Da budem iskren, bilo je vraški teško. Bio sam spreman da ubijem programere Blend 5, jer je u poređenju sa verzijom 4 bilo neispravno, neprestano leteće čudovište. Sada je situacija bolja, ali neke tačke nedostaju.
VS 2012 me spasio, djelomično je sadržavao kombinaciju funkcionalnosti za upravljanje stilovima.
Novi XAML tema je za zasebni razgovor, polovica starih klasa je nestala, zadani stilovi su beskorisni, okidači su uklonjeni - ostaju samo neugodna vizualna stanja. Također sam morao prepisati projekt ispočetka kada je Win 8 ažuriran na Relize Preview, ali te promjene bile su na bolje.

Novi koncept

Novi uređaj je novi pristup. Morao sam preispitati ideju početnog ekrana, sada ona nije bila potrebna, a sva navigacija izvedena je na gornji AppBar.
Ispod svih dugmadi na ekranu: Zumiranje - pokretom imamo punopravni MultiTouch, sve kontrole senzora - u donjoj traci aplikacija.
Sada aplikacija odmah započinje prikazivanjem plana kuće (idealno bi bilo da prati u kojoj se sobi korisnik nalazi i odmah ga malo poveća, pozicionirajući ga u sredini).

Otvorite aplikaciju:

Pravimo pokret zumiranja (ili pomoću tastera CTRL + točkić):

Ili ćemo dobiti AppBar:

Kontrole

Kontrole senzora morale su se prepisati ispočetka i učiniti ih izvornim uz normalnu podršku za pokrete za Windows 8.
Uzeto je u obzir da sada kontrolu imamo na dva načina, prstima i mišem.
Takođe je lizan izgled senzora, postalo je modernije:


Posebno me se dojmila brzina aplikacije. Performanse u Windows8 aplikacijama su za redove veličine veće od WPF-a. Bojao sam se da tablet neće savladati sistem, ali sve jednostavno leti. Microsoft je nadmašio sam sebe, bez obzira koliko je XAML složen, sve će raditi brzo. Ako ste u WPF-u morali izraditi samostalno izrađene algoritme za predmemoriranje ekrana za brzu animaciju, razmislite o složenosti razgrananja XAML-a, optimizirajte broj elemenata u kontrolnom stablu, tada u osam, jednostavno nije važno, animacija bilo koja složenost i bilo koji broj objekata uvijek su glatki.

Opcija bez plana


Nisu bili potrebni senzori s podrškom za geste, nije bilo potrebe za uštedom prostora. Ispalo je, naravno, ne toliko impresivno, ali dobro.

Skripte

Upravljanje senzorima je sigurno dobro, ali, kao što sam već napisao, bolje je automatizirati osnovne operacije s njima.
Da biste to učinili, administrativno sučelje ima osnovne unaprijed postavljene skripte i mogućnost kreiranja vlastitih.

Na tabletu to izgleda ovako:

Jedno dugme

Od ovog koncepta nismo odstupali od samog početka.
Često se postavlja pitanje: "Gdje se ovdje radi šest mjeseci?"
I ovo shvatam kao pohvalu. To znači da sam postigao ono što sam želio. Korisnik jednostavno ne vidi da je funkcionalnost aplikacije prilično velika, jer je vidljivo samo ono što je potrebno. ovaj trenutak... Podaci i potrebni ekrani sami se prikazuju korisniku, a ne korisniku koji ih traži. Sučelje je jasno od prvih minuta, ne zastrašuje obiljem tipki, a istovremeno se svaka radnja izvršava "jedan - dva - tri".
Bila su potrebna tri mjeseca da se stvori samo verzija za Windows 8 (uzimajući u obzir razvoj u prvoj verziji, bilo bi više od nule).

Između ostalog. Jeste li primijetili da je svugdje u sustavu Windows element poput PopUp uvijek isti? Bez obzira na to što otvorimo, skočni obrazac je uvijek jedan, ako otvorite drugi, prethodni će se zatvoriti. Imao sam problem u sučelju: nakon aktiviranja senzor se zatvorio nakon određeno vrijeme sama po sebi, ali ako aktivirate jednu, a zatim i drugu odjednom - obje su bile otvorene, to ne izgleda baš estetski i razumljivo. Hvala mom drugom dizajneru na ovom fitbacku. Nije bio direktno uključen u projekt, ali neke su stvari realizirane zahvaljujući njegovim savjetima.
Mučio sam se tjedan dana da riješim ovaj problem.
I riješio sam to ...
Jedan red koda.
Moral: ponekad i za većinu jednostavna rješenja puno se posla krije.

Fitbacks od Microsofta

Prošlog proljeća Microsoft je održao promociju na kojoj su svi programeri mogli dobiti besplatne preporuke o tome kako poboljšati UI / UX svojih proizvoda. I stigli smo na vrijeme za ovu distribuciju.
Da budem iskren, bojao sam se da će sve razbiti na sitnice, ovo je bilo moje prvo iskustvo s osmicom. No, sve je prošlo bez problema, prema kupcu, Microsoft je visoko cijenio kvalitet aplikacije. Dobili smo nekoliko malih preporuka za poboljšanje upotrebljivosti (usput, vrlo kompetentnih), na primjer:


Vrlo tačna primjedba, uzmite na znanje. Ako odaberemo objekt i s njim su moguće daljnje radnje, AppBar bi se trebao otvoriti! Pokazujući korisniku ove vrlo moguće radnje.
Generalno, problem je mnogo širi, reći ću to ovako - očite radnje moraju izvršiti sami, nema potrebe čekati da to korisnik učini.

Sve amandmane sam napravio za manje od jednog dana. I moja se duša osjećala toplo i smireno.

Ukupno

Trenutno je sistem u fazi razvoja, kupac ne ide onako kako bi želio. Stoga, pišem post nakon skoro godinu dana, datum izlaska još uvijek nije poznat.
Aplikaciju iz Windows trgovine mogu dodirnuti oni koji imaju Windows 8, ali prije toga u postavkama morate postaviti turski jezik:
Upravljačka ploča-> Vrijeme, jezik i regija -> Regija -> Promjena lokacije -> Turska (tada je ne zaboravite vratiti, inače će vam tržište biti prikazano na turskom)
Ali sada u Storeu postoji samo uklonjena verzija koja pokazuje glavne karakteristike. Jednog dana sistem će biti dovršen, a kako smo prepravljali stari, vjerovatnoća za to je velika. Nadam se da će posao kupca krenuti uzlaznom putanjom i da ćemo nastaviti raditi na projektu. I tu ima još puno posla: web verzija, web stranica, oblik forme(razvili smo samo logotip i njegovu ideju, ali moramo ga razviti), verzija za iOS, Android i WP8. Da, i verziju za Windows 8, sada bih malo promijenio, završili smo je prošlog ljeta, od tada se puno toga promijenilo u WIndowsu, a moje vještine u ovom području su porasle.

I na kraju, video o verziji za Windows 8 (gledajte HD)

Tu je i video od kupca, ali je vrlo lošeg kvaliteta.

PS. Molimo vas da lično napišete greške u članku.

Uspjeli smo naučiti naš sistem pametne kuće da prepoznaje ono što smo rekli i sintetiziramo glasovne odgovore pomoću Googlea.
Danas vam želim reći kako organizirati pristup našem sistemu putem web sučelja.

Tehnologije

Kao što se sjećate, pišemo softver za upravljanje našom "pametnom kućom" na tom jeziku perl... Moderno Informacioni sistem praktično nezamislivo bez baze podataka. Mi, također, nećemo ostati po strani i koristit ćemo DBMS za pohranu naših podataka. MySQL... Da bih implementirao web server, odlučio sam da ne koristim softver nezavisnih proizvođača, već modul za perl - HTTP :: Server :: Jednostavno, posebno - HTTP :: Server :: Jednostavno :: CGI... Zašto sam to učinio? Uglavnom, iz zabave;) Ali u teoriji možete dobiti pristup niskoj razini obrade HTTP zahtjeva / odgovora bez pretrpavanja kompleksa Apache / mod_perl. Generalno, ništa vas ne sprečava da projekt prebacite na Apache šine, ako imate želju i dovoljno vremena.

Baza podataka

Prije svega, instalirat ćemo MySQL DBMS i stvoriti bazu podataka s tablicama iz db.sql. Evo popisa:

STVARI BAZU DATA: ion; USE ion; # # Struktura tabele za "kalendar" tabele # DROP TABLE AKO POSTOJI kalendar; STVORI TABELU `kalendar` (` id` int (15) NOT NULL AUTO_INCREMENT, `date` datetime NOT NULL,` message` text, `nexttimeplay` datetime NOT NULL,` expired` datetime NOT NULL, `type` int (1) DEFAULT NULL, PRIMARNI KLJUČ (`id`)) MOTOR = MyISAM DEFAULT CHARSET = latin1; # # Struktura tablice za tablicu "Commandslog" # DROP TABLE AKO POSTOJI naredbeni dnevnik; IZRADI TABELU `commandlog` (` id` int (15) NOT NULL AUTO_INCREMENT, `date` datetime NOT NULL,` cmd` varchar (255) NOT NULL, PRIMARY KEY (`id`)) MOTOR = MyISAM AUTO_INCREMENT = 1 ZADATAK = latin1; # # Struktura tabele za "log" tabele # DROP TABLE IF EXISTS log; STVORI TABELU `log` (` id` int (15) NOT NULL AUTO_INCREMENT, `date` datetime NOT NULL,` message` varchar (255) NOT NULL, `level` int (1) DEFAULT NULL, PRIMARY KEY (` id` )) MOTOR = MyISAM AUTO_INCREMENT = 1 ZADATAK CHARSET = latin1;

Poduzmimo potrebne korake:

[email zaštićen]: ~ $ sudo apt-get instaliraj mysql-server
[email zaštićen]: ~ $ mysql -uroot -ppassword< db.sql

Izmjena koda

Sada moramo stvoriti mape lib, html i config(pored mape podaci). U fasciklu lib postavićemo modul odgovoran za implementaciju web servera i rukovanje našim HTTP zahtjevima.

Moramo malo podesiti skriptu srv.pl... Dodajte bloku inicijalizacije:

Naš% cfg = readCfg ("common.cfg"); naš $ dbh = dbConnect ($ cfg ("dbName"), $ cfg ("dbUser"), $ cfg ("dbPass"));
Dodajte linije odgovorne za pokretanje HTTP servera ispod bloka inicijalizacije:

## Pokretanje HTTP servera ################################# my $ pid = lib :: HTTP-> new ( $ cfg ("httpPort")) -> pozadina (); ispis "HTTP PID: $ pid \ n"; logSystem ("HTTP usluga - PID: $ pid, port: $ cfg (" httpPort "), domaćin: $ cfg (" httpHost ")", 0); #################################
Sada dodajmo funkcije koje nedostaju na kraj datoteke:

Sub readCfg (moj $ file = shift; moj% cfg; otvoren (CFG, " ; foreach my $ line (@cfg) (next if $ line = ~ / ^ \ # /; if ($ line = ~ /(.*?) \ = \ "(. *?) \" \; /) (chomp $ 2; $ cfg ($ 1) = $ 2;)) zatvori (CFG); povratak% cfg; ) ######################################### sub dbConnect (my ($ db, $ user, $ pass) = @_; return $ dbh = DBI-> connect ("DBI: mysql: $ db", $ user, $ pass) || die "Ne mogu se povezati s bazom podataka: $ DBI :: errstr"; ) ########################################## sub logSystem (my ($ text, $ nivo) = @_; moj% cfg = readCfg ("common.cfg"); dbConnect ($ cfg ("dbName"), $ cfg ("dbUser"), $ cfg ("dbPass")); $ dbh-> do ("INSERT INTO log (datum, poruka, nivo) VRIJEDNOSTI (SADA ()," $ text ", $ level)");)

Kao što možete vidjeti iz imena funkcija, dbConnect () je odgovoran za povezivanje s našim DBMS-om, logSystem () je za bilježenje, readCfg () je za učitavanje konfiguracije. Zadržimo se na tome detaljnije. Konfiguracija je jednostavna tekstualna datoteka u direktorijumu config. U našem slučaju se zove common.cfg... Izgleda otprilike ovako:

## Postavke daemonMode = "undef"; logSystem = "1"; logUser = "1"; dbName = "jon"; dbUser = "root"; dbPass = "lozinka"; camNumber = "4"; camMotionDetect = "1"; httpPort = "16100"; httpHost = "localhost"; telnetPort = "16000"; telnetHost = "localhost"; micThreads = "5";

Neki redovi u njemu će se koristiti kasnije. Do sada nas zanimaju samo redovi koji počinju s prefiksom db... Kao što vidimo, ovo su postavke za povezivanje s našom bazom podataka.

Sada ću vam reći kako prevladati opetovano izvršavanje naredbe. Uredimo funkciju checkcmd ():

Potprovjera cmd (moj $ text = shift; chomp $ text; $ text = ~ s / $ // g; print "+ OK - Dobio sam naredbu \" $ text \ "(Length:" .length ($ text). ") \ n "; ako ($ text = ~ / system /) (################################### # ############# my $ sth = $ dbh-> pripremite ("SELECT cmd FROM komandni dnevnik WHERE DATE_SUB (SADA (), INTERVAL 4 SEKUNDI)<= date LIMIT 0, 1"); $sth->izvršiti (); moj $ rezultat = $ sth-> fetchrow_hashref (); if ($ result -> (cmd) ne "") (return;) $ dbh-> do ("INSERT INTO Commandslog (date, cmd) VRIJEDNOSTI (SADA ()," $ text ")"); ################################################# if ( $ text = ~ / check /) (my $ up = `uptime`; $ up = ~ / up (. *?), /; sayText (" Vrijeme rada servera - $ 1. Glavni broj procesa - $ roditelj. "); ) if ($ text = ~ / time /) (my $ up = `uptime`; $ up = ~ /(.*?) up /; sayText (" Now $ 1 ");) if ($ text = ~ / finish / || $ text = ~ / finish /) (sayText ("Prestanak. Sve najbolje!"); system ("killall motion"); system ("rm ./data/*.flac && rm ./data/ * .wav "); system (" killall perl "); exit (0);) if ($ text = ~ / weather /) (my ($ addit, $ mod); my% wh = lib :: HTTP :: checkWeather (); $ wh ("condition") = Kodiraj :: decode_utf8 ($ wh ("condition"), $ Encode :: FB_DEFAULT); $ wh ("hum") = Encode :: decode_utf8 ($ wh ("hum") "), $ Encode :: FB_DEFAULT); $ wh (" wind ") = Encode :: decode_utf8 ($ wh (" wind "), $ Encode :: FB_DEFAULT); if ($ wh (" temp ")< 0) { $mod = "ниже нуля"; } if($wh{"temp"} >0) ($ mod = "iznad nule";) $ wh ("vjetar") = ~ s /: V, / istok /; $ wh ("vjetar") = ~ s /: Z, / zapadni /; $ wh ("vjetar") = ~ s /: S, / jug /; $ wh ("vjetar") = ~ s /: S, / sjever /; $ wh ("vjetar") = ~ s /: SI, / sjeveroistok /; $ wh ("vjetar") = ~ s /: SZ, / sjeverozapad /; $ wh ("vjetar") = ~ s /: JI, / jugoistok /; $ wh ("vjetar") = ~ s /: JZ, / jugozapad /; sayText ("Sada $ wh (" stanje "), $ wh (" temp ") stepeni $ mod. $ wh (" zujanje "). $ wh (" vjetar ")"); if ($ wh ("temp")<= 18) { $addit = sayText("Одевайтесь теплее, на улице холодно!"); } if ($wh{"temp"} >= 28) ($ addit = sayText ("Prijenosni klima uređaj neće naštetiti!");))) #SayText ("Vaša naredba je $ text"); povratak; )
U intervalu od četiri sekunde biramo zadnju izvršenu naredbu i ako se podudara s trenutnom, izlazimo iz funkcije. Kao što vidite, dodao sam neke naredbe u odnosu na funkciju opisanu u prošlom članku. Najzanimljivije je vrijeme. Implementacija primanja podataka za nju je odmah ispod.

Modul HTTP.pm

Vratimo se implementaciji ugrađenog HTTP servera. Stvorimo datoteku HTTP.pm u direktoriju lib... Napišimo tamo sljedeći kod:

Paket lib :: HTTP; koristiti HTTP :: Server :: Jednostavno :: CGI; koristiti LWP :: UserAgent; koristiti URI :: Escape; koristiti osnovnu qw (HTTP :: Server :: Jednostavno :: CGI); koristiti predložak; ################################################## # ################################ naša% dispatch = ("/" => \ & goIndex, "/ index" = > \ & goIndex, "/ camers" => \ & goCamers,); naš $ tt = Predložak-> new (); ################################################## # ################################ sub handle_request (moj $ self = shift; moj $ cgi = shift; moj $ path = $ cgi-> path_info (); moj $ handler = $ dispatch ($ path); if ($ path = ~ qr (^ / (. * \. (?: png | gif | jpg | css | xml | swf)) )) (my $ url = $ 1; print "HTTP / 1.0 200 OK \ n"; print "Content-Type: text / css \ r \ n \ n" if $ url = ~ / css /; print "Content- Upišite: image / jpeg \ r \ n \ n "ako je $ url = ~ / jpg /; ispiši" Content-Type: image / png \ r \ n \ n "ako je $ url = ~ / png /; print" Content- Upišite: image / gif \ r \ n \ n "ako je $ url = ~ / gif /; ispis" Content-Type: text / xml \ r \ n \ n "ako je $ url = ~ / xml /; print" Content- Upišite: application / x-shockwave-flash \ r \ n \ n "ako je $ url = ~ / swf /; otvoreno (DTA,"<$url") || die "ERROR: $! - $url"; binmode DTA if $url =~ /jpg|gif|png|swf/; my @dtast = ; foreach my $ line (@dtast) (print $ line;) close (DTA); povratak; ) if (ref ($ handler) eq "CODE") (print "HTTP / 1.0 200 OK \ r \ n"; $ handler -> ($ cgi);) else (print "HTTP / 1.0 404 Nije pronađen \ r \ n "; ispisati $ cgi-> zaglavlje, $ cgi-> start_html (" Nije pronađeno "), $ cgi-> h1 (" Nije pronađeno "), $ cgi-> h2 ($ cgi-> path_info ()); $ cgi-> end_html;)) ## Zahtjev za obradu / ###################################### # # sub goIndex (moj $ cgi = shift; # CGI.pm objekt se vraća ako! ref $ cgi; moj% w = checkWeather (); moj $ cmd; moj $ dbh = iON :: dbConnect ($ iON :: cfg (" dbName "), $ iON :: cfg (" dbUser "), $ iON :: cfg (" dbPass ")); moj $ sth = $ dbh-> pripremiti (" SELECT cmd FROM commandls WHERE id> 0 NARUČI PO id DESC OGRANIČENJE 0, 1 "); $ sth-> execute (); moj $ rezultat = $ sth-> fetchrow_hashref (); if ($ rezultat -> (cmd) ne" ") ($ cmd = $ rezultat -> (cmd );) else ($ cmd = "Nema naredbi ...";) print "Content-Type: text / html; charset = UTF-8 \ n \ n"; moj $ uptime = `uptime`; $ uptime = ~ / up (. *?), /; $ uptime = $ 1; moj $ videosys = `ps aux | grep motion`; if ($ videosys = ~ / motion -c /) ($ videosys =" radi";) ostalo ($ videosys =" ne radi";) moj $ micsys =` ps aux | grep mic`; if ($ micsys = ~ / perl mic \ .pl /) ($ micsys = " radi";) ostalo ($ micsys =" ne radi";) moj $ vars = (whIcon => $ w (" ikona "), whCond => $ w (" stanje "), whTemp => $ w (" temp "), whHum => $ w (" brujanje " ), whWind => $ w ("vjetar"), cmd => $ cmd, vrijeme neprekidnog rada => $ uptime, video => $ videosys, mic => $ micsys, niti => $ iON :: cfg ("micThreads") ,); moj $ output; $ tt-> proces ("html / index", $ vars, $ output) || print $ tt-> error (), "\ n";) ## Obrada zahtjeva / kamera ## ####################################### sub goCamers (moj $ cgi = shift; # CGI. pm objekt vraća ako! ref $ cgi; moj% w = checkWeather (); moj $ cmd; moj $ dbh = iON :: dbConnect ($ iON :: cfg ("dbName"), $ iON :: cfg ("dbUser" ), $ iON :: cfg ("dbPass")); moj $ sth = $ dbh-> pripremiti ("ODABERI cmd IZ naredbenog dnevnika GDJE id> 0 NARUČI PO ID-u DESC LIMIT 0, 1"); $ sth-> izvršiti ( );; moj $ rezultat = $ sth-> fetchrow_hashref (); if ($ rezultat -> (cmd) ne "") ($ cmd = $ rezultat -> (cmd);) else ($ cmd = "Nema naredbi .. . ";) if ($ cgi-> param (" text ") ne" ") (moj $ txt = $ cgi-> param (" text "); zahtijeva Encode; $ txt = Encode :: decode_utf8 ($ txt, $ Encode :: FB_DEFAULT); iON :: sayText ( $ txt); ) ispis "Content-Type: text / html; charset = UTF-8 \ n \ n"; my $ vars = (camera1 => "video-0 / camera.jpg", camera2 => "video-1 / camera.jpg", camera3 => "video-2 / camera.jpg", camera4 => "video- 3 / camera.jpg ", whIcon => $ w (" ikona "), whCond => $ w (" stanje "), whTemp => $ w (" temp "), whHum => $ w (" hum ") , vjetar => $ w ("vjetar"), cmd => $ cmd,); moj $ output; $ tt-> proces ("html / camers", $ vars, $ output) || ispiši $ tt-> error (), "\ n"; ) ## Vrijeme ######################################## sub checkWeather (moj% wh; moj $ ua = LWP :: UserAgent-> novi (agent => "Mozilla / 5.0 (Windows NT 5.1; ru-RU) AppleWebKit / 535.2 (KHTML, poput Gecko) Chrome / 15.0.872.0 Safari / 535.2"); moj $ content = $ ua-> get ("http://www.google.com/ig/api?hl=ru&weather=" .uri_escape ("Sankt Peterburg")); $ content-> content = ~ / (.*?)<\/current_conditions>/ g; moj $ cond = $ 1; $ cond = ~ /

Pogledajmo detaljnije sadržaj. U hešu % otpreme utvrđujemo korespondenciju između url-a i pozvane funkcije. Svi ostali URL-ovi koji nisu opisani u ovom hashu vratit će stranicu 404 .
Naš mehanizam predložaka bit će moćna i fleksibilna knjižnica. Alat za predloške... Inicijaliziramo ga linijom:

Naš $ tt = Template-> new ();
Preopterećenje funkcije handle_request () roditeljska klasa, dobivamo kontrolu obrade zahtjeva na HTTP serveru. Za posluživanje statičnog sadržaja u pregledniku (png, gif, jpg, css, xml, swf) koristi se blok:

If ($ path = ~ qr (^ / (. * \. (?: Png | gif | jpg | css | xml | swf))))) (moj $ url = $ 1; ispis "HTTP / 1.0 200 OK \ n "; ispis" Content-Type: text / css \ r \ n \ n "ako je $ url = ~ / css /; print" Content-Type: image / jpeg \ r \ n \ n "ako je $ url = ~ / jpg /; ispis "Content-Type: image / png \ r \ n \ n" ako je $ url = ~ / png /; print "Content-Type: image / gif \ r \ n \ n" ako je $ url = ~ / gif /; ispis "Content-Type: text / xml \ r \ n \ n" ako je $ url = ~ / xml /; print "Content-Type: application / x-shockwave-flash \ r \ n \ n" ako $ url = ~ / swf /; otvoren (DTA, "<$url") || die "ERROR: $! - $url"; binmode DTA if $url =~ /jpg|gif|png|swf/; my @dtast = ; foreach my $ line (@dtast) (print $ line;) close (DTA); povratak; )
Budući da nisam imao puno MIME vrsta, malo sam ih zapisao na hinduističkom;)
Slijede funkcije odgovorne za generiranje sadržaja određenog URL-a. Za sada postoje samo dva - indeks i stranica sa kamerama.
Na indeksu možemo vidjeti rade li podsistemi poput video i audio snimanja. Odvojena linija ide:

Moj% w = checkWeather ();
Ova funkcija vraća hash sa trenutnim vremenskim podacima u gradu, koji će biti prikazani na našoj stranici. Tako mala lijepa punđa;)
Na istom mjestu, pored njega, prikazat ćemo posljednju primljenu i prepoznatu naredbu za "pametnu kuću".

Sljedeća funkcija goCamers () obavlja iste funkcije kao i indeks, samo umjesto da prikazuje informacije o stanju podsistema, prikazuje sliku s naših kamera i moguće je napisati bilo koji tekst koji će sintetizirati i izraziti naša "pametna kuća".

Sve stranice su izgrađene na osnovu predložaka u mapi html... Ovdje neće biti zgodno objaviti popis, pa ću dati link na arhivu -

Instalacija sistema "Smart Home", višesobnog i kućnog bioskopa Čarobni štapić Kymera

U 2011. godini naši stručnjaci završili su rad na upravljačkom sučelju za dodirne panele i AMX kontrolnu ploču, koji su glavni kontrolni elementi sistema Smart Home.

U ovom primjeru upravljačko sučelje je implementirano za dvije vrste uređaja:

  1. Dodirni panel AMX MVP-5200i rezolucije 800 x 480 piksela.
  2. AMX MIO-R4 daljinski upravljač rezolucije ekrana 240 x 320 piksela.

Štoviše, obje implementacije sučelja imaju potpuno istu funkcionalnost.

Upravljačka ploča ekrana osjetljivog na dodir AMX MVP-5200i i daljinski upravljač AMX MIO-R4 imaju različite rezolucije uz zadržavanje iste funkcionalnosti

Korisničko sučelje dizajnirano je za AMX dodirnu ploču 4. generacije i AMX kontrolnu ploču, uzimajući u obzir sve grafičke i funkcionalne mogućnosti ovih uređaja.

Dio 1. Specifični pristup

Na fotografiji 1 vidimo glavni meni u kojem se korisniku daje mogućnost da odabere inženjerski sistem kojim može upravljati.

Slika 1




I ovako izgleda ovo sučelje na AMX daljinskom upravljaču MIO-R4, koji ima rezoluciju 240x320 piksela

Na vrhu je naziv sobe koja se kontrolira. Korisnik može preći na upravljanje bilo kojim inženjerskim sistemom klikom na ikonu sa slikom ovog sistema. Trenutno aktivni sistemi su označeni zelenom bojom. Veliko crveno dugme "isključeno" odjednom isključuje sve sisteme u odabranoj sobi. Na dnu stranice uvijek postoji polje pomoćnih informacija, gdje su prikazani vrijeme i datum. Dugme "izlaz" odvest će nas na stranicu općeg plana kuće (vidi sliku 2).

Slika 2


Na stranici općeg plana već imamo posla ne s jednom sobom, već s cijelom kućom. Odavde možemo ići u bilo koju sobu ili odjednom kontrolirati cijelu kuću ("globalna kontrola", kako je zovemo). S lijeve strane nalaze se kartice za odabir inženjerskog sistema, čije će se stanje odraziti na opći plan.

Ako je odabrani sistem aktivan u sobi, dugme sobe je narančasto, ako nije, plavo.

Dugme "isključeno" u ovom će slučaju već isključiti sistem ne u zasebnoj sobi, već u cijeloj kući odjednom. Pritiskom na dugme sobe odvest ćemo nas na glavnu stranicu ove sobe, a na gumb "izlaz" - na stranicu sobe (vidi sliku 1).

Krenimo na stranice interfejsa posvećene upravljanju određenim inženjerskim sistemima.

Slika 3 prikazuje interfejs za kontrolu svetlosti u sobi.

Slika 3



Ikona sijalice prikazuje stvarno stanje zone svjetla. Pritiskom na sijalicu uključuje se ili isključuje izvor svjetlosti. Tipke sa strelicama omogućuju upravljanje svjetlinom svjetla (ova funkcija je dostupna samo s prigušivačem). Moguće je zapamtiti trenutno stanje svjetlosnih zona (svjetlosne scene) pomoću gumba za odabir scena koji se nalaze na dnu stranice. Zatim se memorisana scena može brzo uključiti pritiskom na dugme. Dugme "isključeno" u ovom slučaju kontrolira sve izvore svjetlosti u datoj sobi.

Na fotografiji 4 kontroliramo klimu u sobi.

Slika 4




Interfejs za kontrolu klime dostupan je i sa AMX daljinskog upravljača

Izvršni uređaj u ovom slučaju je Daikin klimatski sistem. Interfejs za kontrolu klime je što jednostavniji i intuitivniji. Jednim pritiskom odgovarajućeg dugmeta mijenja se način hlađenja-grijanja-ventilacije, podešava se brzina ventilatora i željena temperatura.

Slika 5 prikazuje interfejs za upravljanje medijskim uređajima u sobi.

Slika 5




Na ovoj stranici sučelja možete odabrati izvor zvuka ili slike za reprodukciju. Aktivni izvor je istaknut zelenim okvirom. Kada biramo izvor, dolazimo do stranice za upravljanje tim izvorom (ove stranice nisu predstavljene u ovom članku). Dugme "Postavke" vodi nas do kontrolnog menija TV podešavanja.

Ovde takođe možete da kontrolišete nivo jačine zvuka izvora zvuka ili slike i otvorite prozor ekvilajzera (pogledajte sliku 6).

Slika 6




Dio 2. Principirani pristup

Ovdje ćemo dati osnovne principe koji su korišteni u razvoju gore prikazanih sučelja.

1) Vidljivost- upotreba grafičkih slika predmeta, odražavajući njihovu funkcionalnost. Ovaj princip pojednostavljuje rad sa interfejsom, čineći ga intuitivnijim (vidi sliku 1). U ovom primjeru svaki sistem ima svoju ikonu, a aktivnost sistema odražava se u zelenom okviru za isticanje.

2) Strukturnost- strogo pridržavanje strukture prilikom izgradnje složenih sučelja na više nivoa. U ovom primjeru postoje 4 nivoa upravljanja: cijela kuća, soba, sistem, podsustav (vidi sliku 2). Kuća ima 11 soba i 3 sistema upravljanja (svjetlost, klima, mediji).

Razvijeno sučelje omogućava vam kontrolu sistema na svim nivoima, kao i brzu i jednostavnu promjenu sistema i prostorije kao kontrolnog objekta. Dobro oblikovana struktura uvelike pojednostavljuje navigaciju kroz stranice interfejsa.

3) Višestruka skala- kombinacija lokalnih i globalnih funkcija upravljanja u jednom interfejsu. Odnosno, uz pomoć jedne ploče, korisnik može upravljati i odvojenim sistemom u jednoj sobi, i svim sistemima u cijeloj kući odjednom. Dakle, fotografija 3 prikazuje interfejs za kontrolu svetlosti u jednoj sobi, a na fotografiji 2 već kontroliramo svetlost u celoj kući.

4) polisemija- prisustvo nekoliko opcija za upravljanje istim objektom. Na primjer, u ovom sučelju je kontrola jačine zvuka u sobi (vidi sliku 4) moguća i sa dodirnog ekrana i sa vanjskih kontrola (okretni točkić za ploču MVP-5200i ili vanjsko dugme "Vol" za konzole MIO-R4).

5) Svestranost- mogućnost implementacije upravljačkog sučelja na različitim pločama s različitim rezolucijama zaslona.

Tako je u ovom primjeru kontrolno sučelje implementirano za dvije vrste uređaja: AMX MVP-5200i dodirni panel (rezolucija 800x480) i AMX MIO-R4 konzola (240x320 rezolucija). Štaviše, obje implementacije interfejsa imaju potpuno istu funkcionalnost (vidi prvu fotografiju).

O estetici

Pri razvoju interfejsa primijenili smo i razne grafičke tehnike koje poboljšavaju njegovu percepciju i izgled. Da bismo to učinili, koristili smo prozirna polja i zaglavlja, elegantne pozadine koje mijenjaju boje ovisno o odabranom sistemu, iskačuće prozore, volumetrijske ikone sa sjenama, volumetrijske tipke s indikacijom statusa, aktivnosti itd.

Ukratko, pokušali smo osigurati da kontrolno sučelje iskorištava tehničke mogućnosti AMX upravljačkih uređaja, odgovara stilu i dizajnu za koji je dizajnirano te da je prilagođeno korisniku.