首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

将智能电话转换为传感器和执行器(5)

将智能电话转换为传感器和执行器(5)

在水平翻转智能电话时打开和关闭它的灯光。
一些 Android 智能电话能很好地解释 light 命令,但不是所有 Android                    智能电话都可以做到这一点。一个替代解决方案是使用 color 命令。两个解决方案的代码均已提供。

现在您已看到如何将智能电话转换为传感器或执行器,让我们创建一个 IoT                应用程序来将智能电话同时转变为二者!在此场景中,我们在每次水平翻转智能电话时打开或关闭它的灯光。
我们将测试来自智能电话的加速度 Z,检查此值是正值还是负值并保存状态。
  • 在加速度 Z 是正值时,如果然后灯光关闭,则发送 light 命令到电话来打开灯光。
  • 在加速度 Z 是负值时,如果然后灯光已打开,则发送 light 命令到电话来关闭灯光。
  • 转到 Node Red 流编辑器。将拖动合适的节点并连接它们来创建下面这个流,如下所示:                        

  • 在面板的功能部分,将一个函数节点拖到工作区。
    • 为此功能节点指定一个名称。例如,将它命名为 Detect Flip。
    • 将以下代码剪切并粘贴到功能节点编辑器中:                                
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      var accelerationZ = msg.payload.d.acceleration_z;
      var isAlreadySwitchedOn = context.get('isAlreadySwitchedOn')|| false;

      // For Android reverse this test !!!
      if (accelerationZ > 0) {   
          if (!isAlreadySwitchedOn) {
              isAlreadySwitchedOn = true;
              msg.eventOrCommandType = "light";
              msg.payload = JSON.stringify({"d":{"text":"Received light on message"}});
          }
      } else {
          if (isAlreadySwitchedOn) {
              isAlreadySwitchedOn = false;
              msg.eventOrCommandType = "light";
              msg.payload = JSON.stringify({"d":{"text":"Received light off message"}});
          }
      }
      context.set('isAlreadySwitchedOn', isAlreadySwitchedOn);
      return msg;




    • 单击 Done
  • 将一个开关节点拖到工作区。此节点将测试我们是否需要向电话发送一条命令。在字段中填入以下值:
    • 为此 switch 节点指定一个名称。例如,将它命名为 Flip                            Detected。
    • 将 Property 设置为 msg.eventOrCommandType。
    • 在下拉列表中选择 is not null。
    • 在底部下拉列表中选择 stopping after first match。
    • 单击 Done
  • 将一个 ibmiot out 节点拖到工作区。此节点将向电话发送 light 命令。在字段中填入以下值:
    • 为此节点指定一个名称。例如,将它命名为 IBM IoT Out。
    • Authentication 下拉列表中选择 Bluemix                            Service。
    • Output Type 下拉列表中选择 Smartphone                            Command。
    • 输入智能电话类型(iPhone 或 Android)。
    • 输入智能电话 ID。
    • Command Type 文本框中输入 text。
    • Format 文本框中指定 json。
    • Data                                框中,键入此字符串:
      {"d":{"value":"text"}}
    • 单击 Done
  • 部署新流。拿起电话,单击 Activate Sensor 来运行 IoT Starter Mobile 应用程序。
    • 观察 Node-Red 流中的 Debug 选项卡,查看从电话传入的 MQTT 消息。
    • 水平翻转电话,确认灯光已打开。
    • 再将它翻转回来,确认灯光已关闭。
如果您的 Android 智能电话没有正确解释 light                命令,可以将功能节点中的代码替换为以下代码。它提供了一个替代解决方案,该解决方案使用的 color 命令会在每次水平翻转电话时更改 IoT                Starter Mobile 应用程序的背景颜色,而不是打开或关闭智能电话的灯光。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
var accelerationZ = msg.payload.d.acceleration_z;
var r = 0.0;
var b = 0.0;
var g = 0.0;
a = 1.0;

  
if (accelerationZ < 0) {
    // green
    r = 102.0;
    g = 255.0;
    b = 102.0;
} else {
   // purple
    r = 178.0;
    g = 102.0;
    b = 255.0;
}
msg.eventOrCommandType = "color";
msg.payload = JSON.stringify({"d":{"r":r,"b":b,"g":g,"alpha":a}});
return msg;




结束语在本教程中,学习了如何创建和部署 IoT 应用程序,如何轻松地将智能电话转换为传感器和执行器设备,如何轻松地将它连接到 IBM Watson IoT                Platform,以及如何从智能电话发送和接收数据。
通过使用 IBM Bluemix Platform 和 Watson IoT                Platform,可以加快开发速度,减少上市准备时间。企业可以快速连接其设备(他们自己的一组传感器和/或执行器),构建 IoT                应用程序,解决特定的业务问题,以及变革其公司和行业。
返回列表