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

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

micolover ( 楼主 ) 2015-7-24 10:52:41  只看该作者 倒序浏览
本帖最后由 micolover 于 2015-7-24 14:47 编辑 ; s1 m4 z$ U: m6 {
$ v. H0 d$ v6 L- s
前言$ V" Y* n8 `8 R, N5 S7 f+ ]
  大神玩转MiCO好生羡慕* w0 r2 V8 w! {& W! m
  菜鸟低头不语无从下手/ i! R+ `+ ?" ^/ u$ J& ?# D3 H
  别慌~看完下面的武功秘籍,你也能成为一代米侠被人仰望) U/ q8 W& O/ K' O1 i0 Q( a
. [9 B4 y6 |5 @4 _- K3 X
一.微信控灯十一式
( F: K) w& h, D- D, k( j  第一式:注册开发者账号        
7 S9 @- e+ L) F. ]- [  第二式:使用个人微信号开通测试公众号        
( ?5 s0 |' V/ ~. c* M9 O  第三式:在FogCloud上创建、定义自己的产品        7 f5 B/ j! y3 H0 z8 F* x, U
  第四式:在FogCloud上创建产品对应的微信APP        
6 U; H4 d* Q5 n% }  第五式:Github上创建微信APP代码托管仓库        3 f) e7 a: H/ Q. `% ~
  第六式:配置微信APP以及微信测试公众号        
2 k! q6 s  V7 w( T$ _  第七式:使用MiCO SDK开发RGB LED灯的固件
% Q5 _9 [1 X  e/ i$ N  第八式:用网页编辑工具(sublime等)开发微信APP代码        " O. }4 c& B! ?
  第九式:使用Github工具托管APP代码        
, D: t% h; S4 r+ k' P, U. d  第十式:FogCloud上生成设备二维码        
! }, k2 Q4 H# K5 C8 R  第十一式:使用手机微信扫码,测试“Airkiss”配网功能以及设备控制功能。          4 O' C% s$ V9 O5 o2 Q% ^
二.基本功" `3 h2 |8 ^) [. m$ ?3 a$ R
  注意:练功开始前请确定射频驱动为最新版本
2 v8 D  u, b+ d+ s8 \0 U  版本查询及升级方法请参考MiCO社区 → wiki中心 → MiCOKit板块射频驱动升级! ]9 Z" B' y$ z& j9 o+ y) d# o4 J6 z1 m
  1. MiCOKit-3288开发套件;; c! g  w; i$ Y; R+ _" \
  2. 开发工具请使用IAR7.3版本及以上;
/ w: A/ `2 i( c# N  3. FogCloud开发者账号(Fog云使用、开发必须);; p- [* A9 G: o; r( t$ n+ T
  4. MiCO SDK v2.2.0(固件开发包);. N& n- d5 p6 }1 x. l) x0 @
  5. 个人微信号(开通测试公众号);
- W9 p% b6 A$ J3 H/ ]! }  6. github个人账号(托管微信APP代码);) ]( u$ s5 m1 o* d4 x; z
  7. 网页编辑工具(sublime等);
9 g( x  ^& ~( b3 h. J  8. 大致了解MQTT协议及json格式。0 k+ s5 |: y4 j+ f0 _
! j7 l  K5 i, k  C
三.招式详解4 h' B. U9 l( u) R$ x* D4 m
' ]9 k/ y3 q" l) x( V$ y
第一式:注册开发者账号
. d7 l5 h4 i- s  登录www.fogcloud.io直接注册账号即可。该账号将用来管理你的产品及APP。! B) M6 M0 e* A- \6 k  X
! O2 a% k9 g1 _/ z& e
[/url]
+ A/ ?5 C/ ^: Q3 B) f* ?
% r1 ?$ y; c7 c% p- [( W  U( E. B
0 i  S5 e  y# f5 j

% E# V5 q: ]  X6 r7 g第二式:使用个人微信号开通测试公众号
& s) n! A0 H1 y  浏览器打开[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
,点击登录,使用手机微信扫码,进入后即开通了测试公众号。
$ D! a$ @/ P/ ~0 u
# b7 a% I9 M, E! C; H[/url]
( Q# [/ Q' I6 |. X
" D4 G  }  X# S# t
/ y9 ~% H" p% _* s9 D( M7 ?  获得微信号、appID、appsecrect,用于后续在FogCloud上创建产品对应的微信APP。
  c0 |) Q' y2 w/ @) J, L7 U
# g4 Q" T  q& W, v4 j0 c1 ~[url=http://mico.io/ask/uploads/article/20150723/923e41bc3c91f99ba548d65e2ddd7ec6.png]
" F( w( S/ ^9 k% y. w& L8 n# Q
; C2 Y' N5 D6 H
5 j! p* |, e( M: R2 p4 W1 Y  @
第三式:在FogCloud上创建、定义自己的产品
5 H* Y; \+ ~: f! A/ T# c, O5 S% ]; [: d
[/url]
, B( U6 j7 V6 k% i. A9 t+ S1 D$ p- a$ b
) d3 Y% T* X/ T% F
  根据提示填写相关信息,创建完成后,如下" r" j. L- V& F% h/ {9 Y- w
( H! }* I: R9 `* o
[url=http://mico.io/ask/uploads/article/20150723/ac518bc12959f06f82624e4d9e6fc841.png]
9 x' D! a5 T5 X) y  z* \) |  D

8 E; t4 ?$ c& y0 J( {5 T
0 I" g# c8 f; J0 C: d# Q  点击产品名称,进入详细信息:, q) [) U- t" F3 @( a
' m! n7 V7 E' `. a, M) O
[/url]
5 a9 f8 G5 Q- R- ?5 W
( f6 t4 [  \# E  y6 f; ~/ l& L # q4 B" M- a! ~: R( d; D& W
  产品ID/KEY会写到设备固件代码中;
) Y9 n- R; R- a$ r0 _6 M# Y3 j3 U  创建产品的数据模型,数据模型是用来在云端定义产品功能、性能等特征数据的标准格式,可以储存设备监控、收集、控制、用户行为等数据,从而对数据进行分析,提升产品服务,开发案例过程中定义数据模型,能够有效帮助开发者将APP、云端与设备端的关键功能、特征数据等同步,避免开发过程出错。
* F9 y: V6 L$ x1 K6 R" \1 D. u
6 F+ i% A  G3 U[url=http://mico.io/ask/uploads/article/20150723/419d8575656778d542b24f70ff5d4aa2.png]

6 {! p7 Q2 u! ~" ]$ x' g+ Y5 p! a1 {  Y& J  x: M4 J- v! G
! b" U5 f; o: p
  本实例仅控制MiCOKit-3288上的一个RGB LED灯,所需创建的控制数据点有:9 ?1 l  D% L# y- W# r7 r9 Y' J' S
     1)开关(rgbled_switch)                     读写属性为1         时间序列为否6 R# e; Z7 ?2 z: ?! q
     2)色相(rgbled_hues)                      读写属性为1         时间序列为否
( |2 Q% Q1 V# E$ s2 f     3)饱和度(rgbled_saturation)                 读写属性为1         时间序列为否4 w+ A, t: V+ _9 X0 K
     4)亮度(rgbled_brightness)                  读写属性为1         时间序列为否7 k6 L% _. I1 r9 c2 h5 Y
  *属性名和描述可按个人习惯添加
% c4 P+ V0 b8 M5 N( A. x; q8 e$ C  注意:在创建数据点时,“时间序列”选项:选中时云端保存历史数据;不选时云端只保存最新的数据。, H3 C5 `& h  `. x, Y6 t6 v
  数据模型的具体作用在后面的进阶教程中详细讲解。
& `. J+ L, r+ `6 H# P& U5 @
4 {( F" g6 L8 X7 K+ F$ R第四式:在FogCloud上创建产品对应的微信APP. Q3 I' ?/ X6 V9 A& M

3 y+ n; _" T9 M4 Q
% [6 E9 n: K: [* u6 I: O[/url]
: B; p7 C, g3 O9 o. y7 J0 G
0 C8 e! q& H! }7 j5 [0 q; h  q% t8 c3 O8 z # y* v& r- @0 X2 b% }" W  H6 f2 Q
  根据提示,填写相关信息,其中微信号、AppID/AppSecret从步骤2中开通的微信测试公众号中获得。8 b# d) t9 ?- n" k$ T
2 H4 b; T1 @0 o# m0 h
[url=http://mico.io/ask/uploads/article/20150723/12165d0d0d83feb3aba6851cc9588c08.png]
" y" J/ E  p( D* U7 s
5 G% O+ o+ U: k

: O. n9 l, O; ~第五式:Github上创建微信APP代码托管仓库* s; s; }; ]9 d/ r; ^1 U9 I/ f. ?
  请登录github.com自行创建新仓库。并克隆到本地,克隆方法详见《上传文件到GitHub》。该步骤的目的是获得一个可以在任何地方访问的git仓库,后面会使用该仓库托管微信APP的代码(其他类似git仓库托管工具也可以)。7 ~" j, g* T( C) C- R3 H

9 E/ D. E6 ?1 U4 m" N+ |[/url]5 Y' M8 U5 a9 E( X' Y6 {# t

, r! ?" u7 j: O% ?  F7 B0 g$ B
6 K1 a2 _4 Z; W, k& X  获得仓库地址,例如:https://github.com/wangeshen/MiCOKit_test.git
0 c+ C6 z5 @1 m6 ]: h0 T! x& @. T( r, j3 D* z; l2 |9 \
5 |: X: Q6 L1 t' u' x; M( c) ^( P
第六式:配置微信APP以及微信测试公众号
& y% b- W( C0 s6 C; ~- n( Q/ x+ y: ^  (a) FogCloud上的微信APP信息:) r  E. @% j' {5 _% b  i% O

5 q8 U; O4 M$ k' q( [[url=http://mico.io/ask/uploads/article/20150723/3e552dc6f9c1097d68b01b4643a04921.png]
0 l; b( n! P7 q0 ~

. B2 o5 l$ F8 `1 S" I8 v. s" P: b% D ; Q9 O% m3 L7 G9 I
  其中URL和Token会在后续配置微信测试号时用到。
' V. J4 \& j$ O: Z1 [
7 }0 `* B& f9 s6 |6 l  D- f0 L# O  (b)Git部署(同步微信APP代码到FogCloud)6 P: J7 s$ }' D) o! z
3 O8 r  G' |$ t# V% V4 ^' Y9 L
[/url]
0 j$ e* \# D. f+ H# q2 b  Y" y0 a" F7 \$ V9 H
" U& F9 G) H. [- v; ]; v8 v
  其中:* \3 C- Q7 a8 Z2 v1 A
     Repo即步骤5中创建的github仓库地址,填写后保存;
8 y- o% k& H- B* z' ]* h5 n     Deploy key和Web Hook Url可添加到github仓库的设置中,以自动同步代码到FogCloud;也可以不添加,但是github仓库中代码更新后,需要手动点击“发布”按钮来同步代码,同步后右边可看到最新的代码提交记录。( a& a2 V- {% a- N% H
' V/ P+ y( H; C$ w. R+ r8 p1 @

% ^3 g8 @% i/ X4 ^$ o+ K  _& C[url=http://mico.io/ask/uploads/article/20150723/47bf7c17eb7ad746792160a06f14ab20.png]
6 H' k  k" Q: I/ O) D2 @

  g4 q; C6 V. u  Z4 w
# S; H" g+ y, P. J. D  (c) 微信菜单管理
2 M, v2 [: X: _) T" `$ f! X- [& h- y  通过FogCloud提供的微信公众号首页菜单定制功能,方便的定制手机端微信上的控制界面及功能;至少包含“Airkiss”按钮,打开微信Airkiss配网功能,“OAuth”按钮(名称可自定义)进入设备控制。3 m2 g* c0 @1 y$ d; \( P9 q8 N) @
4 D& c* a$ O- z- O4 b; j0 m) H5 z
3 l8 v. o. X" {& W+ k  T( S
[/url]
% j, B$ J" J0 _; t; {: O" a
/ G/ e- x1 h1 G
8 l1 ]* d5 h8 t: D% T( ~  (d) 设置微信测试公众号 URL与Token在创建的APP信息中可以找到
6 B1 i2 ?* X% ^* R  修改配置信息:6 U, s! ?2 Q& }$ j7 g0 E9 G
  URL一般为:[url=http://4addb71f-1b5c-xxxx-94c5-f/]http://4addb71f-1b5c-XXXX-94c5-f
... ylink.io/wechat.php& ]: k) \! h; J( ~( @0 V9 N
  下划线部分作为JS接口安全域名和授权回调页面域名。% p2 i& \! l; S" `( a$ E) K% i  r* c

% |) b5 i( y$ f! t- F3 N5 f" V2 M[/url]. G1 U! x) n7 F; M! J: ]
) A% ~& Y8 Y5 t0 l) v( ~8 ?. ~
( ?, Q* z8 Z6 x' F
  开通所有测试功能,并填写网页授权域名:
. E: p% `& G! G! ?- R6 _- x. N1 T) Q+ U  _, d1 C
[url=http://mico.io/ask/uploads/article/20150723/4147bd2c388956cee39120fa591cd440.png]

% q# l! w2 ]* F9 L  m  a( M" z$ U: G, A: B% @7 n( b/ c+ N7 x
" g3 A- y! i  _. {/ i5 W) E# o$ b, v
  点击修改,打开如下:
- n2 T2 c& L' c
" }9 a: y4 c9 d' W* U9 k[/url]
6 g) G! n; ]! ]$ J$ w' G+ A
- }) [  F' S5 [" O7 |6 ~ # Z0 |# i  y* W0 ~1 [
  同“JS接口安全域名”,格式为前面提供的URL的域名部分,如xxxx.app.easylink.io,其中“xxxx”为FogCloud上创建的微信APP的id。
- d. P/ F5 l/ \% b8 T3 m- O
+ `. E* O# P3 p! l1 L0 l6 r: V" a8 q1 F
第七式:使用MiCO SDK开发RGB LED灯的固件
0 F1 G- j, L" F" E8 P7 Y% [4 R  (a) 登陆MiCO开发者网站mico.io,去MiCO社区注册账号,并登陆;
9 G! j$ c0 L3 B) |7 L& p+ H) A% {8 O- ]/ N# A
[url=http://mico.io/ask/uploads/article/20150723/3c04c03f3d922eb74c06906c610b9290.png]

* m6 _1 h8 d1 P( h; ^- w5 c/ t* p! E$ a0 W8 ^9 O$ m$ }- z/ X
$ X" v2 H! {, H/ T
  (b) 重新打开mico.io首页,开发者中心 ==> Wiki中心,下载MiCO SDK。2 t; y) Y0 C( `

% p+ S1 r$ d1 Q' [[/url]' K/ _4 I  C& I4 I* h# q3 o

! T9 F% c' W3 ~+ _6 p
4 M5 b4 ?# p) k  (c) 打开MiCO SDK中的微信开发实例工程:; K+ {' u( X# B8 y$ B" G- l

! e7 H" D1 c% s! t3 \; N' h[url=http://mico.io/ask/uploads/article/20150723/3c6381767bf00833cab64ed4c37df2f8.png]
' q7 t2 |$ Q- x! d; z

2 N5 B% ]8 a( j! l* V0 |
1 O* r) ?9 M7 P) A3 Z, G    1)开发者手中拿到的可能是硬件平台可能是MiCOKit3288或者MiCOKit3165,在编译工程时要先选择硬件平台;$ C3 O% z& S2 }: J6 @
    2)将FogCloud上创建的产品ID/KEY写入固件(必须替换):/ H6 D+ N* n! b( h

/ X2 W2 W  U* A' |6 J! k[/url]  ?  t; R8 V  J. s6 j/ h$ M

4 q6 K0 S2 [. K. U0 y6 n# J( F5 M& Y
; C4 q" y/ A& o2 y# y4 E+ ]    3)修改版本号,这样才能把新的产品ID/KEY烧入FLASH
8 Z6 D7 [2 x% {! ]2 l2 m$ Z- V4 o) s* B
[url=http://mico.io/ask/uploads/article/20150723/1661ce047fc9ea5e465db04acd59c24e.png]
# h0 a7 a& P# ^, p; q

, {: S3 H5 y5 d% |, l4 X - k* F  j/ Q+ v# ^6 |6 ^+ X
    4)添加LED灯控制代码:
, i  E2 u- o3 J* D# g, y% B- _% P
3 M3 a- u7 d( b[/url]
* m( @4 @) @6 U
& g" n! Y6 f) a  b9 W1 l
# f  `* C& B# s, f& {% e    5)改为收到云端消息后,解析JSON数据,并控制LED。/ ~& B' A& }9 Q1 t& x

& s2 A+ |7 Y" C[url=http://mico.io/ask/uploads/article/20150723/fb02025e4062a859d0d33d4178cd156a.png]
* W8 Z! f- x' r' f+ E) v; C" _. N
: @. g5 o1 ~$ i9 {) O
! d9 Z: Y8 l- M
    6)错误代码参考:在运行过程中如果出现错误,可在user_log中查看错误代码。# w! }' r; ?) c

2 n" i( J( R+ j4 b2 \9 x; \0 d[/url]
9 G& h/ ]6 T) |0 a  Y* h3 I6 z6 r" U4 Q7 p; Z( a4 d0 d- {
; P9 l& q2 Q& b/ I
[url=http://mico.io/ask/uploads/article/20150723/9f6828473efaa4a01ae4434c236a2ef6.png]
  t; t& N& d5 ^6 B& _! G; `
" m4 t% ^8 k* ~

/ r9 x7 N( t% Y6 @- Y    7)MiCO SDK固件烧录。(详细固件烧录方法及步骤请参考http://mico.io wiki中心)
. ^( @) V+ P- g1 p. c选择使用的烧录工具J-Link或者ST-LINK:/ E/ d9 k5 A3 p: o* Z3 R

3 b- ]3 X# y' q( X& H0 C# M[/url]
3 L4 e8 c* `5 [! \* j4 ], b5 O, T- E9 _

! N  R% E: B3 U- T  编译/连接:& k# O1 Y! S0 Z8 G: A

2 G, p0 |, d7 x4 e7 y! t/ u[url=http://mico.io/ask/uploads/article/20150723/14ee93da638bb344905c2f6c7a8481ef.png]
1 O/ o& b4 u7 M1 v" i1 y: _
% T1 d4 d6 d  |- y' A

; \. H/ i+ B! L5 H0 l  烧录/下载:$ S5 K6 J% Z% Z3 q' I$ f
0 v% L: O. }; T! i6 ]
[/url]
1 Z9 X. c* @* m8 r5 P( w8 K, r3 V" [
1 B/ D  F' Y) P; n4 a0 d
第八式:用网页编辑工具(sublime等)开发微信APP代码5 Q5 R* @: G/ Q( g
以下为核心代码及其注释
1 g1 k8 e1 X% V" ]  S% r//应用程序入口在application_start(void),一系列动作(如配网、连接云等)以后,用户程序入口在这里。
7 r( [  X" h! W6 vOSStatus user_main( mico_Context_t * const mico_context  " F" L1 w0 V; q7 y$ P- Q
{, \; ~" q' H5 y* f1 y7 O4 f- J( z
  //user_log_trace();" o( S  H+ r  O* b
  OSStatus err = kUnknownErr;& R9 h4 z# b0 F9 S
  fogcloud_msg_t *recv_msg = NULL;//接收数据结构体$ ]( |) d5 u6 P! D: o
  json_object *recv_json_object = NULL;//结构体内包含json数据格式! J$ J: h+ Z$ E! I9 R0 R
  /* rgb灯的色彩模式采取h***色彩模式(色相、饱和度、亮度) */
4 X& r- g3 t* K) V  bool led_switch = false;//rgb灯开关
  D. O% N' D# ]! n0 p' T  int led_hues = 0;1 y8 U; |; E5 g" M0 E" c
  int led_saturation = 0;, g3 |( b: R/ B( Y8 ?0 R
  int led_brightness = 0;" F* ^2 N# O* j3 Z" V( G
  require(mico_context, exit);/ m6 `7 {  {. y* Y0 s: R% t% z7 A  \
  h***2rgb_led_init();  // RGB_LED初始化1 a0 D# n9 S2 P) a3 n, |. O: d5 f
  while(1){
0 `  h2 l$ Q1 A9 {( @5 z! G0 n    mico_thread_msleep(100); //延时100ms3 }' K1 `& Y  G4 `0 x: Y8 C* w
    // 检测 fogcloud 连接状态
1 S& Y7 H2 g" M4 l  V9 u    if(!mico_context->appStatus.fogcloudStatus.isCloudConnected){5 k% B' A$ X% H  N: g5 p5 l
      continue;
: @$ Q% E- ~! A- t3 C9 @+ ?    }
, b& n2 y! T" E  x    /* : W* j& a) r. k! Y. b/ w6 C: S4 Y; r
      接收来自云端的数据* P7 |9 o! d! u9 u: h- `
      recv_msg->data = +6 n7 _! S, d0 I4 n9 `! y0 e
      topic表示模块订阅的MQTT通道名,data表示云端返回的数据
* m0 J' F* K2 L6 ?& a0 h$ Y     */* {# U$ X7 z/ k8 J. v! S- y
    err = MicoFogCloudMsgRecv(mico_context, &recv_msg, 100);
$ A- y* F8 }7 t# L+ N% ^" ]& b    if(kNoErr == err){  A6 s) T: k2 `* Z" `
// 打印  例://user_logtopic[30]=[de54a8ea/c8934691816b/in/write]data[23]=[{"rgbled_switch":false}]! ]6 D- o; h, s, _/ Z- }
      user_log("Cloud => Module: topic[%d]=[%.*s]tdata[%d]=[%.*s]",
7 G9 " N) B: d) V5 J               recv_msg->topic_len, recv_msg->topic_len, recv_msg->data, 9 ~# D( A7 d3 \+ |4 u
recv_msg->data_len, recv_msg->data_len, recv_msg->data + recv_msg->topic_len); & x0 b4 z# \, F" ]
// json格式的字符串数据转成json对象
8 J6 R0 }3 S+ D  V: h3 t; @! R      recv_json_object = json_tokener_parse((const char*)(recv_msg->data + recv_msg->topic_len));( s# ]/ g* r, a7 F6 h1 t( r3 d1 q
      if (NULL != recv_json_object)
3 s' u3 q( W, i7 r0 N4 [1 K3 K4 T      {   n  }6 t9 N5 F/ L9 q5 K
        //根据键值对遍历
8 f' f9 C* n2 l0 S+ A' g        json_object_object_foreach(recv_json_object, key, val) {: C; J4 J2 r$ n+ S1 B
          if(!strcmp(key, "rgbled_switch")){
) i7 ^0 V- [! d% N# X. K//如果键为"rgbled_switch",提取值“开关值”
0 y; g" n% f* h+ S3 G# r            led_switch = json_object_get_boolean(val);
4 F- y. S. B1 @; |& h* s4 {          }6 _2 e2 e  k/ p7 ^
          else if(!strcmp(key, "rgbled_hues")){7 a6 J/ j( c9 _8 K9 I
                        //如果键为"rgbled_hues",提取值“色相值"
/ z) D4 g+ F. C4 Y            led_hues = json_object_get_int(val);0 C3 I* a5 Z2 H( Q9 S
          }2 y, C- u% L, p" u' N+ R5 S
          else if(!strcmp(key, "rgbled_saturation")){+ @# N: z/ g* G' b4 V
                        //如果键为"rgbled_saturation",提取值“饱和度值"
: Z  f5 \7 ]! b' F5 `; P            led_saturation = json_object_get_int(val);
3 f' j- b3 O1 u          }" f3 D9 s, ?# j+ i; e5 ^
          else if(!strcmp(key, "rgbled_brightness")){
. P( }+ ~" a8 @- [8 ]; S% b//如果键为"rgbled_brightness",提取值“亮度值"
4 n* Z9 t* E$ ^2 d            led_brightness = json_object_get_int(val);
7 I! Z2 J% ]" K9 m: X) N          }8 r; E" P$ A& X3 Z3 i2 l" C/ ^) J
        }' w9 q* v$ G! p
        // 控制LED: G& F. d1 u$ U' D+ b/ q* u5 a
        if(led_switch){
8 S0 s6 M( i  L' D          h***2rgb_led_open(led_hues, led_saturation, led_brightness);5 I5 ]- r/ C: _8 a- Y  |
        }else{/ f/ S2 O# A% |1 ^' Z) N+ B
          h***2rgb_led_close();  // 关闭
+ R# h/ E5 ]7 `+ [' p& a; f' s        }
0 ?4 y& p; X8 [& f9 p/ A        // json对象内存释放6 k! G  L! x$ r" g' b& ?6 g
        json_object_put(recv_json_object);& b' x( i9 h9 z0 N: \, B
        recv_json_object = NULL;
+ k7 T; a; S6 r' q      }9 {/ N& |* Z5 T: T7 v
      // 结构体内存释放
, \6 g9 G" P. U, C! @      if(NULL != recv_msg){
- {1 l9 G# D9 {' z: V        free(recv_msg);5 X6 y! J! Y/ Q% @
        recv_msg = NULL;7 }8 H5 B& K5 e: g6 u- v# O
      }
  q: k7 a( \; e' m    }
: ^# t* m  P  [- a+ p6 V  }1 c. }* w% X: N& s/ E2 S0 ?
exit:
" H# x* w% d  [  user_log("ERROR: user_main exit with err=%d", err);" ]- s4 Y% w9 H- ^( ?
  return err;
9 k/ y# y8 R- g% l6 F}
# j7 B7 P3 [4 Y9 \$ h3 P2 v2 G) k; R: ]
. ~& G$ t9 V& y8 L% j
第九式:使用Github工具托管APP代码% b, X5 S2 |$ d2 m4 f& Q
  在例程包中(MiCOKit SDK的APP目录下),找到微信APP控制页面代码(index.html和yourID.html),将yourID.html.重命名为你的产品ID,如cabca380.html。拷贝这两个文件到本地git仓库,再同步到git服务器。同步方法详见附件——上传文件到GitHub.zip。+ L% q' E, D, ~+ _+ s
" c; J. G" z) C' q1 k! e& G/ a# Z) j
[url=http://mico.io/ask/uploads/article/20150723/97411f3674d23cb747a33172ee9c1284.png]

/ J5 V* k  {8 D3 x* |2 A' a3 |3 ~% `% A  I& G2 v5 Q
: ~' ^8 j+ c+ V/ c7 Y) w
  index.html   —— OAuth按钮跳转到该页面(一般为设备列表页面,可不做改动)0 \* a4 A8 d3 B' _/ Q

- S' t8 G( Y  s3 g# A- s7 g4 c! G[/url]8 T% k5 L2 g3 m: `  E: R9 N
. k8 X2 s  z" Y% a' E- `) f

1 o+ W* ^4 U# t$ V  xxxx.html   —— 设备控制页面(其中xxxx为FogCloud上创建的产品id)1 X, _" l# G: Y; ]. c, w

$ ]9 d, l" K" e6 M& M% Y: P+ x9 S7 T, w5 z: O
[url=http://mico.io/ask/uploads/article/20150723/bdd3e767bff5fdcf06f16b6ee478f57e.png]

% _; v7 t* c2 g. y, j% |
* P! f5 P$ n. `( d/ }2 Y* l" d) d' r1 l& k& G/ V
  详细代码见附件代码包,部分代码解释如下:
% k, T0 d5 @& C9 L. w   r- I! E! I# G. h# C

2 e2 o) b+ Q7 H8 \6 E[/url]7 b! Q7 J1 e$ \5 b

3 p4 g4 g" v6 l% f9 e: |. x
  |+ {/ u3 @) m* j. n! S[url=http://mico.io/ask/uploads/article/20150723/041017556fe9d8bf147cab201e4055c6.png]
' q) ~& z$ E; N& d0 T$ }; d
. r& S! n1 q, ~7 C+ E, x

- f( V! V$ l9 n! _# J- Y6 j  w5 d. Y: i* z8 d/ b
  修改、并提交代码后,如果没有配置WebHook让FogCloud自动更新代码,则需要到FogCloud上手动点击“发布”按钮更新代码,并通过git提交记录确认是否更新成功。
% N( X& H$ u$ g7 E
" Z3 C( O2 A- x
- b+ e% x, G; u, W3 [7 j  S8 H第十式:FogCloud上生成设备二维码
4 f) U( F+ I- f5 j  (a) 创建新设备4 q! r* l& L4 z+ K! C; m
% \5 _; W3 f" [( F; P2 E2 M
[/url]" w1 A8 S, M6 j& u4 u! ~6 h7 a
2 g& `- g) e0 M) l" P$ ^
- P3 Z; ?* n5 i  v, I1 \7 R0 Y
(b)填写设备MAC地址(由小写字母和数字构成,设备上电后会向串口发送MAC地址及其他数据,可用串口工具查看)接口创建设备。
7 ~8 D0 r1 l4 ? - J( ^8 n; `: i- v* m7 v0 E
$ ]' @8 W5 l7 ?) Y( C+ K
[url=http://mico.io/ask/uploads/article/20150723/60addb425f19b481c3d2ea9346bbd71f.png]

% [3 m7 e8 b+ M/ i1 G" r; R, |4 i. _2 @$ h  P2 l0 G; N; E1 g
7 f. X) T3 S# o8 d5 j

6 I; n) _& q2 P  d) i  (c) 为设备生成微信二维码4 v' p- q0 z' |% G# J/ `
  点击“同步到微信”按钮:  $ B+ _' c* t2 @; H
: [& N% R) K+ I8 ~4 D  P, E
[/url]
6 X1 T  }$ H1 U7 Q, [7 H+ S
% J1 K! F+ V1 j  Y/ d  S6 B- x
: |9 h2 b- }" X1 ?+ b  选择创建的产品和要使用的APP后点击同步按钮。
0 h; Q" ]: b+ `2 f! n3 |7 \6 D1 l; ?  V1 @
[url=http://mico.io/ask/uploads/article/20150723/8391b8371fe9a3cf4338e65240989bf1.png]
4 A# B. O: d$ [& U- m

' E' N6 u; [2 x # t+ g7 H' x5 N1 O1 x. V7 H, A
  成功后提示:{"result":200,"message":"success"}
( W5 y; R4 R$ ^) e, S- m+ w4 n
) @; J3 U- T1 s$ d5 q1 C2 t[/url]) [4 T& O* g$ _& P+ U6 A
/ r3 C' i# P0 N3 ]2 d6 |6 U
! d0 j! O" Y0 V  M8 a! ^

  x: o$ `( n& P% Z' [  极少数情况会因为微信公共平台延时的问题出现err:500问题。等待几分钟后重试即可。
8 K9 y$ A2 |1 b$ t' X7 u; t  返回到产品界面,可看到你的新设备。 $ t, N7 I# \+ m4 L

9 a7 K* Y5 N8 \2 d6 ~6 {[url=http://mico.io/ask/uploads/article/20150723/fb1885f6aaad37a08f169dbe29946d54.png]
' F5 _# G( O* K. b0 S

2 I9 i' V6 n: e, r7 P% f) U9 {) E# q4 P+ Q8 z1 ]4 t. _
[/url]
6 \- O& B; L# A8 X- X5 [9 A5 x4 D+ \
  ^8 h$ v: r6 z9 B, c( @
2 j2 {4 {" O- Y3 `: I7 X
0 o* V9 e7 a: B/ _第十一式:使用手机微信扫码,测试“Airkiss”配网功能以及设备控制功能。9 V: F( Q; x+ c7 T( ^
  (a) Airkiss配网
' L6 u; r) Y7 W! [/ x& E, b5 W  Airkiss技术可以帮助你的设备在没有人机交互的情况下智能配置当前Wi-Fi环境的SSID及密码。(假如你的智能设备是一颗灯泡,总没有屏幕和按键让你输入SSID及密码吧)
) B+ B+ k  y6 I  d6 i* \按设备上的Easylink按钮进入配网模式,底板上的LED(D1)灯快速闪烁;8 ~- c- l- o5 _9 N# n) z. i' T
手机输入当前所在环境的wifi密码,点击连接,成功或超时会自动跳出该页面。
' T7 P& l) q& n; a
9 P3 W& [" _6 M. n; q/ T# ?[url=http://mico.io/ask/uploads/article/20150723/18e3a2ba0846a30f245578b054272b7d.png]
/ c3 U0 J4 D3 O  v
0 F3 a- R  d& _8 m8 I5 ~

; t2 F  u6 \! A- B  Y! F  (b) 设备控制
3 R' p' ~/ ^! |8 g  Airkiss配网成功后会跳转到设备列表,红色圆点表示设备不在线,蓝色圆点表示设备在线。若配网成功后设备依然显示设备不在线,可点击右上角刷新按钮。点击列表进入设备控制界面,点击控制按钮,控制MiCOKit-3288扩展板上的RGB LED灯。5 H# w2 R: H% w6 v) c8 L. `
已经配网成功的设备不需要再次进行Airkiss,只需点击测试公众号中的“Devices”按钮,进入设备列表,点击列表进入设备控制界面,点按按钮,控制MiCOKit-3288扩展板上的RGB LED灯。
$ S7 L% o- M: F" m1 E; {7 p8 y6 n3 v
[/url]
8 S. i( K  S6 A1 H" |& w& M
% E( U1 n) c2 w* y8 \
6 F' l+ X; x, n; C! H[url=http://mico.io/ask/uploads/article/20150723/13e7c77638ede00ccf82d4fb10429ab2.png]

! d- s: g9 w; W1 n
  p7 |: {8 |2 i+ F  \, w
9 ~7 n4 T' I' `- d, {) B  如果您完成到此步骤,那么恭喜您大功筑基已成!!
- a& b) h/ [0 f3 V) Z9 Y  武功在手,天下我有!+ m& ~6 {1 r& Z% H& s
  祝愿各位米客能手持MiCO利剑,在物联网智能设备的新江湖建功立业!

+ h" ~5 E2 s# c- f& ^
4 b! B) {* w6 o' T2 c4 s* l& {另:源代码地址 http://pan.baidu.com/s/1bnsGEy7$ }% |' P+ O0 n6 p8 K
+ G, M5 f  g4 G" k7 V5 l1 M" E
MiCO团队4 ~  v  A' F, a% \6 G! Y7 h7 ^; N+ P
敬上!7 ]& Q6 ?. O1 {2 Z0 m9 _5 Z- x
[/url]
, |% I7 t  w* J
[url=http://mico.io/ask/uploads/article/20150724/02263811253059862ccc8df321bb95b5.jpg]0 g& ]' }: {# w4 K: t: z

/ f. x/ r4 t" N5 j; y0 o

0个回复

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

本版积分规则


关闭

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

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

GMT+8, 2024-12-23 01:51 , Processed in 0.675128 second(s), Total 68, Slave 49 queries .

Powered by 电子发烧友网

© 2015 bbs.elecfans.com

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