MircoPython接入巴法云tcp和mqtt

第一、搭建MircoPython开发环境

下载 micropython 环境包:点击下载

下载后解压,首先双击打开 uPyCraft 软件,刷入固件,首先点击 tools-->BurnFirmware ,再选择esp8266或者esp32,选择开发板端口,选择需要刷入的固件,固件在下载的环境包中,点击ok即可刷入,如下图所示:

02.png

等待进度条走完就刷入成功了。

附,其他链接:
单片机串口驱动:点击下载
micropython官方文档:点击跳转

第二、hello world 程序测试

点击file--new 新建文件,命名main,点击ok保存,如下图所示

点击tools,再点击serial和board分别选择端口、开发板类型esp8266或者esp32,如下图

03.png

输入print("hello word") ,点击下载图标,即可下载成功,在下方会输出打印的hello world,如下图

print("hello word")
04.png

第三 TCP示例程序

注意:每次下载程序后都需要重启开发板,例如按开发板上的reset按键重启

import time
from machine import Timer
import socket

#需要修改的地方
wifiName = "newhtc"                   #wifi 名称,不支持5G wifi
wifiPassword = "qq123456"       #wifi 密码
clientID = "7d54f85af42976ee3c2693e692a6bb59"            # Client ID ,密钥,巴法云控制台获取
myTopic='myled002'                     # 需要订阅的主题值,巴法MQTT控制台创建

#默认设置
serverIP = 'bemfa.com'    # mqtt 服务器地址
port = 8344

# WIFI 连接函数
def do_connect():
    import network
    sta_if = network.WLAN(network.STA_IF)
    if not sta_if.isconnected():
        print('connecting to network...')
        sta_if.active(True)
        sta_if.connect(wifiName, wifiPassword)
        while not sta_if.isconnected():
            pass
    print('connect  WiFi ok')


    
# tcp 客户端初始化        
def connect_and_subscribe():
  addr_info = socket.getaddrinfo(serverIP, port)
  addr = addr_info[0][-1]
  client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)   # 创建TCP的套接字,也可以不给定参数。默认为TCP通讯方式
  client.connect(addr)                                 # 设置要连接的服务器端的IP和端口,并连接
  substr = 'cmd=1&uid='+clientID+'&topic='+myTopic+'\r\n'
  client.send(substr.encode("utf-8"))
  print("Connected to %s" % serverIP)
  return client
  
#心跳
def Ping(self):
    # 发送心跳
    try:
        keeplive = 'ping\r\n'
        client.send(keeplive.encode("utf-8"))
    except:
        restart_and_reconnect()

# 重新连接
def restart_and_reconnect():
  print('Failed to connect to TCP  broker. Reconnecting...')
  time.sleep(10)
  machine.reset()
 
 #开始连接WIFI
do_connect() 

#开始连接TCP
try:
  client = connect_and_subscribe()
except OSError as e:
  restart_and_reconnect()
 
 #开启定时器,定时发送心跳
tim = Timer(-1)
tim.init(period=30000, mode=Timer.PERIODIC, callback=Ping)

while True:
  try:
    data = client.recv(256)                         # 从服务器端套接字中读取1024字节数据
    if(len(data) != 0):                                 # 如果接收数据为0字节时,关闭套接字
        data=data.decode('utf-8')              
        print(data.strip())                              # 去掉尾部回车换行符,并打印接收到的字符
  except OSError as e:                            # 如果出错就重新启动
    print('Failed to connect to  broker. Reconnecting...')
    restart_and_reconnect() 

第四 MQTT示例程序

from umqtt.simple import MQTTClient
import time
from machine import Timer

#需要修改的地方
wifiName = "newhtc"                   #wifi 名称,不支持5G wifi
wifiPassword = "qq123456"       #wifi 密码
clientID = "7d54f85af42976ee3c2693e692a6bb59"            # Client ID ,密钥,巴法云控制台获取
myTopic='light002'                     # 需要订阅的主题值,巴法MQTT控制台创建

#默认设置
serverIP = "bemfa.com"    # mqtt 服务器地址
port = 9501

# WIFI 连接函数
def do_connect():
    import network
    sta_if = network.WLAN(network.STA_IF)
    if not sta_if.isconnected():
        print('connecting to network...')
        sta_if.active(True)
        sta_if.connect(wifiName, wifiPassword)
        while not sta_if.isconnected():
            pass
    print('connect  WiFi ok')
    

# 接收消息,并处理
def MsgOK(topic, msg):          # 回调函数,用于收到消息
        print((topic, msg))             # 打印主题值和消息值
        if topic == myTopic.encode():     # 判断是不是发给myTopic的消息
            if msg == b"on":                # 当收到on
                print("rec on")
            elif msg == b"off":             #  当收到off
                print("rec off")


#初始化mqtt连接配置
def connect_and_subscribe():
  client = MQTTClient(clientID, serverIP,port)  
  client.set_callback(MsgOK)
  client.connect()
  client.subscribe(myTopic)
  print("Connected to %s" % serverIP)
  return client
  
def restart_and_reconnect():
  print('Failed to connect to MQTT broker. Reconnecting...')
  time.sleep(10)
  machine.reset()
  
  

#开始连接WIFI
do_connect() 

#开始连接MQTT
try:
  client = connect_and_subscribe()
except OSError as e:
  restart_and_reconnect()
 

while True:
  try:
    client.check_msg() 
  except OSError as e: #如果出错就重新启动
    print('Failed to connect to MQTT broker. Reconnecting...')
    restart_and_reconnect() 
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,214评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,307评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,543评论 0 341
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,221评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,224评论 5 371
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,007评论 1 284
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,313评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,956评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,441评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,925评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,018评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,685评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,234评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,240评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,464评论 1 261
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,467评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,762评论 2 345