Files
Alberto-Audrix 32a36cceff
CI / lint-and-test (push) Canceled after 0s
first commit
2026-07-28 08:55:05 +07:00

35 KiB

Dokumentasi API CPSP-GO

Base URL: https://dashboard.cpsp.id

Semua endpoint API mengembalikan respons dalam format JSON. Sebagian besar endpoint mendukung metode HTTP standar (GET, POST, PUT, PATCH, DELETE) kecuali dinyatakan lain.


Daftar Isi

  1. API Scales
  2. API Cage Sites
  3. API Frigate Counter
  4. API Counting Sacks
  5. API IoT
  6. API Data Support Manual
  7. API Data Support
  8. API Umum

API Scales

Base URL: https://dashboard.cpsp.id/api/scales/

Mendapatkan Cage berdasarkan ID

Mengambil informasi cage dan perhitungan KPI berdasarkan ID cage.

Endpoint: GET /api/scales/cage/<uuid:id>

Parameter:

  • id (UUID, wajib) - UUID dari cage

Respons:

{
  "data": {
    "id": "uuid",
    "name": "string",
    "kpi": {
      // Perhitungan KPI
    },
    // ... field cage lainnya
  },
  "success": true
}

Contoh:

curl https://dashboard.cpsp.id/api/scales/cage/9f556d2a-af5c-41b0-bcd0-6cea0dfa0fed
{
  "data": {
    "id": "9f556d2a-af5c-41b0-bcd0-6cea0dfa0fed",
    "ref_number": "CSFK-04564",
    "name": "sukawarna",
    "devices": [
      {
        "id": "9f556df5-06f0-46d7-b6be-3cc77358df8a",
        "name": "Lantai Atas_D",
        "part_number": "CIAIWS-812995-20250707125058",
        "status": true,
        "last_online": "2025-11-04T02:00:02+07:00"
      },
      {
        "id": "9f556dea-78a3-46eb-9a5d-dfaa01cf49d9",
        "name": "Lantai Atas_C",
        "part_number": "CIAIWS-869407-20250707125051",
        "status": true,
        "last_online": "2025-11-04T02:00:02+07:00"
      },
      {
        "id": "9f556d8a-4adc-4035-907b-a71bbd6d0d6d",
        "name": "Lantai Atas_B",
        "part_number": "CIAIWS-266141-20250707124948",
        "status": true,
        "last_online": "2025-11-04T01:55:02+07:00"
      },
      {
        "id": "9f556d3e-536c-4847-b40f-12df3b2727bf",
        "name": "Lantai Atas_A",
        "part_number": "CIAIWS-540230-20250707124858",
        "status": true,
        "last_online": "2025-11-04T02:00:02+07:00"
      }
    ],
    "kpi": {
      "0": {
        "mortality": 25,
        "mortality_total": 25,
        "food": 4,
        "food_total": 4,
        "harvest": 0,
        "harvest_total": 0,
        "chicken_life": 19975,
        "chicken_life_percentage": 99.875,
        "ref_weight": 35,
        "manual_weight": 35,
        "manual_harvest_weight": 0,
        "manual_harvest_weight_total": 0,
        "manual_fcr": 0.286071875558734,
        "manual_eef": 0,
        "iot_weight": 35,
        "iot_harvest_weight": 0,
        "iot_harvest_weight_total": 0,
        "iot_fcr": 0.286071875558734,
        "iot_eef": 0
      },
      "1": {
        "mortality": 23,
        "mortality_total": 48,
        "food": 5,
        "food_total": 9,
        "harvest": 0,
        "harvest_total": 0,
        "chicken_life": 19952,
        "chicken_life_percentage": 99.76,
        "ref_weight": 43,
        "manual_weight": 49.5,
        "manual_harvest_weight": 0,
        "manual_harvest_weight_total": 0,
        "manual_fcr": 0.455638988116935,
        "manual_eef": 1083.77907264,
        "iot_weight": 50,
        "iot_harvest_weight": 0,
        "iot_harvest_weight_total": 0,
        "iot_fcr": 0.451082598235766,
        "iot_eef": 1105.78417777778
      },
      "2": {
        "mortality": 24,
        "mortality_total": 72,
        "food": 5,
        "food_total": 14,
        "harvest": 0,
        "harvest_total": 0,
        "chicken_life": 19928,
        "chicken_life_percentage": 99.64,
        "ref_weight": 62,
        "manual_weight": 59.5,
        "manual_harvest_weight": 0,
        "manual_harvest_weight_total": 0,
        "manual_fcr": 0.590360592249746,
        "manual_eef": 502.11515452,
        "iot_weight": 60.2,
        "iot_harvest_weight": 0,
        "iot_harvest_weight_total": 0,
        "iot_fcr": 0.58349593420033,
        "iot_eef": 513.9991256512
      }
    }
  },
  "success": true
}

API Cage Sites

Base URL: https://dashboard.cpsp.id/api/cage_sites/

Mendapatkan Semua Cage Sites

Mengambil semua cage sites.

Endpoint: GET /api/cage_sites/get_all/

Respons:

{
  "data": [
    {
      "id": "integer",
      "name": "string",
      // ... field cage site lainnya
    }
  ],
  "success": true
}

Contoh:

curl https://dashboard.cpsp.id/api/cage_sites/get_all/
{
  "data": [
    {
      "name": "Sukawarna",
      "location": "SRID=4326;POINT(106.6275018 -6.384292299999999)",
      "address": "PT. SUM Farm Sukawarna Jl. Cilangkap Sukamulya Bogor Regency West Java Indonesia",
      "iot_scales": [
        {
          "id": "9f556d2a-af5c-41b0-bcd0-6cea0dfa0fed",
          "ref_number": "CSFK-04564",
          "name": "sukawarna",
          "devices": [
            {
              "id": "9f556df5-06f0-46d7-b6be-3cc77358df8a",
              "name": "Lantai Atas_D",
              "part_number": "CIAIWS-812995-20250707125058",
              "status": true,
              "last_online": "2025-11-04T02:00:02+07:00"
            },
            {
              "id": "9f556dea-78a3-46eb-9a5d-dfaa01cf49d9",
              "name": "Lantai Atas_C",
              "part_number": "CIAIWS-869407-20250707125051",
              "status": true,
              "last_online": "2025-11-04T02:00:02+07:00"
            },
            {
              "id": "9f556d8a-4adc-4035-907b-a71bbd6d0d6d",
              "name": "Lantai Atas_B",
              "part_number": "CIAIWS-266141-20250707124948",
              "status": true,
              "last_online": "2025-11-04T01:55:02+07:00"
            },
            {
              "id": "9f556d3e-536c-4847-b40f-12df3b2727bf",
              "name": "Lantai Atas_A",
              "part_number": "CIAIWS-540230-20250707124858",
              "status": true,
              "last_online": "2025-11-04T02:00:02+07:00"
            }
          ]
        }
      ]
    }
  ],
  "success": true
}

API Counting Sacks

Base URL: https://dashboard.cpsp.id/api/counting/

Mendapatkan Sacks berdasarkan Camera

Mengambil data counting sacks yang dikelompokkan berdasarkan nama kamera untuk site tertentu.

Endpoint: GET /api/counting/sacks/<int:site_id>/<str:camera_name>/

Parameter:

  • site_id (integer, wajib) - ID dari site
  • camera_name (string, opsional) - Filter berdasarkan nama kamera tertentu. Jika diabaikan, mengembalikan data untuk semua kamera.

Respons:

{
  "success": true,
  "data": [
    {
      "camera_name": "string",
      "total_sacks": "integer",
      "count_records": "integer",
      "latest_update": "datetime",
      "records": [
        {
          "id": "integer",
          "camera_name": "string",
          "value": "integer",
          "date": "date",
          "updated_at": "datetime"
        }
      ]
    }
  ],
  "total_cameras": "integer"
}

Contoh:

# Mendapatkan semua kamera
curl https://dashboard.cpsp.id/api/counting/sacks/1/
```json
{
  "success": true,
  "data": [
    {
      "camera_name": "kandang_1_karung_masuk",
      "total_sacks": 1361,
      "count_records": 25,
      "latest_update": "2025-11-03T23:44:56.156030Z",
      "records": [
        {
          "camera_name": "kandang_1_karung_masuk",
          "value": 2,
          "date": "2025-11-04",
          "created_at": "2025-11-04T05:25:56.612274+07:00",
          "updated_at": "2025-11-04T06:44:56.156030+07:00"
        }, 
        .....
        {
          "camera_name": "kandang_1_karung_masuk",
          "value": 78,
          "date": "2025-09-26",
          "created_at": "2025-09-26T15:28:01.911577+07:00",
          "updated_at": "2025-11-04T05:25:56.126478+07:00"
        }
      ]
    },
    {
      "camera_name": "kandang_1_karung_pakan_depan",
      "total_sacks": 1287,
      "count_records": 25,
      "latest_update": "2025-11-03T22:25:56.609684Z",
      "records": [
        {
          "camera_name": "kandang_1_karung_pakan_depan",
          "value": 0,
          "date": "2025-11-04",
          "created_at": "2025-11-03T17:00:00.869539+07:00",
          "updated_at": "2025-11-04T05:25:56.609684+07:00"
        },
        ......
        {
          "camera_name": "kandang_1_karung_pakan_depan",
          "value": 21,
          "date": "2025-11-03",
          "created_at": "2025-11-02T23:19:22.057390+07:00",
          "updated_at": "2025-11-04T05:25:56.600974+07:00"
        },
        {
          "camera_name": "kandang_1_karung_pakan",
          "value": 68,
          "date": "2025-09-26",
          "created_at": "2025-09-26T15:28:01.893886+07:00",
          "updated_at": "2025-11-04T05:25:56.112694+07:00"
        }
      ]
    }
  ],
  "total_cameras": 3
}

Mendapatkan kamera tertentu

curl https://dashboard.cpsp.id/api/counting/sacks/1/kandang_1_karung_pakan_depan/

{"success":true,"data":[{"camera_name":"kandang_1_karung_pakan_depan","total_sacks":1287,"count_records":25,"latest_update":"2025-11-03T22:25:56.609684Z","records":[{"camera_name":"kandang_1_karung_pakan_depan","value":0,"date":"2025-11-04","created_at":"2025-11-03T17:00:00.869539+07:00","updated_at":"2025-11-04T05:25:56.609684+07:00"},{"camera_name":"kandang_1_karung_pakan_depan","value":21,"date":"2025-11-03","created_at":"2025-11-02T23:19:22.057390+07:00","updated_at":"2025-11-04T05:25:56.600974+07:00"},{"camera_name":"kandang_1_karung_pakan_depan","value":1,"date":"2025-11-01","created_at":"2025-10-31T17:00:00.705719+07:00","updated_at":"2025-11-04T05:25:56.595023+07:00"},{"camera_name":"kandang_1_karung_pakan_depan","value":16,"date":"2025-10-31","created_at":"2025-10-31T09:42:41.185931+07:00","updated_at":"2025-11-04T05:25:56.584855+07:00"},{"camera_name":"kandang_1_karung_pakan_depan","value":4,"date":"2025-10-30","created_at":"2025-10-29T17:00:00.287677+07:00","updated_at":"2025-11-04T05:25:56.579798+07:00"},{"camera_name":"kandang_1_karung_pakan_depan","value":11,"date":"2025-10-29","created_at":"2025-10-28T17:00:00.299515+07:00","updated_at":"2025-11-04T05:25:56.571122+07:00"},{"camera_name":"kandang_1_karung_pakan_depan","value":10,"date":"2025-10-28","created_at":"2025-10-27T17:00:00.400938+07:00","updated_at":"2025-11-04T05:25:56.238567+07:00"},{"camera_name":"kandang_1_karung_pakan_depan","value":966,"date":"2025-10-27","created_at":"2025-10-26T17:00:00.103423+07:00","updated_at":"2025-11-04T05:25:56.230926+07:00"},{"camera_name":"kandang_1_karung_pakan_depan","value":8,"date":"2025-10-26","created_at":"2025-10-25T17:04:17.976769+07:00","updated_at":"2025-11-04T05:25:56.226985+07:00"},{"camera_name":"kandang_1_karung_pakan_depan","value":12,"date":"2025-10-25","created_at":"2025-10-24T17:00:00.374980+07:00","updated_at":"2025-11-04T05:25:56.221105+07:00"},{"camera_name":"kandang_1_karung_pakan_depan","value":0,"date":"2025-10-24","created_at":"2025-10-23T17:00:00.783614+07:00","updated_at":"2025-11-04T05:25:56.213066+07:00"},{"camera_name":"kandang_1_karung_pakan_depan","value":8,"date":"2025-10-23","created_at":"2025-10-22T18:31:48.068413+07:00","updated_at":"2025-11-04T05:25:56.207350+07:00"},{"camera_name":"kandang_1_karung_pakan_depan","value":0,"date":"2025-10-21","created_at":"2025-10-21T16:12:52.423379+07:00","updated_at":"2025-11-04T05:25:56.201264+07:00"},{"camera_name":"kandang_1_karung_pakan_depan","value":0,"date":"2025-10-07","created_at":"2025-10-06T17:00:00.198834+07:00","updated_at":"2025-11-04T05:25:56.195429+07:00"},{"camera_name":"kandang_1_karung_pakan_depan","value":0,"date":"2025-10-06","created_at":"2025-10-05T17:00:00.174676+07:00","updated_at":"2025-11-04T05:25:56.189054+07:00"},{"camera_name":"kandang_1_karung_pakan_depan","value":19,"date":"2025-10-05","created_at":"2025-10-04T17:00:00.143554+07:00","updated_at":"2025-11-04T05:25:56.183067+07:00"},{"camera_name":"kandang_1_karung_pakan_depan","value":7,"date":"2025-10-04","created_at":"2025-10-03T17:00:00.194431+07:00","updated_at":"2025-11-04T05:25:56.177284+07:00"},{"camera_name":"kandang_1_karung_pakan_depan","value":25,"date":"2025-10-03","created_at":"2025-10-02T17:00:00.138511+07:00","updated_at":"2025-11-04T05:25:56.171219+07:00"},{"camera_name":"kandang_1_karung_pakan_depan","value":16,"date":"2025-10-02","created_at":"2025-10-01T17:00:00.227774+07:00","updated_at":"2025-11-04T05:25:56.165029+07:00"},{"camera_name":"kandang_1_karung_pakan_depan","value":33,"date":"2025-10-01","created_at":"2025-09-30T17:00:00.125184+07:00","updated_at":"2025-11-04T05:25:56.158252+07:00"},{"camera_name":"kandang_1_karung_pakan_depan","value":31,"date":"2025-09-30","created_at":"2025-09-29T17:00:00.129642+07:00","updated_at":"2025-11-04T05:25:56.152338+07:00"},{"camera_name":"kandang_1_karung_pakan_depan","value":41,"date":"2025-09-29","created_at":"2025-09-28T17:00:00.169230+07:00","updated_at":"2025-11-04T05:25:56.146353+07:00"},{"camera_name":"kandang_1_karung_pakan_depan","value":36,"date":"2025-09-28","created_at":"2025-09-27T17:00:00.202966+07:00","updated_at":"2025-11-04T05:25:56.140330+07:00"},{"camera_name":"kandang_1_karung_pakan_depan","value":21,"date":"2025-09-27","created_at":"2025-09-26T17:00:55.355849+07:00","updated_at":"2025-11-04T05:25:56.133065+07:00"},{"camera_name":"kandang_1_karung_pakan_depan","value":1,"date":"2025-09-26","created_at":"2025-09-26T16:54:41.140906+07:00","updated_at":"2025-11-04T05:25:56.128835+07:00"}]}],"total_cameras":1}  

API IoT

Base URL: https://dashboard.cpsp.id/api/iot/

Flocks

Operasi GET standar untuk data IoT flock.

Endpoint:

  • GET /api/iot/flocks/ - Menampilkan semua flocks
  • GET /api/iot/flocks/<id>/ - Mengambil flock tertentu

Parameter Query:

  • Parameter pagination dan filtering standar

Contoh:

curl https://dashboard.cpsp.id/api/iot/flocks/
{
  "success": true,
  "data": {
    "id": 341,
    "flock_id": "686df69f407b21002da8750c",
    "name": "Lantai 1",
    "payload": {
      "code": 200,
      "status": "success",
      "message": "Ok",
      "data": {
        "inverter": {
          "setEnable": false,
          "value": 0
        },
        "device": {
          "B1": {
            "status": 1,
            "setEnable": 1,
            "setOff": 60,
            "setOn": 90,
            "inverterValue": 0,
            "inverterEnable": 0,
            "inverterState": 0,
            "inverterStatus": 0,
            "errorCode": 0
          },
          "B2": {
            "status": 1,
            "setEnable": 0,
            "setOff": 20,
            "setOn": 30,
            "inverterValue": 0,
            "inverterEnable": 0,
            "inverterState": 0,
            "inverterStatus": 0,
            "errorCode": 0
          },
          "B3": {
            "status": 1,
            "setEnable": 0,
            "setOff": 20,
            "setOn": 30,
            "inverterValue": 0,
            "inverterEnable": 0,
            "inverterState": 0,
            "inverterStatus": 0,
            "errorCode": 0
          },
          "B4": {
            "status": 1,
            "setEnable": 0,
            "setOff": 20,
            "setOn": 30,
            "inverterValue": 0,
            "inverterEnable": 0,
            "inverterState": 0,
            "inverterStatus": 0,
            "errorCode": 0
          },
          "B5": {
            "status": 0,
            "setEnable": 0,
            "setOff": 20,
            "setOn": 30,
            "inverterValue": 0,
            "inverterEnable": 0,
            "inverterState": 0,
            "inverterStatus": 0,
            "errorCode": 0
          },
          "B6": {
            "status": 0,
            "setEnable": null,
            "setOff": null,
            "setOn": null,
            "inverterValue": 0,
            "inverterEnable": 0,
            "inverterState": 0,
            "inverterStatus": 0,
            "errorCode": 0
          },
          "B7": {
            "status": 0,
            "setEnable": null,
            "setOff": null,
            "setOn": null,
            "inverterValue": 0,
            "inverterEnable": 0,
            "inverterState": 0,
            "inverterStatus": 0,
            "errorCode": 0
          },
          "B8": {
            "status": 0,
            "setEnable": null,
            "setOff": null,
            "setOn": null,
            "inverterValue": 0,
            "inverterEnable": 0,
            "inverterState": 0,
            "inverterStatus": 0,
            "errorCode": 0
          },
          "B9": {
            "status": 0,
            "setEnable": null,
            "setOff": null,
            "setOn": null,
            "inverterValue": 0,
            "inverterEnable": null,
            "inverterState": null,
            "inverterStatus": null,
            "errorCode": 0
          },
          "B10": {
            "status": 0,
            "setEnable": null,
            "setOff": null,
            "setOn": null,
            "inverterValue": 0,
            "inverterEnable": null,
            "inverterState": null,
            "inverterStatus": null,
            "errorCode": 0
          },
          "B11": {
            "status": 0,
            "setEnable": null,
            "setOff": null,
            "setOn": null,
            "inverterValue": 0,
            "inverterEnable": null,
            "inverterState": null,
            "inverterStatus": null,
            "errorCode": 0
          },
          "C": {
            "status": 0,
            "setEnable": 0,
            "setOff": 300,
            "setOn": 6
          },
          "H": {
            "status": 0,
            "setEnable": 0,
            "setOff": 20,
            "setOn": 30
          },
          "H2": {
            "status": 0,
            "setEnable": null,
            "setOff": null,
            "setOn": null
          }
        },
        "targetTemperature": {
          "B1": {
            "setEnable": 1,
            "value": 30.6,
            "hysteresis": 0.1
          },
          "B2": {
            "setEnable": 1,
            "value": 31.6,
            "hysteresis": 0.1
          },
          "B3": {
            "setEnable": 1,
            "value": 32.6,
            "hysteresis": 0.1
          },
          "B4": {
            "setEnable": 1,
            "value": 33.6,
            "hysteresis": 0.1
          },
          "B5": {
            "setEnable": 1,
            "value": 35.1,
            "hysteresis": 0.1
          },
          "H": {
            "setEnable": 1,
            "value": 28.7,
            "hysteresis": 0.5
          },
          "C": {
            "setEnable": 0,
            "value": 35,
            "hysteresis": 0
          }
        },
        "alarm": {
          "min": {
            "value": 29,
            "status": true
          },
          "max": {
            "value": 38.5,
            "status": true
          }
        },
        "distributor": {
          "id_odoo": "",
          "name": "",
          "phone": "",
          "icon_url": ""
        },
        "sensors": {
          "temperature1": {
            "value": 313,
            "calibration": 5
          },
          "temperature2": {
            "value": 319,
            "calibration": 6
          },
          "temperature3": {
            "value": 326,
            "calibration": 2
          },
          "ammonia": {
            "value": 1,
            "calibration": 1
          },
          "humidity": {
            "value": 684,
            "calibration": -14
          },
          "temperatureOutside": {
            "value": 0,
            "calibration": 0
          },
          "co2": {
            "value": 698,
            "calibration": 0
          },
          "wind": {
            "value": 0
          },
          "water": {
            "value": -4.950092032938584e+32
          }
        },
        "alarm_ammonia": {
          "max": {
            "value": 100,
            "status": 0
          }
        },
        "alarm_co2": {
          "max": {
            "value": 0,
            "status": 0
          },
          "status_alarm_max": 0,
          "status_sensor_error": 0
        },
        "actualTemperature": 0,
        "idealTemperature": 0,
        "humidity": 0,
        "co2": 609,
        "water": 190555518396268540,
        "amonia": 0,
        "calibrationTemperature": null,
        "mode": "mcc",
        "HSI": 0,
        "day": 8,
        "connected": false,
        "isPairing": true,
        "lastUpdate": "2025-10-30T04:20:00.638Z",
        "warning": "",
        "serialNumber": null,
        "periode": null,
        "deviceName": "",
        "version": "1.2.11.0-i.1",
        "versionCode": 12110,
        "productId": null,
        "enable": true,
        "deleted": false,
        "_id": "686df69f407b21002da8750c",
        "type": "CI-Touch218",
        "typeCode": 228,
        "name": "Lantai 1",
        "odooShedId": 5440,
        "kandang": "686bc189407b21002dfce44d",
        "user": "686bc0f810af4b0028bbd579",
        "partNumber": "7092449043030108015",
        "location": {
          "lat": 0,
          "lon": 0
        },
        "updateTime": "2025-07-09T04:57:03.109Z",
        "createdAt": "2025-07-09T04:57:03.111Z",
        "updatedAt": "2025-10-30T04:27:32.458Z",
        "coop": {
          "idOdoo": 5440,
          "deleted": false,
          "isMandiri": true,
          "fully_paired": false,
          "active": false,
          "_id": "686bc189407b21002dfce44d",
          "isActive": false,
          "createdBy": "686bc0f810af4b0028bbd579",
          "kode": "Sukawarna",
          "alamat": "Cilangkap, Sukamulya, Rumpin, Bogor",
          "tipe": 1,
          "populasi": 50000,
          "flock": [
            {
              "_id": "686bc189407b21002dfce44e",
              "populasi": 25000
            },
            {
              "_id": "686bc189407b21002dfce44f",
              "populasi": 25000
            }
          ],
          "flocks": [],
          "floor_count": 2,
          "flock_count": 2,
          "isDistributor": true,
          "createdAt": "2025-07-07T12:46:01.858Z",
          "updatedAt": "2025-07-07T12:46:02.047Z",
          "jenisBudidaya": "broiler",
          "kota": "KAB. BOGOR",
          "province": "JAWA BARAT",
          "regency": "KAB. BOGOR"
        },
        "lastConnected": {
          "lastConnect": "117 Hari yang lalu",
          "timeAgo": "4 bulan yang lalu",
          "time": "2025-07-09T04:57:03.109Z"
        }
      }
    },
    "fetched_at": "2025-11-04T09:10:02.811769+07:00",
    "updated_at": "2025-11-04T09:10:02.811824+07:00"
  }
}

Mendapatkan Data Flock Terbaru

Mendapatkan data IoT flock terbaru dengan field yang sudah diformat.

Endpoint: GET /api/iot/flocks/latest/

Respons: Mengembalikan record flock paling terbaru dengan data yang sudah diformat.

Contoh:

curl https://dashboard.cpsp.id/api/iot/flocks/latest/
{
  "success": true,
  "data": {
    "suhu": 31.7,
    "kelembaban": 69.6,
    "co2": 44.6,
    "amonia": 0,
    "HSI": 15.866,
    "day": 6,
    "_id": "686df69f407b21002da8750c",
    "name": "Lantai 1",
    "kandang": "686bc189407b21002dfce44d",
    "updateTime": "2025-10-20T04:59:11.927631Z"
  }
}

Mendapatkan Data Flock dalam Rentang Waktu

Mendapatkan data IoT flock dalam rentang tanggal tertentu.

Endpoint: GET /api/iot/flocks/range/

Parameter Query:

  • start_date (string, wajib) - Tanggal mulai dalam format yyyy-mm-dd atau ISO
  • end_date (string, wajib) - Tanggal akhir dalam format yyyy-mm-dd atau ISO
  • flock_id (string, opsional) - ID flock (menggunakan default jika tidak disediakan)

Contoh:

curl "https://dashboard.cpsp.id/api/iot/flocks/range/?start_date=2025-10-09&end_date=2025-10-09&flock_id=686df69f407b21002da8750c"
{
  "success": true,
  "data": {
    "suhu": 30.5,
    "kelembaban": 65.8,
    "co2": 34.0,
    "amonia": 0,
    "HSI": 15.27,
    "day": 38,
    "_id": "686df69f407b21002da8750c",
    "name": "Lantai 1",
    "kandang": "686bc189407b21002dfce44d",
    "updateTime": "2025-10-09T04:23:09.163514Z"
  }
}

Mendapatkan Data Sensor Terbaru

Mendapatkan data sensor IoT flock terbaru.

Endpoint: GET /api/iot/flocks/sensors/latest/

Contoh:

curl https://dashboard.cpsp.id/api/iot/flocks/sensors/latest/
{
  "success": true,
  "data": {
    "suhu": 31.7,
    "kelembaban": 69.6,
    "co2": 44.6,
    "amonia": 0,
    "HSI": 15.866,
    "day": 6,
    "_id": "686df69f407b21002da8750c",
    "name": "Lantai 1",
    "kandang": "686bc189407b21002dfce44d",
    "update_at": "2025-10-20T04:59:11.927631Z",
    "sensor-suhu1:sensors.temperature1.value/31.3": null,
    "sensor-suhu1:sensors.temperature2.value/31.6": null,
    "sensor-suhu1:sensors.temperature3.value/31.3": null,
    "sensor-ammonia:sensors.ammonia.value/0.1": null,
    "sensor-kelembaban:sensors.humidity.value/70.7": null,
    "sensor-suhuluar:sensors.temperatureOutside.value/0.0": null,
    "sensor-co2:sensors.co2.value/44.6": null,
    "sensor-wind:sensors.wind.value/0.3": null,
    "sensor-water:sensors.water.value/1.268472e-27": null
  }
}

Mendapatkan Data Sensor dalam Rentang Waktu

Mendapatkan data sensor IoT flock dalam rentang tanggal tertentu.

Endpoint: GET /api/iot/flocks/sensors/range/

Parameter Query:

  • start_date (string, wajib) - Tanggal mulai dalam format yyyy-mm-dd atau ISO
  • end_date (string, wajib) - Tanggal akhir dalam format yyyy-mm-dd atau ISO
  • flock_id (string, opsional) - ID flock (menggunakan default jika tidak disediakan)

Contoh:

curl "https://dashboard.cpsp.id/api/iot/flocks/sensors/range/?start_date=2025-10-09&end_date=2025-10-09"
{
  "success": true,
  "data": {
    "suhu": 30.5,
    "kelembaban": 65.8,
    "co2": 34.0,
    "amonia": 0,
    "HSI": 15.27,
    "day": 38,
    "_id": "686df69f407b21002da8750c",
    "name": "Lantai 1",
    "kandang": "686bc189407b21002dfce44d",
    "update_at": "2025-10-09T04:23:09.163514Z",
    "sensor-suhu1:sensors.temperature1.value/28.3": null,
    "sensor-suhu1:sensors.temperature2.value/28.7": null,
    "sensor-suhu1:sensors.temperature3.value/28.0": null,
    "sensor-ammonia:sensors.ammonia.value/0.0": null,
    "sensor-kelembaban:sensors.humidity.value/75.9": null,
    "sensor-suhuluar:sensors.temperatureOutside.value/0.0": null,
    "sensor-co2:sensors.co2.value/36.3": null,
    "sensor-wind:sensors.wind.value/0.0": null,
    "sensor-water:sensors.water.value/0.0": null
  }
}

Log Aktivitas

Operasi list standar untuk log aktivitas IoT.

Endpoint: GET /api/iot/log-act/

Parameter Query:

  • startDate (string, opsional) - Tanggal mulai dalam format yyyy-mm-dd atau ISO
  • endDate (string, opsional) - Tanggal akhir dalam format yyyy-mm-dd atau ISO
  • flock_id (string, opsional) - ID flock (menggunakan default jika tidak disediakan)
  • cage_id (string, opsional) - Filter berdasarkan ID cage
  • limit (integer, opsional) - Ukuran halaman (default: 50)
  • page (integer, opsional) - Nomor halaman (default: 1)

Respons:

{
  "success": true,
  "data": {
    "id": "string",
    "flock": "string",
    "cage_id": "string",
    "description": "string",
    "waktu": "datetime",
    "flag": "string",
    "type_notif": "string",
    "logged_status": "string",
    "log_dev_type": "string"
  }
}

Contoh:

curl "https://dashboard.cpsp.id/api/iot/log-act/?startDate=2025-10-09&endDate=2025-10-09&limit=3&page=1"
{
  "success": true,
  "data": {
    "id": "68e7bb8bee0955002d11d332",
    "waktu": "2025-10-09T20:41:31.344000+07:00",
    "cage_id": "686bc189407b21002dfce44d",
    "flock": "686df69f407b21002da8750c",
    "description": "Koneksi Internet Terhubung",
    "flag": "success",
    "type_notif": "alat",
    "logged_status": "Koneksi internet terhubung kembali",
    "log_dev_type": "Chickin Touchscreen"
  }
}

Mendapatkan Log Aktivitas Terakhir

Mendapatkan N record log aktivitas IoT terbaru.

Endpoint: GET /api/iot/log-act/last/

Parameter Query:

  • flock_id (string, opsional) - ID flock (menggunakan default jika tidak disediakan)
  • cage_id (string, opsional) - Filter berdasarkan ID cage
  • limit (integer, opsional) - Jumlah record (default: 10)

Respons:

{
  "success": true,
  "data": {
    "id": "string",
    "flock": "string",
    "cage_id": "string",
    "description": "string",
    "waktu": "datetime",
    "flag": "string",
    "type_notif": "string",
    "logged_status": "string",
    "log_dev_type": "string"
  }
}

Contoh:

curl "https://dashboard.cpsp.id/api/iot/log-act/last/?limit=3"
{
  "success": true,
  "data": {
    "id": "68ef49f8ee0955002d86574a",
    "waktu": "2025-10-15T14:15:03.941000+07:00",
    "cage_id": "686bc189407b21002dfce44d",
    "flock": "686df69f407b21002da8750c",
    "description": "kipas 5",
    "flag": "success",
    "type_notif": "alat",
    "logged_status": "kipas 5 berhasil dinyalakan oleh Target suhu",
    "log_dev_type": "target suhu"
  }
}

Mendapatkan Log Aktivitas Terakhir dengan Pencarian

Mendapatkan record log aktivitas IoT terbaru yang difilter berdasarkan deskripsi.

Endpoint: GET /api/iot/log-act/last/<search>/

Parameter:

  • search (string, wajib) - Kata kunci untuk memfilter berdasarkan deskripsi (tidak case-sensitive)

Parameter Query:

  • flock_id (string, opsional) - ID flock (menggunakan default jika tidak disediakan)
  • cage_id (string, opsional) - Filter berdasarkan ID cage
  • limit (integer, opsional) - Jumlah record (default: 10)

Contoh:

curl "https://dashboard.cpsp.id/api/iot/log-act/last/kipas/?limit=3"
{
  "success": true,
  "data": {
    "id": "68ef49f8ee0955002d86574a",
    "waktu": "2025-10-15T14:15:03.941000+07:00",
    "cage_id": "686bc189407b21002dfce44d",
    "flock": "686df69f407b21002da8750c",
    "description": "kipas 5",
    "flag": "success",
    "type_notif": "alat",
    "logged_status": "kipas 5 berhasil dinyalakan oleh Target suhu",
    "log_dev_type": "target suhu"
  }
}

API Data Support Manual / API Data Support

Base URL: https://dashboard.cpsp.id/api/data-support/

DO (Data Object)

Endpoint:

  • GET /api/data-support/do/ - Menampilkan semua record DO
  • GET /api/data-support/do/<id>/ - Mengambil record DO tertentu

Parameter Query:

  • name (string, opsional) - Filter berdasarkan nama (pencocokan sebagian, tidak case-sensitive)

Aksi Kustom:

  • GET /api/data-support/do/<id>/daily_data/ - Mendapatkan data berat harian untuk record DO tertentu
  • GET /api/data-support/do/<id>/table_data/ - Mendapatkan data tabel yang sudah diformat untuk record DO tertentu
  • GET /api/data-support/do/<id>/list_daily/ - Mendapatkan data list yang sudah diformat untuk record DO tertentu
  • GET /api/data-support/do/weight_standard_data/ - Mendapatkan data standar berat yang diformat sebagai struktur JSON weightStandardData
  • GET /api/data-support/do/weight_standard_data_by_do/ - Mendapatkan data standar berat untuk record DO tertentu (parameter query: do_ids - integer yang dipisahkan koma)

Contoh:

curl "https://dashboard.cpsp.id/api/data-support/do/?name=contoh"
curl "https://dashboard.cpsp.id/api/data-support/do/weight_standard_data_by_do/?do_ids=1,2,3"

DO Daily

Endpoint:

  • GET /api/data-support/do-daily/ - Menampilkan semua record DO daily
  • GET /api/data-support/do-daily/<id>/ - Mengambil record DO daily tertentu

Parameter Query:

  • do_id (integer, opsional) - Filter berdasarkan ID record DO induk
  • day (integer, opsional) - Filter berdasarkan hari

Contoh:

curl "https://dashboard.cpsp.id/api/data-support/do-daily/?do_id=1&day=5"

Parameters (Parameter)

Endpoint:

  • GET /api/data-support/parameters/ - Menampilkan semua parameters
  • GET /api/data-support/parameters/<id>/ - Mengambil record parameter tertentu

Parameter Query:

  • name (string, opsional) - Filter berdasarkan nama (pencocokan sebagian, tidak case-sensitive)

Aksi Kustom:

  • GET /api/data-support/parameters/by_name/ - Mendapatkan parameter berdasarkan nama tepat (parameter query: name - wajib)

Contoh:

curl "https://dashboard.cpsp.id/api/data-support/parameters/?name=contoh"
curl "https://dashboard.cpsp.id/api/data-support/parameters/by_name/?name=NAMA_PARAMETER"

FCR Table

Mendapatkan data tabel FCR dengan perhitungan berdasarkan umur ayam dalam hari dan populasi.

Endpoint: GET /api/data-support/fcrtable/<str:dow>/<str:population>/

Parameter:

  • dow (integer, wajib) - berat hari 0 ayam ( 35 sd 50 )
  • population (integer, wajib) - Populasi

Respons:

{
  "success": true,
  "data": {
    "day": "integer",
    "weight": "float",
    "adg": "float",
    "daily-gain": "float",
    "daily-feed": "float",
    "feeds-use": "float",
    "fcr": "float",
    "total-feed": "float",
    "bags-feed": "float"
  }
}

Contoh:

curl "https://dashboard.cpsp.id/api/data-support/fcrtable/35/20000/"
{
  "success": true,
  "data": {
    "day": 1,
    "weight": 46.666667,
    "adg": 11.666667,
    "daily-gain": 0.33333,
    "daily-feed": 10.8255,
    "feeds-use": 10.826667,
    "fcr": 0.232,
    "total-feed": 216533.3331,
    "bags-feed": 4330.666662
  }
}

FCR Table Hari Tunggal

Mendapatkan data FCR dengan perhitungan berdasarkan umur ayam dalam hari dan populasi pada hari yang ditentukan.

Endpoint: GET /api/data-support/fcrtable/<str:dow>/<str:population>/<int:day>/

Parameter:

  • dow (integer, wajib) - berat day 0 ayam
  • population (integer, wajib) - Populasi
  • day (integer, wajib) - umur

Respons:

{
  "success": true,
  "data": {
    "day": "integer",
    "weight": "float",
    "adg": "float",
    "daily-gain": "float",
    "daily-feed": "float",
    "feeds-use": "float",
    "fcr": "float",
    "total-feed": "float",
    "bags-feed": "float"
  }
}

Contoh:

curl https://dashboard.cpsp.id/api/data-support/fcrtable/35/19972/5/
{
  "success": true,
  "data": {
    "day": 5,
    "weight": 109.166667,
    "adg": 18.333333,
    "daily-gain": 0.20183,
    "daily-feed": 0.002271,
    "feeds-use": 0.084386,
    "fcr": 0.773,
    "total-feed": 1685.353864,
    "bags-feed": 33.707077
  }
}

Respons Error

Semua endpoint dapat mengembalikan respons error berikut:

400 Bad Request

{
  "success": false,
  "detail": "Pesan error yang menjelaskan apa yang salah"
}

404 Not Found

{
  "success": false,
  "detail": "Resource tidak ditemukan"
}

500 Internal Server Error

{
  "success": false,
  "detail": "Pesan error yang menjelaskan error server"
}

Catatan Penting

  1. Format Tanggal: Parameter tanggal menerima format yyyy-mm-dd dan format ISO 8601 (misalnya, 2024-01-01T00:00:00Z).

  2. Paginasi: Endpoint list mungkin mendukung paginasi. Periksa header respons atau parameter query untuk detail paginasi.

  3. Filtering: Banyak endpoint mendukung filtering parameter query. Lihat dokumentasi endpoint individual untuk filter yang tersedia.

  4. Format UUID: Parameter UUID harus dalam format UUID standar (misalnya, 123e4567-e89b-12d3-a456-426614174000).

  5. Base URL: Semua endpoint menggunakan base URL https://dashboard.cpsp.id. Ganti dengan URL development/staging Anda jika diperlukan.


Dukungan

Untuk masalah atau pertanyaan mengenai API, silakan hubungi tim pengembangan.