如何使用Python脚本控制Philips色调灯光

如何使用Python脚本控制Philips色调灯光,python,networking,philips-hue,Python,Networking,Philips Hue,我正在尝试使用python编写一个Philips Hue脚本,该脚本需要能够从不同的网络与网桥进行通信。我有一个VPS,脚本将在其上运行 我已经尝试过类似的想法,但这些库只能控制同一网络中的灯光 我已尝试通过添加以下内容来解决此错误: 导入日志 logging.basicConfig()文件 但这不起作用。 以下是脚本: 来自phue import Bridge的 导入时间 b=桥('192.168.2.3') b、 连接() b、 get_api() b、 设置_灯(1,“开”,真) 我想

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

我已经尝试过类似的想法,但这些库只能控制同一网络中的灯光

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

导入日志
logging.basicConfig()文件
但这不起作用。 以下是脚本:

来自phue import Bridge的

导入时间
b=桥('192.168.2.3')
b、 连接()
b、 get_api()
b、 设置_灯(1,“开”,真)
我想用这个脚本打开灯光,但它给出了这个错误,表明它找不到桥

找不到记录器“phue”的处理程序
回溯(最近一次呼叫最后一次):
文件“hue.py”,第3行,在
b=桥('192.168.2.3')
文件“/usr/local/lib/python2.7/dist-packages/phue.py”,第628行,在__
self.connect()
文件“/usr/local/lib/python2.7/dist-packages/phue.py”,第751行,在connect中
self.register_app()
文件“/usr/local/lib/python2.7/dist-packages/phue.py”,第705行,在register\u应用程序中
response=self.request('POST','/api',注册请求)
请求中的文件“/usr/local/lib/python2.7/dist-packages/phue.py”,第660行
引发请求超时(无,错误)
phue.PhueRequestTimeout

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

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

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

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


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

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

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

您需要点击面向公众的地址(分配给路由器WAN0端口的地址,或任何设备称之为面向公众的接口的地址)

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

我还将添加一个警告,这是猜测,因为我今天只得到了我的色调(和宜家)集线器,我还没有时间检查,但许多嵌入式设备只会很高兴地与同一IP子网上的东西交谈

正如前一位受访者暗示的那样,“从互联网上访问HTTP,这种方式是疯狂的”

从本质上讲,HTTPS是唯一可以使用的明智选择

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

顺便说一句,我不是偏执狂,网络数据泄漏,不管VLAN、访问列表、防火墙和所有的最佳意图如何,而且你不希望任何未加密的东西(在任何时候)的凭据四处传播