Skip to content

vidinsight-labs/Luma-Server

Repository files navigation

Luma-Server

Django REST Framework tabanlı kamera ve flash kontrol sistemi için API sunucusu. Çoklu cihaz yönetimi, proje/collection organizasyonu ve donanım kontrolü sağlar.

📋 İçindekiler

✨ Özellikler

  • 🎥 Kamera Kontrolü: Advantech USB-4751L donanımı ile kamera ve flash tetikleme
  • 📱 Çoklu Cihaz Yönetimi: Raspberry Pi tabanlı cihazlarla HTTP üzerinden iletişim
  • 📁 Proje Yönetimi: Proje ve collection bazlı dosya organizasyonu
  • ⚙️ Ayar Yönetimi: Kamera ve flash ayarlarını merkezi olarak yönetme
  • 📥 Dosya İndirme: Proje ve collection'ları ZIP formatında indirme
  • 🔄 Paralel İşlemler: ThreadPoolExecutor ile eş zamanlı cihaz işlemleri

🔧 Gereksinimler

  • Python 3.8+
  • Django 5.2.7
  • Django REST Framework
  • django-cors-headers
  • requests
  • Advantech BDaq SDK (Windows için - donanım kontrolü için)

📦 Kurulum

Windows Kullanıcıları İçin

Windows'ta ilk kurulum için detaylı kılavuz: Windows Kurulum Kılavuzu

Hızlı Kurulum (Windows):

  1. setup.bat dosyasını çift tıklayın (otomatik kurulum)
  2. Kurulum tamamlandıktan sonra start.bat dosyasını çift tıklayın (sunucuyu başlat)

Manuel Kurulum

1. Projeyi Klonlayın

git clone <repository-url>
cd Luma-Server

2. Virtual Environment Oluşturun

python -m venv venv

# Windows
venv\Scripts\activate

# Linux/Mac
source venv/bin/activate

3. Bağımlılıkları Yükleyin

pip install -r requirements.txt

4. Veritabanını Oluşturun

python manage.py migrate

5. Sunucuyu Başlatın

python manage.py runserver

Sunucu varsayılan olarak http://127.0.0.1:8000/ adresinde çalışacaktır.

Windows'ta: start.bat dosyasını çift tıklayarak da sunucuyu başlatabilirsiniz.

⚙️ Yapılandırma

Ortam Değişkenleri

Production ortamı için .env dosyası oluşturmanız önerilir:

SECRET_KEY=your-secret-key-here
DEBUG=False
ALLOWED_HOSTS=your-domain.com,localhost

Settings.py Ayarları

  • PROJECT_DIR: Proje dosyalarının saklanacağı klasör (varsayılan: "projects")
  • ALLOWED_HOSTS: İzin verilen host'lar (production için yapılandırılmalı)
  • DEBUG: Debug modu (production için False olmalı)

📚 Dokümantasyon

Detaylı dokümantasyon için aşağıdaki dosyalara bakın:

Kurulum Kılavuzları

Kullanım Kılavuzları

Teknik Dokümantasyon

Dokümantasyon İçerikleri

Hızlı Başlangıç Kılavuzu:

  • Sistem açıldığında izlenmesi gereken adımlar
  • Her endpoint için detaylı örnekler
  • Request/Response formatları
  • Hata durumları ve çözümleri
  • Tam işlem akışı

API Reference:

  • Tüm endpoint'lerin detaylı açıklamaları
  • Request/Response şemaları
  • Parametre açıklamaları
  • Geçerli değerler ve seçenekler
  • Hata durumları ve mesajları
  • cURL örnekleri

Frontend Entegrasyon Kılavuzu:

  • CORS yapılandırması
  • API bağlantı yöntemleri
  • React, Vue, Vanilla JavaScript örnekleri
  • Hata yönetimi
  • Best practices

Sistem Mimarisi:

  • Sistem bileşenleri ve katmanlar
  • Veri akışı diyagramları
  • Veritabanı şeması
  • Teknoloji stack
  • Güvenlik mimarisi

Sistem Çalışma Mantığı:

  • İşlem akışları
  • Paralel işlem yönetimi
  • Donanım kontrolü
  • Hata yönetimi
  • Veri senkronizasyonu

🚀 Kullanım

Temel İşlemler

1. Proje Oluşturma

POST /api/create-project/
Content-Type: application/json

{
  "name": "Yeni Proje"
}

2. Cihaz Ekleme

POST /api/add-device
Content-Type: application/json

{
  "name": "Raspberry Pi 1",
  "ip": "192.168.1.100",
  "device_id": "001"
}

3. Kamera Ayarlarını Güncelleme

PATCH /api/update-camera-setting
Content-Type: application/json

{
  "iso_speed": "400",
  "shutter_speed": "1/60",
  "aperture": "8",
  "white_balance": "Auto"
}

4. Kameraları Yeniden Bağlama

POST /api/reconnect-cameras

📡 API Endpoints

Proje Yönetimi

Method Endpoint Açıklama
POST /api/create-project/ Yeni proje oluştur
GET /api/get-project-list Tüm projeleri listele
GET /api/get-project-detail/<id> Proje detayını getir
PATCH /api/update-project/<id> Projeyi güncelle
DELETE /api/delete-project/<id> Projeyi sil
GET /api/download-project/<id> Projeyi ZIP olarak indir

Collection Yönetimi

Method Endpoint Açıklama
POST /api/create-collection/<project_id> Yeni collection oluştur
GET /api/get-collection-list/<project_id> Collection listesini getir
GET /api/get-collection-detail/<id> Collection detayını getir
GET /api/download-collection/<id> Collection'ı ZIP olarak indir
DELETE /api/delete-collection/<id> Collection'ı sil

Dosya Yönetimi

Method Endpoint Açıklama
GET /api/get-file-list/<collection_id> Dosya listesini getir
GET /api/get-file-detail/<id> Dosya detayını getir
GET /api/download-file/<id> Dosyayı indir

Cihaz Yönetimi

Method Endpoint Açıklama
POST /api/add-device Yeni cihaz ekle
GET /api/get-device-list Tüm cihazları listele
PATCH /api/update-device/<id> Cihazı güncelle
DELETE /api/delete-device/<id> Cihazı sil
POST /api/reconnect-cameras Tüm cihazlarda kameraları yeniden bağla
DELETE /api/delete-all-photos Tüm cihazlardan fotoğrafları sil
POST /api/reset-devices Tüm cihazları resetle

Ayar Yönetimi

Method Endpoint Açıklama
GET /api/get-camera-setting Kamera ayarlarını getir
PATCH /api/update-camera-setting Kamera ayarlarını güncelle
GET /api/get-flash-setting Flash ayarlarını getir
PATCH /api/update-flash-setting Flash ayarlarını güncelle

📂 Proje Yapısı

Luma-Server/
├── api/                    # Ana uygulama
│   ├── models/            # Veritabanı modelleri
│   │   ├── Project.py
│   │   ├── Collection.py
│   │   ├── File.py
│   │   ├── Device.py
│   │   ├── CameraSetting.py
│   │   └── FlashSetting.py
│   ├── serializers/       # DRF serializers
│   ├── views/             # API view'ları
│   │   ├── ProjectViews/
│   │   ├── CollectionViews/
│   │   ├── FileViews/
│   │   ├── DeviceViews/
│   │   └── SettingViews/
│   └── utils/             # Yardımcı fonksiyonlar
│       ├── CamTrigger.py  # Donanım kontrolü
│       └── PiRequests.py  # Cihaz iletişimi
├── LumaServer/            # Django proje ayarları
│   ├── settings.py
│   ├── urls.py
│   └── wsgi.py
├── manage.py
├── requirements.txt
└── README.md

🔨 Geliştirme

Veritabanı Migrations

Yeni model değişikliklerinden sonra:

python manage.py makemigrations
python manage.py migrate

Test Çalıştırma

python manage.py test

Donanım Kontrolü

CamTrigger.py modülü Advantech USB-4751L cihazını kontrol eder. Windows ortamında BDaq SDK'nın yüklü olması gerekir.

Cihaz İletişimi

Raspberry Pi cihazlarının aşağıdaki endpoint'leri desteklemesi beklenir:

  • GET /api/get-device-data - Cihaz bilgilerini getir
  • GET /api/get-photo-list - Fotoğraf listesini getir
  • POST /api/set-device-settings - Kamera ayarlarını gönder
  • DELETE /api/delete-all-photos - Tüm fotoğrafları sil
  • GET /api/disconnect-all - Tüm kameraları bağlantıyı kes
  • GET /api/connect-all - Tüm kameraları bağla
  • GET /api/reset-camera - Kamerayı resetle

⚠️ Önemli Notlar

  1. Güvenlik: Production ortamında SECRET_KEY ve DEBUG ayarlarını mutlaka yapılandırın.
  2. Donanım: USB-4751L kontrolü sadece Windows ortamında çalışır.
  3. Cihazlar: Raspberry Pi cihazlarının aynı ağda olması ve API endpoint'lerini desteklemesi gerekir.
  4. Dosya Yönetimi: Proje dosyaları projects/ klasöründe saklanır (gitignore'da).

📝 Lisans

Bu proje özel kullanım içindir.

🤝 Katkıda Bulunma

  1. Fork edin
  2. Feature branch oluşturun (git checkout -b feature/amazing-feature)
  3. Commit edin (git commit -m 'Add some amazing feature')
  4. Push edin (git push origin feature/amazing-feature)
  5. Pull Request açın

📧 İletişim

Sorularınız için issue açabilirsiniz.

About

Centralized API for managing and monitoring multiple cameras connected to a single Raspberry Pi. Enables remote control, real-time status tracking, and unified coordination through a single interface.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors