"Smart Home" kontrolės sistemų sąsajos. Sistema "Smart Home"

Serveris protingas namai - Tai "smegenų" valdymo sistema. Jis įgyvendina ir palaiko viso tinklo darbą. Generuoja ir siunčia būtinus signalus kontrolieriams, atsakingiems už jutiklių, signalizacijos, klimato kontrolės, kitų funkcijų ir režimų, įterptų įterptųjų programinė įranga.

Serverio tipai

"Smart Home" valdymas atliekamas iš serverio. Jis gali būti centralizuotas (stacionarus) ir decentralizuotas (gali dirbti nuotoliniu būdu).

Pagrindiniai serverio reikalavimai:

  • Stabilus darbas.
  • Privalomas duomenų atleidimas.
  • Programinės įrangos valdymo versijos.
  • Gebėjimas atnaujinti ir patobulinti funkcinį.
  • Greitas koregavimas gedimo atveju.

Stacionarus serveris, kuris ateina su protingu namu yra stabilus ir turi platų funkcionalumą, bet taip pat turi keletą trūkumų. Tai yra kaina ir poreikis įdiegti dublikacinį įrenginį, jei pagrindinės priemonės nesėkmės. Pagrindinis trūkumas gali būti laikomas neįmanoma kontroliuoti sistemą atstumu.

Serverio ir interneto serverio protingas namų vidurio objektas

Naudodamiesi planšetinių kompiuterių ir išmaniųjų telefonų atsiradimu, tapo įmanoma kontroliuoti įvairius prietaisus nuotoliniu būdu, o tai labai supaprastina gyvenimą. Jei diegiate valdymą protingas namai Serverio duomenų bazėje su nuotoline prieiga, sąveika su sistema bus veiksmingesnė.

Raspberry Pi 2 platforma "Smart Home" interneto serverio kūrimui

"Smart Home" žiniatinklio serveris yra mikro, planšetinio kompiuterio ar išmaniojo telefono. Platforma gali būti bet koks įrenginys su dideliu garsumu atsitiktinės prieigos atmintis (Raspberry Pi 2 arba Aviečių Pi 3, AC500-ECO, Arduino), galingas procesorius ir galimybė susipažinti su internetu. Interneto serveris kaip sistemos dalis Smart Home suteikia vizualizuoti valdymą per naršyklę.

"Smart Home" žiniatinklio serveris veikia paprastas principas. Mobilusis įrenginys veikia kaip pagrindinis branduolys, nuotoliniu būdu siunčia komandų signalus. Programinė įranga, kurią galima įsigyti arba paskirti savarankiškai paverčiant "Android", "Linux" arba "Windows" įrenginiai Dispečerio stotyje sąveikauja su "WiFi" valdikliais. Žiniatinklio bloko "Smart Home" privalumai yra tai, kad tai įmanoma ne tik valdyti sistemas namuose, bet ir gaminti bet kokią operaciją iš išorės. Taip pat galima sukonfigūruoti debesies atstumą ir saugojimą.

"Smart Home Management" sąsaja

Sistemos veikimas neįmanomas be sąsajos ( visuotinės priemonės kontrolė). Jo darbo principas grindžiamas galimybe susipažinti su internetu, tai yra programinės įrangos platforma, kuri leidžia jums išsamiai valdyti visus namus automatizuotos sistemos. Be to, "Smart Home" sąsaja suteikia informacijos sąveiką ir paramą darbo sąlygai. Tokia sistema yra suderinama su bet kuriuo kompiuteriu ar išmaniuoju telefonu su įvairiomis platformomis.

Smart Home sąsaja sukuriama kiekvienam vartotojui atskirai

Į Šiuolaikinė sistema "Smart Home" interneto sąsaja daro modulinę architektūrą, pastatytą ant PHP, CSS ir "JavaScript". Nurodyta UI įskiepiuose kaip HTML arba CSS, esančiuose DLL ištekliuose. Jie gali būti pridėti arba pakeisti savo nuožiūra. Apytikslė sąsajos struktūra atrodo taip:

  • Pradėti puslapį darbalaukyje. Apie tai visi valdikliai rodomi piktogramų forma.
  • Įskiepiai turi pertvarų, kurios yra suskirstytos į sistemą (dirbti su nustatymais) ir pagal užsakymą (tiesiogiai kontroliuoti funkcijas).

Nepriklausoma interneto sąsajos kūrimas "Smart Home" valdymui atliekamas naudojant specialius internetinius dizainerius su paruoštu duomenų paketu.

Kaip padaryti serverį protingam namui

Savarankiškai padaryti serverį pakankamai paprasta. Būste nepanaudotas kompiuteris (Pageidautina priimti modelį nuo 2006 m. Išleidimo), sumontuotu prioritetiniu būdu:

  • energijos vienetas;
  • aušintuvas su sumažintu triukšmo gamyba;
  • plokštė su šiuolaikiniu procesoriumi;
  • rAM, atitinkantis procesoriaus reikalavimus;
  • kai kurie kietieji diskai (pageidautina NAS sistema) ir SATA valdiklis;
  • tinklo kortelė su kompiuterio palaikymu;
  • "WiFi" modulis.

Įranga gali būti keičiama priklausomai nuo reikalavimų. Be to, turėtumėte konfigūruoti serverį naudodami pilnos paslaugos ("Linux" sistema yra tinkama) ir įdiegti programinę įrangą.

Nepriklausomo serverio surinkimas už "Smart Home", vadinamą "AvroBot"

Norint, kad žiniatinklio serveris būtų protingas namai, pakanka įdiegti atitinkamą programinę įrangą, kuri sąveikauja su kontroliuojamomis sistemomis (jutikliai, atsakingi už kontrolės klimato, šviesos ir kt. Darbą) kompiuteryje arba išmaniajame telefone.

2015 m. Kovo 27 d. 15:18

Mano protingas namai yra PLC ir su interneto sąsaja. 1. DALIS ĮVADAS

  • Html,
  • Scada.

ĮVADAS. \\ T

Yra daug straipsnių apie projektus Habré smart Namaibet beveik visi jie buvo namų įranga ir kinų ratlankiai. Mano straipsnyje aš norėjau pasakyti apie kitą požiūrį, kuris rodo, kaip lengviau atlikti projektus naudojant paruošti sprendimai Pasaulio gamintojai ( ir jis atrodo kietas), taip pat demonstruoja galimybę naudoti įrangą ne tik pramoninėmis priemonėmis, bet ir privačioje sferoje. Paaiškėjo technologijų ir automatizavimo krypties simbiozė. Viena vertus, naudojant PLC, kuris daugiausia skirtas pramonės poreikiams, leidžiant atlikti bet kokio sudėtingumo užduotis be sunkių algoritmų apribojimų galutiniai įrenginiai Smart namai (pavyzdžiui, naudojant KNX technologiją) su HTML / JavaScript Web Technology suteikia neribotą fantazijos skrydį išplėsti projektus.

Dabartinės išlaidos - 170 tūkst. Rublių (senas euro kursas).

Pradėkime.

Ką man buvo sukurta

Valdykite apšvietimą ir maitinimą
- Iš esmės, kontrolė bus padaryta įjungti / išjungti, apsaugo nenori ir nereikia;
- Noriu valdyti skirtingos sėdynėsPavyzdžiui, nuėjau į miegamąjį - įjungiau liustrą, gulėjau ant lovos - paspaudžiau, kad išjungčiau liustrą. Jei pamiršote išjungti šviesą salėje (arba tualete ...) Aš paspaudžiau "išjungti šviesą visur" mygtuką. Patogiai;
- paliekant butą, spustelėkite vieną mygtuką - jis išsijungia į visą buto šviesą ir kt.;
- perskaitykite skaitymą iš elektros skaitiklio;
- nepertraukiamos daugiabučių valdymo ir saugos sistemų mityba;
- Be išimties, visos apšvietimo grupės turi būti valdomos iš PLC. Gaisro atveju lizdinės grupės turi būti atjungtos nuo mašinos PLC - išjungti elektros energijos tiekimą į avarinius atvejus;
- Kiekviena apšvietimo grupė turi ateiti į skydą ir perduoti per artimiausią jungiklį į galimybę perdaryti apšvietimo valdiklį į įprastą schemą (jei aš parduodu butą, aš paimsiu viską);
- koridoriuje, suteikiant žmogaus judėjimo jutiklį, kad būtų galima valdyti apšvietimą + saugumo signalizacija;
- Šiltas grindis ant balkono, tualete, vonios kambarys, prieškambario - su kontrolės galimybe priklausomai nuo gatvės temperatūros, laiku.

Valdyti šildymą ir ventiliaciją
- Šildymo kontrolė - ant kiekvienos akumuliatoriaus įrengiamas vožtuvas su disku (temperatūros valdymui, yra aišku, kad išmatuokite kambario temperatūrą, būtina pateikti temperatūros jutiklius);
- numatyti oro kondicionierių kontrolę IR kanale (dabartinis užduočių sprendimas dar nerandamas, mes paimame vitu porą vidinis blokas Condeya dar kartą išrado);
- Temperatūros jutikliai Gatvės temperatūra (saulės ir ne saulėta pusė);
- IN Žiemos metu Gana dažnai yra dvi problemos - tai šalta ir nieko kvėpuoti. Sprendimas nustatyti tiekimo sistemą. Toliau užtikrinti valdymą Įleidimo sistema (Temperatūra kanale, gatvės jutiklis temperatūra, trys šildymo žingsniai, ventiliatorius);
- Vadyba išmetimo gerbėjai (San mazgas, vonios kambarys).

Apsaugos signalizacija
Įvesties durų valstybinio signalizacijos (durų būsenos archyvavimas - atidarymo / uždarymo laikas);
Įjungimas per žiniatinklio sąsają arba per šviesos valdymo jungiklį.

CCTV.
Įrašymas iš fotoaparato įleidimo durų, stovėjimo aikštelės;
Archyvavimo įrašai ant nuotolinio serverio.

Įranga. \\ T

- Kadangi aš pripratęs prie PLC iš ABB, tada buvo pasirinktas AC500-ECO modelis (PM554-ETH CPU su Ethernet CPU) kaip smegenys;
- Tada aš jau pradėjau skaičiuoti pinigus ir ... buvo būtina pasirinkti informacijos rodymo aplinką, su galimybe interneto ekrano informacija apie namus. Yra daug variantų, tačiau dažniausiai viskas yra pagrįsta nevalstybinio platformos sprendimais, kurie man netinka. Visa tai su žodžiais SCADA ir WEB buvo su laivo kūrėju. Turėjau šiek tiek susitaikyti dėl to, buvo nuspręsta naudoti SCADA sistemą, bet sistema su dideliu funkciniu HTML5. Atėjo į csworks. Šis laisvas darbas leidžia nemokamai naudoti 999 kintamųjų apribojimą, 1 klientą. Kad buvau visiškai patenkintas.
- Jung, Serie A buvo pasirinktas kaip jungikliai ir lizdai (šviesos kontrolė). Nuo pliusų - jie gali vežti iki 4 mygtukų į vieną mygtuką (jungiklis be fiksavimo), taip pat yra indikacijos šviesos diodai su įtampa 24V (ši įtampa yra standartinė pramoninė automatikos sistemos įtampa). Šios funkcijos nematė jokių elektros įrenginių gamintojų (neskaitant Kinijos);

Darbo pradžia

1. Apšvietimo būdas. Kiekviena grupė tiesiogiai patenka į maitinimo spintą. Spintoje yra kontaktorių ir laidų. Reel ritės ir kontaktoriai yra valdomi iš PLC signalų (DC24V). Rezervuoti valdymą aš naudoju kontaktorių su rankinis valdymas. Pašarų viela padarė jungiklį, einantį per puodelį, kad būtų gebėjimas pakeisti įprastos schemos laidus.

Rankinis valdiklis pačiu:

Kabinetas sumontuotas ir sumontuotas:

Kaip parašiau aukščiau, jungikliai pasirinko be fiksavimo su LED indikatoriais. Maksimalus 4 mygtukai, galima suskaičiuoti šiuos mygtukus į 8 grupes (žr. Jungtinio jungiklio dokumentaciją

Pasakojimas su trumpais techniniais nuokrypiais.

Kaip viskas prasidėjo

Ši istorija prasidėjo beveik pusantrų metų. Mes atvykome į klientą su "svajonių projektu".
Užsakymas skambėjo trumpas ir paprastas: pakeiskite dizainą ui dabartinė sistema Protingas namai.
Žvelgiant į sistemą, tai buvo matomas tipiškas atstovas protingo namo, kas daugelis dabar, čia yra sename dizaino.
Būtent: nuobodu piktogramos, paimtos iš tinklo, nesilaikoma ekranų logika, o ne ergonomiška mažos skiriamosios gebos vietos, spalvingi gradiento mygtukai ir jutikliai ant grindų plano, kaip paaiškėjo programuotojas.


Tačiau projekto architektūra atstovavo gana kompetentingam sprendimui. Buvo duomenų valdymo serverio ir duomenų analizės serveris, kuris vykdo nedidelį langelį, kuriam buvo galima prisijungti trimis būdais:

  • Nuo. namų kompiuteris Per naršyklę (tiek maršrutizatoriui) į administracinę sąsają - konfigūruoti viską ir visus
  • Nuo jutiklinio skydelio prie įėjimo į namus - valdyti signalizaciją, scenarijus, fotoaparatus ir jutiklius (nuo jo buvome ir pasiūlė pradėti)
  • Nuo. mobilieji įrenginiai - valdyti namą iš bet kurios vietos (pirmojoje versijoje per griežčiau admin)

Dervisiškai su klientu buvo nuspręsta padaryti sąsają "Windows 8" stiliaus, nors ji pats dar nepateikė, buvo tik daug ekrano tinkle. Mes mažiname išsamią informaciją apie tokį sprendimą, tik sakau, kad jis buvo priimtas vienbalsiai ir pradėjome dirbti.
Verta paminėti, kad tuo metu, kai turėjome tam tikrą patirtį projektuojant sąsajas arti dvasios: jachtų kontrolės skydas (jie yra verti atskirus straipsnius, bet yra kieta NDA), laive kompiuteris auto ir kulnais sensorinių kioskų.

Idėja

Iš "Smart Home" sistemos dizaino tema jau seniai bluding mano vaizduotę. Sprendimai, kurie egzistuoja rinkoje, ir glaudžiai nėra arti to, ką galiu skambinti "protingai".

Apsvarstykite pavyzdį

Hummer. Turite įjungti šviesą kambaryje. Jūsų veiksmai?
Kaip tai paprastai - Jūs pakilsite ir įjunkite šviesą.
Pasak daugelio automatikos sistemų kūrėjų - Nuimkite nuotolinį ir įjunkite šviesą.
Dažnai jie nemato banalinių problemų. Pirma, konsolė šalia gali būti, būtina pakilti, kad jį rasti, antra, nepamirškite, kad dauguma šių įrenginių dabar yra su dabar su liečiamas ekranasTai reiškia, kad nuotolinio valdymo pultas taip pat turi būti įtrauktas. Nauja mada - Padarykite nuotolinį iš planšetinio kompiuterio arba telefono (atskira programa), kuri dar labiau apsunkina užduotį:
Stovėkite ir suraskite įrenginį -\u003e Įjungti arba atrakinti ekraną -\u003e Paleisti programą -\u003e Rasti norimą jutiklį -\u003e Pelnas.
Ar lengva pakilti ir įjungti jungiklį?
Smart namai mano supratimu - jis turi apimti pačią šviesą, kai jums reikia, nors jums reikia atsižvelgti į jus ar atsipalaiduoti, metų laiką, žmonių skaičių kambaryje, jūsų vieta kambaryje ir veiksnių krūva, pagrįsti veiksniais Jūsų ankstesniuose sprendimuose tokiose situacijose, prognozuojant savo norus. Priešingu atveju, šis namas yra sunku skambinti "protinga".
Konsolė turėtų būti naudojama tik tam tikrais atvejais ir neturėtų būti pagrindinis namų valdymo elementas. Iš tiesų "protingas" namas "nereikia valdyti - jis padarys viską save.

Tačiau tai dar toli į tokias sistemas, galima teigti, kad šiandien neįmanoma įgyvendinti, todėl pagerinsime tai, ką galime, būtent tą pačią konsolę.

Pagrindinė šių sprendimų problema yra lengviau parodyti pažįstamą Habru vaizdą:

Taip, beveik visos tokios sistemos yra branduolinio reaktoriaus valdymo plokštės, kuriose sunku suprasti net pažangų naudotoją.
Kūrėjai dėl tam tikrų priežasčių bando kuo daugiau elementų kuo daugiau elementų daugiau galimybių Ir, kaip rezultatas, kiek įmanoma problemų ux.

Taigi, kas yra idėja?

Pašalinkite nuo akies visos nereikalingos, visiškai visko.
Jei aš tiesiog noriu išjungti miegamąjį šviesą, kodėl turėčiau matyti vandens vožtuvų valdymo jutiklius virtuvėje?
Jei noriu uždaryti visus namo langus, tada noriu tai padaryti su vienu mygtuku, o ne atskirai į kiekvieną jutiklį.
Jei aš įdėti namą ant aliarmo ir nėra nė vieno namo - tai reiškia, kad šviesa turi būti grąžinta visur, temperatūra yra sumažinta, langai yra uždaryti, vaizdo stebėjimas yra įjungtas. Ir visa tai turėtų atsitikti be mano dalyvavimo!

Vienas žiedas, skirtas redaguoti visą mygtuką - "daryti gerai".

Geriausia sąsaja yra ta, kad jūs nematote, prie kurio jums nereikia atkreipti dėmesio dirbant, kuris daro viską už jus, ar jūs jį valdote pasąmonės lygiu, nes:
a) Jūs esate įpratęs
b) Akivaizdu
Ar atkreipiate dėmesį į tai, kur yra "YouTube" žaidimo mygtukas? Kur yra uždarymo mygtukas naršyklės lango? Arba kur yra "Google" paieškos laukas?
Ar jis supažindins jus su jutiklių sučiu vienu ekrano "Smart Home" sistemą?
Tiesa, viskas, kas iš tikrųjų reikalinga iš tokių sistemų, yra išspręsti vieną kitą konkrečią užduotį (kaip žaisti grotuve arba rasti paieškoje). Todėl nėra jokios prasmės pašalinti visus galimus ekrane esančius valdiklius.

Nėra toks paprasta užduotis Tiesą sakant.

Pirmasis prototipas.

Iš kliento mes turime savo viziją yra kažkas panašaus:

Mes atrodėme, manėme, ir vienintelis dalykas, kuris buvo naudojamas iš jo medžiagų, yra jutiklių ir komandų specifikacija (vartotojo scenarijai)
Mes buvome varomi į rėmelį keliems punktuose:

  • Jutikliniame skydelyje nebuvo paramos daugialypei ir ji turėjo 1024 * 768 ir 1024 * 600 rezoliuciją
  • Metro sąsaja buvo nauja ir nebuvo galimybės jausti jį ant tablečių (8-oji dar nepasiekta). Nors mes turėjome telefoną ant WP7, kuris davė tam tikrą idėją.
  • Klientas kai kurios sistemos akimirkos negalėjo pakeisti (geležies apribojimai, didelių užklausų, asmeninių norų ir TP)

Apskritai, atlikite tokių ekranų dizainą kaip: pagrindinį meniu, vaizdo stebėjimą ir domofoną, oras už borto, pranešimus apie sistemą ir pan., Nebuvo surinkta problemų, ir nebuvo pasakyta apie tai, tai buvo 1-oji versija, tada būtų įdomiau.
Vienintelis pagrindinis jutiklio valdymo ekranas buvo problemiškas. Apie jį ir rašyti.

Namų planas

Čia yra tipiškas ekrano valdymo ekranas su namų planu, paimtu iš interneto:

Pasakykite man, daugelis iš jūsų supraskite, kas yra įtraukta į šį planą?
Ar šis planas supranta jūsų vaiką? Ir jūsų močiutė? Ir draugas, rodantis ant kopijuoklių?
Manau, kad problema yra suprantama.

Planas turi būti skaitomas visiems ir nedelsiant. Norėdami tai padaryti, tai turėtų būti matoma jūsų namuose, su spalvų sienomis ir pagrindiniais baldais:

Ir idealiu atveju planas vis dar turėtų būti išdėstytas palyginti su pasaulio šalimis.
Šis sprendimas yra brangesnis, o baldų pertvarkymas padarys planą nėra tiksli, bet čia bet kuriuo atveju - kompromisas. Tačiau niekas neleidžia įtraukti bet kokio projekto plano arba be jo be jo (taip pat buvo sukurtas toks sprendimas).
Beje, pirmosiose priemokos klasės versijose jie norėjo padaryti planas 3D, tačiau sprendimas yra labai brangus, ir tai yra nereikalinga, perspektyvos yra pakankamai pakankamai.

Jutikliai

Samių didelė problema - vizualinis valdymo jutiklių atstovavimas plane nusprendė greičiau nei tikėtasi. Kaip aš dabar prisimenu, mes sėdėjome ir nudažėme dizainerį ant popieriaus ateities sistemos wireframes, ir sprendimas atėjo pats:

Žemiau pridėjau vaizdo įrašą, kuriame jis mato, kaip jis veikia.

Vienas mygtukas

"Na, kur čia yra vienas mygtukas?" - Jūs klausiate.
Bet kur:
"Vienas mygtukas" yra konvencija, pagal tai suprantu, viena funkcija yra svarbiausia ir impedansas.
Rezoliucija yra maža, parodyti spalvingą planą ant jo ir sudrebino jį su jutikliais "Aš nenoriu to paties" - bloga idėja.
Verta prisiminti, kad dabar aš apibūdinu stacionarios konsolės versijos sukūrimą (i.e. Tai monitorius, sumontuotas į sieną).
Pagrindiniai tipiško šio skydelio naudojimo scenarijai yra tokie:

  • Žmogus atsidaro Įėjimo durys -\u003e Skydelis yra įjungtas ir įspėja mus, kad jums reikia išjungti žadintuvą -\u003e Įvestas slaptažodis -\u003e Įjungta scenarijai šiam namai yra aktyvuota.
  • tas pats, kai paliekate namus - įdėkite į aliarmą
  • Jei kas nors ragina duris - mes žiūrime į tai, kas per domofoną, kuris rodomas ant bet kurio ekrano, kai skambinate iš gatvės ir atidarykite duris.
  • Pasirinktinių scenarijų aktyvinimas - pavyzdžiui, "naktinis" režimas, kai durys ir langai yra užrakinti, vaizdo stebėjimas įjungtas, temperatūra yra sumažinta ir tt

Atskirų jutiklių valdymas iš šio skydelio nėra labai patogu (gerai, ar žinote, pritaikysite šviesos ryškumą miegamajame koridoriuje?)
Kontrolė yra įmanoma, jei plokštės yra pastatytos visame name.
Tačiau, pasak kliento, ši funkcija yra reikalinga ten, jums reikia padaryti.

Sprendimas Šis sprendimas

Įvedant ekraną, vartotojas mato tik namo planą. Jutikliai matomi labai mažų taškų pavidalu (norint sužinoti, kur jie yra).
Be galimybės pereiti prie grindų iki vartotojo tik 2 parinkčių:
1) Įjunkite parinkčių skydelį, kuris leis, pavyzdžiui, kad išvestumėte visus termostatai namuose ant plano ir nustatykite temperatūrą, kaip nenumatyta scenarijuose, arba, pavyzdžiui, įjunkite lizdus garaže.

2) Padidinkite planą. Didėjantis didėjantis - tuo daugiau jutikliai išsiskiria nuo mažo taško į visišką kontrolės kontrolę, jutikliai pasirodo priklausomai nuo prioriteto. Taip be netvarkingo vietos.

Tie. Vartotojas visada mato tik tai, ko jam reikia.

Integracija

Kliento sprendimas buvo WPF ir dizaino integracija Xaml, tai yra mano pagrindinė specializacija. Todėl mes ne tik "atkreipėme nuotraukas", bet taip pat įgyvendinome projektą praktikoje.
Apie tai, kaip mes atlikome kontrolę ir jų xaml, visa tai buvo animacinis ir susietas su namų planu, galite parašyti atskirą didelį straipsnį, tačiau mažiau konkurentai žino, tuo vertingesni esame kaip specialistai. Taip, ir nėra jokios prasmės apibūdinti stacionarios konsolės sprendimą, nes Tada aptarsime planšetinio kompiuterio versiją.

Kas yra įdomus ne tik jutiklio valdymo ekranas, bet visa kita gali matyti galutinį rezultatą nuotraukose
Arba vaizdo įraše:

Dizaino, projektavimo ir jo įgyvendinimo demonstracijoje demonstracijoje, paraiškoje, kuri ateityje paliko kliento programuotojus, jau tiesiogiai susieti geležies ir logiką, mes nuėjome apie 5 mėnesius.
Ir, kaip įprasta, tai atsitinka, todėl projektą - jūs visada norite jį perdaryti, nes jūs jau matote, kaip tai padaryti geriau, jo trūkumus ir trūkumus, ir silpnos vietos Buvo daug.

Nors aš darau "Xaml", "Windows Developer" peržiūra buvo išleistas, ir aš iš karto skubėjau paliesti ją darbalaukyje ir mano tabletėje (Aser Iconia W500). Oficialios gairės išėjo, o tai leido pažvelgti į "Metro Ui" nauju būdu.

2 dalis.

Viskas, ką padarėme - šiukšles

Klientas buvo labai patenkintas, ypač kai pristatėme darbo dempingą. Galima sakyti, laimingai nebuvo ribos. Aš mačiau projekto trūkumus, bet tuo pačiu metu aš žinojau, kad tai buvo įmanoma atnešti jį idealiai tik dirbti su juo daug laiko suporuotas su gerų programuotojų komanda, bet nesvarbu šiame etape produktų kūrimo.
Klientas, kaip ir aš, jau atrodė nauji langai 8, ir mes abu tikėjo, kad ji buvo labai gera. Todėl, mano pasiūlyme: "ir atliksime tabletės versiją?", Atsakė labai teigiamai. Aš pasiūliau nekeisti sistemos pastatytos į sieną, nes Ji nepalaikė Multitouch, aštuoni ten nebuvo prasmės. Jo pertvarkymas į kairę iki geriausio laiko, sutelkiant dėmesį į metro / Windows parduotuvės taikymą (tai buvo metro, nes ji leis platinti demo rinkoje pritraukti klientus).
Deja, kliento biudžetas buvo ne gumos, bet aš sutikau, iš esmės pristatėme "Windows 8" versiją. Iš dalies būtina, mes turėjome labai šaunuolis Portfelyje prieš išleidžiant aštuonis.

Antrasis prototipas.

Po kelių savaičių mano dizaineris davė man savo planšetinio kompiuterio versijos viziją:


Pilna dizaino versija gali

Buvau šiek tiek nusiminusi, dizainas buvo toli nuo to, kas buvo reikalinga, bandžiau paaiškinti klaidas, bet jūs negalite išmokti plaukti be laipiojimo į vandenį, dizaineris negalėjo duoti man tai, ko norėjau, nes jis taip pat turėjo mažai patirties su "Windows 8".

Todėl buvo nuspręsta pakartoti viską, bet dirbti su manimi kartu su manimi, viską vienu metu Xaml.
Tai išspręs problemą dėl įgūdžių trūkumo dizainerio gairėse, ir aš, kaip kūrėjas, nesunaikins nuotraukos.

Dizainas V2 ir tuo pačiu metu integracija

Sąžiningai, tai buvo sunku. Buvau pasiruošęs nužudyti mišinį 5 kūrėjus, nes, palyginti su 4-ojoje versija, tai buvo buggy, neveikianti, nuolat išvykstanti monstras. Dabar situacija yra geresnė, tačiau trūksta kai kurių akimirkų.
Aš išgelbėjau VS 2012, jis buvo iš dalies įtrauktas į mišinio funkcinį stilių.
Naujasis "Xaml" yra atskiro pokalbio, pusės senų klasių tema, nevykdykite numatytų stilių, trigeriai buvo pašalinti - paliekant ne vizualines valstybes. Mes taip pat turėjome perrašyti projektą nuo nulio, kai laimėk 8 buvo atnaujinta peržiūrėti peržiūrą, tačiau šie pakeitimai buvo geresni.

Nauja koncepcija

Naujas prietaisas yra naujas požiūris. Aš turėjau peržiūrėti pradinio ekrano idėją, dabar to nereikia, ir visa navigacija buvo paimta į viršų "Appbar".
Down su visais mygtukais iš ekrano: ZOOM - gestas, mes turime visą multitouch, visi valdymo jutikliai apatinėje appbar.
Dabar programa prasideda iš karto nuo namo plano šou (idealiu atveju, jis turėtų sekti, kuris kambarys yra vartotojas ir nedelsiant padidinti jį pagal padėtį centre).

Atidarykite programą:

Padidinti priartinimo gestą (arba pelę Ctrl + Kolivesiko):

Arba gauti "AppBar":

Kontrolė. \\ T

Jutiklio valdikliai turėjo perrašyti nuo nulio ir padaryti juos gimtojoje su įprasta parama "Windows 8 Gestai".
Buvo atsižvelgta į tai, kad dabar mes valdome 2 būdus, pirštus ir pelę.
Jis taip pat buvo nužudytas išvaizda Jutikliai, tapo stilingesni:


Ypač jis kovojo su paraiškos greičiu. "Windows8" programų atlikimas iki užsakymų virš WPF. Bijau, kad tabletė nebūtų įvaldyti sistemos, bet viskas tiesiog skrenda. "Microsoft" viršijo save, dabar nesvarbu, kaip sunku Xaml yra, viskas veiks greitai. Jei WPF turėjo padaryti savarankiškai optinius ekranus, esančius greitai animacijai, pagalvokite apie Xaml šakotuvo sudėtingumą, optimizuoti valdymo medyje esančių elementų skaičių, tada aštuoni, tai tiesiog nesvarbu, Bet koks sudėtingumas ir bet koks objektų skaičius visada yra lygus.

Pasirinkimas be plano


Čia jiems nereikėjo jutiklių su gestais, tai nebuvo būtina taupyti erdvę. Žinoma, tai nebuvo tokia įspūdinga, bet gerai.

Scenarijai

Kontroliuojantys jutikliai, tai tikrai gerai, bet, kaip jau parašiau, pagrindinės operacijos su jais geriau automatizuoti.
Norėdami tai padaryti, administracinėje sąsajoje yra pagrindiniai scenarijų nustatymai ir gebėjimas kurti savo pačių.

Ant tabletės atrodo taip:

Vienas mygtukas

Nuo šios koncepcijos mes nesiruošėme nuo pat pradžių.
Klausimas dažnai klausiama: "Ir kur yra čia darbas pusę metų?"
Ir aš suvokiu jį kaip pagirti. Tai reiškia, kad aš pasiekiau kažką, ko norėjau. Vartotojas paprasčiausiai nemato, kad paraiškos funkcionalumas yra gana didelis, nes tik tai, ko reikia Šis momentas. Duomenys ir būtini ekranai patys rodomi vartotojui, o ne jis ieško jų. Sąsaja yra aiški nuo pirmųjų minučių, kuri nesugebina mygtukų su gausa ir tuo pačiu metu bet kokio veiksmo atliekamas "kartą - du - trys".
Dėl tik "Windows 8" versijos sukūrimo praėjo 3 mėnesiai (omenyje darbo eigos pirmoje versijoje, tai būtų daugiau nuo nulio).

Beje. Jūs pastebėjote, kad visur "Windows", toks elementas, kaip iššokantis, visada yra vienas? Taigi, kad mes neatsidarome, pop-up forma visada yra vieni, jei atidarote kitą - ankstesnis uždarymas. Aš turėjau problemų mano sąsajoje: jutiklis po aktyvinimo buvo uždarytas tam tikrą laiką Pati, bet jei suaktyvinate vieną, o tada dar karto - jie buvo atviri abiem, tai atrodo ne labai estetiška ir suprantama. Dėl mano antrojo dizainerio šio phytbeck. Jis nesiėmė tiesioginio dalyvavimo projekte, tačiau kai kurie dalykai įgyvendinami dėka jo patarimų.
Aš kovojau už savaitę per šios problemos sprendimą.
Ir aš nusprendžiau ją ...
Viena eilutė.
Moralė: kartais daugiau nei labiausiai paprasti sprendimai Paslėpti daug darbo.

"Microsoft" fitbecks.

Paskutinis pavasario "Microsoft" atliko veiksmą, kuriame visi kūrėjai galėtų gauti nemokamą rekomendacijas, kaip pagerinti UI / UX savo produktus. Ir mums pavyko turėti šį platinimą.
Būti sąžiningu, bijojau, kad padalinsime viską į pūkų ir dulkių, tai buvo mano pirmoji patirtis su aštuoniais. Bet viskas vyko sklandžiai, pasak kliento, "Microsoft" buvo labai labai vertinama paraiškos kokybę. Gavome keletą mažų rekomendacijų, kaip pagerinti naudojimą (pagal žodį labai kompetentinga), tai yra:


Labai ištikima pastaba, atkreipkite dėmesį. Jei išryškinsime tam tikrą objektą ir tada veiksmai yra įmanoma su IT - "Appbar" turi atidaryti! Rodydami naudotojus šiuos galimus veiksmus.
Apskritai problema yra daug platesnė, balsas - akivaizdžiai veiksmai turėtų būti atliekami sau, nereikia laukti vartotojo.

Aš padariau visus pakeitimus mažiau nei dieną. Ir siela buvo šilta ir ramiai.

Iš viso. \\ T

Šiuo metu sistema kuriama, klientas nėra toks geras, kaip norėčiau. Todėl aš rašau įrašą po beveik vienerių metų, išleidimo data yra nežinoma ir dabar.
Paraišką galima paliesti iš "Windows" parduotuvės tiems, kurie turi "Windows 8", bet prieš tai turite įdėti Turkijos lokalę nustatymuose:
Valdymo skydas-\u003e Laikas, Kalba ir regionas -\u003e Regionas -\u003e Pakeisti vietą -\u003e Turkija (tada nepamirškite grįžti, kitaip rinka bus rodoma Turkijos)
Tačiau dabar saugoma tik apipjaustyta versija, demonstruodama pagrindines funkcijas. Kažkada sistema bus baigta, ir kadangi mes pertvarkėme senąjį - tai yra didelė tikimybė. Tikiuosi, kad kliento atveju bus į kalnai ir mes ir toliau dirbsime su projektu. Ir vis dar yra daug darbo: web versija, svetainė, formos stilius (Mes sukūrėme tik logotipą ir savo idėją, bet jums reikia kurti), versiją pagal IOS, Android, WP8. Taip, ir versija pagal "Windows 8", aš norėčiau šiek tiek pakartoti dabar, mes baigėme ją praėjusią vasarą, nes tie laikai Windows daug pasikeitė, ir mano įgūdžiai šioje srityje išaugo.

Na, pagaliau, vaizdo įrašas yra apie "Windows 8" versiją (atrodo HD)

Vis dar yra kliento vaizdo įrašai, tačiau tai yra labai prasta kokybė.

Ps. Klaida straipsnyje rašyti PM.

Mes galėjome mokyti savo protingą namų sistemą, kad atpažintume, ką pasakėme ir sintezuojame balso atsakymus naudodami "Google".
Šiandien noriu pasakyti, kaip organizuoti prieigą prie mūsų sistemos per interneto sąsają.

Technologijos

Kaip prisimenate, mes rašome "Smart Home" kalba perl.. Šiuolaikinė informacinė sistema Beveik neįsivaizduojama be duomenų bazės. Mes nesilaikysime ir mūsų duomenų saugojimui naudosime DBMS MySQL.. Norėdami įgyvendinti žiniatinklio serverį, nusprendžiau naudoti ne sudėtingą programinę įrangą ir Perl modulį - Http :: serveris :: paprasta, ypač - Http :: Server :: Simple :: CGI. Kodėl tai darau? Didelėje dalyje, palūkanų labui;) Tačiau teoriškai galite pasiekti žemo lygio HTTP užklausų / atsakymų apdorojimą be apache / mod_perl komplekso pridėjimo. Apskritai niekas neleidžia projektui su "Apache" bėgių, jei turite norą ir pakankamai laiko.

Duomenų bazė

Visų pirma, įdiekite "MySQL DBMS" ir sukurkite duomenų bazę su lentelėmis nuo DB.SQL. Čia yra įrašas:

Sukurti duomenų bazės joną; Naudokite joną; # # Struktūra lentelei "Kalendorius" # lašas lentelė Jei Egzistuoja kalendorius; Sukurti lentelė `Calendar` (id` INT (15) NOT NULL auto_increment,` diena "datetime NOT NULL,` Message` Tekstas, `nextTimeplay` datetime NOT NULL,` Expired` Datos ir laiko sekundės NOT NULL, `tipas" INT (1) Įprasta NULL, pirminis raktas ("ID")) Variklis \u003d MISISAM numatytasis charet \u003d Lotynų1; # # Lentelės struktūra lentelėje "Commandslog" # DROP stalas, jei yra CONDSLOG; CREATE TABLE `commandslog` (` id` INT (15) NOT NULL, `auto_increment diena" datetime NOT NULL, `cmd` varchar (255) NOT NULL, PRIMARY KEY (` id`)) Variklio \u003d MyISAM AUTO_INCREMENT \u003d 1 DEFAULT charset \u003d Latin1; # # Lentelės struktūra lentelėje "Prisijungti" # Nuleidimo lentelė, jei yra žurnalas; CREATE TABLE `Log` (id` Žiniasklaida (15) NOT NULL auto_increment" diena "Datos ir laiko sekundės NOT NULL,` Message` varchar (255) NOT NULL, `lygis" Žiniasklaida (1) Įprasta Null, Pirminis raktas ( "id`) ) Variklio \u003d MyISAM AUTO_INCREMENT \u003d 1 NUMATYTASIS CHARSET \u003d latin1;

Atlikti reikiamus veiksmus:

[El. Pašto saugoma]: ~ $ sudo Apt-get Install MySQL-Server
[El. Pašto saugoma]: ~ $ Mysql -uroot -ppassword< db.sql

Keisti kodą

Dabar turime sukurti aplankus lib., html. ir. \\ T konfig (šalia aplanko duomenys.). Aplanke. \\ T lib. Mes įdėti modulis atsakingas už interneto serverį ir perdirbimo mūsų HTTP užklausas.

Turime nustatyti šiek tiek scenarijų sRV.PL.. Pridėti į incidento vienetą:

Mūsų% cfg \u003d readcfg ("common.cfg"); Mūsų $ DBH \u003d dbconnect ($ CFG ( "dbname"), $ CFG ( "dbuser"), $ CFG ( "dbpass"));
Pridėkite eilutes, atsakingas už HTTP serverio paleidimą žemiau inicijavimo įrenginio:

## Nuo HTTP serveris ################################ my $ PID \u003d LIB :: http-\u003e Naujas $ CFG ( "httpport")) -\u003e fonas (); Spausdinti "http Pid: $ Pid \\ N"; LogSystem ( "http tarnyba - PID: $ pid uostas: $ CFG (" httpport "), Host: $ CFG (" httphost ")", 0); ################################
Ir dabar pridėsite trūkstamas funkcijas į failo pabaigą:

Sub ReadcFG (mano $ File \u003d Shift; Mano% cfg; atidaryta (Cfg, " ; Foreach Mano $ linija (@cfg) (šalia jei $ Linija \u003d ~ / ^ \\ # /; if ($ Linija \u003d ~ /(.*) \\ \u003d \\ "(*) \\.?" \\; /?) (Chomp $ 2; $ cfg ($ 1) \u003d $ 2;)) Uždaryti (CFG); Grįžti% CFG; ) ######################################## Sub dbconnect (Mano ($ DB $ vartotojas, $ perdavimas) \u003d \u200b\u200b@_; return $ DBH \u003d dBi-\u003e Jungti ( "GAP: MySQL: $ db", $ vartotojas, $ perdavimas) || mirti "nepavyko prisijungti prie duomenų bazės: $ GAP :: ErrStr"; ) ######################################## pietus LogSystem (Mano ($ tekstas, $ lygis) \u003d @_; Mano% CFG \u003d READCFG ( "Common.cfg"); dbconnect ($ CFG ( "dbname"), $ CFG ( "dbuser"), $ CFG ( "dbpass")); $ dbh-\u003e Daryti ("įterpti į žurnalą (data, pranešimas, lygis) vertes (dabar (dabar ()," $ tekstas ", $ lygis)"););)

Kaip galite suprasti funkcijų pavadinimus, DBConnect () - yra atsakingas už jungiantis prie mūsų DBVS, LogSystem () - už medienos ruošą, readcfg () - Dedant konfigūraciją. Leiskite mums išsamiau gyventi. Konfigūracija yra paprastas teksto failas konfigūravimo kataloge. Mūsų atveju jis vadinamas common.cfg.. Atrodo, kad tai:

## daemonmode \u003d "undef" nustatymai; Logystem \u003d "1"; Loguser \u003d "1"; dbname \u003d "Ion"; dbuser \u003d "root"; Dbpass \u003d "Slaptažodis"; Camnumber \u003d "4"; Cammotiondetect \u003d "1"; httpport \u003d "16100"; httphost \u003d "localhost"; "Telnetport" \u003d "16000"; telnethost \u003d "localhost"; Micthreads \u003d "5";

Kai kurios jų linijos bus naudojamos vėliau. Mes vis dar domina tik eilutės, pradedant nuo prefikso db.. Kaip matome, yra prisijungti prie mūsų duomenų bazės.

Dabar pasakysiu, kaip įveikti kelis komandos vykdymą. Tęsia funkciją checkcmd ():

Sub checkcmd (Mano $ tekstas \u003d "Shift"; Chomp $ tekstas; $ tekstas \u003d ~ S / $ // g; print "+" Gerai - got KOMANDA \\ "$ tekstas \\" (Ilgis: ". .Length ($ tekstas)") \\ N "; if ($ tekstas \u003d ~ / sistemos /) (################################### ############## mano $ raš \u003d $ dbh-\u003e parengti ( "SELECT cmd IŠ commandslog KUR DATE_SUB (NOW (), intervalas 4 sekundės)<= date LIMIT 0, 1"); $sth->vykdyti (); Mano $ result \u003d $ sth-\u003e fetchrow_hashref (); if ($ rezultatas -\u003e (cmd) NE ") (grįžti;) $ dbh-\u003e Do (" INSERT INTO commandslog (data, cmd) vertės (dabar (), "$ tekstas") "); ################################################# "iF" . ($ tekstas \u003d ~ / Atvykimas /) (mano $ iki \u003d "uptime`; $ iki \u003d ~ / Iki (*), /; SayText (" serverio veikimo laikas - $ 1. Pagrindinė procesas numeris - $ tėvų.?. ");) jei ($ tekstas \u003d ~ / laikas /) (mano $ iki \u003d" uptime`;? $ iki \u003d ~ /(.*) aukštyn /; Saytext ( "dabar $ 1");) jei ($ tekstas \u003d ~ / Handy / || $ tekstas \u003d ~ / komplektinė /) (SayText ( "Užbaigti darbai viso Geras.!"); sistema ( "killall Pasiūlymas"); sistema ( "Rm ./data/*.flac && rm. / duomenų / * .wav); sistema ( "killall perl"); išeiti (0);) if ($ text \u003d ~ / erozija /) (my ($ Addit, $ mod), mano% WH \u003d lib :: HTTP :: checkweather (); $ Wh ( "Būklė") \u003d koduoti :: decode_utf8 ($ Wh ( "Būklė"), $ kodavimas :: fb_default); $ Wh ( "Aha") \u003d koduoti :: decode_utf8 ($ WH ( "Aha"), $ kodavimas :: fb_default); $ Wh ( "vėjas") \u003d koduoti :: decode_utf8 ($ WH ( "Vėjas"), $ kodavimas :: fb_default); if ($ Wh ( "temp")< 0) { $mod = "ниже нуля"; } if($wh{"temp"} > 0) ($ mod \u003d "virš nulio";) $ wh ("vėjas") \u003d ~ s /: b, / rytus /; $ wh ("vėjas") \u003d ~ S /: S, / Vakarų /; $ wh ("vėjas") \u003d ~ s /: yu, / pietų /; $ wh ("vėjas") \u003d ~ S /: C, / šiaurinė /; $ wh ("vėjas") \u003d ~ s /: sv, / šiaurės rytų /; $ wh ("vėjas") \u003d ~ s /: sz, / šiaurės vakarų /; $ wh ("vėjas") \u003d ~ S /: ji, / Pietryčių /; $ wh ("vėjas") \u003d ~ s /: yuz, / pietvakarių /; "Saytext" ("Dabar $ wh (" sąlyga "), $ wh (" temp ") laipsnių $ mod. $ Wh (" hum "). $ Wh (" vėjas ")"); Jei ($ wh ("temp")<= 18) { $addit = sayText("Одевайтесь теплее, на улице холодно!"); } if ($wh{"temp"} >\u003d 28) ($ addit \u003d saytext ("Nešiojamas oro kondicionierius netrukdo!");)) #Saytext ("Jūsų komanda yra $ tekstas"); Grįžti; )
Mes pasirenkame paskutinę įvykdytą komandą keturių sekundžių intervale ir jei jis atitinka srovę - išeiti iš funkcijos. Kaip jūs galite pastebėti, pridėjau kai kurias komandas, palyginti su aprašytu funkcija paskutiniame straipsnyje. Įdomiausia yra oras. Duomenų įsigijimo už jį įgyvendinimas - tik žemiau.

Modulis. \\ T Http.pm.

Grįžkime prie įterptinio http serverio įgyvendinimo. Sukurkite failą. Http.pm. kataloguose. \\ t lib.. Parašykite šį kodą ten:

Paketas lib :: http; Naudokite http :: Server :: Simple :: CGI; Naudokite LWP :: UserAgent; Naudokite URI :: Escape; Naudokite bazę QW (http :: serveris :: Simple :: CGI); Naudokite šabloną; ############################################### ### ## ### ### ### ## ### ## #### ############################## mūsų% išsiuntimas \u003d ("/" \u003d\u003e & goindex, "/ indeksas" \u003d\u003e & goindex, "/ Fotoaparatai" \u003d\u003e & gocamers;); Mūsų $ tt \u003d šablonas-\u003e naujas (); ############################################### ### ## ### ### ### ## ### ## #### ############################## Sub rankena_request (mano $ savarankiškai \u003d pamaina; mano $ cgi \u003d pamaina; mano $ kelias \u003d $ Cgi\u003e Path_info (); Mano $ Handler \u003d $ Siuntimas ($ kelias); jei ($ kelias \u003d ~ QR (^ / (^ / (* (? (?: \\ t )) (Mano $ URL \u003d $ 1; PRINT "http / 1,0 200 ok \\ n"; Spausdinti "Turinio tipas: Tekstas / CSS \\ r \\ N" Jei $ URL \u003d ~ / css /; Spausdinti "Turinio tipas : Image / JPEG \\ n "Jei $ URL \u003d ~ / jpg /; print" Turinio tipas: Image / PNG \\ n "Jei $ URL \u003d ~ / PNG /; Spausdinti" Content- tipas : Image / Gif \\ N "Jei $ URL \u003d ~ / GIF /; Spausdinti" Turinio tipas: Tekstas / xml r \\ N "Jei $ URL \u003d ~ / xml /; Spausdinti" Turinys - Tipas: taikymas / x-shockwave-flash \\ n ", jei $ URL \u003d ~ / swf /; atvira (DTA,"<$url") || die "ERROR: $! - $url"; binmode DTA if $url =~ /jpg|gif|png|swf/; my @dtast = ; Foreach mano $ linija (@DTAST) (spausdinimo $ eilutė;) Uždaryti (DTA); Grįžti; ) Jei (teisėjas ($ prižiūrėtojas) up "KODAS") (spausdinti "HTTP / 1.0 200 OK \\ r \\ n"; $ prižiūrėtojas -\u003e ($ CGI);) kita (spausdinti "HTTP / 1.0 404 Not found \\ r \\ n "; spausdinti $ cgi-\u003e antraštė, $ cgi\u003e start_html (" nerastas "), $ cgi\u003e h1 (" nerastas "), $ cgi\u003e h2 ($ cgi\u003e path_info ()); $ cgi-\u003e END_HTML;)) ## apdorojimas prašymas / ###################################### ## SUBRANGOVAMS GOINDEX (Mano $ CGI \u003d SHIFT; # CGI.PM objektas Grįžti jei REF $ CGI; Mano% w \u003d checkweather (); my $ cmd; my $ DBH \u003d jonų :: dbconnect ($ jonų :: cfg ( "DBName"), $ jon :: CFG ("dbuser"), $ jon :: CFG ("dbpass")); mano $ sth \u003d $ dbh-\u003e Paruoškite ("pasirinkite cmd nuo komandų kortelės, kur ID\u003e 0 užsakymas pagal ID Desc riba 0, 1 "); $ sth-\u003e vykdyti (); mano $ rezultatas \u003d $ sth-\u003e fetchrow_hashref (); jei ($ rezultatas -\u003e (cmd) ne" ") ($ cmd \u003d $ rezultatas -\u003e ($ cmd \u003d $ rezultatas -\u003e ( cmd);) dar ($ cmd \u003d "Nėra komandų ...";) Spausdinti "Turinio tipas: tekstas / html; charset \u003d utf-8 \\ n"; mano $ Uptime \u003d `Uptime`; $ Uptime \u003d (.? *) ~ / Up, /; $ Uptime \u003d $ 1; mano $ videotionys \u003d "PS Aux | Grep Motion"; jei ($ videotionys \u003d ~ / Motion -C /) ($ videočiai \u003d " darbai";) Kitaip ($ vaizdo įrašai \u003d" neveikia";) Mano $ micsys \u003d" PS AUX | grep mikrocentrai "; jei ($ mics \u003d ~ / perl mikrofonas) ($ mics \u003d" darbai";) Dar ($ micsys \u003d" neveikia";) Mano $ vars \u003d (whicon \u003d\u003e $ w (" piktograma "), whcond \u003d\u003e $ w (" sąlyga "), whdemp \u003d\u003e $ w (" temp "), whum \u003d\u003e $ w (" hum " ), Whwind \u003d\u003e $ w ("vėjas"), cmd \u003d\u003e $ cmd, uptime \u003d\u003e $ Uptime, video \u003d\u003e $ videotyS, mic \u003d\u003e $ Micsys, siūlai \u003d\u003e $ jonų :: cfg ("Micthreads") ,); mano $ produkcija; $ tt-\u003e procesas ("html / index", $ vars, $ produkcija) || Spausdinti $ tt-\u003e klaida (), "n";) ## užklausos apdorojimas / fotoaparatai ## ############################################## Sub gecamers (mano $ CGI \u003d pamaina; # CGI. PM Objektas Return Jei! Ref $ CGI; Mano% W \u003d Checkweather (); Mano $ cmd; Mano $ dbh \u003d Iona :: DBConnect ($ Ion :: CFG ("DBName"), $ Ion :: Cfg (" dbuser "), $ jon :: cfg (" dbpass ")); mano $ sth \u003d $ dbh-\u003e pasiruošti (" pasirinkite cmd nuo komandų kortelės, kur ID\u003e 0 užsakymas pagal ID desc ribą 0, 1 "); $ sth-\u003e Vykdyti (); mano $ rezultatas \u003d $ sth-\u003e fetchrow_hashref (); jei (rezultatas -\u003e (cmd) ne "") ($ cmd \u003d $ rezultatas -\u003e (cmd);) kitaip ($ cmd \u003d "Nėra komandos ... ";) jei ($ cgi\u003e param (" tekstas ") ne" ") (mano $ txt \u003d $ cgi-\u003e param (" tekstas "); reikalauti koduoti; $ txt \u003d koduoti :: decode_utf8 ($ TXT, $ koduoti :: fb_default); Ion :: Saytext ( $ Txt); ) Spausdinti "Turinio tipas: tekstas / html; charset \u003d utf-8 n"; Mano $ vars \u003d (fotoaparatas1 \u003d\u003e "video-0 / camera.jpg", kamera2 \u003d\u003e "video-1 / camera.jpg", fotoaparatas3 \u003d\u003e "video-2 / camera.jpg", fotoaparatas4 \u003d\u003e "video- 3 / camera.jpg ", whicon \u003d\u003e $ w (" icon "), whcond \u003d\u003e $ w (" sąlyga "), whdemp \u003d\u003e $ w (" temp "), whum \u003d\u003e $ w (" hum ") , whwind \u003d\u003e $ w ("vėjas"), cmd \u003d\u003e $ cmd,); Mano $ produkcija; $ Tt-\u003e Procesas ("html / fotoaparatai", $ vars, $ produkcija) || Spausdinti $ tt-\u003e Klaida (), "n"; ) ## Oras #################################################################### Mano $ ua \u003d LWP :: UserAgent-\u003e Nauja (agentas \u003d\u003e Mozilla / 5.0 (Windows NT 5.1; RU-RU) Applewebkiit / 535.2 (khtml, kaip Gecko) Chrome / 15.0.872.0 Safari / 535.2 "); Mano $ Turinys \u003d $ ua-\u003e gauti (http://www.google.com/ig/api?hl\u003dru&weather\u003d ".uri_escape (" Sankt Peterburg ")); $ Content-\u003e Content \u003d ~ / (.*?)<\/current_conditions>/ g; Mano $ CAND \u003d $ 1; $ COND \u003d ~ /

Mes išsamiau analizuosime turinį. Hash. % Išsiuntimo Apibrėžiame URL atitikimą ir vadinamą funkciją. Visi kiti URL nėra aprašyti šiame maišelyje, išduos puslapį 404 .
Mes atliksime galingą ir lanksti biblioteką su šlankikliu. Šablono įrankių rinkinys.. Mes jį inicijuojame su eilute:

Mūsų $ tt \u003d šablonas-\u003e naujas ();
Perkrovos funkcija rankena_request () Tėvų klasė, mes gauname valdymo apdorojimą į HTTP serverį. Norėdami grąžinti statinį turinio naršyklę (PNG, GIF, JPG, CSS, XML, SWF), naudojamas blokas:

Jei ($ kelias \u003d ~ ~ QR (^ / (^ / ((?: Png | gif | jpg | css | xml | swf)))) (mano $ URL \u003d $ 1; spausdinti "http / 1,0 200 ok "; Spausdinti" Turinio tipas: Tekstas / CSS \\ n "Jei $ URL \u003d ~ / css /; Spausdinti" Turinio tipas: Image / JPEG \\ n "IF $ URL \u003d ~ / jpg /; Spausdinti "Turinio tipas: Image / PNG \\ N" Jei $ URL \u003d ~ / PNG /; Spausdinti "Turinio tipas: IF $ / GIF \\ r" IF $ URL \u003d ~ / GIF /; Spausdinti "Turinio tipas: Tekstas / xml \\ n" Jei $ URL \u003d ~ / xml /; Spausdinti "Turinio tipas: taikymas / x-shopwave-flash \\ n \u003d ~ / Swf /; atvira (DTA, "<$url") || die "ERROR: $! - $url"; binmode DTA if $url =~ /jpg|gif|png|swf/; my @dtast = ; Foreach mano $ linija (@DTAST) (spausdinimo $ eilutė;) Uždaryti (DTA); Grįžti; )
Nuo MIME tipo aš šiek tiek užrašiau juos šiek tiek į Hydundą;)
Kitos funkcijos, kurios yra atsakingos už konkretaus URL turinio generavimą. Nors yra tik du iš jų - indeksas ir puslapis su kameromis.
Rodyklėje galėsime pamatyti, ar tokie posistemiai veikia kaip vaizdo ir garso surinkimas. Atskira eilutė eina:

Mano% w \u003d checkweather ();
Ši funkcija grąžina maišą su dabartiniais oro duomenimis mieste, bus rodomi mūsų puslapyje. Toks mažas malonus bandiklis;)
Toje pačioje vietoje mes panaikinsime naujausią gautą ir pripažintą komandą dėl protingo namo.

Kita funkcija gecamers () Atlieka tas pačias funkcijas kaip indeksą, tik užuot atsiėmus informaciją apie posistemius, rodo vaizdą iš mūsų fotoaparatų ir yra įmanoma parašyti bet kokį tekstą, kuris bus sintetinamas ir išreikštas mūsų protingu namu.

Visi puslapiai yra pastatyti ant šablonų, esančių aplanke. html.. Sąrašo įtraukimas čia nebus patogus, todėl aš duosiu nuorodą į archyvą -

"Smart Home" sistemų, daugiafunkcinių ir namų kino įrengimas Kymera Magic Wand.

2011 m. Mūsų ekspertai buvo baigti dirbti su jutimo plokščių valdymo sąsaja ir AMX valdymo pulto, kuris yra pagrindiniai "protingų namų" sistemos elementai.

Šiame pavyzdyje kontrolės sąsaja įgyvendinama dviejų tipų įrenginiams:

  1. AMX MVP-5200i jutiklio skydelis su 800 per 480 pikselių rezoliucija.
  2. "AMX Mio-R4" nuotolinio valdymo pultas su ekrano rezoliucija 240-320 pikselių.

Šiuo atveju abu sąsajų diegimas turi absoliučiai identišką funkcionalumą.

Jutimo valdymo pultas AMX MVP-5200I ir AMX Mio-R4 konsolės turi skirtingą rezoliuciją, išlaikant tą pačią funkcionalumą.

Vartotojo valdymo sąsaja buvo sukurta 4-osios kartos AMX Touch plokščių ir AMX valdymo skydelyje, atsižvelgiant į visus grafinius ir funkcionalumą šių įrenginių.

1 dalis. Konkretus požiūris

1 nuotraukoje matome pagrindinį meniu, kuriame vartotojui suteikiama galimybė pasirinkti inžinerinę sistemą, kurią ji gali valdyti.

1 nuotrauka.




Ir ši sąsaja atrodo kaip AMX Mio-R4 konsolėje, kurioje yra 240x320 pikselių rezoliucija

Patalpos viršuje yra, kurio kontrolė atliekama. Vartotojas gali kontroliuoti bet kokią inžinerinę sistemą spustelėję piktogramą su šios sistemos vaizdu. Šiuo metu aktyvios sistemos yra paryškintos žalios rėmu. Didelis raudonas mygtukas "Išjunkite" leidžia išjungti visas sistemas vienu metu pasirinktoje patalpoje. Puslapio apačioje visada yra pagalbinės informacijos, kurioje rodomi laikas ir data, laukas. "Išvesties" mygtukas nuves mus į bendrojo plano namo namus (žr. 2 nuotrauką).

2 nuotrauka.


Bendrojo plano puslapyje mes jau turime sandorį ne su vienu kambariu, bet su visu namu. Iš čia mes galime eiti į bet kokį kambarį arba nedelsiant valdyti visą namus ("Pasaulinis valdymas", kaip tai vadiname). Kairėje yra inžinerinės sistemos pasirinkimo žymos, kurios valstybė atsispindės bendrame plane.

Jei pasirinkta sistema yra aktyvi patalpoje - kambario mygtukas yra oranžinė, jei ne - mėlyna.

Šioje byloje mygtukas "Išjunkite" jau išjungs sistemą ne atskirame kambaryje, bet visame name nedelsiant. Paspaudus kambario mygtuką, mes nuves mus į pagrindinį šio kambario puslapį ir "Išeiti" mygtuką kambario puslapyje (žr. 1 nuotrauką).

Pasukkime į konkrečių inžinerinių sistemų valdymo sąsają.

3 nuotraukoje pateikiama šviesos valdymo sąsaja kambaryje.

3 nuotrauka.



Lemputės piktograma rodo faktinį būseną šviesos zonoje. Paspaudus šviesos lemputę sukelia arba išjungia šviesos šaltinį. Rodyklių mygtukai leidžia valdyti šviesos ryškumą (ši funkcija yra prieinama tik tada, kai yra reguliatorius). Galima įsiminti dabartinę šviesos zonų (šviesos scenų) būseną, naudojant sceną, pasirinkite mygtukus, esančius puslapio apačioje. Vėliau saugoma scena gali būti greitai įjungta vienu mygtuko paspaudimu. Šioje byloje esantys mygtukas valdo visus šviesos šaltinius šiame kambaryje.

4 nuotraukoje valdome klimatą kambaryje.

4 nuotrauka.




Klimato kontrolės sąsaja taip pat yra prieinama iš AMX konsolės.

Šiuo atveju pavara yra klimato sistema Daikin. Klimato kontrolės sąsaja yra labiausiai ir matoma kaip įmanoma. Paspaudus atitinkamą mygtuką, "aušinimo šildymo ventiliacijos" režimas keičiasi, nustatomas ventiliatoriaus veikimo greitis ir norima temperatūra.

5 nuotraukoje pateikiama žiniasklaidos valdymo įtaiso sąsaja.

5 nuotrauka.




Šioje sąsajos puslapyje galite pasirinkti garso ar vaizdo šaltinį. Aktyvusis šaltinis yra paryškintas žaliame rėme. Renkantis šaltinį įvesime šio šaltinio valdymo puslapį (šiame straipsnyje šie puslapiai nepateikiami). "Nustatymai" mygtukas veda prie televizoriaus sąrankos meniu.

Čia taip pat galite valdyti garso ar vaizdo šaltinio garsumo lygį ir atidarykite ekvalaizerio langą (žr. 6 nuotrauką).

Nuotrauka 6.




2 dalis. Pagrindinis metodas

Čia mes žymi pagrindinius principus, kurie buvo naudojami atsižvelgiant į aukščiau pateiktas sąsajas.

1) Vizutumas - Grafinių vaizdų naudojimas objektų, atspindinčių jų funkcionalumą. Šis principas supaprastina darbo su sąsaja, todėl intuityviai suprantama (žr. 1 nuotrauką). Šiame pavyzdyje kiekviena sistema turi savo piktogramą, o sistemos aktyvumą atsispindi generuojant žalios rėmo.

2) struktūra - Aiškiai laikytis struktūros, kai pastato kompleksas daug lygių sąsajos. Šiame pavyzdyje yra 4 valdymo lygiai: visas namas, kambarys, sistema, posistemis (žr. 2 nuotrauką). Namas turi 11 kambarių ir 3 sistemų, skirtų kontroliuoti (šviesos, klimato žiniasklaida).

Sukurta sąsaja leidžia valdyti sistemas visais lygiais, taip pat greitai ir lengvai pakeisti sistemą ir kambarį kaip kontrolės objektą. Tinkamai pastatyta konstrukcija labai supaprastina navigaciją per sąsajos puslapius.

3) multimsalizmas - derinant vienoje sąsajoje vietinių ir pasaulinių kontrolės funkcijų. Tai yra, su vienos grupės pagalba, vartotojas gali valdyti kaip atskira sistema atskirame kambaryje ir visose sistemose visame name nedelsiant. Taigi, 3 nuotraukoje pateikiama kontrolės šviesos sąsaja viename kambaryje ir 2 nuotraukoje jau valdome šviesą visame name.

4) Polemija - kelių kontrolės galimybių buvimas tame pačiame objekte. Pavyzdžiui, šioje sąsajoje, tūrio kontrolė kambaryje (žr. 4 nuotrauką) yra įmanoma tiek iš jutiklinio ekrano ir išorinio valdymo pulto (sukasi ratukas MVP-5200I skydelyje arba išorinį "Vol" mygtuką Mio- R4 REMOTOS).

5) Universality - gebėjimas įgyvendinti kontrolės sąsają įvairiose plokštėse su skirtinga ekrano rezoliucija.

Taigi, šiame pavyzdyje kontrolės sąsaja yra įgyvendinama dviejų tipų įrenginiams: AMX MVP-5200I jutiklinis skydas (skiriamoji geba 800x480) ir AMX Mio-R4 nuotolinio (skiriamoji geba 240x320). Šiuo atveju abu sąsajos diegimas turi absoliučiai identišką funkcionalumą (žr. Pirmąją nuotrauką).

Apie estetiką

Kuriant sąsają, mes taip pat taikėme įvairius grafinius metodus, kurie pagerins jo suvokimą ir išvaizdą. Dėl to, permatomo laukai ir antraštės, stilingi foniniai brėžiniai, keičiant spalvą gama, priklausomai nuo pasirinktos sistemos, iššokančių langų, erdvinių piktogramų su šešėliais, tūriniais mygtukais su spalvų nuoroda į valstybės, veiklos ir kt.

Trumpai tariant, bandėme kontroliuoti sąsają naudoti AMX valdymo įrenginių techninius pajėgumus, atitinkančius jų stilių ir dizainą, kuriam jis buvo suprojektuotas, ir taip pat buvo patogu vartotojui.