我正在尝试使用: softScheck/tplink-smartplug
我陷入了错误循环。第一个的修复导致另一个,另一个的修复导致第一个。代码都可以在 git 链接的 tplink-smartplug.py 中找到。
cmd = "{\"system\":{\"set_relay_state\":{\"state\":0}}}"
sock_tcp.send(encrypt(cmd))
def encrypt(string):
key = 171
result = "\0\0\0\0"
for i in string:
a = key ^ ord(i)
key = a
result += chr(a)
return result
实际上,结果 = 'Ðòøÿ÷Õï¶Å Ôùðè·Ä°Ñ¥ÀâØ£òçöÔîÞ£Þ' 我得到了错误(在原始文件的第 92 行:sock_tcp.send(encrypt(cmd)):
需要一个类似字节的对象,而不是“str”
所以我也改变了函数调用:
sock_tcp.send(encrypt(cmd.encode('utf-8')))
我的错误也发生了变化:
ord() 预期长度为 1 的字符串,但找到 int
我了解 ord() 正在尝试做什么,并且我了解编码。但我不明白的是......如果我不能给编译器它想要的东西,我应该如何将此加密消息发送到我的智能插件?有解决办法吗?我很确定最初的 git 是用 Python 2 或更早版本编写的。所以也许我没有正确转换为 Python 3?
感谢您的阅读,感谢您的帮助。