Sending push notification with ESP8266 | NodeMcu থেকে মোবাইলে পুশ নোটিফিকেশন পাঠানো

পুশ নোটিফিকেশন কী?

Push notification (পুশ নোটিফিকেশন) হচ্ছে একধরনের অ্যালার্ট মেসেজ যা মোবাইল ফোনে অ্যাপের মাধ্যমে পাঠানো হয়। এসএমএসের সাথে পুশ নোটিফিকেশনের পার্থক্য হল, যে অ্যাপের মাধ্যমে মেসেজ পাঠানো হয়, সেই অ্যাপটি মেসেজের প্রাপকের ফোনে ইনস্টল করা থাকতে হবে। আইওএস, উইন্ডোজ, অ্যান্ড্রোয়েড,ব্ল্যাকবেরিসহ সকল মোবাইল প্ল্যাটফর্মই পুশ নোটীফিকেশন সাপোর্ট করে। আমরা স্মার্টফোন ব্যবহারকারীরা অহরহই পুশ নোটিফিকেশন পেয়ে থাকি। যেমন অনলাইন শপগুলোর পক্ষ থেকে তাদের বিভিন্ন অফারের বিজ্ঞাপন, কুপনের ডাউনলোড লিংক ইত্যাদি।


কেন আমাদের পুশ নোটিফিকেশন প্রয়োজন?

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

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


এই প্রজেক্টে আমরা একটি পিজো এলিমেন্টের আউটপুট অ্যানালগ ডেটা NodeMCU এর মাধ্যমে রিড করব। পিজো এলিমেন্ট নক এবং ভাইব্রেশন ডিটেকটর হিসেবে ব্যবহৃত হয়। পিজো এলিমেন্টটি যখনই কোনো নক ডিটেক্ট করবে তখনই সেটি আমাদের মোবাইলে পুশ নোটিফিকেশনের মাধ্যমে একটি অ্যালার্ট মেসেজ পাঠাবে। এই ধরনের প্রজেক্ট কাজে দিতে পারে সাইকেল চুরিরোধে, গয়নার বাক্স পাহারা দিতে কিংবা এই ধরনের যেকোনো প্রয়োজনে।

প্রয়োজনীয় যন্ত্রপাতি পরিমাণ প্রোডাক্ট লিংক
ESP8266 NodeMCU Lua WiFi with CP2102 1 এখানে ক্লিক করুন
Mini Breadboard – Orange 1 এখানে ক্লিক করুন
Male To Female Jumper Wire – Single  1 এখানে ক্লিক করুন
1M Ohm 1/4W Resistor – Pack of 20  1 এখানে ক্লিক করুন
Piezo Element   1 এখানে ক্লিক করুন

সার্কিট ডায়াগ্রামঃ

নিচের ডায়াগ্রাম অনুসারে সার্কিটটি তৈরী করুন।

অ্যাপ ইন্সটলেশনঃ

১)পুশবুলেট সার্ভিস সেটআপঃ

পুশবুলেট হচ্ছে একটি ফ্রি ইন্টারনেট সার্ভিস। এর মাধ্যমে এসএমএস পাঠানো যায়, নোটফিকেশন ম্যানেজমেন্ট, মোবাইল ও পিসির মধ্যে ফাইল আদান-প্রদানের মতো কাজেও পুশবুলেট ব্যবহার করা হয়।
১)প্রথমে https://www.pushbullet.com/ এ ভিজিট করুন। নতুন একাউন্ট খুলুন। ফেসবুক বা গুগল একাউন্ট দিয়ে লগ ইন করা যাবে। লগ ইন করার পর নিচের উইন্ডোটি দেখা যাবে।


২) এবার আপনার মোবাইল থেকে গুগল প্লে স্টোর কিংবা অ্যাপস মার্কেটে গিয়ে (আপনার অপারেটিং সিস্টেমের উপর নির্ভর করে) pushbullet লিখে সার্চ করুন। অ্যাপটি ডাউনলোড করে ইন্সটল করুন। মনে রাখতে হবে ১ নং ধাপে আপনি যে একাউন্ট ক্রিয়েট করেছেন সেই একাউন্ট দিয়েই মোবাইল অ্যাপটিতে লগ ইন করতে হবে। লগ ইন করার পর Devices এর লিস্টে আপনার মোবাইলের নাম দেখা যাবে। ঠিক নিচের উইন্ডোটির মতো।


৩) এরপর সেটিংসে গিয়ে অ্যাক্সেস টোকেন জেনারেট করুন।


৪)এই এক্সেস টোকেনটি আপনার একটু পরেই প্রয়োজন হবে। কাজেই এটা সেভ করে রাখুন।


৫)এবার https://www.pushingbox.com/ এ ভিজিট করুন।
৬)গুগল একাউন্ট দিয়ে লগিন করুন।
৭)My services এ গিয়ে Add a service এ ক্লিক করুন। এবং লিস্ট থেকে Pushbullet সিলেক্ট করুন।


নিচের মেসেজটি দেখাবে। এখানে আপনার access token টি পেস্ট করুন। Pushbullet clement লেখা স্থানে আপনার ইচ্ছেমতো একটি নাম দিন। আমরা লিখেছিলাম ‘Tutorial’.

৮)এবার My scenarios এ ক্লিক করুন। নতুন scenario add করুন। আমাদের scenario টির নাম ছিল Message from NodeMCU.

 


৯)Your virtual scenarios লিস্টে আপনার মেসেজটি দেখাবে। মেসেজের পাশে লেখা device ID টি কপি করে আপনার আরডুইনো কোডের নির্দিষ্ট স্থানে পেস্ট করতে হবে।

১০) Scenario’ র নামের নিচে ক্লিক করলে নিচের উইন্ডোটি আসবে।

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

প্রোগ্রামঃ

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

#include <ESP8266WiFi.h>

// PushingBox scenario DeviceId code and API
String deviceId = "*****";
const char* logServer = "api.pushingbox.com";

const char* ssid = "*****";
const char* password = "*****";
int sensorReading = 0;
const int knockSensor = A0; // the piezo is connected to analog pin 0
const int threshold = 100;

void setup() {
  Serial.begin(74880);
  // Sending a notification to your mobile phone
  // function takes the message as a parameter

}

void sendNotification(String message){

  Serial.println("- connecting to Home Router SID: " + String(ssid));

  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }

  Serial.println();
  Serial.println("- succesfully connected");
  Serial.println("- starting client");

  WiFiClient client;

  Serial.println("- connecting to pushing server: " + String(logServer));
  if (client.connect(logServer, 80)) {
    Serial.println("- succesfully connected");

    String postStr = "devid=";
    postStr += String(deviceId);
    postStr += "&message_parameter=";
    postStr += String(message);
    postStr += "\r\n\r\n";

    Serial.println("- sending data...");

    client.print("POST /pushingbox HTTP/1.1\n");
    client.print("Host: api.pushingbox.com\n");
    client.print("Connection: close\n");
    client.print("Content-Type: application/x-www-form-urlencoded\n");
    client.print("Content-Length: ");
    client.print(postStr.length());
    client.print("\n\n");
    client.print(postStr);
  }
  client.stop();
  Serial.println("- stopping the client");
}

void loop()
{
  sensorReading = analogRead(knockSensor);
  Serial.println(sensorReading);

  // if the sensor reading is greater than the threshold:
  if (sensorReading >= threshold) {
    sendNotification(" Somebody has touched your belongings!");
    // send the string "Knock!" back to the computer, followed by newline
    Serial.println("Knock!");
  }
  delay(100);  // delay to avoid overloading the serial port buffer

}


পিজো এলিমেন্টটিকে স্পর্শ করলে নিচের মেসেজটির মতো একটি নোটিফিকেশন মোবাইলে আসবে।

]]>
A. R
A. R

3 Comments

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.