You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
91 lines
5.7 KiB
91 lines
5.7 KiB
<!--
|
|
CO_OP_TRANSLATOR_METADATA:
|
|
{
|
|
"original_hash": "90fb93446e03c38f3c0e4009c2471906",
|
|
"translation_date": "2025-08-25T21:59:59+00:00",
|
|
"source_file": "1-getting-started/lessons/4-connect-internet/single-board-computer-mqtt.md",
|
|
"language_code": "fa"
|
|
}
|
|
-->
|
|
# کنترل چراغ خواب خود از طریق اینترنت - سختافزار مجازی IoT و رزبری پای
|
|
|
|
دستگاه IoT باید کدنویسی شود تا بتواند با *test.mosquitto.org* از طریق MQTT ارتباط برقرار کند، مقادیر تلهمتری را با خواندن حسگر نور ارسال کند و دستورات کنترل LED را دریافت کند.
|
|
|
|
در این بخش از درس، شما رزبری پای یا دستگاه مجازی IoT خود را به یک MQTT broker متصل خواهید کرد.
|
|
|
|
## نصب بسته کلاینت MQTT
|
|
|
|
برای ارتباط با MQTT broker، باید یک کتابخانه MQTT را به صورت بسته pip روی رزبری پای یا محیط مجازی خود (در صورت استفاده از دستگاه مجازی) نصب کنید.
|
|
|
|
### وظیفه
|
|
|
|
نصب بسته pip
|
|
|
|
1. پروژه چراغ خواب را در VS Code باز کنید.
|
|
|
|
1. اگر از دستگاه مجازی IoT استفاده میکنید، مطمئن شوید که ترمینال در حال اجرای محیط مجازی است. اگر از رزبری پای استفاده میکنید، نیازی به استفاده از محیط مجازی ندارید.
|
|
|
|
1. دستور زیر را اجرا کنید تا بسته pip مربوط به MQTT نصب شود:
|
|
|
|
```sh
|
|
pip3 install paho-mqtt
|
|
```
|
|
|
|
## کدنویسی دستگاه
|
|
|
|
دستگاه آماده کدنویسی است.
|
|
|
|
### وظیفه
|
|
|
|
کد دستگاه را بنویسید.
|
|
|
|
1. واردات زیر را به بالای فایل `app.py` اضافه کنید:
|
|
|
|
```python
|
|
import paho.mqtt.client as mqtt
|
|
```
|
|
|
|
کتابخانه `paho.mqtt.client` به برنامه شما اجازه میدهد از طریق MQTT ارتباط برقرار کند.
|
|
|
|
1. کد زیر را بعد از تعریفهای حسگر نور و LED اضافه کنید:
|
|
|
|
```python
|
|
id = '<ID>'
|
|
|
|
client_name = id + 'nightlight_client'
|
|
```
|
|
|
|
`<ID>` را با یک شناسه منحصر به فرد جایگزین کنید که به عنوان نام کلاینت این دستگاه استفاده خواهد شد و بعداً برای موضوعاتی که این دستگاه منتشر و مشترک میشود استفاده میشود. broker *test.mosquitto.org* عمومی است و توسط افراد زیادی، از جمله دانشآموزان دیگر که این تکلیف را انجام میدهند، استفاده میشود. داشتن یک نام کلاینت MQTT و نام موضوعات منحصر به فرد تضمین میکند که کد شما با کد دیگران تداخل نداشته باشد. شما همچنین به این شناسه نیاز خواهید داشت زمانی که کد سرور را در ادامه این تکلیف ایجاد میکنید.
|
|
|
|
> 💁 میتوانید از وبسایتی مانند [GUIDGen](https://www.guidgen.com) برای ایجاد یک شناسه منحصر به فرد استفاده کنید.
|
|
|
|
`client_name` یک نام منحصر به فرد برای این کلاینت MQTT در broker است.
|
|
|
|
1. کد زیر را زیر این کد جدید اضافه کنید تا یک شیء کلاینت MQTT ایجاد کرده و به MQTT broker متصل شوید:
|
|
|
|
```python
|
|
mqtt_client = mqtt.Client(client_name)
|
|
mqtt_client.connect('test.mosquitto.org')
|
|
|
|
mqtt_client.loop_start()
|
|
|
|
print("MQTT connected!")
|
|
```
|
|
|
|
این کد شیء کلاینت را ایجاد میکند، به broker عمومی MQTT متصل میشود و یک حلقه پردازش را شروع میکند که در یک رشته پسزمینه اجرا شده و پیامها را در هر موضوع مشترک گوش میدهد.
|
|
|
|
1. کد را به همان روشی اجرا کنید که کد بخش قبلی تکلیف را اجرا کردید. اگر از دستگاه مجازی IoT استفاده میکنید، مطمئن شوید که برنامه CounterFit در حال اجرا است و حسگر نور و LED روی پینهای صحیح ایجاد شدهاند.
|
|
|
|
```output
|
|
(.venv) ➜ nightlight python app.py
|
|
MQTT connected!
|
|
Light level: 0
|
|
Light level: 0
|
|
```
|
|
|
|
> 💁 میتوانید این کد را در پوشه [code-mqtt/virtual-device](../../../../../1-getting-started/lessons/4-connect-internet/code-mqtt/virtual-device) یا پوشه [code-mqtt/pi](../../../../../1-getting-started/lessons/4-connect-internet/code-mqtt/pi) پیدا کنید.
|
|
|
|
😀 شما با موفقیت دستگاه خود را به یک MQTT broker متصل کردید.
|
|
|
|
**سلب مسئولیت**:
|
|
این سند با استفاده از سرویس ترجمه هوش مصنوعی [Co-op Translator](https://github.com/Azure/co-op-translator) ترجمه شده است. در حالی که ما تلاش میکنیم دقت را حفظ کنیم، لطفاً توجه داشته باشید که ترجمههای خودکار ممکن است شامل خطاها یا نادرستیها باشند. سند اصلی به زبان اصلی آن باید به عنوان منبع معتبر در نظر گرفته شود. برای اطلاعات حساس، توصیه میشود از ترجمه حرفهای انسانی استفاده کنید. ما مسئولیتی در قبال سوء تفاهمها یا تفسیرهای نادرست ناشی از استفاده از این ترجمه نداریم. |