【MiCO教学贴】微信读取温湿度传感器数值开发实例 - 问答 - 电子技术论坛 - 最好最受欢迎电子论坛!

【MiCO教学贴】微信读取温湿度传感器数值开发实例

micolover ( 楼主 ) 2015-7-30 10:10:54  只看该作者 倒序浏览
  
MiCO  Documentation Working Group (MDWG)
  
  
Jenny Liu
  
  
Track  Number: 0009CN
  
  
MXCHIP Co., Ltd
  
  
Version:  1.1
  
  
2015.07.29
  
  
Category:  Technical Manual
  
  
  
微信读取温湿度传感器数值开发实例
摘要(Abstract)
本文档仅介绍如何使用MiCOKit开发套件(MiCOKit-3288或MiCOKit-3165)开发一个简单的,通过微信读取温湿度传感器数值的应用实例过程。
适合读者(Suitable Readers)
本文适用于所有MiCOKit开发套件的开发者,
并适合所有MiCO-物联网(IoT)设备开发者参考。
版权声明(Copyright Notice)
Copyright (c) 2015 MDWG Trust and the persons identified as the documentauthors. All rights reserved.
7 l% E9 D  G$ e/ l

9 o! ~5 A, z5 N7 f$ L/ l! k
目录

2 m8 @& o/ B; ~4 D9 v3 c
1.    概述
本文档仅介绍如何使用MiCOKit开发套件(MiCOKit-3288或MiCOKit-3165)开发一个简单的,通过微信读取温湿度传感器数值的应用实例过程。
2.    准备工作
注意:开始前请确定射频驱动为最新版本
版本查询及升级方法请参考MiCO社区 → wiki中心 →MiCOKit板块射频驱动升级
1. MiCOKit-3288开发套件;
2. 开发工具请使用IAR7.3版本及以上;
3. FogCloud开发者账号(Fog云使用、开发必须);
4. SDK_MiCOKit_V2.2.0.3(下载请至:http://mico.io/wiki/doku.php?id=micokit_sdk);
5. 个人微信号(开通测试公众号);
6. github个人账号(托管微信APP代码);
7. 网页编辑工具(sublime等);
8. 大致了解MQTT协议及json格式。
3.    开发流程
1. 注册FogCloud开发者账号;
2. 使用个人微信号开通测试公众号;
3. 在FogCloud上创建、定义自己的产品;
4. 在FogCloud上创建产品对应的微信APP;
5. Github上创建微信APP代码托管仓库;
6. 配置微信APP和微信测试公众号;
7. 使用MiCOKit SDK开发固件;
8.用IAR或MDK工具开发MiCOKit固件代码(代码注释);
9. 使用Github工具托管APP代码;
10. 在FogCloud上生成设备微信二维码;
11. 手机微信扫码,测试Airkiss配网功能、设备控制功能。
; q* d! _. o0 A; o2 ~
4.    详细步骤4.1.    注册开发者账号
登录www.fogcloud.io直接注册账号即可。该账号将用来管理你的产品及APP。
                              
4.2.    使用个人微信号开通测试公众号
浏览器打开http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login,点击登录,使用手机微信扫码,进入后即开通了测试公众号。

3 M2 A$ D6 r2 j0 x% H
获得微信号、appID、appsecrect,用于后续在FogCloud上创建产品对应的微信APP。
4.3.    在FogCloud上创建、定义自己的产品
根据提示填写相关信息,创建完成后,如下
/ B! l6 C' Y, A
点击产品名称,进入详细信息:
产品ID/KEY会写到设备固件代码中;
创建产品的数据模型,数据模型是用来在云端定义产品功能、性能等特征数据的标准格式,可以储存设备监控、收集、控制、用户行为等数据,从而对数据进行分析,提升产品服务,开发案例过程中定义数据模型,能够有效帮助开发者将APP、云端与设备端的关键功能、特征数据等同步,避免开发过程出错。
本实例读取温度与湿度数据,所需创建的数据点为:
1)温度(temp)         读写属性为0  时间序列为否
2)湿度(humi)                读写属性为0  时间序列为否
*属性名和描述可按个人习惯添加
注意:在创建数据点时,“时间序列”选项:选中时云端保存历史数据;不选时云端只保存最新的数据。数据模型的具体作用在后面的进阶教程中详细讲解。
4.4.    在FogCloud上创建产品对应的微信APP
根据提示,填写相关信息,其中:微信号、AppID/AppSecret从步骤2中开通的微信测试公众号中获得。

+ T3 T, d$ O- w8 Q
4.5.    Github上创建微信APP代码托管仓库
请登录github.com自行创建新仓库。并克隆到本地,克隆方法详见《上传文件到GitHub》。该步骤的目的是获得一个可以在任何地方访问的git仓库,后面会使用该仓库托管微信APP的代码(其他类似git仓库托管工具也可以)。
获得仓库地址,例如:https://github.com/wangeshen/MiCOKit_test.git
4.6.    配置微信APP以及微信测试公众号
(a) FogCloud上的微信APP信息:
其中URL和Token会在后续配置微信测试号时用到。* y, ~" N& ]" S. L) {
(b)Git部署(同步微信APP代码到FogCloud)
其中:
     Repo即步骤5中创建的github仓库地址,填写后保存;
Deploy key和Web HookUrl可添加到github仓库的设置中,以自动同步代码到FogCloud;也可以不添加,但是github仓库中代码更新后,需要手动点击“发布”按钮来同步代码,同步后右边可看到最新的代码提交记录。

7 E$ s% m/ l5 x$ ^
(c) 微信菜单管理
通过FogCloud提供的微信公众号首页菜单定制功能,方便的定制手机端微信上的控制界面及功能;至少包含“Airkiss”按钮,打开微信Airkiss配网功能,“OAuth”按钮(名称可自定义)进入设备控制。
(d) 设置微信测试公众号 URL与Token在创建的APP信息中可以找到
修改配置信息:
URL一般为:http://4addb71f-1b5c-XXXX-94c5-f3d93795a17e.app.easylink.io/wechat.php
下划线部分作为JS接口安全域名和授权回调页面域名。域名中不包含http:// 和 /wechat.php!!!
开通微信测试号的所有测试功能,如下图1,2,3:
点击4修改,填写网页授权域名,打开如下:
同“JS接口安全域名”,格式为前面提供的URL的域名部分,如xxxx.app.easylink.io,其中“xxxx”为FogCloud上创建的微信APP的id。
4.7.    使用MiCO SDK开发固件
(a) 登陆MiCO开发者网站mico.io,去MiCO社区注册账号,并登陆;
(b) 重新打开mico.io首页,开发者中心 ==> Wiki中心—MiCOKit发布中心,下载MiCOKit SDK。
(c) 打开MiCOKit SDK中的微信开发实例工程:
1),开发者手中拿到的可能是硬件平台可能是MiCOKit3288或者MiCOKit3165,在编译工程时要先选择硬件平台
2)将FogCloud上创建的产品ID/KEY写入固件必须替换
3)修改版本号,这样才能把新的产品ID/KEY烧入FLASH
4)添加读取温湿度代码:
5)改为从开发板上读取温湿度数据后,打包成JSON格式,并上传到FogCloud。

; _' j9 m, s7 s
6)错误代码参考:在运行过程中如果出现错误,可在user_log中查看错误代码。
% p/ \7 E, ?4 T; f  J$ b  ]
7)MiCOKit SDK固件烧录。(详细固件烧录方法及步骤请参考http://mico.io wiki中心)
选择使用的烧录工具J-Link或者ST-LINK:
8)编译/连接:
9)烧录/下载:
4.8.    用IAR或MDK工具开发MiCOKit固件代码(代码注释)
//应用程序入口在application_start(void),一系列动作(如配网、连接云等)以后,用户程序入口在这里。
OSStatus user_main( mico_Context_t * constmico_context )
{
user_log_trace();
  OSStatus err =kUnknownErr;
  json_object*send_json_object = NULL;
  const char*upload_data = NULL;
  uint8_t ret =0;
  uint8_tdht11_temperature = 0;
  uint8_tdht11_humidity = 0;
  // 将温度与湿度数值同步显示在OLED上
  charoled_show_line[OLED_DISPLAY_MAX_CHAR_PER_ROW+1] = {''};
  require(mico_context,exit);
  // 初始化温湿度传感器DHT11
  ret =DHT11_Init();
  if(0 !=ret){  
// 检查初始化时是否有错误
    err =kNoResourcesErr;
   user_log("DHT11 init failed!");
    goto exit;
  }
  else{
    err =kNoErr;
  }
    while(1){
   mico_thread_sleep(2);  // 每隔2秒进行一次数据采集和上报云端
        // 检查与Fogcloud的连接状态
   if(!mico_context->appStatus.fogcloudStatus.isCloudConnected){
      continue;
    }
        // 与Fogcloud连接后,开始数据采集
    ret =DHT11_Read_Data(&dht11_temperature, &dht11_humidity);
    if(0 !=ret){
      err =kReadErr;
    }
    else{
      err =kNoErr;
      
      // 在OLED显示温度与湿度数值,每行最多显示16个字母
     OLED_ShowString(OLED_DISPLAY_COLUMN_START, OLED_DISPLAY_ROW_2,"                ");  // 第二行不显示
      
     memset(oled_show_line, '', OLED_DISPLAY_MAX_CHAR_PER_ROW+1);
     snprintf(oled_show_line, OLED_DISPLAY_MAX_CHAR_PER_ROW+1, "T:%2dC         ", dht11_temperature);
     OLED_ShowString(OLED_DISPLAY_COLUMN_START, OLED_DISPLAY_ROW_3,(uint8_t*)oled_show_line);
      
     memset(oled_show_line, '', OLED_DISPLAY_MAX_CHAR_PER_ROW+1);
     snprintf(oled_show_line, OLED_DISPLAY_MAX_CHAR_PER_ROW+1, "H: %2d%% ", dht11_humidity);
     OLED_ShowString(OLED_DISPLAY_COLUMN_START, OLED_DISPLAY_ROW_4,(uint8_t*)oled_show_line);
      
      // 创建一个json对象
     send_json_object = json_object_new_object();
      if(NULL ==send_json_object){
       user_log("create json object error!");
        err =kNoMemoryErr;
      }
      else{
        // 创建完成后,将温度与湿度数值打包为json格式
       json_object_object_add(send_json_object, "dht11_temperature",json_object_new_int(dht11_temperature));
        json_object_object_add(send_json_object,"dht11_humidity", json_object_new_int(dht11_humidity));
       upload_data = json_object_to_json_string(send_json_object);
        if(NULL== upload_data){
         user_log("create upload data string error!");
          err = kNoMemoryErr;
        }
        else{
          // 将json包发至Fogcloud, 第二个参数(NULL)代表发送默认值: '/out'
         MicoFogCloudMsgSend(mico_context, NULL, (unsigned char*)upload_data,strlen(upload_data));
         user_log("upload data success!rntopic=%s/outtdht11_temperature=%d,dht11_humidity=%d",
                  mico_context->flashContentInRam.appConfig.fogcloudConfig.deviceId,
                  dht11_temperature, dht11_humidity);
          err =kNoErr;
        }
        
        // 释放json对象,这步不能省略,否则会造成内存溢出
       json_object_put(send_json_object);
       send_json_object = NULL;
      }
    }  
  }
exit:
user_log("ERROR: user_main exit with err=%d", err);
  return err;
}
4.9.    使用Github工具托管APP代码
在例程包中(MiCOKitSDK的APP目录下),找到微信APP控制页面代码(index.html和yourID.html),将yourID.html.重命名为你的产品ID,如cabca380.html。拷贝这两个文件到本地git仓库,再同步到git服务器。同步方法详见《上传文件到GitHub》。
index.html   —— OAuth按钮跳转到该页面(一般为设备列表页面,可不做改动)
xxxx.html   —— 设备控制页面(其中xxxx为FogCloud上创建的产品id)
详细代码见附件代码包,部分代码解释如下:
修改、并提交代码后,如果没有配置WebHook让FogCloud自动更新代码,则需要到FogCloud上手动点击“发布”按钮更新代码,并通过git提交记录确认是否更新成功。
4.10. FogCloud上生成设备二维码
(a) 创建新设备
(b)填写设备MAC地址(由小写字母和数字构成,设备上电后会向串口发送MAC地址及其他数据,可用串口工具查看)接口创建设备。

' {: o! [  @" N
(b) 为设备生成微信二维码
点击“同步到微信”按钮:  
选择创建的产品和要使用的APP后点击同步按钮。
成功后提示:{"result":200,"message":"success"}
极少数情况会出现result:500问题。解决方法:
(1)确认步骤4.6节中微信测试号已开通所有测试功能。
(2)因为微信公共平台具有“延时”的问题,等待几分钟后重试。
返回到产品界面,可看到你的新设备。

8 K- z9 `) R. j
4.11. 使用手机微信扫码,测试“Airkiss”配网功能以及设备控制功能
(a) Airkiss配网
Airkiss技术可以帮助你的设备在没有人机交互的情况下智能配置当前Wi-Fi环境的SSID及密码。(假如你的智能设备是一颗灯泡,总没有屏幕和按键让你输入SSID及密码吧)
按设备上的Easylink按钮进入配网模式,底板上的LED(D1)灯快速闪烁;
手机输入当前所在环境的wifi密码,点击连接,成功或超时会自动跳出该页面。
      
(b) 设备控制
Airkiss配网成功后会跳转到设备列表,红色圆点表示设备不在线,蓝色圆点表示设备在线。
注意:
(1)若配网成功后,没有自动跳转至设备列表页面,请确认步骤4.9节中设备页面html文件名已改为FogCloud中的产品ID。
(2)若配网成功后,设备依然显示设备不在线,可点击右上角刷新按钮。
若配网成功后设备依然显示设备不在线,可点击右上角刷新按钮。点击列表进入设备控制界面,点击控制按钮,控制MiCOKit-3288。
已经配网成功的设备不需要再次进行Airkiss,只需点击测试公众号中的“Devices”按钮,进入设备列表,点击列表进入设备控制界面。
     
如果您完成到此步骤,那么恭喜您通关啦!!
最简单的物联网设备已经被您开发出来了!!
没有完成也不要灰心,仔细参照本文检查之前的步骤,如果还有问题,请移步至MiCO社区http://mico.io
GoodLuck
5.    版本更新
日期
  
修改人
  
版本
更新内容
2015-7-23
Bruce Li
V1.0
1. 初始版本
2015-7-29
Jenny Liu
V1.1
1. 增加4.6节中,“开通微信测试号的所有测试功能”说明
  
2. 增加4.10节中,“同步微信”时result:500说明
  
3. 增加4.11节, “设备列表页面无跳转”注意事项

( d+ x8 ~- C+ L. G

16个回复

Murphy 发表于 2015-7-30 10:32:25
@micolover 您好,原来有个微信点灯的教学帖子,怎么找不到了
老中医 发表于 2015-7-31 21:59:23
这是个怎么原理呀,终端开发套件远程连接上传数据到FogCloud,然后FogCloud再把数据发给微信公众账号,是吗
micolover 发表于 2015-8-3 09:59:20
ICHLIEBEDICH13 发表于 2015-7-30 10:32
7 G0 d0 U3 T: N$ ^5 Q@micolover 您好,原来有个微信点灯的教学帖子,怎么找不到了

/ P4 B& ^4 v$ |# E, Q还在的呀,https://bbs.elecfans.com/jishu_501443_1_1.html2 V$ l9 J* a# l
另外也可以去MiCO社区搜索,欢迎继续关注!
micolover 发表于 2015-8-3 10:01:45
ICHLIEBEDICH13 发表于 2015-7-30 10:32
$ j8 s* D4 k& }! Y@micolover 您好,原来有个微信点灯的教学帖子,怎么找不到了

6 _* l0 v- u- m) L/ v+ U请移步到www.mico.io/ask/里查看哈,这个论坛里图片发不了太多。。。。
micolover 发表于 2015-8-3 10:03:06
nyszx 发表于 2015-7-31 21:59- J8 E9 C6 E" E* ]. v
这是个怎么原理呀,终端开发套件远程连接上传数据到FogCloud,然后FogCloud再把数据发给微信公众账号,是吗
1 S3 @# s( v* t! d/ @
诶呦不错哦,猜的八九不离十了,详情可以到www.mico.io/ask/里查看,里面有更多相关教程呢
s2nake 发表于 2015-8-9 00:23:05
好样的,顶* K2 n' ]9 U( m
谢谢楼主
回复 2

举报 使用道具

SmartHomes 发表于 2015-8-10 13:33:40
可以申请开发板吗?
回复 2

举报 使用道具

Elecfans管家 发表于 2015-8-13 11:34:14
SmartHomes 发表于 2015-8-10 13:33
: {/ ~4 t+ l  O5 x: {可以申请开发板吗?
8 I, z) Y) S) |' _
可以的 来这里申请https://bbs.elecfans.com/try/
SmartHomes 发表于 2015-8-26 22:21:23
不错呦,支持开发板
回复 2

举报 使用道具

xwwan 发表于 2015-9-7 08:20:51
高人啊啊,支持原创
回复 2

举报 使用道具

白天黑夜 发表于 2015-9-14 13:05:03
就冲着汇编写的代码,就值得认真看看
huangzhihua123 发表于 2015-9-17 13:43:37
多谢分享,仔细研究下。
回复 2

举报 使用道具

Anbotek-zhu 发表于 2015-9-19 14:15:44
深圳安博检测认证机构,EMC,LVD,化学测试,可靠性测试,电池测试,能效测试!等等
* c9 r# m/ h3 |  @欧盟CE认证、ERP认证,美国FCC认证,日本PSE认证,韩国KC认证,加拿大IC认证!等等
3 G3 s8 c) r5 i2 m6 U6 s0 b化学ROHS检测,PAHS检测,WEEE测试,REACH测试,邻苯,总铅,包装指令!等等
( |! f/ v/ Y0 [, n( ~可靠性:高低温测试,振动测试,冲击测试!等等/ l( h. [8 \2 W* q3 r2 `$ P
联系小祝  180-2870-5580
x303687305 发表于 2015-9-21 09:16:04
多谢分享啦 最近正好在研究
头像被屏蔽
提示: 该帖被管理员或版主屏蔽
回复 2

举报 使用道具

飘01生 发表于 2015-10-9 15:54:21
牛逼,深一样的设计
回复 2

举报 使用道具

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

本版积分规则


关闭

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

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

GMT+8, 2024-9-30 15:58 , Processed in 0.879424 second(s), Total 54, Slave 44 queries .

Powered by 电子发烧友网

© 2015 bbs.elecfans.com

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