Socket API¶
Socket API только асинхронный. Используйте asyncio.run() для точки входа.
Шаг 1: Токен авторизации¶
from lovensepy import get_token
auth_token = get_token(
developer_token="YOUR_TOKEN",
uid="user_123",
uname="User"
)
Шаг 2: URL сокета¶
Аргумент platform должен точно совпадать с Website Name в Lovense Developer Dashboard.
Шаг 3: WebSocket URL¶
Шаг 4: Подключение¶
import asyncio
from lovensepy import SocketAPIClient
async def main():
client = SocketAPIClient(ws_url, on_event=lambda e, p: print(e, p))
await client.connect() # фоновые циклы стартуют и быстро возвращаются
Шаг 5: Запрос QR, когда Socket.IO готов¶
client_ref = []
def on_connected():
client_ref[0].send_event("basicapi_get_qrcode_ts", {"ackId": "1"})
client = SocketAPIClient(ws_url, on_socket_io_connected=on_connected, on_event=...)
client_ref.append(client)
Шаг 6: Информация об устройстве после скана¶
Пользователь сканирует QR. Приходит basicapi_update_device_info_tc со списком игрушек в payload.
Шаг 7: Отправка команд¶
Когда client.is_socket_io_connected истинно:
if client.is_socket_io_connected:
client.send_command("Function", "Vibrate:10", time_sec=5, toy="toy_id")
Шаг 8: Критичные стопы с ожиданием¶
Шаг 9: Долгоживущие соединения¶
# Держим соединение даже после кратковременных обрывов.
runner = client.start_background(auto_reconnect=True, retry_delay=5.0)
Можно также вызывать await client.connect_with_retry(retry_delay=5.0) напрямую.
Локальные команды в той же LAN¶
Передайте use_local_commands=True, чтобы после скана QR команды шли по HTTPS на устройство, а не только по WebSocket в облако.