用于上传文件到运行NodeMCU的ESP8266文件系统的工具。
项目描述
nodemcu-uploader.py
用于将文件上传到运行NodeMCU的ESP8266文件系统以及一些其他有用命令的简单工具。
它应该在Linux和OS X上工作;并且可以处理任何适合文件系统的文件,二进制或文本。
master |
---|
请注意,这些测试可能不完整,可能存在测试本身的问题。
维护者招募
嗨,该项目需要维护,而我(kmpm)没有足够的时间来维护该项目。有关如何处理此事的更多信息,请查看https://github.com/kmpm/nodemcu-uploader/issues/90,或通过电子邮件me@kmpm.se联系我
安装
应可通过PyPI(首选)安装,但仍可能存在打包问题。
pip install nodemcu-uploader
nodemcu-uploader
否则,从GitHub克隆并直接运行
git clone https://github.com/kmpm/nodemcu-uploader
cd nodemcu-uploader
python ./nodemcu-uploader.py
请注意,pip会安装pyserial >= 2.7。终端命令(使用pyserial的miniterm)可能无法根据所使用的版本正常工作。这是一个已知问题。
Windows注意事项
可能存在一些与Windows相关的重要问题。
OS X注意事项
要解决“ImportError: No module named serial”,请安装pyserial模块
python easy_install pyserial
用法
从http://nodemcu-build.com/下载NodeMCU固件。
从工具的v0.4.0版本开始,您需要使用2016年6月/7月的最新固件版本。固件中的默认波特率已从9600更改为115200,该工具也做了相应的更改。
如果您使用的是较旧的固件,您必须使用选项 --start-baud 9600
来使设备被识别。否则您将得到一个 未找到设备或端口错误。
有关更多使用详情,请参阅 doc 下的 USAGE.md
问题
在报告问题时,请提供操作系统(windows、mac、linux等)、此工具的版本 nodemcu-uploader --version
以及设备上固件的版本。如果您从 http://nodemcu-build.com/ 获取了固件,请告知它是否为dev或master分支,以及创建的日期。
至于固件版本,我想要在设备启动时通过终端连接到设备所获取的详细信息的转储。它看起来像这样...
NodeMCU custom build by frightanic.com
branch: master
commit: b580bfe79e6e73020c2bd7cd92a6afe01a8bc867
SSL: false
modules: crypto,file,gpio,http,mdns,mqtt,net,node,tmr,uart,wifi
build built on: 2016-07-29 11:08
powered by Lua 5.1.4 on SDK 1.5.1(e67da894)
当您尽可能多地获取这些信息后,请在github上创建一个 issue,https://github.com/kmpm/nodemcu-uploader/issues
技术细节
这几乎使用了xmodem协议的实现来上传/下载部分。主要缺失的部分是校验和重传。
这是通过首先使用普通终端模式创建一组辅助函数来准备设备实现的。这些函数利用内置的uart模块进行实际传输,并将传输切割成一系列可管理的块,在接收端重新组装。
上传
- 客户端调用 recv() 函数
- NodeMCU 禁用回显并发送 'C' 来告知它已准备好接收数据
- 客户端发送以 0x00 结尾的文件名
- NodeMCU 发送 ACK
- 客户端根据定义发送数据块
- NodeMCU 发送 ACK
- 步骤 5 和 6 重复,直到 NodeMCU 接收到大小为 0 的块。
- NodeMCU 再次启用具有回显的正常终端
下载
- 客户端调用 send() 函数。
- NodeMCU 禁用回显并等待启动。
- 客户端发送 'C' 来告知它已准备好接收数据
- NodeMCU 发送以 0x00 结尾的文件名
- 客户端发送 ACK
- NodeMCU 根据定义发送数据块。
- 客户端发送 ACK
- 步骤 5 和 6 重复,直到客户端接收到的块大小为 0。
- NodeMCU 再次启用具有回显的正常终端。
数据块定义
SOH,大小,数据[128]
- SOH = 0x01
- 单字节表示实际上使用了 128 字节数据中的多少。
- 使用随机字节填充数据以填满 128 字节的帧。
这使得每个块总共 130 字节。
决定块大小的理由是...
- 接近 xmodem,其中灵感来源于此
- 固定大小使得很容易使用 uart.on('data') 事件。
- 130 字节可以适应接收缓冲区。
- 如果上传的总大小不是允许的数据大小的整数倍,则不会浪费太多流量。
免责声明
本软件按“原样”提供,不提供任何形式的保证,无论是明示的还是暗示的,包括但不限于适销性、特定目的的适用性和非侵权性。在任何情况下,作者或版权所有者均不对任何索赔、损害或其他责任承担责任,无论这些责任是源于合同、侵权或其他方式,也不论这些责任是源于、源于或与软件或软件的使用或其他方式有关。
项目详情
下载文件
下载适用于您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。