সুচিপত্র:

আলেক্সা এবং রাস্পবেরি পাই সহ লিভিং রুম নিয়ন্ত্রণ করুন: 12 টি ধাপ
আলেক্সা এবং রাস্পবেরি পাই সহ লিভিং রুম নিয়ন্ত্রণ করুন: 12 টি ধাপ

ভিডিও: আলেক্সা এবং রাস্পবেরি পাই সহ লিভিং রুম নিয়ন্ত্রণ করুন: 12 টি ধাপ

ভিডিও: আলেক্সা এবং রাস্পবেরি পাই সহ লিভিং রুম নিয়ন্ত্রণ করুন: 12 টি ধাপ
ভিডিও: সবচেয়ে ছোট কম্পিউটার Raspberry Pi 3 Model B+ Full Setup 2024, নভেম্বর
Anonim
আলেক্সা এবং রাস্পবেরি পাই সহ লিভিং রুম নিয়ন্ত্রণ করুন
আলেক্সা এবং রাস্পবেরি পাই সহ লিভিং রুম নিয়ন্ত্রণ করুন

আলেক্সা (অ্যামাজন ইকো বা ডট) এবং রাস্পবেরি পাই জিপিআইও দিয়ে আপনার লিভিং রুমের টিভি, লাইট এবং ফ্যান নিয়ন্ত্রণ করুন।

ধাপ 1: প্রাথমিক সেটআপ

আমি একটি রাস্পবেরি পাই 2 ব্যবহার করেছি এবং একটি রাস্পবিয়ান জেসি ছবি ডাউনলোড করেছি https://www.raspberrypi.org/downloads/raspbian/ থেকে

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

sudo apt-get update && sudo apt-get upgrade -ysudo apt-get python2.7-dev python-dev python-pip sudo pip install Flask flask-ask sudo apt-get install lirc

ধাপ 2: Ngrok সেটআপ করুন

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

Https://ngrok.com/download এ যান এবং হোম ডাইরেক্টরির ভিতরে একটি জিপ এবং আনজিপ হিসাবে সর্বশেষ লিনাক্স এআরএম রিলিজ পান:

unzip /home/pi/ngrok-stable-linux-arm.zip

একটি নতুন টার্মিনাল খুলুন এবং নিম্নলিখিত কমান্ডটি প্রবেশ করুন:

sudo./ngrok http 4000

আরেকটি নতুন টার্মিনাল খুলুন এবং নিম্নলিখিত কমান্ডটি প্রবেশ করুন:

sudo./ngrok http 4500

তৃতীয় নতুন টার্মিনাল খুলুন এবং নিম্নলিখিত কমান্ডটি প্রবেশ করুন:

sudo./ngrok http 5000

ধাপ 3: হালকা সুইচ নিয়ন্ত্রণের জন্য পাইথন স্ক্রিপ্ট

একটি নতুন টার্মিনাল সেশন খুলুন এবং light_control.py নামে একটি নতুন পাইথন ফাইল তৈরি করুন:

ন্যানো light_control.py

নতুন ফাইলটিতে নিম্নলিখিত কোডটি অনুলিপি/আটকান:

ফ্লাস্ক আমদানি থেকে ফ্লাস্ক flask_ask আমদানি জিজ্ঞাসা করুন, বিবৃতি, convert_errors RPi. GPIO আমদানি করুন যেমন GPIO আমদানি লগিং আমদানি os GPIO.setmode (GPIO. BCM) অ্যাপ = ফ্লাস্ক (_ নাম_) জিজ্ঞাসা = জিজ্ঞাসা (অ্যাপ, '/') logging.getLogger (" flask_ask ")। setLevel (logging. DEBUG) @ask.intent ('LightControlIntent', mapping = {'status': 'status'}) def light_control (status): try: pinNum = 27 ব্যতিক্রম ব্যতীত e: return statement (পিন নম্বর বৈধ নয়।) GPIO.setup (pinNum, GPIO. OUT) যদি ['on', 'high'] এ স্থিতি থাকে: GPIO.output (pinNum, GPIO. LOW) যদি ['off', ' কম ']: GPIO.output (pinNum, GPIO. HIGH) রিটার্ন স্টেটমেন্ট (' বাঁকানো {} লিভিং রুমের আলো '। ফরম্যাট (অবস্থা)) যদি _name_ ==' _main_ ': port = 4000 app.run (host =' 0.0.0.0 ', পোর্ট = পোর্ট)

সংরক্ষণ করুন এবং ফাইলটি বন্ধ করুন।

ফ্লাস্ক সার্ভার দিয়ে শুরু করুন:

sudo পাইথন light_control.py

উভয় ngrok এবং light_control.py চলমান ছেড়ে দিন

ধাপ 4: ফ্যান নিয়ন্ত্রণের জন্য পাইথন স্ক্রিপ্ট

একটি নতুন টার্মিনাল সেশন খুলুন এবং fan_control.py নামে একটি নতুন পাইথন ফাইল তৈরি করুন:

ন্যানো fan_control.py

নতুন ফাইলটিতে নিম্নলিখিত কোডটি অনুলিপি/আটকান:

ফ্লাস্ক আমদানি ফ্লাস্ক থেকে

flask_ask আমদানি থেকে জিজ্ঞাসা, বিবৃতি, convert_errors RPi. GPIO আমদানি করে GPIO আমদানি লগিং আমদানি os GPIO.setmode (GPIO. BCM) অ্যাপ = ফ্লাস্ক (_ name_) জিজ্ঞাসা = জিজ্ঞাসা (অ্যাপ, '/') logging.getLogger ("flask_ask").setLevel (logging. DEBUG) @ask.intent ('FanControlIntent', mapping = {'status': 'status'}) def fan_control (status): try: pinNum = 22 ব্যতিক্রম ব্যতীত e: return statement ('pin number বৈধ নয়। ') GPIO.setup (pinNum, GPIO. OUT) যদি স্ট্যাটাস [' on ',' high ']: GPIO.output (pinNum, GPIO. LOW) যদি স্ট্যাটাস [' off ',' low ']: GPIO.output (pinNum, GPIO. HIGH) রিটার্ন স্টেটমেন্ট ('বাঁকানো {} লিভিং রুমের আলো'। ফরম্যাট (স্ট্যাটাস)) যদি _name_ == '_main_': port = 4500 app.run (host = '0.0.0.0 ', পোর্ট = পোর্ট)

সংরক্ষণ করুন এবং ফাইলটি বন্ধ করুন।

ফ্লাস্ক সার্ভার দিয়ে শুরু করুন:

sudo পাইথন fan_control.py

Ngrok, light_control.py, এবং fan_control.py উভয়ই চলতে থাকুন

ধাপ 5: LIRC প্যাকেজ ইনস্টল এবং কনফিগার করা

টিভি নিয়ন্ত্রণ করার জন্য আপনাকে অবশ্যই আপনার নির্দিষ্ট টিভির জন্য ইনফ্রারেড (IR) সিগন্যাল তৈরির জন্য রাস্পবেরি পাইতে একটি পিন কনফিগার করতে হবে। টার্মিনাল খুলুন এবং একটি LIRC প্যাকেজ ইনস্টল করার জন্য নিম্নলিখিত কমান্ডটি প্রবেশ করুন যা অনেক রিমোট কন্ট্রোলের ইনফ্রারেড সিগন্যাল অনুকরণ করে।

sudo apt-get lirc ইনস্টল করুন

পরবর্তী, আপনাকে lirc_rpi কার্নেল মডিউল সক্ষম এবং কনফিগার করতে হবে। এটি করার জন্য, ন্যানো এডিটরে মডিউল খুলুন

সুডো ন্যানো /ইত্যাদি /মডিউল

ফাইলে নীচের লাইনগুলি যোগ করুন (নিশ্চিত করুন যে gpio_out_pin প্যারামিটারটি IR LED নিয়ন্ত্রণকারী পিনের দিকে নির্দেশ করে):

lirc_devlirc_rpi gpio_out_pin = 17

পরবর্তী, ন্যানোতে হার্ডওয়্যার.কনফ ফাইলটি আগের মতোই খুলুন:

সুডো ন্যানো /etc/lirc/hardware.conf

ফাইলে নিম্নলিখিত কনফিগারেশন যুক্ত করুন:

LIRCD_ARGS = "-uinput" LOAD_MODULES = সত্য

ড্রাইভার = "ডিফল্ট"

ডিভাইস = "/dev/lirc0"

মডিউল = "lirc_rpi"

LIRCD_CONF = ""

LIRCMD_CONF = ""

এখন, রাস্পবেরি পাই পুনরায় বুট করুন:

sudo রিবুট

ধাপ 6: টিভি নিয়ন্ত্রণের জন্য পাইথন স্ক্রিপ্ট

একটি নতুন টার্মিনাল সেশন খুলুন এবং ir_control.py নামে একটি নতুন পাইথন ফাইল তৈরি করুন:

ন্যানো ir_control.py

Http://lirc-remotes.sourceforge.net/remotes-table… এ যান

আপনার টিভির সাথে সামঞ্জস্যপূর্ণ একটি রিমোট খুঁজুন। আমার ক্ষেত্রে আমার একটি সানিও টিভি আছে যা স্যানিও-টিভি 01 কনফিগ ফাইলের সাথে কাজ করে। একবার আপনি আপনার টিভি সমর্থন করে এমন একটি ফাইল খুঁজে পেলে এটি খুলুন এবং কমান্ড বিকল্পগুলি দেখুন।

নতুন ফাইলটিতে নিম্নলিখিত কোডটি কপি/পেস্ট করুন এবং আপনার টিভির সাথে কাজ করে এমন ফাইলের নাম দিয়ে sanyo-tv01 প্রতিস্থাপন করুন। এছাড়াও নিশ্চিত করুন যে টিভি কমান্ডগুলি আপনার টিভি কনফিগ ফাইল দ্বারা সমর্থিত; আপনার টিভির কনফিগ ফাইলের সাথে সঠিকভাবে কাজ করার জন্য আপনাকে KEY_POWER, KEY_VIDEO, KEY_VOLUMEUP, KEY_VOLUMEDOWN এবং KEY_MUTE কমান্ডগুলি সংশোধন করতে হতে পারে:

ফ্লাস্ক আমদানি থেকে ফ্লাস্ক flask_ask আমদানি জিজ্ঞাসা করুন, বিবৃতি, convert_errors RPi. GPIO আমদানি করুন যেমন GPIO আমদানি লগিং আমদানি os GPIO.setmode (GPIO. BCM) অ্যাপ = ফ্লাস্ক (_ নাম_) জিজ্ঞাসা = জিজ্ঞাসা (অ্যাপ, '/') logging.getLogger (" flask_ask ")। setLevel (logging. DEBUG) @ask.intent ('GPIOControlIntent', mapping = {'status': 'status'}) #'pin': 'pin'}) def tv_function (status): যদি স্ট্যাটাস থাকে ['চালু করুন']: os.system ("irsend SEND_ONCE sanyo-tv01 KEY_POWER") রিটার্ন স্টেটমেন্ট ('টিভি চালু করা') ['বন্ধ করুন'] এ এলিফ স্ট্যাটাস: os.system ("irsend SEND_ONCE sanyo-tv01 KEY_POWER ") রিটার্ন স্টেটমেন্ট ('টিভি বন্ধ করা') এলিফ স্ট্যাটাস ['চেঞ্জ ইনপুট']: os.system (" irsend SEND_ONCE sanyo-tv01 KEY_VIDEO ") os.system (" irsend SEND_ONCE sanyo-tv01 KEY_VIDEO ") রিটার্ন বক্তব্য "irsend SEND_ONCE sanyo-tv01 KEY_VOLUMEUP") os.system ("irsend SEND_ONCE sanyo-tv01 KEY_VOLUMEUP ") os.system (" irsend SEND_ONCE sanyo-tv01 KEY_VOLUMEUP ") রিটার্ন স্টেটমেন্ট ('টিভিতে ভলিউম বাড়ানো') ['ভলিউম কমানো'] এ এলিফ স্ট্যাটাস: os.system (" irsend SEND_ONCE sanyo-tv01 "KEYOWN os.system ("irsend SEND_ONCE sanyo-tv01 KEY_VOLUMEDOWN") os.system ("irsend SEND_ONCE sanyo-tv01 KEY_VOLUMEDOWN") os.system ("irsend SEND_ONCE sanyo-tv01 sanow-tOW01 KEYOWN_YOWEVEYOWN KYYEVEYOWN KYYEVEYOWN KYYEVEVEYOWN KEYYOWN KEYNOWEVEYOWN KEYOVEVEYSEYOWN COWYNOWEVEYOWN KOWYSYOWN KOWNYOWEVEYONS TOW01 KEY_VOLUMEDOWN") ") রিটার্ন স্টেটমেন্ট ('টিভিতে ভলিউম কমানো') এলিফ স্ট্যাটাস ['মিউট']: os.system (" irsend SEND_ONCE sanyo-tv01 KEY_MUTE ") রিটার্ন স্টেটমেন্ট ('মিউটিং দ্য টিভি') এলিফ স্ট্যাটাস ['আনমিউট' ']: OS সিস্টেম.run (হোস্ট = '0.0.0.0', পোর্ট = পোর্ট)

সংরক্ষণ করুন এবং ফাইলটি বন্ধ করুন।

ফ্লাস্ক সার্ভার দিয়ে শুরু করুন:

সুডো পাইথন ir_control.py

তিনটি ngrok টার্মিনাল উইন্ডো, light_control.py, fan_control.py, এবং ir_control.py চলছে

ধাপ 7: AWS অ্যাকাউন্টে লগইন করুন

AWS অ্যাকাউন্টে লগইন করুন
AWS অ্যাকাউন্টে লগইন করুন

প্রথমে আপনার AWS ডেভেলপার অ্যাকাউন্ট তৈরি করুন বা লগইন করুন এবং আপনার আলেক্সা দক্ষতার তালিকা খুলুন।

ধাপ 8: টিভি আলেক্সা দক্ষতা সেটআপ

টিভি আলেক্সা স্কিল সেটআপ
টিভি আলেক্সা স্কিল সেটআপ

"একটি নতুন দক্ষতা যোগ করুন" নির্বাচন করুন।

দক্ষতার নামটি 'ট্রিগার টিভি' এবং ইনভোকেশন নামটি শব্দ (গুলি) তে সেট করুন যা আপনি দক্ষতা সক্রিয় করতে ব্যবহার করতে চান।

অব্যাহত রাখার জন্য পরবর্তী ক্লিক করুন.

'ইন্টেন্ট স্কিমা' বক্সে নিম্নলিখিতগুলি অনুলিপি/আটকান:

"স্লট": [{"name": "status", "type": "TV_Function"}, {"name": "amount", "type": "AMAZON. NUMBER"}], "অভিপ্রায়": "GPIOControlIntent "}]}

পরবর্তী, 'স্লট টাইপ যোগ করুন' ক্লিক করুন

'Enter Type' ফিল্ডে TV_Function লিখুন।

'মানগুলি প্রবেশ করান' ক্ষেত্রে নিম্নলিখিত মানগুলি লিখুন:

চালু করা

পরিবর্তন ইনপুট বৃদ্ধি ভলিউম হ্রাস ভলিউম নিuteশব্দ বন্ধ করুন

পরবর্তী, 'নমুনা উচ্চারণ' বাক্সে নিম্নলিখিতগুলি অনুলিপি/আটকান:

GPIOControlIntent {status}

GPIOControlIntent {status} by {amount}

অব্যাহত রাখার জন্য পরবর্তী ক্লিক করুন.

সার্ভিস এন্ডপয়েন্ট টাইপ হিসেবে 'HTTPS' নির্বাচন করুন এবং একটি অঞ্চল নির্বাচন করুন। ধাপ 2 থেকে ngrok URL লিখুন এবং 'Next' ক্লিক করুন। URL এর মত কিছু হওয়া উচিত:

ed6ea04d.ngrok.io

চালিয়ে যেতে 'পরবর্তী' ক্লিক করুন এবং 'সংরক্ষণ করুন' টিপুন।

ধাপ 9: লাইট আলেক্সা স্কিল সেটআপ

লাইট আলেক্সা স্কিল সেটআপ
লাইট আলেক্সা স্কিল সেটআপ

খোলা দক্ষতা বন্ধ করুন এবং "একটি নতুন দক্ষতা যোগ করুন" নির্বাচন করুন।

দক্ষতার নাম 'লাইটস কন্ট্রোল' এবং ইনভোকেশন নাম সেট করুন সেই শব্দ (গুলি) যা আপনি দক্ষতা সক্রিয় করতে ব্যবহার করতে চান।

অব্যাহত রাখার জন্য পরবর্তী ক্লিক করুন. 'ইন্টেন্ট স্কিমা' বক্সে নিম্নলিখিতগুলি অনুলিপি/আটকান:

{

"intents": [{"" slots ": [{" name ":" status "," type ":" LIGHTS_CONTROL "}]," অভিপ্রায় ":" LightsControlIntent "}]}

পরবর্তী, 'স্লট টাইপ যোগ করুন' ক্লিক করুন।

'এন্টার টাইপ' ফিল্ডে "LIGHTS_CONTROL" লিখুন।

'মানগুলি প্রবেশ করান' ক্ষেত্রে নিম্নলিখিত মানগুলি লিখুন:

চালু

বন্ধ

পরবর্তী, 'নমুনা উচ্চারণ' বাক্সে নিম্নলিখিতগুলি অনুলিপি/আটকান:

LightsControlIntent turn {status}

অব্যাহত রাখার জন্য পরবর্তী ক্লিক করুন. সার্ভিস এন্ডপয়েন্ট টাইপ হিসাবে 'HTTPS' নির্বাচন করুন এবং একটি অঞ্চল নির্বাচন করুন। ধাপ 2 থেকে ngrok URL লিখুন এবং 'পরবর্তী' ক্লিক করুন। URL এর মত কিছু হওয়া উচিত:

ed6ea04d.ngrok.io

চালিয়ে যেতে 'পরবর্তী' ক্লিক করুন এবং 'সংরক্ষণ করুন' টিপুন।

ধাপ 10: ফ্যান আলেক্সা স্কিল সেটআপ

ফ্যান আলেক্সা স্কিল সেটআপ
ফ্যান আলেক্সা স্কিল সেটআপ

খোলা দক্ষতা বন্ধ করুন এবং "একটি নতুন দক্ষতা যোগ করুন" নির্বাচন করুন।

দক্ষতার নাম 'ফ্যান কন্ট্রোল' এবং ইনভোকেশন নাম সেট করুন সেই শব্দ (গুলি) যা আপনি দক্ষতা সক্রিয় করতে ব্যবহার করতে চান।

অব্যাহত রাখার জন্য পরবর্তী ক্লিক করুন.

'ইন্টেন্ট স্কিমা' বক্সে নিম্নলিখিতগুলি অনুলিপি/আটকান:

{

"intents": [{"slots": [{"name": "status", "type": "FAN_CONTROL"}], "অভিপ্রায়": "FANControlIntent"}]}

পরবর্তী, 'স্লট টাইপ যোগ করুন' ক্লিক করুন।

'এন্টার টাইপ' ফিল্ডে "FAN_CONTROL" লিখুন।

'মানগুলি প্রবেশ করান' ক্ষেত্রে নিম্নলিখিত মানগুলি লিখুন:

চালু

বন্ধ

পরবর্তী, 'নমুনা উচ্চারণ' বাক্সে নিম্নলিখিতগুলি অনুলিপি/আটকান:

FANControlIntent turn {status}

অব্যাহত রাখার জন্য পরবর্তী ক্লিক করুন. সার্ভিস এন্ডপয়েন্ট টাইপ হিসাবে 'HTTPS' নির্বাচন করুন এবং একটি অঞ্চল নির্বাচন করুন। ধাপ 2 থেকে ngrok URL লিখুন এবং 'পরবর্তী' ক্লিক করুন। URL এর মত কিছু হওয়া উচিত:

ed6ea04d.ngrok.io

চালিয়ে যেতে 'পরবর্তী' ক্লিক করুন এবং 'সংরক্ষণ করুন' টিপুন।

ধাপ 11: সার্কিট তৈরি করুন

সার্কিট তৈরি করুন
সার্কিট তৈরি করুন

ডায়াগ্রামে দেখানো সার্কিটটি সংযুক্ত করুন। আমি একটি JBtek 8 চ্যানেল ডিসি 5V রিলে মডিউল ব্যবহার করেছি আমার বাড়ির AC 120v লাইন এবং মাটিতে সংযোগ করতে।

ধাপ 12: আলেক্সা কমান্ড

এখন আপনার কমান্ডটি আলেক্সার সাথে কথা বলা যেতে পারে যাতে আপনি বসার ঘরটি নিয়ন্ত্রণ করতে পারেন।

প্রস্তাবিত: