Բովանդակություն:

Տնային ահազանգ. Arduino + ամպային հաղորդագրություններ մեծ էկրանին. 14 քայլ (նկարներով)
Տնային ահազանգ. Arduino + ամպային հաղորդագրություններ մեծ էկրանին. 14 քայլ (նկարներով)

Video: Տնային ահազանգ. Arduino + ամպային հաղորդագրություններ մեծ էկրանին. 14 քայլ (նկարներով)

Video: Տնային ահազանգ. Arduino + ամպային հաղորդագրություններ մեծ էկրանին. 14 քայլ (նկարներով)
Video: «Բիլյաշը կծում է». շունը անծանոթների «լավագույն բարեկամը» չէ 2024, Նոյեմբեր
Anonim
Տնային ահազանգ. Arduino + ամպային հաղորդագրություններ մեծ էկրանին
Տնային ահազանգ. Arduino + ամպային հաղորդագրություններ մեծ էկրանին
Տնային ահազանգ. Arduino + ամպային հաղորդագրություններ մեծ էկրանին
Տնային ահազանգ. Arduino + ամպային հաղորդագրություններ մեծ էկրանին
Տնային ահազանգ. Arduino + ամպային հաղորդագրություններ մեծ էկրանին
Տնային ահազանգ. Arduino + ամպային հաղորդագրություններ մեծ էկրանին

Բջջային հեռախոսների դարաշրջանում դուք կսպասեիք, որ մարդիկ 24/7 պատասխան կտան ձեր զանգերին:

Կամ ոչ. Երբ կինս տուն է վերադառնում, հեռախոսը մնում է ձեռքի պայուսակում, կամ մարտկոցը լիցքավորված է: Մենք չունենք ցամաքային գիծ: Անձրևոտ գիշեր երկաթուղային կայարանից տուն վերելակ խնդրելու կամ SMS ուղարկելու համար զանգահարելը կամ զանգահարելը `հարցնելու, թե արդյոք բանալիներս դեռ գրասեղանի վրա են, բառացիորեն ցանկալի մտածողություն է:

Ես այս խնդիրն ունեմ բավական հաճախ լուծում երաշխավորելու համար: Arduino- ի և Freetronics Dot Matrix Display- ի (DMD) հետ մի փոքր շաղ տալը հանգեցրեց շատ տհաճ (կնոջս) գործիքի, բայց ինձ համար զարմանալի հաղորդակցման սարք և տեղեկատվական կենտրոն: Ես սիրում եմ այն, և դա միայն 1 -ին տարբերակն է:

Home Alert- ը կազմված է հետևյալ մասերից.

  • Freetronics Dot Matrix էկրան, որը 16x32 LED- ների զանգված է: Նրանք գալիս են տարբեր գույների, բայց ես օգտագործում եմ կարմիրը ՝ ընդգծելու համար, որ այս գործիքը «կրիտիկական» ծանուցումների համար է:
  • Arduino Uno ՝ Ethernet Shield- ով:
  • Իրական ժամանակի ժամացույցի բեկում, այս կամ այնպիսին:
  • Պիեզո բզզոց
  • A DHT22 ջերմաստիճանի և խոնավության տվիչ:

Տնային ահազանգը վերահսկվում է վեբ էջի միջոցով, որը տեղակայված է Heroku- ում ՝ ամպերի վրա հիմնված ծրագրերի հաղորդավար: Վեբ էջը կոդավորված է Ruby- ում ՝ օգտագործելով Sinatra վեբ հավելվածի շրջանակը և Redis բանալիների արժեք ունեցող խանութը:

Նայեք հիմնական էջին (ցույց տվեք այս քայլում առաջին կցված պատկերը), որտեղ ձևը սպասում է օգտագործողի նոր հաղորդագրությանը:

Առաջին դաշտը ընդունում է թվային ապարատային ծածկագիր: Դա ծածկագիր է, որը թույլ է տալիս թիրախավորել Home Alert- ի որոշակի համակարգ, քանի որ յուրաքանչյուրին կարող է տրվել յուրահատուկ կոդ: Կամ, դուք կարող եք ունենալ մի քանի տնային ահազանգեր, որոնք կիսում են նույն ծածկագիրը, որպեսզի նույն հաղորդագրությունը ցուցադրվի բազմաթիվ վայրերում:

Հաղորդագրությունը, որը ցանկանում եք ցուցադրել, անցնում է երկրորդ դաշտ: Այնտեղ մուտքագրված ցանկացած տեքստ կցուցադրվի DMD- ում:

Եթե ցանկանում եք ինչ -որ աղմուկ բարձրացնել, ստուգեք Yes! նշման տուփ, և ահազանգը անշուշտ կգրավի մոտակա բոլորի ուշադրությունը:

Այս հոդվածում ես ձեզ ցույց կտամ, թե ինչպես կառուցել ձեր սեփական Home Alert համակարգը ՝ ինչպես Arduino ապարատային, այնպես էլ ծրագրային ապահովումը, ինչպես նաև Sinatra մինի վեբ ծրագիրը:

Եկեք սկսենք!

Քայլ 1: Սարքավորումը

Սարքավորումը
Սարքավորումը
Սարքավորումը
Սարքավորումը
Սարքավորումը
Սարքավորումը

DMD- ը գործիքի առանցքային կետն է: Ես կարող էի գնալ մի փոքր LCD էկրանով, բայց այս նախագծի հիմնական գաղափարն այն էր, որ արտադրեի այն, ինչը տեսանելի և լսելի էր հեռվից: Տեսողական մասի համար ինձ պետք էր մի մեծ ու պայծառ բան, և այս Freetronics- ի ցուցադրումը հենց այն է, ինչ ինձ պետք էր: Յուրաքանչյուր վահանակ պարունակում է 16x32 լուսադիոդային զանգված, և դրանցից մի քանիսը կարող եք իրար միացնել ՝ ավելի մեծ ցուցադրումներ ստեղծելու համար: Սա այն է, ինչ ես կցանկանայի անել մոտ ապագայում:

DMD- ն ունի հեշտ օգտագործման Arduino գրադարան: այն Arduino- ի հետ շփվում է գերարագ SPI- ի միջոցով: Ես կարողացա գրադարանը ստանալ Freetronics Github էջից, այնուհետև կրակեցի ցուցադրական էսքիզը և այն աշխատեց արկղը բացելուց րոպեների ընթացքում: Ես զարմացա, երբ տեսա նման պայծառ էկրան, որն օգտագործում էր միայն Arduino- ի էներգիան: Եթե ցանկանում եք ժամանակավորապես կուրացնել ձեր դիտողներին, կարող եք կցել հատուկ հոսանքի աղբյուր այս DMD- ին: Եթե սա նրանց ուշադրությունը չգրավի, ոչինչ չի ստանա:

Ֆիզիկապես, այս ցուցադրման չափերը կազմում են 320 մմ (Վտ), 160 մմ (H) և 14 մմ (D):

Հետևի վահանակը պարունակում է արտաքին հոսանքի միակցիչներ, 5 Վ, առնվազն 4 Ամպ հզորությամբ, Arduino միակցիչով, որը նշվում է HUB1, և միակցիչ ՝ երեսպատման համար լրացուցիչ էկրանների հակառակ կողմում: Փաստաթղթերի համաձայն, դուք կարող եք շղթայել մինչև չորս DMD:

DMD- ն վերահսկվում է Arduino Uno- ի կողմից: Freetronics- ն ապահովում է շատ հարմար «DMDCON» միակցիչ, որը ուղղակիորեն ուղղակիորեն կպչում է ճիշտ SPI- ի և տվյալների կապերի վրա:

DMD- ից բացի, ես օգտագործեցի Arduino Uno, Ethernet Shield, իրական ժամանակի ժամացույցի անջատում, ազդանշան և DHT22: Այս բոլոր բաղադրիչների համար ես ստեղծել եմ դասախոսություններ, որոնք նկարագրում են նրանց գործունեությունը իմ Ուդեմի դասընթացում: (Ամոթալի ինքնագովազդ. Գրանցվեք arduinosbs.com կայքում իմ էլ. Փոստի ցուցակում և ստացեք կտրոն, որը ձեզ հնարավորություն կտա զեղչված մուտք ունենալ բոլոր 55 դասախոսություններին):

Իրական ժամանակի ժամացույցը, որը հիմնված է DS18072 ժամացույցի IC- ի վրա, I2C սարք է, ուստի այն միացված է Uno- ի անալոգային 1 և 2 կապերին, որոնք իրականացնում են I2C ավտոբուսը:

Buանգիչը միացված է թվային 3 -րդ կապին, որտեղից ես այն վերահսկում եմ ՝ օգտագործելով տոն () գործառույթը:

DHT22 սենսորը միացված է թվային կապին 2. carefulգույշ եղեք, որ 10KΩ ձգվող դիմադրությունը միացնեք 5V գծի և տվյալների գծի միջև:

Քայլ 2. Arduino ուրվագիծը

Էսքիզը տողերի քանակով մեծ չէ, բայց գրեթե սպառում է Uno- ի հասանելի ֆլեշ հիշողությունը `ներառված բոլոր գրադարանների շնորհիվ: Հիշողության օպտիմալացման համար շատ տեղ կա, բայց քանի որ նախատիպավորման փուլում եմ, դա մեկ այլ օրվա նախագիծ է: Այս կոդը հասանելի է Github- ում:

Ահա էսքիզը ՝ ներառված մեկնաբանություններով (տես PDF հավելվածը):

Այս ուրվագծի հիմնական պարտականությունն է Arduino- ն դարձնել վեբ ծառայության սպառող: Վեբ ծառայությունը պարզ վեբ կայք է `երկու վերջնական կետով, մեկը` վեբ դիտարկիչի միջոցով մուտք գործելու և օգտագործողի համար տեքստային տող ներկայացնելու համար, և մեկ այլ `Arduino- ի հասանելիության համար: առբերել տեքստի տողը:

Ներբեռնեք և կարդացեք կցված PDF ֆայլը, այն պարունակում է ներդրված մեկնաբանություններ, որոնք նկարագրում են դրա աշխատանքը:

Քայլ 3. Սինատրան բեմ է դուրս գալիս:

Սինատրան բեմ է բարձրանում
Սինատրան բեմ է բարձրանում

Վեբ կայքեր և վեբ ծառայություններ ստեղծելու բազմաթիվ եղանակներ կան: Համացանցին աջակցող գրադարաններով ծրագրավորման լեզուներից մինչև լիարժեք շրջանակներ, այս աշխատանքի համար մեկը կարող է շփոթեցնող և դժվար լինել:

Ես օգտագործել և խաղացել եմ վեբ հավելվածների բավականին մեծ թվով տեխնոլոգիաներով և գտնում եմ, որ Sinatra- ն իդեալական է վեբ ծառայություններ և փոքր վեբ կայքեր կառուցելու համար: Մասնավորապես, երբ ես կառուցում եմ վեբ ծառայություն ՝ աջակցելու Arduino գաջեթին, Sinatra- ն իսկապես լավ ընտրություն է:

Ի՞նչ է Սինատրան, և ինչու՞ է այդքան լավ ընտրություն: Ուրախ եմ, որ հարցրեցիր!

Սինատրան վեբ ծրագրերի արագ զարգացման լեզու է: Այն կառուցված է Ruby- ի վրա, որը շատ տարածված և արտահայտիչ ընդհանուր նշանակության սցենարական լեզու է: Դուք կարող եք լսել, որ Սինատրան կոչվում է «DSL» ՝ տիրույթի հատուկ լեզու: Այստեղ տիրույթը համացանցն է: Սինատրայի համար ստեղծված հիմնաբառերը (բառերը) և շարահյուսությունն այնպիսին են, որ մարդկանց համար հեշտ և արագ է դարձնում վեբ ծրագրերի ստեղծումը:

Այն ժամանակ, երբ այսպես կոչված «կարծիքի» շրջանակները վեբ հավելվածների մշակման համար, ինչպիսիք են Ruby on Rails- ը և Django- ն, շատ տարածված են, Սինատրան գրավում է սպեկտրի հակառակ ծայրը: Մինչ Ruby on Rails- ը և Django- ն ծրագրավորողից պահանջում են հետևել որոշակի պայմանականությանը և գործելակերպին (ինչը, իր հերթին, ենթադրում է կտրուկ և երկար ուսուցման կոր), Սինատրան նման պահանջներ չի դնում:

Սինատրան հայեցակարգային առումով շատ ավելի պարզ է, քան աշխարհի երկաթուղիներն ու ջանգոսները: Դուք կարող եք գործարկել վեբ ծրագրով, որը կարող է մի քանի րոպեում փոխազդել ձեր Arduino- ի հետ:

Ես ցույց կտամ օրինակով: Ահա, թե ինչ տեսք ունի Sinatra նվազագույն վեբ ծրագիրը (պարզապես կարդացեք հետևյալը առայժմ, իրականում դա մի արեք ձեր համակարգչում, քանի որ հավանաբար դեռ չունեք դրա նախադրյալների կարգավորումը).

Մեկ ֆայլում եկեք այն անվանենք my_app.rb, ավելացրեք այս տեքստը.

պահանջել «sinatra'get»/'անել «Բարև, աշխարհ» վերջը

Հրամանի տողում գործարկեք ծրագիրը հետևյալ կերպ.

ruby my_app.rb

Ձեր ծրագիրը կսկսվի, և վահանակում կտեսնեք այս տեքստը.

peter@ubuntu-dev:/arduino/sinatra_demo $ ruby my_app.rbPuma 2.8.1 սկսած…* Առնվազն թեմաներ ՝ 0, առավելագույն թեմաներ ՝ 16* Շրջակա միջավայր ՝ զարգացում* Լսում tcp: // localhost: 4567 == Sinatra/1.4.4 -ը բեմ է բարձրացել 4567 -ին ՝ Puma- ի կրկնօրինակի մշակման համար

Հավելվածն այժմ պատրաստ է հաճախորդի հարցումները ստանալու համար: Բացեք դիտարկիչը, նշեք այն https:// localhost: 4567, և սա այն է, ինչ կտեսնեք (տես կցված սքրինշոթը):

Դա չորս պարզ տող կոդ է մեկ ֆայլում: Ի հակադրություն, Rails- ը կպահանջեր ավելի քան հարյուր ֆայլ, որոնք ստեղծվել են պարզապես շրջանակի պահանջները բավարարելու համար: Ինձ սխալ մի հասկացեք, ես սիրում եմ Rails- ը, բայց իրո՞ք…

Այսպիսով, Սինատրան պարզ է և արագ վազում: Ենթադրեմ, որ դուք ոչինչ չգիտեք Ruby- ի, Sinatra- ի և Cloud- ում ծրագրերի տեղակայման մասին, այնպես որ հաջորդ բաժնում ես ձեզ քայլ առ քայլ կտանեմ զրոյից մինչև ձեր Arduino վեբ ծառայության Cloud- ին տեղակայումը:

Քայլ 4: Կարգավորեք ձեր զարգացման մեքենան

Sinatra- ն հիմնված է Ruby ծրագրավորման լեզվի վրա: Այսպիսով, նախքան Sinatra- ն տեղադրելը, դուք պետք է տեղադրեք Ruby- ն:

Դուք նաև պետք է տեղադրեք հիմնական արժեք ունեցող խանութի սերվեր, որը կոչվում է Redis: Մտածեք Redis- ի մասին որպես տվյալների բազա, որը պահում է տվյալները բանալին հակառակ: Դուք օգտագործում եք բանալին տվյալները առբերելու համար, և այն օպտիմիզացված է տվյալների կառուցվածքների արագության և ոչ թե ճկունության համար, որի համար նախատեսված է ավանդական հարաբերական տվյալների բազան: Home Alert- ը իր հաղորդագրությունները պահում է Redis- ում:

Քայլ 5: Ruby Mac- ի կամ Linux- ի վրա

Եթե օգտագործում եք Mac կամ Linux համակարգիչ, խորհուրդ եմ տալիս օգտագործել RVM ՝ ձեր Ruby տեղադրումը տեղադրելու և կառավարելու համար (RVM: Ruby Version Manager): Ruby- ը RVM- ով տեղադրելու հրահանգներն այս էջում են, կամ պարզապես պատճենեք և տեղադրեք այս հրամանը ձեր պատյանում.

curl -sSL https://get.rvm.io | bash -s կայուն --ruby

Նստեք, վերադառնաք, հանգստացեք և սպասեք RVM- ի և Ruby- ի ներլցման, կազմման և տեղադրման ավարտին:

Քայլ 6: Ruby Windows- ում

Եթե Windows- ում եք, խորհուրդ եմ տալիս հետևել այս ուղեցույցին Ruby Installer for Windows կայքում և օգտագործել տեղադրման ծրագիրը:

Քայլ 7: Ստուգեք և տեղադրեք ձեր Ruby- ը

Գրելու պահին Ruby- ի վերջին կայուն թողարկումը 2.1.1.p76 է: Դուք կարող եք ստուգել RVM- ով տեղադրված տարբերակը `մուտքագրելով սա.

rvm տեղեկատվություն

RVM- ի և Ruby- ի մասին շատ տեղեկություններ կհայտնվեն: Իմ դեպքում, սա Ruby բաժինն է.

ruby: interpreter: "ruby" version: "2.1.1p76" date: "2014-02-24" platform: "x86_64-linux" patchlevel: "2014-02-24 revision 45161" full_version: "ruby 2.1.1p76 (2014 -02-24 վերանայում 45161) [x86_64-linux]"

Ես խորհուրդ եմ տալիս օգտագործել նաև Ruby 2.1.1 -ը, այնպես որ, եթե դրանից հին բան տեսնեք, արդիականացրեք այսպես.

rvm տեղադրել 2.1.1

Սա կտեղադրի Ruby 2.1.1: RVM նախագծի կայքը պարունակում է շատ տեղեկություններ RVM- ի և ինչպես է ձեր Ruby- ի տեղադրումը կառավարելու մասին:

Քայլ 8: Տեղադրեք Sinatra (բոլոր հարթակները)

Ruby- ում ծածկագիրը կիսվում է որպես «գոհարներ» կոչվող փաթեթներ: Sinatra- ի ծածկագիրը կարող է տեղադրվել ձեր համակարգչում ՝ որպես այսպիսի գոհար.

gem տեղադրել sinatra

Այս տողը կբերի ամբողջ կոդը և փաստաթղթերը և կտեղադրի ձեր համակարգչում:

Քայլ 9. Կրկնեք Mac- ում կամ Linux- ում

Redis- ի տեղադրումը Mac- ում կամ Linux- ում հեշտ է: Գործընթացը բացատրվում է Redis կայքում: Բացեք shell տերմինալը և մուտքագրեք հետևյալ հրամանները.

$ wget https://download.redis.io/releases/redis-2.8.7.tar… $ tar xzf redis-2.8.7.tar.gz $ cd redis-2.8.7 $ կատարել

Գործարկեք Redis- ը ՝ մուտքագրելով.

$ src/redis-server

… Եվ դու ավարտեցիր!

Քայլ 10: Կրկնեք Windows- ում

Windows- ում Redis- ը խորհուրդ է տրվում միայն զարգացման համար, և ձեզ հարկավոր կլինի այն կազմել ՝ օգտագործելով Visual Studio Express անվճար զարգացման միջավայրը: Այն աշխատեցնելու համար մի քիչ ժամանակ է պահանջվում, բայց այն լավ է աշխատում և արժե ջանքեր գործադրել: Հետևեք ծրագրի Github էջի հրահանգներին: Այնտեղ կարող եք գտնել նաև Visual Studio Express էջի հղումը:

Քայլ 11: Ստեղծեք վեբ ծառայության ծրագիր

Ստեղծեք վեբ ծառայության ծրագիր
Ստեղծեք վեբ ծառայության ծրագիր

Եկեք կառուցենք ծրագիրը և գործարկենք այն ձեր զարգացման մեքենայի վրա: Մենք կկարգավորենք Arduino- ի էսքիզը `դիմումի այս օրինակին միանալու համար, մինչ այն փորձարկում ենք: Երբ համոզվենք, որ ամեն ինչ լավ է աշխատում, մենք կտեղակայվենք ամպի վրա և կթարմացնենք ուրվագիծը ՝ ամպի օրինակն օգտագործելու համար:

Ահա Ruby- ի կոդը ՝ բոլորը «web.rb» անունով մեկ ֆայլում (այս կոդը հասանելի է Github- ում):

Կարևոր. Ներբեռնեք և կարդացեք կցված PDF ֆայլը, այն պարունակում է մանրամասն ներդրված մեկնաբանություններ (խնդրում ենք դա անել, նախքան շարունակելը):

Այժմ կարող եք փորձել ձեր Home Alert համակարգը: Ձեր ուրվագծում փոխեք WEBSITE և WEBPAGE հաստատունները ՝ մատնանշելով ձեր զարգացման մեքենայի և ձեր Sinatra սերվերի զարգացման պորտի համարը: Իմ դեպքում, ես ունեմ զարգացման մեքենա IP 172.16.115.136 -ով, և զարգացման Sinatra սերվերը լսում է 5000 նավահանգիստը, ուստի իմ ուրվագծման կարգավորումները հետևյալն են.

#define HW_ID "123" #define WEBSITE "172.16.115.136:5000"#սահմանել WEBPAGE "/get_message/"

Այս IP հասցեն հասանելի է միայն իմ տնային ցանցի սարքերի համար:

HW_ID կարգավորումը ներկայացնում է «ապարատային ID», այսինքն ՝ այն ID- ն, որին DMD- ն վերահսկող Arduino- ն իրեն նույնականացնելու է Sinatra հավելվածում: Դա նույնականացման շատ հիմնական տեսակ է: Վեբ հավելվածը հաղորդագրություն կհանձնի Arduino- ին ՝ խնդրելով դա ՝ տրամադրված տրամադրված HW_ID- ի հիման վրա: Դուք կարող եք ունենալ մի քանի սարք նույն HW_ID- ով, որի դեպքում բոլոր սարքերը կցուցադրեն նույն հաղորդագրությունը: Եթե ցանկանում եք «գաղտնիություն», ընտրեք նույնականացման փաստաթուղթ ՝ բազմաթիվ պատահական նիշերով, որոնք այլ մարդիկ չեն կարողանա կռահել: Նաև զգուշացեք, որևէ հաղորդակցություն կոդավորված չէ:

Այժմ շարունակեք և գործարկեք ձեր Sinatra ծրագիրը, մուտքագրեք սա (ենթադրելով, որ գտնվում եք Sinatra ծրագրի թղթապանակում).

ruby web.rb

… Եվ դուք կտեսնեք այսպիսի մի բան (որոշ մանրամասներ կարող են տարբեր լինել, քանի դեռ դա չի խափանվել, լավ եք):

10:42:18 վեբ.1 | սկսվել է պիդ 4911910: 42: 18 վեբ.1 | Puma 2.8.1 սկսած… 10: 42: 18 վեբ.1 | * Նվազագույն թելեր ՝ 0, առավելագույնը ՝ 1610: 42: 18 վեբ.1 | * Միջավայր. Զարգացում 10: 42: 18 վեբ.1 | * Լսելը tcp- ով ՝ //0.0.0.0: 5000

Ձեր վեբ դիտարկիչին մատնանշեք այն վայրը, որին լսում է սերվերը, և դա կտեսնեք (տես երկրորդ հավելվածը):

Վերբեռնեք ձեր ուրվագիծը Arduino- ում, համոզվեք, որ այն միացված է ձեր տեղական ցանցին: Եթե ամեն ինչ լավ ընթանա, Arduino- ն ամեն րոպե մեկ անգամ հարցումներ կանի ձեր վեբ ծառայությունից: Տվեք նրան հաղորդագրություն ՝ ցույց տալու համար. HW կոդի դաշտում ուրվագծում մուտքագրեք նույն ID- ն, որը սահմանել եք HW_ID հաստատունի համար: Մուտքագրեք որևէ բան «Ձեր հաղորդագրությունը» դաշտում և նշեք «Buzz»: վանդակը:

Ներկայացրեք, սպասեք մի րոպե և տեսեք, որ ձեր հաղորդագրությունը հայտնվում է DMD- ում:

Քայլ 12: Տեղադրեք ամպ ՝ օգտագործելով Heroku- ն

Այժմ, երբ Home Alert- ն աշխատում է զարգացման վրա, եկեք այն աշխատենք Cloud- ի վրա: Վեբ ծրագրերի տեղադրման համար առկա են անհամար տարբերակներ: Ելնելով Home Alert- ի շրջանակից և բարդությունից ՝ ես որոշեցի, որ իմ սեփական վիրտուալ մասնավոր սերվերի ստեղծումը ջանք չարժե: Փոխարենը, ավելի լավ է գնալ այնպիսի ծառայության, ինչպիսին է Հերոկուն ՝ հավելվածի հաղորդավարը: Իմ մասշտաբի համար Հերոկուի անվճար մակարդակը ավելի քան բավարար է: Նույնիսկ Redis բաղադրիչի համար ես կարողացա անվճար ծրագիր ընտրել Redis- ի բազմաթիվ մատակարարներից, որոնք աշխատում են Heroku- ի հետ:

Այնուամենայնիվ, կա մի փոքր ջանք, որը կապված է իմ դիմումը թեթևակի փոփոխելու հետ, որպեսզի այն համապատասխանի Հերոկուի բնութագրերին: Մանրամասներն այստեղ են, բայց, ըստ էության, ձեզ հարկավոր կլինի ավելացնել այս ֆայլերը ձեր Sinatra նախագծին (դրան հաջորդող բոլոր ֆայլերը կարելի է ներբեռնել իմ Github հաշվից):

* config.ru: Այն պատմում է Heroku- ին, թե որ ֆայլն է պարունակում ծրագիրը: Ահա բովանդակությունը.

պահանջում './web'run Sinatra:: Դիմում

Առաջին տողը մատնանշում է web.rb- ը, իսկ երկրորդ տողը իրականում գործարկում է ձեր դիմումը:

* Gemfile. Այն պարունակում է Gems (ruby կոդի փաթեթներ), որոնք պահանջվում են հավելվածի կողմից: Heroku- ն կանդրադառնա այս ֆայլի ներսում `պարզելու համար, թե ինչ այլ ծածկագիր պետք է տեղադրվի, որպեսզի ձեր ծրագիրը գործի: Gemfile- ին նայելու մեկ այլ տարբերակ այն է, որ պարունակում է ձեր նախագծից կախվածությունների ցանկ: Եթե այս կախվածություններից որևէ մեկը հասանելի չէ, ձեր դիմումը չի աշխատի: Ահա, թե ինչ կա Gemfile- ի ներսում այս հավելվածի համար.

աղբյուր "https://rubygems.org" ruby "2.1.1" gem 'sinatra'gem' puma'gem 'redis'

Նախ, այն սահմանում է բոլոր Gem կոդի սկզբնական պահոցը `rubygems.org: Հաջորդը, այն պահանջում է Ruby 2.1.1 տարբերակը, որն օգտագործվում է ծրագիրը գործարկելու համար: Այնուհետև այն թվարկում է պահանջվող ադամանդները ՝ Sinatra, Puma (հիանալի Ruby վեբ ծրագրերի սերվեր) և Redis:

* Cրագրավորում. Այն պատմում է Հերոկուին, թե ինչպես սկսել ձեր սերվերը: Այստեղ կա միայն մեկ տող.

վեբ: rackup -s puma -p $ PORT

Այս տողում ասվում է, որ «վեբ» -ը պահանջվող ծառայության միակ տեսակն է (կարող եք ունենալ մյուսները, օրինակ ՝ «աշխատողը», ֆոնային մշակման համար), և որ ծառայությունը սկսելու համար Հերոկուն պետք է օգտագործի «:» - ից հետո եկող հրամանը:

Դուք կարող եք մոդելավորել, թե ինչ է պատրաստվում անել Հերոկուն ՝ հետևելով ձեր զարգացման մեքենայի այս հաջորդականությանը (մուտքագրեք թեստը միայն սլաքից առաջ. Այն, ինչ հետևում է սլաքին, դա միայն հրամանի նկարագրությունն է):

$> gem install bundler -> տեղադրում է Bundler- ը, որը գիտի, թե ինչպես վարվել Gemfile- ի հետ: $> փաթեթների տեղադրում -> Bundler- ը մշակում է Gemfile- ը և տեղադրում կախվածություններ: $> rackup config.ru -> Rackup- ը գործիք է, որը կարող է մշակել config.ru ֆայլը: Սովորաբար այն գալիս է Ruby- ի վերջին տարբերակով, եթե այն չի տեղադրում այսպես. Gem install rack.

Վերջին քայլը հանգեցնում է իրականում գործարկելու ձեր ծրագիրը: Դուք պետք է տեսնեք ճիշտ նույն ելքը, ինչ ավելի վաղ ruby web.rb- ով սկսելու դեպքում: Դա նույն ծրագիրն է, այն տարբերությամբ, որ երկրորդ մեթոդը այն է, թե ինչպես է այն սկսում Հերոկուն:

Մենք գրեթե պատրաստ ենք այս ծրագիրը տեղակայել ձեր Heroku հաշվին: Եթե դեռ չունեք մեկը, շարունակեք և ստեղծեք հիմա: Հետո, հետևեք արագ մեկնարկի ուղեցույցին `ձեր հաշիվը և ձեր տեղական զարգացման մեքենան և հատկապես Heroku Toolbelt- ը կարգավորելու համար:

Heroku Toolbelt- ը տեղադրում է Heroku հրամանի տողի հաճախորդ ՝ Git (բաց կոդով կառավարման կոդերի կառավարման համակարգ) և Foreman (Ruby գործիք, որն օգնում է կառավարել Procfile- ի վրա հիմնված ծրագրերը):

Երբ ավարտեք Heroku Toolbelt- ի տեղադրումը ՝ հետևելով Heroku վեբ կայքի հրահանգներին, հետևեք այս քայլերին ՝ ձեր ծրագիրը տեղակայելու համար (ամեն ինչ մուտքագրվում է հրամանի տողում ՝ ծրագրի գրացուցակում):

$> heroku մուտք -> Մուտք գործեք Heroku $> git init -> Initialise a Git պահեստ ձեր դիմումի համար $> git add. -> (նկատի՛ր կետը): Ներկայիս գրացուցակի բոլոր ֆայլերը ավելացրեք Git պահոցում $> git commit -m “init” -> Այս ֆայլերը հանձնեք պահեստին ՝ նոր հաղորդագրությամբ $> heroku create -> Ստեղծեք նոր հավելված Heroku- ում: Heroku- ն ձեր ծրագրին կտա պատահական անուն ՝ «բոցավառ-գալակտիկա -997» նման մի բան: Նշեք անունը և URL- ը, որպեսզի հետագայում կարողանաք մուտք գործել ձեր վեբ դիտարկիչի միջոցով:Այս URL- ն այսպիսի տեսք կունենա ՝ «https://blazing-galaxy-997.herokuapp.com/»: Դուք նաև պետք է պատճենեք ձեր նոր հավելվածի հյուրընկալողի անունը («blazing-galaxy-997.herokuapp.com» մասը) ձեր Arduino էսքիզի ԷՅՍԲԱՅԹԻ հաստատունի մեջ: Դա արեք հիմա, որպեսզի հետագայում չմոռանաք: $> heroku հավելումներ. ավելացնել rediscloud -> Ձեր դիմումին ավելացնում է Rediscloud Redis ծառայության անվճար շերտը: Կազմաձևման կարգավորումները ինքնաբերաբար ստեղծվում և հասանելի են դառնում ձեր ծրագրին: $> git push heroku master -> Տեղադրեք ձեր կոդը Heroku- ում: Սա ինքնաբերաբար կփոխանցի ծածկագիրը, կկարգավորի Heroku- ից կախվածությունը և կսկսի ծրագիրը: Գործընթացի ավարտին դուք կտեսնեք այսպիսի մի բան. Շնորհավորում եմ:

Շարունակիր, պտտվիր:

Քայլ 13: Ամեն ինչ միասին դնելը

Տեղադրված ձեր վեբ հավելվածի միջոցով վերբեռնեք թարմացված էսքիզը Arduino- ում (հիշեք, որ դուք թարմացրել եք ԿԱՅՔԻ հաստատուն ՝ վեբ հավելվածի ձեր արտադրության օրինակին մատնանշելու համար):

Օգտագործեք ձեր դիտարկիչը ՝ Heroku- ի ձեր ծրագրին մուտք գործելու համար: Theիշտ ինչպես ներածության մեջ, առաջին տեքստային դաշտում մուտքագրեք ձեր ապարատային ID- ն, երկրորդում `ձեր հաղորդագրությունը և նշեք վանդակը` ազդանշանը ակտիվացնելու համար:

Եթե ամեն ինչ լավ լինի, ձեր հաղորդագրությունը կհայտնվի DMD- ում մոտ մեկ րոպե անց:

Քայլ 14: Պոտենցիալ

Շատ ավելին կարող եք անել ձեր Home Alert համակարգի հետ…

Heroku- ի հետնամաս ունենալը նշանակում է, որ կարող եք ավելացնել շատ տրամաբանություն, որը կարող է ավելացնել զարմանալի ֆունկցիոնալություն: Օրինակ, կարող եք հավելվածին հնարավորություն տալ կառավարել կրկնվող ծանուցումներ, շնորհակալագրեր կամ վերահսկել ծանուցման լրացուցիչ սարքավորումները, ինչպիսիք են strobe լույսերը և այլն: Դուք կարող եք այն տարածել տան ավտոմատացման տարածքում և վերահսկել լույսերն ու դռները: Դուք կարող եք ավելացնել բազմաթիվ DMD ՝ յուրաքանչյուրում տարբեր հաղորդագրություններ կամ մեկ հաղորդագրություն համակցված ավելի մեծ էկրանին ցուցադրելու համար: Ես ուղղակի քորում եմ այն, ինչ այստեղ հնարավոր է:

Վայելեք:

Խորհուրդ ենք տալիս: