如何使用 Python 脚本控制飞利浦 Hue 灯
How to control Philips Hue lights using Python script
我正在尝试使用 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
这个问题实际上与Python无关。这是一个常见的网络问题。
如果你在互联网上有控制脚本运行来控制灯说,在家里,你需要open/redirect从VPS向你的VPS发出的TCP 80端口请求家庭 IP,在你的家庭路由器配置中,到你家的 IP "bridge",正如我从 phue
模块中看到的那样,它有一个 HTTP Rest API.
然后我希望系统(我没用过或真的不知道)有某种身份验证,或者其他人如果访问你的家庭路由器 IP 也可以控制它(他们会这样做).如果您通过双方使用密钥进行身份验证,则还需要对通信进行加密,否则密钥可能会被读取和窃取。例如,这需要使用 HTTPS 并将 80 端口更改为 443 端口,还需要使用(至少)自签名证书设置 HTTPS 服务器。
可能还有其他可能的设置,但这应该会为您提供足够的信息来研究更多有关该主题的信息。
您可能还会发现反过来也行得通。在家庭网络中设置一个普通的控制应用程序并使其连接到您的 VPS 以定期读取配置或写入状态,然后在本地应用它。
这实际上不是网络问题 ;)
首先,192.168.2.3 在糟糕的互联网上并不存在,它在 'private address range' 中,仅供内部使用,因此您不会从网络外部访问它。
您需要访问您的 public 面向地址(分配给您的路由器 WAN0 端口的地址,或者任何设备调用 public 面向接口的地址)
这还取决于您的 ISP 是否允许您从外部世界访问您的外部地址(我的 ISP 不会对该地址进行 NAT,但您的可以。)
我还要添加一个警告,这是猜测,因为我今天才拿到我的 HUE(和宜家)集线器,我还没有时间检查,但很多嵌入式设备只会愉快地与上面的东西交谈相同的 IP 子网。
正如之前的受访者所暗示的 "HTTP access from the internet, that way lies madness"
基本上 HTTPS 是唯一可以使用的理智选项。
必要时可以使用 VPN 连接回到您自己的网络作为某种最低限度的安全措施。我说最少是因为即使在我自己的家庭网络上我什至不会选择传递 HTTP 流量。
顺便说一句,我不是偏执狂,无论 vlan、访问列表、防火墙和所有最好的意图如何,网络数据都会泄露,您不希望任何未加密的东西(在任何时候)的凭据。
我正在尝试使用 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
这个问题实际上与Python无关。这是一个常见的网络问题。
如果你在互联网上有控制脚本运行来控制灯说,在家里,你需要open/redirect从VPS向你的VPS发出的TCP 80端口请求家庭 IP,在你的家庭路由器配置中,到你家的 IP "bridge",正如我从 phue
模块中看到的那样,它有一个 HTTP Rest API.
然后我希望系统(我没用过或真的不知道)有某种身份验证,或者其他人如果访问你的家庭路由器 IP 也可以控制它(他们会这样做).如果您通过双方使用密钥进行身份验证,则还需要对通信进行加密,否则密钥可能会被读取和窃取。例如,这需要使用 HTTPS 并将 80 端口更改为 443 端口,还需要使用(至少)自签名证书设置 HTTPS 服务器。
可能还有其他可能的设置,但这应该会为您提供足够的信息来研究更多有关该主题的信息。
您可能还会发现反过来也行得通。在家庭网络中设置一个普通的控制应用程序并使其连接到您的 VPS 以定期读取配置或写入状态,然后在本地应用它。
这实际上不是网络问题 ;)
首先,192.168.2.3 在糟糕的互联网上并不存在,它在 'private address range' 中,仅供内部使用,因此您不会从网络外部访问它。
您需要访问您的 public 面向地址(分配给您的路由器 WAN0 端口的地址,或者任何设备调用 public 面向接口的地址)
这还取决于您的 ISP 是否允许您从外部世界访问您的外部地址(我的 ISP 不会对该地址进行 NAT,但您的可以。)
我还要添加一个警告,这是猜测,因为我今天才拿到我的 HUE(和宜家)集线器,我还没有时间检查,但很多嵌入式设备只会愉快地与上面的东西交谈相同的 IP 子网。
正如之前的受访者所暗示的 "HTTP access from the internet, that way lies madness"
基本上 HTTPS 是唯一可以使用的理智选项。
必要时可以使用 VPN 连接回到您自己的网络作为某种最低限度的安全措施。我说最少是因为即使在我自己的家庭网络上我什至不会选择传递 HTTP 流量。
顺便说一句,我不是偏执狂,无论 vlan、访问列表、防火墙和所有最好的意图如何,网络数据都会泄露,您不希望任何未加密的东西(在任何时候)的凭据。