通过互联网控制夜灯-虚拟IoT硬件和RaspberryPi


文档摘要

通过互联网控制夜灯 - 虚拟IoT硬件和Raspberry Pi IoT设备需要编程以使用MQTT与test.mosquitto.org通信,发送带有光传感器读数的遥测值,并接收控制LED的命令。 在本课程的部分内容中,您将连接您的Raspberry Pi或虚拟IoT设备到MQTT代理。 安装MQTT客户端包 要与MQTT代理通信,您需要安装一个MQTT库pip包,无论是安装在您的Pi上,还是在您的虚拟环境中(如果您使用的是虚拟设备)。 任务 安装pip包 在VS Code中打开夜灯项目。 如果您正在使用虚拟IoT设备,请确保终端正在运行虚拟环境。如果您使用的是Raspberry Pi,则不需要使用虚拟环境。 运行以下命令来安装MQTT pip包: 编写设备代码 设备已准备好编写代码。

通过互联网控制夜灯 - 虚拟IoT硬件和Raspberry Pi

IoT设备需要编程以使用MQTT与test.mosquitto.org通信,发送带有光传感器读数的遥测值,并接收控制LED的命令。

在本课程的部分内容中,您将连接您的Raspberry Pi或虚拟IoT设备到MQTT代理。

安装MQTT客户端包

要与MQTT代理通信,您需要安装一个MQTT库pip包,无论是安装在您的Pi上,还是在您的虚拟环境中(如果您使用的是虚拟设备)。

任务

安装pip包

  1. 在VS Code中打开夜灯项目。

  2. 如果您正在使用虚拟IoT设备,请确保终端正在运行虚拟环境。如果您使用的是Raspberry Pi,则不需要使用虚拟环境。

  3. 运行以下命令来安装MQTT pip包:

    pip3 install paho-mqtt

编写设备代码

设备已准备好编写代码。

任务

编写设备代码。

  1. app.py文件顶部添加以下导入:

    import paho.mqtt.client as mqtt

    paho.mqtt.client库允许您的应用程序通过MQTT进行通信。

  2. 在光传感器和LED定义之后添加以下代码:

    id = '<ID>' client_name = id + 'nightlight_client'

    <ID> with a unique ID that will be used the name of this device client, and later for the topics that this device publishes and subscribes to. The test.mosquitto.org broker is public and used by many people, including other students working through this assignment. Having a unique MQTT client name and topic names ensures your code won't clash with anyone elses. You will also need this ID when you are creating the server code later in this assignment.

    You can use a website like GUIDGen to generate a unique ID.

    The client_name替换为在代理上的此MQTT客户端的唯一名称。

  3. 在新代码下方添加以下代码,创建一个MQTT客户端对象并连接到MQTT代理:

    mqtt_client = mqtt.Client(client_name) mqtt_client.connect('test.mosquitto.org') mqtt_client.loop_start() print("MQTT connected!")

    此代码创建了客户端对象,连接到公共MQTT代理,并启动了一个在后台线程中运行的处理循环,监听任何已订阅主题上的消息。

  4. 以与上一部分作业中运行代码相同的方式运行代码。如果您使用的是虚拟IoT设备,请确保CounterFit应用正在运行,并且光传感器和LED已在正确引脚上创建。

    (.venv) ➜ nightlight python app.py MQTT connected! Light level: 0 Light level: 0

您可以在code-mqtt/virtual-device文件夹或code-mqtt/pi文件夹中找到此代码。

您已经成功地将设备连接到了MQTT代理。

声明:
本文件灏天文库团队进行了翻译。尽管我们力求准确,但请注意,翻译可能包含错误或不准确之处。原文档以其原始语言为准。我们不对因使用此翻译而产生的任何误解或误译负责。


作者与出处
原作者: microsoft
来源:microsoft
许可证:MIT
整理: 灏天文库整理
由灏天文库结构化整理,提供目录导航、全文检索与在线阅读,便于系统化学习
发布者: 作者: microsoft 转发
评论区 (0)
U