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

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

micolover ( 楼主 ) 2015-7-24 10:52:41  只看该作者 倒序浏览
本帖最后由 micolover 于 2015-7-24 14:47 编辑 8 _* X  ?- @. {6 q4 r
% R3 |) d  o4 G8 J
前言
: V- z  z1 \8 a. R9 M4 U7 \- j+ @  大神玩转MiCO好生羡慕
8 Z1 X- V8 L1 P0 S  Z5 x  菜鸟低头不语无从下手- `* W9 W- a" w0 }
  别慌~看完下面的武功秘籍,你也能成为一代米侠被人仰望! t3 ?7 |1 c5 n/ E, F& X

. u9 m' }" m" u. M一.微信控灯十一式9 [& v9 b& q, `7 I
  第一式:注册开发者账号        3 |$ n" e/ @6 i1 V# \; u; Y
  第二式:使用个人微信号开通测试公众号        
. u3 I3 S4 K; {& j/ H7 l* y8 A. V- |  第三式:在FogCloud上创建、定义自己的产品        
. O% b( d8 D4 c8 z4 [' j  第四式:在FogCloud上创建产品对应的微信APP        
2 F! p- z- t" ^3 S4 ]  第五式:Github上创建微信APP代码托管仓库        ( V3 z* |+ [/ l) c2 c; H6 }
  第六式:配置微信APP以及微信测试公众号        ) O- i9 v6 x+ e2 t$ H' I3 `1 W
  第七式:使用MiCO SDK开发RGB LED灯的固件" K# ~8 w0 o3 g
  第八式:用网页编辑工具(sublime等)开发微信APP代码        
* K& a& W8 Z2 t- a  第九式:使用Github工具托管APP代码        ( d7 }" N, [0 T) P; C" c
  第十式:FogCloud上生成设备二维码        
. i/ k" q1 p8 l3 r  第十一式:使用手机微信扫码,测试“Airkiss”配网功能以及设备控制功能。          & ~; V) m' S  s3 b  C5 y
二.基本功
# U- h3 R" H0 c+ Z  注意:练功开始前请确定射频驱动为最新版本
) E5 v, A* F) ]4 C3 K# O. H  版本查询及升级方法请参考MiCO社区 → wiki中心 → MiCOKit板块射频驱动升级
5 C  |) L! A, R0 m  1. MiCOKit-3288开发套件;% {5 `7 m" _/ f6 m3 _$ X$ x( P( U6 c
  2. 开发工具请使用IAR7.3版本及以上; , w2 G$ w) x! |. J( ~+ Y  [4 W; \
  3. FogCloud开发者账号(Fog云使用、开发必须);  ^" J; W6 A5 p! W  r& y* ^
  4. MiCO SDK v2.2.0(固件开发包);+ C- S( ]% }7 V; I7 ^) F6 Y
  5. 个人微信号(开通测试公众号);
2 z2 W: ?0 i+ |& k1 ^/ n  6. github个人账号(托管微信APP代码);
5 Z- X2 x0 g3 M  7. 网页编辑工具(sublime等);
4 X; B: q: ~  E- N/ ]8 z+ W  8. 大致了解MQTT协议及json格式。2 e# A9 J; z. O

' U  B: ^+ h: e: H5 T三.招式详解' X* _1 @. L8 U. J: f9 X3 e

) }1 p- q1 h; U% K( f& j第一式:注册开发者账号8 ^4 J/ ~# O; L5 q( ]" o
  登录www.fogcloud.io直接注册账号即可。该账号将用来管理你的产品及APP。
/ C+ X0 k" D: w3 b5 q
. e  x5 k6 d1 K, u9 ~- @[/url]0 K0 b4 j" w  f" f& u# n- z1 u: N
3 t8 m5 I' Q6 m8 [

9 L% Y# |! y8 }0 Q
9 H# @: U0 ]1 c, V( ^  v. E; X$ p) {7 J) c$ j
第二式:使用个人微信号开通测试公众号" i6 M8 H4 i$ n8 ]/ w
  浏览器打开[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
,点击登录,使用手机微信扫码,进入后即开通了测试公众号。
! D6 I8 X0 p1 {3 F9 x" e
, w$ \. M! d3 s* }) @8 L+ R( F[/url]* k" [9 e% H: ]- b: _2 v0 \. A
1 w+ G* {+ U9 m6 V. }* q& s

9 h, X& k# e3 l" v3 ]" h  获得微信号、appID、appsecrect,用于后续在FogCloud上创建产品对应的微信APP。: i% g; {( T. O! D, k% p
5 L; ^" ?3 b4 ?' v1 o: a0 L
[url=http://mico.io/ask/uploads/article/20150723/923e41bc3c91f99ba548d65e2ddd7ec6.png]
# G# s/ E' Q/ k0 u4 J+ e) n4 G: i

+ T( S! d5 |  U+ u' k$ x  m3 i) U  D# h/ @$ Z, d, `7 x- u
第三式:在FogCloud上创建、定义自己的产品
! F- G' b1 j/ F5 p$ x8 T
" K7 T- e9 w+ g: B: m6 k1 R[/url]
0 a7 S( T" q' G* x7 O7 |% |8 G) p. {5 b$ M0 i9 E* Q
3 n  }6 b$ w' {/ `
  根据提示填写相关信息,创建完成后,如下
+ X0 P! a  x. R* p9 }
2 y' x  h9 o* _+ T7 V- `* K0 C; d[url=http://mico.io/ask/uploads/article/20150723/ac518bc12959f06f82624e4d9e6fc841.png]

0 A) |& j: Z$ T+ @0 A0 D; h0 m# G3 H8 N4 k- O6 O# `

3 S- B! A+ g; E' h  A  点击产品名称,进入详细信息:5 W) n1 D$ F' A7 U& m
8 r( \4 S) E$ A. T) l$ t% t
[/url]
5 F/ i6 K. R" e8 Y( g, c; n6 [$ O$ `& l0 C  B/ r2 e3 c* h

+ n$ |8 x  R/ b+ j. j  w# f( G  产品ID/KEY会写到设备固件代码中;
2 i- [/ Q2 A' z7 Y! [  G( I  创建产品的数据模型,数据模型是用来在云端定义产品功能、性能等特征数据的标准格式,可以储存设备监控、收集、控制、用户行为等数据,从而对数据进行分析,提升产品服务,开发案例过程中定义数据模型,能够有效帮助开发者将APP、云端与设备端的关键功能、特征数据等同步,避免开发过程出错。
* [& t5 h3 m& |; J4 r4 @" l9 \" N. {0 s; @! v6 F, J% N
[url=http://mico.io/ask/uploads/article/20150723/419d8575656778d542b24f70ff5d4aa2.png]

* Z% ~$ ?( g, N0 G7 C# S  ^6 b5 u6 o7 t" W  T

: T% T4 c: f+ a4 x! a% C  本实例仅控制MiCOKit-3288上的一个RGB LED灯,所需创建的控制数据点有:
& m; Y& h+ N' h8 P     1)开关(rgbled_switch)                     读写属性为1         时间序列为否
" j" a; b1 A3 [  T8 K     2)色相(rgbled_hues)                      读写属性为1         时间序列为否$ a. S; T+ y* \5 O/ F
     3)饱和度(rgbled_saturation)                 读写属性为1         时间序列为否& A, q( M) r( m  O) W: p, q0 O" w/ o
     4)亮度(rgbled_brightness)                  读写属性为1         时间序列为否  Q) ^6 @* f! s" s
  *属性名和描述可按个人习惯添加
+ E3 k  S) `. b, k4 n$ X, b  注意:在创建数据点时,“时间序列”选项:选中时云端保存历史数据;不选时云端只保存最新的数据。
' ]& i1 Q$ ]" t9 j3 i2 C  数据模型的具体作用在后面的进阶教程中详细讲解。2 D3 f) f7 y- K4 c: A
, Z( ^( o, U: m1 x5 u& \9 m' ^
第四式:在FogCloud上创建产品对应的微信APP
3 y/ V! r" X, L! Y* l+ p6 L3 J1 m
, O9 x6 @1 [; E* x+ A* y+ j8 p5 R& h: Z* n
[/url]1 r: x5 H: j/ u

  [0 k: J. F3 ]) u" q
% s' E3 H+ V6 a0 _# n5 V2 a  根据提示,填写相关信息,其中微信号、AppID/AppSecret从步骤2中开通的微信测试公众号中获得。3 R0 v- h' [& O6 u. a# R0 p
/ u4 G! G) X/ o
[url=http://mico.io/ask/uploads/article/20150723/12165d0d0d83feb3aba6851cc9588c08.png]

* |9 O# |0 i# e% H$ Z: w) \& {% v" \+ U- B
. v( P' D$ Q. r+ Q9 G
第五式:Github上创建微信APP代码托管仓库7 {( q" ^/ ~$ \. F4 {- v
  请登录github.com自行创建新仓库。并克隆到本地,克隆方法详见《上传文件到GitHub》。该步骤的目的是获得一个可以在任何地方访问的git仓库,后面会使用该仓库托管微信APP的代码(其他类似git仓库托管工具也可以)。# Y" _7 c  ^5 @8 p4 ]
: F0 Y& \( V) Z
[/url]6 N1 I4 y" B1 T

9 e) P! d5 |# J% r( E
, Y2 V9 n0 S) z4 m) R0 Y  U3 F3 Q  获得仓库地址,例如:https://github.com/wangeshen/MiCOKit_test.git1 ^0 x, P4 y$ ]$ @+ ?7 ]
# e9 D0 h: d# [) c

) p5 C% B" B3 B* m$ N第六式:配置微信APP以及微信测试公众号
( }+ U5 |7 n' ?- L( F  (a) FogCloud上的微信APP信息:
* l( Q' n; g8 a; m: |
, |0 y* K5 `$ ]: x: t! e3 H[url=http://mico.io/ask/uploads/article/20150723/3e552dc6f9c1097d68b01b4643a04921.png]

8 @( s  E+ d9 d$ c# t
% _6 N' p3 c0 n  M0 v
# X# O3 N, v/ Y- W0 g% R9 Q2 I  其中URL和Token会在后续配置微信测试号时用到。/ [& U& L2 M% c
1 n; k$ k# e8 i, }
  (b)Git部署(同步微信APP代码到FogCloud)
1 i! R- G& _' ~, Q% G  H6 b) H2 _' t. C+ s) c. ~
[/url]+ e. ^1 {/ N% [9 d2 A7 J) v
! U7 i. j, m2 x3 @, ?0 G' N+ {
4 E& e. D5 ~! d$ X: p+ G
  其中:
4 n: g/ |4 H* g! ?& K' j, C# M     Repo即步骤5中创建的github仓库地址,填写后保存;, B  f2 g/ s/ H$ M+ {1 r' C4 M) O
     Deploy key和Web Hook Url可添加到github仓库的设置中,以自动同步代码到FogCloud;也可以不添加,但是github仓库中代码更新后,需要手动点击“发布”按钮来同步代码,同步后右边可看到最新的代码提交记录。
9 ?% q/ P0 l+ ?1 B( t" p
# ]' N6 _7 P! \1 e- m1 L5 T, p1 }) d. \' j1 m
[url=http://mico.io/ask/uploads/article/20150723/47bf7c17eb7ad746792160a06f14ab20.png]

9 k5 q! {) }/ r# r; }# W$ m  \. l7 i$ ]

& h! S4 K! ?4 I: p/ ^  (c) 微信菜单管理/ P0 r$ Z* }; t9 }4 ~
  通过FogCloud提供的微信公众号首页菜单定制功能,方便的定制手机端微信上的控制界面及功能;至少包含“Airkiss”按钮,打开微信Airkiss配网功能,“OAuth”按钮(名称可自定义)进入设备控制。  s  h$ @/ @7 B; K& J! E  ~

& X( |' \1 y8 [; k. S; F+ p% A1 d% C: u$ C! c- z+ f
[/url]  _5 m; ]8 S# D" p; B" m+ R
+ m, F* X. \& |. r1 U/ b) s
) c6 p7 s" \1 V, F7 y* I; \( ^" n5 ^. V
  (d) 设置微信测试公众号 URL与Token在创建的APP信息中可以找到- n, S$ `: I  _" |/ Z( o& M2 ~
  修改配置信息:$ k& D7 H2 @$ }7 q
  URL一般为:[url=http://4addb71f-1b5c-xxxx-94c5-f/]http://4addb71f-1b5c-XXXX-94c5-f
... ylink.io/wechat.php7 W& m5 h+ M* Z
  下划线部分作为JS接口安全域名和授权回调页面域名。2 X. M0 k/ E+ x, B! y
5 }, @5 Z: b4 ~8 E: w, I  N" Y
[/url]- u6 i( y% W3 c

- q' x9 L+ c3 ? % f4 Q2 G% U. O9 `- T
  开通所有测试功能,并填写网页授权域名:
/ o4 N8 a0 G2 |
! W8 }/ |8 j' e& J: Y[url=http://mico.io/ask/uploads/article/20150723/4147bd2c388956cee39120fa591cd440.png]
7 |. p/ F* c/ ~, V9 Y
: c8 @% O5 L- ]1 {- z; E
: }6 k  j; f& ?1 i
  点击修改,打开如下:
( @" b/ t5 c* V7 E3 `; I2 c8 h/ G( W- R. {
[/url]+ \, J* o: L) W. j

& A. x$ _+ L1 U3 s
1 }  U7 y; R( f3 J7 i  同“JS接口安全域名”,格式为前面提供的URL的域名部分,如xxxx.app.easylink.io,其中“xxxx”为FogCloud上创建的微信APP的id。
$ o" w/ j: x6 F$ n  p, _  l8 F! v* B' t
2 J1 P- N" j, @& v2 Q2 s
第七式:使用MiCO SDK开发RGB LED灯的固件
2 j  _( r: u  d$ D) g% c  (a) 登陆MiCO开发者网站mico.io,去MiCO社区注册账号,并登陆;
. i5 G: {' r+ S% e) n7 q* g. T" ~2 I8 G& x; Q
[url=http://mico.io/ask/uploads/article/20150723/3c04c03f3d922eb74c06906c610b9290.png]

: c( s6 k; O8 C# R% ^5 b/ z6 @1 L: I% E2 z' Z7 t2 |7 G7 J

0 x, n7 z* o  s$ ?8 @1 A( U  (b) 重新打开mico.io首页,开发者中心 ==> Wiki中心,下载MiCO SDK。
! E: E* ^5 r( f
9 I: ^  D6 l7 s6 h0 d[/url]# d9 b/ ^6 ^7 m6 b5 U5 q+ c# W9 X8 c

, ^- b2 P0 E0 \* }$ }+ A2 i2 J
* g4 c$ N) u2 e5 c: L: [( Q  (c) 打开MiCO SDK中的微信开发实例工程:3 k3 f4 d$ ^( a) U
; n- i* |. w! O' d  i" [
[url=http://mico.io/ask/uploads/article/20150723/3c6381767bf00833cab64ed4c37df2f8.png]

7 y; |9 E+ ?& t$ }% [, {+ j  @# z7 ^1 g! @+ l4 }( A+ ^
( W4 M, \. K: u' N% v
    1)开发者手中拿到的可能是硬件平台可能是MiCOKit3288或者MiCOKit3165,在编译工程时要先选择硬件平台;: H$ G" a: U' o; ~3 L% J
    2)将FogCloud上创建的产品ID/KEY写入固件(必须替换):
% S  ]8 [. r. L& |) @, y( ?2 {5 n6 O( [- d0 o$ F
[/url]+ C. M4 X- n' C! m  g% N

5 O) C' C9 ], C; e * s( " p1 `, k6 c4 F
    3)修改版本号,这样才能把新的产品ID/KEY烧入FLASH" V  e$ p9 o: j. w
, w  p& K8 ~- X) [1 M  t
[url=http://mico.io/ask/uploads/article/20150723/1661ce047fc9ea5e465db04acd59c24e.png]
7 x: b4 c: @# K6 c5 H, \

5 A9 O( Q# Z: @3 }$ {% X/ {" d ; D( ~, a3 F5 y: O8 a
    4)添加LED灯控制代码:3 ^' g! J$ m! _7 V
& ^( r* `1 v' X7 |& c
[/url], a7 ^# v: P8 I) p7 o" D( w

& l- z' W5 D" Q& c . C' X7 A: Q( g* \5 A, F
    5)改为收到云端消息后,解析JSON数据,并控制LED。
( e  S/ o5 S  v5 W% F
  x' T. P6 p$ q8 n* {8 {5 K- @8 D7 w[url=http://mico.io/ask/uploads/article/20150723/fb02025e4062a859d0d33d4178cd156a.png]
$ X4 E. o3 t1 ]0 E9 H; ~
: e4 X' E. Y4 F9 ?$ |7 {, Y

9 H6 o8 K; f7 c* L6 h& s    6)错误代码参考:在运行过程中如果出现错误,可在user_log中查看错误代码。
! U3 G9 U# j" M+ F. {' ?" C0 f( ^7 e- Z
[/url]
- E' P" ?/ f; Y; F8 p
2 k( V- N; N' ]3 E5 t& s& e& X$ ?1 o+ x
[url=http://mico.io/ask/uploads/article/20150723/9f6828473efaa4a01ae4434c236a2ef6.png]
% |$ ^! C: B& x/ C2 g0 h
* [, I/ ]' |( D4 J

; B- g2 Q! Y* }' g1 r9 q    7)MiCO SDK固件烧录。(详细固件烧录方法及步骤请参考http://mico.io wiki中心)% G! t: P' I* Q/ v) V- P; [
选择使用的烧录工具J-Link或者ST-LINK:" I6 S7 A) i1 Y; s* D2 a# T

) T, U% k8 Y  m[/url]
8 Y* N) ~2 g) [7 b- I1 U4 M* {0 F4 [- I9 c" _  n+ V* j1 U4 ]
6 s" {4 {# ^5 D" B
  编译/连接:; V5 |5 f/ n! g. `  I
4 f; \+ {6 M* l- @3 d) h/ a  N
[url=http://mico.io/ask/uploads/article/20150723/14ee93da638bb344905c2f6c7a8481ef.png]
  s2 J) d0 e- }; X, r3 D

( M1 n! g% e# ~& H) v, m" e2 ?0 k+ l ' h, B2 d3 B1 B8 N8 `/ t0 E  R8 `
  烧录/下载:
# s9 x4 S5 L: g6 [, ?, v( F! l
% _, }8 n2 e' f, O2 w/ v" C, o[/url]
) H* z; L, K# J& b
* o4 Z* l; i! n5 A; _ 5 e* u& I+ C5 r! W, a
第八式:用网页编辑工具(sublime等)开发微信APP代码
. T) G6 I3 N  ~, n9 C$ x以下为核心代码及其注释$ A! v: W* l5 J4 b& Q7 R
//应用程序入口在application_start(void),一系列动作(如配网、连接云等)以后,用户程序入口在这里。
5 B& ^" [* \& D2 MOSStatus user_main( mico_Context_t * const mico_context  
, {3 U, j/ _1 J$ o0 m0 c' X% e; v( V1 W{$ s7 u5 i' N: m) l( U; D6 C
  //user_log_trace();0 i1 p+ ~4 u+ \/ E6 ~' D: c1 t
  OSStatus err = kUnknownErr;5 C& l- Y8 U2 z
  fogcloud_msg_t *recv_msg = NULL;//接收数据结构体' O3 U$ |: A- T' q" X# l
  json_object *recv_json_object = NULL;//结构体内包含json数据格式
, M# D: g- ]7 h  /* rgb灯的色彩模式采取h***色彩模式(色相、饱和度、亮度) */' n: ^" @! X  z" T; O1 \
  bool led_switch = false;//rgb灯开关) a) x, a7 @0 R2 a
  int led_hues = 0;3 J( p. \8 M# c
  int led_saturation = 0;/ ^, x8 n' b3 P; Q# j/ _
  int led_brightness = 0;
& @- p4 a/ Z8 s- u  require(mico_context, exit);
* `3 m- ^# ]  i- c  h***2rgb_led_init();  // RGB_LED初始化
) A" I. w( l$ M' i* N  while(1){
( [5 N2 j  ]' x9 I' A1 s4 l  ]    mico_thread_msleep(100); //延时100ms* m. n! J7 Y' }/ u6 Y- I% f: q
    // 检测 fogcloud 连接状态
2 t; |% Z! Q, P' D8 J. }    if(!mico_context->appStatus.fogcloudStatus.isCloudConnected){
5 P2 |7 k! v1 k+ t2 O, s& X# A& Q2 V      continue;
% A6 s' e. J7 u    }! o: r$ Q2 ~, U! m+ @2 G$ f
    /* , a" ]+ S( J# \% T+ d( f% P
      接收来自云端的数据5 a6 Q* P" x- [+ q+ F" h
      recv_msg->data = +
" n. w" R0 g, P; ~4 A, v      topic表示模块订阅的MQTT通道名,data表示云端返回的数据0 F! j% I; ~* h* t! N
     */0 u7 v# m7 e! N1 p5 n6 R7 W
    err = MicoFogCloudMsgRecv(mico_context, &recv_msg, 100);& Z3 A7 g* ^% n  S0 O, o
    if(kNoErr == err){# Y- |3 ?4 n4 l. e- u1 A# V
// 打印  例://user_logtopic[30]=[de54a8ea/c8934691816b/in/write]data[23]=[{"rgbled_switch":false}]
+ [2 n3 {) g9 f4 L. Y      user_log("Cloud => Module: topic[%d]=[%.*s]tdata[%d]=[%.*s]", % {6 K  _1 A' ]6 c0 b6 x1 D7 Z( f# v
               recv_msg->topic_len, recv_msg->topic_len, recv_msg->data,
+ i/ h) X1 M; x- s2 z. Trecv_msg->data_len, recv_msg->data_len, recv_msg->data + recv_msg->topic_len); & k! O) Q0 S. I- [
// json格式的字符串数据转成json对象
9 F' x# V- K' D/ c8 W6 O& }9 x      recv_json_object = json_tokener_parse((const char*)(recv_msg->data + recv_msg->topic_len));
1 ]- D. c6 n8 [6 C& g: |      if (NULL != recv_json_object)
+ _" ]: E7 S& c  ^# r+ f" ^/ \4 G4 `/ \      { 6 J/ o4 l9 r' ^) b$ j/ m- ^
        //根据键值对遍历
  ]  Q% p' Q3 \5 u        json_object_object_foreach(recv_json_object, key, val) {' S+ ]( n* |8 M2 M! D
          if(!strcmp(key, "rgbled_switch")){
% O( i  z. u* l//如果键为"rgbled_switch",提取值“开关值”7 y. X. D" S0 u% g
            led_switch = json_object_get_boolean(val); ' j) Q* r( f2 B' O6 {6 ~
          }" J1 F' U+ p" E; Q4 g
          else if(!strcmp(key, "rgbled_hues")){
5 Z* a* ^7 l2 n) ~                        //如果键为"rgbled_hues",提取值“色相值"
# C, a3 l0 p8 h9 b8 {, c) z            led_hues = json_object_get_int(val);1 J& I% R) I8 e+ t2 [2 d* E; G
          }- \3 c0 P/ }) {
          else if(!strcmp(key, "rgbled_saturation")){
6 z; u7 g  }) M) N                        //如果键为"rgbled_saturation",提取值“饱和度值") K" H3 K3 f/ p1 m8 }9 N4 L
            led_saturation = json_object_get_int(val);
; ~: j; P0 I& G; I. S# K& R. i          }
" \' r4 r, @' t6 p3 v, Z5 M          else if(!strcmp(key, "rgbled_brightness")){
2 e9 _" |  j0 E3 X# M6 v' s- ]//如果键为"rgbled_brightness",提取值“亮度值"
" C! R% s/ c# n            led_brightness = json_object_get_int(val);, V! H' J8 z( T
          }4 n9 t4 {- X: f" p: H
        }* T/ V. ]; ~% C* s6 n% F5 l3 ], E
        // 控制LED
  f  o. S) m2 `9 x        if(led_switch){8 W: F* c5 I( W7 Z
          h***2rgb_led_open(led_hues, led_saturation, led_brightness);/ H# ]5 L8 P# {* J- l4 l+ E
        }else{3 d, i  Q5 P, v' Y, x
          h***2rgb_led_close();  // 关闭( e" U( G. T% i, n# [% Y
        }
' i) S. V1 K9 b. T        // json对象内存释放
" r7 ]- ]) ]$ \, ]- Y! o/ k        json_object_put(recv_json_object);
6 @6 ~7 \7 y/ U) [& a        recv_json_object = NULL;
* n4 O5 u8 e3 e( i      }  U3 U8 e/ }2 [6 [
      // 结构体内存释放
" s% M+ I% |; y3 O6 `      if(NULL != recv_msg){
1 s# P* |+ t1 p4 K' Y! g2 W- g& b2 j        free(recv_msg);
* Q! ?: ]0 s6 r" g' V        recv_msg = NULL;6 g- m/ \9 r) V: S2 q1 K4 U
      }4 b% ~; j  d1 d6 ~$ H
    }$ _4 B2 _9 q$ k: I/ w* v
  }
- g) {* ]5 l2 Fexit:
  N' O5 j1 L3 r; L3 @* |7 d  user_log("ERROR: user_main exit with err=%d", err);5 H; z" ~+ l& G' \7 P
  return err;* k2 V  A; y# \% V! T+ \
}
9 r6 z) Y) J& H* z, C2 f7 \& N' c+ `3 T1 V# y+ x& X
7 c. B7 a1 ~. p% A; c
第九式:使用Github工具托管APP代码7 ]$ i6 K( U1 [! b' W4 r4 |
  在例程包中(MiCOKit SDK的APP目录下),找到微信APP控制页面代码(index.html和yourID.html),将yourID.html.重命名为你的产品ID,如cabca380.html。拷贝这两个文件到本地git仓库,再同步到git服务器。同步方法详见附件——上传文件到GitHub.zip。- i+ n2 x, D5 {3 [4 J" a/ g" V
% o& |# C( A$ Y
[url=http://mico.io/ask/uploads/article/20150723/97411f3674d23cb747a33172ee9c1284.png]
$ H  o) |6 K( N, Z( j& m% H

7 O# t" U5 e  g4 n. y4 V . p- e% _; u. @, f# z& X' \
  index.html   —— OAuth按钮跳转到该页面(一般为设备列表页面,可不做改动)! c: o% T. s6 ~/ c3 J& t- W. m& e' o

* A; P3 b7 G' R: @) z; c[/url]) j" m6 m9 b7 H/ }0 _

2 K! u5 H7 V+ m" {- J' L4 ?% y* b5 l
  xxxx.html   —— 设备控制页面(其中xxxx为FogCloud上创建的产品id)9 _1 V) S4 I- @0 X0 k
+ I9 {2 j1 F. ^9 R0 v. u" j

2 H. }" `; O2 t( `[url=http://mico.io/ask/uploads/article/20150723/bdd3e767bff5fdcf06f16b6ee478f57e.png]
' c+ K5 W' \# a+ g7 g0 p

9 l7 k8 }  T: l0 q" ?( h$ N4 L
' G5 H) |( O* R4 u  详细代码见附件代码包,部分代码解释如下: 0 {  O  x4 {! S( J1 v
7 r- u- o! e6 R' F

% Z( l8 L' R4 }" _+ ]  q# H[/url]
7 @0 l" s9 " `% K7 H* " U- F( x; m1 g+ R, B# P* g# T
# H, W+ e) c. }9 E' |  k7 Y
[url=http://mico.io/ask/uploads/article/20150723/041017556fe9d8bf147cab201e4055c6.png]
  s1 u* G- V2 q

) z4 y1 G" {" u8 h ! L. s4 A2 B7 W( g

% `( q2 C5 z; D2 g7 i3 K$ T6 _5 Z/ j  修改、并提交代码后,如果没有配置WebHook让FogCloud自动更新代码,则需要到FogCloud上手动点击“发布”按钮更新代码,并通过git提交记录确认是否更新成功。
8 b) Q/ J2 n5 R! C4 e) E) A2 g% M
! H0 Q4 o& o$ G- T8 J  I' V& {$ u' t2 y  c1 n* P, p
第十式:FogCloud上生成设备二维码$ Z0 `- E. p8 ?5 }( L' T7 k6 Y
  (a) 创建新设备
9 D# z) S8 E' `3 }( \9 V9 b! s' s" m1 |& _- V
[/url]4 K) D4 W2 X8 o% w4 o4 m' E
$ P/ |& p) F) [/ s  j
( K, o' _1 q+ K; e; p& D/ L
(b)填写设备MAC地址(由小写字母和数字构成,设备上电后会向串口发送MAC地址及其他数据,可用串口工具查看)接口创建设备。
+ V: N5 y8 H8 K1 H7 h
$ I( ?, A8 T- E, `- B9 Y! M# E3 i3 w# J5 F0 u. c1 y% C
[url=http://mico.io/ask/uploads/article/20150723/60addb425f19b481c3d2ea9346bbd71f.png]
9 e! L8 A3 h+ P0 e

0 L. N* N$ c% K* n  Y" C7 J( K" N- o" m) M& T! ?3 a, g) w1 P

- L' J: g: f; l" U: K1 }3 i  (c) 为设备生成微信二维码+ \# O* ?" s% W% m! ~
  点击“同步到微信”按钮:  / I5 w. E0 D) M* q" P. k

1 e2 F' x" ?+ l0 S5 N: j[/url]$ `1 g# w" r- z  z
) @4 d: |4 k/ R
1 c6 \; k) K  ]0 F/ X
  选择创建的产品和要使用的APP后点击同步按钮。
' g& m' p; l* V2 A. n+ }/ D0 r/ I' [% B/ \* O5 P( e* I; P
[url=http://mico.io/ask/uploads/article/20150723/8391b8371fe9a3cf4338e65240989bf1.png]

+ N1 E0 j5 Y2 b' T2 `
  `9 e1 M2 C: Z
; W  U8 u6 k0 I" f+ T  成功后提示:{"result":200,"message":"success"}
$ ?6 e9 G9 Z. Z) W# t - j+ {( `% N$ s1 ^3 c
[/url]
- F+ W5 {2 v. m$ d5 f. w) @8 V: p! @& C* I2 [. [

. M0 J+ [0 p1 l' n2 V( n. J; [0 |+ T: B0 a7 ]4 x
  极少数情况会因为微信公共平台延时的问题出现err:500问题。等待几分钟后重试即可。
0 L7 B7 ^. Q4 a# I: _! X  返回到产品界面,可看到你的新设备。
- r5 p' w  {: U1 [. ]9 p8 l7 G5 }( n9 a/ h0 ?
[url=http://mico.io/ask/uploads/article/20150723/fb1885f6aaad37a08f169dbe29946d54.png]
1 r/ @3 q* j* ]( O' V/ v1 F1 |

& R3 p/ M, ~! Q6 X' }% E
/ o) m2 K! c0 W- g' I, y# [# p1 ^[/url]- }7 u: _* q% _4 V

2 T3 r! Y5 w6 o9 i
. O5 {8 ~# r" C' X% ?# ^( r  X; f. d+ A1 c
第十一式:使用手机微信扫码,测试“Airkiss”配网功能以及设备控制功能。
3 V6 I9 O5 H" Y7 n1 k. E, H) d  (a) Airkiss配网7 E3 K: t/ J; N1 b6 W8 O
  Airkiss技术可以帮助你的设备在没有人机交互的情况下智能配置当前Wi-Fi环境的SSID及密码。(假如你的智能设备是一颗灯泡,总没有屏幕和按键让你输入SSID及密码吧)9 O2 c. G$ b3 E7 T8 W
按设备上的Easylink按钮进入配网模式,底板上的LED(D1)灯快速闪烁;
! [  L% P; H. N3 a手机输入当前所在环境的wifi密码,点击连接,成功或超时会自动跳出该页面。
# Y, V& o9 j) ~2 f; h% I; S6 O
4 d* b% M# h  @' Z* U6 k6 H[url=http://mico.io/ask/uploads/article/20150723/18e3a2ba0846a30f245578b054272b7d.png]
: n' D4 G! g* T- S4 \" n6 u+ E
. W/ K# ~4 u* J8 x4 Y
* S& \- P8 G5 F$ O  y
  (b) 设备控制; h) ^- R8 u! t- {" m  G3 G
  Airkiss配网成功后会跳转到设备列表,红色圆点表示设备不在线,蓝色圆点表示设备在线。若配网成功后设备依然显示设备不在线,可点击右上角刷新按钮。点击列表进入设备控制界面,点击控制按钮,控制MiCOKit-3288扩展板上的RGB LED灯。
4 W4 g2 c2 f6 s4 h  B/ q' W已经配网成功的设备不需要再次进行Airkiss,只需点击测试公众号中的“Devices”按钮,进入设备列表,点击列表进入设备控制界面,点按按钮,控制MiCOKit-3288扩展板上的RGB LED灯。0 c7 C" R9 }! I$ c% t; x" R. l- z
; S" d0 W2 k2 r6 ?  t. H
[/url]( C: ^- U- q1 f4 P
, z" Q% \* W7 X( U9 y

  p+ n1 P: C4 g& [8 z% R0 F4 z[url=http://mico.io/ask/uploads/article/20150723/13e7c77638ede00ccf82d4fb10429ab2.png]
( ?' H' T9 ]/ F: \7 |* L
. ^" S9 v1 U+ i! X: C2 v* p) H

1 t) `; Q3 Y0 ?# [  如果您完成到此步骤,那么恭喜您大功筑基已成!!
1 r! m' S7 l' |7 L  武功在手,天下我有!; Y# @, ]7 k& M/ G1 G" M
  祝愿各位米客能手持MiCO利剑,在物联网智能设备的新江湖建功立业!
5 }/ E3 a- ]. Y0 D- Q- V0 K7 O
4 q1 Y7 ^' J1 b' }
另:源代码地址 http://pan.baidu.com/s/1bnsGEy7
* N9 Y2 i' Z/ r3 v: N6 _ 8 X) `7 O" T5 u; m
MiCO团队! j. F9 e: @8 Y
敬上!
: E! z8 k5 k% ^6 R2 ~[/url]
1 B5 @- f5 H, F2 Y# J
[url=http://mico.io/ask/uploads/article/20150724/02263811253059862ccc8df321bb95b5.jpg]
/ I" ~8 w1 W& W. A- Q5 P
; j! R! |% J: D; G3 _: D9 g2 B, z

0个回复

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

本版积分规则


关闭

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

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

GMT+8, 2025-12-1 21:25 , Processed in 0.725917 second(s), Total 65, Slave 45 queries .

Powered by 电子发烧友网

© 2015 bbs.elecfans.com

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