天线|RF射频
直播中

张婷

7年用户 198经验值
私信 关注
[问答]

请问微信读取温湿度传感器数值?

摘要(Abstract)
本文档仅介绍如何使用MiCOKit开发套件(MiCOKit-3288或MiCOKit-3165)开发一个简单的,通过微信读取温湿度传感器数值的应用实例过程。
适合读者(Suitable Readers)
本文适用于所有MiCOKit开发套件的开发者,
并适合所有MiCO-物联网(IoT)设备开发者参考。
版权声明(Copyright Notice)
Copyright (c) 2015 MDWG Trust and the persons identified as the document authors. All rights reserved.
目录
微信读取温湿度传感器数值开发实例        
1.        概述        
2.        准备工作        
3.        开发流程        
4.        详细步骤        
4.1.        注册开发者账号        
4.2.        使用个人微信号开通测试公众号        
4.3.        在FogCloud上创建、定义自己的产品        
4.4.        在FogCloud上创建产品对应的微信APP        
4.5.        Github上创建微信APP代码托管仓库        
4.6.        配置微信APP以及微信测试公众号        
4.7.        使用MiCO SDK开发固件        
4.8.        用IAR或MDK工具开发MiCOKit固件代码(代码注释)        
4.9.        使用Github工具托管APP代码        
4.10.        FogCloud上生成设备二维码        
4.11.        使用手机微信扫码,测试“Airkiss”配网功能以及设备控制功能        
5.        版本更新        
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配网功能、设备控制功能。
4.        详细步骤
4.1.        注册开发者账号
登录www.fogcloud.io直接注册账号即可。该账号将用来管理你的产品及APP。

4.2.        使用个人微信号开通测试公众号
浏览器打开http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login,点击登录,使用手机微信扫码,进入后即开通了测试公众号。

获得微信号、appID、appsecrect,用于后续在FogCloud上创建产品对应的微信APP。

4.3.        在FogCloud上创建、定义自己的产品

根据提示填写相关信息,创建完成后,如下

点击产品名称,进入详细信息:

产品ID/KEY会写到设备固件代码中;
创建产品的数据模型,数据模型是用来在云端定义产品功能、性能等特征数据的标准格式,可以储存设备监控、收集、控制、用户行为等数据,从而对数据进行分析,提升产品服务,开发案例过程中定义数据模型,能够有效帮助开发者将APP、云端与设备端的关键功能、特征数据等同步,避免开发过程出错。

本实例读取温度与湿度数据,所需创建的数据点为:
1)温度(temp)                 读写属性为0         时间序列为否
2)湿度(humi)                        读写属性为0         时间序列为否
*属性名和描述可按个人习惯添加
注意:在创建数据点时,“时间序列”选项:选中时云端保存历史数据;不选时云端只保存最新的数据。数据模型的具体作用在后面的进阶教程中详细讲解。
4.4.        在FogCloud上创建产品对应的微信APP

根据提示,填写相关信息,其中:微信号、AppID/AppSecret从步骤2中开通的微信测试公众号中获得。

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会在后续配置微信测试号时用到。
(b)Git部署(同步微信APP代码到FogCloud)

其中:
      Repo即步骤5中创建的github仓库地址,填写后保存;
Deploy key和Web Hook Url可添加到github仓库的设置中,以自动同步代码到FogCloud;也可以不添加,但是github仓库中代码更新后,需要手动点击“发布”按钮来同步代码,同步后右边可看到最新的代码提交记录。

(c) 微信菜单管理
通过FogCloud提供的微信公众号英国威廉希尔公司网站 菜单定制功能,方便的定制手机端微信上的控制界面及功能;至少包含“Airkiss”按钮,打开微信Airkiss配网功能,“OAuth”按钮(名称可自定义)进入设备控制。

(d) 设置微信测试公众号 URL与Token在创建的APP信息中可以找到
修改配置信息:
URL一般为:http://4addb71f-1b5c-XXXX-94c5-f ... ylink.io/wechat.php
下划线部分作为JS接口安全域名和授权回调页面域名。域名中不包含http:// 和 /wechat.php!!!

开通微信测试号的所有测试功能,如下图1,2

点击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。


6)错误代码参考:在运行过程中如果出现错误,可在user_log中查看错误代码。


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 * const mico_context )
{
  user_log_trace();
  OSStatus err = kUnknownErr;
  json_object *send_json_object = NULL;
  const char *upload_data = NULL;
  uint8_t ret = 0;
  uint8_t dht11_temperature = 0;
  uint8_t dht11_humidity = 0;
  // 将温度与湿度数值同步显示在OLED上
  char oled_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代码
在例程包中(MiCOKit SDK的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地址及其他数据,可用串口工具查看)接口创建设备。

(b) 为设备生成微信二维码
点击“同步到微信”按钮:  

选择创建的产品和要使用的APP后点击同步按钮。

成功后提示:{"result":200,"message":"success"}

极少数情况会出现result:500问题。解决方法:
(1)确认步骤4.6节中微信测试号已开通所有测试功能。
(2)因为微信公共平台具有“延时”的问题,等待几分钟后重试。
返回到产品界面,可看到你的新设备。


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”按钮,进入设备列表,点击列表进入设备控制界面。
      
11-3.png (1.25 MB, 下载次数: 0)
下载附件
昨天 16:35 上传

如果您完成到此步骤,那么恭喜您通关啦!!
最简单的物联网设备已经被您开发出来了!!
没有完成也不要灰心,仔细参照本文检查之前的步骤,如果还有问题,请移步至MiCO社区http://mico.io
Good Luck!
5.        版本更新

MiCO.IO 的官网 Wiki  MiCOKit SDK 下载页面
http://mico.io/wiki/doku.php?id=micokit_sdk

回帖(4)

陈丹丽

2020-8-7 09:00:52
不错,谢谢分享。
举报

李葛葛

2020-8-7 09:47:41
非常不错,但是看得云里雾里
举报

刘燕

2020-8-7 10:02:52
楼主,你好,有没有WIFI模块和微信公众号的相关教程呀
举报

陈枫希

2020-8-7 10:17:15
不错  不错  应该收藏收藏   感谢
举报

更多回帖

发帖
×
20
完善资料,
赚取积分