Get Started

本指导仅使用Wio v2 APIs和UDP烧写工具完成Thing的创建,注册,升级。 本例子Wio服务器地址:https://wio.forkthings.com

通过SSO注册和登陆用户,获取用户token

在本例中,我们使用的测试服务器是用的是Seeed用户系统,支持SSO。登陆https://wio.seeed.io/login 。输入Seeed账户密码或者第三方验证,获取access_token.

=====For Wio v1=====
token: FW1IHmsdGGYUFWhr

=====For Wio v2 (test)=====
sso token: 0705e3546b1132f7a5184f3911a322cb

使用sso token。

通过token创建Thing

curl -X POST -H "Authorization: token 0705e3546b1132f7a5184f3911a322cb" -H "Content-Type: application/json" -d '{
    "board": "Wio Link v1.0"
}' "https://wio.forkthings.com/v2/things"

返回

{
  "thing_id": "cdf220ab8e9b49b2b23f9449a58cf239",
  "user_id": "210181",
  "firmware_id": null,
  "key": "8a04bd9b02144598877cbdff90e36856",
  "name": "",
  "board": "Wio Link v1.0",
  "registered": false
  "online": false,
  "pp_id": null,
  "page_url": "https://wio.forkthings.com/v2/things/cdf220ab8e9b49b2b23f9449a58cf239/page",
  "created_at": "2016-12-19T09:34:32Z",
  "updated_at": "2016-12-19T09:34:32Z"
}

烧写Thing ID和Thing key到设备上,并校验激活

下载安装wio-cli工具 $pip install wio-cli 执行 $wio upd –send “APCFG: YOUR_WIFI_SSID\tYOUR_WIFI_SSID\t8a04bd9b02144598877cbdff90e36856\tcdf220ab8e9b49b2b23f9449a58cf239\thttps://wio.forkthings.com\thttps://wio.forkthings.com\t\r\n” 返回 ok

等待一会儿,检查Wio板子上的指示灯,当一闪一闪时,代表已经连上服务器。

发送校验注册API

TODO, swagger api + source 当返回204代表注册成功。

创建Fireware

curl -X POST -H "Authorization: token af0cc2340935b6d98c46a247f8facb0c" -H "Content-Type: application/json" -d '{}' "https://wio.forkthings.com/v2/firmwares"

返回

{
  "firmware_id": "a35c8f86689d4da69df5ebb63a289292",
  "user_id": "210181",
  "name": null,
  "desc": null,
  "firmware_type": "flexible",
  "fixed_url": null,
  "bin_url": null,
  "size": null,
  "sha": null,
  "config": {
    "board_name": "Wio Link v1.0",
    "connections": []
  },
  "created_at": "2016-12-20T06:07:58Z",
  "updated_at": "2016-12-20T06:07:58Z"
}

修改Firmware配置(可选)

这里修改它的名字和描述,以及Grove的连接配置

curl -X PATCH -H "Authorization: token af0cc2340935b6d98c46a247f8facb0c" -H "Content-Type: application/json" -d '{
  "name": "Hello-World",
  "desc": "first firmware with config",
  "config": {
    "board_name": "Wio Link v1.0",
    "connections": [
      {"sku": "101020019-ffff", "port": "D0"}]
  }
}' "https://wio.forkthings.com/v2/firmwares/a35c8f86689d4da69df5ebb63a289292"

返回

{
  "firmware_id": "a35c8f86689d4da69df5ebb63a289292",
  "user_id": "210181",
  "name": "Hello-World",
  "desc": "first firmware with config",
  "firmware_type": "flexible",
  "fixed_url": null,
  "bin_url": null,
  "size": null,
  "sha": null,
  "config": {
    "board_name": "Wio Link v1.0",
    "connections": [
      {
        "sku": "101020019-ffff",
        "port": "D0"
      }
    ]
  },
  "created_at": "2016-12-20T06:07:58Z",
  "updated_at": "2016-12-20T06:15:01Z"
}

到这里一个简单的固件项目已经创建完毕,下一节展示增加自己的APIs到固件项目。

增加ULB逻辑(可选)

curl -X PUT -H "Authorization: token af0cc2340935b6d98c46a247f8facb0c" -H "Content-Type: text/plain" -H "Cache-Control: no-cache" -H "Postman-Token: 0f5c77b2-5fdb-abde-4e20-20ed2d1e6086" -d '#include "wio.h"
#include "suli2.h"
#include "Main.h"

void setup()
{
}

void loop()
{

}
' "https://wio.forkthings.com/v2/firmwares/a35c8f86689d4da69df5ebb63a289292/ulbs/test/m.cpp"

TODO, 需要一个完整的增加API的例子 返回

{
  "firmware_id": "a35c8f86689d4da69df5ebb63a289292",
  "path": "test/m.cpp",
  "name": "m.cpp",
  "content": "#include \"wio.h\"\r\n#include \"suli2.h\"\r\n#include \"Main.h\"\r\n\r\nvoid setup()\r\n{\r\n}\r\n\r\nvoid loop()\r\n{\r\n\r\n}\r\n",
  "encoding": "plain",
  "size": 102,
  "sha": "33d97c3c654b9a0252c97859d102b47f8c882bc9",
  "created_at": "2016-12-20T06:20:05Z",
  "updated_at": "2016-12-20T06:20:05Z"
}

更新Thing的固件

Firmware项目创建后,并不需要立即生成实际的可执行文件。通过Thing的OTA API可以把Firmware固件写入Thing,后台会自动生成实际的可执行文件。

curl -X POST -H "Authorization: token af0cc2340935b6d98c46a247f8facb0c" -H "Content-Type: application/json" -d '{
  "firmware_id": "a35c8f86689d4da69df5ebb63a289292"
}' "https://wio.forkthings.com/v2/things/cdf220ab8e9b49b2b23f9449a58cf239/ota"

返回

{
  "thing_id": "cdf220ab8e9b49b2b23f9449a58cf239",
  "firmware_id": "a35c8f86689d4da69df5ebb63a289292",
  "ota_at": "2016-12-20T06:24:55Z",
  "status": "queue",
  "status_text": "in Queue, high priority",
  "updated_at": "2016-12-20T06:24:55Z"
}

OTA任务已经启动,等待后续完成。

通过状态API,可以查询OTA的过程。

curl -X GET -H "Authorization: token af0cc2340935b6d98c46a247f8facb0c" "https://wio.forkthings.com/v2/things/cdf220ab8e9b49b2b23f9449a58cf239/ota"

查询Thing的可用APIs

curl -X GET -H "Authorization: token af0cc2340935b6d98c46a247f8facb0c" "https://wio.forkthings.com/v2/things/cdf220ab8e9b49b2b23f9449a58cf239/ota"

返回一个网页,通过列表方式展示可以使用的Grove Web APIs.