251124 [ Day 94 ] - Project (15)

TaeHyun·2025년 11월 24일

TIL

목록 보기
111/184

시작하며

오늘은 미리 작성했던 API 명세서를 모두 완료해서 Postman을 사용해서 테스트해보았다.

API Test

POST /api/relay/control

  • 릴레이 제어 및 DB에 거래 내역 저장
  • Test
    • 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

  • 현재 릴레이 채널 활성화 상태 확인
  • Test
    • Log

      {
          "A": true,
          "B": false,
          "C": true,
          "D": false
      }

GET /api/data/latest

  • 최신 태양광 데이터 조회
  • Test
    • 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

  • 거래 내역 조회
  • Test
    • 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

  • 아두이노 → 서버 → DB
  • Test
    • Body

      {
      "soc": 85.5,
      "solar_w": 120.3,
      "lux": 50000
      }
    • Log

      SOC: 85.5%, 전력: 120.3W, 조도: 50000lux
      센서 데이터 저장 : 성공

POST /api/energy/predict

  • 모델 예측
  • Test
    • Log

      {
          "1h": 0.74,
          "2h": 1.29,
          "3h": 1.9
      }

POST /api/channels/available

  • 판매 가능 채널 조회
  • Test
    • Log

      현재 판매중인 채널 : ['A', 'C']
      소비중인 전력 : 35.00 W
      
      현재 가용 전력(5분 기준) : 98.20 W
      
      판매 가능 채널 : ['B', 'D']
      {
          "A": false,
          "B": true,
          "C": false,
          "D": true
      }

POST /api/channels/optimal

  • 최적 판매 조합 추천
  • Test
    • 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는 거의 마무리 단계가 될 것 같다.

profile
Hello I'm TaeHyunAn, Currently Studying Data Analysis

0개의 댓글