问答
直播中

micolover

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

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

本帖最后由 micolover 于 2015-7-24 14:47 编辑 : a- `' x' f0 s- {! T* z
3 z; y# `+ Q) R9 h5 p& ~+ }
前言8 E6 f: D- t1 p' f2 }/ B' V$ Y
  大神玩转MiCO好生羡慕
+ F2 k# o; n, q& _& s  `  d  Y0 l  菜鸟低头不语无从下手
6 \& t  z% c! L3 {. i( L6 B" Q% A8 U  别慌~看完下面的武功秘籍,你也能成为一代米侠被人仰望1 r* [) |4 x" A
8 u: T) v) n- F5 }- E8 ?
一.微信控灯十一式2 a# K% N$ h2 ]; X$ w( F/ `5 R+ a
  第一式:注册开发者账号        
% V1 |  i' A; ~3 Y  第二式:使用个人微信号开通测试公众号        
0 A. c/ [& O2 W* K  第三式:在FogCloud上创建、定义自己的产品        
. A* c) v6 Z, d4 Y. f9 e8 t  第四式:在FogCloud上创建产品对应的微信APP        5 m1 N. ^) G5 M  l% g
  第五式:Github上创建微信APP代码托管仓库        
" E6 l( C. a* S" @! f3 l8 u  第六式:配置微信APP以及微信测试公众号        ! h& H. f( t2 N' d9 ?( j' ^
  第七式:使用MiCO SDK开发RGB LED灯的固件
0 {, Q- y0 J' ?$ f5 N  第八式:用网页编辑工具(sublime等)开发微信APP代码        
. g& h6 W- X: F# M2 F  第九式:使用Github工具托管APP代码        # F) f$ w8 h0 ^. A! U+ t
  第十式:FogCloud上生成设备二维码        4 I& g4 O% R5 w
  第十一式:使用手机微信扫码,测试“Airkiss”配网功能以及设备控制功能。         
3 G& B+ q  G/ _二.基本功$ `) R: n  r9 G2 f) x8 z
  注意:练功开始前请确定射频驱动为最新版本
  h; @( V: ]' s3 w  h& I  版本查询及升级方法请参考MiCO社区 → wiki中心 → MiCOKit板块射频驱动升级
6 j; m4 V9 s* U. ?' H% Y* i  1. MiCOKit-3288开发套件;
0 p5 r! _( l3 Q+ _  2. 开发工具请使用IAR7.3版本及以上;
, T" T& a9 c0 O5 x' w  3. FogCloud开发者账号(Fog云使用、开发必须);
( i3 U: T# k% ?; f( H  \- U  4. MiCO SDK v2.2.0(固件开发包);
$ W- M6 q1 ~! N1 B  5. 个人微信号(开通测试公众号);8 ?8 c8 T: f: X5 |
  6. github个人账号(托管微信APP代码);6 o' m) ?9 Z6 Z- C/ X
  7. 网页编辑工具(sublime等);/ N3 D$ v1 _. w+ C3 L9 w
  8. 大致了解MQTT协议及json格式。
$ X; N. Y. U4 I: y8 {  Z2 ]2 E1 n1 H, g8 z
三.招式详解
* w4 ]2 t; C% ]0 A- ~. V& e
/ [* Q) g$ @2 i' _第一式:注册开发者账号
- L  B) e; S- E( P5 l- z/ p; p  登录www.fogcloud.io直接注册账号即可。该账号将用来管理你的产品及APP。
1 [) T7 B/ I8 z! T2 h
& D# v# r# Q- @. v4 n+ N4 v[/url]/ M) @6 S( U) G/ ~4 u* A# p. V
( X$ a* ]7 |0 N8 T% W
* P2 g* ~" w& F$ d9 X0 W; a$ k/ o0 s

; H4 P) u/ g8 u" @' R* ?0 N$ `
" l$ c0 Q3 w( P! Z4 [第二式:使用个人微信号开通测试公众号
- K3 I$ F: m% a  J" P  浏览器打开[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
,点击登录,使用手机微信扫码,进入后即开通了测试公众号。
+ s$ n; L8 ~( A1 K  K- K* Y! G
2 X) A1 e  D( G0 _! W2 z: s[/url]
: n/ c, @% ~) c& Q
1 u& S7 r( _! ]+ ]8 D( T: o4 l
" ^" B  S8 R6 Z9 V  获得微信号、appID、appsecrect,用于后续在FogCloud上创建产品对应的微信APP。
: D! i3 S3 `+ i! s; `; i2 x- x; V1 n* p0 Z1 N+ V( S
[url=http://mico.io/ask/uploads/article/20150723/923e41bc3c91f99ba548d65e2ddd7ec6.png]

( j2 x2 ]0 Z" i4 ?: Y5 S* u8 B' r" f/ g' s0 p$ @

" I& h% `, {) q, t第三式:在FogCloud上创建、定义自己的产品9 I( H/ G& g2 W0 ?; U0 ?
( f! |# J0 N' X
[/url]
% m' l% `4 B6 d  ?2 @+ S; `2 {0 G0 n, y$ s! Y* B

& U2 O& ~% T  ]; B1 O2 Q: b  根据提示填写相关信息,创建完成后,如下
8 y8 g3 L, `3 k9 C: U: W; y( |1 I
4 |' }. A% g. ~2 K6 y% }[url=http://mico.io/ask/uploads/article/20150723/ac518bc12959f06f82624e4d9e6fc841.png]
7 Y5 f+ M- U- Q7 ?! x
4 Z( e/ @3 n- Q" U2 d
5 Y( M  v- Q8 e4 [" M
  点击产品名称,进入详细信息:1 q) N! I8 C7 R

9 J& T8 k% \* h/ N/ k[/url]4 ?. H$ t) V* e

9 ], Q$ L% M7 p3 @- a; C$ J6 ~4 O
. q: Q' e( H$ ]0 _$ }  产品ID/KEY会写到设备固件代码中;
' f  p& I3 _0 x& ~/ {9 k, {  创建产品的数据模型,数据模型是用来在云端定义产品功能、性能等特征数据的标准格式,可以储存设备监控、收集、控制、用户行为等数据,从而对数据进行分析,提升产品服务,开发案例过程中定义数据模型,能够有效帮助开发者将APP、云端与设备端的关键功能、特征数据等同步,避免开发过程出错。
) g5 c4 [* z% z2 I& s+ @5 w8 G1 i3 w3 l$ w
[url=http://mico.io/ask/uploads/article/20150723/419d8575656778d542b24f70ff5d4aa2.png]
+ k* i6 J# u. H! |+ m* q

9 y2 T( J, b) m; I+ C+ \# C ' L- K9 w8 m' B& |
  本实例仅控制MiCOKit-3288上的一个RGB LED灯,所需创建的控制数据点有:
+ Y4 \9 w# ]/ i" U1 @+ `     1)开关(rgbled_switch)                     读写属性为1         时间序列为否
" v0 d1 H- b( k6 J     2)色相(rgbled_hues)                      读写属性为1         时间序列为否2 a8 }- d1 L3 b4 _; K6 z
     3)饱和度(rgbled_saturation)                 读写属性为1         时间序列为否  _( F% A( L  y! I, w6 a9 x
     4)亮度(rgbled_brightness)                  读写属性为1         时间序列为否, M8 c! T. G" R8 C3 p8 U0 p
  *属性名和描述可按个人习惯添加
) @$ v3 O# r, m5 |! F5 B5 u  注意:在创建数据点时,“时间序列”选项:选中时云端保存历史数据;不选时云端只保存最新的数据。4 x  N) }, B: q2 A
  数据模型的具体作用在后面的进阶教程中详细讲解。- H& Q+ x4 |$ c; E0 K) q* i; c
! \9 U1 O# V6 ~; g# O' y8 z( d
第四式:在FogCloud上创建产品对应的微信APP  {6 O7 @( U% M3 {

' ]+ j1 p# f/ c" g! ^) T) a4 E  a" u  ^; ~4 U8 l% Q
[/url]; @3 }- O, |" t  M3 a: l

4 a. n" ?4 k) e! `9 H( _6 A 6 B; r, h& Q5 I% ]$ A- @
  根据提示,填写相关信息,其中微信号、AppID/AppSecret从步骤2中开通的微信测试公众号中获得。
, b9 w+ U; B' K- X# J  H: Z( v  V ' k% i! v+ w1 [7 [- r3 ^
[url=http://mico.io/ask/uploads/article/20150723/12165d0d0d83feb3aba6851cc9588c08.png]
) T' W* A7 a  \4 T4 E6 |) e' m
2 X; P) a7 B( K% \! ?

1 H: q# l) c8 l" O4 b/ H! f第五式:Github上创建微信APP代码托管仓库1 b( @2 h. B) K* X: u; Q
  请登录github.com自行创建新仓库。并克隆到本地,克隆方法详见《上传文件到GitHub》。该步骤的目的是获得一个可以在任何地方访问的git仓库,后面会使用该仓库托管微信APP的代码(其他类似git仓库托管工具也可以)。* c$ @7 j  K( V
8 u. w& k' g: d: B
[/url]* |8 G/ _6 R2 c) k" G3 }" L
/ X6 n  i. R- b3 L9 d
4 A' ], E7 O( h% u. b
  获得仓库地址,例如:https://github.com/wangeshen/MiCOKit_test.git
+ p1 ^& z/ ]/ j4 j7 G* r4 J
; J7 T& _' H6 b" G+ M# {1 v
" w6 @, u+ X- I! ^. O' ~( c第六式:配置微信APP以及微信测试公众号
& `- Q, e" m, M  (a) FogCloud上的微信APP信息:5 X' S! c% O# z7 y4 x8 `9 I3 L) P
/ B' i$ ^* ^1 \8 w
[url=http://mico.io/ask/uploads/article/20150723/3e552dc6f9c1097d68b01b4643a04921.png]

, \6 U+ I$ N  c5 T- [0 k, U5 Y
0 {& p  [' `6 H+ [
9 x1 G7 e/ L% X/ L6 t  其中URL和Token会在后续配置微信测试号时用到。( d7 k: N. W! ?8 v1 z, `: Z. `  W

7 \5 q5 W- k, {* g7 e8 c" T  (b)Git部署(同步微信APP代码到FogCloud)% U5 c" ]  k1 Z) B6 {; n0 d5 L

  x! v$ T7 b2 ^[/url]9 D! d2 n( F& ?2 t) }

& W: C) D" w. E1 M- @ ( C$ p/ u0 ]* P: v2 `2 G2 A
  其中:' ^* ?6 x( ?0 C/ v% q( N
     Repo即步骤5中创建的github仓库地址,填写后保存;
0 F& W0 f- C, s  b$ i     Deploy key和Web Hook Url可添加到github仓库的设置中,以自动同步代码到FogCloud;也可以不添加,但是github仓库中代码更新后,需要手动点击“发布”按钮来同步代码,同步后右边可看到最新的代码提交记录。
9 ^9 @% a+ Y0 e9 v
7 f6 Y0 u. v0 x% e3 r; B
, h; v; A7 O3 E1 r/ B[url=http://mico.io/ask/uploads/article/20150723/47bf7c17eb7ad746792160a06f14ab20.png]

. Y  I) q& L( F0 m( g$ L( W) E7 b% j
7 M4 d7 F# G+ e* @, _) q* y: s$ N0 ?* \4 q5 V6 k  V+ O) p* {
  (c) 微信菜单管理
/ S, Q8 A6 C0 U* ?" a3 _% x* L( O  通过FogCloud提供的微信公众号英国威廉希尔公司网站 菜单定制功能,方便的定制手机端微信上的控制界面及功能;至少包含“Airkiss”按钮,打开微信Airkiss配网功能,“OAuth”按钮(名称可自定义)进入设备控制。9 D5 L6 t8 J! ^
1 a9 y* N& [  k) R' r- H0 l

9 p5 r/ p8 C7 l  l# Q' \[/url]
& }& _" K% G" {
: V. S2 b) E( T: ], D
3 U& R& n9 E) a  (d) 设置微信测试公众号 URL与Token在创建的APP信息中可以找到
2 U( k. ?- L; W0 N( J( Y  修改配置信息:. D/ x3 @4 X/ H5 G- i6 K# z$ U3 P
  URL一般为:[url=http://4addb71f-1b5c-xxxx-94c5-f/]http://4addb71f-1b5c-XXXX-94c5-f
... ylink.io/wechat.php
* _* e9 z) A# S, F' G1 v1 b  下划线部分作为JS接口安全域名和授权回调页面域名。
8 w* x& t' Z, }/ x3 P! \6 [8 y
/ |! M! @$ w: A- ~4 {[/url]
) C2 C2 q; R4 y1 V
2 n, f: s, Z$ e# a3 C' e' G : t# V: x. ^9 i( U% G) l% D: T
  开通所有测试功能,并填写网页授权域名:
  P7 R1 C' [6 Q  D! p3 ]2 s% W$ A* W2 ?' M; t5 v
[url=http://mico.io/ask/uploads/article/20150723/4147bd2c388956cee39120fa591cd440.png]
8 r/ q3 S+ Y4 F* h
% L8 o8 B" P* D) S

0 O6 [% n9 w. r9 \1 l) b7 J  点击修改,打开如下:
; X. k- T" Z& x0 y
( f5 B. s* ~% O* x7 m+ z[/url]
- r- m/ e! W( j) m, s$ D  t& Y; b6 [* W5 P' Y( j

1 h$ J( a- s# I1 v& |) i/ n  同“JS接口安全域名”,格式为前面提供的URL的域名部分,如xxxx.app.easylink.io,其中“xxxx”为FogCloud上创建的微信APP的id。
: K( B( s9 I, M$ N0 u' D' v" G8 L3 k# O

# }' q$ y6 s, U. O' ]第七式:使用MiCO SDK开发RGB LED灯的固件
# w- @  \1 T8 z" ]  (a) 登陆MiCO开发者网站mico.io,去MiCO社区注册账号,并登陆;# A6 f8 V/ j; e6 F- O" o/ E
  w$ E& e" }* M) }0 |9 f% N
[url=http://mico.io/ask/uploads/article/20150723/3c04c03f3d922eb74c06906c610b9290.png]

' W$ D. W* ^) A' p8 t* N( _% N- y( C9 `- g% G0 i2 n

* p% j* H2 C0 m9 P& A% W8 l  (b) 重新打开mico.io英国威廉希尔公司网站 ,开发者中心 ==> Wiki中心,下载MiCO SDK。
/ h; G. z2 `3 @6 d  M
* l: G: n! `4 R. s8 a[/url]
' W2 T8 t9 e" V: Z" t  q* k/ U2 D7 w2 K& [. h
! r* ?. ]. ^0 R& t7 u4 B1 A
  (c) 打开MiCO SDK中的微信开发实例工程:
( e1 q* ^! S$ Q
+ b3 f+ f2 Z+ ^) F% F[url=http://mico.io/ask/uploads/article/20150723/3c6381767bf00833cab64ed4c37df2f8.png]

( g' p0 F: z. z0 B/ S! G9 [, i0 R& C  x  W! E

% _$ q& G, n3 I( e# S1 q    1)开发者手中拿到的可能是硬件平台可能是MiCOKit3288或者MiCOKit3165,在编译工程时要先选择硬件平台;$ Y" [6 C/ j1 i: P; c- |6 e" A
    2)将FogCloud上创建的产品ID/KEY写入固件(必须替换):$ J0 M6 ^& @: V& B  u' |: }; V! s

$ p1 N2 ]7 \0 c7 m" q[/url]
" h- j0 M, ]/ M4 l/ \# ~$ n1 O; }6 b% g& r9 Y
+ y' v- d: [& t8 D4 y- X
    3)修改版本号,这样才能把新的产品ID/KEY烧入FLASH
9 U% U! r) G( v( j( s/ \. x- q( \
[url=http://mico.io/ask/uploads/article/20150723/1661ce047fc9ea5e465db04acd59c24e.png]
. d: U4 G! u- F5 J" s
8 m1 T- D4 G* [) B1 O
. w+ q$ J2 w! v
    4)添加LED灯控制代码:" s, F8 n: l, q# V
' |/ s, j3 H- s7 N2 g/ N& R# I5 _; y
[/url]
) G/ ?: C; G* X7 x& a6 N) }1 u, ]' j7 D8 ~. t, Q
) |0 r2 _2 v% q3 b* h
    5)改为收到云端消息后,解析JSON数据,并控制LED。9 \7 W! M4 K* [

. C6 ~5 R1 Y3 {' ?[url=http://mico.io/ask/uploads/article/20150723/fb02025e4062a859d0d33d4178cd156a.png]

) e( h5 H0 ^& E$ @1 [
2 ~/ W8 q, ]+ G8 I2 u& s7 [8 N
4 c$ T2 h9 g! ^1 L1 Y/ p/ q    6)错误代码参考:在运行过程中如果出现错误,可在user_log中查看错误代码。
- p) ?" X6 d% v6 @' A) K- F& u2 _. u
[/url]
/ z+ X) e0 o* Q& _6 M+ W# `% N0 ?7 }* ~

6 h2 {, X! ?3 N" P2 t" ][url=http://mico.io/ask/uploads/article/20150723/9f6828473efaa4a01ae4434c236a2ef6.png]

6 e" D) z! y9 o# Y8 z, i; F" G
  f8 b" H  j# T9 H' c. A 4 r  p. Y% ^0 r+ h* g9 r
    7)MiCO SDK固件烧录。(详细固件烧录方法及步骤请参考http://mico.io wiki中心)# P4 J% ?1 f  t" ^- h3 t, x
选择使用的烧录工具J-Link或者ST-LINK:$ R  W0 n8 I, l) r

7 G1 D5 M* s* a[/url]
& ~) Q  H& J- _, U
9 }: C$ J; P1 B# y- `
+ q" C( S$ g" E3 |  编译/连接:
" e% K+ w/ A3 v( s' t6 j: c% j. U3 m: `
[url=http://mico.io/ask/uploads/article/20150723/14ee93da638bb344905c2f6c7a8481ef.png]
2 P, P# \7 j7 H' |1 w8 T
! C% g! |; i( Z( W( Z

2 D: k, M1 ], i+ |- R  烧录/下载:$ N  s- D3 J1 [1 E$ ^
* y; t& ^) Y2 j' c* ]+ ?3 ]
[/url]
! _4 K! Y, `8 s* b# V% z, f. y9 p" {' }) T! d, {2 ]8 C8 Z

- V! r9 F3 S" a7 m第八式:用网页编辑工具(sublime等)开发微信APP代码
% c. I8 v* D0 s& U以下为核心代码及其注释$ Q5 S! v7 P# c# u2 q2 D
//应用程序入口在application_start(void),一系列动作(如配网、连接云等)以后,用户程序入口在这里。
; a8 v$ G. d+ b5 I2 x; x/ R: s; IOSStatus user_main( mico_Context_t * const mico_context  
' j9 J6 L1 U, c2 G5 L{6 l* V, y% Z# c
  //user_log_trace();
& h0 `( O1 R$ v. d! ^  OSStatus err = kUnknownErr;( Z" v. T2 q; P0 x
  fogcloud_msg_t *recv_msg = NULL;//接收数据结构体
5 C7 @$ {& U8 s5 g% T$ M( m( ^  json_object *recv_json_object = NULL;//结构体内包含json数据格式/ ~- q5 i# ]2 J' C* I8 q* y9 c
  /* rgb灯的色彩模式采取h***色彩模式(色相、饱和度、亮度) */
" G7 R( i7 ?0 }# E' D$ a! k) E( A  bool led_switch = false;//rgb灯开关5 N6 v& a% f3 x+ Q0 J1 N2 Q- S
  int led_hues = 0;
" o8 m$ P: Z. J0 {7 F& d$ q  int led_saturation = 0;
# |+ \/ w& o+ d% J+ m  int led_brightness = 0;
; k; b0 i1 `& o  require(mico_context, exit);
/ C; n, i3 T# l  h***2rgb_led_init();  // RGB_LED初始化: B% k0 f; m1 n9 d, p# k  B) V
  while(1){
1 ]* \2 q$ K0 `, A7 m    mico_thread_msleep(100); //延时100ms3 v) a/ Y/ o, p" N7 J; N
    // 检测 fogcloud 连接状态+ T% [: D- l* q* p; V
    if(!mico_context->appStatus.fogcloudStatus.isCloudConnected){1 {( ]. q) g, ]* z
      continue;- g' @5 X6 C0 }5 E$ B5 c+ v
    }
7 x2 r- P6 d5 y, G4 h+ [2 C    /*
6 J% N( @4 t; K2 S! \- \3 K0 q) t9 S      接收来自云端的数据
. w# A9 b7 }4 w0 v1 P; l! E  `$ y      recv_msg->data = +
  I$ v1 B7 p) M! N8 V      topic表示模块订阅的MQTT通道名,data表示云端返回的数据
/ T% A) Z. i1 q     */
: v  k8 s+ o" W+ `    err = MicoFogCloudMsgRecv(mico_context, &recv_msg, 100);% W1 a2 p5 Z/ `) X, p
    if(kNoErr == err){
, }( N. d& m# }// 打印  例://user_logtopic[30]=[de54a8ea/c8934691816b/in/write]data[23]=[{"rgbled_switch":false}]
7 V! `- s! `' m- ~& A$ q      user_log("Cloud => Module: topic[%d]=[%.*s]tdata[%d]=[%.*s]", " R2 S! e. y8 J  M# W* ?  P4 v8 b0 |
               recv_msg->topic_len, recv_msg->topic_len, recv_msg->data, 4 X% \6 B% G! D$ P2 g! @
recv_msg->data_len, recv_msg->data_len, recv_msg->data + recv_msg->topic_len);
( T$ T7 K1 g8 n// json格式的字符串数据转成json对象
. ?7 s& u2 I, E1 {8 Y7 d7 X% S3 b      recv_json_object = json_tokener_parse((const char*)(recv_msg->data + recv_msg->topic_len));
4 P2 ~9 @. l0 Y, A. k& g1 Y3 D  X      if (NULL != recv_json_object)
5 ]0 r! q% q# V: W" c1 `0 Z" g      { : z! z& _5 [' j5 b) T
        //根据键值对遍历
) c7 C( b2 c: J% u1 E/ @        json_object_object_foreach(recv_json_object, key, val) {
* J& K" d* c: ?8 p2 H9 ?, d% z/ e+ x          if(!strcmp(key, "rgbled_switch")){, w8 X) @5 c+ U# ^9 z( G
//如果键为"rgbled_switch",提取值“开关值”5 E9 S3 |/ u: l& ?5 A7 I
            led_switch = json_object_get_boolean(val); 6 K/ d3 [4 R! L$ E8 B( E5 V0 M4 X
          }
9 q2 l9 m  _9 x' E4 E          else if(!strcmp(key, "rgbled_hues")){* F/ K% |  Q0 I) u% |: m
                        //如果键为"rgbled_hues",提取值“色相值"& |7 N% Y, a2 L& H1 u
            led_hues = json_object_get_int(val);
" @0 x0 J  p  A          }3 p/ |, [7 u0 p- H& }7 |4 J( T5 z
          else if(!strcmp(key, "rgbled_saturation")){
+ q" C2 O8 U+ i; V4 r                        //如果键为"rgbled_saturation",提取值“饱和度值"
! I6 S( I# s9 K            led_saturation = json_object_get_int(val);! v3 J) U: A' a6 z8 F
          }
! w" C, T1 q# t          else if(!strcmp(key, "rgbled_brightness")){
2 Z+ _  ?3 T$ t# f# H9 r9 h//如果键为"rgbled_brightness",提取值“亮度值"  y  ~& C/ k2 E' O; D
            led_brightness = json_object_get_int(val);
: P# m0 z/ W, V* o% g          }
0 G0 `+ J( H4 _& \( c% ^        }
, ?* P& S! t+ J, y5 m4 C- h( Z& H: a        // 控制LED
4 t, m2 }' G1 e" b/ X% \: B        if(led_switch){1 d& B, Z4 X: L- m. X% u+ E
          h***2rgb_led_open(led_hues, led_saturation, led_brightness);
, B" w/ t$ o: l7 g; t0 c        }else{; D  J) w9 ]; e! c; h9 M- ~! L
          h***2rgb_led_close();  // 关闭
9 u3 J* A/ a3 o9 F5 C7 v) x, @        } . i: C. p* r1 g( ~
        // json对象内存释放
" r: O1 o8 E! z        json_object_put(recv_json_object);$ K2 p( ]3 o' }$ G5 e0 c
        recv_json_object = NULL;
0 R) b, c( |. O: [5 v8 B      }
( s8 r6 V: s8 t8 q      // 结构体内存释放
& |3 W1 Z- `4 x4 \) w      if(NULL != recv_msg){8 D* y2 j. V) V) j& S5 @8 v
        free(recv_msg);
# D9 a! \  ]% m$ G! M  ~# n        recv_msg = NULL;
- r& M) a0 Z0 C3 u      }. U: ~2 h7 K: H2 C& C
    }: ~  e) q; E, S0 u/ I
  }
0 W+ x, I# a, bexit:) e' t; s6 h3 h) t! r+ @5 V
  user_log("ERROR: user_main exit with err=%d", err);
3 _& [1 p( }& \; W" F8 O  return err;
( F% c( B- i3 X# b; U. _) M}, \+ U( K9 r! T9 d! J5 i  x

) v& q' U6 b7 V
( U7 X3 z3 h8 _- U0 [6 w; i第九式:使用Github工具托管APP代码
9 R7 }9 d: {1 V! P  在例程包中(MiCOKit SDK的APP目录下),找到微信APP控制页面代码(index.html和yourID.html),将yourID.html.重命名为你的产品ID,如cabca380.html。拷贝这两个文件到本地git仓库,再同步到git服务器。同步方法详见附件——上传文件到GitHub.zip。
! D2 X( d/ ]6 Z  Z0 _& k# D, A7 k- V2 T$ x/ o9 Z5 r9 S: h
[url=http://mico.io/ask/uploads/article/20150723/97411f3674d23cb747a33172ee9c1284.png]

$ d0 @: N  O, E6 e- r3 a( s2 i9 H; X" s  m% l
6 s/ b  R2 `, Q2 X3 D/ I
  index.html   —— OAuth按钮跳转到该页面(一般为设备列表页面,可不做改动)
4 f; b- R7 v5 h3 L2 P+ y& C, P7 r- b$ k- w2 P$ _
[/url]
3 \7 p! l  B* P3 g" t
+ f7 c1 b7 ~& r2 P1 D6 F$ L) J3 n' {! t1 b: }+ \0 M2 t
  xxxx.html   —— 设备控制页面(其中xxxx为FogCloud上创建的产品id)8 y6 |6 I% \8 ^
$ Y* l/ k* r& {' O9 ]  J7 X6 \* k
: q1 Q' E) X5 |5 Q& @
[url=http://mico.io/ask/uploads/article/20150723/bdd3e767bff5fdcf06f16b6ee478f57e.png]
3 S; B1 c4 I- A7 B- C
% N; [2 I; b8 j  }! G/ `
3 G) C, x5 W$ W* h
  详细代码见附件代码包,部分代码解释如下:
2 ~, [3 Z+ ^9 {" [5 p
; _6 B# A$ C9 _' x$ f) q+ u. Y
9 s' J, ?3 J: A8 J, Q$ `[/url]  H$ l: B  |9 j' S$ b
1 L. i7 V* C- o4 [8 \) A+ ^

: t6 J+ K* i  y% f/ x4 S3 S[url=http://mico.io/ask/uploads/article/20150723/041017556fe9d8bf147cab201e4055c6.png]

/ X; ?% a% [5 y* U/ {. R6 c* m- H2 x0 P7 L' d- r

+ x& n  {& o& ]3 y) ?) `# z1 f
! N2 E, V/ B# K. `/ g  修改、并提交代码后,如果没有配置WebHook让FogCloud自动更新代码,则需要到FogCloud上手动点击“发布”按钮更新代码,并通过git提交记录确认是否更新成功。
% a- W/ B0 A: S+ z4 Y" ^% o" e* k) d- i( [4 e5 \9 J

' y' v, v$ n: p5 h: Z$ n第十式:FogCloud上生成设备二维码
. U* i: @' {) ^4 e6 E7 q4 F& i4 E  (a) 创建新设备
* D2 l5 U' P2 I" P. ?2 {7 p5 m2 V% K% N2 H9 X
[/url]
" d6 w- r  u; |5 Y
8 O* W6 E) e$ s$ G/ L - G2 b  Y+ H3 O) X
(b)填写设备MAC地址(由小写字母和数字构成,设备上电后会向串口发送MAC地址及其他数据,可用串口工具查看)接口创建设备。7 a% L; P3 }0 O" l2 F* m  _
3 F% h7 Y7 {$ Q3 F# R; d

) C- [( l3 @# W. @& \) j[url=http://mico.io/ask/uploads/article/20150723/60addb425f19b481c3d2ea9346bbd71f.png]

# H# L9 U7 @8 }5 l; Y0 N+ K
# u1 N$ T; y6 ^2 i
. _. C3 G$ q% ]6 M( F- l- L3 O
+ j) V, L3 ^& d2 K/ `  (c) 为设备生成微信二维码- @: U6 X; S1 ?9 E2 e3 F
  点击“同步到微信”按钮:  % A2 ]3 `4 e9 b2 q- A2 |% M
/ b; o) b. }/ v" X" m% U5 O
[/url]) D: q2 H" q3 N

: p. r$ M8 j  ?3 I  l' f5 |. [0 H* L4 ^) ^5 R' i
  选择创建的产品和要使用的APP后点击同步按钮。6 s+ N8 J& b/ X- C+ S4 i  _. I8 j, a

3 _0 N' \6 W' f3 Q4 u5 p4 r/ Z[url=http://mico.io/ask/uploads/article/20150723/8391b8371fe9a3cf4338e65240989bf1.png]

& f) q6 Y, B2 |+ {: b: f5 Z/ E/ A- r& [
! F1 V6 C8 g' k( ^
7 `( @* d) H$ E6 {  Q  成功后提示:{"result":200,"message":"success"}
. M$ I  f( g+ J# i& c 7 q1 H8 }( s# s* J' f
[/url]6 Y4 ]4 E9 r4 C, K$ m

9 m  q5 M) n, L/ g( Q1 j2 `' ]: m3 t9 k- X2 [

$ ~! A3 t) N  [) g# n  极少数情况会因为微信公共平台延时的问题出现err:500问题。等待几分钟后重试即可。
- I0 }0 I& l5 B& Q  返回到产品界面,可看到你的新设备。
  c2 V  R# ]0 R* O. R" o+ B* p2 C- g
[url=http://mico.io/ask/uploads/article/20150723/fb1885f6aaad37a08f169dbe29946d54.png]
* L' R, L, b0 ], o$ {: _
; L& G9 ~" N, c4 e& p" k# H
$ X- U5 g+ K  ]) C8 S
[/url]
! b* @# W7 E0 c" v
, G. a1 o1 I: ~( R
8 n/ L: q' N# z; x5 `1 g: p1 }+ B" |  o% _% `
第十一式:使用手机微信扫码,测试“Airkiss”配网功能以及设备控制功能。! B* C& ]' E9 s' v- w- A
  (a) Airkiss配网9 f& L$ d: b1 K$ o# {( n! [
  Airkiss技术可以帮助你的设备在没有人机交互的情况下智能配置当前Wi-Fi环境的SSID及密码。(假如你的智能设备是一颗灯泡,总没有屏幕和按键让你输入SSID及密码吧)
9 A7 k+ N* G% t& d6 N0 A, [! h7 y按设备上的Easylink按钮进入配网模式,底板上的LED(D1)灯快速闪烁;$ M- O) g6 a1 H+ I4 d. b2 h
手机输入当前所在环境的wifi密码,点击连接,成功或超时会自动跳出该页面。
8 \) w) U$ k. _
8 b9 a# {+ ^- Z3 f0 s9 c[url=http://mico.io/ask/uploads/article/20150723/18e3a2ba0846a30f245578b054272b7d.png]

, B& Q8 ?3 w, ]+ N) O6 {1 j5 t
: M4 l9 Q: u" e9 `" ^7 }6 p. |& g+ u  |; f
  (b) 设备控制' R  f) R; \. l
  Airkiss配网成功后会跳转到设备列表,红色圆点表示设备不在线,蓝色圆点表示设备在线。若配网成功后设备依然显示设备不在线,可点击右上角刷新按钮。点击列表进入设备控制界面,点击控制按钮,控制MiCOKit-3288扩展板上的RGB LED灯。& A7 h; q2 ~& a& V7 T
已经配网成功的设备不需要再次进行Airkiss,只需点击测试公众号中的“Devices”按钮,进入设备列表,点击列表进入设备控制界面,点按按钮,控制MiCOKit-3288扩展板上的RGB LED灯。
1 D1 u) \! a7 h: ~% @4 F0 ?9 ^& {
[/url]
! B& w* p" w2 d2 C+ g: y0 d5 y" ?8 n7 a& S' G" S  x
, p+ x3 N1 u& `* P. m
[url=http://mico.io/ask/uploads/article/20150723/13e7c77638ede00ccf82d4fb10429ab2.png]
2 e" s/ W8 {! h, A

: o8 ?% o+ t/ \; `( S& ^$ [
# H$ b3 K8 Q1 a/ q* ^: ~0 t' p  l  如果您完成到此步骤,那么恭喜您大功筑基已成!!
1 Z& r0 Z1 W1 U  k5 P4 e' w  武功在手,天下我有!, \: {. v1 i$ R( l9 A3 h2 Z5 x
  祝愿各位米客能手持MiCO利剑,在物联网智能设备的新江湖建功立业!

( W4 I- y2 G6 y& r7 _1 w& h' V
; j/ Y* b! ]# r: ~6 s/ G. e! l另:源代码地址 http://pan.baidu.com/s/1bnsGEy78 H$ v4 k  d1 C0 \3 Y

2 y: F& ?! q* Z  t/ \9 D/ LMiCO团队$ s+ w. x8 L5 w8 g
敬上!7 r; A, i7 Q# B" R3 H" K
[/url]7 A& r/ y* H8 d, C
[url=http://mico.io/ask/uploads/article/20150724/02263811253059862ccc8df321bb95b5.jpg]
/ B3 p7 O$ L) @+ S0 w: o7 i# X9 ]

更多回帖

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