zoukankan      html  css  js  c++  java
  • [Micropython][ESP8266] TPYBoard V202 之MQTT协议接入OneNET云平台

      随着移动互联网的发展,MQTT由于开放源代码,耗电量小等特点,将会在移动消息推送领域会有更多的贡献,在物联网领域,传感器与服务器的通信,信息的收集,MQTT都可以作为考虑的方案之一。在未来MQTT会进入到我们生活的各各方面,本篇文章教大家利用TPYBoardv202使用MQTT协议接入OneNET平台,并且远程控制LED灯。

      什么是MQTT协议

      早在1999年,IBM的AndyStanford-Clark博士以及Arcom公司ArlenNipper博士发明了MQTT(MessageQueuingTelemetryTransport,消息队列遥测传输)技术。MQTT(MessageQueuingTelemetryTransport,消息队列遥测传输)是IBM开发的一个即时通讯协议,有可能成为物联网的重要组成部分。该协议支持所有平台,几乎可以把所有联网物品和外部连接起来,被用来当做传感器和致动器(比如通过Twitter让房屋联网)的通信协议。

      实验准备

      一、硬件材料

      1.TPYBoardv202

     

      2.面包板

      3.数据线

      4.LED发光二极管

      二、软件准备

      1.MicroPythonFileUploader用于与开发板的文件传输

      下载地址:http://www.tpyboard.com/download/tool/170.html

      2.ESPFlashDownloadTool_v3.3.4TPYBoardv202固件烧写工具

      下载地址:http://www.tpyboard.com/download/tool/185.html

      3.第三方库文件:micropython-libumqtt.simpleumqttsimple.py

      下载地址:http://www.tpyboard.com/download/data/184.html

      4.TPYBoardv202固件

      下载地址:http://www.tpyboard.com/download/firmware/171.html

      OneNET平台创建MQTT协议的产品并添加设备

     

      如果没有产品,点击创建产品即可,上面显示我已经创建完毕。

     

      SmartBoy是我添加的设备,当我们插上TPYBoardv202时,就会看到上图绿点点亮,拔了以后就会变灰,前提是板子里程序已经写入。

      实物接线图

     

      我用的TPYBoardv202的G4引脚,这个引脚可以随便定义,主要看程序里你想用哪个。

      程序源代码

      boot.py源码

    #连接本地网络
    def do_connect():
            import network
            sta_if = network.WLAN(network.STA_IF)
            ap_if = network.WLAN(network.AP_IF)
            if ap_if.active():
                    ap_if.active(False)
            if not sta_if.isconnected():
                    print('connecting to network...')
            sta_if.active(True)
            sta_if.connect(WIFI名称, '密码') #wifi的SSID和密码
            while not sta_if.isconnected():
                    pass
            print('network config:', sta_if.ifconfig())
    do_connect()

      mqtt.py源码

    from simple import MQTTClient
    from machine import Pin
    import machine
    import micropython
    #选择G4引脚
    g4 = Pin(4, Pin.OUT, value=0)
    # MQTT服务器地址域名为:183.230.40.39,不变
    SERVER = "183.230.40.39"
    #设备ID
    CLIENT_ID = "9377500"
    #随便起个名字
    TOPIC = b"TurnipRobot"
    #产品ID
    username='91025'
    #产品APIKey:
    password='y7zd=7wNaObdfRYhxQn7D5jiDnI='
    state = 0
    def sub_cb(topic, msg):
        global state
        print((topic, msg))
        if msg == b"on":
                g4.value(1)
                state = 1
                print("1")
        elif msg == b"off":
                g4.value(0)
                state = 0
                print("0")
        elif msg == b"toggle":
    
                state = 1 - state
                g4.value(state)
               
    def main(server=SERVER):
        #端口号为:6002
        c = MQTTClient(CLIENT_ID, server,6002,username,password)
        c.set_callback(sub_cb)
        c.connect()
        c.subscribe(TOPIC)
        print("Connected to %s, subscribed to %s topic" % (server, TOPIC))
        try:
                while 1:
                        c.wait_msg()
        finally:
                c.disconnect()
    

      

      simple.py源码不用更改,直接按照下载地址下载即可。

      main.py源码

    import mqtt
    mqtt.main()
    

      

      源码下载请到:http://www.tpyboard.com/download/data/183.html

      效果展示

     

      这个时候我们OneNET云平台上设备就会显示在线了

     

      当我们发送指令on的时候,就会看到控制台显示

      (b'$creq/3e25b3f5-27c8-50d5-b2bb-b7cb7ddddac4',b'on')

      1并且看到我们面包板上的led会亮起来

     

      当我们发送指令off的时候,就会看到控制台显示

      (b'$creq/c01cc820-72b2-50e2-ab0c-6954d35796ef',b'off')

      0并且看到我们面包板上的led灯会熄灭

     

      当我们发送toggle时候,就会看到控制台显示:

      (b'$creq/e2f94a0b-7363-56ec-b87c-1d5d02dc4774',b'toggle')

      并且看到我们面包板上的led灯会亮起来,再次发送,控制台会显示:

      (b'$creq/9aa4a04f-eb90-503f-b14f-6f0575869c23',b'toggle')

      我们会看到led熄灭。

      视频展示效果

      

      在这只是给大家演示了TPYBoardv202怎么用MQTT协议接入OneNet云平台,并教大家如何控制一个外围电路点亮一个led,大家可以利用TPYBoardv202接入更复杂,更好玩的东西。

      

  • 相关阅读:
    正则表达式例子
    addevent兼容函数 && 阻止默认行为 && 阻止传播
    addevent
    区分总结innerHeight与clientHeight、innerWidth与clientWidth、scrollLeft与pageXOffset等属性
    setattribute兼容
    随机分配位置
    浏览器类型
    统计一个字符串中相同字符的个数
    Appium发送中文或其他语言的问题
    Appium同时连接多台手机进行测试(多线程)
  • 原文地址:https://www.cnblogs.com/xxosu/p/7234693.html
Copyright © 2011-2022 走看看