问答
直播中

micolover

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

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

本帖最后由 micolover 于 2015-7-24 14:47 编辑 , p6 }5 g3 b/ [. A! ^* ?
- p5 u3 {- a  t* l5 j. l) s" r
前言7 d" t& g. g2 P% f2 |9 b) g, t9 X" G
  大神玩转MiCO好生羡慕
3 u" Z8 {4 `0 H2 J) Z6 z  菜鸟低头不语无从下手
8 s1 x! n( L7 r" J9 u  别慌~看完下面的武功秘籍,你也能成为一代米侠被人仰望
8 u' Q! ?) E  G/ h / Q( Z: P8 B4 R& R* Y2 Y
一.微信控灯十一式
/ B3 X- t, K9 c% H  第一式:注册开发者账号        
( w! a* U3 T0 J% _6 E8 h( E* O8 A5 I, }  第二式:使用个人微信号开通测试公众号        # s2 w7 A! [4 j  H" c$ L1 ]% m2 s' Z
  第三式:在FogCloud上创建、定义自己的产品        
, A1 i1 o% @; \' f0 U7 m+ m  第四式:在FogCloud上创建产品对应的微信APP        & L2 o/ U( ^9 X0 i
  第五式:Github上创建微信APP代码托管仓库        
7 a$ \: V( U2 A3 s4 s  第六式:配置微信APP以及微信测试公众号        
  i4 T3 y9 z: m& t; \, F9 }& d. P" z  第七式:使用MiCO SDK开发RGB LED灯的固件
7 ?& @$ u+ Y' Y! e. P# F  第八式:用网页编辑工具(sublime等)开发微信APP代码        # h0 @+ `7 n# f$ g0 ^
  第九式:使用Github工具托管APP代码        - M0 E5 j6 p8 R
  第十式:FogCloud上生成设备二维码        ; `  ]( O3 ^3 H/ _: l' }
  第十一式:使用手机微信扫码,测试“Airkiss”配网功能以及设备控制功能。          ( z$ v/ `1 ?* l2 v  @6 S, V5 w
二.基本功2 a- U; F9 N( V
  注意:练功开始前请确定射频驱动为最新版本2 u, M+ p0 X9 f1 ~# p9 ?! {
  版本查询及升级方法请参考MiCO社区 → wiki中心 → MiCOKit板块射频驱动升级8 ~. v5 E& u; f
  1. MiCOKit-3288开发套件;
2 ^& F, ?$ c1 _  2. 开发工具请使用IAR7.3版本及以上; & |8 L/ `- o- f9 c; l1 o8 V: C- n
  3. FogCloud开发者账号(Fog云使用、开发必须);' s2 |. K  D2 k' x& m, F
  4. MiCO SDK v2.2.0(固件开发包);
* }) U; b; P1 _. Q8 ^! e  5. 个人微信号(开通测试公众号);+ W' ]4 u+ w: ?
  6. github个人账号(托管微信APP代码);
" E2 Q, C: l# }  7. 网页编辑工具(sublime等);
! w) K: {6 X9 R+ Z* T! K: {6 H, o& i  8. 大致了解MQTT协议及json格式。
3 V) {5 D5 q: b2 a4 M" X
# D* j/ K! |5 @& K/ D三.招式详解$ A* }( H$ u+ ^) A
% C6 l9 T; f$ l1 ?" ^
第一式:注册开发者账号
4 Q6 s7 ^; Y5 o/ J( ?, S% d4 ^  F  登录www.fogcloud.io直接注册账号即可。该账号将用来管理你的产品及APP。
4 f: x/ ~/ e0 d: U" n
6 T, h2 ~5 |# @4 j[/url]% i5 h2 B* N/ z3 M; U# @0 w
, ~3 q; ~4 d' G  l  S

3 k  A3 q+ T. y4 j0 K: h/ G/ E3 I6 J4 z: j, x
7 x; S1 l8 t( E) N
第二式:使用个人微信号开通测试公众号
5 X: V3 ~  Y; ]* L" t8 c# b  浏览器打开[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
,点击登录,使用手机微信扫码,进入后即开通了测试公众号。
, L* D& i& E8 k
, n7 H! y/ G8 T; c& Q" z- G0 H4 Z% ]; _3 w[/url]- H$ l; F' o* x1 J% m

9 T& a1 G1 C. `% I% B, W3 T
9 s2 b" u& f% O) V  获得微信号、appID、appsecrect,用于后续在FogCloud上创建产品对应的微信APP。1 P7 ]# a3 w( D

8 U5 r  w2 Q  {, X4 U8 R2 W) l[url=http://mico.io/ask/uploads/article/20150723/923e41bc3c91f99ba548d65e2ddd7ec6.png]
& }1 s* D# J" a# S* x
* r) p2 q: ?# m  i8 p) M/ ]

: @- _4 X. s. Y3 y% f1 ~第三式:在FogCloud上创建、定义自己的产品
1 d6 ?1 P: t/ S& F- g5 B9 L  D. A9 Q; |* L  u1 [
[/url]
% e# g3 u; _* ?! s
' Y% K/ c9 p8 G) I+ J) w- N* A5 X/ J: H- i9 ~2 e( I' L
  根据提示填写相关信息,创建完成后,如下( e+ M! R- G0 a
) A; c) L; O# k: ^, Z6 j# c, J4 h
[url=http://mico.io/ask/uploads/article/20150723/ac518bc12959f06f82624e4d9e6fc841.png]

; E; P: n8 ^. [7 G! r( x$ V1 u9 I9 v& l3 v5 A- Y$ s
) P! a  c$ X2 n1 E$ Y9 w9 f6 c" q
  点击产品名称,进入详细信息:
" X# c  d: d. |& z4 A
# e7 ~7 W% q. z4 L- [3 F( T[/url]% m5 S5 u2 B0 L- X6 @. g6 H3 |

" G( N5 i  U$ d6 c* x* ] 9 S7 W3 I! S0 F
  产品ID/KEY会写到设备固件代码中;- m1 Z/ a5 V7 ^- L" Y( P& w
  创建产品的数据模型,数据模型是用来在云端定义产品功能、性能等特征数据的标准格式,可以储存设备监控、收集、控制、用户行为等数据,从而对数据进行分析,提升产品服务,开发案例过程中定义数据模型,能够有效帮助开发者将APP、云端与设备端的关键功能、特征数据等同步,避免开发过程出错。
3 o: V4 [. ]) " y+ W
( r3 t$ y/ m: b  c' s; d[url=http://mico.io/ask/uploads/article/20150723/419d8575656778d542b24f70ff5d4aa2.png]
# M+ J5 L9 L/ y  \$ P

1 X; i: _7 A3 P$ I* s) e
- G+ \4 ], d$ r  本实例仅控制MiCOKit-3288上的一个RGB LED灯,所需创建的控制数据点有:" |: J3 u+ S* ?* n9 _
     1)开关(rgbled_switch)                     读写属性为1         时间序列为否
+ j4 q5 L* L/ a7 e     2)色相(rgbled_hues)                      读写属性为1         时间序列为否
4 [: N9 A$ j: L! |/ O) p1 F     3)饱和度(rgbled_saturation)                 读写属性为1         时间序列为否3 M. l' o5 T, _" D: q4 v* z9 _  O& c, f
     4)亮度(rgbled_brightness)                  读写属性为1         时间序列为否9 j6 r. F( E0 k5 `. p* V. x
  *属性名和描述可按个人习惯添加
3 |- ~! u* h7 I2 h" x. H/ j" U  注意:在创建数据点时,“时间序列”选项:选中时云端保存历史数据;不选时云端只保存最新的数据。% p  p4 m1 @" Z. A$ w  t8 Z% {
  数据模型的具体作用在后面的进阶教程中详细讲解。
; G' }0 n+ a( W5 _9 G1 Z & |5 I, K. z# ~0 w6 H3 U" U
第四式:在FogCloud上创建产品对应的微信APP' P2 y, C' s+ F0 |/ B( z

7 w% q: f4 Z9 a: T0 j- N
( M3 N) x5 M4 i3 }, M+ n$ N0 M; W! a[/url]
5 Q9 `" \7 S% d+ b! v
6 V. m( l, t; O1 g# J  K, F 2 M6 v! f% f% `
  根据提示,填写相关信息,其中微信号、AppID/AppSecret从步骤2中开通的微信测试公众号中获得。+ Q9 h& x) ?9 {- Z4 y% G1 D/ S

3 I7 P2 s( B9 N% L- m[url=http://mico.io/ask/uploads/article/20150723/12165d0d0d83feb3aba6851cc9588c08.png]
# e0 H& {* @7 p0 g. _& j% R
- Y4 H4 L  z2 u& y- \. y$ o
, ?9 v' ]5 {* Z+ a
第五式:Github上创建微信APP代码托管仓库
! Q# @& e( u% \  i" Y0 R  请登录github.com自行创建新仓库。并克隆到本地,克隆方法详见《上传文件到GitHub》。该步骤的目的是获得一个可以在任何地方访问的git仓库,后面会使用该仓库托管微信APP的代码(其他类似git仓库托管工具也可以)。
, b/ J/ j! b9 L" j0 [$ T" i, e. W
+ {# Z: ]# \+ M( S[/url]
' D# L, ^8 y7 t! l4 P+ Y1 ]+ H
6 P% l6 b$ `* H8 h# r ; X5 z; K% A- ?; x% [' J
  获得仓库地址,例如:https://github.com/wangeshen/MiCOKit_test.git4 N2 O/ p& D9 L
7 @! m7 [% t' T3 {
8 C( G7 ^2 \# ~. a0 g0 v4 _( ?
第六式:配置微信APP以及微信测试公众号. `* P- d7 _2 Q1 y* f2 c
  (a) FogCloud上的微信APP信息:
5 h% O  m# P1 Q8 M/ t, |/ ~, r
0 t2 S8 ^% `5 a0 c7 k& x" Y0 I, [' u[url=http://mico.io/ask/uploads/article/20150723/3e552dc6f9c1097d68b01b4643a04921.png]
# s2 M& A# }. I+ G1 _/ I
+ W& q3 y4 F* N; @) v6 Z8 ]
) b$ ?  c! W/ m8 `
  其中URL和Token会在后续配置微信测试号时用到。5 ^! [/ d# F% g
: a( K3 @& G6 ]- ]7 G! ^
  (b)Git部署(同步微信APP代码到FogCloud)  F/ Z6 h. K6 H# w6 C' f

) W6 O/ c1 ?! E7 h, u# A[/url]
( M4 q. B6 ~# k# }* Q! D1 y* G* Z1 D3 Q) B* o: e! z, C/ o

+ j& M+ e0 J! J8 m$ o4 _1 x  其中:8 w' h+ ?9 u( u/ g5 p
     Repo即步骤5中创建的github仓库地址,填写后保存;
7 P' ~1 @; S% ?& j     Deploy key和Web Hook Url可添加到github仓库的设置中,以自动同步代码到FogCloud;也可以不添加,但是github仓库中代码更新后,需要手动点击“发布”按钮来同步代码,同步后右边可看到最新的代码提交记录。3 [" S; b% J, {4 h! k: J. \8 C

0 I+ D$ w/ j* `. N9 _3 p9 x' S4 `" i
* g) t. |3 V5 K$ e. K, a[url=http://mico.io/ask/uploads/article/20150723/47bf7c17eb7ad746792160a06f14ab20.png]

' o: Z6 W# m+ E
" i- n7 @2 B, Y- A/ S* X! F
: r6 U% J3 \( |5 [* F  (c) 微信菜单管理
& G: S" U( X# H2 L, z" Q  通过FogCloud提供的微信公众号英国威廉希尔公司网站 菜单定制功能,方便的定制手机端微信上的控制界面及功能;至少包含“Airkiss”按钮,打开微信Airkiss配网功能,“OAuth”按钮(名称可自定义)进入设备控制。
$ S& ?6 Q: h8 f
, |* j% W5 a. y) n9 q) r* y3 ?$ n' s
[/url]  {6 R! X& Y) l- o' M2 H$ e
3 H5 G9 }. Q# N% z' V% \3 i
6 ]1 f( \0 T. Z: e1 s4 |
  (d) 设置微信测试公众号 URL与Token在创建的APP信息中可以找到; f. L% ^5 J8 _1 C) E3 o" D
  修改配置信息:& r6 Y8 l2 W. e! N6 g
  URL一般为:[url=http://4addb71f-1b5c-xxxx-94c5-f/]http://4addb71f-1b5c-XXXX-94c5-f
... ylink.io/wechat.php! O3 n; Y" S" t
  下划线部分作为JS接口安全域名和授权回调页面域名。
" J: K+ [2 f. _8 _
+ z9 |8 @: H2 {) ~# o[/url]. ~/ B  Y1 M7 m9 s& S+ F2 D* g5 ^
; `: ^3 y. O# Z( {. I
3 K7 u0 M4 c$ v
  开通所有测试功能,并填写网页授权域名:
3 y  C5 J3 Y( v7 V! p
; V% V* ]* j5 b) n0 o[url=http://mico.io/ask/uploads/article/20150723/4147bd2c388956cee39120fa591cd440.png]
: y1 \2 U* V$ T1 l# u1 A6 s5 [7 q2 y$ _

* S' f' U' x' u  T) {/ N6 D0 @3 P
# e" @8 d* x9 e# q4 {7 R  点击修改,打开如下:" F8 l! @& y, i( A4 _

0 b0 O& Z8 [( K. X* ~[/url]
0 d. Q! P: N# `& w
. x2 \/ A/ p- y* ~
! W# y, u; u) m" S* g5 r  同“JS接口安全域名”,格式为前面提供的URL的域名部分,如xxxx.app.easylink.io,其中“xxxx”为FogCloud上创建的微信APP的id。
6 {6 n  ?8 l- Y' p  w6 n8 p6 G) l3 x, l/ q" @

3 X0 G. N. ^7 w' C8 L/ I2 v第七式:使用MiCO SDK开发RGB LED灯的固件
2 ~, J: t5 I; y- R4 K  (a) 登陆MiCO开发者网站mico.io,去MiCO社区注册账号,并登陆;; }9 B7 m$ m, Y8 y, R; b. f% }9 O
8 y- Z* ]. e7 h7 ?( F- U  k
[url=http://mico.io/ask/uploads/article/20150723/3c04c03f3d922eb74c06906c610b9290.png]
4 k+ I  Z* |" {- y/ ~
9 q( k0 G0 g/ [5 z3 n0 b. _

0 Z- x9 j! m0 N5 }2 k  (b) 重新打开mico.io英国威廉希尔公司网站 ,开发者中心 ==> Wiki中心,下载MiCO SDK。  T4 \0 |% [/ ~
3 y2 x8 Z* p" q0 K
[/url]/ t8 J1 d. U$ p# Z& F3 j/ n

* n3 ^9 [9 `% S1 [" I , b% t' \/ R' e: d
  (c) 打开MiCO SDK中的微信开发实例工程:; {/ z' K, ~4 v* |5 c8 ?

" J, z( {8 Y" X3 m  w[url=http://mico.io/ask/uploads/article/20150723/3c6381767bf00833cab64ed4c37df2f8.png]

' N1 @. @. j$ f7 R9 h. y$ Q; l9 Y* |4 x' p/ w' t

- ^2 l& \; \& d1 d    1)开发者手中拿到的可能是硬件平台可能是MiCOKit3288或者MiCOKit3165,在编译工程时要先选择硬件平台;
+ V0 T0 e7 z, {3 U) c    2)将FogCloud上创建的产品ID/KEY写入固件(必须替换):
9 P7 Y0 n) q9 [7 m5 @& n1 e* a' |5 Q
[/url]) z8 j; C8 ^8 `) c+ ^4 H# c- U

1 \/ [' b+ X% e; {% O2 T
  n. w+ y/ Z& U    3)修改版本号,这样才能把新的产品ID/KEY烧入FLASH4 _1 q* _0 k9 d( t

7 H/ R# L- S8 A& @0 s[url=http://mico.io/ask/uploads/article/20150723/1661ce047fc9ea5e465db04acd59c24e.png]
2 M/ H; T) t, j! u! n" |1 L- l- Y

# w- u! h$ y/ ]8 H- k. W& ~ 9 g& q2 Z1 P5 |# H
    4)添加LED灯控制代码:( J/ T7 C4 t$ y

4 u3 C  X; g& u4 _* B[/url]
% i' i! G; Q7 M. s) ^; ^# j& A* S/ L( o5 e( \4 p, s

' \3 E+ {" H6 J0 L    5)改为收到云端消息后,解析JSON数据,并控制LED。3 k! |* F+ W; B! c5 }) ^' o6 ^
+ U7 P% T8 g' X1 ]$ f9 G
[url=http://mico.io/ask/uploads/article/20150723/fb02025e4062a859d0d33d4178cd156a.png]
  \' w, W/ w8 s4 U# e9 J

# I" `' F% E3 X# ]0 n4 f# N
% U7 O1 C; Q9 D- j9 z1 Q    6)错误代码参考:在运行过程中如果出现错误,可在user_log中查看错误代码。
7 p; ~( x; R9 u9 I3 Z2 g
% o2 _' I! ]  i' D. X[/url]& Z1 B4 j, ^6 F) v1 }

( p4 Y( _% \# ]/ [- U
' Q9 }3 ^$ ]) @: A8 h- W+ p9 |7 @[url=http://mico.io/ask/uploads/article/20150723/9f6828473efaa4a01ae4434c236a2ef6.png]

5 ?: T- b! Q  }7 ]
5 q3 c# I( p7 H; Y) r
/ a6 A5 M/ B* Y: _- y2 F9 E! \    7)MiCO SDK固件烧录。(详细固件烧录方法及步骤请参考http://mico.io wiki中心)
: h1 A# c2 q4 N选择使用的烧录工具J-Link或者ST-LINK:
9 C6 o% W. M' J' j$ B( ~' \3 d0 V( e4 j) Z8 w/ i6 @2 o
[/url]
- _0 V$ t! Z3 @8 I8 d1 V6 T' u9 y  N- ^1 M8 D1 Y

2 l8 ^5 m! a* G7 z  编译/连接:1 `! ~5 I4 @' B) N) }' L6 m; A. e
: }& M$ u) P3 K: u7 L: A7 H7 m
[url=http://mico.io/ask/uploads/article/20150723/14ee93da638bb344905c2f6c7a8481ef.png]
) I3 W& D. U) t! j: ~( s

9 F2 J* A, M# }8 G% x
5 P/ b/ R" ^  U  烧录/下载:
1 X* z5 a  M- g/ b" l9 T
: Y! \7 F0 V! S  y+ c# d5 H[/url]! k2 F* d: L2 f: w' r/ r1 ~* d2 W
2 @0 X+ ?! K* t% s: n6 R

, @0 E: S7 Q) R5 s; {; z. z第八式:用网页编辑工具(sublime等)开发微信APP代码
9 H' M& A* H2 q4 u以下为核心代码及其注释
* A9 |8 x$ P+ ~2 l! c//应用程序入口在application_start(void),一系列动作(如配网、连接云等)以后,用户程序入口在这里。" e! N9 B- X3 |
OSStatus user_main( mico_Context_t * const mico_context  $ L9 r7 j6 f0 s
{
9 u: B: [) j/ G& E0 B5 r  //user_log_trace();9 c$ }/ l9 n0 D* `" w! T# p6 }
  OSStatus err = kUnknownErr;8 h) D  c8 T2 T$ k( L8 g& i
  fogcloud_msg_t *recv_msg = NULL;//接收数据结构体$ o9 w6 m  Q0 X7 ~
  json_object *recv_json_object = NULL;//结构体内包含json数据格式/ @( C8 H2 h7 ~/ _" `4 C6 S
  /* rgb灯的色彩模式采取h***色彩模式(色相、饱和度、亮度) */' e- f( W2 q: ~, p( v
  bool led_switch = false;//rgb灯开关1 K. z& M9 F) Y9 C% z
  int led_hues = 0;5 g; X5 }7 Q; F4 F; z$ y6 i, w' A2 R! E
  int led_saturation = 0;# `* [6 e$ u- m8 M: \
  int led_brightness = 0;
! J4 M4 I$ t# P2 v  require(mico_context, exit);
' Z; e. i5 X7 y  h***2rgb_led_init();  // RGB_LED初始化
/ w( ?* `$ M) I4 C9 K  while(1){
: ?0 y/ u* m9 s+ y; x8 M    mico_thread_msleep(100); //延时100ms  P) F3 t  C6 s# H9 U5 E/ V
    // 检测 fogcloud 连接状态
' m5 m7 f: b- A' @! m" r    if(!mico_context->appStatus.fogcloudStatus.isCloudConnected){% q5 N1 c- ^- c, g* I
      continue;( X1 ^: ?$ @& T! g6 O
    }) K" S5 P" T+ g$ ?7 q! g4 ~0 C7 f
    /* 1 u! S% @8 |% r3 y1 }/ T6 s, b
      接收来自云端的数据
! c  m" j' H. ~# D      recv_msg->data = +: |9 T; y, R8 x. }" {2 L
      topic表示模块订阅的MQTT通道名,data表示云端返回的数据
7 x. j, V( ~  ^     */' j% i) i  ~" O
    err = MicoFogCloudMsgRecv(mico_context, &recv_msg, 100);
; y$ H+ `5 h- f: @    if(kNoErr == err){. t! G+ V5 t/ h) u8 @
// 打印  例://user_logtopic[30]=[de54a8ea/c8934691816b/in/write]data[23]=[{"rgbled_switch":false}]% M' M) e6 s0 K* h/ s$ C/ U+ s
      user_log("Cloud => Module: topic[%d]=[%.*s]tdata[%d]=[%.*s]",
. l" _# x  O; N7 H3 J/ R) L% Z               recv_msg->topic_len, recv_msg->topic_len, recv_msg->data,
) p. Q1 W5 }4 |7 hrecv_msg->data_len, recv_msg->data_len, recv_msg->data + recv_msg->topic_len);
8 G* I4 |; P5 d. n% X* t4 P* A) F// json格式的字符串数据转成json对象6 I7 f( w  h4 f9 I" ]
      recv_json_object = json_tokener_parse((const char*)(recv_msg->data + recv_msg->topic_len));
4 r6 [! w& K8 J1 N+ f/ P- o      if (NULL != recv_json_object)
6 v. I/ S4 {# V+ M8 e  f: C3 a3 j4 m      {
8 a5 y  v* n# E& F; O/ e* f        //根据键值对遍历
8 J2 `( ^" {2 o+ z        json_object_object_foreach(recv_json_object, key, val) {
  D  M; k! q3 X/ ]9 q          if(!strcmp(key, "rgbled_switch")){+ o% v+ R7 i! q9 E. g" T9 U. z) ]
//如果键为"rgbled_switch",提取值“开关值”
5 u4 E6 a6 T) H6 e1 G; w            led_switch = json_object_get_boolean(val); / H5 I& I& h4 Y
          }
5 ^& l  @! g6 s7 l/ q0 [& y          else if(!strcmp(key, "rgbled_hues")){' `' Y) l4 C1 f
                        //如果键为"rgbled_hues",提取值“色相值"
$ L9 W1 M5 W: H# n            led_hues = json_object_get_int(val);
# T; t. N* Q) ^  x. j* H          }) d. c, \' p/ T: L( h7 [* i/ }
          else if(!strcmp(key, "rgbled_saturation")){
. Y; p) u2 ~. U  \3 b                        //如果键为"rgbled_saturation",提取值“饱和度值"" j3 N, e4 ^4 @9 r
            led_saturation = json_object_get_int(val);
9 d$ {* f! C/ O% Z          }  t7 D6 @1 k) N7 s
          else if(!strcmp(key, "rgbled_brightness")){0 p9 e5 U/ O2 [
//如果键为"rgbled_brightness",提取值“亮度值"4 o% ?+ b" C+ i. e
            led_brightness = json_object_get_int(val);1 _, h) ^) y* x! U% j
          }
% |* E/ b, j4 O, k* m1 }/ }        }4 E4 r6 l$ Z; l3 y
        // 控制LED
' Q  U8 Y1 G4 F) X, b! F        if(led_switch){
5 ^7 ^2 f1 d! |% ~: [9 l2 ^8 \# M          h***2rgb_led_open(led_hues, led_saturation, led_brightness);
1 R; U, B0 `  i+ q9 y4 X' B        }else{; K" Q# @2 f" @
          h***2rgb_led_close();  // 关闭& k6 U9 y7 L( h
        }   L; c  w6 }% O! |" r; A8 p1 ?, o
        // json对象内存释放
2 U) K! ]8 i/ C7 M6 O: m( ~* o        json_object_put(recv_json_object);; f* ?6 @9 ]" F* w) @( k  l1 Q
        recv_json_object = NULL;
$ y7 P# N: Y5 e1 {' K      }/ X- _4 ]8 n4 y% @; [5 ]+ s
      // 结构体内存释放
& ~1 F& Q0 x0 T! ~0 x7 f1 n7 ~6 E% U      if(NULL != recv_msg){
: s7 j+ E$ ]6 U6 d# G0 W* L        free(recv_msg);5 T% g2 X1 |) U. U( V* W( f& ~
        recv_msg = NULL;
9 k: \0 {% k; U# Q* i% m4 `      }
: }% c/ E# [" O) C$ p    }8 r+ o2 z* b! n- R% K: T/ n
  }1 ^" ?9 E  _7 B3 X
exit:0 h8 S% V0 j9 d5 }( S8 j1 H
  user_log("ERROR: user_main exit with err=%d", err);
% e# Y/ X" K. |$ O1 ^! O, X7 f  return err;+ b  V% o- P6 s* l
}
5 }: h: m/ l2 t2 I; J" f' {! a) ~, A* J; Z) |

! W5 v  K" j7 t" Z! r, ?第九式:使用Github工具托管APP代码4 @0 K+ j6 j7 o% j8 _" D) b) u
  在例程包中(MiCOKit SDK的APP目录下),找到微信APP控制页面代码(index.html和yourID.html),将yourID.html.重命名为你的产品ID,如cabca380.html。拷贝这两个文件到本地git仓库,再同步到git服务器。同步方法详见附件——上传文件到GitHub.zip。
4 W: E, Y4 V9 n0 A) t( D( Y8 Y6 J' u5 w) ~$ e+ R% O  |3 q  [* g
[url=http://mico.io/ask/uploads/article/20150723/97411f3674d23cb747a33172ee9c1284.png]

  S+ Z4 D0 M9 M3 s& g  l! Z$ P9 V1 I) f. ~+ r$ H1 f

* p- }  u  p+ t: f9 N  index.html   —— OAuth按钮跳转到该页面(一般为设备列表页面,可不做改动)
; h' Z8 R6 O- P1 M1 \) o+ d% @, w8 j: R" O* w' K% a  }( I
[/url]
+ C9 z! t3 F9 d* X& V" e) l! m3 Y: `7 e: L6 ~! z- a

, m; Q; e. \9 @  i8 ~$ f  xxxx.html   —— 设备控制页面(其中xxxx为FogCloud上创建的产品id)8 @* L7 s/ v0 N. [2 U7 ~
& p% P2 {6 c8 j
5 Q# \- w$ w5 i- K8 `4 |
[url=http://mico.io/ask/uploads/article/20150723/bdd3e767bff5fdcf06f16b6ee478f57e.png]
' j$ `. d1 }, U

9 ]" A0 g: ^- @7 t
  J9 b9 B# d  _% _  详细代码见附件代码包,部分代码解释如下:
0 `1 v9 b) f: q" c9 `* [, _. l5 W; b
" g4 Q1 f4 u5 s
2 x% C# {, R: K: {  c[/url]  Q3 S7 `# l$ z  _5 E' ?9 |
0 U8 s7 }- K* Y2 ~8 ~  E
- {( S4 ^/ z4 S# c- b: P
[url=http://mico.io/ask/uploads/article/20150723/041017556fe9d8bf147cab201e4055c6.png]

( L5 g2 M9 v7 c, g9 Q* y0 Y* _* {! d; E! @! W
' U' [$ i- `) ]% M3 ^2 y
* s  `# A6 M, E+ o1 m
  修改、并提交代码后,如果没有配置WebHook让FogCloud自动更新代码,则需要到FogCloud上手动点击“发布”按钮更新代码,并通过git提交记录确认是否更新成功。
# I8 J+ N+ U& ]$ `8 \& h4 s1 E( E3 r/ }  p+ L# U+ ^
0 m, K- Y3 d$ l* C5 Y
第十式:FogCloud上生成设备二维码8 z* ^8 S1 Z2 }" ^; O; G/ f
  (a) 创建新设备' b+ x* |9 N$ V# Z! s- _& F! b

, \- L% P' `; K[/url]
# I( N5 _, Z" G* N. Q
+ `) _2 I! }" z ; c- h7 x1 d! D! a
(b)填写设备MAC地址(由小写字母和数字构成,设备上电后会向串口发送MAC地址及其他数据,可用串口工具查看)接口创建设备。
. ^7 v. r; d6 z: w
! J$ n  B/ _- Y. |& `, n5 I3 d3 P$ [: d2 V% l: u! M8 L
[url=http://mico.io/ask/uploads/article/20150723/60addb425f19b481c3d2ea9346bbd71f.png]

! w& _" U# c. Y# C9 `
7 f# a# I  Y4 f8 E
. U; s+ X6 s' F. {( A; K7 V# t2 A- d- x0 n( q
  (c) 为设备生成微信二维码
  F; O5 D/ a3 @/ H: u  点击“同步到微信”按钮:  / Y6 n" Q7 N# v2 p2 M: y2 `
1 N, P  [0 ]; e6 C. p& A+ h5 r
[/url]
- k: O; u' G9 X( L8 \. ?, U4 Q8 |' `; T  k" u% p1 }

2 e" L* g- U/ A7 g% h  选择创建的产品和要使用的APP后点击同步按钮。
1 Z% H8 _& N5 ]8 Y  F4 m' D# k! A$ @9 J9 d
[url=http://mico.io/ask/uploads/article/20150723/8391b8371fe9a3cf4338e65240989bf1.png]

  W; e' N5 J7 m& k6 d& {7 m4 q0 }7 W" Z

6 H$ [- K9 Y+ j; l9 J  成功后提示:{"result":200,"message":"success"}. o- ~3 S0 q  w7 I* ^

; T( }6 ~1 ^3 z4 Q5 W[/url]
' U8 q. Y1 I$ v3 l' ?+ h0 ?6 {0 C) h% \0 `: a
) Z+ ~3 Y$ e2 @5 i; L

1 ^: f" Z  P; s- z- `$ u  极少数情况会因为微信公共平台延时的问题出现err:500问题。等待几分钟后重试即可。/ L( K( N1 S  H+ `7 a1 s/ I
  返回到产品界面,可看到你的新设备。
: A+ F/ M$ Y% f+ t* e  t2 Q6 \+ O1 L; X
[url=http://mico.io/ask/uploads/article/20150723/fb1885f6aaad37a08f169dbe29946d54.png]

6 `# {6 \" {! @" q; r5 S& b8 c: d/ H% o5 k& {/ F( H* @1 I* o. M, W, R2 p
! Z& K1 b1 J# W7 q2 ?5 c
[/url]2 o, i! k/ S6 D) x2 ^' k4 h+ M7 o
. f3 J7 H9 O; z' {0 H. \' K
& x( M* x: d; t7 A. M; ]3 A5 E
+ L, ^* f1 y3 L2 h) T$ f9 Q
第十一式:使用手机微信扫码,测试“Airkiss”配网功能以及设备控制功能。# S6 ^' Q/ M9 t0 N3 f) \  v/ e2 z! p
  (a) Airkiss配网( D, t0 ?1 t$ [; a9 [/ [6 @7 ^
  Airkiss技术可以帮助你的设备在没有人机交互的情况下智能配置当前Wi-Fi环境的SSID及密码。(假如你的智能设备是一颗灯泡,总没有屏幕和按键让你输入SSID及密码吧)& i: n6 N/ z8 ~* |
按设备上的Easylink按钮进入配网模式,底板上的LED(D1)灯快速闪烁;. Z: a& N1 [- _9 ]
手机输入当前所在环境的wifi密码,点击连接,成功或超时会自动跳出该页面。
5 o7 @* q9 y+ V9 v7 l+ W
" S; ?1 D: A- ]2 D$ U5 Y# n  T[url=http://mico.io/ask/uploads/article/20150723/18e3a2ba0846a30f245578b054272b7d.png]
% A# m) _! p1 h5 F& f+ |

% h; x8 Z: a, K  t9 o$ H0 i; w# M+ l. ?" [
  (b) 设备控制4 y4 d% m& p3 ?) B/ t  M* s9 j( y
  Airkiss配网成功后会跳转到设备列表,红色圆点表示设备不在线,蓝色圆点表示设备在线。若配网成功后设备依然显示设备不在线,可点击右上角刷新按钮。点击列表进入设备控制界面,点击控制按钮,控制MiCOKit-3288扩展板上的RGB LED灯。
- C7 y% _6 N2 y8 S已经配网成功的设备不需要再次进行Airkiss,只需点击测试公众号中的“Devices”按钮,进入设备列表,点击列表进入设备控制界面,点按按钮,控制MiCOKit-3288扩展板上的RGB LED灯。1 ]  E) h: }6 F( v
' v& |' P& E4 r
[/url]! O! _% O! l$ a4 H( O

' c! c# H/ j4 r# e$ ?& c' N. {* `7 P$ S8 E3 o5 H: z/ P8 B( X
[url=http://mico.io/ask/uploads/article/20150723/13e7c77638ede00ccf82d4fb10429ab2.png]

( u$ o( R+ i; T# C" X/ \& U
) |1 f2 y  g- Y/ v. \  L4 W+ r8 s9 a/ Y # }# X8 N' Y( V( U' r
  如果您完成到此步骤,那么恭喜您大功筑基已成!!
  R, }0 o& T/ O1 F6 R* Q# G, h8 n2 Q  武功在手,天下我有!
- Z2 U1 i& k3 h& w  祝愿各位米客能手持MiCO利剑,在物联网智能设备的新江湖建功立业!

4 W# {  v5 ^; q* Y) m 5 V$ Z3 k+ \# Z# r: Z- @
另:源代码地址 http://pan.baidu.com/s/1bnsGEy7' T- N4 \- _0 U4 M9 _& @6 A
4 m0 R$ N% G' v$ Y/ B
MiCO团队5 z7 S) F: \6 x6 ]# O& @* l5 t
敬上!# q( C  M$ r4 q
[/url]* v( f; Z/ A. \. D; d
[url=http://mico.io/ask/uploads/article/20150724/02263811253059862ccc8df321bb95b5.jpg]
. f$ D& D$ x) N/ B8 Y3 {9 G$ ?# y" {' G; J% |% B/ P

更多回帖

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