【MiCO实战贴】微信控灯11式(利用微信控制RGB LED灯) - 问答 - 电子技术论坛 - 最好最受欢迎电子论坛!

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

micolover ( 楼主 ) 2015-7-24 10:52:41  只看该作者 倒序浏览
本帖最后由 micolover 于 2015-7-24 14:47 编辑
( G9 k/ V/ s7 U% S8 y- F( f
1 B3 m( G' k1 ]前言# d- {  s" M; P$ E  h" o
  大神玩转MiCO好生羡慕
. a6 j* |" f  U- w9 l3 F  菜鸟低头不语无从下手
5 V6 l7 k( G9 N/ U  别慌~看完下面的武功秘籍,你也能成为一代米侠被人仰望" U8 k" y# j2 ]. c4 W; b. U

" e5 F/ Y2 |3 L; r一.微信控灯十一式0 i2 H# r) K; T# E! q" ]3 w4 D
  第一式:注册开发者账号        ( p* }# v$ ^/ t; Q3 {, r$ ~
  第二式:使用个人微信号开通测试公众号        1 v. H" u( V/ w( S7 R
  第三式:在FogCloud上创建、定义自己的产品        * E/ h8 z5 X2 \' V! ~" c& r( ^
  第四式:在FogCloud上创建产品对应的微信APP        
2 y# G- ]  ^: B  @5 b: n& }  第五式:Github上创建微信APP代码托管仓库        & K8 H8 N( D& n
  第六式:配置微信APP以及微信测试公众号        
* L3 ~0 K3 x, b9 U  第七式:使用MiCO SDK开发RGB LED灯的固件
) P8 N, a; R2 r' o: v1 u  第八式:用网页编辑工具(sublime等)开发微信APP代码        1 D# ^& C  I5 l8 w# c
  第九式:使用Github工具托管APP代码        $ Z$ o7 r$ y; \, a0 g/ o
  第十式:FogCloud上生成设备二维码        : m1 Y' j( X# f
  第十一式:使用手机微信扫码,测试“Airkiss”配网功能以及设备控制功能。         
4 x# }- C% E  i$ F5 p二.基本功
& s, r( J! c' N0 {- h+ K' P  注意:练功开始前请确定射频驱动为最新版本% W0 O# R  F2 s
  版本查询及升级方法请参考MiCO社区 → wiki中心 → MiCOKit板块射频驱动升级
$ y5 w/ Q( T% B3 ]- w8 I5 O  1. MiCOKit-3288开发套件;
. h) Y& {  k' r# r. c2 v2 x  2. 开发工具请使用IAR7.3版本及以上;
# A# l' e* a; j; t7 n) C' u& S  3. FogCloud开发者账号(Fog云使用、开发必须);
  Q% J8 X+ Y& d! d1 h  4. MiCO SDK v2.2.0(固件开发包);3 [; I! n7 y. [6 I. ~  S
  5. 个人微信号(开通测试公众号);; k- ]0 O& G0 f, Z; n3 B
  6. github个人账号(托管微信APP代码);7 f8 J# M4 C' K$ X0 _" b) z8 T( G
  7. 网页编辑工具(sublime等);% V+ Z! _" ]  [7 f4 K. F; j
  8. 大致了解MQTT协议及json格式。
; s: V8 D! Y8 }* I' \' L* N0 M% V6 \3 c! Q
三.招式详解! \7 C# H2 P1 d: Q! L
; v( h/ _: a7 x4 N0 t% a$ C
第一式:注册开发者账号3 _' t! ?) g  J# k0 r% B2 b
  登录www.fogcloud.io直接注册账号即可。该账号将用来管理你的产品及APP。
2 Q' e4 ~% n' H7 p1 |; R! [* X* T7 V/ i3 h
[/url]
: K$ B$ K1 X1 j/ B/ G' P1 J
$ n  t2 `" v4 R  M; c
3 k! ?+ f8 M( H; j! A6 k9 n$ s( Y. v

# |, Q+ m0 ]7 a4 J5 K6 m第二式:使用个人微信号开通测试公众号$ j  U7 U% @: |, U; U9 I2 m% J: T
  浏览器打开[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
,点击登录,使用手机微信扫码,进入后即开通了测试公众号。
/ o" N  r1 }! o' M" L
" F0 ]5 q, b& W( g[/url]% {+ j# z1 [6 {" H8 K* b

* v8 ^+ T* E4 ~& ~; @: K * u- `8 B4 E2 k) z3 A4 D
  获得微信号、appID、appsecrect,用于后续在FogCloud上创建产品对应的微信APP。9 G; d3 |  y9 \. y* \

0 n0 l+ r( x- [[url=http://mico.io/ask/uploads/article/20150723/923e41bc3c91f99ba548d65e2ddd7ec6.png]
+ l5 B7 b! `0 k" M1 H. O3 n' G
6 ]" q- H+ H0 N6 k! i9 T: k" O8 }
9 O! [* F; @9 ?& e2 N
第三式:在FogCloud上创建、定义自己的产品
! R2 Q3 `$ H  [
0 B& f* B7 {  U3 v6 e[/url]! `6 h* g! n# x9 H) ^7 a# J0 R
$ e7 ~2 j0 i  N4 u, b% |* v
+ ]! Z0 k3 n" p. Q1 m. R( ~
  根据提示填写相关信息,创建完成后,如下
' Z* |4 r- u% X" k0 N1 I: O& I: I/ E+ I1 u- n9 e  A4 Z
[url=http://mico.io/ask/uploads/article/20150723/ac518bc12959f06f82624e4d9e6fc841.png]

: f9 {) R; ?0 D9 `( S7 {, D/ @" z0 P' E) `6 W
- D4 C" X* c- t- N
  点击产品名称,进入详细信息:0 q$ v/ z2 K; [9 x
( j3 K: S$ K& W8 c: a5 X
[/url]
1 b+ f0 _! P% \6 q6 b
% Z3 x: i) |" N/ Y
6 X( g- a. h8 A/ C  产品ID/KEY会写到设备固件代码中;
* A5 N3 v, c) [" }: X9 }4 y; ]5 a  创建产品的数据模型,数据模型是用来在云端定义产品功能、性能等特征数据的标准格式,可以储存设备监控、收集、控制、用户行为等数据,从而对数据进行分析,提升产品服务,开发案例过程中定义数据模型,能够有效帮助开发者将APP、云端与设备端的关键功能、特征数据等同步,避免开发过程出错。
9 h; Y; O5 q/ E; K
# k% ?+ ~- X3 ^" `7 g[url=http://mico.io/ask/uploads/article/20150723/419d8575656778d542b24f70ff5d4aa2.png]

9 [9 W5 m! O( d
9 X3 W. E% B6 m3 J" y( P" b
+ G7 N3 g1 G* s: e  本实例仅控制MiCOKit-3288上的一个RGB LED灯,所需创建的控制数据点有:
& h. U* l) ]7 Y     1)开关(rgbled_switch)                     读写属性为1         时间序列为否4 {# N* q  r( A. W
     2)色相(rgbled_hues)                      读写属性为1         时间序列为否4 C& {7 a- m; o1 {& i& @
     3)饱和度(rgbled_saturation)                 读写属性为1         时间序列为否
* |1 N7 q, T2 f" Q3 T3 s" m' t     4)亮度(rgbled_brightness)                  读写属性为1         时间序列为否, X+ z" R* x0 V( K4 i7 q- U
  *属性名和描述可按个人习惯添加/ Z3 {- U" Y1 X5 O& y* O0 t* Q
  注意:在创建数据点时,“时间序列”选项:选中时云端保存历史数据;不选时云端只保存最新的数据。# n+ u+ M* y$ j* g6 t
  数据模型的具体作用在后面的进阶教程中详细讲解。' B0 A; [0 A( }" j& h0 R
5 j$ w  U; d. T4 }/ z: F. \" s/ H
第四式:在FogCloud上创建产品对应的微信APP
/ g- c# c4 D1 k- h) f" Y. P2 C+ R8 i( C! I

7 X( \- ^* ~+ B# {[/url]
4 O1 U; l, O( T; X* e4 a" R+ _, _. [$ z6 ^& C4 b+ l; [7 ?' j

  B( h- H6 |* E: e4 w8 w  根据提示,填写相关信息,其中微信号、AppID/AppSecret从步骤2中开通的微信测试公众号中获得。1 ?# }* b- V! }3 z

' M6 N. D# s; @0 D! j( w5 T[url=http://mico.io/ask/uploads/article/20150723/12165d0d0d83feb3aba6851cc9588c08.png]

% V3 ]) j, r" D  o  |7 q# s* i2 Z0 |; W  L0 K" R0 {; F

  Y3 c9 f: L. i" D# P第五式:Github上创建微信APP代码托管仓库  [% ^' v- v& J
  请登录github.com自行创建新仓库。并克隆到本地,克隆方法详见《上传文件到GitHub》。该步骤的目的是获得一个可以在任何地方访问的git仓库,后面会使用该仓库托管微信APP的代码(其他类似git仓库托管工具也可以)。
: G& h3 y( ~/ V. E# A1 ^$ u( U$ F/ p5 n' Q0 w/ k% w4 o: {9 G
[/url]
: [! a  d, ?# ?$ X8 r9 b" J6 l' x' g. y2 X: n" z
/ s2 q4 ~7 n! s# a4 _7 f
  获得仓库地址,例如:https://github.com/wangeshen/MiCOKit_test.git* L5 H& a( n1 Z
% t1 ^3 C) `0 {$ h" ^. J2 ~

+ K' t' J, x# U第六式:配置微信APP以及微信测试公众号6 U. C2 J/ l# K2 [6 w4 U
  (a) FogCloud上的微信APP信息:
$ r, [+ r9 i- K* ^9 S' G4 A4 {, W9 l) b
[url=http://mico.io/ask/uploads/article/20150723/3e552dc6f9c1097d68b01b4643a04921.png]

4 \& [. D+ a* w
2 f) u! N! N' N) i" v
5 X9 `5 D2 e# _" p, A  其中URL和Token会在后续配置微信测试号时用到。
1 C7 r; O2 s3 O/ J! S' m5 m0 y& a& s7 T2 H% [
  (b)Git部署(同步微信APP代码到FogCloud)8 ?9 K8 ~* @- |2 y
, y: `2 N, l' v8 ?6 y6 n" A0 ]
[/url]
8 _2 t' H. Y6 M5 d2 C6 G5 x. z
8 f. x9 @2 i, s' ]( B: B1 C ! Y3 s" b" V% r; N
  其中:% S9 r% N: M7 a7 c# J
     Repo即步骤5中创建的github仓库地址,填写后保存;
9 _- v& H. ^6 C6 Y, M     Deploy key和Web Hook Url可添加到github仓库的设置中,以自动同步代码到FogCloud;也可以不添加,但是github仓库中代码更新后,需要手动点击“发布”按钮来同步代码,同步后右边可看到最新的代码提交记录。; S" k; r% }: f6 \* o# K* @
1 z: ?6 @0 Z: m
4 u2 n# e+ J7 F3 R
[url=http://mico.io/ask/uploads/article/20150723/47bf7c17eb7ad746792160a06f14ab20.png]

- B2 F9 x7 f' J& l3 F
& p: Y6 ^! k" w$ ^' h; L9 \5 b9 U6 |  n# J2 a  ~/ a( u  e
  (c) 微信菜单管理
% b: h% ~8 \% I0 y. I, H  通过FogCloud提供的微信公众号首页菜单定制功能,方便的定制手机端微信上的控制界面及功能;至少包含“Airkiss”按钮,打开微信Airkiss配网功能,“OAuth”按钮(名称可自定义)进入设备控制。- g$ g& w2 R) f9 {4 z& n
! Y3 n3 y* L, Y# T, r. }5 s

4 F& N. f& o! U. @% M6 @[/url]
% G) A& |1 w+ Q: L
( _) N* L! f) D& t! K) I
9 l, x% v) i. J! s' j% [  (d) 设置微信测试公众号 URL与Token在创建的APP信息中可以找到* C+ L' ]+ z5 z; E% ?, W$ ]
  修改配置信息:, K2 ^: D6 Q8 r
  URL一般为:[url=http://4addb71f-1b5c-xxxx-94c5-f/]http://4addb71f-1b5c-XXXX-94c5-f
... ylink.io/wechat.php+ S, i$ g/ d. Y9 E* w) [
  下划线部分作为JS接口安全域名和授权回调页面域名。% Q  M- n# _1 H7 [6 x& J* f$ k

8 R; }; H, q0 H* u[/url]
: D: v$ t0 \+ i3 h$ i
; F/ n) F* ^! w! d, G- n+ b
# n0 r9 C! a& @; P: W  开通所有测试功能,并填写网页授权域名:6 E5 z6 c: k+ g2 d
4 W- P9 p/ M! O; H5 u. L" U/ K# w
[url=http://mico.io/ask/uploads/article/20150723/4147bd2c388956cee39120fa591cd440.png]
# R2 }* q8 Y5 N

! J" c, m& P; ?5 j9 N/ m' o
1 s) h: t2 N! [/ B( [; s% r5 l  点击修改,打开如下:6 v# J7 q( y! i  ?% ]. y) c" w

( A4 ^' D, n1 ~8 s) b[/url]3 q: R( E) `: C- M; X! r

) ]% h8 {5 t2 V
; r+ Z2 E) j" w$ j( P9 P  同“JS接口安全域名”,格式为前面提供的URL的域名部分,如xxxx.app.easylink.io,其中“xxxx”为FogCloud上创建的微信APP的id。# y! t8 W7 [3 |7 K4 Y2 V( @

  g6 Z, k) ?. i& }8 Z* r  k3 V/ `2 U+ A' Y1 B" {
第七式:使用MiCO SDK开发RGB LED灯的固件
8 T% _( f) R. B3 z  (a) 登陆MiCO开发者网站mico.io,去MiCO社区注册账号,并登陆;5 |0 f( @; I* E; o2 }
. x6 ~; t+ }7 A/ a' n
[url=http://mico.io/ask/uploads/article/20150723/3c04c03f3d922eb74c06906c610b9290.png]
  n) [: Z. q5 E# Z3 F% K2 r' \
" Q2 }# J6 q0 _9 E4 n8 G+ K0 L

# [& r( z: _) K& ~  (b) 重新打开mico.io首页,开发者中心 ==> Wiki中心,下载MiCO SDK。
' I6 w2 t$ f! L! J/ [; Y% d, C/ t: N2 y( H& ?  v
[/url]+ ~- h6 K# n6 N6 u" T# u" u' ~
8 w7 x6 ~' j0 E/ r, W* K+ p5 B

% X. o# b' S* Y6 g  (c) 打开MiCO SDK中的微信开发实例工程:
7 v* a* q+ N7 U- x* f* B  [' E7 X- w/ i" S+ T
[url=http://mico.io/ask/uploads/article/20150723/3c6381767bf00833cab64ed4c37df2f8.png]

8 t9 w9 F, e2 E- v; `! }, ]' x, a$ h6 P# b; k+ Q& d+ ^

6 c8 L5 I: s: e0 E+ u    1)开发者手中拿到的可能是硬件平台可能是MiCOKit3288或者MiCOKit3165,在编译工程时要先选择硬件平台;
) b0 p9 o2 u- Q7 z/ r    2)将FogCloud上创建的产品ID/KEY写入固件(必须替换):& O% d! C7 x% ^; c' j( M6 X0 y

5 u$ }2 X& f5 O/ Z& D5 W7 C3 Q[/url]3 @* Z5 v$ q0 V; C* \0 @* w' O
" E/ \3 G- ]( k7 E7 w
# _' H( h& K7 ^7 s
    3)修改版本号,这样才能把新的产品ID/KEY烧入FLASH
  D- o" q+ e8 {4 L. E9 Z+ \5 ]9 L0 G# s  e1 t+ d6 z& Y
[url=http://mico.io/ask/uploads/article/20150723/1661ce047fc9ea5e465db04acd59c24e.png]
. x- _0 P# z: C2 c

. j2 `4 O, k1 Y
/ Q( V2 r" `9 l: ]    4)添加LED灯控制代码:* z! @. u  s0 o4 J" y1 H& _

- d/ R0 M) _, d6 w8 C: B& X[/url]& z" {5 V, D. Z* t1 ~0 R: F8 |# H: ^  U
. y! j4 |6 a& ^1 j
! H: H7 ]) w0 l+ R
    5)改为收到云端消息后,解析JSON数据,并控制LED。+ b2 |4 `' ~9 Q0 G3 N

/ x7 {0 C/ R/ }. c# ^# B/ u( Z[url=http://mico.io/ask/uploads/article/20150723/fb02025e4062a859d0d33d4178cd156a.png]

7 H) P+ X6 @3 x% h+ W4 g- [! {$ s
/ e# S9 M6 {- `. E1 I1 ` / q2 {* }; Q( i
    6)错误代码参考:在运行过程中如果出现错误,可在user_log中查看错误代码。
, J7 \# t- l  H- A$ X  U* ]9 j7 x+ P" I0 O5 u) ]
[/url]5 j5 n; g3 q2 O. G& e4 W3 k0 ]

7 T8 I7 e% Y, F% l- u/ S# L  G0 g
" Y% W  ?: C" i: f5 Z- P- y[url=http://mico.io/ask/uploads/article/20150723/9f6828473efaa4a01ae4434c236a2ef6.png]
. G- q' `1 m+ U/ w+ I6 O5 q
, f8 @: Z6 l  C/ w* }

& |4 |$ S/ D- O1 q% q$ [; l- }5 N    7)MiCO SDK固件烧录。(详细固件烧录方法及步骤请参考http://mico.io wiki中心)
$ b% I' @1 D0 I3 l2 V" [5 L$ b# V选择使用的烧录工具J-Link或者ST-LINK:9 g. V) ]. S' z; y* W

& F5 H) ~. T+ {- W6 o7 w  ^" b/ j[/url]  V2 F5 ]: ?+ Z& m! Z4 |
9 ^( M7 p: p+ d+ A; a6 W4 h6 M( b

" Y. G4 d8 A- }  p2 }4 n5 w5 E  编译/连接:" G+ \1 s3 m# W
. u3 G. q& d( D# o- `$ q+ C
[url=http://mico.io/ask/uploads/article/20150723/14ee93da638bb344905c2f6c7a8481ef.png]

5 w$ Y& }5 `8 D9 m  R. l" Y! h. c
: J' N) Z2 y! c2 r* n4 A/ | 9 {' U) D" h" S8 j  ]7 X1 N! g
  烧录/下载:6 g. l5 o% J: u* R1 v* P* Y

$ G% N6 `$ C5 [. p: }6 Z% H[/url]
+ [7 u1 [  `; p# \0 Q, M1 O' p; R$ o6 S
: A0 s/ E9 N. O9 o  a7 K
第八式:用网页编辑工具(sublime等)开发微信APP代码
/ y, l7 m6 ^) G( A# `1 y" e以下为核心代码及其注释! X9 a* `* C1 q( {. g+ y
//应用程序入口在application_start(void),一系列动作(如配网、连接云等)以后,用户程序入口在这里。
: [$ l2 B: b# J0 o2 U# L! j, _' b8 MOSStatus user_main( mico_Context_t * const mico_context  - C4 w8 l. E  c# r
{% o6 }7 ?4 Y' w# t; j- s9 M% G# G# H
  //user_log_trace();
4 ~* J: b* ~3 Q8 K6 U8 X9 s4 X  OSStatus err = kUnknownErr;+ ?- C) @7 S) M. k& F
  fogcloud_msg_t *recv_msg = NULL;//接收数据结构体5 s6 @/ u+ R( v- y, {* n% j% w7 U
  json_object *recv_json_object = NULL;//结构体内包含json数据格式
3 a8 k  x- H& T/ L# {  k7 X  /* rgb灯的色彩模式采取h***色彩模式(色相、饱和度、亮度) */
- W4 U4 c- M: M5 i) T6 ^  bool led_switch = false;//rgb灯开关
0 g; H! Q/ z) ~$ f( Z6 ~! e  int led_hues = 0;! O& m; Z; p  Z1 x. O( P. z  u* ^
  int led_saturation = 0;
/ e  c) _6 \2 N* B  int led_brightness = 0;; A7 p& Z2 ~4 m( D3 n6 X
  require(mico_context, exit);; i1 p6 V8 C, V
  h***2rgb_led_init();  // RGB_LED初始化" P. }- d8 s  u* p2 x2 z
  while(1){* e& S- u3 S. F7 V" Q9 I. Q+ ?) U
    mico_thread_msleep(100); //延时100ms9 E: T2 c5 p4 I; T; H( R
    // 检测 fogcloud 连接状态
# z4 G- ^& d% ~) v9 L* q    if(!mico_context->appStatus.fogcloudStatus.isCloudConnected){
0 ?$ H/ ~6 y5 E      continue;& }9 |) T0 D2 d, I( g" K
    }
: w& S( v+ z  \& i* ~, Y# R    /* / M* D; x1 b- H' c. q
      接收来自云端的数据2 ?3 ]0 F8 B, o' v: i
      recv_msg->data = +
* c' i. i  C* F5 r1 a      topic表示模块订阅的MQTT通道名,data表示云端返回的数据: J/ d$ h0 x3 b$ U  V
     */
& A7 ?) _9 X: c3 h; x. Q, H    err = MicoFogCloudMsgRecv(mico_context, &recv_msg, 100);, q5 O: L7 [3 ]2 Z9 [$ j, `
    if(kNoErr == err){
: w4 s4 r/ O% K! Z8 ~, u" h// 打印  例://user_logtopic[30]=[de54a8ea/c8934691816b/in/write]data[23]=[{"rgbled_switch":false}]
* X" [  u) z  A( z4 n      user_log("Cloud => Module: topic[%d]=[%.*s]tdata[%d]=[%.*s]",
0 I% d# |& Z% m5 _               recv_msg->topic_len, recv_msg->topic_len, recv_msg->data,
' g" l9 y8 s+ O) }recv_msg->data_len, recv_msg->data_len, recv_msg->data + recv_msg->topic_len);
' u7 l) H$ s' V! D  r6 z// json格式的字符串数据转成json对象. ]2 q+ Y8 h! y5 `
      recv_json_object = json_tokener_parse((const char*)(recv_msg->data + recv_msg->topic_len));
+ e& W$ P. ]8 J2 t4 s  ?* d      if (NULL != recv_json_object)$ X* k0 ^/ ~/ V4 E/ }
      {
- E, P: u2 x& n  H        //根据键值对遍历
, x6 m. z; `, E; l/ g- @: d        json_object_object_foreach(recv_json_object, key, val) {
4 K4 I( p! K! r          if(!strcmp(key, "rgbled_switch")){+ ?& L: O+ ?' `' \% J: @% y0 O" T! |/ w
//如果键为"rgbled_switch",提取值“开关值”
, o& x! m5 z2 c# {( p, Z/ @            led_switch = json_object_get_boolean(val); ' i. ^# f: ]* e- O. q, ?  C
          }
2 T0 m, w8 Q  E$ Q% s          else if(!strcmp(key, "rgbled_hues")){
2 A7 c! d+ f+ D  c8 C! R0 s' K                        //如果键为"rgbled_hues",提取值“色相值") C4 P: @* ^' z% }+ |# m9 C' v1 ~% [
            led_hues = json_object_get_int(val);
$ T; A  N; C8 [+ c0 c          }
6 O5 b  @& a* F1 |! G- f  N          else if(!strcmp(key, "rgbled_saturation")){
" }: I4 i5 s2 d# z" S                        //如果键为"rgbled_saturation",提取值“饱和度值"5 K0 c$ G: T0 u
            led_saturation = json_object_get_int(val);$ C: V8 _- K4 ?1 w
          }+ Z: s7 @7 Y1 O+ a3 b
          else if(!strcmp(key, "rgbled_brightness")){1 O+ h2 W6 e/ W2 G4 `( @
//如果键为"rgbled_brightness",提取值“亮度值"
; I% R/ ]3 c8 r3 ~: o            led_brightness = json_object_get_int(val);
, d. U) N# X9 {4 L# {          }
& D: |& i4 k/ z) k: H- G# }+ D- \( P        }
% D7 Y* s6 |. c/ z1 z2 r        // 控制LED
. q6 v* l; E2 V5 y5 h' Q- Z: [" e        if(led_switch){5 {: s' B4 k7 b9 \
          h***2rgb_led_open(led_hues, led_saturation, led_brightness);
7 X1 }4 J- q) [( m5 a0 f7 T        }else{
2 T0 @! P/ T& ]/ P3 N6 }/ I          h***2rgb_led_close();  // 关闭7 O* Y. ?! C4 N& ~+ b4 p
        }
' M, c: a8 c# e5 q+ ^1 ~        // json对象内存释放
) s. u9 u/ K( d( W  P        json_object_put(recv_json_object);
3 @  W$ u( s: j        recv_json_object = NULL;* w& A! o$ [3 ]1 c# R
      }
% v3 M& w# y2 [: `      // 结构体内存释放
4 G4 B% f" F2 `2 U      if(NULL != recv_msg){
$ g2 M' b) V6 T8 V3 E        free(recv_msg);
% z/ g' O6 [7 c8 m" z        recv_msg = NULL;
1 x$ B) k. V+ F/ O- e- w      }4 R. o' {9 d. |2 d" d; Z
    }; f6 Z; k% \' C5 n
  }
, f7 u4 o, a& e/ [) Rexit:0 B/ ~- D1 N9 L; ^8 w: q
  user_log("ERROR: user_main exit with err=%d", err);, a3 H  g7 d! J* r* }
  return err;- K  G, T. q  M/ l3 O* S. t' M
}, D$ Z2 q) i3 S0 P! V' f

) l4 A: I" l+ K5 j- {% D1 Q1 B3 J3 w/ w* M2 {& @! d
第九式:使用Github工具托管APP代码$ i6 e* A4 a* Q6 u1 n* o7 n2 O( Y
  在例程包中(MiCOKit SDK的APP目录下),找到微信APP控制页面代码(index.html和yourID.html),将yourID.html.重命名为你的产品ID,如cabca380.html。拷贝这两个文件到本地git仓库,再同步到git服务器。同步方法详见附件——上传文件到GitHub.zip。
- X- f3 ?% n& S" e" M' ~7 M& E2 }6 |+ _7 v9 }6 Q$ \( a
[url=http://mico.io/ask/uploads/article/20150723/97411f3674d23cb747a33172ee9c1284.png]

2 z2 m) T. i; V/ ~* M, u& A
: u: I! ]& T: G! b* `" I1 H4 \: @   R6 a/ i6 b- p1 W# o# H
  index.html   —— OAuth按钮跳转到该页面(一般为设备列表页面,可不做改动)
7 Q6 o  N  r6 n* d4 R3 A) T4 v4 Z
[/url]
7 a/ d  r" p7 y! |& _4 }  e+ _2 ~$ P: G, ~1 G" U# u
: R5 R% R4 w; _/ P& j1 ~( ]
  xxxx.html   —— 设备控制页面(其中xxxx为FogCloud上创建的产品id)
. A8 H: J6 K, D: M; d! q+ Z6 o. ^
! {9 U8 s4 K2 c. K) `
1 g# j6 h- y* g) [[url=http://mico.io/ask/uploads/article/20150723/bdd3e767bff5fdcf06f16b6ee478f57e.png]
! j3 _2 k/ t2 ]& `9 h

! q" h1 a1 K4 f4 C  d- C  ~+ F9 |/ k" {  b" K0 B! b% }
  详细代码见附件代码包,部分代码解释如下:
8 E/ s( d/ W6 v$ {
5 s0 l3 T) U$ i& A5 g7 @  b* H
0 O3 I" s$ `8 a/ M8 X- {[/url]. b0 `3 E# e, @5 q: Q% i" P7 y

+ n8 e) r: B( q  K/ j5 l- S$ B, r& C/ E+ n: \' r' d" B
[url=http://mico.io/ask/uploads/article/20150723/041017556fe9d8bf147cab201e4055c6.png]

) b/ i) n- s6 Y1 q  |' |3 k- Y3 [7 ^' C9 }

) Y2 ~% \/ w7 B  M3 z; Q4 ~0 `% n* K/ r- m- U' p* Q; R
  修改、并提交代码后,如果没有配置WebHook让FogCloud自动更新代码,则需要到FogCloud上手动点击“发布”按钮更新代码,并通过git提交记录确认是否更新成功。0 W$ N- ?" n" Y0 S" j( P

5 C6 c; N/ }; S/ _$ `/ `) x8 e% x( b$ F% f, K% U
第十式:FogCloud上生成设备二维码- H6 ?# G+ {, p) o
  (a) 创建新设备0 G! a* G6 Q# H3 A7 K  N

! p4 Z; R" K3 a[/url]
) L1 ?: z1 I; o- `- ^. Y' w1 `
3 O: Z) E. X  }
: ]( y" q- t. d! |, u5 Z5 K& m4 u (b)填写设备MAC地址(由小写字母和数字构成,设备上电后会向串口发送MAC地址及其他数据,可用串口工具查看)接口创建设备。" J! T2 }# ?& @& T8 |" M
! t6 V1 {8 P- t! A, n2 `
! q8 E& t7 S4 J1 H
[url=http://mico.io/ask/uploads/article/20150723/60addb425f19b481c3d2ea9346bbd71f.png]
% N% f% J, F0 W% h7 X8 {9 ~

' y5 |& X& e  j7 @
5 o. k2 `0 {& p; y$ f  W/ X6 j9 _3 F& Z' X8 M/ s" D( D
  (c) 为设备生成微信二维码, D# k; k5 }  B0 f; {
  点击“同步到微信”按钮:  
( V  K% T6 k- k: `( @' x 0 k$ J% F9 s5 b2 p
[/url]
& y7 U: A: T: L: J- ?0 c; c; H: h2 x+ p. I5 F/ T

) x8 b+ n9 D8 x* N2 M: O0 k# ]  选择创建的产品和要使用的APP后点击同步按钮。
1 S8 l( v* _; b7 H# P" W& E2 p
; _1 ?5 w) ~4 X. P[url=http://mico.io/ask/uploads/article/20150723/8391b8371fe9a3cf4338e65240989bf1.png]
0 @5 s6 W4 L3 Q+ [% o5 [7 }8 [9 d3 Z
9 w* x9 K4 q7 w

% o+ \& `" V: L  成功后提示:{"result":200,"message":"success"}  H+ v: j; B& p3 I9 ~8 `, O1 F
9 P8 C+ d6 c# d) K: h
[/url]5 v, I6 z& }% d( h" P* }. z
2 j7 _, b7 |6 m5 b

+ F) T' A3 Y! |1 A$ m
, I2 t- [# [* y! a0 x" X  极少数情况会因为微信公共平台延时的问题出现err:500问题。等待几分钟后重试即可。6 S: P2 u# J: Q  }8 S, F
  返回到产品界面,可看到你的新设备。
. g+ u, o$ i2 ]5 b) W; t+ ?  x5 e5 Y4 Z% U
[url=http://mico.io/ask/uploads/article/20150723/fb1885f6aaad37a08f169dbe29946d54.png]

" @% T: A/ ?: m9 `+ V0 d0 U$ ?4 T2 S; @( }% |* ~% O8 l2 l

; ?8 M8 U5 p* w, p[/url]
7 o; J3 U, c5 Q+ M: {- P  I
# L& f6 I% x8 |7 E7 @3 q  C
3 E( F+ g4 J6 ]4 T4 c
/ z, T9 j, o! H# g! Y第十一式:使用手机微信扫码,测试“Airkiss”配网功能以及设备控制功能。! i9 ]+ m$ Q( X0 ]6 H1 r
  (a) Airkiss配网: M8 C( |3 X9 \2 }
  Airkiss技术可以帮助你的设备在没有人机交互的情况下智能配置当前Wi-Fi环境的SSID及密码。(假如你的智能设备是一颗灯泡,总没有屏幕和按键让你输入SSID及密码吧)
" @" Z% B( d2 b+ J! a. b, Y5 D% J按设备上的Easylink按钮进入配网模式,底板上的LED(D1)灯快速闪烁;1 u/ L3 X3 z, c0 l7 Y
手机输入当前所在环境的wifi密码,点击连接,成功或超时会自动跳出该页面。( o2 z- w# ?, g: E* p" k3 \
  Y* k8 j, }9 k+ j( g$ b" ~
[url=http://mico.io/ask/uploads/article/20150723/18e3a2ba0846a30f245578b054272b7d.png]

3 m5 n  B" X$ H8 s2 k; e" ]* T$ F1 ~" ?. U/ P% x' N' F) x' r
1 a  ]3 U* k& \
  (b) 设备控制8 B$ a9 {+ N: o' |7 g
  Airkiss配网成功后会跳转到设备列表,红色圆点表示设备不在线,蓝色圆点表示设备在线。若配网成功后设备依然显示设备不在线,可点击右上角刷新按钮。点击列表进入设备控制界面,点击控制按钮,控制MiCOKit-3288扩展板上的RGB LED灯。
0 e7 N% }7 F# R$ p! z! Z- o已经配网成功的设备不需要再次进行Airkiss,只需点击测试公众号中的“Devices”按钮,进入设备列表,点击列表进入设备控制界面,点按按钮,控制MiCOKit-3288扩展板上的RGB LED灯。) e8 n" j3 X. F, }4 n% [
, u! d2 A% R, l& B
[/url]- e! K& h9 i( ~1 C" q0 w* {
, I& i! ]* T9 I& j, B
: \6 z7 D  u6 K  C3 Y
[url=http://mico.io/ask/uploads/article/20150723/13e7c77638ede00ccf82d4fb10429ab2.png]

2 A( O  c6 m- c8 U9 C
- s0 d$ s  Y# k ; P3 t. G/ D/ L3 S
  如果您完成到此步骤,那么恭喜您大功筑基已成!!
  B. X/ ^9 u$ k  Y  武功在手,天下我有!# K- C2 {2 n( h
  祝愿各位米客能手持MiCO利剑,在物联网智能设备的新江湖建功立业!

; O, t. U* W0 ~0 T * |8 {% v4 F( t
另:源代码地址 http://pan.baidu.com/s/1bnsGEy78 Y9 E# k3 G9 p; A) b# }# k& h
  i; d2 Z$ n' @0 O
MiCO团队" {  M" |2 p- n
敬上!
% [- ?. S' p* b2 O; p  t- L[/url]. k) u" ^. y; c4 z8 y7 N
[url=http://mico.io/ask/uploads/article/20150724/02263811253059862ccc8df321bb95b5.jpg]
+ I% Z" s9 N8 @4 |/ F8 c9 A% \$ y$ A6 I3 {/ R, H

0个回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则


关闭

站长推荐上一条 /6 下一条

小黑屋|手机版|Archiver|电子发烧友 ( 湘ICP备2023018690号 )

GMT+8, 2024-8-27 08:20 , Processed in 0.632683 second(s), Total 37, Slave 27 queries .

Powered by 电子发烧友网

© 2015 bbs.elecfans.com

微信扫描
快速回复 返回顶部 返回列表