【HarmonyOS HiSpark Wi-Fi IoT 套件试用连载】[soon][三]用python快速搭建MQTT控制红绿灯测试页面

描述

本文来源德赢Vwin官网 社区,作者:soon顺soon, 帖子地址:https://bbs.elecfans.com/jishu_2010903_1_1.html


本文分享一种利用python搭建MQTT控制WIFI-IoT的红绿灯测试web页面的方法,实现按下 web页面按键后会发布topic为ledstatus,payload分别为RedLED、YellowLED、GreenLED的消息,如果刚好有兴趣的可以参考下。

WIFI-IoT上收到消息后反转对应LED 状态的相关代码,参阅
MQTT 控制红绿灯的演示与代码分享
一、相关的软件和python库安装
ubuntu20.04中搭建MQTT Broker的指令如下
  1. sudo apt-get install mosquitto
  2. sudo apt-get install mosquitto-clients
  3. sudo apt-get install mosquitto-dev
复制代码
Ubuntu下用python搭建web会用到的库安装指令如下
  1. pip3 install paho.mqtt
  2. pip3 install web.py
复制代码
如果是在windows下mqtt的包安装要换成如下
  1. pip install web.py
  2. pip install paho-mqtt
复制代码
二、用html写个简单的页面"key.html"如下
    • Wifi-loT测试页面
    • Soon-Wifi-loT
  1. tion="/RedLED" method="POST">
复制代码

页面比较简洁只有标题和三个按键

三、Python相关代码如下
  1. import web
  2. import paho.mqtt.client
  3. import time
  4. HOSTNAME ="xxxxxx"#请填入你的Broker地址/可以是你局域网ubuntu虚拟机IP,或者云服务器地址
  5. MQTTPORT = 1883#默认1883 具体看你Broker配置
  6. USERNAME ="xxxxxx" #请填入用户名
  7. PASSWD="xxxxxx"#请填入用密码
  8. HTML_PAGE = "key.html"
  9. TOPICE = "ledstatus"
  10. mqtt = paho.mqtt.client
  11. urls = (
  12. '/RedLED', 'RedLED',
  13. '/YellowLED', 'YellowLED',
  14. '/GreenLED', 'GreenLED',
  15. '/(.*)', 'Wifi_lOT_home'
  16. )
  17. app = web.application(urls, globals())
  18. client_id = time.strftime('%Y%m%d%H%M%S',time.localtime(time.time()))
  19. client = mqtt.Client(client_id) # ClientId不能重复,所以使用当前时间
  20. # publish 消息
  21. def on_publish(topic, payload, qos):
  22. client.username_pw_set(USERNAME, PASSWD) # 必须设置,否则会返回「Connected with result code 4」
  23. client.connect(HOSTNAME, MQTTPORT, 60)
  24. client.publish(topic, payload, qos)
  25. class Wifi_lOT_home:
  26. def GET(self, name):
  27. file = open(HTML_PAGE, "rb+")
  28. return file.read()
  29. def POST(self):
  30. print ("test soon")
  31. class RedLED:
  32. def POST(self):
  33. print ("RedLED POST")
  34. on_publish(TOPICE, "RedLED".encode(),0)
  35. file = open(HTML_PAGE, "rb+")
  36. return file.read()
  37. class YellowLED:
  38. def POST(self):
  39. print ("YellowLED POST")
  40. on_publish(TOPICE,"YellowLED".encode(),0)
  41. file = open(HTML_PAGE, "rb+")
  42. return file.read()
  43. class GreenLED:
  44. def POST(self):
  45. print ("GreenLED POST")
  46. on_publish(TOPICE,"GreenLED".encode(),0)
  47. file = open(HTML_PAGE, "rb+")
  48. return file.read()
  49. if __name__ == "__main__":
  50. app.run()
复制代码

四、运行指令和效果
运行指令python3 -u xxxxxx.py 端口 ,如 python3 -u keyEvent.py 8080
然后在浏览器输入http://localhost:8080/ 或者http://(ubuntu IP/server IP):8080/ 就能看到以下页面

HiSpark


附相关代码下载
打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表德赢Vwin官网 网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分