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.
- Özellikler
- Gereksinimler
- Kurulum
- Yapılandırma
- Kullanım
- Dokümantasyon
- API Endpoints
- Proje Yapısı
- Geliştirme
- 🎥 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
- 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)
Windows'ta ilk kurulum için detaylı kılavuz: Windows Kurulum Kılavuzu
Hızlı Kurulum (Windows):
setup.batdosyasını çift tıklayın (otomatik kurulum)- Kurulum tamamlandıktan sonra
start.batdosyasını çift tıklayın (sunucuyu başlat)
git clone <repository-url>
cd Luma-Serverpython -m venv venv
# Windows
venv\Scripts\activate
# Linux/Mac
source venv/bin/activatepip install -r requirements.txtpython manage.py migratepython manage.py runserverSunucu 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.
Production ortamı için .env dosyası oluşturmanız önerilir:
SECRET_KEY=your-secret-key-here
DEBUG=False
ALLOWED_HOSTS=your-domain.com,localhostPROJECT_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ı)
Detaylı dokümantasyon için aşağıdaki dosyalara bakın:
- Windows Kurulum Kılavuzu - Windows'ta sıfırdan kurulumdan dev sunucunun ayağa kaldırılmasına kadar tüm adımlar
- Hızlı Başlangıç Kılavuzu - Sistem açıldığında izlenmesi gereken adımlar ve temel kullanım
- API Reference - Tüm endpoint'lerin detaylı referansı, parametreler ve örnekler
- Frontend Entegrasyon Kılavuzu - Frontend uygulamalarının API'ye nasıl bağlanacağı
- Sistem Mimarisi - Sistem yapısı, bileşenler ve mimari katmanlar
- Sistem Çalışma Mantığı - Veri akışı, işlem süreçleri ve çalışma prensipleri
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
POST /api/create-project/
Content-Type: application/json
{
"name": "Yeni Proje"
}POST /api/add-device
Content-Type: application/json
{
"name": "Raspberry Pi 1",
"ip": "192.168.1.100",
"device_id": "001"
}PATCH /api/update-camera-setting
Content-Type: application/json
{
"iso_speed": "400",
"shutter_speed": "1/60",
"aperture": "8",
"white_balance": "Auto"
}POST /api/reconnect-cameras| 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 |
| 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 |
| 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 |
| 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 |
| 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 |
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
Yeni model değişikliklerinden sonra:
python manage.py makemigrations
python manage.py migratepython manage.py testCamTrigger.py modülü Advantech USB-4751L cihazını kontrol eder. Windows ortamında BDaq SDK'nın yüklü olması gerekir.
Raspberry Pi cihazlarının aşağıdaki endpoint'leri desteklemesi beklenir:
GET /api/get-device-data- Cihaz bilgilerini getirGET /api/get-photo-list- Fotoğraf listesini getirPOST /api/set-device-settings- Kamera ayarlarını gönderDELETE /api/delete-all-photos- Tüm fotoğrafları silGET /api/disconnect-all- Tüm kameraları bağlantıyı kesGET /api/connect-all- Tüm kameraları bağlaGET /api/reset-camera- Kamerayı resetle
- Güvenlik: Production ortamında
SECRET_KEYveDEBUGayarlarını mutlaka yapılandırın. - Donanım: USB-4751L kontrolü sadece Windows ortamında çalışır.
- Cihazlar: Raspberry Pi cihazlarının aynı ağda olması ve API endpoint'lerini desteklemesi gerekir.
- Dosya Yönetimi: Proje dosyaları
projects/klasöründe saklanır (gitignore'da).
Bu proje özel kullanım içindir.
- Fork edin
- Feature branch oluşturun (
git checkout -b feature/amazing-feature) - Commit edin (
git commit -m 'Add some amazing feature') - Push edin (
git push origin feature/amazing-feature) - Pull Request açın
Sorularınız için issue açabilirsiniz.