오늘은 미리 작성했던 API 명세서를 모두 완료해서 Postman을 사용해서 테스트해보았다.
POST /api/relay/control
Body
{
"A": true,
"B": false,
"C": true,
"D": false
}
Log
릴레이 상태 저장 : 업데이트할 데이터 - [('on', 'A'), ('off', 'B'), ('on', 'C'), ('off', 'D')]
릴레이 상태 저장 : 커밋 완료
거래 내역 저장 : 커밋 완료
거래 내역 저장 성공 (A) : 10W
거래 내역 저장 : 커밋 완료
거래 내역 저장 성공 (C) : 25W
아두이노 제어 : URL 미설정
GET /api/relay/status
Log
{
"A": true,
"B": false,
"C": true,
"D": false
}
GET /api/data/latest
Log
{
"id": 15,
"lux": 0,
"soc": 100.0,
"solar_w": 0.0,
"timestamp": "Mon, 24 Nov 2025 11:42:04 GMT"
}
GET /api/data/history
Log
[
{
"amount": 10.0,
"buyer_id": 1,
"id": 1,
"timestamp": "Mon, 24 Nov 2025 11:35:44 GMT"
},
{
"amount": 25.0,
"buyer_id": 3,
"id": 2,
"timestamp": "Mon, 24 Nov 2025 11:35:44 GMT"
}
]
POST /api/data/solar
Body
{
"soc": 85.5,
"solar_w": 120.3,
"lux": 50000
}
Log
SOC: 85.5%, 전력: 120.3W, 조도: 50000lux
센서 데이터 저장 : 성공
POST /api/energy/predict
Log
{
"1h": 0.74,
"2h": 1.29,
"3h": 1.9
}
POST /api/channels/available
Log
현재 판매중인 채널 : ['A', 'C']
소비중인 전력 : 35.00 W
현재 가용 전력(5분 기준) : 98.20 W
판매 가능 채널 : ['B', 'D']
{
"A": false,
"B": true,
"C": false,
"D": true
}
POST /api/channels/optimal
Log
배터리 잔량 : 100.0 %
실시간 생산량 : 0.0 W
총 가용 전력(5분 기준) : 133.20 W
유효 조합 수 : 15 개
최적 판매 조합 : ['A', 'B', 'C', 'D']
{
"channels": [
"A",
"B",
"C",
"D"
]
}
테스트를 마친 뒤 생각해보니 지금은 아두이노에서 10초마다 데이터를 받아서 저장하고 있는데, 그러면 DB가 너무 부담이 될 것 같아서 24시간까지만 실시간 데이터를 저장하고 이후에는 1시간 평균을 계산해서 시간별로 저장을 해야 될 것 같다. 내일 DB 테이블 수정과 시간별 저장 로직을 구현하면 API와 DB는 거의 마무리 단계가 될 것 같다.