آموزش رزبری پای رزبری پای پایتون Python

آشنایی با فریم ورک Flask و کاربرد آن در رزبری پای Raspberry Pi

flask-framework-python-with-raspberry-pi-digispark
نوشته شده توسط محمد روغنیان جهرمی

در این آموزش ما میخواهیم با مفاهیم flask آشنا شویم. راه اندازی اولیه فریم ورک Flask بر روی رزبری پای را تست کنیم. برای اجرای این آموزش لازم است دو مورد را بدانیم. اول آشنایی با مفاهیم اولیه پایتون Python و دوم هم آشنایی با ترمینال رزبری پای و دستورات ساه لینوکس است.

رزبری پای یک کامپیوتر کوچک همه کاره است که به دلیل قیمت مناسب (البته نه در ایران!) باعث جلب توجه علاقه مندان دنیای الکترونیک و IOT به خود شده است. این برد تمام توانایی های یک کامپیوتر معمولی را دارا میباشد؛ اما یکی از کاربردهای این برد جذاب این است که میتواند به عنوان یک سرور محلی مورد استفاده قرار بگیرد. برای راه اندازی سرور در رزبری پای راه حل‌های گوناگونی وجود دارد؛ مثلا روش کلاسیک استفاده از زبان برنامه نویسی php و راه اندازی سرور آپاچی است. حال با توجه به استفاده‌های فراوان از پایتون این روزها در تمام زمینه‌ها، شاهد برنامه نویسی سمت سرور با پایتون هم هستیم. برای برنامه نویسی سمت سرور با پایتون باید از فریم ورک‌های مخصوص پایتون استفاده کنیم.‌

 


فریم ورک چیست؟


بگذارید مثالی بزنم: میخواهیم یک ساختمان بسازیم؛ابتدا باید پی‌ سازی بکنیم، بعد اسکلت ساختمان را بزنیم، بعد به قالب برداری و سپس کارهای تکمیلی برسیم. همه این مراحل زمان بر میباشند و ما به عنوان سازنده باید این زمان را در نظر بگیریم تا پروژه را در زمان مشخص تحویل بدهیم. اگر فرض کنید که به شما بگویند اسکلت ساختمان به صورت آماده در اختیار شما قرار میگیرد و مراحل ساختن را از آنجا به بعد باید طراحی کنید و پیاده سازی کنید، خواهیم دید که حجمی از محاسبات و طراحی کم شده و در زمان گروه سازنده صرفه جویی خواهد شد.

در برنامه نویسی، فریم ورک مانند اسکلت ساختمان در مثال بالا می‌باشد.  فریم‎‌ ورک را مجموعه‌ای از ابزارها، کتابخانه‌ ها، قرارداد ها و بهترین شیوه‌ ها تعریف کرد که فریم‎ ورک ها این امکان را به برنامه نویسان می‎ دهند تا با توابع و کلاس‎ های از پیش تعریف شده، ضمن ایجاد امنیت بیشتر برای برنامه‎ها، از کد کمتری در برنامه‎ های خود استفاده کنند. اساساً دو نوع فریم ورک وجود دارد. Frontend و Backend در پایتون فریم ورک Django یکی از محبوب ترین فریم ورک‌های full-stack میباشد که ینی برای هم frontend و هم backend کاربرد دارد. یک میکرو فریم ورک محبوب هم فریم ورک Flask است. که non full-stack به حساب می‌آید. به این دلیل میکرو گفته میشود چون که تمام قابلیت های فریم ورکی مانند Django را ندارد؛ اما به این معنا نیست که کاربرد ندارد و یا در عمل مشکلی دارد. همانطور که میبینم در اپلیکشنی چون پینترست از flask استفاده شده است.

 


راه اندازی در رزبری پای


بسته به نوع استفاده وارد محیط گرافیکی شده و ترمینال را باز کرده یا با ssh به رزبری پای خود متصل شوید. در ترمینال دستورات اولیه برای بروزرسانی را وارد کنید:

ترمینال در سیستم عامل لینوکس - دیجی اسپارک

Sudo apt-get update
Sudo apt-get upgrade

دستور آپدیت سیستم عامل لینوکس در ترمینال - دیجی اسپارک

حال دکمه y را کلید کنید و سپس Enter را فشار دهید. در سیستم عامل Raspbian به صورت پیشفرض پایتون نصب شده است؛ شما باید flask را نصب کنید. در ترمینال دستور زیر را وارد کنید:

sudo apt-get install python3-flask

دستور نصب python3-flask در ترمینال لینوکس - دیجی اسپارک

در این مرحله باستی دایرکتوری جدیدی را با دستور mkdir به نام flaskWeb بسازیم.

mkdir flaskWeb

با دستور cd به دایرکتوری جدید میرویم.

cd flaskWeb

با ادیتورهای vim  یا nano فایلی به نام app.py را ساخته و ویرایش می‌کنیم.

nano app.py

کد زیر را در ویرایشگر می‌نویسیم.

from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello():
    return 'Hello, it is my flask web server'
if __name__ == '__main__':
    app.run(host='0.0.0.0', port=8090)

برای ذخیره دکمه ctrl+x را فشار میدهیم و سپس y تایپ کرده و Enter را فشار میدهیم. حال ما اولین برنامه خود با میکرو فریم ورک flask را نوشته ایم. برای راه اندازی در ترمینال مینویسیم:

python app.py

باید خروجی مانند تصویر زیر ببینیم. برای یافتن ip رزبری پای در ترمینال مینویسیم.

آشنایی با فریم ورک Flask و کاربرد آن در رزبری پای Raspberry Pi - دیجی اسپارک

hostname –I

در خروجی مانند شکل mrj-1 باید ip دستگاه را مشاهده کنیم که در اینجا عبارت است از ۱۹۲٫۱۶۸٫۱٫۴۳ و در استفاده های بعدی باید این را بخاطر داشته باشیم. حال بر روی مرورگر لپ تاپی که به همین شبکه وای فای یا اترنت وصل شده است در قسمت url وارد میکنیم.

http://192.168.1.43:8090

و میبینم که خروجی مطابق تصویر زیر می‌باشد. توضیح خط به خط کد

آشنایی با فریم ورک Flask و کاربرد آن در رزبری پای Raspberry Pi - دیجی اسپارک

from flask import Flask

در اینجا ما مدل flask را در اسکریپتمان اضاف میکنیم.

app = Flask(__name__)

یک object از flask با نام app ایجاد کرده ایم.

@app.route('/')
def hello():
    return 'Hello, it is my flask web server'

بوسیله app.route دسترسی به url ریشه که همان (‘/’) ایجاد کرده ایم، و بعد با معرفی تابع hello میگوییم این مسیر شامل چه توابع و دستوراتی میشود. این تابع یک رشته را برمیگرداند.

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=8090)

در قسمت آخر میگوییم اگر برنامه از command line آغاز شد سرور از پورت ۸۰۹۰ آماده به کار شود. ما host را به صورت ۰٫۰٫۰٫۰ نوشته ایم؛ این بدان معناست که سرور ما لوکال میباشد و اگر در این شبکه با مرورگر موبایل و یا لپ تاپ هم وارد شویم عمل میکند. اگر بدین صورت قسمت آخر را تغییر بدهیم.

if __name__ == '__main__':
    app.run(host='127.0.0.0', port=8090)

خواهیم دید مطابق تصویر زیر دیگر سرور ما در دسترس نبوده و فقط بر روی رزبری پای میتوانیم به آن وصل شویم. سوال جدیدی پیش می آید، این است که خب این برنامه فقط شامل یک مسیر بود و اگر مسیر های دیگری نیز بخواهیم، چگونه میتوانیم اضاف کنیم؟ در توضیحات کد اولیه گفته شد که route مسیرهای موجود در سرور را نشان میدهد پس بوسیله اضاف کردن app.route با آدرس دلخواه میتوان میتوان مسیرهای جدیدی به سرور افزود.

آشنایی با فریم ورک Flask و کاربرد آن در رزبری پای Raspberry Pi - دیجی اسپارک

پس از تابع اولیه میتوان اضافه کرد:

@app.route('/index')
def index_page():
    return 'it is the index of my flask server'

که در این صورت کد کامل برنامه ما میشود:

rom flask import Flask
 
app = Flask(__name__)
 
@app.route('/')
def hello():
    return 'Hello, it is my flask web serve'
 
 
@app.route('/index')
def index_page():
    return 'it is the index of my flask server'
 
if __name__ == '__main__':
    app.run(host='0.0.0.0', port=8090)حال با فشردن ctrl+x و نوشتن y و زدن Enter برنامه را ذخیره میکنیم.

اینبار به یک روش جدید برنامه را اجرا می‌کنیم؛ در ترمینال می‌نویسیم.

flask run –-host=0.0.0.0 –-port=8090

میبینم که باز مطابق تصویر زیر برنامه اجرا میشود. مرورگر را باز میکنیم و در url می‌نویسیم.

آشنایی با فریم ورک Flask و کاربرد آن در رزبری پای Raspberry Pi - دیجی اسپارک

http://192.168.1.43:8090/index

میبینم که خروجی مطابق تصویر زیر خواهد بود.

آشنایی با فریم ورک Flask و کاربرد آن در رزبری پای Raspberry Pi - دیجی اسپارک


جمع بندی نهایی


در ابتدا با فریم ورک و مسایل ساده برنامه نویسی سرور آشنا شدیم. ما با راه اندازی اولیه و بسیار ساده میکرو فریم ورک flask شروع کرده‌ایم. در آموزش‌های بعدی شاهد استفاده از GPIOهای رزبری در برنامه خود خواهیم بود. چنانچه در مراحل راه اندازی و انجام این پروژه با مشکل مواجه شدید، بدون هیچ نگرانی در انتهای همین پست، به صورت ثبت نظر سوالتان را مطرح کنید. من در سریع‌ترین زمان ممکن پاسخ رفع مشکل شما را خواهم داد. همچنین اگر ایرادی در کدها و یا مراحل اجرایی وجود دارند می‌توانید از همین طریق اطلاع رسانی کنید.

 

چنانچه در مراحل راه اندازی و انجام این پروژه با مشکل مواجه شدید، بدون هیچ نگرانی در انتهای همین پست، به صورت ثبت نظر سوالتان را مطرح کنید. من در سریع‌ترین زمان ممکن پاسخ رفع مشکل شما را خواهم داد. همچنین اگر ایرادی در کدها و یا مراحل اجرایی وجود دارند می‌توانید از همین طریق اطلاع رسانی کنید.

 

در پایان نظرات و پیشنهادات خود را با ما درمیان بگذارید و با اشتراک گذاری این آموزش در شبکه های اجتماعی , از وبسایت دیجی اسپارک حمایت کنید.

 

درباره نویسنده

محمد روغنیان جهرمی

تازه دانشجویی در دنیای کنترل
علاقه مند به برنامه نویسی

تبادل نظر و رفع عیب با ثبت دیدگاه