API specification
- Index
- /Insert
- /RecentStatus
- /Control
- /DesiredStatus
- /LookupByPeriod
- /LookupByNumber
- /RegisterDevice
- /RegisterRecipe
- /CheckDeviceOverlap
- /ProfileFarmer
-
Server domain
Public DNS(IPv4):
https://asia-northeast1-superfarmers.cloudfunctions.net
-
/Insert
데이터베이스에 센서 데이터를 저장합니다.
데이터 검수 과정 중 이상값이 감지되면 abnormal 컬렉션과 desired_status 컬렉션의 값을 업데이트합니다.
method path request response POST
/Insert (JSON) uuid를 포함한 센서 데이터 정보 (string) 에러 메세지 -
Request body 예시
- uuid: (string) 아두이노 기기의 고유 번호
- temperature: (number) 온도
- humidity: (number) 습도
- pH: (number) 배양액 산성 정도
- ec: (number) 배양액 이온 정도
- light: (number) 조도
- liquid_temperature: (number) 수온
- liquid_level: (boolean) 수위
- led: (boolean) LED on/off
- fan: (boolean) 팬 on/off
데이터에 이상값이 감지되면 abnormal 컬렉션엔 다음과 같은 정보가 기록됩니다.
- uuid: (string) 아두이노 기기의 고유 번호
- errors: (Array<number>) 에러 코드
- time: (number) 에러 발생 시각 (UTC+0 기준)
다음은
errors
필드의 에러 코드들에 대한 명세입니다.또한 desired_status 컬렉션의 document id가 uuid와 일치하는 문서를 다음과 같이 업데이트합니다.
이에 대한 내용은
DesiredStatus
API를 호출하여 확인할 수 있습니다.4. /DesiredStatus
를 참고해주세요. -
-
/RecentStatus
데이터베이스에서 해당 기기의 최근 상태값을 찾아 반환합니다. (number형 데이터는 소숫점 둘째자리에서 반올림)
method path request response GET
/RecentStatus (string) uuid (JSON) 최근 상태값 - Query param 예시
/RecentStatus?uuid=123e6b776f000c04
-
Response body 예시
- temperature: (number) 온도
- humidity: (number) 습도
- pH: (number) 배양액 산성 정도
- ec: (number) 배양액 이온 정도
- light: (number) 조도
- liquid_temperature: (number) 수온
- liquid_level: (boolean) 수위
- led: (boolean) LED on/off
- fan: (boolean) 팬 on/off
- unix_time: (number) 데이터 저장 시각
- local_time: (timestamp) 데이터 저장 시각 (UTC+0 기준)
-
/Control
모바일 앱에서 아두이노 기기를 원격 제어하는 데 사용됩니다.
desired_status 컬렉션의 상태를 변화시키고 아두이노 기기에서 데이터베이스의 변화를 감지하면 사용자가 설정한대로 움직이게 됩니다.
method path request response POST
/Control (JSON) uuid와 상태값 (string) 에러 메세지 -
/DesiredStatus
아두이노 기기에서 사용자의 설정을 리스닝할 때 사용됩니다.
desired_status 컬렉션의 상태를 받아 희망하는 상태값을 파악하고, 기기가 이 결과대로 움직이게 해야합니다.
method path request response GET
/DesiredStatus (string) uuid (JSON) 상태 값 -
/LookupByPeriod
특정 기간 동안의 최근 기록들을 조회합니다.
method path request response POST
/LookupByPeriod (JSON) uuid와 필드명, 조회할 기간 (JSON) 조회한 기록 -
/LookupByNumber
특정 갯수만큼의 최근 기록들을 조회합니다.
method path request response POST
/LookupByNumber (JSON) uuid와 필드명, 조회할 갯수 (JSON) 조회한 기록 -
/RegisterDevice
새로운 기기 정보를 등록합니다.
method path request response POST
/RegisterDevice (JSON) 사용자 정보와 기기 고유 번호 (string) 에러 메세지 -
/RegisterRecipe
작물 재배 레시피를 등록합니다.
만약 같은 기기에 기존 레시피가 있었다면 덮어씁니다.
method path request response POST
/RegisterRecipe (JSON) (string) 에러 메세지 -
Request body 예시
- uid: (string) 사용자 uid
- uuid: (string) 기기 고유번호
- crop: (string) 작물명
- farm_name: (string) 농장명
- temperature_min: (number) 온도 최소값
- temperature_max: (number) 온도 최대값
- humidity_min: (number) 습도 최소값
- humidity_max: (number) 습도 최대값
- liquid_temperature: (number) 양액 온도
- tray_liquid_level: (number) 양액 물높이
- light: (number) 조도
- light_time: (number) 일조 시간
- pH_min: (number) pH 최소값
- pH_max: (number) pH 최대값
- ec_min: (number) 양액 농도 최소값
- ec_max: (number) 양액 농도 최대값
- planting_distance_min_width: (number) 재식 거리 최소 가로
- planting_distance_min_height: (number) 재식 거리 최소 세로
- planting_distance_max_width: (number) 재식 거리 최대 가로
- planting_distance_max_height: (number) 재식 거리 최대 세로
-
-
/CheckDeviceOverlap
기기 중복 여부를 검사합니다.
등록돼있지 않은 기기라면
404 Not Found
에러를 반환합니다.사용중인 기기라면
403 Forbidden
에러를 반환합니다.등록 가능한 기기라면
200 OK
를 반환합니다.method path request response POST
/CheckDeviceOverlap (JSON) uuid (string) 에러 메세지 -
/ProfileFarmer
사용자의 프로필(닉네임과 등록된 스마트팜 정보)을 조회합니다.
method path request response GET
/ProfileFarmer (string) 사용자 uid (JSON) 사용자 프로필