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

微信控灯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开发,手机客户端开发。。。一时半会搞不定的。

所属标签

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