问答
直播中

micolover

9年用户 208经验值
擅长:嵌入式技术
私信 关注

【MiCO实战贴】微信控灯11式(利用微信控制RGB LED灯)

本帖最后由 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& k1 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 O7 ?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 B0 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_saturation)                 读写属性为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, K0 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( N4 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 c3 |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 e7 }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+ q1 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 yrecv_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        // 控制LED8 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 s8 {, }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" R3 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% |" m5 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 I4 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% S6 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 y6 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- wMiCO团队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

更多回帖

发帖
×
20
完善资料,
赚取积分