如何使用Python脚本控制飞利浦色光

2024-04-25 21:31:28 发布

您现在位置:Python中文网/ 问答频道 /正文

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

我已经尝试过类似于phue的思考,但是这些库只能控制同一网络中的灯光。在

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

import logging
logging.basicConfig()

但这没用。 脚本如下:

^{pr2}$

我想用这个脚本打开灯,但是它给出了这个错误,表明它找不到桥。在

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

Tags: inpyself网络脚本requestlibpackages
2条回答

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

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

我也希望他们能用IP来控制家里的设备。如果您使用双方的密钥进行身份验证,则还需要加密通信,否则密钥可能会被读取和窃取。例如,这需要使用HTTPS并将80端口更改为443端口,还需要使用(至少)自签名证书设置HTTPS服务器。在

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

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

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

首先192.168.2.3不存在于大坏的互联网上,它是一个“私人地址范围”,仅供内部使用,这样你就不会从你的网络外部攻击它。在

你需要点击你的面向公众的地址(分配给你的路由器WAN0端口的地址,或者任何设备调用公共接口的地址)

这也取决于你的ISP是否允许你从外部世界访问你的外部地址(我的ISP不知道这个地址,但你的可以)

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

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

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

在紧要关头,可以使用VPN连接回您自己的网络作为某种最低限度的安全措施。我说minimal是因为即使在我自己的家庭网络上,我也不会选择传递HTTP流量。在

我不是偏执,不管VLAN,访问列表,防火墙和所有最好的意图,网络数据泄露,你不希望任何未加密的东西的凭证(在任何时候)

相关问题 更多 >