blinker-iot / blinker-py

Blinker python library for hardware. Works with Raspberry Pi, Banan Pi, Linux devices
MIT License
3.2k stars 29 forks source link

小爱同学 要操作的设备好像出问题了,等一会再试 #70

Open 1251240000 opened 1 year ago

1251240000 commented 1 year ago

小爱同学语音控制总是返回 设备出问题,有时能正常控制,有时不行

环境:

Linux OptiPlex 3.10.0-1160.el7.x86_64 #1 SMP Mon Oct 19 16:18:59 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
Python 3.9.5
blinker-py                        0.3.0

代码:

from blinker import Device
from blinker.voice_assistant import VAType, VoiceAssistant, PowerMessage, DataMessage
STATUS = 'off'

async def power_change(message: PowerMessage):
    """ 电源状态改变(适用于灯和插座)
    """
    global STATUS
    set_state = message.data["pState"]
    print(f"[{datetime.datetime.now()}] change power state to : {set_state}")
    if set_state == 'true':
        send_magic_packet(mac)
        STATUS = 'on'
    else:
        STATUS = 'off'
    await (await message.power(set_state)).update()

async def state_query(message: DataMessage):
    print(f"[{datetime.datetime.now()}] query state: {message.data}")
    await (await message.power(STATUS)).update()

device = Device("9701030d0719", websocket=True, mi_type=VAType.OUTLET)
voice_assistant = VoiceAssistant(VAType.OUTLET)

voice_assistant.state_query_callable = state_query
voice_assistant.power_change_callable = power_change

device.addVoiceAssistant(voice_assistant)

if __name__ == '__main__':
    device.run()

日志

{'fromDevice': 'ServerSender', 'data': {'get': 'state', 'from': 'MIOT', 'messageId': '63778fa527969378'}}
[2022-11-18 21:59:01.287934] query state: state
2022-11-18 21:59:01.288 | INFO     | blinker.mqttclient:send_to_voiceassistant:115 - send mqtt message to voice assistant: {"fromDevice": "833128F89V2PBJ0TAIZXNYHL", "toDevice": "ServerReceiver", "data": {"pState": "false", "messageId": "63778fa527969378"}}
2022-11-18 21:59:02.377 | INFO     | blinker.mqttclient:_on_connect:46 - Connect to broker from mqtt
2022-11-18 21:59:02.378 | SUCCESS  | blinker.mqttclient:_on_connect:48 - Broker connected...
{'fromDevice': 'ServerSender', 'data': {'set': {'pState': 'true', 'pstate': 'on'}, 'from': 'MIOT', 'messageId': '63778fa62842e056'}}
[2022-11-18 21:59:02.436670] change power state to : true
2022-11-18 21:59:02.437 | INFO     | blinker.mqttclient:send_to_voiceassistant:115 - send mqtt message to voice assistant: {"fromDevice": "833128F89V2PBJ0TAIZXNYHL", "toDevice": "ServerReceiver", "data": {"pState": "true", "messageId": "63778fa62842e056"}}
2022-11-18 21:59:03.482 | INFO     | blinker.mqttclient:_on_connect:46 - Connect to broker from mqtt
2022-11-18 21:59:03.482 | SUCCESS  | blinker.mqttclient:_on_connect:48 - Broker connected...

{'fromDevice': 'ServerSender', 'data': {'get': 'state', 'from': 'MIOT', 'messageId': '63778fb12e9e096c'}}
[2022-11-18 21:59:13.081066] query state: state
2022-11-18 21:59:13.081 | INFO     | blinker.mqttclient:send_to_voiceassistant:115 - send mqtt message to voice assistant: {"fromDevice": "833128F89V2PBJ0TAIZXNYHL", "toDevice": "ServerReceiver", "data": {"pState": "true", "messageId": "63778fb12e9e096c"}}
2022-11-18 21:59:14.129 | INFO     | blinker.mqttclient:_on_connect:46 - Connect to broker from mqtt
2022-11-18 21:59:14.129 | SUCCESS  | blinker.mqttclient:_on_connect:48 - Broker connected...
sxyandapp commented 1 year ago

+1

sxyandapp commented 1 year ago

+1

刚试了,没问题啊