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

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

micolover ( 楼主 ) 2015-7-24 10:52:41  只看该作者 倒序浏览
本帖最后由 micolover 于 2015-7-24 14:47 编辑
! I! L0 l/ p8 ~+ }# I6 y( \0 D2 `( }3 w% M$ \- N! x
前言
' U0 t: p1 s) j+ K  大神玩转MiCO好生羡慕
9 h$ M8 _, ^7 W: f9 ?2 h  菜鸟低头不语无从下手" d8 t3 c$ _3 t8 t, l: g( ^
  别慌~看完下面的武功秘籍,你也能成为一代米侠被人仰望& m7 _7 L; _9 i$ s* t6 y

6 U; |7 T5 _" E* Z! V+ W0 d一.微信控灯十一式
  F0 _; F4 T& s5 Y0 o* Z  第一式:注册开发者账号          n# r. O6 K) z6 `
  第二式:使用个人微信号开通测试公众号        
+ W7 X- a8 u2 A5 n' W5 r7 Q# z  第三式:在FogCloud上创建、定义自己的产品        
# t6 D) V( l% e8 O, @  第四式:在FogCloud上创建产品对应的微信APP        
3 k# h4 X% L% R8 z1 u: P  第五式:Github上创建微信APP代码托管仓库        
- |+ U( ~+ v% A0 n9 ]7 \1 o2 J  第六式:配置微信APP以及微信测试公众号        + t; m6 A3 G: l' T1 o
  第七式:使用MiCO SDK开发RGB LED灯的固件* @" d4 X# q' ]4 H+ N4 s' i* c/ Z8 H
  第八式:用网页编辑工具(sublime等)开发微信APP代码        
* o8 P0 G" |1 s3 d# I2 d# y  第九式:使用Github工具托管APP代码        
  O8 m, T# \: L2 T$ _  第十式:FogCloud上生成设备二维码        
3 T) c7 K4 S) q3 `$ Y  第十一式:使用手机微信扫码,测试“Airkiss”配网功能以及设备控制功能。          ! B. c7 D! p2 e8 a) h
二.基本功
- R4 t/ Y4 L" K  注意:练功开始前请确定射频驱动为最新版本/ V5 q5 x4 R9 z& Q4 O0 u* c/ Z
  版本查询及升级方法请参考MiCO社区 → wiki中心 → MiCOKit板块射频驱动升级& Y0 Q: i% ]  j* u
  1. MiCOKit-3288开发套件;
8 ~3 U$ H! W% ~0 `( B  2. 开发工具请使用IAR7.3版本及以上; $ P- F: B* z4 ~- |0 v" F
  3. FogCloud开发者账号(Fog云使用、开发必须);
, v1 n7 D! P) Y4 {' d  4. MiCO SDK v2.2.0(固件开发包);
7 |- k" y* u. s8 M+ m  5. 个人微信号(开通测试公众号);- _0 y  {! {4 q
  6. github个人账号(托管微信APP代码);
7 _% P" N6 w/ _" u1 F  7. 网页编辑工具(sublime等);
; i5 P0 E/ G: Q5 N. {# B  8. 大致了解MQTT协议及json格式。
, D/ J7 w) B1 b# M
) S3 [3 q. r) m: t$ E' T5 V三.招式详解% F- C, m; C, J2 Y' Z
1 X8 T6 n* [" Y$ e/ [6 F
第一式:注册开发者账号6 u+ R( W! K$ ], V& Y6 f
  登录www.fogcloud.io直接注册账号即可。该账号将用来管理你的产品及APP。
4 E$ G0 O( K) a; X$ R3 c) A
8 E5 V0 O* a8 x! e[/url]4 K) X; Y* n: B9 k) h5 R

( ?  j- e7 y+ ?1 V4 N
# r* d9 D2 q8 P# W9 `6 ]% ]5 Y. D9 e2 O; W

: s! x6 \' ?: t第二式:使用个人微信号开通测试公众号( G- b' i/ J4 T7 ]
  浏览器打开[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
,点击登录,使用手机微信扫码,进入后即开通了测试公众号。9 S- x. \4 X4 o1 B( r

5 C5 I  j1 `- L# ]( {/ I[/url]! M6 W1 O& w( |, L/ C, x
  Z* L; J; [9 `/ N# k2 n# \2 i
; ^4 u, a  H# s$ n
  获得微信号、appID、appsecrect,用于后续在FogCloud上创建产品对应的微信APP。; _* t0 @/ {5 e9 K
4 z. b  G8 @8 w  B/ ?4 i9 d
[url=http://mico.io/ask/uploads/article/20150723/923e41bc3c91f99ba548d65e2ddd7ec6.png]
8 Y3 l& f3 A- \9 `& Y

4 |* K6 Y: t5 d+ f: L9 Z$ ]( i) h9 |/ J1 O
第三式:在FogCloud上创建、定义自己的产品
. T8 I! k; M4 P- D& F& L* t6 O& N1 x0 m) a
[/url]% b9 O: |6 p( K8 A
0 h0 k& |9 i( ?
) D" ^4 f8 j( j3 a9 ?% K3 O" P& Q4 m
  根据提示填写相关信息,创建完成后,如下: m. U% H0 U' f5 a/ D( C# h

: k# N. T" B. n/ r& B: o5 P[url=http://mico.io/ask/uploads/article/20150723/ac518bc12959f06f82624e4d9e6fc841.png]
, Q0 r1 `: V# Z1 l1 h8 ]/ K

3 @& G$ P- A: A9 @2 H& | : B4 Y9 s' F: T: \* `1 F4 [, D
  点击产品名称,进入详细信息:
+ U2 S% U5 q5 ^, I5 a6 j& \3 D2 D: e2 t( w+ i
[/url]8 h: u- v. A4 B
* d6 u6 D* f7 M; j3 L. m4 g& Y

. ?' f  O6 |% c4 [" w) {' K  产品ID/KEY会写到设备固件代码中;
% G; ^# g5 ^3 W2 r( e  p+ A  创建产品的数据模型,数据模型是用来在云端定义产品功能、性能等特征数据的标准格式,可以储存设备监控、收集、控制、用户行为等数据,从而对数据进行分析,提升产品服务,开发案例过程中定义数据模型,能够有效帮助开发者将APP、云端与设备端的关键功能、特征数据等同步,避免开发过程出错。# U+ N) o9 D0 ~+ ^

$ \& E$ N( T3 {[url=http://mico.io/ask/uploads/article/20150723/419d8575656778d542b24f70ff5d4aa2.png]

# C9 R  D+ |, {6 x$ @
. A& m+ A! t* e" p% [9 K
0 J$ d; J8 e; A! B% ^6 }  本实例仅控制MiCOKit-3288上的一个RGB LED灯,所需创建的控制数据点有:
4 ?2 @- s5 o2 c8 @     1)开关(rgbled_switch)                     读写属性为1         时间序列为否
1 U; b& Y- ]! \" p# A9 e     2)色相(rgbled_hues)                      读写属性为1         时间序列为否
* {9 m7 ]: X" p: G$ u* y) r  K$ D     3)饱和度(rgbled_saturation)                 读写属性为1         时间序列为否* C1 z) u0 C  J6 Y3 J* R
     4)亮度(rgbled_brightness)                  读写属性为1         时间序列为否
; w- C- T; m3 Q; A5 X  *属性名和描述可按个人习惯添加5 q) Q& q9 j8 a7 F
  注意:在创建数据点时,“时间序列”选项:选中时云端保存历史数据;不选时云端只保存最新的数据。
  N6 h8 d: J2 b  数据模型的具体作用在后面的进阶教程中详细讲解。
5 x& `9 z8 t, X: ]4 ]3 I$ S
! }0 @* S6 X: H) @. z( X第四式:在FogCloud上创建产品对应的微信APP
  h# `% @4 g0 t& j8 n; ?8 [
2 @' L0 C0 D: k6 H' \* K- b* U! Z1 \# P* t$ p- u1 Z
[/url]& N5 k9 @" n/ ]/ O  q
" [* P6 z( n" c. L

2 S5 p0 R. f4 U4 I  根据提示,填写相关信息,其中微信号、AppID/AppSecret从步骤2中开通的微信测试公众号中获得。8 M- }  U6 t' J* S, ^5 G( ?

3 H) s) Y6 R, P[url=http://mico.io/ask/uploads/article/20150723/12165d0d0d83feb3aba6851cc9588c08.png]

$ m+ p$ v1 \! E/ c
! P" H. V- Z9 U1 r
& [5 I- ^0 o9 g' F- x: I7 F% Z第五式:Github上创建微信APP代码托管仓库
# ^, W: R' m6 Q  a7 w! x  O  请登录github.com自行创建新仓库。并克隆到本地,克隆方法详见《上传文件到GitHub》。该步骤的目的是获得一个可以在任何地方访问的git仓库,后面会使用该仓库托管微信APP的代码(其他类似git仓库托管工具也可以)。' }1 \* F0 G' L: O5 c# L- ?
: w' x! |' p$ d+ t1 l
[/url]0 H$ L- F1 r( g9 a2 F) k

2 e# ?: D$ d' U) m% s
% l$ y; N/ d( a8 y7 r: g& N. D  获得仓库地址,例如:https://github.com/wangeshen/MiCOKit_test.git, \, [5 U1 j. x/ V' A
; |( z" u7 n- A

  I) Y# }$ v2 M- E3 j' Q第六式:配置微信APP以及微信测试公众号
' ]* B9 s6 A) A1 d) R7 h  (a) FogCloud上的微信APP信息:4 \6 P6 f7 a* M9 P
4 `6 m; r( J$ z+ F1 v% F% j
[url=http://mico.io/ask/uploads/article/20150723/3e552dc6f9c1097d68b01b4643a04921.png]
% X7 @# a( g) e
, D; Q8 b/ S- F3 X2 [: d9 v
5 {4 t9 G0 ~  \( h# d  N2 g
  其中URL和Token会在后续配置微信测试号时用到。! R/ E8 x- `4 F+ X3 Q0 C

3 i- s& e9 Z% l5 M$ i8 o/ r, @  (b)Git部署(同步微信APP代码到FogCloud)
1 L" q( H" Z9 N5 w! r/ n+ Q9 @+ z3 r% Y* x+ n8 K* s; b, }
[/url]) T% q; k9 [% ^

, ?7 U3 k* R4 s6 n5 z
+ |) C, N- u& D7 V6 E% P  其中:) ^& b1 b* }1 K4 H
     Repo即步骤5中创建的github仓库地址,填写后保存;  @/ h5 f  J$ L8 |1 \
     Deploy key和Web Hook Url可添加到github仓库的设置中,以自动同步代码到FogCloud;也可以不添加,但是github仓库中代码更新后,需要手动点击“发布”按钮来同步代码,同步后右边可看到最新的代码提交记录。" h+ p' h6 D$ ?6 c- C  F
# P& D7 h; G  ?

! H$ @' i2 L2 b[url=http://mico.io/ask/uploads/article/20150723/47bf7c17eb7ad746792160a06f14ab20.png]

7 W$ |& w: o2 g8 k4 J3 P' J; w2 C" w( `6 w" p: r$ i

5 h, ~1 ~4 i1 n5 w- z9 E) Q+ b  (c) 微信菜单管理7 k2 L: ]- Q( d& g6 T$ G! O) n8 d* |
  通过FogCloud提供的微信公众号首页菜单定制功能,方便的定制手机端微信上的控制界面及功能;至少包含“Airkiss”按钮,打开微信Airkiss配网功能,“OAuth”按钮(名称可自定义)进入设备控制。" O( V; d8 ]/ f) T. k

, W/ |2 J& |7 Y% m! B
+ H3 w: d* a6 U( H1 h[/url]$ Q( h& M5 ?  X, z- ^$ X: Q1 h

/ D6 A# V: a4 F- L$ _
4 Z& K; V3 F8 f+ s  (d) 设置微信测试公众号 URL与Token在创建的APP信息中可以找到
; T1 {, G5 y! y  S  修改配置信息:
2 [- u( `, T. q7 l6 _, B9 H  URL一般为:[url=http://4addb71f-1b5c-xxxx-94c5-f/]http://4addb71f-1b5c-XXXX-94c5-f
... ylink.io/wechat.php+ ^4 v: A$ h2 z+ ^; Z
  下划线部分作为JS接口安全域名和授权回调页面域名。
6 f0 I! I' O+ ~# X2 j2 l0 d4 c7 r/ ]. E4 A
[/url]) C8 P/ N9 E! G; D& J
" v' \* d8 p& W
/ M% h9 d# H- L% |) j
  开通所有测试功能,并填写网页授权域名:
' y0 N9 _  @2 J* x+ y$ q3 ^! h1 g4 u, f) T: s- C+ j
[url=http://mico.io/ask/uploads/article/20150723/4147bd2c388956cee39120fa591cd440.png]
6 R7 S6 j1 t8 ^% l9 l

8 i3 ~* s4 x" q
$ Z* g  j, b+ a8 O5 ?! u2 `  点击修改,打开如下:
% y) ~. ?" o, V9 B- {, H
$ ]5 N) i5 b# \, e3 B4 `2 E[/url]
1 V, v: q  Q- S; w
, N$ L* g, M! }5 i " q0 B9 l( }, |% x: R& ^
  同“JS接口安全域名”,格式为前面提供的URL的域名部分,如xxxx.app.easylink.io,其中“xxxx”为FogCloud上创建的微信APP的id。6 [1 W! S  z! m9 s' q

& j8 E7 x3 j  F8 b& s
; s6 W/ m1 I3 S第七式:使用MiCO SDK开发RGB LED灯的固件
5 @4 B2 a! |& u/ S$ d2 L- ]  (a) 登陆MiCO开发者网站mico.io,去MiCO社区注册账号,并登陆;+ ^' w; P! q0 H# ~' p$ q
7 s9 b1 _9 O$ O
[url=http://mico.io/ask/uploads/article/20150723/3c04c03f3d922eb74c06906c610b9290.png]
: F# Q# I+ V7 v" @/ Q( u
5 X! v1 I! J8 e4 I1 v9 v
3 w5 R8 Z& N. H+ n2 n+ ?7 D
  (b) 重新打开mico.io首页,开发者中心 ==> Wiki中心,下载MiCO SDK。
" C' F# T; k0 L6 P
2 u# T  V. g* v- D5 f' N[/url]) Z4 ^* M3 }5 S: m0 f

! H  {- U+ r" Q5 |
/ }! \. ^8 c2 {( C; N2 b5 i: b! ~  (c) 打开MiCO SDK中的微信开发实例工程:
' O6 _+ B4 d# o
* ~1 x6 P+ G& @[url=http://mico.io/ask/uploads/article/20150723/3c6381767bf00833cab64ed4c37df2f8.png]

" F; P: y$ B$ ~( D+ U* G  ?# U

8 Y2 |3 G# c1 |    1)开发者手中拿到的可能是硬件平台可能是MiCOKit3288或者MiCOKit3165,在编译工程时要先选择硬件平台;
" S& g# U1 u5 n# T" I& `8 }7 I/ ~    2)将FogCloud上创建的产品ID/KEY写入固件(必须替换):$ K! B& p* W* H4 V
, M5 l% r: I% V8 K+ d
[/url]
. |2 v# t# \% Z5 `. e; }" _* e
" Q6 q8 N/ h1 T / b) j8 ?4 P& \) r; C8 t8 i- q
    3)修改版本号,这样才能把新的产品ID/KEY烧入FLASH
: P: {8 E5 B# Q4 q9 ]: M( w6 h2 O
3 ]" U) v+ H6 i' h  ?* v: S7 d[url=http://mico.io/ask/uploads/article/20150723/1661ce047fc9ea5e465db04acd59c24e.png]

7 P  i4 I$ m4 `4 W* v3 Z$ S
$ `4 c$ s/ s% X3 M5 A  n6 {0 W
+ r% b) J0 K7 T8 m    4)添加LED灯控制代码:9 A% ]  M" }7 v2 I+ ?) U

/ u! G% E- H+ C" C* s' G: A[/url]8 S. C, z9 Y/ Q) i2 [

! H, y4 w9 W; p
' b! s4 X$ o7 X' Q  Z    5)改为收到云端消息后,解析JSON数据,并控制LED。& K+ ?; d% t+ n  G) `
6 h/ a% Q) W" I' m" W8 X
[url=http://mico.io/ask/uploads/article/20150723/fb02025e4062a859d0d33d4178cd156a.png]

% v. v2 A2 u( {+ t
" }, B3 z! i  o) E6 S0 Y3 ]" A
, a! a" z, U4 y# @! @8 @    6)错误代码参考:在运行过程中如果出现错误,可在user_log中查看错误代码。+ l0 Z. i1 d  [! r

& o3 h! l# y, z[/url]
, z6 \  y' T7 d  r/ ?; ?9 T0 F" H, k  F% H3 K0 s7 p' Z
8 Q- Q" Z) V3 r  Q- J
[url=http://mico.io/ask/uploads/article/20150723/9f6828473efaa4a01ae4434c236a2ef6.png]

9 Q* G) e3 w8 @+ q0 q# I- o* J3 B# e+ a. Q$ A
. H- i& f% V' P! G1 ~% M
    7)MiCO SDK固件烧录。(详细固件烧录方法及步骤请参考http://mico.io wiki中心)3 y+ C/ T  s, P; U  x) b  e
选择使用的烧录工具J-Link或者ST-LINK:
6 \, |! h2 U9 {7 c  D. x& n! u: z9 D+ o( V
[/url]) ^4 r" }. m, u! D

1 c/ e1 [& B8 G9 S$ D
5 F; p4 i: Y0 e  n' r  编译/连接:
8 e% Q7 }$ K: h! V5 @( Z& m! k$ j* g* @  ?2 O$ H) q7 ?
[url=http://mico.io/ask/uploads/article/20150723/14ee93da638bb344905c2f6c7a8481ef.png]

) ]& M4 |* e8 X  V9 e. N0 p
) k; C! b! y+ Z7 U6 u+ q/ w , ]7 Z$ T9 u: ]! |
  烧录/下载:0 N9 m* n+ O- }* |1 c$ u

- Y8 |4 A; b- v  O: W: \+ Q, K6 d[/url]( X  [: G8 w, ^
9 Z( E! i/ x7 e
5 R, c* X% g6 \% j
第八式:用网页编辑工具(sublime等)开发微信APP代码
1 e% T# k- Q# E4 |8 ~以下为核心代码及其注释# F* C) x4 x2 o" @1 s
//应用程序入口在application_start(void),一系列动作(如配网、连接云等)以后,用户程序入口在这里。: b0 J; Q5 b4 O: ?
OSStatus user_main( mico_Context_t * const mico_context  ' Q: @# }, N* ?% _; i5 Y7 K: I/ [
{
. Q3 r% {+ K& r8 r) k, L" j( L  //user_log_trace();) y4 x# K4 ~4 @
  OSStatus err = kUnknownErr;2 V6 b$ @% a$ ^' p6 ^% `( H2 J1 U
  fogcloud_msg_t *recv_msg = NULL;//接收数据结构体
4 Z3 g6 h' X+ q: f& Q% ]+ T  json_object *recv_json_object = NULL;//结构体内包含json数据格式. \: z8 E9 X3 M1 I2 w, t
  /* rgb灯的色彩模式采取h***色彩模式(色相、饱和度、亮度) */
1 J1 E$ y+ u* `( R$ a+ G% Z# q  bool led_switch = false;//rgb灯开关
$ d6 O2 k: ?/ F  [% o6 E  int led_hues = 0;. l6 I/ F+ h5 D1 k; @' ?
  int led_saturation = 0;
# f7 N* l, p8 x# n  int led_brightness = 0;5 ~0 V1 D- o2 m6 W# Q1 G
  require(mico_context, exit);
$ c$ d. u) G+ ], U% ?: y/ m: n  h***2rgb_led_init();  // RGB_LED初始化
9 {5 f' b7 Y. i/ @2 j! e8 k! u  while(1){2 h& v' A0 z" `3 g5 J, p
    mico_thread_msleep(100); //延时100ms- p. Z( x* q' p7 L0 r) [% ^. w$ W
    // 检测 fogcloud 连接状态
3 v$ y/ N, J; J( H    if(!mico_context->appStatus.fogcloudStatus.isCloudConnected){9 B  |9 E) C  e% l4 C
      continue;
% t0 U! y1 s) q* F) [9 D) P# t8 C% L7 A* C    }
! M% C+ V6 x! |' F    /* 5 }2 @7 W$ W7 O- r) k
      接收来自云端的数据
& _4 ^7 X' K+ d- o5 I+ t5 a      recv_msg->data = +) q' m" p" u7 Y0 M4 b2 D7 M+ u
      topic表示模块订阅的MQTT通道名,data表示云端返回的数据0 ?: ~8 |) B4 d5 a% \- k; U
     */+ F* B1 C+ Q+ m
    err = MicoFogCloudMsgRecv(mico_context, &recv_msg, 100);
. _( g9 p5 e  a, E. Z: u. }    if(kNoErr == err){' E" N+ M" G- d# r1 e7 N
// 打印  例://user_logtopic[30]=[de54a8ea/c8934691816b/in/write]data[23]=[{"rgbled_switch":false}]2 M/ U) _; E0 z7 a1 ^* D) i4 M! g0 F' e1 z
      user_log("Cloud => Module: topic[%d]=[%.*s]tdata[%d]=[%.*s]",
! i; n1 @  H" i3 e/ @               recv_msg->topic_len, recv_msg->topic_len, recv_msg->data,
1 w$ n. y: {% k/ T$ q4 X, brecv_msg->data_len, recv_msg->data_len, recv_msg->data + recv_msg->topic_len); 1 I; b6 v/ ^3 D' I+ N* H% @  F
// json格式的字符串数据转成json对象
3 s/ G/ {: n( Y      recv_json_object = json_tokener_parse((const char*)(recv_msg->data + recv_msg->topic_len));
2 A9 N! s7 G% _( d      if (NULL != recv_json_object)
. x( J! O  u& h1 Y/ A      {
$ T: B  I: Q0 A+ w/ D/ Y: V        //根据键值对遍历8 m3 K* c1 c! T  n8 ]- p  H
        json_object_object_foreach(recv_json_object, key, val) {2 X$ S1 W3 ]9 X9 |$ ?* M
          if(!strcmp(key, "rgbled_switch")){5 U  I& a! x7 h2 e4 @7 O
//如果键为"rgbled_switch",提取值“开关值”
3 D" F6 p4 _2 S: a$ H            led_switch = json_object_get_boolean(val);
: n( @: K! e1 i          }7 c7 J0 R1 f% F; T" s" S$ f0 Z! {
          else if(!strcmp(key, "rgbled_hues")){: b9 F& m: I$ U. B2 _- f& T
                        //如果键为"rgbled_hues",提取值“色相值"
  e$ {0 m% H* G, V' L7 t            led_hues = json_object_get_int(val);$ Q. P% t0 w7 ^' G# c' y
          }
* J1 a8 A4 m( Y          else if(!strcmp(key, "rgbled_saturation")){. m! @9 W( P- N; t1 E7 @2 D
                        //如果键为"rgbled_saturation",提取值“饱和度值"
, a0 Y* c/ ?' {. L- j+ P/ U            led_saturation = json_object_get_int(val);% K' q3 p5 G7 F& J. C# i5 K& U
          }
, H/ A5 p: |7 r) E. C          else if(!strcmp(key, "rgbled_brightness")){% [1 n3 K. u. g" `" k: H
//如果键为"rgbled_brightness",提取值“亮度值"/ a* F/ ~  k' N( D) H% V
            led_brightness = json_object_get_int(val);
+ C: k' p$ I6 |' U          }
, Q0 Y2 [5 P! y: m% ?2 T        }& I' P- L9 Q. ?1 H
        // 控制LED
: j+ P) k6 f3 y' c8 J( i        if(led_switch){3 k# y& d4 g: V3 e6 S6 G
          h***2rgb_led_open(led_hues, led_saturation, led_brightness);
9 z/ Y/ U, v$ J% I& Q  A- H& P. H        }else{
1 D* J# z9 {6 t7 Z' v5 @5 @( S9 Q          h***2rgb_led_close();  // 关闭# Q7 ~' r1 s# h$ S3 T: e
        }
& n6 b' E+ w  r+ Y: ?4 D        // json对象内存释放+ b; J  q: b2 E' K7 |
        json_object_put(recv_json_object);5 r  y- n/ Z! [7 F, U, n
        recv_json_object = NULL;
' L- I, g: C0 l/ P. v      }( T# j# I- _6 D6 o4 n
      // 结构体内存释放* a  F) _: {& U, j
      if(NULL != recv_msg){5 q7 o* e0 J5 \6 I# w
        free(recv_msg);8 k8 L# a, m# ^3 J8 [, _
        recv_msg = NULL;9 a0 h: Y2 F; J0 N+ c
      }
6 E5 t" @7 J( W    }
+ S$ W1 w) e. W' [- p  }
  s2 z4 b' K9 C6 Gexit:/ ~& J" c' r8 Y! h! k
  user_log("ERROR: user_main exit with err=%d", err);
# `' t% u" h4 w6 p( B# i! ?0 c  return err;' J& ^- s1 S! B4 H
}9 |0 P) T+ f8 U1 `  r

* H3 I, F2 [* c) Z+ w% n: v
' q0 i  H/ c+ n/ O# p第九式:使用Github工具托管APP代码1 r' S, b3 P" E
  在例程包中(MiCOKit SDK的APP目录下),找到微信APP控制页面代码(index.html和yourID.html),将yourID.html.重命名为你的产品ID,如cabca380.html。拷贝这两个文件到本地git仓库,再同步到git服务器。同步方法详见附件——上传文件到GitHub.zip。0 u( ~' E/ Q1 y' Z4 }# f

. m8 I  M+ H$ f1 t: X& A" N[url=http://mico.io/ask/uploads/article/20150723/97411f3674d23cb747a33172ee9c1284.png]
$ q0 y% K, s1 }3 k
" ], @! ?8 O# {4 Q* L- s

* z) z. b4 U  u- a  index.html   —— OAuth按钮跳转到该页面(一般为设备列表页面,可不做改动)% `1 R, ~6 Y! p& ]) ]  x; S5 ^

0 Q; b; N8 [! d/ \5 o; u[/url]- [6 ^* M& E$ {  c9 e  G% ?" Q

6 G8 N  b  i6 j" E" K5 ]8 W6 w5 C$ h. U
  xxxx.html   —— 设备控制页面(其中xxxx为FogCloud上创建的产品id). c- }& g, n0 h1 _9 T9 `5 a6 x
9 k5 ]# C$ d9 |, j& u; S8 t
, m7 Z$ N3 N+ ~4 q
[url=http://mico.io/ask/uploads/article/20150723/bdd3e767bff5fdcf06f16b6ee478f57e.png]
% r6 h: J( f1 H% m2 Z# C# g- M

! S. {, O1 H9 @5 m* O% L* r# K6 }1 \( J( Q" \) }( }' b, m
  详细代码见附件代码包,部分代码解释如下:
+ }  u, a& f' \2 Z; G
' O% W. d/ U% S! E0 t0 z2 k" a1 x6 m9 H7 {& \& K' z
[/url]
! m. `! u( n& I3 y" F. y# e
7 ]! _2 n  z: |$ C2 x3 a7 {3 f% X( B) K" O
[url=http://mico.io/ask/uploads/article/20150723/041017556fe9d8bf147cab201e4055c6.png]
7 N0 o7 ^- s4 f& q* P8 Z$ d) d

: C2 g$ L/ \/ Z7 e8 ^2 k0 N 5 T9 N- g$ G3 g  |2 k

& l: [+ T% d& f7 l/ w( U/ `9 K  修改、并提交代码后,如果没有配置WebHook让FogCloud自动更新代码,则需要到FogCloud上手动点击“发布”按钮更新代码,并通过git提交记录确认是否更新成功。
8 H4 O. \# `+ a! v% l( ?9 D4 ^+ ~

5 B9 j, }. a0 h3 T% \- q# ?2 u5 S第十式:FogCloud上生成设备二维码' O" l) J! t. @1 N8 [; C
  (a) 创建新设备
+ f- G+ G5 U/ U% H0 E/ z1 g( v' g0 e$ x' v) M$ a* r5 }- }8 m
[/url]
$ Y! a) b% Z- N" f/ R$ U) b0 J4 r# W
) M! C2 `; I  X; G: U
4 c. J6 y' |, U2 U, Q; [ (b)填写设备MAC地址(由小写字母和数字构成,设备上电后会向串口发送MAC地址及其他数据,可用串口工具查看)接口创建设备。
6 S% d7 V# f- K3 T% J* d' G 6 K# z3 @8 C3 Y% h; P% o8 h

4 F  L" l' A& }0 s[url=http://mico.io/ask/uploads/article/20150723/60addb425f19b481c3d2ea9346bbd71f.png]

% U; ~( x' n" ]( |! C1 g/ i
8 N: m6 d: N, Z( R! y' i/ i9 `6 \4 m+ b/ a8 P3 x& l; @7 X; g+ I, D9 C
; l7 f7 i. V2 ]7 P& V1 u, n8 S
  (c) 为设备生成微信二维码
4 a3 P* X. g* T7 G- p* ^  点击“同步到微信”按钮:  - F, W5 M5 }' L

6 a- f9 G5 V7 J) s/ ?- J' K[/url]0 q3 a% U  B/ \2 L
8 Q6 q) u% g% l- O' J; j

/ O  P5 F2 }) m  选择创建的产品和要使用的APP后点击同步按钮。, _; m  r+ A$ @/ k% r: B

6 y; [, z  _; z0 |& _- H- I[url=http://mico.io/ask/uploads/article/20150723/8391b8371fe9a3cf4338e65240989bf1.png]
  n8 ?4 L8 W2 W9 X' g  O9 x; [6 q

# n  E( Y) s: q: I# ~5 N: a: Y
/ P, @$ N- s3 a! d6 Q  成功后提示:{"result":200,"message":"success"}
! Q/ O8 `! f7 M& ?/ v$ y' S  E, b
$ [2 ]# f+ N# q% `5 [+ C2 s5 O[/url]7 _4 S7 g$ R8 x, g) p1 q  ?

3 ~: ?( l; o2 V4 M* D, {/ G9 I% ~8 e  p
7 l* Q  D2 @7 l
  极少数情况会因为微信公共平台延时的问题出现err:500问题。等待几分钟后重试即可。
' e5 I, j# a+ [( c5 V0 j  返回到产品界面,可看到你的新设备。 2 }. l" L- C5 U+ |6 C! `

  o* g" \  H( \; C  ^& o[url=http://mico.io/ask/uploads/article/20150723/fb1885f6aaad37a08f169dbe29946d54.png]

' o2 \1 G+ r* D3 Y$ a! N1 o! ^
; L- K4 e, J$ j8 T- K
[/url]
6 o  }& s: _* [2 q# E) w; @( Q! R" i0 b
3 Z  X1 q; J; [8 H
8 p8 z* o3 L3 O" ?2 Z
第十一式:使用手机微信扫码,测试“Airkiss”配网功能以及设备控制功能。
$ A6 P/ c* }9 Q* w2 S  (a) Airkiss配网
2 u: G" C1 G- h9 r3 T  Airkiss技术可以帮助你的设备在没有人机交互的情况下智能配置当前Wi-Fi环境的SSID及密码。(假如你的智能设备是一颗灯泡,总没有屏幕和按键让你输入SSID及密码吧)
" _8 o2 Q/ H% f* J% Y# ~9 A按设备上的Easylink按钮进入配网模式,底板上的LED(D1)灯快速闪烁;7 c2 G7 s$ a% `* |
手机输入当前所在环境的wifi密码,点击连接,成功或超时会自动跳出该页面。1 k# R' E' i6 n8 F/ ]: B
1 Z; C) l' B# x2 B3 @7 ~7 C* U
[url=http://mico.io/ask/uploads/article/20150723/18e3a2ba0846a30f245578b054272b7d.png]
/ w6 Q7 k5 E& P
# V1 g" H/ J- e

% X. F( l' c% d: o  (b) 设备控制
: V/ g8 [# K* V" K/ f  Airkiss配网成功后会跳转到设备列表,红色圆点表示设备不在线,蓝色圆点表示设备在线。若配网成功后设备依然显示设备不在线,可点击右上角刷新按钮。点击列表进入设备控制界面,点击控制按钮,控制MiCOKit-3288扩展板上的RGB LED灯。' @$ I/ g  e% H7 X
已经配网成功的设备不需要再次进行Airkiss,只需点击测试公众号中的“Devices”按钮,进入设备列表,点击列表进入设备控制界面,点按按钮,控制MiCOKit-3288扩展板上的RGB LED灯。
* y% c" c1 R) t6 \6 \7 _6 @8 \9 [/ Y4 \2 R9 }" f8 X
[/url]3 I% k# s% g7 T+ l: Z
7 G2 L! ]5 F# R" U" x- h
+ U5 O# U5 ~; Q6 G7 N  g/ S
[url=http://mico.io/ask/uploads/article/20150723/13e7c77638ede00ccf82d4fb10429ab2.png]
" L& k) I+ o! G2 C2 B: h& Q
( i4 |% L3 ~: L0 I* k  h0 u9 ?( G& m
$ W/ k2 k0 o, t4 {1 W+ {
  如果您完成到此步骤,那么恭喜您大功筑基已成!!
, T! D  Z( [" w, `- G! \  武功在手,天下我有!
2 s& O1 m; C# l/ P! G  祝愿各位米客能手持MiCO利剑,在物联网智能设备的新江湖建功立业!

( O! S' K7 T- O' N& S
  r' x& _7 A+ y* i另:源代码地址 http://pan.baidu.com/s/1bnsGEy70 R, H3 M5 d$ g

, ~, ]2 R0 A5 P4 xMiCO团队
! q: x4 ^; D* M( T0 j- C敬上!
- e! ~: ?! D2 o$ u[/url]/ @( N) Q) c# v" R1 m9 m7 k
[url=http://mico.io/ask/uploads/article/20150724/02263811253059862ccc8df321bb95b5.jpg]
8 N' R7 a, r0 n6 C' W8 ~
4 h& {, e. B6 y6 t) d/ N& p

0个回复

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

本版积分规则


关闭

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

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

GMT+8, 2024-11-5 16:57 , Processed in 0.827140 second(s), Total 64, Slave 45 queries .

Powered by 电子发烧友网

© 2015 bbs.elecfans.com

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