Բովանդակություն:
- Քայլ 1. Բաղադրիչներ, պարագաներ, անհրաժեշտ գործիքներ, ծրագրեր և առցանց ծառայություն
- Քայլ 2: Սարքավորումներ
- Քայլ 3. Լուծման ճարտարապետություն
- Քայլ 4: Softwareրագրակազմ
- Քայլ 5: Եզրակացություն
Video: CLOUD MONITOR With AWS & ARDUINO - Electric Boy: 6 Steps
2024 Հեղինակ: John Day | [email protected]. Վերջին փոփոխված: 2024-01-30 09:49
Դա պարզ նախագիծ է. Լույս վառեք, երբ ինչ -որ բան սխալ է ընթանում… Այս օրերին մեր համակարգիչներում այդքան շատ ցուցատախտակներով ծանուցումների գնալով անզգայանում ենք, ինչպե՞ս կարող ենք համոզվել, որ չենք կարոտում իսկապես կարևորները: Պատասխանը ֆիզիկական վիճակի ցուցանիշ է: Կամ ավելի կոնկրետ առաջադրանքի համար ՝ Cloud Monitor, որը կարող է նստել ձեր գրասեղանին ՝ միշտ տեսադաշտում: Ինչպես անունն է հուշում, մոնիտորը կօգնի հետևել ձեր ամպային ծառայությունների առողջությանը (… Նույնիսկ դու, ինձ պես, կարիք ունե՞ս պատրաստելու մեկը: Նույնիսկ եթե ոչ, դուք կարող եք գաղափար ունենալ ձեր ապագա IoT ծրագրի համար:
Դե, եթե պատրաստ եք, եկեք սկսենք:
Քայլ 1. Բաղադրիչներ, պարագաներ, անհրաժեշտ գործիքներ, ծրագրեր և առցանց ծառայություն
ՄԱՍՆԱԿՈԹՅՈՆՆԵՐ ԵՎ ՄԱՐPLԵՐ
_ Arduino Micro e Genuino Micro (1 միավոր)… կամ ցանկացած փոքրիկ Arduino համատեղելի ՝ իմ դեպքում freetronics LeoStick (https://www.freetronics.com.au/collections/arduino/products/leostick)
_ ThingM BlinkM - I2C վերահսկվող RGB LED (1 միավոր)
_ Մինի ամպի լույս (1 միավոր)… կամ ձեր ընտրած ցանկացած այլ կիսաթափանցիկ անոթ
_ USB-A- ից B մալուխ (1 միավոր)… կամ որևէ հին USB մալուխ ՝ A- տիպի խրոցակով
ԿԱՐOOLԻՔՆԵՐ ՊԱՐՏԱԴԻՐ
Sոդման երկաթ (ընդհանուր)
APPS & ONLINE SERVICE
_ Amazon Web Services AWS Lambda (https://aws.amazon.com/it/lambda/)
_ Amazon Web Services AWS IoT (https://aws.amazon.com/it/iot/)
Քայլ 2: Սարքավորումներ
Գիշերային լույսն արդեն գալիս է ներկառուցված լուսադիոդով `իմ դեպքում սառը սպիտակ: Ես մտածեցի, որ լավ կլիներ տարբեր գույներով տարբեր կարգավիճակ նշել: Այսպիսով, ես միայն ամպի տեսքով պատյան պահեցի: Գործողության ուղեղների համար ես ընտրեցի իմ ձեռքի տակ եղած ամենափոքր Arduino- ն: Freetronics LeoStick- ը տարիներ շարունակ իմ նախընտրած նախատիպերի հարթակն է եղել, և ես շատ պահեստամասեր ունեմ: Այն բեռնված է լավ իրերով. Պիեզո բարձրախոս, երկու RGB LED (մեկը կապված է իշխանության հետ, չնայած RX և TX) և ամենից լավը, պարզապես կարող եք այն միացնել USB պորտին - արտաքին FTDI կամ մալուխ անհրաժեշտ չէ: Այն նաև փոքր, բայց հացահատիկի հետ համատեղելի է:
Ինչու՞ ես չընտրեցի ESP8266- ը: Իսկապես անլար լինելու համար կարող եք նաև կտրել հոսանքի լարը, ինչը մի փոքր ավելի է բարդացնում մարտկոցը ավելացնելու և լիցքավորման անհարմարությունը: Քանի որ ամպային մոնիտորը նստելու է իմ համակարգչի կողքին, շատ ավելի հեշտ է օգտագործել USB էներգիան: Նաև Wi-Fi կապի կարգավորումը միշտ չէ, որ ուղիղ է: ATmega32u4- ի հիման վրա Arduino Micro- ն և LeoStick- ը կիսում են D2- ի և D3- ի ժամացույցի I2C տվյալները ունենալու տարօրինակությունը: Սա արդիական է դառնում BlinkM RGB LED- ն միացնելիս: Ի տարբերություն սովորական Atmega328 տախտակների, որտեղ դուք կարող եք պարզապես միացնել BlinkM վահանը A2.. A5 վերնագրերի մեջ, սա այստեղ չի աշխատի (ես չեմ անհանգստացել փափուկ I2C գրադարանով):
Desոդելով տղամարդկանց վերնագրերը ՝ VCC և GND BlinkM- ում, ես այնուհետև կարող եմ դրանք երկարացնել մետաղալարով և պահել ամեն ինչ մի փոքրիկ փաթեթում: BlinkM- ն ունի իր սեփական միկրո վերահսկիչը և թույլ է տալիս կատարելագործել ծրագրեր. Օրինակ. նվագարկեք գրված գունային նախշերը ՝ առանց միացված Arduino- ի: Ես գրեթե զգում եմ, որ WS2812- ը (Adafruits NeoPixels- ը հիանալի են) ինձ ավելի լավ կսպասարկեր, ավաղ, որ ես չունեի: Ապարատային բիթը ավարտելու համար ես կտրեցի արական տիպի A- USB խրոցակի հակառակ ծայրը, այն անցա նախնական փորված անցքով ամպի լույսի հիմքի մոտ և լարերը կպցրեցի LeoStick- ին (կարմիր ՝ 5 Վ, սպիտակ. Տվյալներ-, կանաչ ՝ Տվյալներ+, սև ՝ Գրունտ):
Քայլ 3. Լուծման ճարտարապետություն
Միակ ուժեղ պահանջը, որ ես ինքս ինձ պարտադրեցի, այն էր, որ մոնիտորը գործարկվեր firewall- ի հետևում: Թեև դա վճռորոշ հատկություն էր, սակայն իրադարձությունների փոփոխությունների համար վեբ -կեռիկներն անիրագործելի դարձան: Քվեարկության մեխանիզմը ծախսատար է TCP երթևեկության առումով և կարող է հետաձգել իրադարձությունները `կախված քվեարկության հաճախականությունից:
Լուծումը գտնվում է WebSockets- ում, որոնք ապահովում են ամբողջական երկկողմանի հաղորդակցություն: Amazons IoT ծառայությունը տրամադրում է հաղորդագրությունների բրոքեր, որն աջակցում է MQTT- ին WebSockets- ի միջոցով: Ինչպես պարզվում է, ծառայությունը կարող է կանչվել ՝ առանց բաներ, ստվերներ, կանոններ կամ կանոններ կազմաձևելու:
Arduino Yún- ի համար կա սարքի SDK, և որոշ ջանքեր են գործադրվում SDK- ն ESP8266- ի նման այլ հարթակներ տեղափոխելու ուղղությամբ: Բայց քանի որ մոնիտորը միշտ միացված կլինի սերիական ինտերֆեյսի միջոցով, ես վաղ որոշեցի ունենալ NodeJS ծրագիր (աշխատասեղանի համակարգչի վրա) `հաճախորդի API- ի իրականացման համար և օգտագործել Arduino- ն միայն գունային կոդեր ստանալու և ցուցադրելու համար: Այդ կերպ փոփոխությունները հեշտությամբ կարող են կատարվել JavaScript- ում ՝ առանց անհանգստանալու որոնվածը բեռնելիս: Փորձարկման համար անհրաժեշտ է ենթակառուցվածքների մի փոքր օրինակ: Ենթադրենք, մենք ունենք հասանելիության գոտիներում միացված բեռի հավասարակշռիչ, որը ստուգում է վեբ սերվերի օրինակն ու ավտոմատ մասշտաբավորման քաղաքականությունը ՝ հիմնված պրոցեսորի բեռի վրա: Համապատասխան CloudFormation ձևանմուշը կարող է ▶ ️ դիտվել Դիզայների մեջ կամ ▶ ️ անմիջապես վահանակից ստեղծված: Նշում. Այս հավաքածուի որոշ ծառայություններ կարող են գանձել վճարներ:
Ես ընդլայնեցի ձևանմուշը ՝ Lambda գործառույթի հատկություններով և անհրաժեշտ թույլտվություններով: Հետագայում պահանջվում է, որ որպես պարամետր տեղադրվի IoT REST API վերջնակետը: Սա ավտոմատացնելու համար ես գրեցի մի փոքր պատյան սցենար, որը CLI- ի միջոցով պահանջում է ARN (> aws iot նկարագրել-վերջնակետը), այնուհետև կանչում create-stack ՝ պարամետրով: Կամ դեռ կարող եք դա անել ձեռքով.
// RETRIVE IoT REST API ENDPOINT
aws iot նկարագրել-վերջնակետը
// CREATE STACK> aws cloudformation create-stack --stack-name MiniCloudMonitor --template-body file: //cfn-template.json --parameters ParameterKey = IotRestApiEndpoint, ParameterValue = {IoT_REST_API_ENDPOINAB}
// LEՆTEԵԼ STACK> aws ամպամածության ջնջում-բուրգ --stack-name MiniCloudMonitor
Իդեալում, ես պետք է օգտագործեմ ահազանգի նույն շեմերը, որոնք առաջացնում են ավտոմատ մասշտաբավորումը, նաև Lambda գործառույթը կանչելու և այդ կերպ թարմացնելու մոնիտորի կարգավիճակը: Ներկայումս դա հնարավոր է միայն SNS- ը որպես միջանկյալ օգտագործելիս: Այն ժամանակ այս լրացուցիչ շերտը ավելորդ զգաց, և ես որոշեցի օգտագործել CloudWatch EC2 կյանքի ցիկլի կանոնները ՝ անմիջապես Լամբդային զանգահարելու համար: Այնուամենայնիվ, ես ուզում եմ ապագայում ուսումնասիրել SNS -Lambda- ի տարբերակը:
Քայլ 4: Softwareրագրակազմ
Ես սկսեցի գրել Arduino Sketch- ը: Հիմնական հանգույցը () սերիական կապից Chars կարդալն է և String- ի կառուցումը, մինչև նոր գծի բնույթ ստանալը: Այնուհետև ենթադրվում է, որ ուղարկվել է վեցանկյուն գույնի ծածկագիր, և համապատասխան I2C հրամանը գրված է BlinkM LED- ի վրա: Սա ոչ այնքան արդյունավետության, որքան հարմարության մասին է: Այս էսքիզների և այլ ֆայլերի ամբողջական աղբյուրները կարելի է ձեռք բերել GitHub- ում: Ստորև բերված են համապատասխան կոդի որոշ հատվածներ.
դատարկ շրջան () {
իսկ (Serial.available ()) {
char inChar = (char) Serial.read ();
եթե (inChar == '\ n') {
երկար համար = strtol (inputString.c_str (), NULL, 16);
բայթ r = թիվ >> 16;
բայթ g = թիվ >> 8 & 0xFF;
բայթ b = թիվ & 0xFF;
BlinkM_fadeToRGB (blinkm_addr, r, g, b);
inputString = "";
} ուրիշ {
inputString += inChar;
}
}
}
NodeJS հավելվածը պետք է ինտերֆեյսեր ներդնի AWS- ի և Arduino- ի համար: Հետագայում կարող է կատարվել ընդամենը մի քանի տող ծածկագրում `գերազանց սերիալապարկը օգտագործելիս.
var serialport = պահանջում ('serialport'); port = new serialport (PORT_COM_NAME, {
baudRate: SERIAL_BAUD_RATE
});
port.on ('բաց', գործառույթ () {
});
port.on ('սխալ', գործառույթ (սխալ) {
});
AWS IoT- ին միանալը նույնպես քիչ ջանքեր է պահանջում: Միակ թերությունն այն է, որ իմանաք, որ MQTT+WebSockets 443 նավահանգստից օգտվելը պահանջում է նույնականացում մուտքի բանալիների միջոցով: SDK- ն դրանք կկարդա շրջակա միջավայրի փոփոխականներից: Հնարավոր է, որ անհրաժեշտ լինի ուղղակիորեն արտահանել AWS_ACCESS_KEY_ID և AWS_SECRET_ACCESS_KEY:
var awsiot = պահանջում ('aws-iot-device-sdk'); var սարք = awsiot.device ({
clientId: 'MiniCloudMonitor-' + (Math.floor ((Math.random () * 100000) + 1)), մարզ ՝ AWS_REGION, արձանագրություն ՝ «wss», նավահանգիստ: 443, վրիպազերծում. ճշմարիտ
});
device.on ('Connect', function () {
device.subscribe (MQTT_TOPIC);
});
device.on ('հաղորդագրություն', գործառույթ (թեմա, բեռնվածություն) {
եթե (նավահանգիստ && բեռնվածություն && թեմա == MQTT_TOPIC) {
var հաղորդագրություն = JSON.parse (բեռնվածություն);
եթե (message.hasOwnProperty (MQTT_JSON_KEY))
{վերադարձ;
}
}
});
Lambda ֆունկցիան ընդունում է գունային ծածկագիրը որպես մուտքային պարամետր `ոչ գեղեցիկ, բայց շատ ճկուն այս փուլում: MQTT թեմայում հրապարակելու հնարավորություն ունենալու համար այն ստեղծում է IotData օբյեկտ, որը պահանջում է IoT REST API վերջնակետ: CloudFormation ձևանմուշը դրա մասին հոգացել է բուրգի ստեղծման ժամանակ:
var AWS = պահանջում ('aws-sdk'); var mqtt = նոր AWS. IotData ({
վերջնակետ ՝ process.env. MQTT_ENDPOINT});
export.handler = գործառույթ (իրադարձություն, համատեքստ, հետադարձ) {
var params = {
թեմա ՝ process.env. MQTT_TOPIC, բեռնվածություն ՝ '{ "գույն \": / "' + event.colour + '\"}', qos: 0
};
mqtt.publish (պարամետրեր, գործառույթ (սխալ, տվյալներ) {
հետադարձ կապ (սխալ);
});
};
Քայլ 5: Եզրակացություն
Ես իսկապես վայելեցի ամպի մեջ «ծնված» վիրտուալ իրադարձություն ֆիզիկական աշխարհ բերելը: Եվ որպես իմ փոքրիկ կենդանու նախագիծ, այն շատ զվարճալի էր: Սա հաջորդ մակարդակի հասցնելու համար ես կքննարկեի…
- ամրության և բացառությունների մշակման բարելավում
- ուսումնասիրեք AWS ամպային չափանիշների ինտեգրման ավելի լավ եղանակներ
- փորձեք ավելի ֆիզիկական ցուցանիշների հետ, ինչպիսիք են չափիչները, գծապատկերները,…
- հնարավորություն ունեք տեղափոխվել այլ հարթակներ, ինչպիսիք են Azure, Google, Heroku,…
- վերահսկել Jenkins, GitHub,…
Հուսով եմ, որ ձեզ դուր եկավ այս ուղեցույցը կարդալը և գուցե նույնիսկ ինչ -որ նոր բան ընտրեցիք ճանապարհին: Եթե դուք կարող եք ինչ -որ այլ բան անել/ավելի լավ միջոց մտածել, կիսվեք ստորև բերված մեկնաբանություններում: Եվ, իհարկե, եթե դուք նկատում եք սխալներ, ձեր գլուխները բարձր կգնահատվեն: Շնորհակալություն ձեր ժամանակի համար:
Խորհուրդ ենք տալիս:
DIY AC/ DC Hack "Mod" RD6006 Power Supply & S06A Case W/ S-400-60 PSU Build & Upgraded DC Input: 9 Steps
DIY AC/ DC Hack "Mod" RD6006 Power Supply & S06A Case W/ S-400-60 PSU Build & Upgrade . Բայց ես իսկապես ուզում եմ մարտկոցը դյուրատարության կամ հոսանքի անջատման միացման ընտրություն ունենալ: Այսպիսով, ես նաև կոտրեցի կամ ձևափոխեցի գործը ՝ DC կամ մարտկոց ընդունելու համար
ESP-01 & DHT- ի և AskSensors Cloud- ի միջոցով ջերմաստիճանի և խոնավության մոնիտորինգ. 8 քայլ
ESP-01 & DHT- ի և AskSensors Cloud- ի միջոցով ջերմաստիճանի և խոնավության մոնիտորինգ. Այս ուսանելի ծրագրում մենք սովորելու ենք, թե ինչպես վերահսկել ջերմաստիճանը և խոնավության չափումները `օգտագործելով IOT-MCU/ESP-01-DHT11 տախտակը և AskSensors IoT պլատֆորմը: .Ես ընտրում եմ IOT-MCU ESP-01-DHT11 մոդուլը այս հավելվածի համար, քանի որ այն
Monitoring-Temp-and-Humidity-using-AWS-ESP32: 8 Steps
Monitoring-Temp-and-Humidity-using-AWS-ESP32. Այս ձեռնարկում մենք ջերմաստիճանի և խոնավության տարբեր տվյալներ ենք չափելու ՝ օգտագործելով Temp և խոնավության տվիչ: Դուք նաև կսովորեք, թե ինչպես ուղարկել այս տվյալները AWS- ին
Քամու կայան վինդսերֆինգի համար MQTT & AWS- ի հիման վրա. 3 քայլ (նկարներով)
Քամու կայան վինդսերֆինգի համար MQTT & AWS- ի հիման վրա. Շենժենում շատ գեղեցիկ լողափ կա: Ամռան օրերին ես ամենասիրված սպորտաձևն եմ նավարկում: Առագաստանավային սպորտի համար ես դեռ սկսնակ եմ, ինձ դուր է գալիս, որ ծովի ջրի զգացումը դիպչում է իմ դեմքին, և ավելին, ես շատ նոր ընկերներ ունեմ այս սպորտաձևի հետ: Բայց
Հիանալի IPod Touch (1 -ին սերունդ) Game Boy Color Case: 5 Steps
Հիանալի IPod Touch (1 -ին սերունդ) Game Boy Color Case. Սա iPod պատյան է ՝ պատրաստված հին GB գույնից: Ինչպես տեսնում եք, այն դեռևս առջևի խաղային տղայի տեսք ունի, իսկ հետևի մասում ՝ ipod: լավ է, եթե չես ուզում, որ քո iPod- ը գողանան, որովհետև այն կարծես հին, ցնցող գեյմբոյ լինի