网站建设整体策划软件开发工具包什么意思

张小明 2025/12/30 17:15:30
网站建设整体策划,软件开发工具包什么意思,个人网站收款,html5 网站开发定制最新案例动态#xff0c;请查阅【案例共创】在开发者空间快速开发MQTT客户端实现硬件仿真上云。小伙伴们快来领取华为开发者空间进行实操吧#xff01; 本案例由开发者#xff1a;DS小龙哥提供 1 概述 1.1 背景介绍 随着物联网技术的不断发展#xff0c;越来越多的设备…最新案例动态请查阅【案例共创】在开发者空间快速开发MQTT客户端实现硬件仿真上云。小伙伴们快来领取华为开发者空间进行实操吧本案例由开发者DS小龙哥提供1 概述1.1 背景介绍随着物联网技术的不断发展越来越多的设备和应用依赖于实时数据交换和远程控制。在物联网生态系统中设备与云平台之间的通信是核心环节之一然而对于许多开发者来说进行这种设备与云平台之间的通信往往涉及到硬件的配置与调试这对于一些不熟悉硬件的开发者尤其是那些处于软件开发领域的人员可能是一大挑战。传统的物联网开发往往需要开发者拥有一定的硬件基础或者至少具备与硬件设备进行调试和交互的能力这使得一些开发者在没有硬件设备的情况下难以快速上手和测试物联网应用开发者迫切需要一种能够模拟硬件设备并与云平台进行交互的工具。本案例通过开发一款基于MQTT协议的客户端调试助手旨在为开发者提供一个简单易用的工具模拟硬件设备与云平台的通信交互。这款工具通过软件模拟了物联网设备的行为支持主题的订阅与发布能够与华为云物联网平台IoTDA进行实时通信。对于不熟悉硬件的开发者或者暂时没有硬件设备的开发者而言这款调试助手可以让他们在没有物理硬件的前提下体验完整的物联网设备上云过程。开发者可以通过该工具快速了解设备如何连接云平台如何进行数据传输并学习MQTT协议的基本操作。1.2 适用对象企业个人开发者高校学生1.3 案例时间本案例总时长预计60分钟。1.4 案例流程说明登录开发者空间配置开发环境编辑MQTT客户端源码CodeArts IDE运行MQTT客户端源码文件MQTT客户端实现与MQTT服务端通信实现连接MQTT服务器、发布和订阅消息MQTT服务器与华为云IoTA通信像注册的设备发布和订阅消息。1.5 资源总览本案例预计花费总计0元。资源名称规格单价元时长分钟云主机2 vCPUs | 4 GB Ubuntu 22.04 64bit Python工具集060华为云物联网平台IoTDA免费单元0602 开发者空间开发环境准备本案例中实现MQTT客户端与云端注册的设备进行交互需要开通IoTA服务以及安装开发客户端所需依赖库。2.1 配置云主机登录开发者空间登录后页面如下点击“配置云主机”在弹出的对话框中进行云主机配置。按如规格下配置云主机云主机名称默认/自定义CPU架构X86规格2 vCPUs 4 GB操作系统Ubuntu系统镜像公共镜像 Ubuntu 22.04 server 64bit (xfce4 desktop)工具Python工具集CodeArts IDE Python Git确认以上配置无误点击“安装”进行云主机操作系统安装。安装完毕之后点击“进入桌面”。环境准备中大约需要3-5分钟请您耐心等待…进入桌面后的默认效果如下点击左下角的“所有应用程序”-“开发”-“CodeArts IDE for Python”打开IDE。CodeArts IDE for Python 启动后在弹框界面选择“新建工程”。在新建工程页面自定义输入工程名称点击“创建”。在CodeArts IDE for Python 中在新建的工程文件目录中选择“venv/lib/python3.10/site-packages”路径下的任一文件鼠标右键后选择“打开所在文件夹”。复制被打开的文件夹路径。在CodeArts IDE for Python 中点击下方的“终端”输入以下命令后回车安装paho-mqtt库paho-mqtt是一个提供MQTT协议功能的Python库通过这个库开发者可以快速实现MQTT客户端的功能包括连接到MQTT代理服务器、发布消息到主题、订阅感兴趣的主题以及接收并处理消息。pipinstallpaho-mqtt --target{package-path}其中{package-path}用上面复制的文件夹路径替换。按上面的方式执行以下命令安装PyQt5库PyQt5是基于paho-mqtt库实现MQTT通信。pipinstallPyQt5 --target{package-path}其中{package-path}也用上面复制的文件夹路径替换。到此云主机的开发环境已经配置完成。2.2 开通IoTA服务登录设备接入IoTA服务控制台点击“开通免费单元”。实例配置保持默认点击“立即创建”按钮。需要等待标准版实例创建完成。创建IoT设备2.3 创建产品实例创建完成之后点击实例名称进入实例。点击左侧“产品”菜单栏点击“创建产品”按钮。在“创建产品”弹窗中自定义填写产品名称设备类型选择“自定义类型”自定义填写设备类型例dev点击“确定”完成产品创建。在“创建产品成功”提示窗中点击“查看详情”。在产品详情页面点击“自定义模型”在“添加服务”弹窗中填写服务ID例stm32点击“确定”。说明模型就是存放设备上传到云平台的数据你可以根据自己的产品进行创建。在新增的服务中点击“新增属性”在“新增属性”弹窗中填写属性名称点击“确定”。设备属性‌是指与物联网设备相关的各种参数和设置这些属性通常以键值对的形式存在用于描述设备的各种特征和行为。点击左上角“”回到上一级页面。2.4 添加设备产品是属于上层的抽象模型接下来在产品模型下添加实际的设备。添加的设备最终需要与真实的设备关联在一起完成数据交互。在左侧菜单栏选择“设备-所有设备”点击“注册设备”。在“单设备注册”弹窗中选择所属资源空间所属产品选择步骤3.1中创建的产品自定义输入设备标识码例dev1、设备名称和秘钥点击“确定”。在“设备创建成功”提示窗中点击“保存并关闭”。可以看到刚刚注册的设备处于“未激活”状态待真实设备接入平台才会变成“在线”状态。2.5 生成MQTT三元组华为云提供了一个在线工具用来生成MQTT鉴权三元组。打开这个MQTT ClientId生成工具DeviceId填入刚刚注册设备的设备IDDeviceSecret填入步骤3.2中注册设备时设置的秘钥点击“Generate”就可以得到MQTT的登录信息了。图形化界面开发MQTT客户端下面我们开发完成 MQTT 客户端调试助手模拟真实设备接入IoTA平台整体开发基于 paho-mqtt 库来实现以下功能连接到 MQTT 服务器通过提供的 IP、端口、客户端 ID、用户名和密码连接到 MQTT 服务器。订阅主题从用户输入的订阅主题中接收消息。发布消息发布主题消息到指定的发布主题。每个按钮添加相应的功能Connect、订阅和发布 。在此基础上日志框将显示与 MQTT 连接和消息传输相关的调试信息。在云主机的CodeArts IDE for Python中点击“文件”-“新建”-“文件”。点击“文件”-“保存”。输入文件名称为“MQTT.py”点击“保存”。在MQTT.py文件中输入以下代码复制文档中python代码时可能会导致格式错误可以点击下载获取MQTT.py文件内容用于实现MQTT客户端importsysimportjsonimportpaho.mqtt.clientasmqtt# 导入 paho-mqtt 库fromPyQt5.QtCoreimportQtfromPyQt5.QtWidgetsimportQApplication,QMainWindow,QWidget,QVBoxLayout,QHBoxLayout,QFormLayout,QLabel,QLineEdit,QSpinBox,QPushButton,QGridLayout,QGroupBox,QPlainTextEdit,QSpacerItem,QSizePolicy,QMenuBar,QStatusBarimporttimeclassMQTTClientDebugger(QMainWindow):def__init__(self):super().__init__()self.connectedFalseself.setWindowTitle(MQTT 客户端调试助手)self.setGeometry(100,100,1019,772)# 设置窗口大小self.centralWidgetQWidget(self)self.setCentralWidget(self.centralWidget)self.clientNone# MQTT 客户端实例# 主布局self.mainLayoutQVBoxLayout(self.centralWidget)# 连接设置布局self.connectionLayoutQHBoxLayout()self.host117.78.5.125self.clientIdself.usernameself.passWordself.formLayoutQFormLayout()self.hostLineEditQLineEdit()self.hostLineEdit.setText(self.host)\# 默认服务器IP地址 self.formLayout.addRow(QLabel(服务器域名或者IP地址:),self.hostLineEdit)# 端口号self.spinBoxPortQSpinBox()self.spinBoxPort.setMaximum(99999)self.spinBoxPort.setValue(1883)# 默认端口号self.formLayout.addRow(QLabel(服务器端口:),self.spinBoxPort)self.clientIdLineEditQLineEdit()self.clientIdLineEdit.setText(self.clientId)#客户端IDself.formLayout.addRow(QLabel(ClientId),self.clientIdLineEdit)self.usernameLineEditQLineEdit()self.usernameLineEdit.setText(self.username)# 设备用户名self.formLayout.addRow(QLabel(Username),self.usernameLineEdit)self.passwordLineEditQLineEdit()self.passwordLineEdit.setText(self.passWord)# 默认密码self.formLayout.addRow(QLabel(Password),self.passwordLineEdit)self.connectionLayout.addLayout(self.formLayout)# 连接按钮self.connectButtonQPushButton(Connect)self.connectButton.clicked.connect(self.connect_to_server)self.connectionLayout.addWidget(self.connectButton)self.mainLayout.addLayout(self.connectionLayout)# MQTT 主题和消息布局self.gridLayoutQGridLayout()self.gridLayout.addWidget(QLabel(订阅主题:),0,0)self.subscribeTopicLineEditQLineEdit(\$oc/devices/self.username/sys/messages/down)self.gridLayout.addWidget(self.subscribeTopicLineEdit,0,1)self.gridLayout.addWidget(QPushButton(订阅),0,2)self.gridLayout.addWidget(QLabel(发布主题:),1,0)self.publishTopicLineEditQLineEdit(\$oc/devices/self.username/sys/properties/report)self.gridLayout.addWidget(self.publishTopicLineEdit,1,1)self.gridLayout.addWidget(QLabel(主题消息:),2,0)self.messageLineEditQLineEdit({services: [{service_id: stm32,properties:{DHT11_T:18.1,DHT11_H:16.2,SOIL:12.4,BH1750:124.5,MOTOR_SW:1,SOIL_MAX:30,run_mode:1}}]})self.gridLayout.addWidget(self.messageLineEdit,2,1)self.publishButtonQPushButton(发布)self.publishButton.clicked.connect(self.publish_message)self.gridLayout.addWidget(self.publishButton,2,2)self.mainLayout.addLayout(self.gridLayout)# 日志区域self.logGroupBoxQGroupBox(日志消息:)self.logLayoutQHBoxLayout()self.logTextEditQPlainTextEdit()self.logTextEdit.setReadOnly(True)self.logLayout.addWidget(self.logTextEdit)self.logGroupBox.setLayout(self.logLayout)self.mainLayout.addWidget(self.logGroupBox)# 底部按钮布局self.bottomLayoutQHBoxLayout()self.testButtonQPushButton(测试按钮(一键填充MQTT信息))self.clearButtonQPushButton(一键清除MQTT信息)self.clearLogButtonQPushButton(清除日志消息)self.viewTutorialButtonQPushButton(【查看物联网项目开发教程】)self.quitButtonQPushButton(退出软件)self.testButton.clicked.connect(self.fillMQTTInfo)self.clearButton.clicked.connect(self.clearMQTTInfo)self.clearLogButton.clicked.connect(self.clear_logs)self.bottomLayout.addWidget(self.testButton)self.bottomLayout.addWidget(self.clearButton)self.bottomLayout.addWidget(self.clearLogButton)self.bottomLayout.addWidget(self.viewTutorialButton)self.bottomLayout.addWidget(self.quitButton)self.mainLayout.addLayout(self.bottomLayout)# 菜单栏self.menuBarself.menuBar()self.fileMenuself.menuBar.addMenu(File)quitActionself.fileMenu.addAction(Quit)quitAction.triggered.connect(self.close)# 状态栏self.statusBarQStatusBar()self.setStatusBar(self.statusBar)# 连接到MQTT服务器defconnect_to_server(self):hostself.hostLineEdit.text()portself.spinBoxPort.value()client_idself.clientIdLineEdit.text()usernameself.usernameLineEdit.text()passwordself.passwordLineEdit.text()try:self.clientmqtt.Client(mqtt.CallbackAPIVersion.VERSION1,client_id)self.client.username_pw_set(username,password)# 设置用户名和密码# 设置连接成功、消息接收、连接丢失等回调函数self.client.on_connectself.on_connect self.client.on_messageself.on_message self.client.on_disconnectself.on_disconnect# 连接到服务器self.client.connect(host,port,60)# 启动 MQTT 客户端self.client.loop_start()whilenotself.connectedandnotself._stop_event.is_set():time.sleep(0.1)self.connectedTrueexceptExceptionase:returnf{e}defon_connect(self,client,userdata,flags,rc):当连接到MQTT服务器时调用self.log(f连接成功返回码{rc})# 连接成功后订阅主题self.subscribeTopicLineEditQLineEdit(\$oc/devices/self.usernameLineEdit.text()/sys/messages/down)subscribe_topicself.subscribeTopicLineEdit.text()try:client.subscribe(subscribe_topic)exceptExceptionase:self.log(f订阅失败{e})defon_message(self,client,userdata,msg):当接收到MQTT消息时调用self.log(f接收到消息{msg.topic}{msg.payload.decode()})defon_disconnect(self,client,userdata,rc):当断开连接时调用self.log(fMQTT服务器断开连接返回码{rc})# 发布消息defpublish_message(self):self.publishTopicLineEditQLineEdit(\$oc/devices/self.usernameLineEdit.text()/sys/properties/report)topicself.publishTopicLineEdit.text()messageself.messageLineEdit.text()ifself.client:self.client.publish(topic,message)self.log(f发布消息{topic}{message})# 发送心跳包defsend_heartbeat(self):ifself.client:self.client.ping()self.log(发送心跳包)# 日志输出deflog(self,message):向日志框输出信息self.logTextEdit.appendPlainText(message)# 填充MQTT信息deffillMQTTInfo(self):self.hostLineEdit.setText(self.host)self.spinBoxPort.setValue(1883)self.clientIdLineEdit.setText(self.clientId)self.usernameLineEdit.setText(self.username)self.passwordLineEdit.setText(self.passWord)self.subscribeTopicLineEdit.setText(\$oc/devices/self.username/sys/messages/down)self.publishTopicLineEdit.setText(\$oc/devices/self.username/sys/properties/report)self.messageLineEdit.setText({services: [{service_id: stm32,properties:{DHT11_T:18.1,DHT11_H:16.2,SOIL:12.4,BH1750:124.5,MOTOR_SW:1,SOIL_MAX:30,run_mode:1}}]})# 清除MQTT信息defclearMQTTInfo(self):self.hostLineEdit.clear()self.spinBoxPort.clear()self.clientIdLineEdit.clear()self.usernameLineEdit.clear()self.passwordLineEdit.clear()self.subscribeTopicLineEdit.clear()self.publishTopicLineEdit.clear()# 清除日志信息defclear_logs(self):self.logTextEdit.clear()if\__name_\___main__:appQApplication(sys.argv)mainWinMQTTClientDebugger()mainWin.show()sys.exit(app.exec_())将代码27~29行的3个参数值填入步骤3.3中获取的MQTT三元组的“ClientId”、“Username”、“Password”的值如下图所示说明三元组数据会定时刷新为确保链接数据有效在填入参数值前请再次点击“Generate”刷新获取最新数据后再填写请参考步骤3.3。按上述步骤编写好代码后在CodeArts IDE for Python中MQTT.py文件页面点击右上角的绿色三角形按钮运行代码。在MQTT客户端调试助手窗口依次点击“Connect”、“订阅”、“发布”按钮可在“日志消息”区域查看打印的日志。再次登录设备接入IoTA服务控制台点击步骤2.2中开通的实例进入实例点击“设备-所有设备”可以看到在步骤3.2中添加的设备已处于“在线”状态这说明我们开发的MQTT客户端已成功与云端注册的设备进行通信。点击设备的“详情”点击“消息跟踪”可进一步查看我们开发的MQTT客户端发布过来的消息详情。说明如果您的消息跟踪还未开启请点击“启动消息跟踪”在弹出的“消息跟踪”弹窗中点击“确定”即可查看MQTT客户端发布过来的消息详情。至此利用云主机快速开发MQTT客户端实现硬件仿真上云全部完成。
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

做淘宝客网站用什么程序最好今天的头条新闻

今天的两道题都是有点硬的骨头,勉勉强强能做出来,但是想不到特定的解决方法,算法难度★★★★。深度优先算法和二分查找以为自己会,遇到这两道题算是给了我当头两棒:根本不知道何时用、怎么用深度优先算法,…

张小明 2025/12/24 7:51:53 网站建设

阜南做网站WordPress网络管理功能

第一章:跨应用数据泄露的现状与挑战随着移动互联网和云服务的普及,跨应用数据泄露已成为信息安全领域最严峻的威胁之一。多个应用程序在共享系统资源、调用公共API或使用第三方SDK时,极易因权限控制不当或通信机制不安全而导致敏感数据外泄。…

张小明 2025/12/24 13:29:56 网站建设

学习建设网站难么国内跨境电商平台有哪些?

JAVA搭建摄影约拍新平台:线上预约,轻松定格美好在数字化时代,摄影约拍需求日益增长,人们渴望通过便捷的方式找到心仪的摄影师,记录生活中的美好瞬间。利用JAVA搭建的摄影约拍平台,凭借其强大的技术优势&…

张小明 2025/12/24 13:25:15 网站建设

西安seo整站优化网页修改工具

EmotiVoice能否实现多人对话自动分角色播报? 在有声书、AI教学助手和互动式游戏剧情日益普及的今天,用户早已不再满足于“机器朗读”式的单调语音输出。他们期待的是更具沉浸感的声音体验——不同角色拥有各自独特的音色与情绪表达,仿佛真人配…

张小明 2025/12/26 8:13:18 网站建设

个人做同城网站赚钱吗上海个人医疗网站备案表

Qwen3-8B Docker:构建高性能本地AI推理环境的实践指南 在当前大模型技术飞速发展的背景下,越来越多开发者希望将前沿语言模型部署到本地环境中——既为了降低延迟、保护数据隐私,也出于对系统可控性和定制化能力的需求。然而,动…

张小明 2025/12/24 9:58:37 网站建设

网站开发需求式样书百度关键词规划师入口

在 AI 应用快速落地的时代,数据的统一管理与低门槛部署已成为决定项目成败的关键。近期,seekdb 宣布原生支持直接对接 Dify,这一能力极大简化了向量数据与业务元数据的维护流程——无需额外同步管道,不再依赖多套存储系统&#xf…

张小明 2025/12/24 14:26:59 网站建设