1

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

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

micolover ( 楼主 ) 2015-7-24 10:52:41  只看该作者 倒序浏览
本帖最后由 micolover 于 2015-7-24 14:47 编辑 0 t; D- [  h* k/ m& F+ ]  \

( I  p+ ?; r4 F& o+ n前言
3 t1 W  h! ~4 x, o1 k  大神玩转MiCO好生羡慕9 @1 N' h1 c3 T9 T
  菜鸟低头不语无从下手8 }' w  }/ T+ w0 d( V& W7 f
  别慌~看完下面的武功秘籍,你也能成为一代米侠被人仰望2 o3 q3 p. w2 t/ y, q
) U# L! Q) i! z: @7 u7 d, J
一.微信控灯十一式6 m1 N& B7 O' _* l6 w+ b% e/ V
  第一式:注册开发者账号        ( j8 j2 @' ~2 ~; `) D
  第二式:使用个人微信号开通测试公众号        
( G$ v4 \$ S1 a) K4 g; G  第三式:在FogCloud上创建、定义自己的产品        8 p, O& N  V3 d$ g5 y
  第四式:在FogCloud上创建产品对应的微信APP        ( E5 p, n. @1 y  ~8 J) \
  第五式:Github上创建微信APP代码托管仓库        6 V9 C# |' \2 L( H7 o" N$ P& Z
  第六式:配置微信APP以及微信测试公众号        : L( H/ d* [# U* h9 B2 J* v
  第七式:使用MiCO SDK开发RGB LED灯的固件
* k) J1 _: N- D  第八式:用网页编辑工具(sublime等)开发微信APP代码        % X& ?9 r6 x8 w& \' O; b
  第九式:使用Github工具托管APP代码        
; Z5 k; }$ [; Z# r% ]  第十式:FogCloud上生成设备二维码        
( J  E: ^% h: L8 `- Z- C* e7 m( T  第十一式:使用手机微信扫码,测试“Airkiss”配网功能以及设备控制功能。         
( o- f5 K! {0 X0 i+ O$ N8 X二.基本功
* D! Q0 r6 g9 [6 h  注意:练功开始前请确定射频驱动为最新版本
/ @  l; J# @! R5 j  版本查询及升级方法请参考MiCO社区 → wiki中心 → MiCOKit板块射频驱动升级
4 v% B7 c4 q/ `5 k. p, i& H& L  1. MiCOKit-3288开发套件;
% ^; A9 ^" ?" `& ~- p; r- `# F/ i  2. 开发工具请使用IAR7.3版本及以上;
3 v1 O# t" T( R! L: L' m/ |  3. FogCloud开发者账号(Fog云使用、开发必须);$ m: o) J5 X5 A; S) c
  4. MiCO SDK v2.2.0(固件开发包);2 r3 m; {. ?9 Z: A' N
  5. 个人微信号(开通测试公众号);* v2 v  S* K. o: y4 J7 t# {+ Y5 {0 e
  6. github个人账号(托管微信APP代码);
( H3 U5 U3 I! t* E' t  7. 网页编辑工具(sublime等);# l) l' X6 G8 j1 v
  8. 大致了解MQTT协议及json格式。5 n  e8 u  Y: {) }% n# M3 P
# O2 e. g/ `( h" J
三.招式详解
6 w1 ~9 D, M* C* S: r- w6 a
5 G6 [2 q" @( j; @1 \第一式:注册开发者账号
* E8 s' }( f8 P; h" }& i. j. g1 ~  登录www.fogcloud.io直接注册账号即可。该账号将用来管理你的产品及APP。- C/ \- z* W4 m; Q) q9 C7 V6 O+ M

- Q. `) k) l0 \: }8 T[/url]
7 P' ?" ], @7 Y) n! {- e7 O, r; V/ u; c1 O; c" ~$ L

  [7 T' E( I& Y" [* R3 `( v& z' u

( w3 f5 U$ g1 B3 D' h( e第二式:使用个人微信号开通测试公众号' A: G8 n/ c$ S0 H+ 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
,点击登录,使用手机微信扫码,进入后即开通了测试公众号。
  ?% v* A9 J- d9 n( G/ B) B
3 i( L' ~4 y  i[/url]
3 a6 B6 ~3 ], r  W6 b
8 i+ X8 {& a6 f3 z1 J
* W. z( W$ K" q" r0 R8 V* l  获得微信号、appID、appsecrect,用于后续在FogCloud上创建产品对应的微信APP。
1 C+ P+ o- J( n2 |! r! O" x2 Z& r3 N( \) T, x6 w
[url=http://mico.io/ask/uploads/article/20150723/923e41bc3c91f99ba548d65e2ddd7ec6.png]

6 m  ?- X1 j7 p: ~+ Z
9 ^3 c+ t( y' E
0 \; L) [, }& y5 {4 B) \* ~第三式:在FogCloud上创建、定义自己的产品7 k$ L* c: K/ j$ C* p) T2 D6 ~

9 N/ u+ t# M9 @. }% m/ L# j7 \[/url]
- _; W7 z1 G' {" l! X' J" u  s+ V' `" {3 M1 M
% W& Q3 _( r* Z- B- N/ _8 f
  根据提示填写相关信息,创建完成后,如下+ _+ y3 [7 Y/ o

* T: k  _4 B7 C: ]- Z, `( e[url=http://mico.io/ask/uploads/article/20150723/ac518bc12959f06f82624e4d9e6fc841.png]
/ d6 D! h  w9 F1 f# X0 V, t8 c
1 h! ?9 k' l5 z& B4 H" ^

# z: D/ E$ U% i* I: u& }  点击产品名称,进入详细信息:) N- `/ W# I) ^4 J9 R
* R& a9 s. ~3 O+ T9 U' q
[/url]
% y0 u/ q- ^" G8 s% Z6 c- p# E" n* y# Q3 D, ~& V) E+ B& b7 d1 F
# `; m0 z8 p; |
  产品ID/KEY会写到设备固件代码中;
' I9 r  P1 q% a% g1 H  创建产品的数据模型,数据模型是用来在云端定义产品功能、性能等特征数据的标准格式,可以储存设备监控、收集、控制、用户行为等数据,从而对数据进行分析,提升产品服务,开发案例过程中定义数据模型,能够有效帮助开发者将APP、云端与设备端的关键功能、特征数据等同步,避免开发过程出错。
5 @; C1 e: X6 X8 U- P3 L; ?) M9 j0 r
6 a( |- T  |/ o! }[url=http://mico.io/ask/uploads/article/20150723/419d8575656778d542b24f70ff5d4aa2.png]
6 k* H% P/ M) z0 n; t6 A
6 ?! _' b  z4 a- N) _2 Y' E
9 R; O- `$ z2 P7 c+ T
  本实例仅控制MiCOKit-3288上的一个RGB LED灯,所需创建的控制数据点有:
* w! _4 Q- P; R2 j  u. M( \     1)开关(rgbled_switch)                     读写属性为1         时间序列为否& ]2 S0 J1 o6 r
     2)色相(rgbled_hues)                      读写属性为1         时间序列为否5 z' Q/ F8 \, o3 q; s. l1 Y
     3)饱和度(rgbled_saturation)                 读写属性为1         时间序列为否
& c, O! T7 d1 k' L- E% Z/ N     4)亮度(rgbled_brightness)                  读写属性为1         时间序列为否$ O0 k( x: J) M+ s/ k# u
  *属性名和描述可按个人习惯添加
' v$ c$ x- T* [" J  注意:在创建数据点时,“时间序列”选项:选中时云端保存历史数据;不选时云端只保存最新的数据。
& a6 m9 ]  O) m2 e, q6 s. {, H! P7 Y  数据模型的具体作用在后面的进阶教程中详细讲解。
! L: o5 ^+ m% f3 A 6 r; M+ m* o1 y8 j8 p+ }  I
第四式:在FogCloud上创建产品对应的微信APP
$ l) z$ s8 w5 [1 R8 }* Q7 p- K) c
: q- L0 Q1 e  D1 Y! y% u+ A6 |8 x: h. D# z) L$ [: p, }
[/url]. ]- F6 n) _( {% u+ q$ M$ a
- ~$ v3 G$ F2 {3 s

7 ]1 D+ Q, n# D! U: i! \2 f  根据提示,填写相关信息,其中微信号、AppID/AppSecret从步骤2中开通的微信测试公众号中获得。
( f% u# x* u! l9 A9 D5 ^5 {
/ W5 `9 G0 ~1 L% ?% |8 A) j[url=http://mico.io/ask/uploads/article/20150723/12165d0d0d83feb3aba6851cc9588c08.png]

$ l1 G) N: d9 \
( k; v/ e9 O" K5 y; A9 _, _2 v; Y9 c. Y' U3 u+ C! j
第五式:Github上创建微信APP代码托管仓库
3 c; u$ t) U  H( a, l  请登录github.com自行创建新仓库。并克隆到本地,克隆方法详见《上传文件到GitHub》。该步骤的目的是获得一个可以在任何地方访问的git仓库,后面会使用该仓库托管微信APP的代码(其他类似git仓库托管工具也可以)。
% N$ s. z8 W! S: n& `( v  t- e3 W' }$ f9 {1 f4 {
[/url]
$ D* R7 `' o. Q: a" K" y2 Y( s8 J2 C- I7 O, L

, v( U  ?  P. ]3 T9 t) `/ j! k3 L  获得仓库地址,例如:https://github.com/wangeshen/MiCOKit_test.git
& T2 H. e7 J4 F! z
; H0 a( z: h6 i/ J% L5 b* u% {. z1 M
第六式:配置微信APP以及微信测试公众号
! E; ?/ Y7 V9 a1 d5 u  (a) FogCloud上的微信APP信息:- g2 b8 H& v9 `) J7 W* V
3 o. Z/ k, v0 ]0 C  D4 }
[url=http://mico.io/ask/uploads/article/20150723/3e552dc6f9c1097d68b01b4643a04921.png]

0 g1 e/ P" ~: f. ^1 x) Y3 X
8 R! K3 ^1 }/ L, p* B5 N- N7 J) n
4 j  z8 B4 Z* q. z  其中URL和Token会在后续配置微信测试号时用到。  K, J" x3 P3 G3 z, q1 X5 o! y% L0 ]
, K. L4 ?" s2 J, x0 }# ?2 F, }
  (b)Git部署(同步微信APP代码到FogCloud)
. H; W' `& r8 o( S" @! C
9 V  c3 D$ W$ U6 v% K[/url]
" D: E' u$ O! }/ o0 T( f+ I0 t
, m9 e  P4 N  G/ V + P6 y+ B  X% {
  其中:* J' q" w( }/ E
     Repo即步骤5中创建的github仓库地址,填写后保存;
9 A0 C  V4 ?) j# G- u5 |     Deploy key和Web Hook Url可添加到github仓库的设置中,以自动同步代码到FogCloud;也可以不添加,但是github仓库中代码更新后,需要手动点击“发布”按钮来同步代码,同步后右边可看到最新的代码提交记录。
9 J2 H4 r- h" l7 D " H8 m7 B$ V9 y4 k: j4 k
: V% H" @1 _  R& o" K
[url=http://mico.io/ask/uploads/article/20150723/47bf7c17eb7ad746792160a06f14ab20.png]

" m# R* t: h) L+ h) f6 @$ F" y5 T, |8 U, \! I: }. z
- R4 p7 L. P) G7 p7 C
  (c) 微信菜单管理
5 @$ q; M6 V9 P5 [, c* p9 \  通过FogCloud提供的微信公众号首页菜单定制功能,方便的定制手机端微信上的控制界面及功能;至少包含“Airkiss”按钮,打开微信Airkiss配网功能,“OAuth”按钮(名称可自定义)进入设备控制。
4 v9 q4 \, e( r( t 9 g0 A9 Q) H* V$ Y
( ^1 i9 p, t2 \. x" B$ d- V  [, b
[/url]
, E0 g0 k2 ^! M8 y8 F0 X  T+ M
/ B. Z" y) F& C+ P$ R/ [( G9 r/ S+ j  Q0 E, z# P, w- z; X3 o
  (d) 设置微信测试公众号 URL与Token在创建的APP信息中可以找到' ?) {: I2 D: C3 Y
  修改配置信息:
2 I) y6 y4 y0 Z/ q7 |  URL一般为:[url=http://4addb71f-1b5c-xxxx-94c5-f/]http://4addb71f-1b5c-XXXX-94c5-f
... ylink.io/wechat.php1 \4 g% \; H) {/ ?( a. }1 p, V% l0 Y
  下划线部分作为JS接口安全域名和授权回调页面域名。; V7 i( C* b5 @
' ^* o% j$ H' W( e- H$ e' O
[/url]5 P9 b; E& {) u! e# ?) F
1 L. G; W$ r) x4 p6 n
( ?+ [( P$ e. _; Z1 u: j! [
  开通所有测试功能,并填写网页授权域名:! W0 y; t1 X) x8 c

. s. z$ V3 f0 J+ s, d* {; Y/ z[url=http://mico.io/ask/uploads/article/20150723/4147bd2c388956cee39120fa591cd440.png]

0 `, X  ~  o8 }
1 e1 c6 o! m4 M; N' ^+ ^" k4 E
' r, x, }0 k) t  i- K  点击修改,打开如下:
5 T6 w2 y. G' L  w- J9 _) V9 T: p0 ?
[/url]9 d( B9 |3 j. D
1 f7 F; v7 t% h5 A' }. h' Q" ]5 G: N

8 h+ C' X: v3 ]: `( t1 w8 J' }  同“JS接口安全域名”,格式为前面提供的URL的域名部分,如xxxx.app.easylink.io,其中“xxxx”为FogCloud上创建的微信APP的id。
2 _3 h# u, H0 z. \$ H
! x% @5 G/ }# R6 f) J) [) i
% P# P% d: l7 y第七式:使用MiCO SDK开发RGB LED灯的固件
6 y& c9 Z0 I: O$ c, l; V5 f  (a) 登陆MiCO开发者网站mico.io,去MiCO社区注册账号,并登陆;/ }9 n/ }" C" h$ q
5 m  ?! o* _6 _: Q2 e
[url=http://mico.io/ask/uploads/article/20150723/3c04c03f3d922eb74c06906c610b9290.png]
3 q; ?' l6 A$ f
$ J$ W; E5 k( a+ o- Z1 W
5 L$ m+ s6 L5 Z$ W2 P, A
  (b) 重新打开mico.io首页,开发者中心 ==> Wiki中心,下载MiCO SDK。
8 Z; W; B1 C' a  T9 N4 o: J8 s; f
  }8 I! x, T, {6 c6 e[/url]
6 Q$ @! T* d+ J- c+ u; b' V0 r. j, {' `3 U3 h9 H

" i! Q& [/ U' C& l& m- X  (c) 打开MiCO SDK中的微信开发实例工程:
9 G( J) q& e, l* F5 w
$ X* g6 Y3 Z, Z[url=http://mico.io/ask/uploads/article/20150723/3c6381767bf00833cab64ed4c37df2f8.png]
% b, [" o8 N( ?' H' B

5 [: S, J9 x3 D: K. L : I% W* A3 j! W$ B4 ?
    1)开发者手中拿到的可能是硬件平台可能是MiCOKit3288或者MiCOKit3165,在编译工程时要先选择硬件平台;
7 |: F8 U7 v) p2 W- u$ F+ H- R    2)将FogCloud上创建的产品ID/KEY写入固件(必须替换):
% a  B& z6 F) h" B7 G9 B$ z2 T4 @
[/url]
' r3 b1 g! m' N) Y  B2 r' @0 a: Z# G3 X3 S3 f
' \- y, {: h/ S4 y% H; m# q# M
    3)修改版本号,这样才能把新的产品ID/KEY烧入FLASH. n7 Q, w$ ^% J  @. c0 k, U; R' C

6 P) t8 Q( {2 C0 K  l: C[url=http://mico.io/ask/uploads/article/20150723/1661ce047fc9ea5e465db04acd59c24e.png]

9 S/ V2 u: ^6 f8 t" A4 e- y
% P( N6 K9 O" O
* V, I' ^. M% j7 {# x7 G- {. l    4)添加LED灯控制代码:+ i: ^( y8 X$ k) X; m% Z
, S5 g8 f* Q* H' i% S
[/url]& i7 c! F3 ~+ M2 M2 f3 `

1 R' l$ `  X% |1 Z - e6 m' b2 O8 z
    5)改为收到云端消息后,解析JSON数据,并控制LED。# |& F/ o+ J; p/ Y
; [; T/ V( n! K# ^! P9 F
[url=http://mico.io/ask/uploads/article/20150723/fb02025e4062a859d0d33d4178cd156a.png]

3 B. R" x! w  A
" i! q" k6 }' q2 U4 g
3 y; Z0 n- X" g2 H! x, ?4 w4 D% E/ [    6)错误代码参考:在运行过程中如果出现错误,可在user_log中查看错误代码。
7 P' }+ K! ^- o" H; N$ r0 _; s# T+ {
3 K7 Q1 N& X7 S: F[/url]
; q5 B: n9 _: i5 X+ _7 p
/ r. C' Y& [- H+ {* V
& \5 E0 e, v6 O[url=http://mico.io/ask/uploads/article/20150723/9f6828473efaa4a01ae4434c236a2ef6.png]
6 b1 X+ M: m2 t1 v

* p. ^& z" x; T& F 6 j* A1 s. }2 i  {
    7)MiCO SDK固件烧录。(详细固件烧录方法及步骤请参考http://mico.io wiki中心)+ p1 N% |. V8 p1 }8 n
选择使用的烧录工具J-Link或者ST-LINK:
/ ]9 l6 \: h7 t* Q8 \
5 i' A% S& S* m! x[/url]( {0 i. N( ?3 ~! T; H8 J

; _8 H- Y% ]. T: P " a. g0 h7 u6 n! J; ?9 p+ i# H4 z
  编译/连接:
% U+ y( x5 D& l
" e+ q+ U; r% t* d  w[url=http://mico.io/ask/uploads/article/20150723/14ee93da638bb344905c2f6c7a8481ef.png]

! p8 g8 M" N: Y2 B8 }. q: t" }( T' ~( |  r8 f! n5 f7 e

. Z4 S1 y& M+ V7 k$ u# N) w  烧录/下载:% H4 v  n" o/ C
" P+ C1 d+ h5 Q8 t
[/url]' \6 M* N, f& S0 `' L$ [
" g% l! N/ f/ g2 q) M; R+ j# u
  A% F" {4 F: [- r: z
第八式:用网页编辑工具(sublime等)开发微信APP代码$ n! g0 V% B" R1 t( X
以下为核心代码及其注释
, }0 m9 k" V1 g! f7 [- d! O! z//应用程序入口在application_start(void),一系列动作(如配网、连接云等)以后,用户程序入口在这里。
7 p4 @# N- L1 u% K1 \' q1 D9 GOSStatus user_main( mico_Context_t * const mico_context  
& o4 t% m) C# V- P/ B{) Q5 a5 d* U+ z7 ^3 ]9 \
  //user_log_trace();1 E5 w; r/ r' k1 U8 ~% n. n
  OSStatus err = kUnknownErr;
8 Y; B" s7 w% X% s. \  fogcloud_msg_t *recv_msg = NULL;//接收数据结构体
" D# y! y8 V0 D/ [' M% w- O  json_object *recv_json_object = NULL;//结构体内包含json数据格式$ @% |% w: g  h* P4 m: s
  /* rgb灯的色彩模式采取h***色彩模式(色相、饱和度、亮度) */
( M3 |& C# o: H+ C1 T1 L! f  bool led_switch = false;//rgb灯开关
& @( W  r* J! r  e' o% e  int led_hues = 0;4 F5 Q+ I. a8 P+ r2 g
  int led_saturation = 0;
- i  v) f; z9 ?1 r4 Q# n* I9 H9 z  int led_brightness = 0;
) q2 p9 u& R$ t5 l1 e1 l, X  require(mico_context, exit);
: w' B3 G. N0 S4 {0 i" `4 U. ]  h***2rgb_led_init();  // RGB_LED初始化$ G) p" a- J; F4 ?; d0 {6 C0 ~
  while(1){# O7 I8 s, o: u/ Q
    mico_thread_msleep(100); //延时100ms6 \8 f- A  \4 s+ ?& z
    // 检测 fogcloud 连接状态/ ]3 ]6 K1 [9 n; }8 o1 i
    if(!mico_context->appStatus.fogcloudStatus.isCloudConnected){+ i# S7 f+ k  y7 B5 W; n
      continue;
( e& W" W! ~% n8 A7 \8 c- u    }
/ ~4 `( `  L! w5 ]& w9 o2 \3 r    /*
' [& G+ Y% T9 O/ s5 g0 t: ]      接收来自云端的数据) W& @; C5 \0 v7 V/ d! g
      recv_msg->data = +
( W) {8 S- D, L4 I$ e$ I      topic表示模块订阅的MQTT通道名,data表示云端返回的数据
6 O9 }9 k% z$ \* }3 |     */3 Z7 F0 @; D3 T8 @
    err = MicoFogCloudMsgRecv(mico_context, &recv_msg, 100);1 i) p2 q: s5 S; N, E4 J
    if(kNoErr == err){
: e1 v4 }  ~" C0 e) f3 p8 v+ x6 J// 打印  例://user_logtopic[30]=[de54a8ea/c8934691816b/in/write]data[23]=[{"rgbled_switch":false}]
5 H% r" |7 A4 x+ u5 \8 r; P      user_log("Cloud => Module: topic[%d]=[%.*s]tdata[%d]=[%.*s]",
3 n; t0 y/ j2 q/ n% p5 A               recv_msg->topic_len, recv_msg->topic_len, recv_msg->data,
% v1 u; Z4 ]8 c2 i$ n1 X, wrecv_msg->data_len, recv_msg->data_len, recv_msg->data + recv_msg->topic_len);
9 i$ M" \4 l# b// json格式的字符串数据转成json对象$ j- M7 l) S6 \& l  A& C5 ~
      recv_json_object = json_tokener_parse((const char*)(recv_msg->data + recv_msg->topic_len));& A0 L' M1 P. }2 W  w) L4 i: E* K" J. G
      if (NULL != recv_json_object)
' Y# f4 @1 c. F) X+ l0 C5 j+ m9 a& o! t      { ( W3 N# Q) [, y( t9 {7 I" x9 _1 h
        //根据键值对遍历! J; v" d  `7 c% G
        json_object_object_foreach(recv_json_object, key, val) {
9 j' n; \: }/ }( d          if(!strcmp(key, "rgbled_switch")){3 P" S( [( {: \
//如果键为"rgbled_switch",提取值“开关值”! f3 O9 D/ e  O/ o+ E- K% V
            led_switch = json_object_get_boolean(val); 7 t& e, `% q: O: Q6 ?
          }6 E2 i$ A+ }0 Y4 e, @7 e2 ]) F
          else if(!strcmp(key, "rgbled_hues")){
/ r2 r$ l: g" S/ Z- N                        //如果键为"rgbled_hues",提取值“色相值"0 s! r7 x' S6 a! ~( ^" w
            led_hues = json_object_get_int(val);9 D2 ?3 a8 p" @7 X! W& X" @5 p
          }
: @2 k8 p1 {, J) {' E          else if(!strcmp(key, "rgbled_saturation")){( b6 |0 y0 l1 Z0 W
                        //如果键为"rgbled_saturation",提取值“饱和度值"
# E; g) ?7 h) n- x3 g& y            led_saturation = json_object_get_int(val);
  _7 `) d3 I" ~: o* F          }
2 q. u: c) V1 `$ N          else if(!strcmp(key, "rgbled_brightness")){2 D" l! d+ d- q, y# X6 T
//如果键为"rgbled_brightness",提取值“亮度值"  q4 L" y. R- F" M. R5 R
            led_brightness = json_object_get_int(val);
$ F4 e9 Z& s  B. d9 R          }7 h& k6 o  s7 z  ]
        }/ P( m6 q6 r  P% L1 o" `% C0 z
        // 控制LED
& \7 ]) n  {9 h8 N" ^) M        if(led_switch){( ^! W. C. n! v
          h***2rgb_led_open(led_hues, led_saturation, led_brightness);
' v  ?! Z( ]9 x# e        }else{$ y0 {  F5 ?" t4 G
          h***2rgb_led_close();  // 关闭
) o1 g( L) j+ f% O        } / I* N* U6 v; W$ Z4 z/ N( j
        // json对象内存释放0 O& [# Y  y" @
        json_object_put(recv_json_object);
1 l' e! ^, ^' ?5 _# H0 \+ `' c2 m        recv_json_object = NULL;5 m, v0 j) I8 {/ }
      }- c6 T! w1 Y6 Z5 J) L9 U' O
      // 结构体内存释放
6 ?; K1 U- r: u      if(NULL != recv_msg){
) ~: L) }" F8 O        free(recv_msg);
* y/ u, W: _  B+ w. K- R        recv_msg = NULL;' x9 a, ?" q9 Z
      }
3 f. B' D% H/ K    }# w# W2 R0 ?; g
  }; m, M" W1 x8 l% K3 g0 F( O
exit:1 v; s" z/ R3 ?. G! D+ A% r/ M* Z8 E
  user_log("ERROR: user_main exit with err=%d", err);( Q# Y; z% E) S
  return err;. G0 @* O: I, h- ]; `/ w
}7 J6 a! T. l) v

0 `  M: [1 P6 M# b8 ^; Y$ c6 w$ r  k
第九式:使用Github工具托管APP代码
0 Y$ y- |( g; `! r; ^* D  在例程包中(MiCOKit SDK的APP目录下),找到微信APP控制页面代码(index.html和yourID.html),将yourID.html.重命名为你的产品ID,如cabca380.html。拷贝这两个文件到本地git仓库,再同步到git服务器。同步方法详见附件——上传文件到GitHub.zip。. o9 n1 n+ @7 G9 y
( |% P# a9 }! ^4 O
[url=http://mico.io/ask/uploads/article/20150723/97411f3674d23cb747a33172ee9c1284.png]

0 s& C9 p- G/ n; k/ A9 r/ z; B+ W% l. I2 B/ W
. z1 k. N' }7 e! Y. B
  index.html   —— OAuth按钮跳转到该页面(一般为设备列表页面,可不做改动)8 }5 x, K1 g* j9 C8 f  m1 c3 ~3 P: ]

3 W2 N  O. [% P7 A* ?; c$ y6 g3 n8 V[/url]. M6 J9 ?7 U/ p# q! }* X

/ l7 ]8 @& v/ u& [( y7 P2 O& B! \3 E& Q9 I% C  b  U
  xxxx.html   —— 设备控制页面(其中xxxx为FogCloud上创建的产品id)
4 ~' Z/ K6 l$ s& M1 P4 p- p
4 S' O; {8 l+ C( ?- k3 L7 |* Y, B
8 q) M2 ]' d# n& t# [$ S[url=http://mico.io/ask/uploads/article/20150723/bdd3e767bff5fdcf06f16b6ee478f57e.png]

- |* \# h- b% k1 P; V9 x8 ^9 s" l; z4 T. a* S' f

1 i1 S8 w' t1 P1 p( j  B" i  详细代码见附件代码包,部分代码解释如下: 3 d* i# r# q: a6 r* T( R
$ b) t( F' F# e; ?6 i) U: J- |, C

0 s" G- a# y4 \/ N+ a[/url]
% m2 V% Z. C9 ~: b, {
# Y; `5 P( u) c" T" f7 r* l9 b
0 x# }. H! S) J! a8 O* \$ y7 W1 U[url=http://mico.io/ask/uploads/article/20150723/041017556fe9d8bf147cab201e4055c6.png]

7 Z. J; G* _8 I
& E9 y/ Q0 `5 [: \  m& } . i2 N; ]+ ^* f  R# v+ E5 l3 y/ p
2 u% c- d6 z0 m& W. E" o5 i2 H8 J6 l5 K
  修改、并提交代码后,如果没有配置WebHook让FogCloud自动更新代码,则需要到FogCloud上手动点击“发布”按钮更新代码,并通过git提交记录确认是否更新成功。
: k# J6 f' @: w& R  w/ f! ?& [' T# g9 b5 ]9 L+ v# ~

: I# q8 m6 I( _: J第十式:FogCloud上生成设备二维码3 Q4 M, O( U# M
  (a) 创建新设备8 }  D" z, Y. Z$ F; Z* f( W
: `9 u; e+ C* r' H  C8 [
[/url]
+ T7 k4 B; m; p3 }' W0 F7 m' M) \7 x% J+ _
5 A. \! I% }$ p$ d- V; }$ R( C( ^
(b)填写设备MAC地址(由小写字母和数字构成,设备上电后会向串口发送MAC地址及其他数据,可用串口工具查看)接口创建设备。" d* x$ U5 P' X1 o* ^  ]
9 y. d" `. a) A! j9 l/ l" ~: ]6 p

- f0 ^& v2 K( }[url=http://mico.io/ask/uploads/article/20150723/60addb425f19b481c3d2ea9346bbd71f.png]
3 O* ~# e/ I: B& I

$ f& |6 e  }5 @  E4 T
0 k: ^+ n7 I# n/ t/ v  k9 u" @: \
. M" v" v! D- {2 r- d  (c) 为设备生成微信二维码
4 [9 k& D' I: `6 d9 E& p  点击“同步到微信”按钮:  
  b! V. y/ L" ^% H4 U7 V5 R
/ n( M  ^/ ~' Y; a* c  Z[/url]
/ D2 q4 ~8 Y" q' ?6 D, @5 X" t- a( N" Y& J; n' v

$ G8 S( K/ Y0 p) c: a  选择创建的产品和要使用的APP后点击同步按钮。
# b& S* |( z5 u* c( D7 U  C! R! c0 C' |0 W, O+ O
[url=http://mico.io/ask/uploads/article/20150723/8391b8371fe9a3cf4338e65240989bf1.png]
, Z0 c7 q/ H' q6 ]$ f% B! \5 I  ^) d

" C1 ^, O# T4 _+ {, W' N) U / [1 A& ~! T# O) B, X
  成功后提示:{"result":200,"message":"success"}
# [6 B8 ]6 h$ T( _ 9 g' \2 f3 o, I4 M3 m/ A( C' Q
[/url]
" m$ t0 F% g5 i& s. i5 |4 i' v# T* C
, j4 x0 z$ X+ Q& h

8 f" O, M% ^' g* V/ {- C. {% w# b  极少数情况会因为微信公共平台延时的问题出现err:500问题。等待几分钟后重试即可。* \$ ^+ c+ G$ b% @' ^
  返回到产品界面,可看到你的新设备。 0 v/ Q1 P9 @, y3 B% F+ F" Z
; a  `5 \, M( f# L! U
[url=http://mico.io/ask/uploads/article/20150723/fb1885f6aaad37a08f169dbe29946d54.png]

: k" W2 E  Z$ k: E$ k4 N4 c+ J5 D& g) G, Z) h$ g2 q

/ g1 v( G8 _2 R[/url]
% }; }- \7 z" I( l: Z
  G3 O) C  Z; P% n; y & s3 t. K$ ^& a+ H: O( w
) T$ W; Q9 \) m" t5 j+ _
第十一式:使用手机微信扫码,测试“Airkiss”配网功能以及设备控制功能。
# r( }& e& S1 r! Z6 S7 {  (a) Airkiss配网
; ?& C+ v! F& Q  Airkiss技术可以帮助你的设备在没有人机交互的情况下智能配置当前Wi-Fi环境的SSID及密码。(假如你的智能设备是一颗灯泡,总没有屏幕和按键让你输入SSID及密码吧)) \+ S4 I, @# d7 c
按设备上的Easylink按钮进入配网模式,底板上的LED(D1)灯快速闪烁;5 \/ [6 J; }2 z5 d6 s
手机输入当前所在环境的wifi密码,点击连接,成功或超时会自动跳出该页面。
/ W  ]1 W0 P2 r$ r& k1 Q2 A6 Y# T1 J% l
[url=http://mico.io/ask/uploads/article/20150723/18e3a2ba0846a30f245578b054272b7d.png]

/ w- X4 b! E# z$ x  V" D! v
# k: Q9 N- @  g* t' Z0 Y1 y" d2 C& x, F) f7 y3 t( ]2 T
  (b) 设备控制
6 v$ K* {% e$ S, t6 _  Airkiss配网成功后会跳转到设备列表,红色圆点表示设备不在线,蓝色圆点表示设备在线。若配网成功后设备依然显示设备不在线,可点击右上角刷新按钮。点击列表进入设备控制界面,点击控制按钮,控制MiCOKit-3288扩展板上的RGB LED灯。
, M) ~7 m8 l% Y, S; q已经配网成功的设备不需要再次进行Airkiss,只需点击测试公众号中的“Devices”按钮,进入设备列表,点击列表进入设备控制界面,点按按钮,控制MiCOKit-3288扩展板上的RGB LED灯。
! b! M8 f- X% O1 Q
5 y' ]7 W6 z& t, N[/url]3 `! H) ]( N4 |4 z7 p

0 s6 N. J5 m( E2 a- I# }2 k: `6 n3 z3 C
[url=http://mico.io/ask/uploads/article/20150723/13e7c77638ede00ccf82d4fb10429ab2.png]
; X+ Y  f' ^. B5 E
$ b7 o) t% r% @+ l) ?; R6 l

  j- {8 ]  K  K2 ~+ L  如果您完成到此步骤,那么恭喜您大功筑基已成!!
2 \, b. t% y/ Q  武功在手,天下我有!
  f: E! Z9 j* o' q1 }$ M# [' a8 o  祝愿各位米客能手持MiCO利剑,在物联网智能设备的新江湖建功立业!

) n. X* z8 J  ]& `2 M9 R: h* w2 z
( k  j  b9 N9 {2 {; b1 o$ j9 |另:源代码地址 http://pan.baidu.com/s/1bnsGEy7
) B7 D% s$ j3 W8 i1 l) t- i4 a; o! p
2 S, j4 }3 Z2 aMiCO团队
& _1 M9 P  Y; T1 ~1 l8 j0 u! g! y敬上!
. G- ]% j, e% s+ @4 s1 a2 L$ Y7 d[/url]
0 D: E8 T+ _2 g3 z6 e5 b2 R1 }$ ~
[url=http://mico.io/ask/uploads/article/20150724/02263811253059862ccc8df321bb95b5.jpg]
2 y$ C, t* U: X  ]/ u+ z1 ]6 J" ^% {' J8 {$ K  c

0个回复

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

本版积分规则


关闭

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

小黑屋|手机版|Archiver|德赢Vwin官网 ( 湘ICP备2023018690号 )

GMT+8, 2024-12-23 13:03 , Processed in 0.470148 second(s), Total 36, Slave 27 queries .

Powered by 德赢Vwin官网 网

© 2015 bbs.elecfans.com

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