My Project : Battery System saving data to GraphQL

 

My Project : Battery System saving data to GraphQL

   Proyek ini bertujuan untuk mengintegrasikan dan mengelola data dari sistem baterai yang terdiri dari perangkat RMS, MPPT, dan inverter. Dengan menggunakan protokol API, sistem ini mengumpulkan data dari semua perangkat dan mengirimkannya ke server GraphQL. Dalam situasi di mana server mengalami gangguan sinyal, data sementara akan disimpan di database SQLite dan kemudian dikirim kembali saat koneksi stabil.

Peran:

   Backend Developer 

Fitur:

  • Pengelolaan dan integrasi data dari perangkat RMS, MPPT, dan inverter
  • Penyimpanan sementara menggunakan SQLite untuk mengatasi gangguan jaringan
  • Pengiriman data ke server GraphQL dengan sinkronisasi otomatis
  • Pemantauan data real-time dan kontrol perangkat

Teknologi:

  • Node.js
  • Express
  • GraphQL
  • SQLite
  • Postman (untuk pengujian API)

Penggunaan:

  1. Clone repositori ini.
  2. Install dependensi dengan menjalankan perintah:
    npm install
  3. Perbarui path tempat program ini di-clone di services_install.js
  4. Install service dengan menjalankan perintah:
    node services_install.js
  5. Pastikan server GraphQL Anda sedang berjalan (saya menggunakan Hasura GraphQL).
  6. Perbarui kredensial Anda di file .env.

API Endpoints:

Setting Rack:

  • GET /rack - List all Rack
  • GET /rack/:rack_sn - List specific Rack
  • DELETE /mppt/:mppt_sn - Delete mppt by mppt_sn
  • POST /mppt - Create a new mppt with JSON body:
    {
      "rack_sn": "examplerack001",
      "uuid_user": "example001"
    }

Setting RMS:

  • GET /rms1 - List all RMS
  • GET /rms1/:rms_sn - List specific RMS
  • DELETE /rms1/:rms_sn - Delete RMS by rms_sn
  • POST /rms1 - Create a new rms with JSON body:
    {
      "rms_sn": "exampleRMS001",
      "rms_ip": "200.10.2.212",
      "rack_sn": "example001",
      "config": {
        "note": "cms",
        "frame_name": "default",
        "total_cell": 32,
        "uom_current": "A",
        "capacity_new": 10,
        "capacity_now": 10,
        "uom_capacity": "KWH",
        "cell_not_used": "4, 8, 9, 13, 14, 19, 23, 24, 28, 29, 34, 39, 44",
        "uom_total_cell": "Pcs",
        "maximum_current": 200,
        "uom_temperature": "°C",
        "uom_cell_voltage": "mV",
        "maximum_temperature": 56.8,
        "minimum_temperature": 20.5,
        "maximum_cell_voltage": 3600,
        "minimum_cell_voltage": 2600,
        "maximum_different_cell": 600,
        "total_frame": 8
      }
    }

Setting Inverter:

  • GET /inverter1 - List all inverter
  • GET /inverter1/:inverter_sn - List specific inverter
  • DELETE /inverter1/:inverter_sn - Delete Inverter by inverter_sn
  • POST /inverter1 - Create a new inverter with JSON body:
    {
      "device_sn": "exampleINV001",
      "inverter_ip": "200.10.2.220",
      "rack_sn": "example001"
    }

Setting MPPT:

  • GET /mppt1 - List all Mppt
  • GET /mppt1/:mppt_sn - List specific Mppt
  • DELETE /mppt1/:mppt_sn - Delete Mppt by mppt_sn
  • POST /mppt1 - Create a new mppt with JSON body:
    {
      "mppt_sn": "exampleMPPT001",
      "mppt_ip": "200.10.2.230",
      "rack_sn": "example"
    }

Setting Interval:

  • GET /interval - List all interval
  • GET /interval/:device - List specific interval
  • DELETE /interval/:device - Delete interval by device
  • POST /interval - Create a new interval with JSON body:
    {
      "device": "inverter",
      "post_interval": 1
    }

Data Fetching:

  • GET /rms - Get data fetching from API RMS
  • GET /inverter - Get data fetching from API Inverter
  • GET /mppt - Get data fetching from API MPPT

Controller:

  • POST /start - Starting program
  • GET /stop - Stopping program

Postman Collection:

  • File koleksi Postman untuk pengujian endpoint API terletak di direktori postman dan diberi nama data post graphql.postman_collection.json.
  • Untuk mengimpor koleksi Postman, buka Postman, klik tombol Import, dan pilih file dari direktori postman.

Kesimpulan:

Proyek ini menampilkan kemampuan untuk mengelola data perangkat baterai secara efisien, dengan memastikan data tetap konsisten meskipun terjadi gangguan koneksi. Dengan menggunakan kombinasi teknologi modern, aplikasi ini menawarkan solusi handal untuk integrasi data dalam sistem baterai.

Source Code :

Untuk informasi lebih lanjut tentang proyek ini atau untuk berdiskusi tentang kolaborasi proyek, silakan hubungi saya atau kunjungi website saya

Gesa Rizky
Tech Enthusiast & Freelancer yang senantiasa belajar lebih giat lagi karena kemampuan sifatnya berkembang tidak ada seseorang pun yang memilki kemampuan tanpa di iringi dengan belajar

Related Posts

: