kono-judge
kono-judge는 kono-arduino로부터 데이터를 받아 kono-judge-status에서 데이터를 볼 수 있도록 WebSocket server 및 HTTP API를 제공합니다. Python 3으로 구현되어 있습니다.
Execution
$ pip3 install -r requirements.txt
$ python3 src/judge.pyEnvironment 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-arduino와 kono-judge-status입니다. kono-arduino는 confidentials.json에 등록한 Device ID를 가지고 있는 장치만 연락이 가능합니다. kono-judge-status는 별다른 인증 없이도 연락이 가능하지만, 동시에 2개 client까지만 연결할 수 있습니다.
kono-arduino client 연결 시,
Device ID가 올바르지 않거나,
이미 그 ID를 가진 client가 연결되어 있을 경우
에러 메시지를 전송하며 즉시 연결을 종료합니다.
kono-judge-status는 연결 시 첫 packet으로 kono-arudino의 packet 구조와 동일한 형태의 packet을 전송해야 합니다.
이 때, 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
device_id
number
데이터를 불러올 kono-arduino의 Device ID
Query Parameters
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?