如何使用Siri设置浪漫场景

昨天我们向您展示了如何创建可由Siri控制的DIY Wi-Fi灯;今天,我们将基于这些知识来使Siri也可以与Sonos音响系统配合使用,然后将它们组合成一个浪漫的场景。

查看最终结果:

上面的视频没有被伪造或上演-使用Siri和下面的指南可以实现一切。

您需要的东西:

  • Raspberry Pi
  • iOS设备
  • 与Siri兼容的彩色照明设备,例如具有第二代集线器的Philips Hue,或我们的DIY Wi-fi Light
  • Sonos(或其他具有HTTP API的播放设备)
  • (可选)NodeMCU / ESP8266,继电器和电源插座;或商用HomeKit电源插座附件
  • 为什么这么复杂?

    HomeKit,通过语音控制来控制设备实在是太好了。不幸的是,Apple是封闭的生态系统,HomeKit只限于少数设备。 Sonos不是其中之一。但是,一切并没有丢失。感谢一些勤奋的黑客,最近对HomeKit协议进行了逆向工程,并且正如我们在上一个项目中所展示的,您现在可以创建自己的假HomeKit设备。我们将利用这一点。

    首先请阅读我们的DIY Wi-Fi灯光教程,因为这将构成其他所有内容的基础。实际上,如果您还没有Philips Hue照明系统,则可以继续并实际构建该教程中描述的Wi-Fi灯。

    即使您有Hue系统,也请去继续学习本教程,因为您需要为其他所有内容创建伪造的HomeKit配件(下面提供的代码)。通过继续阅读本指南,我将假定您已经运行了HAP-NodeJS服务器,并且成功添加了一个假灯并测试了该服务器,即使该服务器未连接到实际的DIY上也是如此。硬件。

    制作播放列表

    继续创建一个名为“ Romantic"的新Sonos播放列表。它不需要完全相同的名称,但是如果您要更改附件脚本,则稍后必须对其进行调整。我添加了一些Marvin Gaye和Sade曲目来进行挖掘。 平滑

    接下来,在运行HAB-NodeJS 的Raspberry Pi上结束(如果您不知道我在说什么,那么您不会读Wi-Fi light教程。请先执行此操作,导航到您的主目录,然后键入以下内容以安装适用于Sonos的HTTP API。这将为我们提供一个Web URL,我们可以对其进行ping操作以触发Sonos上的某些操作。

    git clone https://github.com/jishi/node-sonos-http-api.git sonoscd sonosnpm install productionnpm install basic-auth sonos-discovery require-fu request-promise node-static asyncnpm start

    如果看到未找到有关此类模块的消息,只需执行另一个 npm install 和模块名称,然后再次尝试 npm start 。我可能已经从其他项目中全局安装了一些模块,而您可能需要安装更多模块。希望您会看到以下内容:

    恭喜,您现在有了一个简单的HTTP API,可以用来触发Sonos。阅读文档以获取完整的命令列表,但是我们最感兴趣的格式是:

    http://[SERVER IP]:5005/[ROOM NAME]/[ACTION]

    ,或者作为一个具体示例:

    http://192.168.1.99:5005/master%20bedroom/playlist/romantic

    没有出现这种情况事。 %20是一个空格字符的URL编码,但是您也应该能够输入实际的空格,您的浏览器会自动将其转换。上面的命令只是将浪漫的播放列表触发到主卧设备。使用 pause 命令将其停止:

    http://192.168.1.99:5005/master%20bedroom/pause

    此外,该API还为我们提供了一个对其他项目非常有用的功能:可以表达特定的语句,例如通知,然后继续播放当前队列。尝试:

    http://192.168.1.99:5005/master%20bedroom/say/make%20use%20of%20is%20awesome/en-gb

    第一次执行此操作,您会收到一条消息,提示您必须在VoiceRSS.org上注册API密钥[不再可用](每天最多有350个请求是免费的) 。完成此操作后,键入:

    nano settings.json

    ,然后将密钥粘贴到以下示例中:

    { "voicerss":"YOURAPIKEY"}

    重新启动服务器,然后再次ping通URL。几秒钟后,您应该会听到令人愉快的英语声音。如果您喜欢美国语音,可以将URL的结尾更改为 en 。整齐!完全与该项目无关,但仍然整洁!

    最后,让我们在重新启动Pi时重新启动该服务器:

    sudo nano /etc/rc.local

    退出0 <之前添加一行/ strong>:

    sudo node /home/pi/sonos/server.js < /dev/null &

    CTRL-X,Y保存。您可以看到我正在与OpenHAB,DIY蓝牙存在检测器和HAP-NodeJS HomeKit服务器一起运行-如果您已经按照必备的Wi-Fi指示灯教程进行了操作,那么您也应该已经在运行它。 p>此项目的关键在于Sonos无法由Siri控制,但是我们可以通过创建一个伪造的HomeKit设备来增加一定程度的控制,该设备在打开时会激活特定的播放列表–伪造的灯光是最简单的方法

    首先导航到您的 HAP-NodeJS / 目录,然后安装“请求"模块。

    sudo npm install request

    然后跳至附件/ 目录,并使用以下简单命令获取我的预制灯具:

    wget https://gist.githubusercontent.com/jamesabruce/72bd250fbcf054acaa25/raw/8272d4b9a4ef76db752cab2ddd9bdc47d09a65f1/Romantic_accessory.js

    如果需要,请进行一些更改-这是默认的Sonos“主卧"位置,因此请更改如果要将代码直接定向到代码开头,请在代码开头输入字符串 master%20bedroom 房间。由于我们伪造为灯光,因此发送亮度命令实际上不会做任何事情,尽管有时我会对其进行更新以处理音量。这是执行魔术的代码块:

    setPowerOn: function(on) {     console.log("Turning the light %s!", on ? "on" : "off");    FAKELIGHT.powerOn = on;console.log(on);    if(on){        request('http://localhost:5005/master%20bedroom/playlist/romantic', function (error, response, body) {          console.log("Sent play request");        })    }    else{        request('http://localhost:5005/master%20bedroom/pause', function (error, response, body) {          console.log("Sent pause request");        })    }  },

    您可以看到它非常简单:当灯光从HomeKit接收到setPowerOn命令时,它会检查该值是否为1(或true),并且指向ping Sonos HTTP API网址以播放该播放列表。如果还有其他(例如0,否),它将发送暂停命令。重新启动HAP-NodeJS服务器,然后转到iOS设备并按照与之前相同的步骤添加假的“浪漫播放列表"指示灯(您需要配对代码031-45-154)

    检查新设备是否正常运行,然后继续。如果您不喜欢编程,请尝试将亮度变化映射到音量(并在注释中分享您的代码!)。

    (可选)妖精灯和其他交流电设备

    得知没有正式的HomeKit童话般的灯光,也找不到任何我喜欢外观/价格的HomeKit通用电源插座,您可能会感到惊讶,因此我使用NodeMCU / ESP8266开发板,一个继电器和一个标准的两路电源插座。我不会详细介绍硬件,因为如果您对这种事情不完全有把握的话,就不要将其放入插头插座中,但是我将为您提供关于NodeMCU方面的代码(连接

    像Wi-Fi指示灯一样,它在MQTT通道(“ bedroomplug")上传递命令,因此您需要修改带有您的MQTT代理地址的代码(请参阅我们的OpenHAB指南的第2部分,有关如何设置MQTT代理),根据需要更改频道名称,当然还要输入您自己的Wi-Fi详细信息。

    将它们放在一起

    最后,我们将使用Elgato Eve应用程序或您首选的HomeKit管理器制作一些“场景"。用HomeKit的话来说,一个场景可以由任意数量的附件和这些附件的命令组成。

    您可以随意命名一个场景,即使Siri无需说“场景" 。所以我做了两个场景:一个叫做“孩子在床上",另一个叫做“让我们现在认真起来"。

    前者关闭了一个Hue灯,另一个则变成了粉红色,然后打开浪漫的播放列表配件和童话般的灯光。后者使灯再次变白,并暂停Sonos(即关闭浪漫的播放列表附件)。简单!

    我希望您喜欢本教程,并且由于HAP-HAP的强大功能,我真的可以看到我们如何将Siri控制扩展到没有太多麻烦的地方。 NodeJS。 您是否想看到一些特殊的Siri操作?在评论中让我们知道,并告诉我们您如何使用Siri来控制自己的房屋。

    标签: Raspberry Pi Siri Sonos