【发布时间】:2019-09-23 23:04:26
【问题描述】:
我有一个 Python 脚本,它可以从智能插头检索测量数据,以便我可以在我的 Rasbperry Pi 上将其可视化。
这个命令获取数据
send_hs_command("192.168.1.26", 9999, b'{"emeter":{"get_realtime":{}}}')
这就是定义
def send_hs_command(address, port, cmd):
data = b""
tcp_sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
try:
tcp_sock.connect((address, port))
tcp_sock.send(encrypt(cmd))
data = tcp_sock.recv(2048)
except socket.error:
print(time.asctime( time.localtime(time.time()) ), "Socket closed.", file=sys.stderr)
finally:
tcp_sock.close()
return data
我的问题是,如果我把智能插头带到别处,它就会有 一个新的 IP 地址,这意味着我必须继续在我的 Python 脚本上重写它。这不是我的选择。什么是最简单的解决方案?谢谢
【问题讨论】:
-
我猜你可以通过 iface 名称获取 IP 地址,不是吗?也许看看这篇帖子stackoverflow.com/questions/24196932/… 会有所帮助。您甚至可以使用一些网络嗅探 python 包(如 scapy)从 MAC 地址获取 IP 地址。
-
@danlor - 您正在尝试解决与所询问的问题不同的问题。提问者需要获取智能插头的地址,而不是 pi 的地址。
-
@ChrisStratton,你是对的,我误读了这个问题。 iface-name 方法会给他在给定子网中的 pi 的地址,而不是智能插头的地址。但是,MAC 方法仍然有效。
标签: python raspberry-pi ip ip-address iot