8266使用巴法云OTA

为了使用方便把OTA封装一下为以下类

#include "ESP8266HTTPUpdate.h"

class OTA
{
private:
    ESP8266HTTPUpdate httpUpdate;

    // using HTTPUpdateStartCB = std::function<void()>;
    void OnStartCB()
    {
        Serial.println("开始OTA升级");
    }
    // using HTTPUpdateEndCB = std::function<void()>;
    void OnEndCB()
    {
        Serial.println("结束OTA升级");
    }
    // using HTTPUpdateErrorCB = std::function<void(int)>;
    void OnErrorCB(int ec)
    {
        Serial.println("OTA升级错误:" + ec);
    }
    // using HTTPUpdateProgressCB = std::function<void(int, int)>;
    void OnProgressCB(int cur, int total)
    {
        Serial.println("OTA升级中:" + String(cur) + "/" + String(total));
    }

public:
    void updateBin()
    {
        if (CConfigMgr::getSingleton().OTAURL().isEmpty())
        {
            Serial.println("OTA url为空,无法升级");
            return;
        }
        Serial.println("ota升级,禁止切断电源");
        WiFiClient UpdateClient;
        httpUpdate.setLedPin(2);
        httpUpdate.rebootOnUpdate(true);
        httpUpdate.onStart(std::bind(&OTA::OnStartCB, this));
        httpUpdate.onEnd(std::bind(&OTA::OnEndCB, this));
        httpUpdate.onError(std::bind(&OTA::OnErrorCB, this, _1));
        httpUpdate.onProgress(std::bind(&OTA::OnProgressCB, this, _1, _2));

        HTTPUpdateResult ret = httpUpdate.update(UpdateClient, CConfigMgr::getSingleton().OTAURL());
        switch (ret)
        {
        case HTTP_UPDATE_FAILED: // 当升级失败
            Serial.println("升级失败.");
            break;
        case HTTP_UPDATE_NO_UPDATES: // 当无升级
            Serial.println("无升级.");
            break;
        case HTTP_UPDATE_OK: // 当升级成功
            Serial.println("升级成功.");
            break;
        }
    }
};

当接收到ota命令时直接

 OTA ota;
    ota.updateBin();

即可.

这里的CConfigMgr是一个单例类它保存了一些从eeprom读取的配置信息其中

CConfigMgr::getSingleton().OTAURL()返回OTA的URL.这个地址可以从巴法云的主题处获取 

 点击 这里的OTA即可上传固件.上传以后

这里就是需要的URL,这个URL是和当前主题绑定的,即这个主题的OTA url始终是这个.所以你可以写死在代码里,也可以像我一样保存是EEPROM. 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值