如何使用 Python 脚本控制飞利浦 Hue 灯



我正在尝试使用python编写飞利浦Hue脚本,该脚本需要能够与来自不同网络的网桥进行通信。我有一个VPS,脚本将在其上运行。

我已经尝试过像phue一样思考,但这些库只能控制同一网络中的灯光。

我尝试通过添加以下内容来解决错误:

import logging
logging.basicConfig()

但这没有用。 这是脚本:

from phue import Bridge
import time
b = Bridge('192.168.2.3')
b.connect()
b.get_api()
b.set_light(1, 'on', True)

我希望使用此脚本打开灯,但它给出了此错误,表明它找不到桥。

No handlers could be found for logger "phue"
Traceback (most recent call last):
File "hue.py", line 3, in <module>
b = Bridge('192.168.2.3')
File "/usr/local/lib/python2.7/dist-packages/phue.py", line 628, in __init__
self.connect()
File "/usr/local/lib/python2.7/dist-packages/phue.py", line 751, in connect
self.register_app()
File "/usr/local/lib/python2.7/dist-packages/phue.py", line 705, in register_app
response = self.request('POST', '/api', registration_request)
File "/usr/local/lib/python2.7/dist-packages/phue.py", line 660, in request
raise PhueRequestTimeout(None, error)
phue.PhueRequestTimeout

这实际上不是网络问题;)

首先,192.168.2.3 在大坏互联网上不存在,它是一个仅供内部使用的"私人地址范围",因此您不会从网络外部访问它。

您需要访问面向公众的地址(分配给路由器WAN0端口的地址,或设备调用面向公众的接口的地址(

这也取决于您的ISP是否允许您从外部世界访问您的外部地址(我的ISP不会NAT该地址,但您的可以。

我还要补充一个警告,那就是猜测,因为我今天才拿到我的 HUE(和宜家(集线器,我还没来得及检查,但很多嵌入式设备只会愉快地与同一个 IP 子网上的东西交谈。

正如之前的受访者所暗示的那样,"从互联网访问HTTP,这种方式是疯狂的">

从本质上讲,HTTPS是唯一明智的选择。

在紧要关头,可以使用VPN连接回到您自己的网络作为某种最低的安全性。我说最小,因为我甚至不会选择在我自己的家庭网络上传递HTTP流量。

顺便说一句,我不是偏执狂,无论 vlan、访问列表、防火墙和所有最好的意图如何,网络数据都会泄漏,并且您不希望任何未加密的凭据(在任何时候(飞来飞去。

这个问题实际上与Python无关。这是一个常见的网络问题。

如果你在互联网上运行控制脚本来控制灯光,比如说,在家里,你需要打开/重定向从VPS发出的TCP 80端口请求到你的家庭IP,在你的家庭路由器配置中,到你的家庭"网桥"的IP,正如我从phue模块中看到的那样,它有一个HTTP Rest API。

然后我希望系统(我没有使用过或真正知道(具有某种身份验证,或者其他人也可以控制它,如果他们访问您的家庭路由器 IP(他们会这样做(。如果使用双方的密钥进行身份验证,则还需要加密通信,否则密钥可能会被读取和窃取。例如,这需要使用HTTPS并将80端口更改为443端口,并且还使用(至少(自签名证书设置HTTPS服务器。

可能还有其他可能的设置,但这应该为您提供足够的信息,以便您研究有关该主题的更多信息。

您可能还会发现反过来工作是合理的。在家庭网络中设置一个普通的控制应用程序,并使其连接到您的VPS以定期读取配置或写入状态,然后在本地应用。

最新更新