前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >[esp32]ESP8266使用micropython连接MQTT控制家电

[esp32]ESP8266使用micropython连接MQTT控制家电

作者头像
一朵灼灼华
发布2022-08-05 21:26:25
1.8K2
发布2022-08-05 21:26:25
举报

设备

  • ESP8266继电器
  • ESP8266固件烧录器
  • ESP-01S 如图

软件

  • Thonny
  • AiThinker_Serial_Tool_V1.2.3
  • flash_download_tools_v3.6.8
  • esp8266-20190529-v1.11.bin

概要

经历了很长很长很长很长的时间,跳过了各种坑,终于,在居家隔离的日子里,把这个项目搞定了 首先呢,淘宝购买了设备,先用 Raspberry pi RP 连接ESP01S、控制继电器,联网,控制电器,发现硬件多、预算高,然后就更换成了ESP8266继电器。刷了很长很长时间的固件,发现只能成功刷入原厂AT,micropython刷不进去,或者刷进去启动乱码,毕竟咱们AT语句不熟,最后,搁置了一段时间,成功刷入micropython

  1. 刷固件 下载软件flash_download_tools_v3.6.8,好像百度一大堆,大同小异,然后选择固件esp8266-20190529-v1.11.bin,输入开始位置0x00000,清除ERASE,然后开始刷入START,

刷入成功之后,使用AiThinker_Serial_Tool_V1.2.3连接,你会看到一堆乱码,然后是熟悉的python命令行

然后编写boot.py文件,

import network
import time
from machine import Pin
from umqtt.simple import MQTTClient
import usocket as socket

status = 'run'
server = "192.168.0.10"
port = 1883
ClientId = "0"
TOPIC = b"iot_eps32_001"
username = 'iot'
password = 'passwd'
# 继电器
g0 = Pin(0, Pin.OUT, value=0)
# 指示灯
g2 = Pin(2, Pin.OUT, value=0)
client = None

print("clientid:", ClientId, "\n", "Broker:", server, "\n", "User Name:", username, "\n", "Password:", password, "\n")


def do_connect():
    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('wifissid', 'wifipasswd')  # wifi的SSID和密码
    while not sta_if.isconnected():
        pass
    print('network config:', sta_if.ifconfig())
    return


def sub_cb(topic, msg):
    global client, status
    topic = topic.decode('utf-8')
    msg = msg.decode('utf-8')
    print(topic, ':', msg)
    if topic == 'iot_eps32_001':
        if msg == 'close':
            status = 'close'
            # client.disconnect()
            return
        elif msg == 'test':
            g2.on()
            time.sleep(1)
            g2.off()
            time.sleep(2)
            g2.on()
            time.sleep(1)
            g2.off()
            time.sleep(2)
            g2.on()
        elif msg == 'on':
            g0.on()
        elif msg == 'off':
            g0.off()
        pass
    return


def connect():
    global client
    client = MQTTClient(client_id=ClientId, server=server, port=port, user=username, password=password, keepalive=60)
    # please make sure keepalive value is not 0
    client.set_callback(sub_cb)
    client.connect()
    print(client, status)
    client.subscribe(TOPIC)
    print("Connected to %s, subscribed to %s topic" % (server, TOPIC))

    while status == 'run':
        client.wait_msg()
        time.sleep(0.01)
        pass
    client.disconnect()
    return


if __name__ == '__main__':
    do_connect()
    connect()

修改你的mqtt服务器账户密码,WIFI账户密码,就可以使用了

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2022-04-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 设备
  • 软件
  • 概要
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档