你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

微信控灯11式(利用微信控制RGB LED灯)(2)

[复制链接]
micolover2015 发布时间:2015-7-31 11:43
本帖最后由 micolover2015 于 2015-7-31 11:44 编辑

上接:微信控灯11式(利用微信控制RGB LED灯)(1) https://www.stmcu.org.cn/module/forum/thread-602767-1-1.html


4.8.
用IAR或Keil MDK工具开发MiCOKit固件代码(代码注释部分)
//应用程序入口在application_start(void),一系列动作(如配网、连接云等)以后,用户程序入口在这里。
OSStatus user_main( mico_Context_t * const mico_context
{
  //user_log_trace( );
  OSStatus err = kUnknownErr;
  fogcloud_msg_t *recv_msg = NULL;//接收数据结构体
  json_object *recv_json_object = NULL;//结构体内包含json数据格式
  /* rgb灯的色彩模式采取hsb色彩模式(色相、饱和度、亮度) */
  bool led_switch = false;//rgb灯开关
  int led_hues = 0;
  int led_saturation = 0;
  int led_brightness = 0;
  require(mico_context, exit);
  hsb2rgb_led_init();  // RGB_LED初始化
  while(1){
    mico_thread_msleep(100); //延时100ms
    // 检测 fogcloud 连接状态
    if(!mico_context->appStatus.fogcloudStatus.isCloudConnected){
      continue;
    }
    /*
      接收来自云端的数据
      recv_msg->data = <topic>+<data>
      topic表示模块订阅的MQTT通道名,data表示云端返回的数据
     */
    err = MicoFogCloudMsgRecv(mico_context, &recv_msg, 100);
    if(kNoErr == err){
// 打印  例://user_logtopic[30]=[de54a8ea/c8934691816b/in/write]data[23]=[{"rgbled_switch":false}]
      user_log("Cloud => Module: topic[%d]=[%.*s]\tdata[%d]=[%.*s]",
               recv_msg->topic_len, recv_msg->topic_len, recv_msg->data,
recv_msg->data_len, recv_msg->data_len, recv_msg->data + recv_msg->topic_len);
// json格式的字符串数据转成json对象
      recv_json_object = json_tokener_parse((const char*)(recv_msg->data + recv_msg->topic_len));
      if (NULL != recv_json_object)
      {
        //根据键值对遍历
        json_object_object_foreach(recv_json_object, key, val) {
          if(!strcmp(key, "rgbled_switch")){
//如果键为"rgbled_switch",提取值“开关值”
            led_switch = json_object_get_boolean(val);
          }
          else if(!strcmp(key, "rgbled_hues")){
                        //如果键为"rgbled_hues",提取值“色相值"
            led_hues = json_object_get_int(val);
          }
          else if(!strcmp(key, "rgbled_saturation")){
                        //如果键为"rgbled_saturation",提取值“饱和度值"
            led_saturation = json_object_get_int(val);
          }
          else if(!strcmp(key, "rgbled_brightness")){
//如果键为"rgbled_brightness",提取值“亮度值"
            led_brightness = json_object_get_int(val);
          }
        }
        // 控制LED
        if(led_switch){
          hsb2rgb_led_open(led_hues, led_saturation, led_brightness);
        }else{
          hsb2rgb_led_close();  // 关闭
        }
        // json对象内存释放
        json_object_put(recv_json_object);
        recv_json_object = NULL;
      }
      // 结构体内存释放
      if(NULL != recv_msg){
        free(recv_msg);
        recv_msg = 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地址及其他数据,可用串口工具查看)接口创建设备。


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

  选择创建的产品和要使用的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扩展板上的RGB LED灯。
  已经配网成功的设备不需要再次进行Airkiss,只需点击测试公众号中的“Devices”按钮,进入设备列表,点击列表进入设备控制界面,点按按钮,控制MiCOKit-3288扩展板上的RGB LED灯。


  如果您完成到此步骤,那么恭喜您大功筑基已成!!
  武功在手,天下我有!
  祝愿各位米客能手持MiCO利剑,在物联网智能设备的新江湖建功立业!

另:源代码地址 https://pan.baidu.com/s/1bnsGEy7
       GitHub使用教程http://mico.io/ask/?/article/12
PDF版: 微信控制RGB灯开发实例V1.1.pdf (2.63 MB, 下载次数: 139)
收藏 评论1 发布时间:2015-7-31 11:43

举报

1个回答
JackieLaura 回答时间:2015-7-31 13:40:09
不错,不过开发涉及的东西比较多。有单片机开发,WEB开发,手机客户端开发。。。一时半会搞不定的。

所属标签

STM32团队

意法半导体微控制器和微处理器拥有广泛的产品线,包含低成本的8位单片机和基于ARM® Cortex®-M0、M0+、M3、M4、M33、M7及A7内核并具备丰富外设选择的32位微控制器及微处理器


最新内容

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版