ITADN
armzilla/amazon-echo-ha-bridge
armzilla/amazon-echo-ha-bridge · 文件 下载 ZIP
文件最后提交记录最后更新时间
README.md
以下内容由 AI 翻译,如有问题请点此提交 issue 反馈

Amazon Echo Bridge        codeship status

Amazon Echo Bridge 允许您快速模拟 Phillips Hue 桥接器,从而能够将 Amazon Echo 无缝集成到各种家庭自动化系统中。

此外,借助易于使用的 POST/PUT REST API,使用您自己的嵌入式应用程序让设备与 Amazon Echo 配合运行,从未如此简单!

发布说明:

v0.4.0 变更日志:

  • 启动时必须指定 --upnp.config.address=
  • 目前支持超过 25 个模拟设备,当前设置为 75 个,可通过指定 --emulator.portcount= 以 25 个设备为增量进行增加,默认为 3,因此 3*25 = 75 个总设备数。其工作原理是获取 emulator.baseport 并从 baseport 到 baseport+portcount 顺序打开 n 个端口
  • 放宽了 http 响应代码,支持 200 到小于 300 之间的任何 http 响应代码,以支持行为异常的资源

其他说明: 我看到有些人能够运行此程序,但无法发现设备。我建议检查具有重复名称的设备,因为我发现这会导致 echo 拒绝所有设备。懒惰的方法是删除 /data 目录并重新开始。

快速入门

目前有三种不同的方式来运行预构建的 jar 文件:

Java - java -jar amazon-echo-bridge-*.jar

Maven - mvn spring-boot:run

Docker - docker build -t amazon-echo-ha-bridge . docker run -ti --rm --net=host amazon-echo-ha-bridge

此外,还建议您传递命令行参数 --upnp.config.address--server.port 以覆盖当前实现的硬编码值。

示例: --upnp.config.address=192.168.1.240 --server.port=8081

应用程序启动并运行后,您可以通过访问 http://YOURIP:PORT/configurator.html 来访问配置器。

使用页面底部的表单输入您的设备,添加要解析的命令 URL(如果您使用 OpenHAB 等系统,这很有用),然后保存。

通过说“Alexa, discover my devices”指示您的 Amazon Echo 了解您的设备,然后您就设置好了!

使用

现在,您可以通过说“Alexa, Turn on the office light”或您为已配置设备指定的其他名称,使用 Amazon Echo 控制设备。

要查看或移除 Alexa 已知的设备,您可以使用移动应用中的 菜单 / 设置 / 已连接家庭。如果您从 Amazon Echo Bridge 中移除设备,则需要执行此操作。

构建

如果您希望内部配置自己的 Amazon Echo Bridge 构建版本,则需要满足一些要求。

安装 Maven:

       Ubuntu/Linux - sudo apt-get install maven

       OS X - 安装 Homebrew 并运行 brew install maven

进行修改:

例如,服务器默认在端口 8080 上运行。如果您已经在 8080 上运行了一个服务器(如 openHAB),您可以在构建 jar 之前编辑 server.port 中的 src/main/resources/application.properties 为您想要的端口。

或者,您也可以传入一个命令行参数来覆盖 server.port

编译:

要自行构建 jar 文件,请进行修改,然后像这样运行 Maven:

mvn install

然后定位 jar 文件,并按照上述说明启动服务器。默认情况下,maven 会将 jar 文件放置在 target 目录中。java -jar target/amazon-echo-bridge-*.jar

POST/PUT REST API

除了通过 Configurator 页面注册设备外,您还可以通过 REST 向 Amazon Echo Bridge 推送设备信息,如下所示:

POST http://host:port/api/devices
{
"name" : "bedroom light",
"deviceType" : "switch",
  "onUrl" : "http://192.168.1.201:3480/data_request?id=action&output_format=json&serviceId=urn:upnp-org:serviceId:SwitchPower1&action=SetTarget&newTargetValue=1&DeviceNum=41",
  "offUrl" : "http://192.168.1.201:3480/data_request?id=action&output_format=json&serviceId=urn:upnp-org:serviceId:SwitchPower1&action=SetTarget&newTargetValue=0&DeviceNum=41"
}

通过使用表达式 ${intensity.percent} 并设置 0-100 的值,或使用 ${intensity.byte} 并设置 0-255 的值,也支持调光功能。

示例:

{
    "name": "entry light",
    "deviceType": "switch",
    "offUrl": "http://192.168.1.201:3480/data_request?id=action&output_format=json&serviceId=urn:upnp-org:serviceId:SwitchPower1&action=SetTarget&newTargetValue=0&DeviceNum=31",
    "onUrl": "http://192.168.1.201:3480/data_request?id=action&output_format=json&DeviceNum=31&serviceId=urn:upnp-org:serviceId:Dimming1&action=SetLoadLevelTarget&newLoadlevelTarget=${intensity.percent}"
}

您还可以推送额外的可选字段,例如:

  • contentType,目前未进行验证

  • httpVerb,仅支持 POST/PUT/GET

  • contentBody:您的 POST/PUT 请求体

如下所示:

{
    "name": "test device",
    "deviceType": "switch",
    "offUrl": "http://192.168.1.201:3480/data_request?id=action&output_format=json&serviceId=urn:upnp-org:serviceId:SwitchPower1&action=SetTarget&newTargetValue=0&DeviceNum=31",
    "onUrl": "http://192.168.1.201:3480/data_request?id=action&output_format=json&DeviceNum=31&serviceId=urn:upnp-org:serviceId:Dimming1&action=SetLoadLevelTarget&newLoadlevelTarget=${intensity.percent}",
  "contentType" : "application/json",
  "httpVerb":"POST",
  "contentBody" : "{\"fooBar\":\"baz\"}"
}