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