AWS এবং ARDUINO- এর সাথে ক্লাউড মনিটর - বৈদ্যুতিক ছেলে: 6 টি ধাপ
AWS এবং ARDUINO- এর সাথে ক্লাউড মনিটর - বৈদ্যুতিক ছেলে: 6 টি ধাপ
Anonim
AWS এবং ARDUINO- এর সাথে ক্লাউড মনিটর - ইলেকট্রিক বয়
AWS এবং ARDUINO- এর সাথে ক্লাউড মনিটর - ইলেকট্রিক বয়

এটি একটি সহজ প্রকল্প - যখন কিছু ভুল হয়ে যায় তখন একটি আলো জ্বালান … আমাদের কম্পিউটারে এতগুলি ড্যাশবোর্ডের সাথে বিজ্ঞপ্তির দিকে ক্রমবর্ধমানভাবে অস্পষ্ট হয়ে উঠছে, আমরা কীভাবে নিশ্চিত করতে পারি যে আমরা সত্যিই গুরুত্বপূর্ণগুলি মিস করছি না? উত্তর হল একটি শারীরিক অবস্থা নির্দেশক। অথবা কাজের জন্য আরো নির্দিষ্ট, একটি ক্লাউড মনিটর, যা আপনার ডেস্কে বসতে পারে - সর্বদা দৃশ্যমান। নাম অনুসারে, মনিটর আপনার ক্লাউড পরিষেবাদির স্বাস্থ্যের উপর নজর রাখতে সাহায্য করবে (… অথবা সত্যিই অন্য কিছু, আকাশ সীমা এমনকি আপনি, আমার মত, একটি তৈরি করতে হবে? এমনকি যদি না হয়, আপনার ভবিষ্যতের আইওটি প্রকল্পের জন্য আপনার একটি ধারণা থাকতে পারে।

আচ্ছা, যদি আপনি প্রস্তুত থাকেন, তাহলে শুরু করা যাক!

ধাপ 1: উপাদান, সরবরাহ, সরঞ্জাম প্রয়োজন, অ্যাপ্লিকেশন এবং অনলাইন পরিষেবা

উপাদান এবং সরবরাহ

_ আরডুইনো মাইক্রো ই জেনুইনো মাইক্রো (1 ইউনিট)…

_ ThingM BlinkM - I2C নিয়ন্ত্রিত RGB LED (1 ইউনিট)

_ মিনি ক্লাউড লাইট (1 ইউনিট)… অথবা আপনার পছন্দের অন্য কোন স্বচ্ছ পাত্র

_ ইউএসবি-এ থেকে বি কেবল (1 ইউনিট)… অথবা টাইপ-এ প্লাগ সহ যেকোন পুরানো ইউএসবি কেবল

সরঞ্জাম প্রয়োজন

_ সোল্ডারিং লোহা (জেনেরিক)

অ্যাপস এবং অনলাইন পরিষেবা

_ অ্যামাজন ওয়েব সার্ভিসেস AWS ল্যাম্বদা (https://aws.amazon.com/it/lambda/)

_ আমাজন ওয়েব সার্ভিস AWS IoT (https://aws.amazon.com/it/iot/)

ধাপ 2: হার্ডওয়্যার

হার্ডওয়্যার
হার্ডওয়্যার
হার্ডওয়্যার
হার্ডওয়্যার

রাতের আলো ইতিমধ্যেই এলইডি -র সঙ্গে আসে - আমার ক্ষেত্রে ঠান্ডা সাদা। আমি ভেবেছিলাম বিভিন্ন রঙের দ্বারা বিভিন্ন অবস্থা নির্দেশ করা ভাল হবে। তাই আমি কেবল মেঘের আকৃতির আবরণ রেখেছি। অপারেশনের মস্তিষ্কের জন্য আমি আমার কাছে পাওয়া সবচেয়ে ছোট Arduino সামঞ্জস্যপূর্ণ বাছাই করেছি: ফ্রিট্রনিক্স লিওস্টিক বছরের পর বছর ধরে আমার পছন্দের প্রোটোটাইপিং প্ল্যাটফর্ম ছিল এবং আমার কাছে প্রচুর স্পেয়ার রয়েছে। এটি ভাল জিনিস দিয়ে লোড হয়ে আসে: একটি পাইজো স্পিকার, দুটি RGB LEDs (একটি পাওয়ারের সাথে সংযুক্ত, RX এবং TX যদিও) এবং সবচেয়ে ভাল, আপনি কেবল এটি একটি USB পোর্টে প্লাগ করতে পারেন - কোন বাহ্যিক FTDI বা তারের প্রয়োজন নেই। এটি ক্ষুদ্র অথচ রুটিবোর্ড সামঞ্জস্যপূর্ণ।

কেন আমি একটি ESP8266 নির্বাচন করিনি? সত্যই বেতার হতে, আপনি পাওয়ার কর্ডটিও কেটে ফেলতে পারেন - যা ব্যাটারি যোগ করার জন্য এবং রিচার্জ করার অসুবিধার জন্য জিনিসগুলিকে একটু জটিল করে তোলে। যেহেতু ক্লাউড মনিটর আমার কম্পিউটারের পাশে বসবে তাই ইউএসবি পাওয়ার ব্যবহার করা অনেক সহজ। এছাড়াও Wi-Fi সংযোগ স্থাপন করা সবসময় সোজা নয়। ATmega32u4 এর উপর ভিত্তি করে, Arduino মাইক্রো এবং লিওস্টিক D2 তে I2C ডেটা এবং D3 তে ঘড়ি থাকার অদ্ভুততা ভাগ করে নিচ্ছে। BlinkM RGB LED সংযোগ করার সময় এটি প্রাসঙ্গিক হয়ে ওঠে। সাধারণ Atmega328 বোর্ডের বিপরীতে যেখানে আপনি কেবল A2.. A5 হেডারে ব্লিংকএম শিল্ডটি প্লাগ করতে পারেন, এটি এখানে কাজ করবে না (আমি নরম I2C লাইব্রেরি নিয়ে বিরক্ত হইনি)।

BlinkM- এ পুরুষ শিরোনাম VCC এবং GND desoldering দ্বারা, আমি তারপর তারের সঙ্গে তাদের প্রসারিত এবং একটি প্লাগ-সক্ষম ছোট প্যাকেজে সবকিছু রাখতে পারে। Arduino সংযুক্ত না করে স্ক্রিপ্টেড কালার প্যাটার্ন খেলুন। আমি প্রায় অনুভব করি যে WS2812 (অ্যাডাফ্রুটস নিওপিক্সেলগুলি দুর্দান্ত) আমাকে আরও ভালভাবে পরিবেশন করত - হায়রে আমার কাছে কিছুই ছিল না। হার্ডওয়্যার বিট শেষ করার জন্য, আমি পুরুষ টাইপ-এ ইউএসবি প্লাগের বিপরীত প্রান্তটি কেটেছি, এটি ক্লাউড লাইটের বেসের কাছে একটি প্রাক-ড্রিল করা গর্তের মাধ্যমে থ্রেড করেছি এবং তারগুলিকে লিওস্টিক (লাল: 5V, সাদা: ডেটা-, সবুজ: ডেটা+, কালো: গ্রাউন্ড)।

ধাপ 3: সমাধান আর্কিটেকচার

সমাধান স্থাপত্য
সমাধান স্থাপত্য
সমাধান স্থাপত্য
সমাধান স্থাপত্য

একমাত্র দৃ requirement় প্রয়োজন আমি নিজের উপর চাপিয়ে দিয়েছিলাম, মনিটরটি ফায়ারওয়ালের পিছনে চালানো। যদিও একটি গুরুত্বপূর্ণ বৈশিষ্ট্য, এটি ইভেন্ট পরিবর্তনের জন্য ওয়েব হুকগুলি অবাস্তব করে তুলেছে। টিসিপি ট্রাফিকের ক্ষেত্রে একটি পোলিং মেকানিজম ব্যয়বহুল এবং পোলিং ফ্রিকোয়েন্সি অনুযায়ী ইভেন্ট বিলম্বিত হতে পারে।

সমাধানটি ওয়েবসকেটগুলিতে পাওয়া যায় যা সম্পূর্ণ দ্বৈত যোগাযোগ সরবরাহ করে। অ্যামাজনস আইওটি পরিষেবা একটি বার্তা দালাল প্রদান করে যা ওয়েবসকেটগুলিতে এমকিউটিটি সমর্থন করে। যেমন দেখা যাচ্ছে, জিনিসগুলি, ছায়া, নীতি বা নিয়মগুলি কনফিগার না করেই পরিষেবাটি বলা যেতে পারে।

Arduino Yún এর জন্য একটি ডিভাইস SDK পাওয়া যায় এবং ESP8266 এর মত অন্যান্য প্ল্যাটফর্মে SDK পোর্ট করার জন্য কিছু প্রচেষ্টা করা হয়। কিন্তু যেহেতু মনিটর সবসময় সিরিয়াল ইন্টারফেস দ্বারা সংযুক্ত থাকবে, তাই আমি ক্লায়েন্ট এপিআই বাস্তবায়নের জন্য NodeJS অ্যাপ্লিকেশন (ডেস্কটপ কম্পিউটারে চালানো) করার সিদ্ধান্ত নিয়েছি এবং আরডুইনো ব্যবহার করি শুধুমাত্র রং কোড গ্রহণ এবং প্রদর্শন করতে। এই পদ্ধতিতে ফার্মওয়্যার আপলোড নিয়ে বিরক্ত না হয়ে জাভাস্ক্রিপ্টে সহজেই পরিবর্তন আনা যায়। ধরা যাক আমাদের একটি লোড ব্যালেন্সার আছে যা প্রাপ্যতা অঞ্চল জুড়ে সক্ষম যা একটি ওয়েব সার্ভারের উদাহরণ এবং সিপিইউ লোডের উপর ভিত্তি করে অটো স্কেলিং নীতিতে স্বাস্থ্য পরীক্ষা করে। সংশ্লিষ্ট CloudFormation টেমপ্লেটটি er the ডিজাইনারে দেখা যাবে অথবা ️ directly সরাসরি কনসোল থেকে তৈরি করা যাবে। দ্রষ্টব্য: এই স্ট্যাকের কিছু পরিষেবা চার্জ নিতে পারে।

আমি ল্যাম্বদা ফাংশন এবং প্রয়োজনীয় অনুমতিগুলির জন্য বৈশিষ্ট্য সহ টেমপ্লেটটি প্রসারিত করেছি। পরবর্তীতে IoT REST API এন্ডপয়েন্টকে প্যারামিটার হিসেবে োকানো প্রয়োজন। এটি স্বয়ংক্রিয় করার জন্য, আমি একটি ছোট শেল স্ক্রিপ্ট লিখেছি যা CLI ব্যবহার করে ARN (> aws iot description-endpoint) অনুরোধ করে এবং তারপর প্যারামিটার ইন-লাইন দিয়ে ক্রিয়েট-স্ট্যাক কল করে। অথবা আপনি এখনও এটি হাতে করতে পারেন:

// 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_ENDPOINT}-সক্ষমতা CAPABILITY_NAME

// DELETE STACK> aws cloudformation delete-stack --stack-name MiniCloudMonitor

আদর্শভাবে আমার একই অ্যালার্ম থ্রেশহোল্ডগুলি ব্যবহার করা উচিত যা অটো স্কেলিংকে ট্রিগার করে, ল্যাম্বদা ফাংশনকে কল করার জন্য এবং এইভাবে মনিটরের অবস্থা আপডেট করে। বর্তমানে এটি শুধুমাত্র তখনই সম্ভব যখন মধ্যবর্তী হিসাবে SNS ব্যবহার করা হয়। সেই সময় এই অতিরিক্ত স্তরটি অপ্রয়োজনীয় মনে হয়েছিল এবং আমি ল্যাম্বডাকে সরাসরি কল করার জন্য ক্লাউডওয়াচ EC2 জীবনচক্র নিয়ম ব্যবহার করার সিদ্ধান্ত নিয়েছি। তবুও, আমি ভবিষ্যতে SNS → Lambda এর বিকল্পটি অন্বেষণ করতে চাই।

ধাপ 4: সফটওয়্যার

আমি আরডুইনো স্কেচ লিখে শুরু করেছি। প্রধান লুপ () সিরিয়াল সংযোগ থেকে অক্ষর পড়ছে এবং একটি স্ট্রিং তৈরি করছে যতক্ষণ না এটি একটি নতুন লাইন চরিত্র পায়। এটি তখন ধরে নেওয়া হয় যে একটি হেক্স কালার কোড পাঠানো হয়েছে এবং যথাযথ I2C কমান্ডটি ব্লিংকএম LED তে লেখা হয়েছে। এটি সুবিধার মতো দক্ষতার বিষয়ে এতটা নয়। এই স্কেচ এবং অন্যান্য ফাইলের সম্পূর্ণ উত্সগুলি গিটহাব থেকে পাওয়া যেতে পারে। নিচে কিছু প্রাসঙ্গিক কোড স্নিপেট দেওয়া হল:

অকার্যকর লুপ () {

while (Serial.available ()) {

char inChar = (char) Serial.read ();

যদি (inChar == '\ n') {

দীর্ঘ সংখ্যা = strtol (inputString.c_str (), শূন্য, 16);

বাইট r = সংখ্যা >> 16;

বাইট g = সংখ্যা >> 8 এবং 0xFF;

বাইট b = সংখ্যা & 0xFF;

BlinkM_fadeToRGB (blinkm_addr, r, g, b);

ইনপুটস্ট্রিং = "";

} অন্য {

ইনপুট স্ট্রিং += ইনচার;

}

}

}

NodeJS অ্যাপকে AWS এবং Arduino- এ ইন্টারফেস প্রয়োগ করতে হবে। চমৎকার সিরিয়ালপোর্ট প্যাকেজ ব্যবহার করার পরে কোডের মাত্র কয়েক লাইনে সম্পন্ন করা যেতে পারে:

var serialport = প্রয়োজন ('serialport'); port = new serialport (PORT_COM_NAME, {

baudRate: SERIAL_BAUD_RATE

});

port.on ('open', function () {

});

port.on ('ত্রুটি', ফাংশন (ভুল) {

});

AWS IoT- এর সাথে সংযোগ স্থাপনের জন্য খুব কম প্রচেষ্টার প্রয়োজন। একমাত্র সমস্যা হল জেনে রাখা যে MQTT+WebSockets পোর্ট 443 ব্যবহার করে অ্যাক্সেস কীগুলির মাধ্যমে প্রমাণীকরণের প্রয়োজন। SDK এগুলো পরিবেশের ভেরিয়েবল থেকে পড়বে। AWS_ACCESS_KEY_ID এবং AWS_SECRET_ACCESS_KEY স্পষ্টভাবে রপ্তানি করা প্রয়োজন হতে পারে।

var awsiot = প্রয়োজন ('aws-iot-device-sdk'); var device = 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))

{প্রত্যাবর্তন;

}

}

});

ল্যাম্বদা ফাংশন একটি ইনপুট প্যারামিটার হিসেবে একটি কালার কোড গ্রহণ করে - সুন্দর নয়, কিন্তু এই পর্যায়ে খুবই নমনীয়। MQTT বিষয় প্রকাশ করতে সক্ষম হওয়ার জন্য, এটি একটি IotData অবজেক্টকে তাত্ক্ষণিক করে, যার জন্য IoT REST API এন্ডপয়েন্ট প্রয়োজন। স্ট্যাক তৈরির সময় ক্লাউডফর্মেশন টেমপ্লেট এটির যত্ন নিয়েছিল।

var AWS = প্রয়োজন ('aws-sdk'); var mqtt = নতুন AWS. IotData ({

শেষ বিন্দু: process.env. MQTT_ENDPOINT});

export.handler = ফাংশন (ইভেন্ট, প্রসঙ্গ, কলব্যাক) {

var params = {

বিষয়: process.env. MQTT_TOPIC, পেলোড: '{ "color \": "' + event.colour + '\"}', qos: 0

};

mqtt.publish (params, function (err, data) {

কলব্যাক (ভুল);

});

};

ধাপ 5: উপসংহার

ক্লাউডে "জন্ম" একটি ভার্চুয়াল ইভেন্টকে ভৌত জগতে আনতে আমি সত্যিই উপভোগ করেছি। এবং আমার ছোট পোষা প্রজেক্ট হিসাবে এটি ছিল মজার মজুদ। এটিকে পরবর্তী স্তরে নিয়ে যাওয়ার জন্য আমি বিবেচনা করব …

  • দৃust়তা এবং ব্যতিক্রম হ্যান্ডলিং উন্নতি
  • AWS ক্লাউড মেট্রিক্সকে একীভূত করার আরও ভাল উপায় অন্বেষণ করুন
  • গেজ, বার গ্রাফের মতো আরও শারীরিক সূচক নিয়ে পরীক্ষা করুন …
  • Azure, Google, Heroku, এর মত অন্যান্য প্ল্যাটফর্মে যাওয়ার বিকল্প আছে …
  • জেনকিন্স, গিটহাবের জন্য অ্যাপ্লিকেশন নির্দিষ্ট ইভেন্টগুলি পর্যবেক্ষণ করুন …

আমি আশা করি আপনি এই গাইডটি পড়ে উপভোগ করেছেন এবং হয়তো পথে নতুন কিছু নিয়েছেন। আপনি যদি জিনিসগুলি করার জন্য একটি ভিন্ন/ভাল উপায় চিন্তা করতে পারেন তবে দয়া করে নীচের মন্তব্যে এটি ভাগ করুন। এবং অবশ্যই, যদি আপনি ভুলগুলি লক্ষ্য করেন তবে একটি মাথা উঁচু করে প্রশংসা করা হবে। আপনার সময় জন্য ধন্যবাদ।

প্রস্তাবিত: