# Bemfa Cloud SDK for MicroPython
**Repository Path**: walkline/bemfa-cloud-sdk-for-micropython
## Basic Information
- **Project Name**: Bemfa Cloud SDK for MicroPython
- **Description**: 基于 MicroPython 编写的巴法云开放平台接入开发工具。
- **Primary Language**: Python
- **License**: MIT
- **Default Branch**: main
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 1
- **Created**: 2025-01-16
- **Last Updated**: 2025-02-18
## Categories & Tags
**Categories**: Uncategorized
**Tags**: MicroPython, 巴法云, TCP
## README
Bemfa Cloud SDK for MicroPython

### 项目介绍
基于 MicroPython 编写的巴法云开放平台接入开发工具。
根据巴法云提供的文档可以知道,他们提供了三种接入协议:
* TCP 协议
* MQTT 协议
* 图片存储云
第二个太常见了不做考虑,第三个是收费的所以也不做考虑,所以本项目中使用的是 TCP 接入协议。
### 如何测试
#### 准备测试用到的类库文件
为了编写代码方便所以我把一些常用的类库编译到了自定义固件中,你可以查看 [自定义固件文件说明](./firmware/README.md) 并烧录使用它们。
测试代码中用到了下边这两个类库文件(自定义固件中已包含):
* [dispatcher.py](https://gitee.com/walkline/micropython-timer-dispatcher/raw/master/dispatcher.py)
* [button.py](https://gitee.com/walkline/micropython-drivers/raw/master/button.py)
你可以使用自定义固件,也可以点击上边的链接下载源文件再上传到开发板,或者使用`repl`进入交互环境直接下载。
```python
import mip
mip.install('https://gitee.com/walkline/micropython-timer-dispatcher/raw/master/dispatcher.py', target='/')
mip.install('https://gitee.com/walkline/micropython-drivers/raw/master/button.py', target='/')
```
#### 获取巴法云平台相关信息
注册登录账号的过程就不说了,只需要在 [TCP设备云](https://cloud.bemfa.com/tcp/index.html) 中新建一个名为`light002`的主题,并复制`用户私钥`即可。
#### 修改测试代码中的用户信息
将`tcpclient_demo.py`文件中以下常量修改为对应的信息。
```python
LED_PIN = 48 # 板载 LED 引脚
BOOT_PIN = 0 # BOOT 或其它按键引脚
# 用户私钥
BEMFA_SECRET_KEY = ''
# Wifi 信息
WIFI_SSID = ''
WIFI_PASSWORD = ''
```
#### 上传必要的文件
确保正确上传以下文件即可:
* `dispatcher.py`
* `button.py`
* `protocol/nonblocking_tcpclient.py`
#### 运行测试代码
开发板连接的 Wifi 热点最好是使用手机开的热点,方便做后续的场景模拟测试操作。
> 手机开热点必须为`2.4G`模式,同时打开 Wifi 和移动数据开关。
1. 在开发板上运行`tcpclient_demo.py`文件
2. 一切正常的情况下会提示主题订阅成功,即:`Subscribe Successed`
3. 使用`BOOT`按键切换 LED 显示状态,并观察提示信息,同时访问 [TCP设备云](https://cloud.bemfa.com/tcp/index.html) 网站查看状态是否已同步
4. 关闭手机 Wifi 开关,同时多次切换 LED 显示状态,并观察提示信息
> 此时开发板会断开连接并尝试重新连接,要特别注意重连过程中是否可以切换 LED 显示状态
5. 开发板重新连接成功后(当前手机热点使用的是移动数据),切换 LED 显示状态并观察提示信息
6. 关闭手机移动数据开关,同时多次切换 LED 显示状态,并观察提示信息
7. 重新打开手机移动数据和 Wifi 开关,切换 LED 显示状态并观察提示信息
#### repl 输出内容
```docs
# 手机通过 Wifi 和移动数据连接外网,并开启热点
[2000-01-01 00:16:35][main] Start running
[2000-01-01 00:16:36][wifi] WiFi Connected
[2000-01-01 00:16:37][wifi] Internet Connected
[2000-01-01 00:16:37][tcp] Connected to Bemfa Cloud Server
# 主题订阅成功
[2025-01-14 14:35:43][sub] Subscribe Successed
# 使用 BOOT 按键切换 LED 显示状态
[2025-01-14 14:35:50][pub] Publish Successed
[2025-01-14 14:35:51][new_msg] time: 1736836550, topic: light002, msg: off
[2025-01-14 14:35:52][pub] Publish Successed
[2025-01-14 14:35:52][new_msg] time: 1736836552, topic: light002, msg: on
# 断开手机 Wifi
[2025-01-14 14:35:58][tcp] Disconnected from Bemfa Cloud Server
[2025-01-14 14:35:58][wifi] Internet Connection Lost
# 自动通过移动数据连接外网
[2025-01-14 14:35:59][wifi] WiFi Connected
[2025-01-14 14:36:00][wifi] Internet Connected
[2025-01-14 14:36:00][tcp] Connected to Bemfa Cloud Server
# 重新订阅主题
[2025-01-14 14:36:00][sub] Subscribe Successed
# 切换 LED 显示状态
[2025-01-14 14:36:00][pub] Publish Successed
[2025-01-14 14:36:02][pub] Publish Successed
[2025-01-14 14:36:03][new_msg] time: 1736836563, topic: light002, msg: off
[2025-01-14 14:36:04][pub] Publish Successed
[2025-01-14 14:36:04][new_msg] time: 1736836565, topic: light002, msg: on
# 关闭移动数据,手机没有任何外网连接
[2025-01-14 14:36:18][tcp] Disconnected from Bemfa Cloud Server
[2025-01-14 14:36:18][wifi] Internet Connection Lost
[2025-01-14 14:36:21][wifi] WiFi Connected
[2025-01-14 14:36:21][wifi] No Internet Connection
# 重新开启移动数据
[2025-01-14 14:36:28][wifi] WiFi Connected
[2025-01-14 14:36:30][wifi] Internet Connected
[2025-01-14 14:36:30][tcp] Connected to Bemfa Cloud Server
# 重新订阅主题
[2025-01-14 14:36:31][sub] Subscribe Successed
# 切换 LED 显示状态
[2025-01-14 14:36:34][pub] Publish Successed
[2025-01-14 14:36:37][pub] Publish Successed
[2025-01-14 14:36:38][new_msg] time: 1736836598, topic: light002, msg: off
[2025-01-14 14:36:40][pub] Publish Successed
[2025-01-14 14:36:40][new_msg] time: 1736836600, topic: light002, msg: on
# 重新开启手机 Wifi,外网连接断开
# 猜测手机热点优先使用 Wifi 流量,所以把数据流量断开了
[2025-01-14 14:36:51][tcp] Disconnected from Bemfa Cloud Server
[2025-01-14 14:36:51][wifi] Internet Connection Lost
# 开发板重新连接手机热点
[2025-01-14 14:36:52][wifi] WiFi Connected
[2025-01-14 14:36:53][wifi] Internet Connected
[2025-01-14 14:36:53][tcp] Connected to Bemfa Cloud Server
# 重新订阅主题
[2025-01-14 14:36:53][sub] Subscribe Successed
# 切换 LED 显示状态
[2025-01-14 14:36:55][pub] Publish Successed
[2025-01-14 14:36:56][new_msg] time: 1736836616, topic: light002, msg: on
[2025-01-14 14:36:56][pub] Publish Successed
[2025-01-14 14:36:57][new_msg] time: 1736836617, topic: light002, msg: off
[2025-01-14 14:36:57][pub] Publish Successed
[2025-01-14 14:36:58][new_msg] time: 1736836618, topic: light002, msg: on
```
### 合作及交流
* 联系邮箱:
* QQ 交流群:
* 走线物联:[163271910](https://jq.qq.com/?_wv=1027&k=VlT7Bjs9)
* 扇贝物联:[31324057](https://jq.qq.com/?_wv=1027&k=IQh2OLw9)

