সুচিপত্র:

পুল পাই গাই - এআই চালিত অ্যালার্ম সিস্টেম এবং রাস্পবেরি পাই ব্যবহার করে পুল মনিটরিং: 12 টি ধাপ (ছবি সহ)
পুল পাই গাই - এআই চালিত অ্যালার্ম সিস্টেম এবং রাস্পবেরি পাই ব্যবহার করে পুল মনিটরিং: 12 টি ধাপ (ছবি সহ)

ভিডিও: পুল পাই গাই - এআই চালিত অ্যালার্ম সিস্টেম এবং রাস্পবেরি পাই ব্যবহার করে পুল মনিটরিং: 12 টি ধাপ (ছবি সহ)

ভিডিও: পুল পাই গাই - এআই চালিত অ্যালার্ম সিস্টেম এবং রাস্পবেরি পাই ব্যবহার করে পুল মনিটরিং: 12 টি ধাপ (ছবি সহ)
ভিডিও: পরীক্ষায় ফুল মার্কস পাওয়ার A To Z গোপন টেকনিক | Exam Preparation Bangla | Bangla Motivational Speech 2024, জুলাই
Anonim
পুল পাই গাই - এআই চালিত অ্যালার্ম সিস্টেম এবং রাস্পবেরি পাই ব্যবহার করে পুল মনিটরিং
পুল পাই গাই - এআই চালিত অ্যালার্ম সিস্টেম এবং রাস্পবেরি পাই ব্যবহার করে পুল মনিটরিং

বাড়িতে একটি পুল আছে মজা, কিন্তু মহান দায়িত্ব সঙ্গে আসে। আমার সবচেয়ে বড় দুশ্চিন্তা হল কেউ যদি পুলের কাছাকাছি না থাকে (বিশেষ করে ছোট বাচ্চারা) পর্যবেক্ষণ করে। আমার সবচেয়ে বড় বিরক্তি হল পাম্পের পানির লাইন কখনই পাম্প এন্ট্রির নিচে যাবে না তা নিশ্চিত করা, যা পাম্পটি শুকিয়ে চালাবে এবং এটি মেরামত করতে $$$ খরচ করে ধ্বংস করবে।

আমি সম্প্রতি বুঝতে পেরেছি কিভাবে ওপেনসিভি এবং টেন্সরফ্লো সহ রাস্পবেরি পাই ব্যবহার করতে হয়, একটি জল স্তরের সেন্সর এবং একটি সোলেনয়েড ভালভ উভয় সমস্যা সমাধানের জন্য - এবং এটি করতে মজা করুন!

এটি একটি দুর্দান্ত অ্যালার্ম সিস্টেম হিসাবেও পরিণত হয়েছে - গতি সক্রিয়, এআই -নিয়ন্ত্রিত, অসীমভাবে কাস্টমাইজযোগ্য।

ডুব দেওয়া যাক।

ধাপ 1: গ্র্যান্ড প্ল্যান

এই নির্দেশে আমরা দেখাব কিভাবে:

  1. OpenCV এবং TensorFlow দিয়ে একটি রাস্পবেরি পাই সেটআপ করুন
  2. একটি দীর্ঘ ইউএসবি তারের মাধ্যমে একটি ওয়েবক্যাম সংযুক্ত করুন
  3. গতি সনাক্ত করতে একটি OpenCV অ্যালগরিদম লিখুন
  4. বস্তু সনাক্তকরণের জন্য TensorFlow ব্যবহার করুন
  5. আকর্ষণীয় ছবিগুলি দেখানোর জন্য রাস্পবেরি পাইতে একটি ওয়েব সার্ভার সেট আপ করুন
  6. কোনো ব্যক্তি ধরা পড়লে মোবাইল সতর্কতা ট্রিগার করতে IFTTT- এর সাথে একীভূত করুন
  7. রাস্পবেরি পাইতে একটি রিলে HAT সংযুক্ত করুন এবং এটি একটি সোলেনয়েড ভালভের সাথে সংযুক্ত করুন যা পুলটিতে জল যোগ করবে
  8. রাস্পবেরি পাইতে একটি জল স্তরের সেন্সর সংযুক্ত করুন এবং পিআই এর জিপিআইও ব্যবহার করে এর সাথে ইন্টারফেস করুন
  9. সবগুলো একসাথে আঠালো করার জন্য কিছু কোড লিখুন

ধাপ 2: কেনাকাটার তালিকা

কেনাকাটা তালিকা
কেনাকাটা তালিকা

সমস্ত উপাদান অ্যামাজন থেকে সহজেই পাওয়া যায়। নির্দ্বিধায় পরীক্ষা করুন এবং উপাদান বিনিময় করুন - এটি অর্ধেক মজা!

  1. রাস্পবেরি পাই
  2. রাস্পবেরি পাই পাওয়ার সাপ্লাই (এখানে স্কিম করবেন না)
  3. মেমরি কার্ড (বড় হলে ভালো)
  4. কেস (এটি পি এবং এইচএটি উভয়ের জন্য যথেষ্ট বড়)
  5. ইউএসবি ওয়েবক্যাম (যেকোনো ওয়েবক্যাম করবে, কিন্তু আপনি এমন একটি চান যা ভাল ছবি পায় এবং আলোকে ভালভাবে সামঞ্জস্য করে)
  6. ইউএসবি এক্সটেনশন কেবল (যদি প্রয়োজন হয় - পাই এর মধ্যে দূরত্ব পরিমাপ করুন এবং আপনি ক্যামেরাটি কোথায় রাখবেন)
  7. রিলে বোর্ড HAT (এইটিতে 3 টি রিলে আছে এবং আমাদের কেবল একটি প্রয়োজন, কিন্তু আপনি অন্যদের জন্য খুব শীঘ্রই একটি ব্যবহার পাবেন!)
  8. সোলেনয়েড
  9. সোলেনয়েড ফিটিং 1 এবং ফিটিং 2 (যা সত্যিই আপনি সোলেনয়েডের সাথে মানানসই তার উপর নির্ভর করে, কিন্তু এগুলি আমার জন্য কাজ করেছে)
  10. সোলেনয়েড পাওয়ার সাপ্লাই (যে কোন 24V এসি করবে)
  11. কেবল (আবার, প্রায় যেকোনো 2 টি স্ট্র্যান্ড কেবল হবে - বর্তমানটি ন্যূনতম)
  12. ওয়াটার লেভেল ফ্লোট সুইচ (এটি শুধু একটি উদাহরণ, আপনার পুলের সাথে কী সহজে সংযুক্ত হতে পারে তা পরীক্ষা করুন)
  13. কিছু জাম্পার তার এবং তারের সংযোগকারী

ধাপ 3: আপনার রাস্পবেরি পাই সেটআপ করুন

আপনার রাস্পবেরি পাই সেটআপ করুন
আপনার রাস্পবেরি পাই সেটআপ করুন

রাস্পবেরি পাই একটি দুর্দান্ত ছোট কম্পিউটার। এটি মাত্র $ 35 খরচ করে, ধারাবাহিকভাবে চালায় এবং প্রচুর সামঞ্জস্যপূর্ণ সফ্টওয়্যার এবং হার্ডওয়্যার রয়েছে। এটি সেট আপ করা বেশ সহজ:

  1. আপনার এসডি কার্ড ফরম্যাট করুন। এর জন্য বিশেষ যত্ন প্রয়োজন - রাস্পবেরি পাই শুধুমাত্র একটি FAT ফরম্যাট করা SD কার্ড থেকে বুট করতে পারে। এই নির্দেশাবলী অনুসরণ করুন।
  2. রাস্পবেরি পাইকে একটি ইউএসবি কীবোর্ড এবং মাউসের সাথে একটি HDMI ডিসপ্লেতে সংযুক্ত করুন এবং রাস্পবেরি পাই NOOBS টিউটোরিয়ালের নির্দেশাবলী অনুসরণ করুন। ওয়াইফাই সেটআপ এবং SSH অ্যাক্সেস সক্ষম করতে ভুলবেন না। ডিফল্ট পাই অ্যাকাউন্টের জন্য একটি পাসওয়ার্ড সেটআপ করতে ভুলবেন না।
  3. আপনার হোম নেটওয়ার্কে রাস্পবেরি পাই এর জন্য একটি স্ট্যাটিক আইপি সেটআপ করুন - এটি এসএসএইচকে আরও সহজ করে তুলবে।
  4. আপনার ডেস্কটপ/ল্যাপটপে একটি এসএসএইচ ক্লায়েন্ট ইনস্টল আছে তা নিশ্চিত করুন। একটি পিসির জন্য আমি পুটি সুপারিশ করব, যা আপনি এখান থেকে ইনস্টল করতে পারেন।
  5. রাস্পবেরি পাই থেকে ইউএসবি এবং এইচডিএমআই আনহুক করুন, এটি পুনরায় বুট করুন এবং এতে এসএসএইচ করুন - যদি এটি সব কাজ করে তবে আপনাকে এরকম কিছু দেখতে হবে:

Linux raspberrypi 4.14.98-v7+ #1200 SMP Tue Feb 12 20:27:48 GMT 2019 armv7l

ডেবিয়ান জিএনইউ/লিনাক্স সিস্টেমের সাথে অন্তর্ভুক্ত প্রোগ্রামগুলি বিনামূল্যে সফটওয়্যার; প্রতিটি প্রোগ্রামের জন্য সঠিক বিতরণের শর্তাবলী/usr/share/doc/*/copyright- এ পৃথক ফাইলগুলিতে বর্ণিত হয়েছে। ডেবিয়ান জিএনইউ/লিনাক্স সম্পূর্ণরূপে প্রযোজ্য আইন দ্বারা অনুমোদিত কোন গ্যারান্টি সহ আসে। শেষ লগইন: সোম মে 13 10:41:40 2019 থেকে 104.36.248.13 পিআই@রাস্পবেরিপি: ~ $

ধাপ 4: OpenCV সেটআপ করুন

OpenCV সেটআপ করুন
OpenCV সেটআপ করুন

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

Virtaulenvwrapper ইনস্টল করে শুরু করুন: আমরা আমাদের সমস্ত প্রোগ্রামিং করতে পাইথন ব্যবহার করব এবং ভার্চুয়ালেনভ আমাদের ওপেনসিভি এবং টেন্সরফ্লো বনাম ফ্লাস্ক বা জিপিআইওর জন্য নির্ভরতা আলাদা রাখতে সাহায্য করবে:

pi@raspberrypi: ~ $ sudo pip install virtualenvwrapper

এখন আপনি একটি নতুন পরিবেশ তৈরি করতে "mkvirtualenv", এটিতে কাজ করার জন্য "workon" এবং আরও অনেক কিছু করতে পারেন।

সুতরাং, আসুন আমাদের ইমেজ ম্যানিপুলেশনের জন্য একটি পরিবেশ তৈরি করি, পাইথন 3 ডিফল্ট দোভাষী হিসাবে (এটি 2019, পুরনো পাইথন 2 এর সাথে থাকার কোন কারণ নেই):

pi@raspberrypi: ~ $ mkvirtualenv cv -p python3

… (Cv) pi@raspberrypi:

আমরা এখন OpenCV ইনস্টল করার জন্য প্রস্তুত। আমরা বেশিরভাগই OpenCV শিখতে চমৎকার টিউটোরিয়াল অনুসরণ করব। বিশেষভাবে তাদের ধাপ 1 এবং 2 অনুসরণ করুন:

sudo apt -y আপডেট sudo apt -y upgrade ## নির্ভরতা ইনস্টল করুন sudo apt-get -y install build-essential checkinstall cmake pkg-config yasm sudo apt-get -y install git gfortran sudo apt-get -y install libjpeg8-dev libjasper- dev libpng12-dev sudo apt-get -y install libtiff5-dev sudo apt-get -y install libtiff-dev sudo apt-get -y install libavcodec-dev libavformat-dev libswscale-dev libdc1394-22-dev sudo apt-get- y libxine2-dev libv4l-dev cd/usr/include/linux sudo ln -s -f../libv4l1-videodev.h videodev.h sudo apt-get -y install libgstreamer0.10-dev libgstreamer-plugins-base0 ইনস্টল করুন। 10-dev sudo apt-get -y install libgtk2.0-dev libtbb-dev qt5-default sudo apt-get -y install libatlas-base-dev sudo apt-get -y install libmp3lame-dev libtheora-dev sudo apt-get -y libvorbis-dev libxvidcore-dev libx264-dev sudo apt-get -y install libopencore-amrnb-dev libopencore-amrwb-dev sudo apt-get -y install libavresample-dev sudo apt-get -y install x264 v4l-utils sudo apt -get -y libprotobuf ইনস্টল করুন -dev protobuf-কম্পাইলার উবুন্টু পেতে -y ইনস্টল libgoogle-glog-দেব libgflags-দেব উবুন্টু পেতে -y ইনস্টল libgphoto2-দেব libeigen3-দেব libhdf5-দেব doxygen উবুন্টু libqtgui4 ইনস্টল apt-get উবুন্টু apt-get libqt4- ইনস্টল পরীক্ষা

এখন আমরা সিভি ভার্চুয়ালেনভের ভিতরে পাইথন বাইন্ডিং সহ ওপেনসিভি ইনস্টল করতে পারি (আপনি এখনও এতে আছেন, তাই না?) ব্যবহার করে

pip opencv- অবদান-পাইথন ইনস্টল করুন

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

একটি পাইথন ইন্টারপ্রেটার খোলার মাধ্যমে এবং opencv আমদানি করে পরীক্ষা করে দেখুন যে কোন ত্রুটি নেই:

(cv) pi@raspberrypi: ~ $ python

পাইথন 3.5.3 (ডিফল্ট, সেপ্টেম্বর 27 2018, 17:25:39) [GCC 6.3.0 20170516] আরো তথ্যের জন্য "সাহায্য", "কপিরাইট", "ক্রেডিট" বা "লাইসেন্স" টাইপ করুন। >>> আমদানি cv2 >>>

ধাপ 5: TensorFlow সেটআপ করুন

TensorFlow সেটআপ করুন
TensorFlow সেটআপ করুন

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

আমরা মূলত এডজে ইলেকট্রনিক্সের চমৎকার টিউটোরিয়াল অনুসরণ করব, আরো সাম্প্রতিক টেন্সরফ্লো ডিস্ট্রিবিউশনের মাধ্যমে পরিবর্তনগুলি সম্ভব হয়েছে:

pi@raspberrypi: ~ $ workon cv

(cv) pi@raspberrypi: ~ $ pip install tensorflow (cv) pi@raspberrypi: ~ $ sudo apt-get libxml2-dev libxslt-dev (cv) pi@raspberrypi: ~ $ pip install pillow lxml jupyter matplotvib cython) pi@raspberrypi: ~ $ sudo apt-get python-tk ইনস্টল করুন

এখন আমাদের গুগলের প্রোটোবফ কম্পাইল করতে হবে। একই চমৎকার টিউটোরিয়ালের ধাপ 4 -এ নির্দেশাবলী অনুসরণ করুন

অবশেষে, টেন্সরফ্লোর মডেল সংজ্ঞা ক্লোন এবং সেটআপ করুন - এডজে ইলেকট্রনিক্স টিউটোরিয়ালে ধাপ 5 অনুসরণ করুন

ধাপ 6 এ তাদের উদাহরণ অনুসরণ করতে বিনা দ্বিধায়, এটি রাস্পবেরি পাইতে বস্তু সনাক্তকরণের একটি দুর্দান্ত ভূমিকা।

ধাপ 6: ওপেনসিভি ব্যবহার করে মোশন ডিটেকশন

ওপেনসিভি আমাদের ওয়েবক্যামের সাথে ইন্টারফেস করতে পারে তা পরীক্ষা করে শুরু করা যাক: রাস্পবেরি পাইতে এসএসএইচ করুন, সিভি ভার্চুয়ালেনভ (ওয়ার্কন সিভি) এ যান, একটি পাইথন ইন্টারপ্রেটার খুলুন (শুধু টাইপ পাইথন), এবং নিম্নলিখিত পাইথন কমান্ডগুলি লিখুন:

আমদানি cv2

cap = cv2. VideoCapture (0) cap.set (cv2. CAP_PROP_FRAME_WIDTH, 1920) cap.set (cv2. CAP_PROP_FRAME_HEIGHT, 1080) ret, frame = cap.read () print ('ফ্রেম সাইজ পড়ুন: {} x {}'.format (frame.shape [1], frame.shape [0])

যে কোন ভাগ্যের সাথে আপনি দেখতে পাবেন যে OpenCV ক্যামেরা থেকে একটি HD ফ্রেম পড়তে সক্ষম হয়েছিল।

আপনি cv2.imwrite ব্যবহার করতে পারেন

গতি সনাক্ত করার কৌশল মোটামুটি সোজা এগিয়ে:

  1. নিম্ন রেজোলিউশনের ফ্রেমে কাজ করুন - এখানে ফুল এইচডি চালানোর দরকার নেই
  2. আরও, যতটা সম্ভব কম শব্দ নিশ্চিত করার জন্য ছবিগুলি অস্পষ্ট করুন।
  3. শেষ N ফ্রেমের চলমান গড় রাখুন। এই অ্যাপ্লিকেশনের জন্য, যেখানে ফ্রেম রেট প্রায় 1 FPS (শুধুমাত্র কারণ TensorFlow প্রতি ফ্রেমে কিছু সময় নেয়), আমি দেখেছি যে N = 60 ভাল ফলাফল দেয়। এবং যেহেতু একটি সাবধানে বাস্তবায়ন বেশি ফ্রেম সহ আরো CPU গ্রহণ করে না যা ঠিক আছে (এটি আরও মেমরি নেয় - কিন্তু যখন আমরা নিম্ন রেজোলিউশন ফ্রেমের সাথে কাজ করি তখন তা নগণ্য)
  4. চলমান গড় থেকে বর্তমান চিত্রটি বিয়োগ করুন (শুধু টাইপিংয়ের ক্ষেত্রে সতর্ক থাকুন - আপনাকে ইতিবাচক এবং নেতিবাচক মান [-255.. 255] এর জন্য অনুমতি দিতে হবে, তাই ফ্রেমটিকে int তে রূপান্তর করতে হবে)
  5. আপনি ফ্রেমের ধূসর-স্কেল রূপান্তর (এবং গড়) -এ বিয়োগ করতে পারেন, অথবা প্রতিটি RGB চ্যানেলের জন্য আলাদাভাবে করতে পারেন এবং তারপর ফলাফলগুলিকে একত্রিত করতে পারেন (যে কৌশলটি আমি বেছে নিয়েছি, এটি রঙ পরিবর্তনের জন্য সংবেদনশীল করে তোলে)
  6. ব -দ্বীপে একটি থ্রেশহোল্ড ব্যবহার করুন এবং ক্ষয় এবং প্রসারণ দ্বারা শব্দ সরান
  7. অবশেষে একটি ব -দ্বীপযুক্ত অঞ্চলগুলির রূপরেখা সন্ধান করুন - এই অঞ্চলগুলি যেখানে গতি ঘটেছে এবং বর্তমান চিত্রটি আগের চিত্রগুলির গড় থেকে আলাদা। প্রয়োজনে আমরা এই কনট্যুরগুলির জন্য বাউন্ডিং বাক্সগুলি খুঁজে পেতে পারি।

আমি ডেল্টাফাইন্ডার পাইথন ক্লাসে এটি করার জন্য কোডটি এনক্যাপসুলেট করেছি যা আপনি এখানে আমার গিথুব এ খুঁজে পেতে পারেন

ধাপ 7: TensorFlow ব্যবহার করে বস্তু সনাক্ত করুন

আপনি যদি TensorFlow ইনস্টলেশন পদ্ধতি অনুসরণ করে থাকেন, আপনি ইতিমধ্যে পরীক্ষা করেছেন যে আপনার TensorFlow ইনস্টল এবং কাজ করছে।

সাধারণ বাইরের দৃশ্যে মানুষ শনাক্ত করার উদ্দেশ্যে, COCO ডেটা সেটে প্রাক -প্রশিক্ষিত মডেলগুলি বেশ ভাল কাজ করে - যা ঠিক TensorFlow ইনস্টলেশনের শেষে আমরা যে মডেলটি ডাউনলোড করেছি। আমাদের শুধু অনুমানের জন্য এটি ব্যবহার করতে হবে!

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

ধাপ 8: রাস্পবেরি পাইতে একটি ওয়েব সার্ভার সেট আপ করুন

রাস্পবেরি পাইতে একটি ওয়েব সার্ভার সেট আপ করুন
রাস্পবেরি পাইতে একটি ওয়েব সার্ভার সেট আপ করুন

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

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

আমি এটি একটি নতুন ভার্চুয়ালেনভে ইনস্টল করার পরামর্শ দিচ্ছি, তাই:

pi@raspberrypi: ~ $ mkvirtualenv webserv

(webserv) pi@raspberrypi: ~ $ pip install Flask

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

ফ্লাস্ক দ্রুত শুরু নির্দেশিকা অনুসরণ করে আপনার ইনস্টলেশন পরীক্ষা করুন

ধাপ 9: IFTTT ব্যবহার করে রাস্পবেরি পাই থেকে মোবাইল বিজ্ঞপ্তি

IFTTT ব্যবহার করে রাস্পবেরি পাই থেকে মোবাইল বিজ্ঞপ্তি
IFTTT ব্যবহার করে রাস্পবেরি পাই থেকে মোবাইল বিজ্ঞপ্তি

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

এটি কীভাবে করা যায় তা এখানে:

  1. Ifttt.com এ একটি IFTTT অ্যাকাউন্ট তৈরি করুন
  2. লগ ইন করার সময়, ওয়েবহুক পরিষেবা সেটিংস পৃষ্ঠায় যান এবং আপনার ব্রাউজারে ইউআরএল লিখুন (https://maker.ifttt.com/use/ এর মতো কিছু। সেই ওয়েব পেজটি আপনাকে আপনার কী এবং ইউআরএল দেখাবে যাতে ক্রিয়াগুলি ট্রিগার করতে পারে ।
  3. একটি IFTTT অ্যাপলেট তৈরি করুন যা ইভেন্টের বিশদ বিবরণের সাথে ওয়েবহুক ট্রিগার করার সময় একটি মোবাইল বিজ্ঞপ্তি তৈরি করবে:

    1. "আমার অ্যাপলেটস" এবং তারপরে "নতুন অ্যাপলেট" ক্লিক করুন।
    2. "+এই" ক্লিক করুন এবং "ওয়েবহুকস" নির্বাচন করুন। বিস্তারিত জানার জন্য "একটি ওয়েব অনুরোধ গ্রহণ করুন" ক্লিক করুন
    3. আপনার ইভেন্টের একটি নাম দিন, যেমন "PoolEvent" এবং "ট্রিগার তৈরি করুন" এ ক্লিক করুন
    4. "+যে" ক্লিক করুন এবং "বিজ্ঞপ্তি" নির্বাচন করুন। তারপর "IFTTT অ্যাপ থেকে একটি সমৃদ্ধ বিজ্ঞপ্তি পাঠান" নির্বাচন করুন
    5. "শিরোনাম" এর জন্য "পুলপি" এর মতো কিছু চয়ন করুন
    6. "বার্তা" এর জন্য "পুল পাই সনাক্ত করা হয়েছে" লিখুন এবং "উপাদান যুক্ত করুন" ক্লিক করুন.. "মান 1"।
    7. আপনি যে ধাপে কপি করেছেন সেই ইউআরএলে ফিরে যান। এটি আপনার নতুন তৈরি অ্যাপলেটকে আহ্বান করার জন্য ইউআরএল ব্যবহার করবে। সেই URL টি অনুলিপি করুন, প্লেসহোল্ডার {event} কে ইভেন্টের নাম দিয়ে প্রতিস্থাপন করুন (উদাহরণস্বরূপ PoolEvent)
  4. আপনার মোবাইল ডিভাইসের জন্য IFTTT অ্যাপটি ডাউনলোড, ইনস্টল এবং লগইন করুন
  5. এটি কাজ করার জন্য আপনার রাস্পবেরি পাইতে এই পাইথন স্ক্রিপ্টটি চালান (মনে রাখবেন এটি আপনার মোবাইল ডিভাইসে ট্রিগার করতে কয়েক সেকেন্ড বা মিনিট সময় নিতে পারে):

আমদানি অনুরোধ

request.post ('https://maker.ifttt.com/trigger/PoolEvent/with/key/', json = {"value1": "Hello Notifications"})

ধাপ 10: রাস্পবেরি পাইতে একটি রিলে HAT যুক্ত করুন এবং এটি একটি সোলেনয়েড ভালভের সাথে সংযুক্ত করুন

রাস্পবেরি পাইতে একটি রিলে এইচএটি যুক্ত করুন এবং এটি একটি সোলেনয়েড ভালভের সাথে সংযুক্ত করুন
রাস্পবেরি পাইতে একটি রিলে এইচএটি যুক্ত করুন এবং এটি একটি সোলেনয়েড ভালভের সাথে সংযুক্ত করুন
রাস্পবেরি পাইতে একটি রিলে এইচএটি যুক্ত করুন এবং এটি একটি সোলেনয়েড ভালভের সাথে সংযুক্ত করুন
রাস্পবেরি পাইতে একটি রিলে এইচএটি যুক্ত করুন এবং এটি একটি সোলেনয়েড ভালভের সাথে সংযুক্ত করুন
রাস্পবেরি পাইতে একটি রিলে এইচএটি যুক্ত করুন এবং এটি একটি সোলেনয়েড ভালভের সাথে সংযুক্ত করুন
রাস্পবেরি পাইতে একটি রিলে এইচএটি যুক্ত করুন এবং এটি একটি সোলেনয়েড ভালভের সাথে সংযুক্ত করুন

এই ধাপে এগিয়ে যাওয়ার আগে আপনার রাস্পবেরি পাই বন্ধ করুন: এটিতে ssh এবং "এখনই সুডো শাটডাউন" টাইপ করুন, তারপরে এটিকে বিদ্যুৎ থেকে বিচ্ছিন্ন করুন

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

রাস্পবেরি পাইতে যে পিনগুলি ডিজিটাল ইনপুট বা আউটপুট হিসাবে কাজ করতে পারে তাকে GPIO বলা হয় - সাধারণ উদ্দেশ্য ইনপুট/আউটপুট এবং সেগুলি পাই এর পাশে 40 পিনের সারি। পাই বন্ধ করে এবং রিলে HAT এর সাথে দৃly়ভাবে োকান। আমি যে HAT চয়ন করেছি তাতে 3 টি রিলে রয়েছে এবং আমরা সেগুলির মধ্যে একটি ব্যবহার করব। অন্য দুজনের সাথে আপনি যা করতে পারেন তা কল্পনা করুন:)

এখন রাস্পবেরি পাই আবার চালু করুন। রিলে HAT- এ লাল "পাওয়ার" LED চালু হওয়া উচিত, এটি নির্দেশ করে যে এটি GPIO এর মাধ্যমে Pi থেকে বিদ্যুৎ পাচ্ছে। আসুন পরীক্ষা করি যে আমরা এটি নিয়ন্ত্রণ করতে পারি: আবার পাইতে ssh, পাইথন লিখুন এবং টাইপ করুন:

gpiozero আমদানি করুন

dev = gpiozero. DigitalOutputDevice (26, initial_value = True) dev.off ()

আপনার একটি শ্রুতিমধুর "ক্লিক" শুনতে হবে, যা ইঙ্গিত করে যে রিলেটি জড়িত, এবং একটি LED টার্ন দেখুন যাতে দেখা যাচ্ছে যে প্রথম রিলে সংযুক্ত অবস্থানে রয়েছে। আপনি এখন টাইপ করতে পারেন

dev.on ()

যা রিলেটিকে "অফ" পজিশনে (অদ্ভুত, আমি জানি …) এবং অজগর থেকে প্রস্থান () এ পরিণত করবে।

এখন জাম্পার কেবল ব্যবহার করে এবং দীর্ঘ তারের 24V পাওয়ার সাপ্লাই এবং সোলেনয়েড ভালভের মধ্যে রিলে সংযোগ করে। ডায়াগ্রাম দেখুন। অবশেষে, অ্যাডাপ্টার ব্যবহার করে সলিনয়েড ভালভকে একটি কল দিয়ে সংযুক্ত করুন এবং উপরের কমান্ডগুলি পুনরাবৃত্তি করে এটি পরীক্ষা করার জন্য প্রস্তুত হন - তাদের জল চালু এবং বন্ধ করা উচিত।

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

ধাপ 11: একটি ওয়াটার লেভেল সেন্সর সংযুক্ত করুন

একটি ওয়াটার লেভেল সেন্সর সংযুক্ত করুন
একটি ওয়াটার লেভেল সেন্সর সংযুক্ত করুন
একটি ওয়াটার লেভেল সেন্সর সংযুক্ত করুন
একটি ওয়াটার লেভেল সেন্সর সংযুক্ত করুন
একটি ওয়াটার লেভেল সেন্সর সংযুক্ত করুন
একটি ওয়াটার লেভেল সেন্সর সংযুক্ত করুন
একটি ওয়াটার লেভেল সেন্সর সংযুক্ত করুন
একটি ওয়াটার লেভেল সেন্সর সংযুক্ত করুন

একটি ওয়াটার লেভেল সেন্সর কেবল একটি ভাসা যা ভাসমান অবস্থায় একটি বৈদ্যুতিক সার্কিটকে সংযুক্ত করে এবং যখন এটি ভেসে ওঠে তখন এটি ভেঙে যায়। যদি আপনি এটিকে সঠিক উচ্চতায় পুলের মধ্যে ertুকিয়ে দেন তাহলে পানির স্তর পর্যাপ্ত হলে ফ্লোট উপরে উঠবে কিন্তু পর্যাপ্ত পানি না থাকলে নিচে পড়বে।

রাস্পবেরি পাইয়ের অবস্থা জানতে জলের স্তরের সেন্সরটি আমাদের একটি পাই বা খোলা বা বন্ধ সার্কিট অনুভব করার জন্য পাই প্রয়োজন। সৌভাগ্যবশত এটি খুবই সহজ: রিলে নিয়ন্ত্রণের জন্য যে ডিজিটাল আউটপুট হিসেবে আমরা ব্যবহার করি সেই একই GPIO সংযোগকারী ইনপুট হিসেবে কাজ করতে পারে (অতএব GPIO তে I)। বিশেষ করে, যদি আমরা GPIO সংযোগকারীতে সেন্সরের একটি তারকে +3.3V এবং অন্য সেন্সর তারকে একটি পিনে সংযুক্ত করি যা আমরা পুল-ডাউন ইনপুট হিসাবে কনফিগার করি (অর্থাত এটি সাধারণত GND ভোল্টেজ স্তরে থাকবে), সেই পিনটি পরিমাপ করবে একটি ডিজিটাল "হাই" বা "অন" ভোল্টেজ তখনই যখন ওয়াটার লেভেল সেন্সর সার্কিট বন্ধ করে - যখন পানির লেভেল কম থাকে। আমি GPIO পিন 16 ইনপুট হিসাবে ব্যবহার করেছি, যা আমি উপরের ছবিতে চিহ্নিত করেছি।

পিনটিকে ইনপুট হিসাবে কনফিগার করার জন্য এবং তার বর্তমান অবস্থা পরীক্ষা করার জন্য পাইথন কোড হল:

gpiozero আমদানি করুন

level_input = gpiozero. Button (16) water_low = level_input.is_pressed

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

ধাপ 12: এটি একসাথে বাঁধার জন্য কোড লিখুন

এটা সব একসাথে টাই কোড লিখুন
এটা সব একসাথে টাই কোড লিখুন

এটাই. আমাদের সেটআপ সম্পূর্ণ। আপনি একটি সম্পূর্ণ সিস্টেমে জিনিসগুলিকে একসাথে বাঁধতে আপনার নিজের কোড লিখতে পারেন, অথবা আমার দেওয়া কোডটি ব্যবহার করতে পারেন। এটি করার জন্য কেবল ডিরেক্টরি কাঠামো তৈরি করুন এবং সংগ্রহস্থলের ক্লোন করুন, যেমন:

mkdir পুলপি

সিডি পুলপি গিট ক্লোন

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

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

  1. আমাদের তিনটি প্রোগ্রাম চালান: অবজেক্ট ডিটেক্টর, ওয়াটার লেভেল সেন্সর এবং ওয়েব সার্ভার প্রতিটি রিবুটে
  2. আউটপুট ডাইরেক্টরি পরিষ্কার করুন, পুরানো ছবি এবং পুরানো ভিডিও ফাইল মুছে দিন (আমি 1 দিনের পুরানো ফাইল এবং 7 দিনের পুরানো ছবিগুলি মুছে ফেলার সিদ্ধান্ত নিয়েছি - নির্দ্বিধায় পরীক্ষা করুন)

এটি করতে crontab -e টাইপ করুন যা আপনার ন্যানো টেক্সট এডিটর খুলবে। ফাইলের নীচে নিম্নলিখিত লাইন যোগ করুন:

0 1 * * */home/pi/poolpi/output -type f -name " *.avi" -mtime +1 -delete

0 2 * * * find/home/pi/poolpi/output -type f -name " *.jpg" -mtime +7 -delete @reboot python3 /home/pi/poolpi/motion_alert/webserv/webserv.py @reboot python3 /home/pi/poolpi/motion_alert/motion_obj_alert.py @reboot python3 /home/pi/poolpi/water_level/test_water_level.py

অবশেষে, আপনার রাস্পবেরি পাই পুনরায় বুট করুন। এটি এখন আপনার পুলকে পূর্ণ এবং নিরাপদ রাখতে প্রস্তুত।

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

সুখী করা!

আইওটি চ্যালেঞ্জ
আইওটি চ্যালেঞ্জ
আইওটি চ্যালেঞ্জ
আইওটি চ্যালেঞ্জ

আইওটি চ্যালেঞ্জে রানার আপ

প্রস্তাবিত: