物联网
本帖最后由 micolover 于 2015-7-24 14:47 编辑 : a- `' x' f0 s- {! T* z
3 z; y# `+ Q) R9 h5 p& ~+ }
前言 8 E6 f: D- t1 p' f2 }/ B' V$ Y
大神玩转MiCO好生羡慕
+ F2 k# o; n, q& _& s ` d Y0 l 菜鸟低头不语无从下手
6 \& t z% c! L3 {. i( L6 B" Q% A8 U 别慌~看完下面的 武功秘籍 ,你也能成为 一代米侠 , 被人仰望 ! 1 r* [) |4 x" A
8 u: T) v) n- F5 }- E8 ?
一.微信控灯十一式 2 a# K% N$ h2 ]; X$ w( F/ `5 R+ a
第一式:注册开发者账号
% V1 | i' A; ~3 Y 第二式:使用个人微信号开通测试公众号
0 A. c/ [& O2 W* K 第三式:在FogCloud上创建、定义自己的产品
. A* c) v6 Z, d4 Y. f9 e8 t 第四式:在FogCloud上创建产品对应的微信APP 5 m1 N. ^) G5 M l% g
第五式:Github上创建微信APP代码托管仓库
" E6 l( C. a* S" @! f3 l8 u 第六式:配置微信APP以及微信测试公众号 ! h& H. f( t2 N' d9 ?( j' ^
第七式:使用MiCO SDK开发RGB LED灯的固件
0 {, Q- y0 J' ?$ f5 N 第八式:用网页编辑工具(sublime等)开发微信APP代码
. g& h6 W- X: F# M2 F 第九式:使用Github工具托管APP代码 # F) f$ w8 h0 ^. A! U+ t
第十式:FogCloud上生成设备二维码 4 I& g4 O% R5 w
第十一式:使用手机 微信扫码,测试“Airkiss”配网功能以及设备控制功能。
3 G& B+ q G/ _ 二.基本功 $ `) R: n r9 G2 f) x8 z
注意:练功开始前请确定射频驱动为最新版本
h; @( V: ]' s3 w h& I 版本查询及升级方法请参考MiCO社区 → wiki中心 → MiCOKit板块射频驱动升级
6 j; m4 V9 s* U. ?' H% Y* i 1. MiCOKit-3288开发套件;
0 p5 r! _( l3 Q+ _ 2. 开发工具请使用IAR7.3版本及以上;
, T" T& a9 c0 O5 x' w 3. FogCloud开发者账号(Fog云使用、开发必须);
( i3 U: T# k% ?; f( H \- U 4. MiCO SDK v2.2.0(固件开发包);
$ W- M6 q1 ~! N1 B 5. 个人微信号(开通测试公众号); 8 ?8 c8 T: f: X5 |
6. github个人账号(托管微信APP代码); 6 o' m) ?9 Z6 Z- C/ X
7. 网页编辑工具(sublime等); / N3 D$ v1 _. w+ C3 L9 w
8. 大致了解MQTT协议及json格式。
$ X; N. Y. U4 I: y8 { Z 2 ]2 E1 n1 H, g8 z
三.招式详解
* w4 ]2 t; C% ]0 A- ~. V& e
/ [* Q) g$ @2 i' _ 第一式:注册开发者账号
- L B) e; S- E( P5 l- z/ p; p 登录 www.fogcloud.io 直接注册账号即可。该账号将用来管理你的产品及APP。
1 [) T7 B/ I8 z! T2 h
& D# v# r# Q- @. v4 n+ N4 v [/url] / M) @6 S( U) G/ ~4 u* A# p. V
( X$ a* ]7 |0 N8 T% W
* P2 g* ~" w& F$ d9 X0 W; a$ k/ o0 s
; H4 P) u/ g8 u" @' R* ?0 N$ `
" l$ c0 Q3 w( P! Z4 [ 第二式:使用个人微信号开通测试公众号
- K3 I$ F: m% a J" P 浏览器打开 [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 ,点击登录,使用手机微信扫码,进入后即开通了测试公众号。
+ s$ n; L8 ~( A1 K K- K* Y! G
2 X) A1 e D( G0 _! W2 z: s [/url]
: n/ c, @% ~) c& Q
1 u& S7 r( _! ]+ ]8 D( T: o4 l
" ^" B S8 R6 Z9 V 获得微信号、appID、appsecrect,用于后续在FogCloud上创建产品对应的微信APP。
: D! i3 S3 `+ i! s; `; i2 x- x ; V1 n* p0 Z1 N+ V( S
[url=http://mico.io/ask/uploads/article/20150723/923e41bc3c91f99ba548d65e2ddd7ec6.png]
( j2 x2 ]0 Z" i 4 ?: Y5 S* u8 B' r" f/ g' s0 p$ @
" I& h% `, {) q, t 第三式:在FogCloud上创建、定义自己的产品 9 I( H/ G& g2 W0 ?; U0 ?
( f! |# J0 N' X
[/url]
% m' l% `4 B6 d ?2 @ + S; `2 {0 G0 n, y$ s! Y* B
& U2 O& ~% T ]; B1 O2 Q: b 根据提示填写相关信息,创建完成后,如下
8 y8 g3 L, `3 k9 C: U: W; y( |1 I
4 |' }. A% g. ~2 K6 y% } [url=http://mico.io/ask/uploads/article/20150723/ac518bc12959f06f82624e4d9e6fc841.png] 7 Y5 f+ M- U- Q7 ?! x
4 Z( e/ @3 n- Q" U2 d
5 Y( M v- Q8 e4 [" M
点击产品名称,进入详细信息: 1 q) N! I8 C7 R
9 J& T8 k% \* h/ N/ k [/url] 4 ?. H$ t) V* e
9 ], Q$ L% M7 p3 @- a; C$ J6 ~4 O
. q: Q' e( H$ ]0 _$ } 产品ID/KEY会写到设备固件代码中;
' f p& I3 _0 x& ~/ {9 k, { 创建产品的数据模型,数据模型是用来在云端定义产品功能、性能等特征数据的标准格式,可以储存设备监控、收集、控制、用户行为等数据,从而对数据进行分析,提升产品服务,开发案例过程中定义数据模型,能够有效帮助开发者将APP、云端与设备端的关键功能、特征数据等同步,避免开发过程出错。
) g5 c4 [* z% z2 I& s + @5 w8 G1 i3 w3 l$ w
[url=http://mico.io/ask/uploads/article/20150723/419d8575656778d542b24f70ff5d4aa2.png] + k* i6 J# u. H! |+ m* q
9 y2 T( J, b) m; I+ C+ \# C ' L- K9 w8 m' B& |
本实例仅控制MiCOKit-3288上的一个RGB LED灯,所需创建的控制数据点有:
+ Y4 \9 w# ]/ i" U1 @+ ` 1)开关(rgbled_switch) 读写属性为1 时间序列为否
" v0 d1 H- b( k6 J 2)色相(rgbled_hues) 读写属性为1 时间序列为否 2 a8 }- d1 L3 b4 _; K6 z
3)饱和度(rgbled_saturati on) 读写属性为1 时间序列为否 _( F% A( L y! I, w6 a9 x
4)亮度(rgbled_brightness) 读写属性为1 时间序列为否 , M8 c! T. G" R8 C3 p8 U0 p
*属性名和描述可按个人习惯添加
) @$ v3 O# r, m5 |! F5 B5 u 注意:在创建数据点时,“时间序列”选项:选中时云端保存历史数据;不选时云端只保存最新的数据。 4 x N) }, B: q2 A
数据模型的具体作用在后面的进阶教程中详细讲解。 - H& Q+ x4 |$ c; E0 K) q* i; c
! \9 U1 O# V6 ~; g# O' y8 z( d
第四式:在FogCloud上创建产品对应的微信APP {6 O7 @( U% M3 {
' ]+ j1 p# f/ c" g! ^) T ) a4 E a" u ^; ~4 U8 l% Q
[/url] ; @3 }- O, |" t M3 a: l
4 a. n" ?4 k) e! `9 H( _6 A 6 B; r, h& Q5 I% ]$ A- @
根据提示,填写相关信息,其中微信号、AppID/AppSecret从步骤2中开通的微信测试公众号中获得。
, b9 w+ U; B' K- X# J H: Z( v V ' k% i! v+ w1 [7 [- r3 ^
[url=http://mico.io/ask/uploads/article/20150723/12165d0d0d83feb3aba6851cc9588c08.png] ) T' W* A7 a \4 T4 E6 |) e' m
2 X; P) a7 B( K% \! ?
1 H: q# l) c8 l" O4 b/ H! f 第五式:Github上创建微信APP代码托管仓库 1 b( @2 h. B) K* X: u; Q
请登录github.com自行创建新仓库。并克隆到本地,克隆方法详见《上传文件到GitHub》。该步骤的目的是获得一个可以在任何地方访问的git仓库,后面会使用该仓库托管微信APP的代码(其他类似git仓库托管工具也可以)。 * c$ @7 j K( V
8 u. w& k' g: d: B
[/url] * |8 G/ _6 R2 c) k" G3 }" L
/ X6 n i. R- b3 L9 d
4 A' ], E7 O( h% u. b
获得仓库地址,例如: https://github.com/wangeshen/MiCOKit_test.git
+ p1 ^& z/ ]/ j4 j7 G* r4 J
; J7 T& _' H6 b" G+ M# {1 v
" w6 @, u+ X- I! ^. O' ~( c 第六式:配置微信APP以及微信测试公众号
& `- Q, e" m, M (a) FogCloud上的微信APP信息: 5 X' S! c% O# z7 y4 x8 `9 I3 L) P
/ B' i$ ^* ^1 \8 w
[url=http://mico.io/ask/uploads/article/20150723/3e552dc6f9c1097d68b01b4643a04921.png]
, \6 U+ I$ N c5 T- [0 k, U5 Y
0 {& p [' `6 H+ [
9 x1 G7 e/ L% X/ L6 t 其中URL和Token会在后续配置微信测试号时用到。 ( d7 k: N. W! ?8 v1 z, `: Z. ` W
7 \5 q5 W- k, {* g7 e8 c" T (b)Git部署(同步微信APP代码到FogCloud) % U5 c" ] k1 Z) B6 {; n0 d5 L
x! v$ T7 b2 ^ [/url] 9 D! d2 n( F& ?2 t) }
& W: C) D" w. E1 M- @ ( C$ p/ u0 ]* P: v2 `2 G2 A
其中: ' ^* ?6 x( ?0 C/ v% q( N
Repo即步骤5中创建的github仓库地址,填写后保存;
0 F& W0 f- C, s b$ i Deploy key和Web Hook Url可添加到github仓库的设置中,以自动同步代码到FogCloud;也可以不添加,但是github仓库中代码更新后,需要手动点击“发布”按钮来同步代码,同步后右边可看到最新的代码提交记录。
9 ^9 @% a+ Y0 e9 v
7 f6 Y0 u. v0 x% e3 r; B
, h; v; A7 O3 E1 r/ B [url=http://mico.io/ask/uploads/article/20150723/47bf7c17eb7ad746792160a06f14ab20.png]
. Y I) q& L( F0 m( g$ L( W) E7 b% j
7 M4 d7 F# G+ e* @, _ ) q* y: s$ N0 ?* \4 q5 V6 k V+ O) p* {
(c) 微信菜单管理
/ S, Q8 A6 C0 U* ?" a3 _% x* L( O 通过FogCloud提供的微信公众号英国威廉希尔公司网站
菜单定制功能,方便的定制手机端微信上的控制界面及功能;至少包含“Airkiss”按钮,打开微信Airkiss配网功能,“OAuth”按钮(名称可自定义)进入设备控制。 9 D5 L6 t8 J! ^
1 a9 y* N& [ k) R' r- H0 l
9 p5 r/ p8 C7 l l# Q' \ [/url]
& }& _" K% G" {
: V. S2 b) E( T: ], D
3 U& R& n9 E) a (d) 设置微信测试公众号 URL与Token在创建的APP信息中可以找到
2 U( k. ?- L; W0 N( J( Y 修改配置信息: . D/ x3 @4 X/ H5 G- i6 K# z$ U3 P
URL一般为: [url=http://4addb71f-1b5c-xxxx-94c5-f/]http://4addb71f-1b5c-XXXX-94c5-f ... ylink.io/wechat.php
* _* e9 z) A# S, F' G1 v1 b 下划线部分作为JS接口安全域名和授权回调页面域名。
8 w* x& t' Z, }/ x3 P! \6 [8 y
/ |! M! @$ w: A- ~4 { [/url]
) C2 C2 q; R4 y1 V
2 n, f: s, Z$ e# a3 C' e' G : t# V: x. ^9 i( U% G) l% D: T
开通所有测试功能,并填写网页授权域名:
P7 R1 C' [6 Q D! p3 ] 2 s% W$ A* W2 ?' M; t5 v
[url=http://mico.io/ask/uploads/article/20150723/4147bd2c388956cee39120fa591cd440.png] 8 r/ q3 S+ Y4 F* h
% L8 o8 B" P* D) S
0 O6 [% n9 w. r9 \1 l) b7 J 点击修改,打开如下:
; X. k- T" Z& x0 y
( f5 B. s* ~% O* x7 m+ z [/url]
- r- m/ e! W( j) m , s$ D t& Y; b6 [* W5 P' Y( j
1 h$ J( a- s# I1 v& |) i/ n 同“JS接口安全域名”,格式为前面提供的URL的域名部分,如xxxx.app.easylink.io,其中“xxxx”为FogCloud上创建的微信APP的id。
: K( B( s9 I, M$ N 0 u' D' v" G8 L3 k# O
# }' q$ y6 s, U. O' ] 第七式:使用MiCO SDK开发RGB LED灯的固件
# w- @ \1 T8 z" ] (a) 登陆MiCO开发者网站mico.io,去MiCO社区注册账号,并登陆; # A6 f8 V/ j; e6 F- O" o/ E
w$ E& e" }* M) }0 |9 f% N
[url=http://mico.io/ask/uploads/article/20150723/3c04c03f3d922eb74c06906c610b9290.png]
' W$ D. W* ^) A' p8 t* N( _% N - y( C9 `- g% G0 i2 n
* p% j* H2 C0 m9 P& A% W8 l (b) 重新打开mico.io英国威廉希尔公司网站
,开发者中心 ==> Wiki中心,下载MiCO SDK。
/ h; G. z2 `3 @6 d M
* l: G: n! `4 R. s8 a [/url]
' W2 T8 t9 e" V: Z " t q* k/ U2 D7 w2 K& [. h
! r* ?. ]. ^0 R& t7 u4 B1 A
(c) 打开MiCO SDK中的微信开发实例工程:
( e1 q* ^! S$ Q
+ b3 f+ f2 Z+ ^) F% F [url=http://mico.io/ask/uploads/article/20150723/3c6381767bf00833cab64ed4c37df2f8.png]
( g' p0 F: z. z 0 B/ S! G9 [, i0 R& C x W! E
% _$ q& G, n3 I( e# S1 q 1)开发者手中拿到的可能是硬件平台可能是MiCOKit3288或者MiCOKit3165,在编译工程时要先选择硬件平台; $ Y" [6 C/ j1 i: P; c- |6 e" A
2)将FogCloud上创建的产品ID/KEY写入固件(必须替换): $ J0 M6 ^& @: V& B u' |: }; V! s
$ p1 N2 ]7 \0 c7 m" q [/url]
" h- j0 M, ]/ M4 l / \# ~$ n1 O; }6 b% g& r9 Y
+ y' v- d: [& t8 D4 y- X
3)修改版本号,这样才能把新的产品ID/KEY烧入FLASH
9 U% U! r) G( v( j ( s/ \. x- q( \
[url=http://mico.io/ask/uploads/article/20150723/1661ce047fc9ea5e465db04acd59c24e.png] . d: U4 G! u- F5 J" s
8 m1 T- D4 G* [) B1 O
. w+ q$ J2 w! v
4)添加LED灯控制代码: " s, F8 n: l, q# V
' |/ s, j3 H- s7 N2 g/ N& R# I5 _; y
[/url]
) G/ ?: C; G* X7 x& a6 N) } 1 u, ]' j7 D8 ~. t, Q
) |0 r2 _2 v% q3 b* h
5)改为收到云端消息后,解析JSON数据,并控制LED。 9 \7 W! M4 K* [
. C6 ~5 R1 Y3 {' ? [url=http://mico.io/ask/uploads/article/20150723/fb02025e4062a859d0d33d4178cd156a.png]
) e( h5 H0 ^& E$ @1 [
2 ~/ W8 q, ]+ G8 I2 u& s7 [8 N
4 c$ T2 h9 g! ^1 L1 Y/ p/ q 6)错误代码参考:在运行过程中如果出现错误,可在user_log中查看错误代码。
- p) ?" X6 d% v 6 @' A) K- F& u2 _. u
[/url]
/ z+ X) e0 o* Q& _6 M + W# `% N0 ?7 }* ~
6 h2 {, X! ?3 N" P2 t" ] [url=http://mico.io/ask/uploads/article/20150723/9f6828473efaa4a01ae4434c236a2ef6.png]
6 e" D) z! y9 o# Y8 z, i; F" G
f8 b" H j# T9 H' c. A 4 r p. Y% ^0 r+ h* g9 r
7)MiCO SDK固件烧录。(详细固件烧录方法及步骤请参考 http://mico.io wiki中心) # P4 J% ?1 f t" ^- h3 t, x
选择使用的烧录工具J-Link或者ST-LINK: $ R W0 n8 I, l) r
7 G1 D5 M* s* a [/url]
& ~) Q H& J- _, U
9 }: C$ J; P1 B# y- `
+ q" C( S$ g" E3 | 编译/连接:
" e% K+ w/ A3 v( s ' t6 j: c% j. U3 m: `
[url=http://mico.io/ask/uploads/article/20150723/14ee93da638bb344905c2f6c7a8481ef.png] 2 P, P# \7 j7 H' |1 w8 T
! C% g! |; i( Z( W( Z
2 D: k, M1 ], i+ |- R 烧录/下载: $ N s- D3 J1 [1 E$ ^
* y; t& ^) Y2 j' c* ]+ ?3 ]
[/url]
! _4 K! Y, `8 s* b# V% z, f. y 9 p" {' }) T! d, {2 ]8 C8 Z
- V! r9 F3 S" a7 m 第八式:用网页编辑工具(sublime等)开发微信APP代码
% c. I8 v* D0 s& U 以下为核心代码及其注释 $ Q5 S! v7 P# c# u2 q2 D
//应用程序入口在application_start(void),一系列动作(如配网、连接云等)以后,用户程序入口在这里。
; a8 v$ G. d+ b5 I2 x; x/ R: s; I OSStatus user_main( mico_Context_t * const mico_context
' j9 J6 L1 U, c2 G5 L { 6 l* V, y% Z# c
//user_log_trace();
& h0 `( O1 R$ v. d! ^ OSStatus err = kUnknownErr; ( Z" v. T2 q; P0 x
fogcloud_msg_t *recv_msg = NULL;//接收数据结构体
5 C7 @$ {& U8 s5 g% T$ M( m( ^ json_object *recv_json_object = NULL;//结构体内包含json数据格式 / ~- q5 i# ]2 J' C* I8 q* y9 c
/* rgb灯的色彩模式采取h***色彩模式(色相、饱和度、亮度) */
" G7 R( i7 ?0 }# E' D$ a! k) E( A bool led_switch = false;//rgb灯开关 5 N6 v& a% f3 x+ Q0 J1 N2 Q- S
int led_hues = 0;
" o8 m$ P: Z. J0 {7 F& d$ q int led_saturation = 0;
# |+ \/ w& o+ d% J+ m int led_brightness = 0;
; k; b0 i1 `& o require(mico_context, exit);
/ C; n, i3 T# l h***2rgb_led_init(); // RGB_LED初始化 : B% k0 f; m1 n9 d, p# k B) V
while(1){
1 ]* \2 q$ K0 `, A7 m mico_thread_msleep(100); //延时100ms 3 v) a/ Y/ o, p" N7 J; N
// 检测 fogcloud 连接状态 + T% [: D- l* q* p; V
if(!mico_context->appStatus.fogcloudStatus.isCloudConnected){ 1 {( ]. q) g, ]* z
continue; - g' @5 X6 C0 }5 E$ B5 c+ v
}
7 x2 r- P6 d5 y, G4 h+ [2 C /*
6 J% N( @4 t; K2 S! \- \3 K0 q) t9 S 接收来自云端的数据
. w# A9 b7 }4 w0 v1 P; l! E `$ y recv_msg->data = +
I$ v1 B7 p) M! N8 V topic表示模块订阅的MQTT通道名,data表示云端返回的数据
/ T% A) Z. i1 q */
: v k8 s+ o" W+ ` err = MicoFogCloudMsgRecv(mico_context, &recv_msg, 100); % W1 a2 p5 Z/ `) X, p
if(kNoErr == err){
, }( N. d& m# } // 打印 例://user_logtopic[30]=[de54a8ea/c8934691816b/in/write]data[23]=[{"rgbled_switch":false}]
7 V! `- s! `' m- ~& A$ q user_log("Cloud => Module: topic[%d]=[%.*s]tdata[%d]=[%.*s]", " R2 S! e. y8 J M# W* ? P4 v8 b0 |
recv_msg->topic_len, recv_msg->topic_len, recv_msg->data, 4 X% \6 B% G! D$ P2 g! @
recv_msg->data_len, recv_msg->data_len, recv_msg->data + recv_msg->topic_len);
( T$ T7 K1 g8 n // json格式的字符串数据转成json对象
. ?7 s& u2 I, E1 {8 Y7 d7 X% S3 b recv_json_object = json_tokener_parse((const char*)(recv_msg->data + recv_msg->topic_len));
4 P2 ~9 @. l0 Y, A. k& g1 Y3 D X if (NULL != recv_json_object)
5 ]0 r! q% q# V: W" c1 `0 Z" g { : z! z& _5 [' j5 b) T
//根据键值对遍历
) c7 C( b2 c: J% u1 E/ @ json_object_object_foreach(recv_json_object, key, val) {
* J& K" d* c: ?8 p2 H9 ?, d% z/ e+ x if(!strcmp(key, "rgbled_switch")){ , w8 X) @5 c+ U# ^9 z( G
//如果键为"rgbled_switch",提取值“开关值” 5 E9 S3 |/ u: l& ?5 A7 I
led_switch = json_object_get_boolean(val); 6 K/ d3 [4 R! L$ E8 B( E5 V0 M4 X
}
9 q2 l9 m _9 x' E4 E else if(!strcmp(key, "rgbled_hues")){ * F/ K% | Q0 I) u% |: m
//如果键为"rgbled_hues",提取值“色相值" & |7 N% Y, a2 L& H1 u
led_hues = json_object_get_int(val);
" @0 x0 J p A } 3 p/ |, [7 u0 p- H& }7 |4 J( T5 z
else if(!strcmp(key, "rgbled_saturation")){
+ q" C2 O8 U+ i; V4 r //如果键为"rgbled_saturation",提取值“饱和度值"
! I6 S( I# s9 K led_saturation = json_object_get_int(val); ! v3 J) U: A' a6 z8 F
}
! w" C, T1 q# t else if(!strcmp(key, "rgbled_brightness")){
2 Z+ _ ?3 T$ t# f# H9 r9 h //如果键为"rgbled_brightness",提取值“亮度值" y ~& C/ k2 E' O; D
led_brightness = json_object_get_int(val);
: P# m0 z/ W, V* o% g }
0 G0 `+ J( H4 _& \( c% ^ }
, ?* P& S! t+ J, y5 m4 C- h( Z& H: a // 控制LED
4 t, m2 }' G1 e" b/ X% \: B if(led_switch){ 1 d& B, Z4 X: L- m. X% u+ E
h***2rgb_led_open(led_hues, led_saturation, led_brightness);
, B" w/ t$ o: l7 g; t0 c }else{ ; D J) w9 ]; e! c; h9 M- ~! L
h***2rgb_led_close(); // 关闭
9 u3 J* A/ a3 o9 F5 C7 v) x, @ } . i: C. p* r1 g( ~
// json对象内存释放
" r: O1 o8 E! z json_object_put(recv_json_object); $ K2 p( ]3 o' }$ G5 e0 c
recv_json_object = NULL;
0 R) b, c( |. O: [5 v8 B }
( s8 r6 V: s8 t8 q // 结构体内存释放
& |3 W1 Z- `4 x4 \) w if(NULL != recv_msg){ 8 D* y2 j. V) V) j& S5 @8 v
free(recv_msg);
# D9 a! \ ]% m$ G! M ~# n recv_msg = NULL;
- r& M) a0 Z0 C3 u } . U: ~2 h7 K: H2 C& C
} : ~ e) q; E, S0 u/ I
}
0 W+ x, I# a, b exit: ) e' t; s6 h3 h) t! r+ @5 V
user_log("ERROR: user_main exit with err=%d", err);
3 _& [1 p( }& \; W" F8 O return err;
( F% c( B- i3 X# b; U. _) M } , \+ U( K9 r! T9 d! J5 i x
) v& q' U6 b7 V
( U7 X3 z3 h8 _- U0 [6 w; i 第九式:使用Github工具托管APP代码
9 R7 }9 d: {1 V! P 在例程包中(MiCOKit SDK的APP目录下),找到微信APP控制页面代码(index.html和yourID.html),将yourID.html.重命名为你的产品ID,如cabca380.html。拷贝这两个文件到本地git仓库,再同步到git服务器。同步方法详见附件——上传文件到GitHub.zip。
! D2 X( d/ ]6 Z Z0 _& k# D, A 7 k- V2 T$ x/ o9 Z5 r9 S: h
[url=http://mico.io/ask/uploads/article/20150723/97411f3674d23cb747a33172ee9c1284.png]
$ d0 @: N O, E6 e- r3 a( s 2 i9 H; X" s m% l
6 s/ b R2 `, Q2 X3 D/ I
index.html —— OAuth按钮跳转到该页面(一般为设备列表页面,可不做改动)
4 f; b- R7 v5 h3 L2 P + y& C, P7 r- b$ k- w2 P$ _
[/url]
3 \7 p! l B* P3 g" t
+ f7 c1 b7 ~& r2 P1 D6 F$ L) J3 n ' {! t1 b: }+ \0 M2 t
xxxx.html —— 设备控制页面(其中xxxx为FogCloud上创建的产品id) 8 y6 |6 I% \8 ^
$ Y* l/ k* r& {' O9 ] J7 X6 \* k
: q1 Q' E) X5 |5 Q& @
[url=http://mico.io/ask/uploads/article/20150723/bdd3e767bff5fdcf06f16b6ee478f57e.png] 3 S; B1 c4 I- A7 B- C
% N; [2 I; b8 j }! G/ `
3 G) C, x5 W$ W* h
详细代码见附件代码包,部分代码解释如下:
2 ~, [3 Z+ ^9 {" [5 p
; _6 B# A$ C9 _' x$ f) q+ u. Y
9 s' J, ?3 J: A8 J, Q$ ` [/url] H$ l: B |9 j' S$ b
1 L. i7 V* C- o4 [8 \) A+ ^
: t6 J+ K* i y% f/ x4 S3 S [url=http://mico.io/ask/uploads/article/20150723/041017556fe9d8bf147cab201e4055c6.png]
/ X; ?% a% [5 y* U/ {. R 6 c* m- H2 x0 P7 L' d- r
+ x& n {& o& ]3 y) ?) `# z1 f
! N2 E, V/ B# K. `/ g 修改、并提交代码后,如果没有配置WebHook让FogCloud自动更新代码,则需要到FogCloud上手动点击“发布”按钮更新代码,并通过git提交记录确认是否更新成功。
% a- W/ B0 A: S+ z4 Y" ^% o " e* k) d- i( [4 e5 \9 J
' y' v, v$ n: p5 h: Z$ n 第十式:FogCloud上生成设备二维码
. U* i: @' {) ^4 e6 E7 q4 F& i4 E (a) 创建新设备
* D2 l5 U' P2 I" P. ?2 {7 p 5 m2 V% K% N2 H9 X
[/url]
" d6 w- r u; |5 Y
8 O* W6 E) e$ s$ G/ L - G2 b Y+ H3 O) X
(b)填写设备MAC地址(由小写字母和数字构成,设备上电后会向串口发送MAC地址及其他数据,可用串口工具查看)接口创建设备。 7 a% L; P3 }0 O" l2 F* m _
3 F% h7 Y7 {$ Q3 F# R; d
) C- [( l3 @# W. @& \) j [url=http://mico.io/ask/uploads/article/20150723/60addb425f19b481c3d2ea9346bbd71f.png]
# H# L9 U7 @8 }5 l; Y0 N+ K
# u1 N$ T; y6 ^2 i
. _. C3 G$ q% ]6 M( F- l- L3 O
+ j) V, L3 ^& d2 K/ ` (c) 为设备生成微信二维码 - @: U6 X; S1 ?9 E2 e3 F
点击“同步到微信”按钮: % A2 ]3 `4 e9 b2 q- A2 |% M
/ b; o) b. }/ v" X" m% U5 O
[/url] ) D: q2 H" q3 N
: p. r$ M8 j ?3 I l ' f5 |. [0 H* L4 ^) ^5 R' i
选择创建的产品和要使用的APP后点击同步按钮。 6 s+ N8 J& b/ X- C+ S4 i _. I8 j, a
3 _0 N' \6 W' f3 Q4 u5 p4 r/ Z [url=http://mico.io/ask/uploads/article/20150723/8391b8371fe9a3cf4338e65240989bf1.png]
& f) q6 Y, B2 |+ {: b: f5 Z/ E/ A- r& [
! F1 V6 C8 g' k( ^
7 `( @* d) H$ E6 { Q 成功后提示:{"result":200,"message":"success"}
. M$ I f( g+ J# i& c 7 q1 H8 }( s# s* J' f
[/url] 6 Y4 ]4 E9 r4 C, K$ m
9 m q5 M) n, L/ g( Q 1 j2 `' ]: m3 t9 k- X2 [
$ ~! A3 t) N [) g# n 极少数情况会因为微信公共平台延时的问题出现err:500问题。等待几分钟后重试即可。
- I0 }0 I& l5 B& Q 返回到产品界面,可看到你的新设备。
c2 V R# ]0 R* O . R" o+ B* p2 C- g
[url=http://mico.io/ask/uploads/article/20150723/fb1885f6aaad37a08f169dbe29946d54.png] * L' R, L, b0 ], o$ {: _
; L& G9 ~" N, c4 e& p" k# H
$ X- U5 g+ K ]) C8 S
[/url]
! b* @# W7 E0 c" v
, G. a1 o1 I: ~( R
8 n/ L: q' N# z; x5 `1 g : p1 }+ B" | o% _% `
第十一式:使用手机微信扫码,测试“Airkiss”配网功能以及设备控制功能。 ! B* C& ]' E9 s' v- w- A
(a) Airkiss配网 9 f& L$ d: b1 K$ o# {( n! [
Airkiss技术可以帮助你的设备在没有人机交互的情况下智能配置当前Wi-Fi环境的SSID及密码。(假如你的智能设备是一颗灯泡,总没有屏幕和按键让你输入SSID及密码吧)
9 A7 k+ N* G% t& d6 N0 A, [! h7 y 按设备上的Easylink按钮进入配网模式,底板上的LED(D1)灯快速闪烁; $ M- O) g6 a1 H+ I4 d. b2 h
手机输入当前所在环境的wifi密码,点击连接,成功或超时会自动跳出该页面。
8 \) w) U$ k. _
8 b9 a# {+ ^- Z3 f0 s9 c [url=http://mico.io/ask/uploads/article/20150723/18e3a2ba0846a30f245578b054272b7d.png]
, B& Q8 ?3 w, ]+ N) O6 {1 j5 t
: M4 l9 Q: u" e9 ` " ^7 }6 p. |& g+ u |; f
(b) 设备控制 ' R f) R; \. l
Airkiss配网成功后会跳转到设备列表,红色圆点表示设备不在线,蓝色圆点表示设备在线。若配网成功后设备依然显示设备不在线,可点击右上角刷新按钮。点击列表进入设备控制界面,点击控制按钮,控制MiCOKit-3288扩展板上的RGB LED灯。 & A7 h; q2 ~& a& V7 T
已经配网成功的设备不需要再次进行Airkiss,只需点击测试公众号中的“Devices”按钮,进入设备列表,点击列表进入设备控制界面,点按按钮,控制MiCOKit-3288扩展板上的RGB LED灯。
1 D1 u) \! a7 h : ~% @4 F0 ?9 ^& {
[/url]
! B& w* p" w2 d2 C+ g: y 0 d5 y" ?8 n7 a& S' G" S x
, p+ x3 N1 u& `* P. m
[url=http://mico.io/ask/uploads/article/20150723/13e7c77638ede00ccf82d4fb10429ab2.png] 2 e" s/ W8 {! h, A
: o8 ?% o+ t/ \; `( S& ^$ [
# H$ b3 K8 Q1 a/ q* ^: ~0 t' p l 如果您完成到此步骤,那么恭喜您大功筑基已成!!
1 Z& r0 Z1 W1 U k5 P4 e' w 武功在手,天下我有!, \: {. v1 i$ R( l9 A3 h2 Z5 x
祝愿各位米客能手持MiCO利剑,在物联网智能设备的新江湖建功立业!
( W4 I- y2 G6 y& r7 _1 w& h' V
; j/ Y* b! ]# r: ~6 s/ G. e! l 另:源代码地址 http://pan.baidu.com/s/1bnsGEy7 8 H$ v4 k d1 C0 \3 Y
2 y: F& ?! q* Z t/ \9 D/ L MiCO团队 $ s+ w. x8 L5 w8 g
敬上! 7 r; A, i7 Q# B" R3 H" K
[/url] 7 A& r/ y* H8 d, C
[url=http://mico.io/ask/uploads/article/20150724/02263811253059862ccc8df321bb95b5.jpg]
/ B3 p7 O$ L) @ + S0 w: o7 i# X9 ]
更多回帖