物联网
本帖最后由 micolover 于 2015-7-24 14:47 编辑 ; Z. X5 j! P% S8 n# z& l
4 I* J9 ]+ x+ s1 W0 t" z3 h" F
前言 9 q5 c& L4 s/ m' ]/ L
大神玩转MiCO好生羡慕
4 ~3 B6 r; M x. X! P$ v2 k 菜鸟低头不语无从下手 3 q8 w9 ?* H) [% k4 b- ~! ?9 K# B
别慌~看完下面的 武功秘籍 ,你也能成为 一代米侠 , 被人仰望 !
' X( P0 H: ]+ z+ a4 M: H: W2 U: }
3 s; p; Z) l1 X2 A- f1 Z( s 一.微信控灯十一式
3 c, S+ j: x2 ]# ^4 c 第一式:注册开发者账号
" b D( e( M+ Y8 G4 w/ \1 t. @ 第二式:使用个人微信号开通测试公众号
; d2 m/ d @( a$ D9 ? 第三式:在FogCloud上创建、定义自己的产品
4 l+ T# H' N$ [( r+ U3 P9 _ 第四式:在FogCloud上创建产品对应的微信APP * z' @( r7 Z1 p& k/ M
第五式:Github上创建微信APP代码托管仓库
. ` P% a K% b% O f9 A 第六式:配置微信APP以及微信测试公众号
* G/ z4 P9 }- u7 l* ` 第七式:使用MiCO SDK开发RGB LED灯的固件 9 y" |" U+ z! N, t/ ~2 ~( i4 m& l9 R
第八式:用网页编辑工具(sublime等)开发微信APP代码 # v- R& Z" G# d2 c$ R
第九式:使用Github工具托管APP代码
) E: `% D/ x& ^! A6 M! C8 ~% ~: V 第十式:FogCloud上生成设备二维码
& W" \* n. L; h# {& p" ~& Y' v+ M 第十一式:使用手机 微信扫码,测试“Airkiss”配网功能以及设备控制功能。
0 Y9 F- _0 M5 K3 P( C# M+ p 二.基本功 h+ K7 Y6 P1 [8 n: E
注意:练功开始前请确定射频驱动为最新版本 2 B. O$ i, [+ Z! l5 Z! b
版本查询及升级方法请参考MiCO社区 → wiki中心 → MiCOKit板块射频驱动升级
9 q+ S4 H% ^- e 1. MiCOKit-3288开发套件;
: M1 d* z" F+ L, W7 A+ l# }; d% y 2. 开发工具请使用IAR7.3版本及以上; 6 o- I. B6 r! u, h
3. FogCloud开发者账号(Fog云使用、开发必须); 4 e4 j- a6 s6 e2 |1 f( E3 y
4. MiCO SDK v2.2.0(固件开发包);
8 r$ |5 c4 i, I8 S, z$ q0 } 5. 个人微信号(开通测试公众号); k" `4 s4 R. c4 ]
6. github个人账号(托管微信APP代码);
! M4 G, u) p; m0 y& }" U+ x. S 7. 网页编辑工具(sublime等);
6 U/ \4 z5 n2 j: G! t3 p 8. 大致了解MQTT协议及json格式。 : Y2 y6 {/ ~. x# X: N* r
: Y; z! v- K! ^* R* f; o; b6 p 三.招式详解
/ ?6 |. M5 w% k/ K5 L, f- G5 P8 j * G! y! a- Q8 n
第一式:注册开发者账号 # Z0 d9 O$ h- {5 b0 `# C& v
登录 www.fogcloud.io 直接注册账号即可。该账号将用来管理你的产品及APP。
. {; H" e: |* B1 N ( t6 D6 O0 X* x7 R0 U! T* |
[/url]
& J1 v& Z$ Y0 J% g: `8 M( a y- L8 K( ~; S3 H
3 T/ a3 I! n" w
7 O' J' d8 i- }/ w2 H& B
6 w' e. U, T1 L% f" v9 S5 R- K 第二式:使用个人微信号开通测试公众号 2 K9 R- d* w' z. H. g9 K% v
浏览器打开 [url=http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login]http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login ,点击登录,使用手机微信扫码,进入后即开通了测试公众号。 - a; @! c: z. D7 H
: L9 s4 ^9 f1 f: ]6 b5 E5 `4 X) L0 U" F [/url]
+ b6 V8 u5 C) V& k 1 i" q9 v8 [( B8 G \9 M' W1 _
5 w# ?7 r0 O) t3 i! Z 获得微信号、appID、appsecrect,用于后续在FogCloud上创建产品对应的微信APP。
: o4 L7 V, D0 x2 W- f) X# m: } 8 ~) e- J; u. w; G, g
[url=http://mico.io/ask/uploads/article/20150723/923e41bc3c91f99ba548d65e2ddd7ec6.png]
7 {: o7 B) _+ [0 O 7 ?5 C: _% y: e" L. D1 a
4 h9 S% Z( T3 ]+ Q- `: F, |9 S3 I
第三式:在FogCloud上创建、定义自己的产品 2 X) ~& n6 z& H! n* p- P1 E5 c/ u
. c1 a- H: Q. _6 L6 M+ W [/url]
) c5 E) \2 y$ g) }& r
7 Y% A6 V2 n( E* ~, X8 ^% t ?& h3 K- n6 H* z* _- v P" Z
根据提示填写相关信息,创建完成后,如下 2 r9 D6 s) g3 s) f9 a6 A
2 H7 ^& m9 q5 j3 I) D3 R: m [url=http://mico.io/ask/uploads/article/20150723/ac518bc12959f06f82624e4d9e6fc841.png]
$ }- \2 j B! ` 8 O. J8 M8 s: O0 D/ c
+ L2 _: J* M+ }6 ?
点击产品名称,进入详细信息: . f: z4 b+ [- }$ Z! u+ O8 @) ?, K
( {# N, V% V1 {2 r2 c. t9 b+ @2 f [/url]
1 |5 m! ?7 |! Y5 B 0 b' H+ y4 a0 {. w
$ h6 Q( c# F) d5 C6 j$ B
产品ID/KEY会写到设备固件代码中; 1 ?( h7 f, s9 ~+ G; v
创建产品的数据模型,数据模型是用来在云端定义产品功能、性能等特征数据的标准格式,可以储存设备监控、收集、控制、用户行为等数据,从而对数据进行分析,提升产品服务,开发案例过程中定义数据模型,能够有效帮助开发者将APP、云端与设备端的关键功能、特征数据等同步,避免开发过程出错。 * U5 R3 }: j/ Q1 a9 G: V
$ v/ b( y$ q, D. Y/ H3 r3 ~( v5 d
[url=http://mico.io/ask/uploads/article/20150723/419d8575656778d542b24f70ff5d4aa2.png]
, O4 t0 M+ {" \% ^& U " ~9 v3 ^( L( b/ r. h
1 f0 a* c- Z) \2 N, | 本实例仅控制MiCOKit-3288上的一个RGB LED灯,所需创建的控制数据点有: 2 v0 Z$ C( `( b# Z; r
1)开关(rgbled_switch) 读写属性为1 时间序列为否 ) ]6 O/ W) \3 D- M: K
2)色相(rgbled_hues) 读写属性为1 时间序列为否 : C# _" e% d8 p/ Z( q3 H
3)饱和度(rgbled_saturati on) 读写属性为1 时间序列为否 : n: k. n9 K p6 J
4)亮度(rgbled_brightness) 读写属性为1 时间序列为否 5 I# G3 ~& p7 m7 O+ O" o0 g
*属性名和描述可按个人习惯添加
" [; Z; a" p1 G, @ 注意:在创建数据点时,“时间序列”选项:选中时云端保存历史数据;不选时云端只保存最新的数据。 ~8 N+ Q+ G! l# J6 S
数据模型的具体作用在后面的进阶教程中详细讲解。
7 p) p7 p/ s1 J
+ F' ~* i9 [# {" s# z 第四式:在FogCloud上创建产品对应的微信APP ! S. B# V! s5 M2 n8 P$ a/ W
i& I3 \- D1 `; [/ B; C6 |, o
$ O. _5 J$ f0 R# L( ]3 D- t [/url]
- @9 B& S+ Q* @1 v/ C+ ~* [5 S
* A/ f& @" M7 ^1 _# Y5 w ) Y# B( e) J) o- E' J
根据提示,填写相关信息,其中微信号、AppID/AppSecret从步骤2中开通的微信测试公众号中获得。
4 _. h4 y3 |3 ^# a! t7 O3 U 6 N0 ?6 X- c) s4 Q+ }' U3 w
[url=http://mico.io/ask/uploads/article/20150723/12165d0d0d83feb3aba6851cc9588c08.png]
$ H( e" l* ^. s, y f P6 E6 [( K
) N( K/ \% H+ ]% | 0 m7 `) g8 O1 z* L7 u) n
第五式:Github上创建微信APP代码托管仓库
) n/ q7 a6 w5 a: Q3 p3 ~ 请登录github.com自行创建新仓库。并克隆到本地,克隆方法详见《上传文件到GitHub》。该步骤的目的是获得一个可以在任何地方访问的git仓库,后面会使用该仓库托管微信APP的代码(其他类似git仓库托管工具也可以)。
- N$ p- F' s7 k4 {# l% y
$ }/ p& t* G# x2 H" F' @ [/url]
' U' \1 V& B% J3 a( v) ? # s& H! H4 h( [" V
3 J5 s" f6 b4 l+ F' A/ O
获得仓库地址,例如: https://github.com/wangeshen/MiCOKit_test.git
% X2 J8 o0 g) a. R9 R. y, K 0 u9 O; @3 f3 x4 k' ~8 C
1 B. s" s& S. ^2 m+ R! q 第六式:配置微信APP以及微信测试公众号 + O1 \8 D: b! y/ r7 h$ I. |
(a) FogCloud上的微信APP信息:
6 N- ?# X0 \% j I( N 4 s% w. i6 n8 s% {, C4 " @
[url=http://mico.io/ask/uploads/article/20150723/3e552dc6f9c1097d68b01b4643a04921.png] # z) c* b( T) L
' ^9 C$ z0 D# e8 f9 g* r: _6 e, m # h: [) }1 _6 J8 w3 r
其中URL和Token会在后续配置微信测试号时用到。 R% e: w+ h+ k" J3 ?
2 l, [: K& k" S
(b)Git部署(同步微信APP代码到FogCloud) 3 ?+ e6 X! K$ ^& l% `
3 l9 u$ p% Y) K% S1 w [/url] ) Z3 i- J9 `4 L
2 I7 r/ |; ?* l. y( o* _ 0 O8 l# S# J g- `1 g- z# F
其中:
& N+ w$ l: a) c9 F+ ] Repo即步骤5中创建的github仓库地址,填写后保存; " h3 _! Q) X6 k/ k6 O' k
Deploy key和Web Hook Url可添加到github仓库的设置中,以自动同步代码到FogCloud;也可以不添加,但是github仓库中代码更新后,需要手动点击“发布”按钮来同步代码,同步后右边可看到最新的代码提交记录。
- D5 x. V4 o$ ]. j 7 ^7 U w' y% L3 a+ T% n
/ i* U, C; @5 N+ ?3 o
[url=http://mico.io/ask/uploads/article/20150723/47bf7c17eb7ad746792160a06f14ab20.png] . v1 ^6 C5 g- s G* ^
$ S% S3 F/ J' N
; L/ N$ b5 e. H2 @7 n3 I" m (c) 微信菜单管理 2 V+ e- q8 s/ h5 c- f" A; @
通过FogCloud提供的微信公众号首页菜单定制功能,方便的定制手机端微信上的控制界面及功能;至少包含“Airkiss”按钮,打开微信Airkiss配网功能,“OAuth”按钮(名称可自定义)进入设备控制。 # P8 Z" b e/ e! Q( e2 Z0 F
1 b! [$ Q6 O- m6 \2 c 3 |4 N4 W4 y; d' H
[/url] ' L+ Z0 Y& D( S! n6 m
& W8 P5 H+ L# P1 I- f
& v2 {9 f8 S$ u9 S' p7 H (d) 设置微信测试公众号 URL与Token在创建的APP信息中可以找到 - W5 `& V1 I# _. N/ }
修改配置信息:
* }( i3 r0 S, Q- Q) R6 w$ c* ]# V URL一般为: [url=http://4addb71f-1b5c-xxxx-94c5-f/]http://4addb71f-1b5c-XXXX-94c5-f ... ylink.io/wechat.php . C" m4 _1 d( P4 I) }7 A, E
下划线部分作为JS接口安全域名和授权回调页面域名。 7 z/ r; n: A6 m: ]9 I; M+ X4 A: Q
: ?5 |( k( h3 v6 L
[/url] " z& F' R2 s& Y& i+ D( I0 ^" p
; @3 L& x8 M4 y& z, w' ?" Y& j: [
/ J, h( I9 T4 a5 |
开通所有测试功能,并填写网页授权域名:
. a& w8 j) n. d0 Z4 T1 s % b2 E; {4 b' ~( y t) [
[url=http://mico.io/ask/uploads/article/20150723/4147bd2c388956cee39120fa591cd440.png]
3 B5 w @: ^9 v
, F0 ?/ B, f1 [, w T: y
. z" N: J$ M% i2 j 点击修改,打开如下: 2 T& _- e5 R1 g+ i( p, Z6 L5 G( D
- d/ O, a; K: E
[/url]
& \3 Z# }3 _- _ % ?/ ^' J3 g) i7 Z) q+ [
; p5 T5 A7 C- l8 X0 a 同“JS接口安全域名”,格式为前面提供的URL的域名部分,如xxxx.app.easylink.io,其中“xxxx”为FogCloud上创建的微信APP的id。 % n v! B* C5 `. G
: @: Z7 `& }5 o7 C! K % ^2 i) z% L, N: F l6 U& u9 z
第七式:使用MiCO SDK开发RGB LED灯的固件
0 V* Q9 F1 H. H6 }0 \ (a) 登陆MiCO开发者网站mico.io,去MiCO社区注册账号,并登陆;
" B( m8 p! ~( I: `# S8 ]
/ D- a1 R6 ^5 Z: d. E [url=http://mico.io/ask/uploads/article/20150723/3c04c03f3d922eb74c06906c610b9290.png]
! w& y) h$ Q" O% e- i ; W) t0 a% M& i4 u
+ ^$ t c4 M+ B. p( `! @* {
(b) 重新打开mico.io首页,开发者中心 ==> Wiki中心,下载MiCO SDK。
8 d5 g F( y! O . v Q" f- _4 Z0 {# r# I% H9 d
[/url] & }* ^. s h( ]# w* i: I! G% @
2 d7 W4 b& [9 ?$ h* a' F8 M% P
7 ?( F9 t- A' y' q4 s) b0 L9 q
(c) 打开MiCO SDK中的微信开发实例工程:
- O4 L. _9 [9 F1 W5 @
( W+ i8 z+ P3 U, B [url=http://mico.io/ask/uploads/article/20150723/3c6381767bf00833cab64ed4c37df2f8.png]
! ]( g* s9 k# X ( X: y% C2 f& `* O' m! z
2 S% W- M/ k4 T2 u/ M& x/ K 1)开发者手中拿到的可能是硬件平台可能是MiCOKit3288或者MiCOKit3165,在编译工程时要先选择硬件平台; ' `6 @% D5 a% w2 @2 G/ C2 [
2)将FogCloud上创建的产品ID/KEY写入固件(必须替换): 7 C; c: E# T) M3 C
+ ^2 d! E, U8 W; r3 p
[/url] ) d+ p0 D! {4 n" |9 u
) { [+ Y! H: @$ E0 } D
8 Y* M0 v8 F$ s: W' w 3)修改版本号,这样才能把新的产品ID/KEY烧入FLASH ! m+ M ^) x" t7 M+ r; k L, w' P
+ E9 O8 @3 L9 L6 F) U2 _" ~2 [ [url=http://mico.io/ask/uploads/article/20150723/1661ce047fc9ea5e465db04acd59c24e.png]
$ u/ T; A3 \2 l6 m4 ]
& p1 q; y" u3 t x0 |& F2 G % V. N; `( I# j0 B: k) `' ~
4)添加LED灯控制代码:
$ x* j9 _1 p# r2 e 7 }9 {- S% y0 u5 h- P) |
[/url] . p k! o/ z7 P" I. E( O
& C% } Z+ ^+ H 6 \9 u5 g" U# k: ~# }
5)改为收到云端消息后,解析JSON数据,并控制LED。
2 z Y: q" s2 u3 E$ t& F/ }
6 w ^* C, m+ |0 Q4 h1 J [url=http://mico.io/ask/uploads/article/20150723/fb02025e4062a859d0d33d4178cd156a.png] # i# @, f1 X P: `3 L4 D
N, {, [0 X' C1 ^; z5 T2 D
" \8 X' ?- `! P) s. K! p$ A, H/ f
6)错误代码参考:在运行过程中如果出现错误,可在user_log中查看错误代码。
5 {2 a, \ F, B& w0 j # X* h3 ?. M" T' w
[/url] ( N8 ^. s @- E8 ^* n' F i
5 S4 T1 h9 Z* |( b * u' t; T# H" C$ k
[url=http://mico.io/ask/uploads/article/20150723/9f6828473efaa4a01ae4434c236a2ef6.png] , }: v$ Y5 i# D1 w
% s V6 l8 M' }( F/ B! o2 A ! T3 T+ Z# @. o1 x: [( O9 P0 L
7)MiCO SDK固件烧录。(详细固件烧录方法及步骤请参考 http://mico.io wiki中心) " U; _. U2 ?: Z+ [ R( k! V0 p
选择使用的烧录工具J-Link或者ST-LINK:
+ _! k3 ~; @- ?' d+ s1 S) i$ w+ q 1 r$ v+ y% ?/ |4 ?: k
[/url] 6 I. F, ]& O& @' @
) e. G8 h F. ], v* Q
- s. n2 w9 K0 [5 o5 X6 } 编译/连接: : l5 R3 ^" L. U! d6 B m+ j5 l
0 N( i5 P' @1 W [url=http://mico.io/ask/uploads/article/20150723/14ee93da638bb344905c2f6c7a8481ef.png]
6 h- }: R, N4 @8 b" q% |
: V8 ?$ s- o1 o g% E2 @/ j) f, \6 X0 x8 Y
烧录/下载:
R& J8 |/ [7 e4 ~) i! e* y$ v
i+ @5 `2 f/ _. N3 D [/url]
4 f. g2 V! [1 M $ W) T3 j. Y8 Z; m$ b
( p& F4 N% {& L+ ^9 n! `
第八式:用网页编辑工具(sublime等)开发微信APP代码 : ~. s! D3 D! U/ q$ [# Q0 e$ S& ^* D
以下为核心代码及其注释 " N1 N7 b+ t4 }1 q5 h! P' u% c6 t
//应用程序入口在application_start(void),一系列动作(如配网、连接云等)以后,用户程序入口在这里。 ( v. c/ H6 \- E! W" Y8 T$ C
OSStatus user_main( mico_Context_t * const mico_context
4 Z$ @' c$ e8 t( ]* c! v { ) M1 L/ X3 S5 F$ `
//user_log_trace();
) x. T; o# s: H0 @$ L1 L0 _- e OSStatus err = kUnknownErr; / u7 d. b2 P& ~+ _; C( F, d' k
fogcloud_msg_t *recv_msg = NULL;//接收数据结构体 2 w7 X% [; ?; G9 u, Y- N! O( O1 A* A
json_object *recv_json_object = NULL;//结构体内包含json数据格式
* j, X! D I7 i9 d1 S: r4 h /* rgb灯的色彩模式采取h***色彩模式(色相、饱和度、亮度) */
, b( D: M0 x8 \* v bool led_switch = false;//rgb灯开关 + z- Z% g- {2 h8 c6 X. {- S4 z! c# |
int led_hues = 0; ' q# D3 U4 Q/ k) H9 |8 K/ g7 o
int led_saturation = 0; ' [; {! W+ n& G$ d* p# C
int led_brightness = 0;
2 \. n4 B: M1 C3 B& B' v* M, g require(mico_context, exit); 2 D' _7 m( r2 R8 ?: |. k
h***2rgb_led_init(); // RGB_LED初始化
. S. V1 k: g4 Y0 ?" W( j while(1){
# [3 D- x! w5 x# O mico_thread_msleep(100); //延时100ms
6 y1 y. [ l& [2 U8 C // 检测 fogcloud 连接状态
/ R2 B9 O( L ?/ k0 F if(!mico_context->appStatus.fogcloudStatus.isCloudConnected){ . Y7 k1 ?! ]9 o1 z6 f
continue;
% c4 i* \2 K r/ @8 b6 k }
% U% @3 [( m: i /* & W8 z5 y0 r" a3 x" _# D6 [
接收来自云端的数据
" V% A( s( {; T' |3 R" ~' n, x" y% w recv_msg->data = + ! x% `/ H6 S+ Y. z3 A6 g5 Q; O4 s5 F' V
topic表示模块订阅的MQTT通道名,data表示云端返回的数据 % H3 N. E4 [# u) \4 B* T" G
*/ 5 ?( H. {& k N' s& C
err = MicoFogCloudMsgRecv(mico_context, &recv_msg, 100); # R1 s' ^& o- O: A% l5 }
if(kNoErr == err){
2 [7 ?. B. x( ^ // 打印 例://user_logtopic[30]=[de54a8ea/c8934691816b/in/write]data[23]=[{"rgbled_switch":false}]
C% m$ [' x# s3 v& F2 J user_log("Cloud => Module: topic[%d]=[%.*s]tdata[%d]=[%.*s]", $ i- t) H8 B/ Y! @" X7 j8 H0 t
recv_msg->topic_len, recv_msg->topic_len, recv_msg->data,
$ ]( m0 U0 n( G- U5 ` B3 y recv_msg->data_len, recv_msg->data_len, recv_msg->data + recv_msg->topic_len);
: @. X/ C0 F9 G- x4 z4 f' l* u/ `9 } // json格式的字符串数据转成json对象 ( S2 w* \, d* y& P# N' p7 L u+ L
recv_json_object = json_tokener_parse((const char*)(recv_msg->data + recv_msg->topic_len));
" I; i( I+ p% \; g- Y! ` if (NULL != recv_json_object)
/ ~4 ~0 R, R7 ~/ Q$ P5 | {
; {' I7 v3 y7 N% _ //根据键值对遍历
* J* F) s7 c: X json_object_object_foreach(recv_json_object, key, val) {
j2 H4 ~, |# s e+ C. O if(!strcmp(key, "rgbled_switch")){ - Z/ {( e* K s9 P$ R
//如果键为"rgbled_switch",提取值“开关值” " Z- g/ [% m h/ I. G. B. N( x
led_switch = json_object_get_boolean(val);
1 ^- Y1 R; d: _# X! b+ T, l } + [& g$ O4 Z0 v2 x+ c3 p( T" e
else if(!strcmp(key, "rgbled_hues")){ 5 F/ k% A# {: v! ]! s
//如果键为"rgbled_hues",提取值“色相值" ; {3 ^( K ~/ d
led_hues = json_object_get_int(val);
* d9 s" C# ]: i! w }
5 b" K% D) ~5 P else if(!strcmp(key, "rgbled_saturation")){ ! a/ w" a/ D( P S8 n9 Z: L
//如果键为"rgbled_saturation",提取值“饱和度值" % k5 b+ N2 u( Y+ U' |2 H2 p" {7 M
led_saturation = json_object_get_int(val); / E$ X0 ~( X4 M8 Z+ R8 R+ A/ e
}
! j; t( I3 U* K5 P; a3 C else if(!strcmp(key, "rgbled_brightness")){ 2 g& b6 x/ v# ?- |$ x. t, b
//如果键为"rgbled_brightness",提取值“亮度值" * ^5 ` C2 {) W
led_brightness = json_object_get_int(val);
! g/ h+ m) N' Z& G' h% Y }
0 O p: c- u& {/ C$ l) [# `7 \ }
9 H$ T3 {) A( h8 G7 |2 H. D // 控制LED 8 A1 B0 L" k! z) x4 m/ G
if(led_switch){
) f' i# ?+ w5 [& x% |4 p9 v; P h***2rgb_led_open(led_hues, led_saturation, led_brightness);
' y' T5 ]/ U3 r Y }else{
, " G( u3 n0 T/ Z7 o- ]- r% a h***2rgb_led_close(); // 关闭 9 X* _5 K+ K! W+ O" q
}
$ Z9 K% \+ s' @ // json对象内存释放 * b' v* Q' r+ D4 p* A) a
json_object_put(recv_json_object);
% X; S( |2 d; _" g recv_json_object = NULL;
! M1 U2 Y( q& b4 i _, Z1 Q+ L } ; u# R; X) g1 N |" m6 k- M
// 结构体内存释放 / Q/ [- y# ^9 n5 H2 M9 o& B& H
if(NULL != recv_msg){
+ \! m6 y# k1 u1 E5 }2 H free(recv_msg); ! [; ?5 f& ?+ _
recv_msg = NULL; + ]- z b; J4 j5 V# I L
} + v- t1 f' C& _. X4 M
} ' |# F; Q$ q% D, p
} - N3 N/ D! _; E
exit:
2 M) J" l7 E9 ~- y/ N6 m user_log("ERROR: user_main exit with err=%d", err);
2 X$ T0 I g2 R4 f5 W return err;
8 p0 s" Z' `* a" e } 1 m ^5 k! }3 T$ M) R
! T* G( b0 T' k0 o3 s 8 {, }0 V C) y' }2 X3 q& n
第九式:使用Github工具托管APP代码
& O* N0 @" D* w/ O+ J 在例程包中(MiCOKit SDK的APP目录下),找到微信APP控制页面代码(index.html和yourID.html),将yourID.html.重命名为你的产品ID,如cabca380.html。拷贝这两个文件到本地git仓库,再同步到git服务器。同步方法详见附件——上传文件到GitHub.zip。 , X+ y' _4 X0 d# E. ?2 C7 v
9 v " D1 N2 U( Q. e [url=http://mico.io/ask/uploads/article/20150723/97411f3674d23cb747a33172ee9c1284.png]
) U* @0 @5 `9 n: ^
2 G s* }5 r! x g3 g. M7 l3 f Y" l% K7 A- \6 `9 L7 `
index.html —— OAuth按钮跳转到该页面(一般为设备列表页面,可不做改动) . i( S5 x+ f$ h- G6 \8 x9 Q
/ b+ {- z3 H% x0 D+ T; k8 d [/url] 0 r# R- T8 x- f+ h0 c7 s
. }0 Q" q$ p8 d4 M0 W
3 n& M1 S/ D6 q# ?0 b4 w C' |1 A xxxx.html —— 设备控制页面(其中xxxx为FogCloud上创建的产品id)
" }1 |& t6 G2 S8 G & |. v/ `# x2 h/ S9 }& Y; f
! S6 |4 `. O6 R1 u/ H [url=http://mico.io/ask/uploads/article/20150723/bdd3e767bff5fdcf06f16b6ee478f57e.png]
- R7 @3 ] q2 ]$ M7 E2 c! | . _- m$ R! V! S
+ }# W1 {4 E; M4 l
详细代码见附件代码包,部分代码解释如下:
9 k0 M0 r F; f8 I2 W* Y 8 S' i( i0 n: l% Q
7 N1 s# x: ^- f8 a [/url] * d. @ g, e8 k) K+ C4 ~, B
8 K- T( n# m& Q `: w( z7 I3 }, X, K
) {! u0 N1 V0 r# s4 M, G1 ~7 r' i8 I [url=http://mico.io/ask/uploads/article/20150723/041017556fe9d8bf147cab201e4055c6.png] $ L/ H/ S0 I1 m2 ]9 V$ G+ y
2 D- c, s% Y. n+ |0 r& y/ M
' L; v! w% G) }7 Y: }9 I
7 T3 ]2 W8 H! N! V, E7 T 修改、并提交代码后,如果没有配置WebHook让FogCloud自动更新代码,则需要到FogCloud上手动点击“发布”按钮更新代码,并通过git提交记录确认是否更新成功。
; L- u3 s) e8 q( |3 P4 Z
- @3 c0 [$ q! X, i8 g' D/ g / l* b. S& {: f* v* t ?
第十式:FogCloud上生成设备二维码
1 S4 N6 t3 d6 Q( b9 w1 [ I, c (a) 创建新设备 N" |4 k8 Y( B- \
5 ~& G5 d0 s( H: i2 W
[/url]
" w7 {& m+ l8 v# ?/ w" R 3 x6 D; }$ g& f6 v" Q' O' x7 M
# F$ i9 R" p% ] (b)填写设备MAC地址(由小写字母和数字构成,设备上电后会向串口发送MAC地址及其他数据,可用串口工具查看)接口创建设备。 . T' C7 c4 v+ g o
9 E3 D4 Z# P* b, u: B4 Q9 ]
% g# p& s" f. e
[url=http://mico.io/ask/uploads/article/20150723/60addb425f19b481c3d2ea9346bbd71f.png]
# `: M: {' M3 n, n7 R9 f( C
# ]7 w) N; F3 e+ \! R4 g X ; v* ^0 b5 a5 J7 j
0 P. \. g) F2 A( E (c) 为设备生成微信二维码 : ]& I' V& q J5 i
点击“同步到微信”按钮:
3 \2 f( |1 m7 h: u8 D4 f4 v% n' |
6 q& t2 s9 h C% ~' {9 r0 j: k, }/ C [/url] g' j3 r4 o% F4 v' D( r
. ~: ]4 e: S% ?8 B, O
9 L; S `4 S8 `" x8 D 选择创建的产品和要使用的APP后点击同步按钮。 ; r8 t2 ]$ e4 j7 `
9 A+ o; M r/ h. t
[url=http://mico.io/ask/uploads/article/20150723/8391b8371fe9a3cf4338e65240989bf1.png]
' k+ H7 `0 j" I" V/ ]; A
2 E- k. N, |! P( ] 8 X; ^& @ ~6 { K. S
成功后提示:{"result":200,"message":"success"} $ ]" c6 L- \" f1 H
+ o8 u6 P/ ]3 t
[/url] # e2 Y8 v9 A$ T: x. Q5 V. J
5 w& O, G. j& f& c& ? T
! C( L8 O8 c5 Q& v% |" m 5 Q# N5 P( ?% A; Z4 q2 x" O
极少数情况会因为微信公共平台延时的问题出现err:500问题。等待几分钟后重试即可。
: [6 \; C5 F- u% m" _9 A6 u 返回到产品界面,可看到你的新设备。
$ {8 D4 M8 K( D: a2 K
8 ~$ s- h4 e" o" @' K [url=http://mico.io/ask/uploads/article/20150723/fb1885f6aaad37a08f169dbe29946d54.png] + A) S" O5 Q- d
. U# m j) I3 Y* j" g
1 A- P, H8 M8 f8 ]. K, p [/url]
4 ?1 F' \& I/ F6 I 4 C0 K9 o; f: t8 N- _' r4 y& G2 [
, k' ]( k$ E. S- z: ]9 q8 d
& p0 q+ j* |1 r; p7 ~
第十一式:使用手机微信扫码,测试“Airkiss”配网功能以及设备控制功能。
; I. \$ x/ u. A) Q' p (a) Airkiss配网 + I% B8 M1 A4 n C
Airkiss技术可以帮助你的设备在没有人机交互的情况下智能配置当前Wi-Fi环境的SSID及密码。(假如你的智能设备是一颗灯泡,总没有屏幕和按键让你输入SSID及密码吧)
/ A, F- K9 E- P* S9 | 按设备上的Easylink按钮进入配网模式,底板上的LED(D1)灯快速闪烁; 3 h5 Q. V/ j: P4 t8 ?
手机输入当前所在环境的wifi密码,点击连接,成功或超时会自动跳出该页面。
$ b" Y) @8 Y0 t0 j* Y% S 6 n/ O& E" B& f. d5 h: z( Z) s
[url=http://mico.io/ask/uploads/article/20150723/18e3a2ba0846a30f245578b054272b7d.png]
, U' H0 @- g6 l* C
& L7 n2 P0 z% X3 P9 V/ `# c) C & @* x6 N. {8 p
(b) 设备控制
0 P6 q& i( N" u7 ? Airkiss配网成功后会跳转到设备列表,红色圆点表示设备不在线,蓝色圆点表示设备在线。若配网成功后设备依然显示设备不在线,可点击右上角刷新按钮。点击列表进入设备控制界面,点击控制按钮,控制MiCOKit-3288扩展板上的RGB LED灯。 5 f' G+ P$ `! D. s4 q# I5 @" e
已经配网成功的设备不需要再次进行Airkiss,只需点击测试公众号中的“Devices”按钮,进入设备列表,点击列表进入设备控制界面,点按按钮,控制MiCOKit-3288扩展板上的RGB LED灯。
" f3 k% t) w: P; q3 |
6 l) @% V2 H" U% ]$ S" T [/url] 5 `+ ^ h, S; P7 ~9 }5 G2 E
( E$ ^1 u/ H6 p" z5 C& E+ D
3 h) T V0 N& ?: U [url=http://mico.io/ask/uploads/article/20150723/13e7c77638ede00ccf82d4fb10429ab2.png]
3 {! Q4 r0 D ~+ O2 y 6 y' P8 K( g( W$ P6 J
& v# q( T, |4 ^5 d: ]' {+ E
如果您完成到此步骤,那么恭喜您大功筑基已成!!4 L* |8 O5 M' u
武功在手,天下我有!
2 f; ]: u6 {6 c 祝愿各位米客能手持MiCO利剑,在物联网智能设备的新江湖建功立业!
0 U- q: ^8 g( Y7 | ! G* c; p" K6 t. d8 x
另:源代码地址 http://pan.baidu.com/s/1bnsGEy7
7 Q1 ^2 i# C6 w$ C+ e s& n
) N4 l$ t4 S. I2 H' [) g- w MiCO团队 7 z2 D0 ~' W0 ?
敬上!
7 g) e# ?- y1 G* r3 q, P [/url] . D' v- d# f+ u& K
[url=http://mico.io/ask/uploads/article/20150724/02263811253059862ccc8df321bb95b5.jpg]
3 {" s( M8 O9 A7 k' p
; f5 d; C' b2 ]( W1 J s
更多回帖