2017-08-07 29 views
0

我想消費以下websocket weather api如何在Python中使用websocket apis?

我試着改編following examples但是我沒有找到任何地方。

import asyncio 
import websockets 

async def hello(): 
    async with websockets.connect('ws://ws.weatherflow.com/swd/data') as websocket: 

     await websocket.send({ 
      "type":"listen_start", 
      "device_id":1110, 
      "id":"2098388936" 
     }) 

     greeting = await websocket.recv() 
     print(greeting) 

asyncio.get_event_loop().run_until_complete(hello()) 

如何在Python中使用websocket apis?那是如何獲得持續不斷的天氣信息?

回答

1

看來,API_KEY參數丟失:

SmartWeather documentation

  • 的WebSocket

    • 打開WebSocket連接
    • wss://ws.weatherflow.com/swd/data?api_key=20c70eae-e62f-4d3b-b3a4-8586e90f3ac8

    • 通過websocket連接發送JSON消息以開始偵聽演示設備的觀察結果。發送此消息後,您連接的websocket客戶端每分鐘都會收到一條新的觀察JSON消息。

    • { "type":"listen_start", "device_id":1110, "id":"random-id-12345" }

我把它用下面的代碼工作:

import asyncio 
import websockets 

async def hello(): 
    async with websockets.connect('wss://swd.weatherflow.com/swd/data?api_key=20c70eae-e62f-4d3b-b3a4-8586e90f3ac8') as websocket: 
     await websocket.send('{"type":"listen_start", "device_id":1110,"id": "2098388936"}') 
     greeting = await websocket.recv() 
     print(greeting) 

asyncio.get_event_loop().run_until_complete(hello()) 

注意的是,根據該文件,這個API關鍵是要快速上手。請勿在您的應用程序中使用此密鑰。