我正在尝试执行TPLINK smartplug python脚本:https://github.com/softScheck/tplink-smartplug/blob/master/tplink-smartplug.py
主要问题与“ sock_tcp.send(加密(cmd))”有关。变量cmd是我在终端中作为参数传递的字符串(参见下面的示例)。使用Python2执行此代码我从smartplug
获得了成功的响应bash:~/tplink-smartplug-master$ python tplink-smartplug.py -t 192.168.xx.xx -j '{"emeter":{"get_realtime":{}}}'
输出 - 打印
Sent: {"emeter":{"get_realtime":{}}}
('Received: ', '{"emeter":{"get_realtime":{"current":0.039509,"voltage":236.064036,"power":4.880813,"total":0.004000,"err_code":0}}}')
如果我用Python3执行代码,我收到错误“ TypeError:需要类似字节的对象,而不是'str'”。这与使用字符串的unicode而Python2使用字节的Python3有关。
但是,如果我更改代码以满足Python3的要求:“ sock_tcp.send(encrypt(cmd).encode())”强制从Unicode转换为字节。执行代码时的响应是:
bash:~/tplink-smartplug-master$ python3 tplink-smartplug.py -t 192.168.xx.xx -j '{"emeter":{"get_realtime":{}}}'
输出 - 打印
Sent: {"emeter":{"get_realtime":{}}}
Received:
我应该做些什么样的对话才能让它在Python3中运行?
encrypt()函数只添加一个额外的图表,您可以在上面的链接上查看它。
谢谢你的帮助! JP