|
本帖最后由 生子当如哈士奇 于 2017-2-6 16:25 编辑
此篇体验记录主要做两件事:
1.体验一下mcu代码生成。
2.体验一下websocket的控制。
适读人群:有STM32基本使用经验的人。
第一件事是使自己的gokit2.3成为自己应用的设备:
1.创建产品,创建APP应用,设置数据点等一堆操作。
2.MCU开发->生成Stm32代码->生成MCU代码。
3.编写用户代码并下载到开发板上。
我把我的工程上传到附件了,你们可以下载来参考。
test.zip
(8.23 MB, 下载次数: 210)
我体验所创建的数据点:
生成MCU代码下载简单阅读后,感叹道,这代码写得真好0.0学习了。
代码那里我就做了三件事:
- 1.移植了gokit2.3官方代码的led,rgb_led的文件进去。
- 2.短按key1给数据点test_number加1,短按key2减1。
- 3.数据点test_bool为真时开灯(RBG三色灯),假时关灯 。
值得注意的是,生成的代码airlink时并不会亮灯,长按key2依然能通过使用机智云的APP通过配置上网以及控制。配置完之后就能用APP控制了。按键加1减1,在APP上控制开关灯。
如图:
第二件要做的事是,使用网页实现远程监控:
websocket通信必须先用户登陆,这就要有"appid": ,"uid": ,"token",appid是创建应用的时候得到的。
1.先通过OpenAPI,注册/登陆用户得到uid,与token。(
http://swagger.gizwits.com/doc/index/openapi_apps#!/%E7%94%A8%E6%88%B7%E7%AE%A1%E7%90%86/post_app_users
我把我的数据直接附上,供大家更方便的参考,不得不说这一块是有点恶心。)
- Product Key:
- 70a3b07bf61a4b5a8b184e8d730dee56
- Product Secret:
- 17f5659d1c214818a5006505d538468f
- App ID
- 9c8a317091cc4540a0057ef58d0c627b
- App Secret
- c46e5723c8e3469aae27e8867a5c6a50
- {
- "phone_id": "12345678987",
- "username": "alw",
- "password": "123456",
- "email": "123@qq.com",
- "phone": "12345678987",
- "code": "string",
- "lang": "en",
- "authData": {
- "src": "qq",
- "uid": "string",
- "token": "string"
- }
- }
- { "token": "19996d2e333448aaa2eac7cbbb61d3ce", "uid": "cd8beadf369d461e97c70136bb87ab61", "expire_at": 1486803595}
复制代码
2.绑定硬件
时间戳:http://unixtime.51240.com/
md5:http://md5jiami.51240.com/
- 时间戳:1486198987
- Product Secret:
- 17f5659d1c214818a5006505d538468f
- 17f5659d1c214818a5006505d538468f1486198987
- md5:
- 5eff5269ce2eaf4e01b7d3ffa74c4202
- mac:60019406c75f
- {
- "product_key": "70a3b07bf61a4b5a8b184e8d730dee56",
- "mac": "60019406c75f",
- "remark": "true",
- "dev_alias": "abc"
- }
- { "remark": "true", "ws_port": 8080, "did": "yRcxQpfuGjyC3F85tiV29Z", "port_s": 8883, "is_disabled": false, "host": "sandbox.gizwits.com", "product_key": "70a3b07bf61a4b5a8b184e8d730dee56", "port": 1883, "mac": "60019406c75f", "role": "normal", "dev_alias": "abc", "is_online": false, "passcode": "RYAXTWATSJ", "type": "normal", "wss_port": 8880}
复制代码
3.websocket
websocket的部分代码:
就是一个网页,具体文件我已经放到了html文件夹下的index.html,我可以实现开关灯,按键上传数据。
这部分我重点示范一下。毕竟部分搞硬件的网页知识几乎为零。我先讲进websocket怎么用先,先不用管websocket是什么鬼东西了,上车。
打开网页先按F12调用 chrome的调试面板,如图操作,然后在console那里输入以下代码(注意分两步输入。)
如果没有意外的话,应该是每次按key都能看到websocket传来数据:
- //第一步输入:输入第一步后,就会多一个名为V1的websocket通信。
- var ws=new WebSocket('ws://sandbox.gizwits.com:8080/ws/app/v1');
- //第二步:第二步就是用户登陆啦~
- var p=
- {
- "cmd": "login_req",
- "data":
- {
- "appid": "9c8a317091cc4540a0057ef58d0c627b",
- "uid": "cd8beadf369d461e97c70136bb87ab61",
- "token": "19996d2e333448aaa2eac7cbbb61d3ce",
- "p0_type": "attrs_v4",
- "heartbeat_interval": 120
- }
- }
- ws.send(JSON.stringify (p));
复制代码
index.html的具体代码你可以打开来看一下,主要就是websocket的使用。
如图所示,我自己可以通过按键在网页上实时 显示。在网页上开关灯。
要想开关灯成功,必须修改里面的did,毕竟代码里的did指向的是我的gokit2.3而不是你的~
document.getElementById('led_open').onclick=function(){
var p={
"cmd": "c2s_write",
"data":
{
"did": "yRcxQpfuGjyC3F85tiV29Z",
"attrs":
{
"test_bool":true
}
}
};
ws.send(JSON.stringify (p));
}
document.getElementById('led_close').onclick=function(){
var p={
"cmd": "c2s_write",
"data":
{
"did": "yRcxQpfuGjyC3F85tiV29Z",
"attrs":
{
"test_bool":false
}
}
};
ws.send(JSON.stringify (p));
}
}
体验总结:
- 1.自动生成的代码写得真特么有学习价值。
- 2.自动生成的代码主要“自动”做了几件事:根据你的产品自动填写了productkey,根据你设置的数据点来自动生成数据点的结构体。
- 3.如果能直接在stm32代码里直接定义wifi的SSID跟密码那就爽了。
- 4.自动生成的代码里有key1,key2的代码,但没有写rgb_led的代码,搞得我一开始长按key2,airlink时,咦?为什么绿灯没亮?是不是不行?。。。其实呢,没有也正常,就是自己傻,以为有。。。
|
|