因此,基本上我正在尝试编写一个程序,它可以通过python脚本控制wiz光。我使用python 3.6是因为其他的限制。这是我用来连接到wizlight的pywizlight项目的链接。
https://pypi.org/project/pywizlight/
我知道代码说它只能在python 3.7和更高版本中工作,但是我想知道它是否有可能在3.6中工作。我知道如果你没有wiz灯(也许),可能很难测试它。当我运行它时,我得到了以下错误消息:
RuntimeWarning:
coroutine 'wizlight.turn_on' was never awaited`
light.turn_on(PilotBuilder(brightness = 255))下面是代码:
import pywizlight
import asyncio
from pywizlight import wizlight, PilotBuilder, discovery
async def main():
loop = asyncio.get_event_loop()
task = loop.create_task(turn_off())
await task
async def turn_off():
light = wizlight("ip address of wiz bulb")
light.turn_on(PilotBuilder(brightness = 255))
loop = asyncio.get_event_loop()
loop.run_until_complete(main())有人能让它工作吗?我总共有两个脑细胞,所以我不能。
发布于 2021-02-27 06:06:29
好的,我设法弄清楚发生了什么,我把这个问题留在这里,以防其他人试图用python3.6中的pywizlight做类似的事情。我的问题是我一直收到大量的错误,但主要是我遇到了我无法创建任务的问题,这是因为它是python 3.6。创建任务模块是在python 3.7中实现的。修复这个问题的方法是在包本身中,特别是在python文件"bulb.py“中。将第210、217、295和306行中的"asyncio.create_task“更改为"asyncio.ensure_future”后,运行以下代码:
async def turn_off():
light = wizlight("your wiz light ip address here")
await light.turn_on(PilotBuilder(brightness = 255))
await light.turn_off()
await light.turn_on(PilotBuilder(rgb = (0, 128, 255)))
await light.turn_off()
loop = asyncio.get_event_loop()
loop.run_until_complete(turn_off())灯会打开,关闭,再次打开,但作为一种颜色,然后关闭。我希望这能帮助那些想要完成和我类似的事情的人。
发布于 2021-02-25 11:02:03
您是否尝试过添加await指令?
async def turn_off():
light = wizlight("ip address of wiz bulb")
await light.turn_on(PilotBuilder(brightness = 255))编辑:在评论中解决其他问题
我无法测试它,因为我没有wizlight,但您可能会发现只创建了一个事件循环,并使用它从turn_off执行异步任务。
async def turn_off():
light = wizlight("ip address of wiz bulb")
await light.turn_on(PilotBuilder(brightness = 255))
loop = asyncio.get_event_loop()
loop.run_until_complete(turn_off())另一个SO答案更详细地解释了正在使用的event loop。
https://stackoverflow.com/questions/66201921
复制相似问题