【MiCO实战贴】微信控灯11式(利用微信控制RGB LED灯) - 问答 - 电子威廉希尔官方网站 论坛 - 最好最受欢迎电子论坛!

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

micolover ( 楼主 ) 2015-7-24 10:52:41  只看该作者 倒序浏览
本帖最后由 micolover 于 2015-7-24 14:47 编辑 7 J- U* p" _7 i! z6 h: N4 P

% k* h, G+ T. N$ v' H前言$ ]; s8 W1 m  O* y
  大神玩转MiCO好生羡慕
7 o1 y0 R6 B( Z% ]8 ^  菜鸟低头不语无从下手* A" j) |% I# ?0 |: s/ W1 c) U
  别慌~看完下面的武功秘籍,你也能成为一代米侠被人仰望+ [* j% {$ M. W9 N% a) w9 N

  T' o: P4 Q% S# u一.微信控灯十一式  G* M. C+ o9 c
  第一式:注册开发者账号        
- A( f+ ^* D$ o. v7 Z3 X; m; X  第二式:使用个人微信号开通测试公众号        
# `* Z$ w$ L0 q- {2 L  第三式:在FogCloud上创建、定义自己的产品        
# @' i9 Q1 v  Y3 {* e+ ^6 M  第四式:在FogCloud上创建产品对应的微信APP        
% f2 T6 z, i5 S$ J9 T: Q) S- T  第五式:Github上创建微信APP代码托管仓库        
: t8 t7 `, O& l$ j# x& D  第六式:配置微信APP以及微信测试公众号        
0 ?% {0 b0 h3 h8 {. N# c  第七式:使用MiCO SDK开发RGB LED灯的固件
0 f" H& r6 a3 W  第八式:用网页编辑工具(sublime等)开发微信APP代码        ' j. ~, Z; p- |
  第九式:使用Github工具托管APP代码        
. K; [6 q' [; U3 K" g3 h& _9 p  第十式:FogCloud上生成设备二维码        
* i  C5 a8 f6 h; E; T3 g3 y- V8 U3 a  第十一式:使用手机微信扫码,测试“Airkiss”配网功能以及设备控制功能。          0 M7 R/ M" c2 V: ^8 c0 T
二.基本功, Z, x3 Y2 p' q# T1 s
  注意:练功开始前请确定射频驱动为最新版本+ [/ y% ~6 ]! P% G
  版本查询及升级方法请参考MiCO社区 → wiki中心 → MiCOKit板块射频驱动升级
6 ~4 [% y9 n1 o% S  1. MiCOKit-3288开发套件;
7 Y! L7 x. I4 S  2. 开发工具请使用IAR7.3版本及以上;
  E" g) F7 Z: h. z  3. FogCloud开发者账号(Fog云使用、开发必须);
$ m3 j8 V# R# S0 f! N% Y) h8 J4 w2 ~  4. MiCO SDK v2.2.0(固件开发包);
5 w* O& j. U2 l' I+ M' |# H  5. 个人微信号(开通测试公众号);
$ S6 g3 W3 l  h% T  6. github个人账号(托管微信APP代码);+ B6 E. S! L/ s% Y- o. e
  7. 网页编辑工具(sublime等);
, x; S& i- Z9 o" U, l5 x9 D  N4 a1 x  8. 大致了解MQTT协议及json格式。
# T4 _+ J* Z: x* H& R
: x" i0 S0 |* j/ Z0 Y& I三.招式详解
7 ^( y! C/ v! h# o* ^; W% h) i8 i2 p& u1 f, l* `
第一式:注册开发者账号, R5 k! v/ w% c: \( S
  登录www.fogcloud.io直接注册账号即可。该账号将用来管理你的产品及APP。
8 ?' ^0 A# C! _! I$ V' S$ H( y# }3 u! \( A; N4 B' E6 i
[/url]! u6 q# `; J  J

0 o! x& q% q: Y$ k" p9 ]
& v3 _4 t, T2 S5 T/ f6 \
* Y# y6 {& I0 u. p, g) P! z: ~0 m- k& a$ A8 r2 j5 ~- h
第二式:使用个人微信号开通测试公众号
. B  b# l1 X+ ?$ Y/ u  浏览器打开[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
,点击登录,使用手机微信扫码,进入后即开通了测试公众号。! M$ X* K2 C2 w. B8 B0 @

7 Q1 X. G5 e& N[/url]
- K  z3 ~$ T* l. {8 J' e( `% Q+ i6 y$ ~9 ^- G

4 c% a5 m. b/ Y8 H  获得微信号、appID、appsecrect,用于后续在FogCloud上创建产品对应的微信APP。, F! a- K7 ]" r% `. b3 M
, _- M% l- Y% Q" D" u. }, g
[url=http://mico.io/ask/uploads/article/20150723/923e41bc3c91f99ba548d65e2ddd7ec6.png]

, r% T# n5 D; P5 ?+ ~9 |
* L, ]" m, ]' b& q! y4 A
! B# p/ A1 J! g) }! e+ i; p4 m第三式:在FogCloud上创建、定义自己的产品2 Z5 M; W4 s/ H. y
# U* G  l1 f; l1 i2 n$ z% J
[/url]6 E0 k3 J1 V5 L- G. {5 c+ A

( @: F; q0 K% J) Q
$ E0 r' w' D: o: T/ ?7 _3 T  根据提示填写相关信息,创建完成后,如下% w( f; s' F, a6 @( e+ d6 @% w  Y; o, p

) O% ?! _0 K8 u3 A# f9 D- t[url=http://mico.io/ask/uploads/article/20150723/ac518bc12959f06f82624e4d9e6fc841.png]

& h; ?- B& Z$ e  g0 K
/ D+ j( A" Y- P8 Z# X
3 Q6 {- J& G' H4 a" T2 M  点击产品名称,进入详细信息:
+ g; A' B0 _, F4 N7 K: _& i" I0 |1 s4 D% W* R
[/url]  X" S1 s6 p* Y5 ?1 E  S% Y
: V5 G7 t) Z- y( B

( y1 S  N& s) r+ J' J0 ~  产品ID/KEY会写到设备固件代码中;7 X' L1 I0 t/ J  ]1 g" D- K0 [# i/ s
  创建产品的数据模型,数据模型是用来在云端定义产品功能、性能等特征数据的标准格式,可以储存设备监控、收集、控制、用户行为等数据,从而对数据进行分析,提升产品服务,开发案例过程中定义数据模型,能够有效帮助开发者将APP、云端与设备端的关键功能、特征数据等同步,避免开发过程出错。
1 K9 B8 C8 m0 f4 w5 J, i- W+ \9 j$ n; S* }9 [9 f% D2 i3 v
[url=http://mico.io/ask/uploads/article/20150723/419d8575656778d542b24f70ff5d4aa2.png]

# e  y6 g% |$ }% h& K* |1 t, v4 z

) q1 V5 x/ v( Y$ M& _- Z6 d  本实例仅控制MiCOKit-3288上的一个RGB LED灯,所需创建的控制数据点有:" U; X! e- Z; r- B7 p3 R5 {/ F% H
     1)开关(rgbled_switch)                     读写属性为1         时间序列为否
% A: y! M# _# K( c     2)色相(rgbled_hues)                      读写属性为1         时间序列为否* S, p% N& Z9 n0 {# q1 N9 q; Q8 o$ t
     3)饱和度(rgbled_saturation)                 读写属性为1         时间序列为否0 U1 Y5 A' S1 r8 M; f- j
     4)亮度(rgbled_brightness)                  读写属性为1         时间序列为否
; c' w* k: Q6 X$ b* F7 o  k  *属性名和描述可按个人习惯添加
6 d4 k  {6 u0 P% B. A  注意:在创建数据点时,“时间序列”选项:选中时云端保存历史数据;不选时云端只保存最新的数据。
4 b( m! V8 l5 ?6 [# A  数据模型的具体作用在后面的进阶教程中详细讲解。5 A2 y( Z/ J+ K& w
( n% L5 e; z1 q+ }# Z; W
第四式:在FogCloud上创建产品对应的微信APP
' O2 U/ X4 V# t/ H1 v, i
% m# y5 e- c2 ?7 V6 w) E1 G/ Y' P- C4 q9 x* l& A& {
[/url]: f$ u' l. n2 |$ r

3 M! i) a+ B# d $ o4 K! J& u+ k1 T& Q5 `; C/ b
  根据提示,填写相关信息,其中微信号、AppID/AppSecret从步骤2中开通的微信测试公众号中获得。1 v& n; W; ], w/ a9 O7 K+ T" D
/ s8 _  a  l. l
[url=http://mico.io/ask/uploads/article/20150723/12165d0d0d83feb3aba6851cc9588c08.png]
" r: ]" G' ^: y0 D$ j. i4 T2 N" f  I. H
, M9 h. ]; D3 d9 F
9 d$ }. o, e& r% r) Z0 E8 g# k
第五式:Github上创建微信APP代码托管仓库
* N" u, Q7 H2 V2 Y  请登录github.com自行创建新仓库。并克隆到本地,克隆方法详见《上传文件到GitHub》。该步骤的目的是获得一个可以在任何地方访问的git仓库,后面会使用该仓库托管微信APP的代码(其他类似git仓库托管工具也可以)。3 H" H6 F7 Q9 [% k0 ?1 F5 L0 v( a
5 k' ]( y1 M% _- B3 v
[/url]( g# R4 u, W% N' [) f
5 v4 `4 m$ b; o& ~4 f  x! x

& M3 i9 p+ |) |3 g, ]2 \  获得仓库地址,例如:https://github.com/wangeshen/MiCOKit_test.git
) K. O. f7 n5 ]/ ~5 Q6 i7 k$ V6 {7 O+ r/ O) s* g
( v# X# B% L; @3 z  O  \1 ~
第六式:配置微信APP以及微信测试公众号1 j( R5 w$ o# n1 \; w% g( m
  (a) FogCloud上的微信APP信息:
9 }2 j+ v! z/ A% L4 F+ S* b' t$ n) ]: N9 x2 A7 B$ t
[url=http://mico.io/ask/uploads/article/20150723/3e552dc6f9c1097d68b01b4643a04921.png]
' V/ T# o! [  W. D% o, Y( b
, H& Y  T; w& ]1 G& ~
+ e% v( j! Q  q% S! Q) b
  其中URL和Token会在后续配置微信测试号时用到。" c9 G8 y) O( V. Y8 J
/ ~6 \3 `( s4 w$ a
  (b)Git部署(同步微信APP代码到FogCloud)2 B/ p8 ]1 J3 n6 b, O% E

% p1 d& x9 A! M4 F5 R/ {) `0 L[/url]* I- X) K" d& @/ U/ `+ B

; Q  }, n# Q0 K1 D( U1 X/ E ' _. O$ E' w' {* E. s
  其中:
: C" H5 l/ L* U9 }% S/ l  Y1 d+ |& C     Repo即步骤5中创建的github仓库地址,填写后保存;
) V$ X  p9 V+ K/ P9 I, Y     Deploy key和Web Hook Url可添加到github仓库的设置中,以自动同步代码到FogCloud;也可以不添加,但是github仓库中代码更新后,需要手动点击“发布”按钮来同步代码,同步后右边可看到最新的代码提交记录。
' y/ Q6 k( o4 i
3 Y" {: z* a* I- `4 R/ U7 ?' W: S. C5 B. q) X
[url=http://mico.io/ask/uploads/article/20150723/47bf7c17eb7ad746792160a06f14ab20.png]
: T. Y& M: R$ S; Y: W! P6 ^
$ q' D4 Z9 w7 @* K* M7 u4 p

& [4 d* a1 j# f' v) Y" Y  (c) 微信菜单管理
- X: e1 ^' G$ C% `6 \( V0 }  通过FogCloud提供的微信公众号首页菜单定制功能,方便的定制手机端微信上的控制界面及功能;至少包含“Airkiss”按钮,打开微信Airkiss配网功能,“OAuth”按钮(名称可自定义)进入设备控制。; T7 t1 }% _  w- Z
- @6 F5 @+ g8 Z) i
9 T& j0 N+ J8 ?" _0 H2 L  t
[/url]
2 o' n' X" d: F# v5 y6 p
( c2 f3 Z( d' U6 y) k' l6 s7 g
  (d) 设置微信测试公众号 URL与Token在创建的APP信息中可以找到
- w: B/ O  T9 a' z/ W  修改配置信息:! H, ?3 Y1 Q& b' [; B
  URL一般为:[url=http://4addb71f-1b5c-xxxx-94c5-f/]http://4addb71f-1b5c-XXXX-94c5-f
... ylink.io/wechat.php
- f! x9 _7 o4 K) h  下划线部分作为JS接口安全域名和授权回调页面域名。9 ^" k& `5 o; A- T

+ Q( V' ~& x9 z; m- D" w( \[/url]* g! r" C# F0 ^- _) ^3 E
2 Z8 Q7 r# }1 w9 f/ H  N4 j- J

# T; \, m& x! S( p2 U5 U  开通所有测试功能,并填写网页授权域名:; l& r; Z' p9 r& }; ^) \; T) v/ g1 b

4 i0 b7 o) R: Y/ a[url=http://mico.io/ask/uploads/article/20150723/4147bd2c388956cee39120fa591cd440.png]
7 N; T! b/ q( ]* y9 H9 ]5 d

' |1 m; s' {* V 0 r# r0 _% S* V6 e6 z
  点击修改,打开如下:
( m' Z3 p) O3 _% b$ o9 ^4 W4 k, ~6 M+ B+ q* s9 V# b3 H) g
[/url]9 p8 k8 q+ E% P6 Q5 [' X$ J& J

% A% b6 E2 a7 k: L3 Y 7 O+ d1 u& _% b' d8 `) D% I
  同“JS接口安全域名”,格式为前面提供的URL的域名部分,如xxxx.app.easylink.io,其中“xxxx”为FogCloud上创建的微信APP的id。% n0 k5 }, v; V7 w  T
: P( D$ N  m7 i, t& s

! ~7 V0 m/ v' z6 {第七式:使用MiCO SDK开发RGB LED灯的固件% l$ u6 O! A7 b3 d: e! ^2 I: Q
  (a) 登陆MiCO开发者网站mico.io,去MiCO社区注册账号,并登陆;: K( k+ [# `( [& r  N+ y8 a7 s4 _
0 g8 K& I, f  Q: z6 |6 e, ?8 ]
[url=http://mico.io/ask/uploads/article/20150723/3c04c03f3d922eb74c06906c610b9290.png]
$ A1 T9 ^' T  }, j# t

* u, N. @" P$ U  k- Z
: G/ y+ k# C0 I8 r, F  (b) 重新打开mico.io首页,开发者中心 ==> Wiki中心,下载MiCO SDK。4 s2 r* F  {( r
- B' I6 }- ]7 i* I- q
[/url]) I* G) d5 n/ j* z

7 g6 o/ _% w' h( }' V2 h ( q5 A+ h% _: c0 s6 y4 z2 I* h
  (c) 打开MiCO SDK中的微信开发实例工程:( D6 w! r9 @: \& {  l+ f; d

2 ]. h; y! C* ~- N- k# ~' {  t  f[url=http://mico.io/ask/uploads/article/20150723/3c6381767bf00833cab64ed4c37df2f8.png]

( D, F3 N% G. r) E/ [0 n# L( C, `7 M4 p* j

- J' B9 J& M1 I% |* F    1)开发者手中拿到的可能是硬件平台可能是MiCOKit3288或者MiCOKit3165,在编译工程时要先选择硬件平台;* b6 m$ y; |. n
    2)将FogCloud上创建的产品ID/KEY写入固件(必须替换):0 [* ?( b9 @* Y+ C- f

0 X4 J6 u% Z& ?" i8 Y[/url]! I) _8 G7 z. O- F: e
" w! S) t* Z/ c' `% u( E+ S- \

/ Z9 ^6 e1 q# r. Z: v' R5 k    3)修改版本号,这样才能把新的产品ID/KEY烧入FLASH
) C! R; {8 T5 C. _% P+ M* v) I3 X$ j* n) p
[url=http://mico.io/ask/uploads/article/20150723/1661ce047fc9ea5e465db04acd59c24e.png]

/ A4 O+ {  W, D
7 m+ @( U' N/ S
! [, R: `3 @) I% _! n% B  d    4)添加LED灯控制代码:
8 D3 y3 z! D# m; V
- O" B5 k! _, V9 k, |[/url]/ b, m6 j8 x) r

; n' D- s  O6 f& x) ^
7 w2 E1 X% l& [6 k& p    5)改为收到云端消息后,解析JSON数据,并控制LED。% z- g& y" Q0 o

; X5 t2 A1 Q7 w3 h[url=http://mico.io/ask/uploads/article/20150723/fb02025e4062a859d0d33d4178cd156a.png]

" F7 y/ q5 |/ z6 w
, G4 _' A/ m0 G; n8 O! A
4 C* T2 A5 \- p& Q) d2 T    6)错误代码参考:在运行过程中如果出现错误,可在user_log中查看错误代码。+ Y1 y7 u1 n% T3 W" q) h/ P# ?6 b

$ I+ P9 E2 c0 a% J6 a5 y4 Q[/url]
2 e+ L; H9 G$ C" p# [6 n
2 P- J: S+ M( l  h
+ X4 R* E3 X8 M. X6 y7 G4 p3 I[url=http://mico.io/ask/uploads/article/20150723/9f6828473efaa4a01ae4434c236a2ef6.png]

$ Q2 W  e6 e1 p* x- g, _8 a' q' d5 U* v) `) W
: k; I3 E/ c  L+ t/ N$ \! {
    7)MiCO SDK固件烧录。(详细固件烧录方法及步骤请参考http://mico.io wiki中心)! f8 d8 G) @0 z; s% W
选择使用的烧录工具J-Link或者ST-LINK:5 `- y, f8 p+ p0 z; G
8 C1 o$ H3 C) b3 O& f
[/url]
( v9 k! r$ L6 n- {  e: C$ Q/ E2 r& l. G  h8 j2 Z
/ z$ x3 l( [- p4 J9 ~# X
  编译/连接:
# @. `& Z' t& g! v' P/ M+ a& _1 t; b2 W8 j
[url=http://mico.io/ask/uploads/article/20150723/14ee93da638bb344905c2f6c7a8481ef.png]

$ D6 f! ~$ L$ y; w% Y4 e. T: _# z3 W, v8 }! L( l% h

- j( R0 Y3 |- z4 J0 e! Q  烧录/下载:/ U4 o5 O  o/ J4 G
# e* T: `6 V& {: _  R  [( w
[/url]
9 `& K6 ?) ?- E% m( c' U
4 l$ F# {  j9 C" f# X' k5 K) k/ `
4 R- j: a- }' l6 ^3 c+ G第八式:用网页编辑工具(sublime等)开发微信APP代码) ]- u7 t* Q3 ]' |7 ]& V+ ]
以下为核心代码及其注释
# p: S$ y" t, `1 N3 e& }3 ]//应用程序入口在application_start(void),一系列动作(如配网、连接云等)以后,用户程序入口在这里。
6 B3 }+ ^  ~' G. l! ]( d, WOSStatus user_main( mico_Context_t * const mico_context  " H) X  d8 j* x$ j! N5 C- i2 Y
{" ?: |5 n2 G# \; ~, O
  //user_log_trace();
" N- g6 O6 l  ^/ {  d  OSStatus err = kUnknownErr;
; i. F' ~# b* T" e0 ^% W$ D  fogcloud_msg_t *recv_msg = NULL;//接收数据结构体" B9 ^2 o8 G. I" Z3 F" a
  json_object *recv_json_object = NULL;//结构体内包含json数据格式6 h' U7 O! }. D3 a) U
  /* rgb灯的色彩模式采取h***色彩模式(色相、饱和度、亮度) */
, `! o* N5 a3 Y+ m  \5 e+ _  bool led_switch = false;//rgb灯开关: U  h1 l, Y- c7 T2 L3 x. D8 t5 _3 Q
  int led_hues = 0;1 Y6 @1 W5 u& ~: @/ W
  int led_saturation = 0;
, B& Z; i$ c3 r7 A, z% C1 v# K  int led_brightness = 0;- |1 L9 J; ?; X
  require(mico_context, exit);8 u5 R- j7 |/ }; i7 V- z/ A: a* _
  h***2rgb_led_init();  // RGB_LED初始化! z% j  x5 a) n
  while(1){: S( x2 P" t& y, q5 M( |* F
    mico_thread_msleep(100); //延时100ms
  [4 b$ ^# f# y    // 检测 fogcloud 连接状态1 ~& _: t$ R$ o* e4 G( B
    if(!mico_context->appStatus.fogcloudStatus.isCloudConnected){) {) ]0 M' R1 g
      continue;
3 _- l9 C/ S: T$ L4 c2 B    }1 Y- q$ n8 e, N) M. ^( E
    /*
) Y% V, B; o2 `      接收来自云端的数据2 |8 u# K1 s  D, p* S
      recv_msg->data = +5 d, }; P, w% X/ Z3 h8 A
      topic表示模块订阅的MQTT通道名,data表示云端返回的数据
* l0 Z5 g$ V% q. r% P0 M$ Z5 V     */+ t5 k6 c1 r# ]$ U7 e
    err = MicoFogCloudMsgRecv(mico_context, &recv_msg, 100);1 P) i6 f# Y7 x7 l  z# W
    if(kNoErr == err){
- i2 O# j5 F/ J/ ~7 p3 I0 `// 打印  例://user_logtopic[30]=[de54a8ea/c8934691816b/in/write]data[23]=[{"rgbled_switch":false}]% J1 ^5 o% X( l  A
      user_log("Cloud => Module: topic[%d]=[%.*s]tdata[%d]=[%.*s]", # V  T) U) U$ L/ c
               recv_msg->topic_len, recv_msg->topic_len, recv_msg->data, ! U/ z5 f6 e  A; d2 x; Z
recv_msg->data_len, recv_msg->data_len, recv_msg->data + recv_msg->topic_len);
$ p- Y  d/ b0 m& ^- ~3 [// json格式的字符串数据转成json对象
; u! h9 P# }' v, i7 k( ?7 R      recv_json_object = json_tokener_parse((const char*)(recv_msg->data + recv_msg->topic_len));8 g% ~- J; Y7 X& N/ a
      if (NULL != recv_json_object)
9 O. ~) @# I: t% e1 o; Q      {
- l' k; `# ^* S3 D' I% y        //根据键值对遍历; N7 G+ b/ O) d3 o
        json_object_object_foreach(recv_json_object, key, val) {
! u) ~1 S: M* x; M, J          if(!strcmp(key, "rgbled_switch")){+ K8 b( `2 a: F# Z7 B+ l
//如果键为"rgbled_switch",提取值“开关值”- A- {- A2 e' {1 Z- o8 h' w
            led_switch = json_object_get_boolean(val); 1 x/ |# `. e( F. L, |) d
          }+ g" m7 |0 }5 L3 k
          else if(!strcmp(key, "rgbled_hues")){
  }" B% o1 c7 s" l6 i                        //如果键为"rgbled_hues",提取值“色相值"# _& v2 J  @& B( `* |0 g) ^
            led_hues = json_object_get_int(val);
" x8 T5 q: X7 B4 W6 F          }' ^( o  W, ^0 g1 W2 x; X! ~
          else if(!strcmp(key, "rgbled_saturation")){
' w3 c( \. v  E& a* g* ^+ u                        //如果键为"rgbled_saturation",提取值“饱和度值"
# I2 d  q  o$ T" k' V            led_saturation = json_object_get_int(val);
+ p- S, N$ l- a# k- h          }; e6 T( y5 C( W( X6 h( y3 V
          else if(!strcmp(key, "rgbled_brightness")){
. F; J' W3 H* @8 x//如果键为"rgbled_brightness",提取值“亮度值"
4 i3 P+ y) J3 O  ~' {, u            led_brightness = json_object_get_int(val);
" m. j8 _6 p2 " K          }: w1 ?* T! T" N
        }
9 r/ U8 ?0 p: d2 K        // 控制LED. D8 ]6 ^" T% W& Z! C
        if(led_switch){' `  Y, W! Z7 l. F8 c  \' }
          h***2rgb_led_open(led_hues, led_saturation, led_brightness);
0 x. Y, C4 A9 A4 c5 F        }else{
* ?4 E# N# A# T2 C  l. e          h***2rgb_led_close();  // 关闭
2 E. H) {2 N* w5 Y6 V        } & |' u5 U/ |% H0 S+ f1 O) X; d
        // json对象内存释放
3 U$ |  \$ `& ~5 G0 _        json_object_put(recv_json_object);
1 g! `9 R* O# y$ m5 k        recv_json_object = NULL;8 f" R% f) O3 ?1 s6 M8 q' q: U
      }- E4 P- _1 Z0 D7 G% E  w9 h
      // 结构体内存释放+ i! Y( \( W" h5 y
      if(NULL != recv_msg){
* b$ F4 `# Y9 H        free(recv_msg);5 o% }$ I( ?* z& G. t2 o
        recv_msg = NULL;
, k5 }4 h; ?9 `7 ]; f      }
: o* w7 \1 f3 ^0 N* L- V8 h7 Q    }$ X' T3 Q8 T! z5 i, ?1 G
  }. x# N1 _0 Y! F+ R/ ~) f
exit:
# @9 L$ s$ t% Y! E+ Y- Y+ f9 g  i  user_log("ERROR: user_main exit with err=%d", err);
, }3 y& M* ]- ^/ y  return err;
( N9 w+ d) |2 x) @" |6 g' @}
) |8 ^; t( Z& L; {0 z0 V7 g4 X" P2 P. \. f; P

" `, m1 r/ G6 [* O$ A1 J1 d第九式:使用Github工具托管APP代码2 D5 l& l- y( n& p
  在例程包中(MiCOKit SDK的APP目录下),找到微信APP控制页面代码(index.html和yourID.html),将yourID.html.重命名为你的产品ID,如cabca380.html。拷贝这两个文件到本地git仓库,再同步到git服务器。同步方法详见附件——上传文件到GitHub.zip。7 J1 G8 r1 N1 }! b& X' J/ N3 q
7 H$ z! `* \0 k+ @# |4 D
[url=http://mico.io/ask/uploads/article/20150723/97411f3674d23cb747a33172ee9c1284.png]

6 Y% [5 t0 {! _3 T/ W: L* L$ F+ N
7 h6 O# z" d+ ] % B( Z  g& U/ z
  index.html   —— OAuth按钮跳转到该页面(一般为设备列表页面,可不做改动)! {, |$ P, X5 b
& {% F; D+ i+ _( R$ \; o! r
[/url]
' [$ D- Z3 _' z6 g, w; G/ r! E0 T8 Q& a; b- j

) ]$ T. f6 Z* q2 b$ K' ?! R, d  xxxx.html   —— 设备控制页面(其中xxxx为FogCloud上创建的产品id)* V' r' V, ^) z% x

- Y. M6 B: z( H% o# A- l6 t' @& p0 e' T8 h3 {5 J
[url=http://mico.io/ask/uploads/article/20150723/bdd3e767bff5fdcf06f16b6ee478f57e.png]
3 s; f; }8 V/ T1 ?

9 q* X# ]* q0 X7 p+ P* J6 K$ T7 C  K6 m: Q, B: g. W
  详细代码见附件代码包,部分代码解释如下:
* V- [; F) O* K: T ( P5 S! \$ c2 ~3 p4 R

' r3 S, C$ Q1 ~# `' m+ p/ a0 w$ o[/url]
8 o+ k& B4 C2 b' H8 r5 a* c
& m% }# s1 @4 x7 ~- h/ I
4 |4 d. B3 O. ~[url=http://mico.io/ask/uploads/article/20150723/041017556fe9d8bf147cab201e4055c6.png]
7 a7 D6 `5 n6 N
. s& P/ b7 I/ D1 R3 p# a/ ~
+ G: G  {, \3 o0 ]0 T

1 I  [# ?; U. N* ~/ Y  修改、并提交代码后,如果没有配置WebHook让FogCloud自动更新代码,则需要到FogCloud上手动点击“发布”按钮更新代码,并通过git提交记录确认是否更新成功。
7 F6 ~7 @* \% z8 o
3 e6 a* D  x6 k. ~) S$ \. M5 z
" ?8 x2 H9 \# P0 f' F第十式:FogCloud上生成设备二维码& o  [+ D- A: W5 X/ g/ M
  (a) 创建新设备" S- R4 H8 j2 w0 a5 V: T5 w
# U2 [$ C- I" {
[/url]
0 c, L: s: w6 P& N$ e+ W
0 o. \7 ^2 B8 U% ?
6 X; w7 x! O) |. L" k8 S9 ^3 d  r  m. Q (b)填写设备MAC地址(由小写字母和数字构成,设备上电后会向串口发送MAC地址及其他数据,可用串口工具查看)接口创建设备。' g9 d) p& |; j

6 O" K) N+ s6 a  E. I9 d* Y
. u# b# f$ J- |2 V0 X) j5 i[url=http://mico.io/ask/uploads/article/20150723/60addb425f19b481c3d2ea9346bbd71f.png]
& T3 i5 o6 Q: y, e4 h- y

) l! B7 \# x+ g# S- F) k2 e
3 p" k0 Z: Q, t% c. l9 ]. L: d4 s4 {+ y* K6 O+ c
  (c) 为设备生成微信二维码
% j1 j& f' P! b* F4 b) Z; p  点击“同步到微信”按钮:  5 `( P$ ]& Q- ?9 i6 R& _/ B
/ `  w% g0 Y, b1 z4 E
[/url]! B1 o2 l% [8 |" ^
" ^+ r/ U7 T# n8 I1 s3 Z; x0 v
' x$ X, g5 K' W& C+ y( p; @: F
  选择创建的产品和要使用的APP后点击同步按钮。
/ v& G) S% R- z, f1 C1 \7 b9 F3 @$ q- Q0 e- l+ w/ V
[url=http://mico.io/ask/uploads/article/20150723/8391b8371fe9a3cf4338e65240989bf1.png]
+ D/ N8 A# K+ ^/ q* w
, k/ c; t1 A! Y, T$ C: F

: u  M$ ~% o' a# f$ K5 R9 v6 P& f. e  成功后提示:{"result":200,"message":"success"}  Q2 {& @4 u4 }( ?: A9 w, L) ]
6 B+ k' e$ B, E
[/url]
' f& @9 Q: T+ ]* W0 ~& q4 }( X0 R9 Q3 Y2 u/ s

0 {! `$ s+ s# t( A* t2 @2 F$ J& z) y, ]1 @
  极少数情况会因为微信公共平台延时的问题出现err:500问题。等待几分钟后重试即可。
, F( T7 ]3 k; t' k8 g  返回到产品界面,可看到你的新设备。 , E9 K" U. t6 S3 i" c

# B5 A9 k3 W) c; Y; L* ]3 y9 a0 r6 i- R[url=http://mico.io/ask/uploads/article/20150723/fb1885f6aaad37a08f169dbe29946d54.png]
2 d, }4 d5 J0 u/ g- h2 n/ G

, p2 N1 Q! h7 d  o
, k9 i/ i+ `& y/ R* S$ {$ d0 ]+ H% C[/url]- _) L& Q' L+ B) d1 W

! ^- @8 L* ~$ d, q- M9 t9 j + n; [5 {" @$ w8 j% a6 Y% t

3 X$ M4 k7 J# C8 ^! @% E第十一式:使用手机微信扫码,测试“Airkiss”配网功能以及设备控制功能。- H4 ~. H- B- B; {
  (a) Airkiss配网9 {# i& ~& I. {  [1 c1 x
  Airkiss威廉希尔官方网站 可以帮助你的设备在没有人机交互的情况下智能配置当前Wi-Fi环境的SSID及密码。(假如你的智能设备是一颗灯泡,总没有屏幕和按键让你输入SSID及密码吧)* F9 o/ x( O0 D
按设备上的Easylink按钮进入配网模式,底板上的LED(D1)灯快速闪烁;
' P) g0 ]& u1 d手机输入当前所在环境的wifi密码,点击连接,成功或超时会自动跳出该页面。
8 P& W# L0 M9 ?/ J7 I& q; x( t& T5 }( r7 {# a& }" I5 |0 x+ I
[url=http://mico.io/ask/uploads/article/20150723/18e3a2ba0846a30f245578b054272b7d.png]

! c! X1 M, y( ]# N- M1 ]1 L( i5 r- D) A: h: z4 s
7 }- T6 @: Z) i2 o" ]+ |
  (b) 设备控制# U( x4 |4 z! N2 v8 e8 A9 u
  Airkiss配网成功后会跳转到设备列表,红色圆点表示设备不在线,蓝色圆点表示设备在线。若配网成功后设备依然显示设备不在线,可点击右上角刷新按钮。点击列表进入设备控制界面,点击控制按钮,控制MiCOKit-3288扩展板上的RGB LED灯。4 b$ v, \5 ~" _9 L8 H
已经配网成功的设备不需要再次进行Airkiss,只需点击测试公众号中的“Devices”按钮,进入设备列表,点击列表进入设备控制界面,点按按钮,控制MiCOKit-3288扩展板上的RGB LED灯。: @1 m# }; q: A( o
* O' k# b4 X: @& l, V# C
[/url]
/ s& R( s3 _0 o/ D8 \0 P, X0 M
. c1 E* [5 |4 ?& B% \+ p9 n( j% k+ R. l* q
[url=http://mico.io/ask/uploads/article/20150723/13e7c77638ede00ccf82d4fb10429ab2.png]
+ p8 [4 S9 f1 U9 S& {; n6 w

0 j7 P9 g" b: g/ g$ K
0 C3 j# {. S, n" f' K# Y  如果您完成到此步骤,那么恭喜您大功筑基已成!!
: A6 h* U% o# {. B4 S  武功在手,天下我有!
5 P, [2 \$ r# D; C% t! F  祝愿各位米客能手持MiCO利剑,在物联网智能设备的新江湖建功立业!

# F: I9 a& _; |/ Y+ ?" ^$ B
! i8 g% n6 `( @9 ~* a, N另:源代码地址 http://pan.baidu.com/s/1bnsGEy7& [6 f9 l5 M  c0 U9 O

2 I/ ^% P2 `8 @MiCO团队
8 h( \! o; U4 r4 o5 e敬上!1 v+ T0 k1 ~, t) E
[/url]
: V2 t/ P: _+ G: c8 r  r
[url=http://mico.io/ask/uploads/article/20150724/02263811253059862ccc8df321bb95b5.jpg]; \+ q) Z( G$ W8 |( l
- w$ b" f% H& L1 l3 Q9 i- R3 f

0个回复

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

本版积分规则


关闭

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

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

GMT+8, 2025-1-12 06:12 , Processed in 0.749745 second(s), Total 66, Slave 47 queries .

Powered by 电子发烧友网

© 2015 bbs.elecfans.com

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