问答
直播中

micolover

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

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

本帖最后由 micolover 于 2015-7-24 14:47 编辑 9 E( k6 g- g) ]" F: X; |
: B5 _8 x1 l6 V: _8 |! J# n; f
前言, X5 \' |- G- h! |. K  i
  大神玩转MiCO好生羡慕
8 A* G* E. w+ W4 z- n% H  菜鸟低头不语无从下手
: X  {7 L+ N5 f: X  别慌~看完下面的武功秘籍,你也能成为一代米侠被人仰望, m: |8 R; q$ D) G( V

9 r. b! a! l8 d* I8 }: x* e4 [一.微信控灯十一式
: Y; k, A$ }9 D& F0 m  第一式:注册开发者账号        
) o/ z$ a8 ]# c% N  第二式:使用个人微信号开通测试公众号        
, D) x1 C, H0 u' F' l" B* n  第三式:在FogCloud上创建、定义自己的产品        1 B% ^3 P) b" y
  第四式:在FogCloud上创建产品对应的微信APP        
9 a% I2 h' ~5 P  第五式:Github上创建微信APP代码托管仓库        $ l- i. Y# @- G& ^1 j
  第六式:配置微信APP以及微信测试公众号          h0 P3 G3 R% O, G% X  o' `( ?' P/ z
  第七式:使用MiCO SDK开发RGB LED灯的固件9 l2 L) B6 S1 r4 @
  第八式:用网页编辑工具(sublime等)开发微信APP代码        5 q* r! C$ N( g. d6 {: ~. y
  第九式:使用Github工具托管APP代码        ( B: `1 t/ f, d
  第十式:FogCloud上生成设备二维码        ) r: t9 h8 Y$ L
  第十一式:使用手机微信扫码,测试“Airkiss”配网功能以及设备控制功能。          % T2 ^* b) H1 w, i, N8 N
二.基本功
4 k3 f7 y$ c1 g' }  注意:练功开始前请确定射频驱动为最新版本
/ E. I7 Y: e% k6 T$ ]  版本查询及升级方法请参考MiCO社区 → wiki中心 → MiCOKit板块射频驱动升级
, H4 u3 j/ M$ E1 j! {- K" c  1. MiCOKit-3288开发套件;$ }7 I8 B0 d& C. b/ X
  2. 开发工具请使用IAR7.3版本及以上;
7 p  q6 |% y7 `. ^  3. FogCloud开发者账号(Fog云使用、开发必须);' j" ?, G& P6 ^, Y( D7 S
  4. MiCO SDK v2.2.0(固件开发包);
' w/ U, n- T/ \  5. 个人微信号(开通测试公众号);
3 J( M$ c% B. Q2 j0 \9 c  6. github个人账号(托管微信APP代码);
; G7 |4 `* a6 ?7 s4 j  7. 网页编辑工具(sublime等);# n* D, v6 U, T" U9 h! K- P
  8. 大致了解MQTT协议及json格式。
! B; R" D/ _/ N. ~* y; K8 R+ S& L
三.招式详解  T0 n- r6 E% b# [, N
' X8 Y5 r. O. ~  I8 W: t
第一式:注册开发者账号
3 s& B5 h- f5 Q/ n  登录www.fogcloud.io直接注册账号即可。该账号将用来管理你的产品及APP。& z/ r: \+ x) o. d9 H6 O& R) d/ S
/ _3 H- H( C+ c% c" B0 ?
[/url]
/ r2 Q5 L& w/ j7 o+ t) s" ?$ [7 |( m9 C; }$ U
# Y  r; P' `7 i

" j& C3 x- q2 O1 z* {  S& J. n0 E+ B) a+ O: E) N; b% f' t+ W7 l
第二式:使用个人微信号开通测试公众号  ^# J0 U; O. Y9 u) S
  浏览器打开[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
,点击登录,使用手机微信扫码,进入后即开通了测试公众号。% B& J# N5 b1 O7 e4 _

- E( b9 a6 }, j1 W[/url]
7 }! Z3 a& T$ B: E
- v2 H  w- z% o( m( j
: c, F" s& r& L. p! M  获得微信号、appID、appsecrect,用于后续在FogCloud上创建产品对应的微信APP。
, g# _( J8 I5 g6 l6 G5 _
# m! B! w: g0 [  J[url=http://mico.io/ask/uploads/article/20150723/923e41bc3c91f99ba548d65e2ddd7ec6.png]

. L$ J7 u+ A. {* o
, g+ T2 A6 T+ ?# b( A6 x$ x( T! m" z* l) [7 n$ |- _3 k
第三式:在FogCloud上创建、定义自己的产品$ Y, ^, ~! D4 \. |1 P# H

& n: [6 K, R; X! Z% L' Q0 S[/url]
% a$ Y; l8 E& E7 v6 u3 G
2 g/ j7 J% w: T3 B8 b% q% U1 A; {0 O
  根据提示填写相关信息,创建完成后,如下! F% H& j* n7 F7 _4 W' N

' [3 z7 d7 ~# y8 |% t$ e) T[url=http://mico.io/ask/uploads/article/20150723/ac518bc12959f06f82624e4d9e6fc841.png]

% Z5 ^/ J; S* a$ l5 [5 K
1 b5 O' S* U# W- M- c3 T
4 L/ w  W: a: F  点击产品名称,进入详细信息:
+ e5 O  F4 `) C: w4 O; l& b9 N: E+ k" T  h5 Z5 e9 M
[/url]6 O6 S6 O2 C( O* f* k  n

% {2 N# u" q2 v1 i5 V
4 p# ]  j' N& }! g* `  产品ID/KEY会写到设备固件代码中;, `- G$ o4 L/ P; ]8 b. c$ {
  创建产品的数据模型,数据模型是用来在云端定义产品功能、性能等特征数据的标准格式,可以储存设备监控、收集、控制、用户行为等数据,从而对数据进行分析,提升产品服务,开发案例过程中定义数据模型,能够有效帮助开发者将APP、云端与设备端的关键功能、特征数据等同步,避免开发过程出错。& u  T$ x5 u6 B& b% _
& E$ M% u  s! [, {( P/ J* d
[url=http://mico.io/ask/uploads/article/20150723/419d8575656778d542b24f70ff5d4aa2.png]

; h9 P) y, B/ L0 q3 R- f  O+ |: n2 {0 q. L' o$ F; O9 i" {

  d& ?6 k, C5 y# |  q# n  本实例仅控制MiCOKit-3288上的一个RGB LED灯,所需创建的控制数据点有:
# m- P$ s# w. t6 y     1)开关(rgbled_switch)                     读写属性为1         时间序列为否( {, i3 y' F, S; t
     2)色相(rgbled_hues)                      读写属性为1         时间序列为否
0 w& ]8 L; e* H. m; A/ J& n     3)饱和度(rgbled_saturation)                 读写属性为1         时间序列为否
% v. c1 o) R' P1 n8 s     4)亮度(rgbled_brightness)                  读写属性为1         时间序列为否
5 e2 e- ?# G9 B( S+ Y/ U7 B  *属性名和描述可按个人习惯添加
& D; J  G, t0 A. R& K" L% Y1 M6 W  注意:在创建数据点时,“时间序列”选项:选中时云端保存历史数据;不选时云端只保存最新的数据。
8 g- Y1 b: _# Q1 O  数据模型的具体作用在后面的进阶教程中详细讲解。
7 ~( U# n! q! G+ s
) h/ W/ }* i8 X5 A2 |( o! G第四式:在FogCloud上创建产品对应的微信APP
) D7 P$ {" ~3 s8 s3 j$ T( |5 ~" O! j7 c) z  ]
* L% D7 m: G; b
[/url]
+ m9 P2 u- q  {- I8 A* Q2 j1 V8 C* F2 T/ r& D0 r2 D

/ D1 J' I# ~  x+ w- n, [  根据提示,填写相关信息,其中微信号、AppID/AppSecret从步骤2中开通的微信测试公众号中获得。) R  _5 O8 |0 I0 S( x5 d, C5 l

) i& J" m4 J" ~$ w2 S$ ^1 Y[url=http://mico.io/ask/uploads/article/20150723/12165d0d0d83feb3aba6851cc9588c08.png]

) ^2 B# e" v: j) o8 P1 M/ H$ ~0 ^5 c. E9 e% _  {9 J/ N

; O9 `$ x, e( l) k) p6 f第五式:Github上创建微信APP代码托管仓库" O' b* I8 K" U3 `7 L
  请登录github.com自行创建新仓库。并克隆到本地,克隆方法详见《上传文件到GitHub》。该步骤的目的是获得一个可以在任何地方访问的git仓库,后面会使用该仓库托管微信APP的代码(其他类似git仓库托管工具也可以)。
) R9 a3 z0 M& u' |; K% s1 K5 X0 B: p
[/url]
: r0 B5 n6 F/ t& B8 x( a4 K, `: r0 l; O3 p7 L( V3 l

$ e! P; a% k. D  获得仓库地址,例如:https://github.com/wangeshen/MiCOKit_test.git' ^* ^$ P( ^$ U8 w: g

: |* M% }/ U! U9 F$ K7 V- y4 l6 e
9 e2 K8 u/ j+ \$ o第六式:配置微信APP以及微信测试公众号
* b" a% w' t0 |0 W, H8 }3 O* ^  (a) FogCloud上的微信APP信息:
( j: X$ V/ }/ L" w+ n* v0 u5 u/ w6 a# ~$ G
[url=http://mico.io/ask/uploads/article/20150723/3e552dc6f9c1097d68b01b4643a04921.png]
% [; j) s, t5 |% Y, q
$ P0 Y+ ?$ @( j1 J! ~
4 l5 n) M9 J8 Q# b& Z
  其中URL和Token会在后续配置微信测试号时用到。2 E0 m/ S1 z8 u  k- L2 L. q
$ h2 d2 {2 E! i
  (b)Git部署(同步微信APP代码到FogCloud)
! c# Z& H5 ?4 ?3 h$ Z7 L9 I% `2 a! i3 A/ i8 S2 x6 P! I) M5 t. l! g
[/url]
  A1 a) a# i  ?/ V- A( c5 k# e: s- s) R3 e

; D. H7 g7 G9 x  其中:6 N# Z( P7 e5 _
     Repo即步骤5中创建的github仓库地址,填写后保存;
% `5 S3 R  o* f% x  ^/ h     Deploy key和Web Hook Url可添加到github仓库的设置中,以自动同步代码到FogCloud;也可以不添加,但是github仓库中代码更新后,需要手动点击“发布”按钮来同步代码,同步后右边可看到最新的代码提交记录。
9 ]% x" o- A; b/ W
9 ]* h" k) T( t1 c+ A3 W  m. Q/ s8 j3 d* D8 P: b
[url=http://mico.io/ask/uploads/article/20150723/47bf7c17eb7ad746792160a06f14ab20.png]

8 _( N5 S& e$ B
! `, H- @5 W( U8 e: \
% p* B: x. y" B8 m3 l4 n  (c) 微信菜单管理
' T( Y3 P9 J- T/ |( F, u1 }8 ~  通过FogCloud提供的微信公众号首页菜单定制功能,方便的定制手机端微信上的控制界面及功能;至少包含“Airkiss”按钮,打开微信Airkiss配网功能,“OAuth”按钮(名称可自定义)进入设备控制。
5 B8 ^3 ^0 U5 R9 ~  \
# w+ r, q- Z. M, w  _
* A' J% P3 Z7 Y( I- Y[/url]
7 `) P8 X* b; M- c. n
' c, m6 c0 Z& T1 @0 O$ R# ~
8 H: d( s, A! t1 a! n: d( b: L6 a  (d) 设置微信测试公众号 URL与Token在创建的APP信息中可以找到8 E. }& C: R8 t3 _7 I
  修改配置信息:
& g7 u1 z" {* ], f. r5 ?  URL一般为:[url=http://4addb71f-1b5c-xxxx-94c5-f/]http://4addb71f-1b5c-XXXX-94c5-f
... ylink.io/wechat.php
* |8 O+ b/ D# v- N( d  下划线部分作为JS接口安全域名和授权回调页面域名。
4 B7 \) r0 s2 q  B* Y3 {1 r2 Q/ d5 A. M' |6 \, z1 Z/ J
[/url]
, |9 }0 z3 d9 k! i
3 d7 V) \& \, u: H5 I$ {; c 9 Q5 K6 [- h0 a6 D- k0 ~2 {8 S
  开通所有测试功能,并填写网页授权域名:5 g8 l, P4 x' V6 @* A+ S& X
0 y  }: m) C( Z
[url=http://mico.io/ask/uploads/article/20150723/4147bd2c388956cee39120fa591cd440.png]
! |) _) Z% ?4 @& e" ?% [
: f6 a% [6 U! B

$ M$ o$ t6 A" r& a* E' H8 W$ X  点击修改,打开如下:: h& t/ [' z/ l* L8 f

) E5 g! m& Y  v8 t5 ]" Z" r+ E; e[/url]4 g- c! f' k2 O$ P$ }1 y- B" F9 A7 J

1 J% c# ^5 A0 h& ?  A1 s
+ S& M6 E$ w. R7 K  同“JS接口安全域名”,格式为前面提供的URL的域名部分,如xxxx.app.easylink.io,其中“xxxx”为FogCloud上创建的微信APP的id。
; c4 x0 [& k4 ]2 B5 \( G4 m5 G8 H- T* ?& e! ]" j6 Q
7 Z5 h* o! o0 W* g  c& W, K6 w7 e
第七式:使用MiCO SDK开发RGB LED灯的固件
" l  g" V+ a) D* f/ Y, @$ [  (a) 登陆MiCO开发者网站mico.io,去MiCO社区注册账号,并登陆;
" o- P8 V( I5 ?# u5 {
- w$ M( I: o7 {3 k4 d[url=http://mico.io/ask/uploads/article/20150723/3c04c03f3d922eb74c06906c610b9290.png]

. g$ Y0 w" w/ u. U2 M
6 B1 P8 j$ f7 d0 x! I: v" {2 ^
* W0 e7 I6 K: G  (b) 重新打开mico.io首页,开发者中心 ==> Wiki中心,下载MiCO SDK。& w4 }! ?% z9 n! U6 R" j, Q, k
) m! _! J) a4 n6 H4 S
[/url]
6 J* c7 |2 {: P$ O9 l0 ?9 _, D$ f* {' N, s
% Q+ M6 q2 h7 p
  (c) 打开MiCO SDK中的微信开发实例工程:
+ r5 \2 y6 r9 U! A, t$ T/ A
& c4 J/ h/ N& M' u0 A# s0 p) H[url=http://mico.io/ask/uploads/article/20150723/3c6381767bf00833cab64ed4c37df2f8.png]
5 j- @5 j5 Y9 i. ~' t% i
+ X+ h; B; o0 X
$ [, d2 {7 s& @, W
    1)开发者手中拿到的可能是硬件平台可能是MiCOKit3288或者MiCOKit3165,在编译工程时要先选择硬件平台;
$ `! ^* O- x6 D2 n6 G    2)将FogCloud上创建的产品ID/KEY写入固件(必须替换):3 }$ J- ~# b8 h  C2 b# Z, ~

) A, ?8 n: v: g" h; f/ c  m[/url]8 M6 y6 s; Q( g! A8 p- I1 D

8 C: @0 s; ^: m1 B$ Y9 w 1 ~4 ^; ?* q5 n/ V2 b2 c/ f! a
    3)修改版本号,这样才能把新的产品ID/KEY烧入FLASH  W2 L4 `7 w* V1 d
2 [4 R8 _' ?4 y4 G
[url=http://mico.io/ask/uploads/article/20150723/1661ce047fc9ea5e465db04acd59c24e.png]

8 W9 B/ v( m8 A& ^& R( ]& o3 h* ~7 m) o5 K' Q2 x: c
" U) }" H$ v9 s0 d
    4)添加LED灯控制代码:
: a& |& n# l# P. a; u0 u# K
$ L& b1 w' `. @& Z& [[/url]
+ a7 @, O$ X9 s9 e* a% [4 Q9 a% u& n' E4 w& N  I

. G8 U* R# |: t, {. f    5)改为收到云端消息后,解析JSON数据,并控制LED。
( W. s  z2 K0 I7 T' W1 _5 o! W  u4 v0 R- q; w+ k
[url=http://mico.io/ask/uploads/article/20150723/fb02025e4062a859d0d33d4178cd156a.png]
) I& C& G  j5 H- I

) X6 X1 }3 D! n 6 a! G; ^2 O3 I# z' F  Q; ]* z
    6)错误代码参考:在运行过程中如果出现错误,可在user_log中查看错误代码。9 h$ ^. P! S' {' G

: S# b  `: N, m8 K: @[/url]
" R( K% f+ m3 E1 {' V# b* M/ ]$ C' ?) l; p) m7 Y/ \5 d& s- W

, A& r% y5 ?, \$ Z[url=http://mico.io/ask/uploads/article/20150723/9f6828473efaa4a01ae4434c236a2ef6.png]
' V, F6 ~3 _1 Q( }7 h- k

. z2 v# r0 i; c5 v1 y' r
' O# `+ C2 K! A* Y$ P$ d' J( h5 q+ L    7)MiCO SDK固件烧录。(详细固件烧录方法及步骤请参考http://mico.io wiki中心)0 B" H, O7 `* D+ E8 Y
选择使用的烧录工具J-Link或者ST-LINK:! M9 c! O3 n. ]( w1 W" n- x' E. S

  f% O: x, P5 ]$ j& I$ |+ H[/url]
0 V0 a' A$ v+ c- z# D( e2 S: a7 O2 R# b- m/ Y

3 |% ]4 e5 m; a" a# D  编译/连接:/ ?( d5 f+ h" f; e, I
9 ^/ `2 m& z: e# X
[url=http://mico.io/ask/uploads/article/20150723/14ee93da638bb344905c2f6c7a8481ef.png]

/ ]& }5 j# a! v# r# f1 H( Y4 p. G# Q2 q
' m" p. J7 M9 o# c) {% y! {6 Y4 ]
  烧录/下载:
/ X9 y5 y. [% c
6 ^. Z+ s) {  f8 g! W2 W# V[/url]
7 Z" {0 v( z; P$ R
% q( }" \2 R/ r9 F0 ^" s1 g
$ R) P5 M: Z! }' [0 B第八式:用网页编辑工具(sublime等)开发微信APP代码
. B' w( w, b# {* Q- ]以下为核心代码及其注释% ^5 c  P: b& a8 i5 i( T1 L- r
//应用程序入口在application_start(void),一系列动作(如配网、连接云等)以后,用户程序入口在这里。& a: U/ [4 I4 p5 }) I$ h
OSStatus user_main( mico_Context_t * const mico_context  " U: \% k" e0 c% [, P
{/ v% ^5 N- y; g" L5 _. Y
  //user_log_trace();
* e: ~% `' s! |  OSStatus err = kUnknownErr;# k$ X3 |6 R( ?7 v
  fogcloud_msg_t *recv_msg = NULL;//接收数据结构体
7 w0 N8 I1 [" C  json_object *recv_json_object = NULL;//结构体内包含json数据格式0 o0 t* H) s9 b  S% y6 ^, n: d
  /* rgb灯的色彩模式采取h***色彩模式(色相、饱和度、亮度) */
5 u0 R% D: I8 D( K  bool led_switch = false;//rgb灯开关( \% _3 Q* [# E" `1 r7 B+ X8 K
  int led_hues = 0;
4 V, c$ U6 J- ?+ Y  int led_saturation = 0;
7 n" {% O% h9 y7 N5 ]+ `  int led_brightness = 0;0 e, z5 Q/ `/ n+ n# ]5 w
  require(mico_context, exit);1 f' `& {/ D# o( F5 c
  h***2rgb_led_init();  // RGB_LED初始化  E5 l% b1 ^6 m' f* S- Z
  while(1){: u0 i# v- m, J0 m: p
    mico_thread_msleep(100); //延时100ms
: E; K1 I9 F/ }6 f    // 检测 fogcloud 连接状态2 t. a2 N4 e0 ]. a
    if(!mico_context->appStatus.fogcloudStatus.isCloudConnected){4 \' a$ Q, {6 |; T5 x  I
      continue;% ]1 O! f; B) z, H) e% F  V
    }6 O  o8 e) ]4 @( f! @
    /*
3 i& K# Y! {. I  l. t9 U      接收来自云端的数据
. q) C' i6 \8 T8 H: U8 i      recv_msg->data = +
8 q' J( S8 e# R* [( [      topic表示模块订阅的MQTT通道名,data表示云端返回的数据
9 t6 u% n' _, g) F' ^1 o     */
, J: R! D& ~9 g6 }    err = MicoFogCloudMsgRecv(mico_context, &recv_msg, 100);
" y8 I2 b, d+ @$ i: m    if(kNoErr == err){
1 l) Y8 [. O4 x) v+ h// 打印  例://user_logtopic[30]=[de54a8ea/c8934691816b/in/write]data[23]=[{"rgbled_switch":false}]
- _0 j, ^- ^! z" j9 x      user_log("Cloud => Module: topic[%d]=[%.*s]tdata[%d]=[%.*s]", " @* g. [' j) H+ m2 T9 }  U
               recv_msg->topic_len, recv_msg->topic_len, recv_msg->data, 9 n" Y# J; y0 O8 ~& H
recv_msg->data_len, recv_msg->data_len, recv_msg->data + recv_msg->topic_len);
& P: h, [+ h5 R2 V1 G  o7 A// json格式的字符串数据转成json对象
% y$ @  b5 s5 x% d7 t8 y% F      recv_json_object = json_tokener_parse((const char*)(recv_msg->data + recv_msg->topic_len));
8 |( d) }. Y0 d% l. z; W      if (NULL != recv_json_object)
+ V* T, |2 x  [! I! j      { ! W4 `- [# k; v7 |4 M2 [) f) z
        //根据键值对遍历2 w# `( x7 G9 ~
        json_object_object_foreach(recv_json_object, key, val) {
+ M) `* `5 T; b4 |% _          if(!strcmp(key, "rgbled_switch")){0 N( a* r+ x6 U5 W* F) Z* G6 Q7 M
//如果键为"rgbled_switch",提取值“开关值”9 ~% j  `( ~+ L% @
            led_switch = json_object_get_boolean(val);
$ \' d& o7 _' S1 }          }& G% @# [7 B4 ?/ [
          else if(!strcmp(key, "rgbled_hues")){! W: z% E! O) N, u* b
                        //如果键为"rgbled_hues",提取值“色相值"
( c: }8 ?6 b  \* j' z            led_hues = json_object_get_int(val);, ?; H3 ^6 ]  l' S( k7 i1 k
          }5 M6 b8 x; l& q2 N
          else if(!strcmp(key, "rgbled_saturation")){
* Z: I. {* ?3 a7 s& I                        //如果键为"rgbled_saturation",提取值“饱和度值"# q2 a9 k+ A& q8 |. F) p! W% B1 o
            led_saturation = json_object_get_int(val);9 K0 H. H' W% D8 C4 O& {
          }
% p% l0 Y; v' y- S          else if(!strcmp(key, "rgbled_brightness")){; T7 L  k' q1 _. e+ G) v
//如果键为"rgbled_brightness",提取值“亮度值"+ f  V) d$ G* j$ l
            led_brightness = json_object_get_int(val);) \( L! \- W4 J" @1 R
          }
* N* _# a( d$ R2 J$ ^& X        }9 n% ]4 z4 r. N
        // 控制LED
2 f; C; T' `# @( I! f9 Z4 T        if(led_switch){
) |) A/ Q" F- h3 Q/ I          h***2rgb_led_open(led_hues, led_saturation, led_brightness);
) [, A, o) ~5 G$ V        }else{- ?/ Z) K0 F& r9 m
          h***2rgb_led_close();  // 关闭
$ b) J, ^6 E% ^  I( m' S' D* Y        } 7 h) K( |* z. w7 A. ~
        // json对象内存释放( Q4 c$ D* x, U4 W: K" m% F
        json_object_put(recv_json_object);, }3 X8 f3 f$ a1 e7 s/ W! i5 c" I' b
        recv_json_object = NULL;
0 k" e+ ]3 v. i3 D      }
8 j( M" X& U. D9 ?/ [9 N1 |      // 结构体内存释放
- J! x. G% x7 o0 T- {  ^6 D& E      if(NULL != recv_msg){/ E% c0 |2 U: [4 o! Q0 @
        free(recv_msg);1 B5 [# `; h4 ^& ^% d2 E6 T
        recv_msg = NULL;* _  Z4 e$ o: m: a/ K, |( {
      }
7 h: N! a/ B3 P' I0 W    }
1 a& v3 J. L0 r9 s8 p  }7 _# z+ d8 S/ P/ P& e
exit:
( q* g$ \# g4 Q6 y: {  user_log("ERROR: user_main exit with err=%d", err);  ?& l6 Q9 c! ~" m. G* T
  return err;+ S% a/ U' c$ S( K# I' I
}
3 d% q% E" z: _2 j; O/ y) F5 Q  g+ b; Q) Z  f7 R  N6 V
9 S$ ?# h4 e- P% e& W- a4 T% r8 M# R
第九式:使用Github工具托管APP代码# P. t" z5 X2 J# Z% S3 I
  在例程包中(MiCOKit SDK的APP目录下),找到微信APP控制页面代码(index.html和yourID.html),将yourID.html.重命名为你的产品ID,如cabca380.html。拷贝这两个文件到本地git仓库,再同步到git服务器。同步方法详见附件——上传文件到GitHub.zip。0 h& j, ?2 `4 B- z* Y# j
4 _/ F5 y/ b6 r* b# E
[url=http://mico.io/ask/uploads/article/20150723/97411f3674d23cb747a33172ee9c1284.png]

( c+ W& A0 w' {1 w. x: O
( d; v; i2 D  V6 Q+ n: E7 X
. j! j1 t) T7 i7 Z: m  index.html   —— OAuth按钮跳转到该页面(一般为设备列表页面,可不做改动)( g7 C9 f1 @& D; T. K. x  f6 U' S

+ Q& V1 h; {+ P2 y) {+ I1 g[/url]1 H2 y; f1 S! p+ ^; `
* B$ n' Z2 U# ?- N
9 @% P4 J) s5 J3 w# y
  xxxx.html   —— 设备控制页面(其中xxxx为FogCloud上创建的产品id)
2 }" d. a& }' @+ |$ T: [8 V% L" n! U
. c5 I1 B2 L/ b; D" P/ q% j/ v5 {9 N( Q3 b2 v* y# d
[url=http://mico.io/ask/uploads/article/20150723/bdd3e767bff5fdcf06f16b6ee478f57e.png]
5 |5 Y3 x& Q- U  k) p/ G
  ]4 c% F# d8 V3 s  u2 R

+ W- J8 T6 ~, `6 E  B% {  详细代码见附件代码包,部分代码解释如下: $ @( m; v' L2 D  ]' {# d
0 q$ u; E4 g7 ^4 K9 m# Q

3 j& p: B4 A, ~, U' e% x[/url]
2 Y" E* [6 f) O- Z0 ~, a- u0 b* m' [3 ?1 S7 f0 g
) " F* }7 {: q/ T# `4 h. |
[url=http://mico.io/ask/uploads/article/20150723/041017556fe9d8bf147cab201e4055c6.png]

1 q: U& g# }0 T' F% f" [3 E9 \/ S7 l; e) [% B

& h/ M5 s4 |( @" q$ T/ A& w1 ^& p! H! P7 s$ V! w1 D
  修改、并提交代码后,如果没有配置WebHook让FogCloud自动更新代码,则需要到FogCloud上手动点击“发布”按钮更新代码,并通过git提交记录确认是否更新成功。" K, k+ E( @( k4 |7 D. |. i- ~

9 N; d7 J1 @/ `/ [7 H1 z" `' f4 |/ l7 b2 @. H2 F- i
第十式:FogCloud上生成设备二维码/ t& ?3 Z" f6 X+ m7 K# ^7 i
  (a) 创建新设备
0 J7 F/ d. z4 T3 S3 s0 O7 I* o( z% n
* W2 M0 W3 j8 I, }6 K2 ?[/url]
3 e$ F$ h) `  x; Z
' p  n9 B6 E% G0 g+ n 5 g( o4 y7 k9 k# q! I% t7 I* F
(b)填写设备MAC地址(由小写字母和数字构成,设备上电后会向串口发送MAC地址及其他数据,可用串口工具查看)接口创建设备。5 |' [- ?6 L5 ~1 [- N8 ~+ ~2 ]; M; l+ q

/ f& `# i. G$ a5 o  i0 v- h# g& `) R% s# i/ i, f/ e( ]& q/ P
[url=http://mico.io/ask/uploads/article/20150723/60addb425f19b481c3d2ea9346bbd71f.png]

4 A' Y1 Y+ J( a, j8 z9 {7 I3 {8 ^! L! q' [7 C

3 Z# J' U; K$ Q: R$ \- ?) }& G' s' g, j& W! @! @# p% {
  (c) 为设备生成微信二维码
9 H1 Y+ Y3 |' @& z  点击“同步到微信”按钮:  7 w: P, z1 I/ z9 q

: s: ?0 t% E+ Z5 {6 z: N[/url]/ z1 {: Q( g9 {9 X. {6 D/ y

+ m8 Z: t0 T5 U  O' b
+ A/ _' B! P5 k6 Q  选择创建的产品和要使用的APP后点击同步按钮。4 k/ }: H- A3 e
) P8 _6 n' L/ y1 Z/ y) t, X
[url=http://mico.io/ask/uploads/article/20150723/8391b8371fe9a3cf4338e65240989bf1.png]

5 Q- f/ g8 k( H& y# b- b
: X7 c1 A' Q5 t  `- @ : h" ~  b; P( \; J6 m9 ]
  成功后提示:{"result":200,"message":"success"}
( r3 G: b/ _. p& I. v  K
0 q3 V1 w/ J' t" W[/url]
) W9 }4 x' \9 c* _& l1 [, q7 Q& q; _
6 |1 F  p7 v; V
+ P/ Y5 p& G* ?3 V  t& \
  极少数情况会因为微信公共平台延时的问题出现err:500问题。等待几分钟后重试即可。
+ w6 S& z) K# o  返回到产品界面,可看到你的新设备。 7 j* L$ E8 _/ ^/ K& u

/ t9 d! E) m7 d- O! e( {) }[url=http://mico.io/ask/uploads/article/20150723/fb1885f6aaad37a08f169dbe29946d54.png]

" I' D( e9 ^9 R  p2 e8 W6 N2 s
- a4 N7 N& c8 {& r% }0 ?/ y6 H/ a) H" _6 S/ j& N
[/url]
% F) ~% S9 D' ]
6 c# D( o/ J4 d 5 S1 h. r0 a0 o" E6 G

; j+ Y! D, k2 s0 w, W第十一式:使用手机微信扫码,测试“Airkiss”配网功能以及设备控制功能。& P* X; f; I: h2 `) s
  (a) Airkiss配网
6 M; K5 q: U0 h) V  Airkiss技术可以帮助你的设备在没有人机交互的情况下智能配置当前Wi-Fi环境的SSID及密码。(假如你的智能设备是一颗灯泡,总没有屏幕和按键让你输入SSID及密码吧)) G: G! B# B; p2 [5 k0 z
按设备上的Easylink按钮进入配网模式,底板上的LED(D1)灯快速闪烁;
( }/ ^+ Z; Y! s$ x& m! s手机输入当前所在环境的wifi密码,点击连接,成功或超时会自动跳出该页面。
3 d5 U/ v' M, t$ h
4 {. @/ m6 m4 B+ _$ Y[url=http://mico.io/ask/uploads/article/20150723/18e3a2ba0846a30f245578b054272b7d.png]
4 y# O/ }- [! _# o- ^

* H9 @1 m+ g6 d1 M# S
" }6 u7 l' b8 q1 t7 L  [$ L  n$ \  (b) 设备控制
9 l1 l9 g. B4 u% X& I5 k  Airkiss配网成功后会跳转到设备列表,红色圆点表示设备不在线,蓝色圆点表示设备在线。若配网成功后设备依然显示设备不在线,可点击右上角刷新按钮。点击列表进入设备控制界面,点击控制按钮,控制MiCOKit-3288扩展板上的RGB LED灯。* W' o) p( z$ s6 k- N5 @' c
已经配网成功的设备不需要再次进行Airkiss,只需点击测试公众号中的“Devices”按钮,进入设备列表,点击列表进入设备控制界面,点按按钮,控制MiCOKit-3288扩展板上的RGB LED灯。+ ?& `0 H& m: ^  g
( N% H9 h6 Z8 K4 e0 W  D) e
[/url]6 @" T0 U- n0 h9 r3 s3 x3 W. m! I
: L$ x) Q- X! c7 j# ~
- T& R4 {0 V* e7 t2 W1 z
[url=http://mico.io/ask/uploads/article/20150723/13e7c77638ede00ccf82d4fb10429ab2.png]
) i: q3 T* p- M0 V: h, S! e3 R

3 l, @) I. n+ I" K  M+ W8 q$ y : h4 }8 Q: s+ C8 d  E
  如果您完成到此步骤,那么恭喜您大功筑基已成!!  k$ ~. p  ?  w1 ^
  武功在手,天下我有!
- }6 u6 Q2 z% w4 n6 y& J9 J* h+ R  祝愿各位米客能手持MiCO利剑,在物联网智能设备的新江湖建功立业!

( q3 ^0 i% K7 L& `/ W4 } % U1 w, T, K3 ?/ E) Y7 b3 p
另:源代码地址 http://pan.baidu.com/s/1bnsGEy79 g( A. H( Y6 N
& ~/ m. k) e3 _7 k0 Q
MiCO团队
9 y/ S& v# b5 f4 T4 j) {敬上!/ I  M3 ^, C8 @
[/url]- n# X0 Z. r, P+ k9 J: ]
[url=http://mico.io/ask/uploads/article/20150724/02263811253059862ccc8df321bb95b5.jpg]1 p$ c8 X3 h7 @" @: g  h* ~

3 Y8 b0 ~5 Y& N' _. l) }' T1 V

更多回帖

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