资讯中心

新闻资讯

行业观点

天聚动态

联系方式

公司地址:青岛市福州北路万科中心B座803室

联系电话:13589273999(售前)/16678687621(售后)

联系电话:0532-87621819

热点新闻

Pepper利用物联网技术照亮您的家

2020-10-15 行业观点 文章来源:天聚机器人

图1.png

借助IoT(物联网),回家时只需要问候Pepper,就能点亮您的客厅。您还可以尝试将屋里的各种智能设备(如台灯、电视、空调等)连接到Pepper。您可以把Pepper当做是您家庭设备的管家并对其进行控制。

本文主要讲述的是SBRE(软银机器人欧洲)的工程师Quentin使用Pepper连接到其他IoT设备。

Quentin利用一个飞利浦色调灯(Hue)和灯的网桥(连接大多数物联网项目到本地网络和互联网的设备)使Pepper连接到网桥上,并在他和机器人交谈时控制灯的状态。

案例:Pepper走进海尔智慧家庭

01 设置色灯(Hue)、网桥和API

飞利浦的Hue API网站提供的开发者文档清晰明了,指导性强,并且提供的API易于使用,可以处理REST请求,操作步骤都易于上手。

首先,按照网站“开始”页面上给出的步骤,他在手机上安装了Philips Hue应用程序,以确保桥接器和灯正常工作,并获取桥接器IP供以后使用。

然后,他使用** Philips API调试工具 **(《入门指南》中提供)并注册为新用户,以获取身份验证令牌,以便能够向桥发送基本的Get和Put请求以检查和更改灯的状态(开/关状态,色相,亮度和饱和度等)。

所以现在可以通过向调试工具发送请求来检查和更改灯的状态。但他想在Pepper的帮助下控制灯。为此,他将在机器人应用程序中使用这些请求来触发相应操作。

02 使用代码触发操作

在确保使用调试工具发送了正确的请求后,我们将关注的重点转移到机器人的Android应用程序中,以允许Pepper与Hue Bridge进行交互。他使用改进的(android的标准REST request java库)向以下URL发送Put请求:

https://<my_bridge_ip_adress>/api/<my_username_token>/lights/<my_lamp_id>/state

然后,他创建了一个类,其中包含访问API所需的指令,即基本URL,改造版本和下面的接口:

class PhilipsHueControl {
   private var base_URL = "https://$bridgeIP"   
   [...]   //build the retrofit client   
   interface LampControl { 
         @PUT("/api/{username}/lights/1/state")       
         fun updateLampState(@Path("username") username: String, @Body state:RequestBody): Call<ResponseBody>
   }
   val serviceControl = retrofit.create(LampControl::class.java)!!}

Quentin使用了另一个包含所有功能函数的类来控制灯光,并让它们用qiChat(对话脚本)执行器进行语音触发(请参阅相关开发中心的课程)。一个简单的例子,开关函数switchON函数:

fun switchOn(){
  on = true  
  val requestBody = RequestBody.create(JSON, "{\"on\":$on}")  
  val responseControl = philipsHueControl.serviceControl.updateLampState(username,requestBody).execute()
  }

理论上,这应该是没有错误的函数,但是当他执行一个应该打开灯的测试时,得到了一个错误消息:

sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

为了解决这个琐碎的安全问题,他使用了“http”url而不是“https”url,一切都正常工作。显然,如果你想发布你的应用程序,这是不应该做的(出于安全考虑),但是如果你是为了个人或教育目的而创建的,这个因素并不重要。

所以在这一点上,在安全问题解决的情况下,Quentin可以让Pepper开关灯,调节亮度,改变颜色。

03 自动化URL连接

正如大家所注意到的,Quentin的应用程序有点简单直接,因为它只能在一个特定的网桥和一个特定的灯下工作,这是因为他手工输入了请求URL中包含的IP地址和用户名。但是我们的初衷是可以用在任何桥和灯上,我们该如何解决呢?

其实,我们可以使用飞利浦色调兼容的多种发现方法,让应用程序找到桥和灯。

Quentin第一次的尝试是在他的应用程序中实现UPnP发现方法,尽管如此,飞利浦的网站技术说明该方法并不是最合适的方法,但它是最简单的一个,当他尝试用这种方法找到的唯一设备是咖啡机…虽然没有找到想要的灯,但至少找到了一些东西。

尝试了其他方法后,他把重点放在了mDNS发现方法上,在GitHub上找到了一些文档和经过改编的之后,Quentin设法找到了灯的桥,以及大楼的每台打印机。然后,他检索了它的IP地址以在请求URL中使用它,并向它发送了一个创建新用户名的请求。通过这个方法,Quentin现在可以让Pepper来连接到与机器人在同一本地网络上的任何其他网桥!

在任务基本完成后,Quentin增强了刚创建的应用程序所提供的可能性,从而获得了一些乐趣。他使用一个executor框架添加了一个小的demo模式来显示他的应用程序的所有不同功能。

04 总结

让我们快速回顾一下本文中我们所做的操作:

通过第一次使用飞利浦色调应用程序,确保了网桥和灯的功能,并得到了网桥IP。

然后,使用API的调试器工具发送REST请求,检查并更改灯的状态,然后在应用程序的代码中实现该过程。然后创建了几个函数,并将它们链接到一个qiChat上,这样Pepper就可以在人们说话时控制灯光,而且机器人还可以通过实现设备查找方法连接到其他桥上。

最后,由于有了Pepper机器人的帮助,我们有了一个完全语音控制的灯光助理。还有,我们知道如何用Pepper控制各种物联网项目,下一步将是同时连接多个设备,并使机器人成为某种集线器,接收数据并向所有家庭设备发送适当的命令,把Pepper变成你的私人管家。

中国总部·青岛Email:mail@qdtianju.com

河南分公司·郑州Email:wx@qdtianju.com