kono-judge

kono-judgekono-arduino로부터 데이터를 받아 kono-judge-status에서 데이터를 볼 수 있도록 WebSocket server 및 HTTP API를 제공합니다. Python 3으로 구현되어 있습니다.

Execution

$ pip3 install -r requirements.txt
$ python3 src/judge.py

Environment Variables

실행 전, 다음과 같은 환경변수를 .env 파일에 작성하세요.

WEBSOCKET_PORT=[WebSocket Server Port]
HTTP_PORT=[HTTP Server Port]

Confidentials

실행 전, 다음과 같은 내용을 confidentials.json에 작성해야 합니다. 접속을 허용할 kono-arduino의 Device ID를 나타내는 것입니다. 최대 7개까지 연결 가능합니다.

{
    "allowed_device_ids": [
        [Device ID 1],
        [Device ID 2],
        ...,
        [Device ID k]
    ]
}

WebSocket Details

kono-judge에 WebSocket으로 연결할 수 있는 client는 kono-arduinokono-judge-status입니다. kono-arduinoconfidentials.json에 등록한 Device ID를 가지고 있는 장치만 연락이 가능합니다. kono-judge-status는 별다른 인증 없이도 연락이 가능하지만, 동시에 2개 client까지만 연결할 수 있습니다.

kono-arduino client 연결 시,

  • Device ID가 올바르지 않거나,

  • 이미 그 ID를 가진 client가 연결되어 있을 경우

에러 메시지를 전송하며 즉시 연결을 종료합니다.

kono-judge-status는 연결 시 첫 packet으로 kono-arudino의 packet 구조와 동일한 형태의 packet을 전송해야 합니다.

kono-arduino

이 때, device ID는 -1 (0xFFFFFFFF)로 하여 전송하면 kono-judge-status client로 인식됩니다. 마찬가지로, 2개 client가 이미 연결되어 있을 경우 에러 메시지를 전송하며 즉시 연결을 종료합니다.

kono-judge WebSocket server에 연결하면, kono-arduino로부터 들어오는 packet들을 중계하여 보내줍니다. 데이터는 JSON으로 인코딩된 string이며 다음과 같은 형태를 가지고 있습니다.

HTTP API Details

WebSocket은 실시간 데이터만 중계할 수 있고, 과거의 데이터는 불러올 수 없기 때문에 과거의 데이터를 보려면 HTTP API를 사용해야 합니다. 최대 24시간 전의 데이터까지 볼 수 있습니다.

Retrieve Recent Data

GET http://<server address>/:device_id

kono-arduino에서 수집한 최근 데이터를 불러옵니다.

Path Parameters

Name
Type
Description

device_id

number

데이터를 불러올 kono-arduino의 Device ID

Query Parameters

Name
Type
Description

recent

string

데이터를 불러올 시간대. 10sec, 1min, 10min, 1h, 6h, 24h 중 하나여야 합니다.

Retrieve Device List

GET http://<server address>/device_ids

kono-arduino 에 연결된 기기들의 id 리스트를 불러옵니다.

Last updated

Was this helpful?