সুচিপত্র:

রাস্পবেরি এবং ক্লাউড 4 আরপিআই দিয়ে DIY হাউস মনিটরিং: 5 টি ধাপ
রাস্পবেরি এবং ক্লাউড 4 আরপিআই দিয়ে DIY হাউস মনিটরিং: 5 টি ধাপ

ভিডিও: রাস্পবেরি এবং ক্লাউড 4 আরপিআই দিয়ে DIY হাউস মনিটরিং: 5 টি ধাপ

ভিডিও: রাস্পবেরি এবং ক্লাউড 4 আরপিআই দিয়ে DIY হাউস মনিটরিং: 5 টি ধাপ
ভিডিও: Raspberry Pi 4 Hands-On [Bangla] 2024, নভেম্বর
Anonim
রাস্পবেরিপিআই এবং ক্লাউড 4 আরপিআই দিয়ে DIY হাউস মনিটরিং
রাস্পবেরিপিআই এবং ক্লাউড 4 আরপিআই দিয়ে DIY হাউস মনিটরিং

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

আমার চারপাশে বেশ কয়েকটি রাস্পবেরি পাই এবং একটি থার্মাল সেন্সর ছিল, তাই আমি ভাবলাম - কেন আমি একটি সাধারণ পর্যবেক্ষণ ডিভাইস তৈরি করব না? নীচের নির্দেশাবলী অনুমান করে যে আপনার কাছে রাস্পবিয়ান এবং নেটওয়ার্ক সংযোগ স্থাপনের সাথে একটি রাস্পবেরি পাই রয়েছে। আমার ক্ষেত্রে এটি রাস্পবেরি (2018–06–27-রাস্পবিয়ান-স্ট্রেচ-লাইট) সহ রাস্পবেরি পাই বি+।

ধাপ 1: তাপমাত্রা পর্যবেক্ষণ

তাপমাত্রা পর্যবেক্ষণ
তাপমাত্রা পর্যবেক্ষণ
তাপমাত্রা পর্যবেক্ষণ
তাপমাত্রা পর্যবেক্ষণ

কিভাবে একটি DS18B20 তাপমাত্রা সেন্সর সংযুক্ত করবেন? এটি কীভাবে করবেন তা কেবল গুগল করুন এবং আপনি এর মতো অনেকগুলি ছবি দেখতে পাবেন:

আমার ক্ষেত্রে আমার কালো, হলুদ এবং লাল তার ছিল। কালোটি স্থল, গ্রাউন্ড পিনে যায়, লালটি শক্তি - 3.3v পিনে যায়, এবং হলুদটি ডেটা - GPIO4 পিনে যেতে হবে, 4.7 kOm রোধের সাথে ডেটা এবং পাওয়ারের মধ্যে সংযুক্ত। নোট, আপনি বেশ কয়েকটি সেন্সর সংযুক্ত করতে পারেন সমান্তরালে (তারা ডিজিটাল, এবং বিভিন্ন ঠিকানা আছে), আপনি শুধুমাত্র একটি প্রতিরোধক প্রয়োজন। আপনার সেন্সর সংযুক্ত করার পরে, আপনার রাস্পি-কনফিগারে 1Wire সক্ষম করা উচিত:

sudo raspi-config

5 ইন্টারফেসিং বিকল্পগুলিতে যান, P7 1-Wire সক্ষম করুন এবং পুনরায় বুট করুন।

তারপর আপনি পরীক্ষা করতে পারেন যদি আপনি সেন্সর দেখতে পারেন:

sudo modprobe w1-gpiosudo modprobe w1-thermls/sys/bus/w1/devices/

আপনি এই মত কিছু দেখতে হবে:

pi@vcontrol: ~ $ ls/sys/bus/w1/devices/28–00044eae2dff w1_bus_master1

28–00044eae2dff আমাদের তাপমাত্রা সেন্সর।

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

আমি একটি সাধারণ সার্ভার তৈরি করতে পারি, একটি হোস্টিং পেতে পারি এবং সবকিছু সেট আপ করতে পারি, কিন্তু আন্তরিকভাবে, আমি চাই না। সৌভাগ্যবশত, কেউ ইতিমধ্যেই এই সম্পর্কে চিন্তা করেছেন এবং তৈরি করেছেন cloud4rpi.io - আপনার ডিভাইসের জন্য একটি ক্লাউড কন্ট্রোল প্যানেল।

ধাপ 2: Cloud4Rpi.io সেট আপ করা

Cloud4Rpi.io সেট আপ করা হচ্ছে
Cloud4Rpi.io সেট আপ করা হচ্ছে

Cloud4Rpi একটি পরিষেবা প্রদান করে যা আপনার ডিভাইসকে MQTT বা HTTP প্রোটোকল ব্যবহার করে ডেটা পাঠাতে এবং গ্রহণ করতে দেয়। পাইথনের জন্য তাদের একটি ক্লায়েন্ট লাইব্রেরি আছে, তাই আমি পাইথন ব্যবহার করব।

ক্লাউড 4 আরপিআই পরিষেবার সাথে পাইথনের উদাহরণ ইতিমধ্যে DS18B20 টেম্প সেন্সরের কোড রয়েছে।

তাই আমি https://cloud4rpi.io এ গিয়েছিলাম, একটি অ্যাকাউন্ট তৈরি করেছি এবং সেখানে একটি নতুন ডিভাইস যুক্ত করেছি। ডিভাইসের পৃষ্ঠায় একটি টোকেন রয়েছে - একটি স্ট্রিং যা ডিভাইসটিকে চিহ্নিত করে, এবং যা ডেটা প্রেরণকারী প্রোগ্রামে নির্দিষ্ট করা উচিত।

শুরুতে, একটি প্যাকেজ ম্যানেজার আপডেট করা এবং প্যাকেজ আপগ্রেড করা সর্বদা একটি ভাল ধারণা (দ্রষ্টব্য: আপনি যদি কিছু সময়ের জন্য আপগ্রেড না করেন তবে এটি কয়েক ঘন্টা সময় নিতে পারে):

sudo apt-get update && sudo apt-get upgrade

তারপরে, গিট, পাইথন এবং এর প্যাকেজ ম্যানেজার পিপ ইনস্টল করুন:

sudo apt-get git python python-pip ইনস্টল করুন

তারপর, cloud4rpi পাইথন লাইব্রেরি ইনস্টল করুন:

sudo pip install cloud4rpi

অবশেষে, আমি আমার নিয়ন্ত্রণ প্রোগ্রাম লিখতে প্রস্তুত। আমি https://github.com/cloud4rpi/cloud4rpi-raspberrypi… এ উপলব্ধ উদাহরণ থেকে শুরু করি

git clone https://github.com/cloud4rpi/cloud4rpi-raspberrypi… cloud4rpicd cloud4rpi

প্রধান প্রোগ্রাম ফাইলটি control.py - আমার প্রয়োজনে এটি পরিবর্তন করতে হবে। প্রথমে, প্রোগ্রামটি সম্পাদনা করুন এবং একটি টোকেন পেস্ট করুন:

sudo ন্যানো control.py

DEVICE_TOKEN = '…'] একটি লাইন খুঁজুন এবং সেখানে একটি ডিভাইস টোকেন নির্দিষ্ট করুন। তারপরে আমি কেবল প্রোগ্রামটি চালাতে পারি: এটি কাজ করে এবং রুমটেম্প ভেরিয়েবলের তাপমাত্রা প্রতিবেদন করে:

sudo পাইথন control.py

এটি কাজ করে এবং রুমটেম্প ভেরিয়েবলের তাপমাত্রা রিপোর্ট করে।

লক্ষ্য করুন যে এটি সমস্ত ওয়ানওয়াইয়ার ds18b20 সেন্সর আবিষ্কার করে

ds_sensors = ds18b20. DS18B20.find_all ()

এবং প্রথম পাওয়া সেন্সর ব্যবহার করে:

RoomTemp ': {' type ':' numeric ',' bind ': ds_sensors [0] যদি ds_sensors অন্য কেউ না}

ঠিক আছে, এটি সহজ ছিল, কারণ নমুনা প্রোগ্রামে রাস্পবেরি পাইতে ds18b20 সেন্সরের সাথে কাজ করার জন্য প্রয়োজনীয় সবকিছু রয়েছে। এখন আমাকে পাওয়ার স্ট্যাটাস রিপোর্ট করার উপায় খুঁজে বের করতে হবে।

ধাপ 3: ইউপিএস মনিটরিং

ইউপিএস মনিটরিং
ইউপিএস মনিটরিং

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

আমার ইউএসবি কন্ট্রোল সহ একটি এপিসি ইউপিএস আছে, তাই আমি দ্রুত গুগল করে দেখেছি যে আমার অ্যাপকুপসডি দরকার। https://www.anites.com/2013/09/monitoring-ups.html… আমি apt-get এর মাধ্যমে এটি ইনস্টল করার জন্য বেশ কয়েকবার চেষ্টা করেছি, এবং এটি বিভিন্ন কারণে আমার জন্য কাজ করছে না। আমি দেখাবো কিভাবে উৎস থেকে এটি ইনস্টল করতে হয়।

wget https://sourceforge.net/projects/apcupsd/files/ap…tar xvf apcupsd-3.14.14.tar.gz cd apcupsd-3.14.14./configure --enable-usb sudo make sudo make install

তারপরে আমি ইউএসবি এর মাধ্যমে আমার ইউপিএসের সাথে সংযোগ স্থাপনের জন্য apcupsd.conf সম্পাদনা করি।

sudo nano /etc/apcupsd/apcupsd.conf# #UPSCABLE smart UPSCABLE usb ##UPSTYPE apcsmart #DEVICE/dev/ttyS0 UPSTYPE usb DEVICE

এখন আমি ইউপিএস থেকে রাস্পবেরীপিআইতে ইউএসবি কেবল প্লাগ করতে পারি এবং ইউপিএস পাওয়া যাবে কিনা তা পরীক্ষা করতে পারি।

sudo apctest

এটি আপনাকে কোন ত্রুটি বার্তা দেওয়া উচিত নয়।

এখন sevice apcupsd শুরু করা উচিত:

sudo systemctl শুরু apcupsd

ইউপিএস স্ট্যাটাস জিজ্ঞাসা করতে আমি একটি স্ট্যাটাস কমান্ড ব্যবহার করতে পারি:

sudo /etc/init.d/apcupsd স্ট্যাটাস

এবং এটি এরকম কিছু আউটপুট করবে:

APC: 001, 035, 0855DATE: 2018-10-14 16:55:30 +0300 HOSTNAME: vcontrol VERSION: 3.14.14 (31 May 2016) ডেবিয়ান UPSNAME: vcontrol CABLE: USB Cable Driver: USB UPS Driver UPSMODE: একা থাকুন স্টার্টটাইম: 2018-10-14 16:54:28 +0300 মডেল: ব্যাক-ইউপিএস এক্সএস 650 সিআই স্ট্যাটাস: অনলাইন লাইনভ: 238.0 ভোল্ট লোডপিসিটি: 0.0 শতাংশ ব্যাচারেজ: 100.0 শতাংশ টাইমলেফট: 293.3 মিনিট এমবিএটিটিএইচজি: 5 শতাংশ মিনিট: 3 মিনিট সর্বোচ্চ: 3 মিনিট 0 সেকেন্ড সেনসেন্স: মাঝারি লোট্রানস: 140.0 ভোল্ট হিট্রানস: 300.0 ভোল্ট অ্যালার্মডেল: 30 সেকেন্ড ব্যাটটিভি: 14.2 ভোল্ট লাস্টক্সফার: টার্নন NUMXFERS এর পর থেকে কোন স্থানান্তর নেই: 0 টনব্যাট: 0 সেকেন্ড কমোনব্যাট: 0 সেকেন্ড XOFFBATT: NAT024: N/A024: 2014-06-10 NOMINV: 230 Volts NOMBATTV: 12.0 Volts Nomower: 390 Watts Firmware: 892. R3। I USB FW: R3 END APC: 2018-10-14 16:55:38 +0300

আমার একটি স্ট্যাটাস দরকার - যা "স্ট্যাটাস:" লাইন।

ক্লাউড 4 আরপিআই লাইব্রেরিতে একটি মডিউল রয়েছে 'rpy.py' যা হোস্টনাম বা সিপিইউ তাপমাত্রার মতো রাস্পবেরি পাই সিস্টেম প্যারামিটার প্রদান করে। যেহেতু এই সমস্ত প্যারাম কিছু কমান্ড এবং পার্সিং আউটপুট চালানোর ফলাফল, এতে একটি সহজ 'পার্স_আউটপুট' ফাংশনও রয়েছে যা ঠিক আমার প্রয়োজন। এইভাবে আমার ইউপিএস স্ট্যাটাস পাবেন:

def ups_status (): result = rpi.parse_output (r'STATUS / s+: / s+(S+) ', [' /etc/init.d/apcupsd ',' status ']) যদি ফলাফল: রিটার্ন ফলাফল অন্য: ফেরত 'অজ্ঞাত'

এই স্ট্যাটাসটি ক্লাউড 4 আরপিআইতে পাঠানোর জন্য, আমাকে একটি পরিবর্তনশীল ইউপিএস স্ট্যাটাস ঘোষণা করতে হবে এবং এটি আমার আপস_স্ট্যাটাস ফাংশনে আবদ্ধ করতে হবে: এখন আমি আমার প্রোগ্রামটি চালাতে পারি:

ভেরিয়েবল = {'RoomTemp': {'type': 'numeric', 'bind': ds_sensors [0]}, 'UPSStatus': {'type': 'string', 'bind': ups_status}}

এবং আমি অবিলম্বে cloud4rpi ডিভাইস পৃষ্ঠায় আমার পরিবর্তনশীল দেখতে পারি।

ধাপ 4: "উত্পাদন" এর প্রস্তুতি

"উত্পাদনের" প্রস্তুতি
"উত্পাদনের" প্রস্তুতি

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

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

ফলাফল প্রতি 5 মিনিটে ক্লাউডে পাঠানো হয়, এবং ডায়াগনস্টিক তথ্য - প্রতি ঘন্টা।

# ConstantsDATA_SENDING_INTERVAL = 300 # সেকেন্ড DIAG_SENDING_INTERVAL = 3600 # সেকেন্ড POLL_INTERVAL = 1 # সেকেন্ড

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

data_timer = 0diag_timer = 0 prevUPS = 'ONLINE' যখন সত্য: newUPS = ups_status () if (data_timer <= 0) অথবা (newUPS! = prevUPS): device.publish_data () data_timer = DATA_SENDING_INTERVAL prevUPS = newg = 0 device.publish_diag () diag_timer = DIAG_SENDING_INTERVAL ঘুম (POLL_INTERVAL) diag_timer -= POLL_INTERVAL data_timer -= POLL_INTERVAL

পরীক্ষা: রান স্ক্রিপ্ট:

sudo পাইথন control.py

এবং আমি আমার ডিভাইস পৃষ্ঠায় ইউপিএস অবস্থা দেখতে পারি।

যদি আমি ইউপিএস পাওয়ার বন্ধ করি, কয়েক সেকেন্ডের মধ্যে স্ট্যাটাস পরিবর্তন হয়, তাই সবকিছু কাজ করছে এখন সিস্টেম স্টার্টআপে আমার apcupsd এবং আমার control.py শুরু করতে হবে। Apcupsd পরিষেবা পুরানো এবং এটি আধুনিক রাস্পবিয়ানে শুরু করার জন্য, আমি /etc/init.d/apcupsd ফাইলটি সংশোধন করা উচিত, এই লাইনগুলিকে উপরে কোথাও যুক্ত করে:

### ইনগিট ইনফো শুরু করুন # প্রদান করে: apcupsd # প্রয়োজনীয়-শুরু: $ all # প্রয়োজনীয়-স্টপ: # ডিফল্ট-শুরু: 2 3 4 5 # ডিফল্ট-স্টপ: # সংক্ষিপ্ত বিবরণ: APC UPS ডেমন … ### শেষ INIT তথ্য#

তারপরে পরিষেবাটি সক্ষম করুন:

sudo systemctl apcupsd সক্ষম করুন

তারপর পরিষেবা শুরু করুন:

sudo systemctl শুরু apcupsd

এখন সিস্টেম স্টার্টআপে apcupsd শুরু হবে।

একটি পরিষেবা হিসাবে control.py ইনস্টল করার জন্য, আমি সরবরাহকৃত service_install.sh স্ক্রিপ্ট ব্যবহার করেছি:

sudo bash service_install.sh cloud/cloud4rpi/control.py

এখন পরিষেবা শুরু হয়েছে এবং এটি একটি রিবুট থেকে বেঁচে যাবে।

ধাপ 5: একটি কন্ট্রোল প্যানেল সেট আপ করা

একটি কন্ট্রোল প্যানেল স্থাপন
একটি কন্ট্রোল প্যানেল স্থাপন

Cloud4rpi আমাকে আমার ডিভাইসের জন্য একটি কন্ট্রোল প্যানেল সেট আপ করতে দেয়। আপনি "উইজেট" যোগ করতে পারেন এবং সেগুলিকে ডিভাইসের ভেরিয়েবলের সাথে আবদ্ধ করতে পারেন।

আমার ডিভাইস দুটি পঠনযোগ্য ভেরিয়েবল প্রদান করে - রুমটেম্প এবং ইউপিএস স্ট্যাটাস:

ভেরিয়েবল = {'RoomTemp': {'type': 'numeric', 'bind': ds_sensors [0]}, 'UPSStatus': {'type': 'string', 'bind': ups_status}}

আমি 3 টি উইজেট যোগ করেছি - রুম টেম্পের জন্য নম্বর, ইউপিএস স্ট্যাটাসের জন্য টেক্সট এবং রুম টেম্পের জন্য একটি চার্ট।

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

প্রস্তাবিত: