সুচিপত্র:

NodeMCU ব্যবহার করে স্মার্ট ডিস্ট্রিবিউটেড আইওটি ওয়েদার মনিটরিং সিস্টেম: ১১ টি ধাপ
NodeMCU ব্যবহার করে স্মার্ট ডিস্ট্রিবিউটেড আইওটি ওয়েদার মনিটরিং সিস্টেম: ১১ টি ধাপ

ভিডিও: NodeMCU ব্যবহার করে স্মার্ট ডিস্ট্রিবিউটেড আইওটি ওয়েদার মনিটরিং সিস্টেম: ১১ টি ধাপ

ভিডিও: NodeMCU ব্যবহার করে স্মার্ট ডিস্ট্রিবিউটেড আইওটি ওয়েদার মনিটরিং সিস্টেম: ১১ টি ধাপ
ভিডিও: IoT Cloud 2024, জুলাই
Anonim
NodeMCU ব্যবহার করে স্মার্ট ডিস্ট্রিবিউটেড IoT ওয়েদার মনিটরিং সিস্টেম
NodeMCU ব্যবহার করে স্মার্ট ডিস্ট্রিবিউটেড IoT ওয়েদার মনিটরিং সিস্টেম

আপনারা সবাই হয়তো weatherতিহ্যবাহী আবহাওয়া কেন্দ্র সম্পর্কে অবগত আছেন; কিন্তু আপনি কি কখনও ভেবে দেখেছেন এটি আসলে কিভাবে কাজ করে? যেহেতু weatherতিহ্যবাহী আবহাওয়া কেন্দ্রটি ব্যয়বহুল এবং ভারী, তাই প্রতি ইউনিট এলাকাতে এই স্টেশনগুলির ঘনত্ব খুব কম যা ডেটার ভুলতার জন্য অবদান রাখে। আমি আপনাকে ব্যাখ্যা করব কিভাবে: ধরুন একটি স্টেশন একটি শহরের মাঝখানে অবস্থিত এবং এটি একমাত্র স্টেশন যা 'x' মিটার ব্যাসার্ধে অবস্থিত, যদি দূষণ সৃষ্টিকারী কোন এজেন্ট আশেপাশে উপস্থিত থাকে তবে এটি সহজেই পক্ষপাতদুষ্ট হতে পারে পুরো 'x' মিটার ব্যাসার্ধ এলাকাটিকে দূষিত হিসাবে দেখানো স্টেশনটি যেহেতু সেই একক স্টেশনটি পুরো এলাকার আবহাওয়ার তথ্য নির্ধারণের জন্য দায়ী।

এই সমস্যা কাটিয়ে ওঠার জন্য, মডিউলগুলির ঘনত্ব বাড়াতে হবে যা কেবল তখনই সম্ভব যখন মডিউলগুলি সস্তা হয় এবং বিদ্যমানগুলির চেয়ে ছোট পদচিহ্ন নেয়।

এই কারণেই আমার প্রস্তাবিত সমাধান এই সমস্যার জন্য নিখুঁত সমাধান, এটি $ 10 এরও কম খরচ করে এবং আমার হাতের তালুতে সহজেই থাকে।

কিভাবে এটা কাজ করে…

এই প্রকল্পের 3 টি প্রধান অংশ রয়েছে।

ডিভাইসের দিক:

ডিভাইসটি ছবিতে দেখানো একটি IoT মডিউল যা প্রতি 'x' ব্যবধানে সার্ভারে আবহাওয়ার তথ্য পাঠায়। তথ্যের মধ্যে রয়েছে প্রকৃত আবহাওয়ার তথ্য, মডিউলের ভৌগলিক অবস্থান; যেমন এর স্থানাঙ্ক, এর ম্যাক ঠিকানা; ডিভাইসটিকে স্বতন্ত্রভাবে সনাক্ত করতে, এটি বর্তমানে যে ফার্মওয়্যার সংস্করণে চলছে। ডিভাইস-সাইডে এন-মডিউল সমগ্র এলাকায় বিতরণ করা হয় যা সক্রিয়ভাবে সার্ভারে ডেটা প্রদান করে।

সার্ভার-সাইড:

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

ক্লায়েন্ট/ব্যবহারকারীর দিক:

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

সরবরাহ

  • NodeMCU (ESP8266-12E)
  • DHT11 (আর্দ্রতা এবং তাপমাত্রা সেন্সর)
  • BMP180 (চাপ এবং তাপমাত্রা সেন্সর)
  • MQ-135 (বায়ু মানের সূচক সেন্সর)
  • ইউএসবি কেবল (প্রোগ্রাম আপলোড করতে)
  • 5 ভোল্ট পাওয়ার সাপ্লাই
  • ক্যাপাসিটর (alচ্ছিক: পাওয়ারলাইনের সমান্তরালে স্থাপন করা হবে)
  • Arduino IDE (ডিবাগ এবং প্রোগ্রাম আপলোড করার জন্য)
  • পোষ্টম্যান অ্যাপ্লিকেশন (alচ্ছিক: API ডিবাগ করার জন্য)
  • একটি ওয়েবসাইট (পিএইচপি এবং মাইএসকিউএল সার্ভার হোস্ট করার জন্য)

ধাপ 1: সমস্ত উপাদান বিক্রি করুন এবং প্রোগ্রামটি নোডএমসিইউতে আপলোড করুন।

সমস্ত উপাদান বিক্রি করুন এবং প্রোগ্রামটি নোডএমসিইউতে আপলোড করুন।
সমস্ত উপাদান বিক্রি করুন এবং প্রোগ্রামটি নোডএমসিইউতে আপলোড করুন।
সমস্ত উপাদান বিক্রি করুন এবং প্রোগ্রামটি নোডএমসিইউতে আপলোড করুন।
সমস্ত উপাদান বিক্রি করুন এবং প্রোগ্রামটি নোডএমসিইউতে আপলোড করুন।

একটি পারফ বোর্ডে সার্কিট ডায়াগ্রামে দেখানো হিসাবে সমস্ত উপাদানগুলিকে নোডএমসিইউতে বিক্রি করুন। এছাড়াও, পাওয়ারলাইনের সমান্তরালে একটি ক্যাপাসিটরের সোল্ডার করুন যেহেতু সক্রিয়ভাবে ডেটা প্রেরণ এবং গ্রহণের সময় শক্তি বৃদ্ধি পায়।

একবার সোল্ডারিংয়ের কাজ হয়ে গেলে, "code.c" ফাইলে প্রদত্ত কোডটি আপলোড করুন।

দ্রষ্টব্য: আপনার নিজের শংসাপত্রের সাথে শংসাপত্রগুলি প্রতিস্থাপন করতে ভুলবেন না। আরডুইনো স্কেচ ফোল্ডারের ভিতরে "html_file.h" নামের ফাইলটি রাখুন। এই প্রকল্পে ব্যবহৃত সমস্ত হেডার ফাইল এখানে পাওয়া যাবে

কোডের বৈশিষ্ট্য:

অ্যাক্সেস পয়েন্ট: যেহেতু ব্যাপক উত্পাদনে শংসাপত্রের সাথে প্রতিটি মডিউল প্রোগ্রাম করা কঠিন, তাই মডিউলটি ওয়াইফাইয়ের শংসাপত্রগুলি গ্রহণ করার জন্য তার প্রথম বুটে একটি ওয়েবপৃষ্ঠা হোস্ট করে যার সাথে মডিউলগুলিকে সংযুক্ত করতে হবে এবং পরবর্তী ব্যবহারের জন্য EEPROM- এ সংরক্ষণ করতে হবে।

একবার শংসাপত্রগুলি কনফিগার হয়ে গেলে, NodeMCU শংসাপত্রগুলির জন্য EEPROM পরীক্ষা করে এবং EEPROM এ উপস্থিত WiFi শংসাপত্রগুলির সাথে সংযোগ স্থাপন করে।

ওয়াইফাইতে সফলভাবে সংযোগ করার পর, নোডএমসিইউ সার্ভারে ডেটা আপলোড করা শুরু করে প্রতি 'x' সময়ের ব্যবধানে, ডেটাতে আবহাওয়ার তথ্য, মডিউলের ম্যাক ঠিকানা, ফার্মওয়্যারের সংস্করণ, ডিভাইসের ভৌগলিক অবস্থান অন্তর্ভুক্ত থাকে।

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

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

ধাপ 2: SQL সার্ভার কনফিগার করা

SQL সার্ভার কনফিগার করা হচ্ছে
SQL সার্ভার কনফিগার করা হচ্ছে

এসকিউএল সার্ভার সেটআপও সত্যিই সহজ। শুধু SQL সার্ভারে একটি ডাটাবেস তৈরি করুন এবং "database_structure.txt" নামের ফাইলটি আমদানি করে সেটিংটি আমদানি করুন। আপনি এই ধাপে ফাইলটি খুঁজে পেতে পারেন। যেহেতু নির্দেশযোগ্য ".sql" ফাইলগুলি আপলোড করার অনুমতি দেয় না, তাই আমি ফাইলটির নাম পরিবর্তন করে ".txt" করেছি।

দ্রষ্টব্য: ফাইলের নাম ".txt" থেকে ".sql" করুন।

ধাপ 3: ফাইল সার্ভার কনফিগার করা

সার্ভার কনফিগার করা সত্যিই সহজ যদি আপনি একটি ওয়েবসাইটের মালিক হন এবং এটি অনলাইনে হোস্ট করা হয়। আমি একটি ওয়েবসাইট সেট আপ করার এবং হোস্ট করার পুরো পদ্ধতির মধ্য দিয়ে যাব না কারণ এটি এই টিউটোরিয়ালের আওতার বাইরে। কিন্তু আপনি ফাইলগুলিকে কাজ করার জন্য স্থানীয় হোস্ট হিসাবে এটি আপনার নিজের পিসিতে হোস্ট করতে পারেন।

যেহেতু নির্দেশযোগ্য পিএইচপি ফাইল আপলোড করার অনুমতি দেয় না, তাই আমি ফাইলগুলিকে ".txt" নামকরণ করেছি।

দ্রষ্টব্য: অনুগ্রহ করে ফাইলগুলির এক্সটেনশানকে ".php" নামকরণ করুন। এছাড়াও "config.php" ফাইলের শংসাপত্র পরিবর্তন করতে ভুলবেন না।

শুধু সার্ভারে ফাইল আপলোড করুন এবং আপনি যেতে ভাল।

আমি আপনাকে পিএইচপি ফাইল সম্পর্কে সংক্ষিপ্ত তথ্য দেব।

db_config.php:

এই ফাইলে, এসকিউএল সার্ভারে সংযোগের জন্য প্রয়োজনীয় সমস্ত শংসাপত্র সংরক্ষণ করা হয়।

db_connect:

এই ফাইলে ডাটাবেস সংযোগের জন্য প্রয়োজনীয় ক্লাস উপস্থিত।

insert.php:

GET পদ্ধতি ব্যবহার করে সার্ভারে ডেটা আপলোড করার জন্য NodeMCU এই PHP ফাইলটিকে কল করে। এই ফাইলটি SQL সার্ভারে একই ডেটা সংরক্ষণের জন্যও দায়ী।

উদ্ধার। php:

ব্যবহারকারী/ক্লায়েন্ট GET পদ্ধতি ব্যবহার করে এই PHP কে কল করে। সার্ভার ব্যবহারকারী এবং সমস্ত মডিউলের মধ্যে দূরত্ব গণনা করে। তারপর ক্লায়েন্টের পছন্দ অনুযায়ী JSON/XML ফরম্যাটে ক্লায়েন্টের প্রতিক্রিয়া হিসাবে নিকটতম মডিউলের ডেটা পাঠানো হয়।

update.php:

এই পিএইচপি ফাইলটি মডিউল দ্বারা প্রতিদিন একটি নির্দিষ্ট সময়ে মডিউলটি ফার্মওয়্যারের সর্বশেষ সংস্করণটি চালাচ্ছে কিনা তা পরীক্ষা করার জন্য বলা হয়। ফাইল সার্ভারে সর্বশেষ ".bin" ফাইলটি রাখুন এবং ফাইলের ভেরিয়েবলে ফাইলের ডিরেক্টরি নির্দিষ্ট করুন।

যদি এই অনেক ফাইল প্রথমে ভয়ঙ্কর মনে হয়, আমি পরবর্তী ধাপে ব্যবহারকারীর ডকুমেন্টেশন অন্তর্ভুক্ত করেছি।

ধাপ 4: ব্যবহারকারীর ডকুমেন্টেশন

ব্যবহারকারীর ডকুমেন্টেশন
ব্যবহারকারীর ডকুমেন্টেশন
ব্যবহারকারীর ডকুমেন্টেশন
ব্যবহারকারীর ডকুমেন্টেশন

ভূমিকা:

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

তুমি শুরু করার আগে:

এই ডকুমেন্টটি ওয়েবসাইট এবং মোবাইল ডেভেলপারদের জন্য তৈরি করা হয়েছে যারা ডেভেলপ করা হচ্ছে এমন একটি অ্যাপ্লিকেশনে আবহাওয়ার তথ্য অন্তর্ভুক্ত করতে চায়। এটি উপলব্ধ পরামিতিগুলিতে API এবং রেফারেন্স উপাদান ব্যবহার করে ব্যবহারের সূচনা করে।

আবহাওয়ার তথ্য অনুরোধ:

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

একটি আবহাওয়া API অনুরোধ নিম্নলিখিত ফর্ম নেয়:

example.com/retrieve.php?lat=25.96446&lon=53.9443&format=json

যেখানে আউটপুট বিন্যাস (বিন্যাস) নিম্নলিখিত মানগুলির মধ্যে হতে পারে:

  • JSON (প্রস্তাবিত), জাভাস্ক্রিপ্ট অবজেক্ট নোটেশনে আউটপুট নির্দেশ করে (JSON); অথবা
  • এক্সএমএল, এক্সএমএলে আউটপুট নির্দেশ করে, নোডের মধ্যে আবৃত।

অনুরোধ পরামিতি:

সব ইউআরএলে যেমন মান আছে, অ্যাম্পারস্যান্ড (&) অক্ষর ব্যবহার করে প্যারামিটার আলাদা করা হয়। পরামিতিগুলির তালিকা এবং তাদের সম্ভাব্য মানগুলি নীচে চিহ্নিত করা হয়েছে।

প্রয়োজনীয় পরামিতি:

  • lat: সন্ধানের জন্য একটি অবস্থানের অক্ষাংশের প্রতিনিধিত্ব করে। (যেমন lat = 19.56875)
  • lon: অনুসন্ধানের জন্য একটি অবস্থানের একটি দ্রাঘিমাংশ প্রতিনিধিত্ব করে। (যেমন lon = 72.97568)

চ্ছিক পরামিতি:

বিন্যাস: আবহাওয়ার তথ্যের প্রতিক্রিয়া আউটপুট বিন্যাস নির্দিষ্ট করে। এটি JSON বা XML হতে পারে। ডিফল্ট হল JSON। (যেমন বিন্যাস = json বা বিন্যাস = xml)

আবহাওয়া প্রতিক্রিয়া:

প্রতিটি বৈধ অনুরোধের জন্য, টাইম জোন পরিষেবা অনুরোধ URL এর মধ্যে নির্দেশিত বিন্যাসে একটি প্রতিক্রিয়া প্রদান করবে। প্রতিটি প্রতিক্রিয়া নিম্নলিখিত উপাদান থাকবে:

  • সাফল্য: প্রতিক্রিয়ার অবস্থা নির্দেশ করে একটি মান।

    • 0: নেতিবাচক; নির্দেশ করে যে অনুরোধটি ত্রুটিপূর্ণ ছিল।
    • 1: ইতিবাচক; নির্দেশ করে যে অনুরোধটি সফল হয়েছে।
  • বার্তা: অনুরোধের অসঙ্গতির কারণ নির্দেশ করে একটি স্ট্রিং। অবস্থা নেতিবাচক হলেই পাওয়া যাবে।
  • ডেটা: একাধিক আবহাওয়া পরামিতি সহ একটি অ্যারে।

    • তাপমাত্রা: তাপমাত্রার তথ্য।
    • hum: আর্দ্রতা উপস্থিতি তথ্য।
    • প্রেস: পরম চাপ ডেটা।
    • aqi: বর্তমান বায়ু মানের সূচক।

উভয় ফরম্যাটের উদাহরণ প্রতিক্রিয়া ছবিতে দেখা যায়।

ধাপ 5: মডিউল সেটআপ

মডিউল সেটআপ
মডিউল সেটআপ
মডিউল সেটআপ
মডিউল সেটআপ

একটি অ্যাক্সেস-পয়েন্ট তৈরি করা হয় এবং একটি ওয়েবপৃষ্ঠা একটি IP ঠিকানায় হোস্ট করা হয় (ডিফল্ট: 192.168.4.1) ডিভাইস ম্যানেজার/ব্যবহারকারীর কাছ থেকে প্রথম বুটে শংসাপত্রগুলি পাওয়ার জন্য অথবা যদি মডিউলটি ইতিমধ্যে সংরক্ষিত শংসাপত্রগুলি খুঁজে না পায় EEPROM।

ব্যবহারকারীকে SSID এবং পাসওয়ার্ড লিখতে হবে যার সাথে ব্যবহারকারী মডিউলটি সংযোগ করতে চায়। অক্ষাংশ এবং দ্রাঘিমাংশ স্বয়ংক্রিয়ভাবে পূর্ণ হয়ে যায় যদি আপনি ব্রাউজারটিকে অবস্থানটি অ্যাক্সেস করার অনুমতি দেন।

একবার সমস্ত বিবরণ প্রবেশ করা হলে, "পাঠান" বোতামে ক্লিক করুন, এবং তারপরে সমস্ত শংসাপত্রগুলি মডিউলের EEPROM এ লেখা হয়।

এই ধাপটি অত্যন্ত গুরুত্বপূর্ণ যেহেতু মডিউলগুলি ব্যাপকভাবে উত্পাদন করার সময়, সমস্ত মডিউলকে তার সঠিক অবস্থানের ডেটা এবং ওয়াইফাই শংসাপত্র সহ প্রোগ্রাম করা সম্ভব নয়। এছাড়াও, প্রোগ্রামে শংসাপত্রগুলিকে হার্ড-কোড করা যুক্তিযুক্ত নয় কারণ যদি আমাদের মডিউলটিকে অন্য কোনও স্থানে স্থানান্তর করতে হয় বা ওয়াইফাই শংসাপত্রগুলি পরিবর্তন করতে চায় তবে আমাদের মডিউলটি পুনরায় প্রোগ্রাম করতে হবে। এই ঝামেলা এড়াতে, প্রাথমিক সেটআপ ফাংশন বাস্তবায়িত হয়।

ধাপ 6: এখন ক্লাউডে ডেটা অবদান করার সময়।

এখন সময় ক্লাউডে ডেটা অবদান করার।
এখন সময় ক্লাউডে ডেটা অবদান করার।
এখন সময় ক্লাউডে ডেটা অবদান করার।
এখন সময় ক্লাউডে ডেটা অবদান করার।

পূর্ববর্তী সমস্ত ধাপগুলি সম্পন্ন হওয়ার পরে, এখন সময় এসেছে মডিউলটিকে সার্ভারে ডেটা আপলোড করার অনুমতি দেওয়া। আপনি শংসাপত্রগুলি সংরক্ষণ করার পরে এটি স্বয়ংক্রিয়ভাবে আপলোড করা শুরু করে।

এটি GET পদ্ধতিতে পাঠানোর জন্য সমস্ত প্যারামিটার পাস করার সাথে একটি API কল হিসাবে "insert.php" কে কল করে।

নীচের কোড স্নিপেট দেখায় কিভাবে প্যারামিটার প্রক্রিয়া করা হয়।

যদি (isset ($ _ GET ['temp']) && isset ($ _ GET ['hum']) && isset ($ _ GET ['pres']) && isset ($ _ GET ['aqi']) && isset ($ _ GET ['mac']) && isset ($ _ GET ['lat']) && isset ($ _ GET ['lon'])) 2. 2. {3. // main program 4.}

তাই সব মডিউল ডেটা আপলোড করা শুরু করে।

দ্রষ্টব্য: কোডে আপলোড ফ্রিকোয়েন্সি কমিয়ে দিন যদি আপনি মনে করেন সার্ভার ওভারলোড হচ্ছে।

ধাপ 7: ওভার দ্য এয়ার (ওটিএ) আপডেট

ওভার দ্য এয়ার (ওটিএ) আপডেট
ওভার দ্য এয়ার (ওটিএ) আপডেট

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

একটি নতুন আপডেট চেক করার জন্য, মডিউলটি তার অনুরোধ শিরোনামে MAC ঠিকানা পাঠিয়ে "update.php" কে কল করে। সার্ভার তখন চেক করে যে সেই নির্দিষ্ট MAC ঠিকানায় কোন নতুন আপডেট আছে কি না, যদি হ্যাঁ, তাহলে এটি প্রতিক্রিয়া হিসাবে সর্বশেষ ফার্মওয়্যারের বাইনারি ফাইল পাঠায়।

এটি মডিউলের মৌলিক প্রমাণীকরণের জন্য প্রয়োজনীয় সমস্ত শিরোনামের জন্যও পরীক্ষা করে।

ধাপ 8: কিভাবে ব্যবহারকারী/ক্লায়েন্ট ডেটা অ্যাক্সেস করতে পারে …

কিভাবে ব্যবহারকারী/ক্লায়েন্ট ডেটা অ্যাক্সেস করতে পারে …
কিভাবে ব্যবহারকারী/ক্লায়েন্ট ডেটা অ্যাক্সেস করতে পারে …
কিভাবে ব্যবহারকারী/ক্লায়েন্ট ডেটা অ্যাক্সেস করতে পারে …
কিভাবে ব্যবহারকারী/ক্লায়েন্ট ডেটা অ্যাক্সেস করতে পারে …
কিভাবে ব্যবহারকারী/ক্লায়েন্ট ডেটা অ্যাক্সেস করতে পারে …
কিভাবে ব্যবহারকারী/ক্লায়েন্ট ডেটা অ্যাক্সেস করতে পারে …

সার্ভার থেকে ডেটা অ্যাক্সেস করা বেশ সহজবোধ্য। শুধু "retrie.php" এ কল করে আমরা JSON ফর্ম্যাটে আবহাওয়ার তথ্য পেতে পারি। এর পরে, পৃথক উপাদানগুলি অ্যাক্সেস করার জন্য এটি কেবল JSON ডেটা বিশ্লেষণ করার বিষয়। এক্সএমএল প্রতিক্রিয়া সঙ্গে অনুরূপ। ব্যবহারকারী সর্বদা সাড়া দেওয়ার পছন্দের ফর্ম্যাটটি নির্দিষ্ট করতে পারেন যার মধ্যে ব্যবহারকারী আরামদায়ক। যদি ব্যবহারকারী বিন্যাসটি নির্দিষ্ট না করে, তাহলে ডিফল্ট বিন্যাস হল JSON।

API- এর কাজ পরীক্ষা করার জন্য POSTMAN টুল ব্যবহার করে একটি নমুনা অনুরোধ করা হয়।

জাভাস্ক্রিপ্টে JSON প্রতিক্রিয়া বিশ্লেষণের একটি উদাহরণ নীচের কোড স্নিপেটে দেখানো হয়েছে।

var url = "https://example.com/retrieve.php?lat=19.044848&lon=72.8464373"; ফাংশন httpGet (theUrl) {var xmlHttp = নতুন XMLHttpRequest (); xmlHttp.open ("GET", theUrl, false); // সিঙ্ক্রোনাস অনুরোধের জন্য মিথ্যা xmlHttp.send (নাল); xmlHttp.responseText ফেরত দিন; } var myVar = httpGet (url); var obj = JSON.parse (myVar); document.getElementById ("aqi")। ভিতরের HTML = obj.data [0].aqi; document.getElementById ("তাপমাত্রা")। ভিতরের HTML = Math.round (obj.data [0].temp) + "° C"; document.getElementById ("temp")। આંતરિક HTML = Math.round (obj.data [0].temp) + "° C"; document.getElementById ("আর্দ্রতা")। ভিতরের HTML = Math.round (obj.data [0].hum) + "%"; document.getElementById ("চাপ")।

JSON প্রতিক্রিয়া বিশ্লেষণ করে এমন উদাহরণ HTML পৃষ্ঠার সোর্স কোড এই ধাপের শেষে উপলব্ধ।

দ্রষ্টব্য: ফাইলের এক্সটেনশনটি ".html" এ পরিবর্তন করুন।

ধাপ 9: এই প্রকল্পের সীমাবদ্ধতা

  • প্রকল্পটি ডেটা পাঠাতে GET ব্যবহার করে; যদিও এটি সংবেদনশীল ডেটা নিয়ে কাজ করছে না, ডেটা সহজেই ম্যানিপুলেট করা যায় কারণ হেডারের চেক করা ছাড়াও উৎসের সত্যতা যাচাই করার কোনো ব্যবস্থা নেই, যা সহজেই সংশোধন করা যেতে পারে এবং এমনকি একটি সাধারণ ডিভাইসও ফাঁকি দেওয়া যেতে পারে একটি আবহাওয়া মডিউল বলে মনে হচ্ছে।
  • যেহেতু মডিউল সম্পূর্ণরূপে নির্ভর করে এবং অন্যান্য অ্যাক্সেস পয়েন্ট (WIFI) এর উপর নির্ভর করে তথ্য পাঠানোর জন্য যা বেশিরভাগ ক্ষেত্রে অন্যান্য সংস্থার হবে। যদি কোনও কারণে অ্যাক্সেস-পয়েন্ট পরিষেবা বন্ধ থাকে, মডিউল ডেটা পাঠাতে সক্ষম হবে না।
  • যদিও প্রকল্পটি বিদ্যমান ব্যবস্থার যথার্থতা বৃদ্ধির জন্য নির্মিত, বাজারে উপলব্ধ সেন্সরটি প্রত্যাশার চেয়ে কম নির্ভুল যার ফলে তার মূল উদ্দেশ্য ব্যর্থ হয়।
  • প্রকল্পের পরিকল্পনা করার সময়, আমি একটি মোড অন্তর্ভুক্ত করার পরিকল্পনা করেছি যেখানে সার্ভার ত্রুটি সংশোধনের জন্য অবস্থানের উপর ভিত্তি করে ডেটা মান গড় করে। কিন্তু এই বৈশিষ্ট্যটি বাস্তবায়নের পরে, আমি বুঝতে পারলাম যে ভৌগলিক অঞ্চলে স্থানাঙ্কগুলি অনুবাদ করার জন্য কিছু তৃতীয় পক্ষের API এর প্রয়োজন।

ধাপ 10: এই প্রকল্পে আরও উন্নতি করা যেতে পারে।

  • বাজারে উপলব্ধ জেনেরিক মডিউল ব্যবহার না করে সুনির্দিষ্ট উদ্দেশ্যে সেন্সরগুলোকে বিশেষভাবে সেলাই করে মডিউলের নির্ভুলতা আরও উন্নত করা যায়।
  • মডিউলটি একটি বিশেষ চিপ ব্যবহার করে আরও স্বাধীনভাবে কাজ করার জন্য সংশোধন করা যেতে পারে যা সেল-টাওয়ারের সাথে ওয়্যারলেসভাবে যোগাযোগ করে ডেটা পাঠানোর জন্য ফল্ট সহনশীলতা উন্নত করে।
  • সৌর প্যানেল এবং ব্যাটারি সিস্টেমটি ESP এর গভীর ঘুমের মোডের সাথে ব্যবহার করা যেতে পারে এইভাবে বিদ্যুতের দক্ষতা উন্নত করে এবং এটি একটি বহিরাগত বিদ্যুৎ সরবরাহ থেকে আরও স্বাধীন করে তোলে।
  • POST ব্যবহার করা যেতে পারে কিছু প্রমাণীকরণ পদ্ধতির সাথে ডেটা পাঠানোর জন্য যেমন ডেটার প্রতিটি ট্রান্সমিশনের জন্য সাইক্লিক কোড ব্যবহার করা।
  • NodeMCU এর পরিবর্তে, যা একটি প্রোটোটাইপিং বোর্ড, আমরা ভর উৎপাদনে একটি কাস্টম মাইক্রোকন্ট্রোলার ব্যবহার করতে পারি যা শুধুমাত্র খরচ কমায় না বরং সিস্টেম রিসোর্সের সর্বোত্তম ব্যবহার করে।
  • গুগল জিওলোকেশন এপিআই এর সাথে এবং যে কোন উপলব্ধ ওপেন ওয়াইফাই এর সাথে সংযোগ স্থাপন করে, মডিউলটি কনফিগার না করেও কাজ করতে পারে; কারখানার বাইরে কোন প্রকার সেটআপ ছাড়া ডেটা প্রেরণের জন্য প্রস্তুত।

ধাপ 11: শ্রোতাদের জন্য কয়েকটি শব্দ।

শ্রোতাদের জন্য কয়েকটি শব্দ।
শ্রোতাদের জন্য কয়েকটি শব্দ।

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

আপনারা যদি এই প্রকল্প বা এইরকম কিছু তৈরিতে কোন সাহায্যের প্রয়োজন হয়, তবে [email protected] এ আমার সাথে যোগাযোগ করুন অথবা আপনি বরাবরের মত একটি মন্তব্য করতে পারেন। আমি আমার সামর্থ্য অনুযায়ী আপনাকে সাহায্য করার চেষ্টা করব।

ধন্যবাদ!!

প্রস্তাবিত: