Endüstriyel IoT ve Makine Öğrenmesi Tabanlı Akıllı Bakım & Arıza Tahmin Sistemi
Özellikler • Kurulum • Kullanım • API Dokümantasyonu • Teknolojiler
Kısa Özet (TR)
- IoT sensör verilerini (.NET Web API) SQL Server'a kaydeder; RabbitMQ ile asenkron işler.
- Python ML servisi (LSTM) anomali tespiti yapar ve arıza olasılığı hesaplar.
- SignalR, gerçek zamanlı alarm bildirimi ve bakım önerileri sağlar.
- Clean Architecture: Presentation, Application, Domain, Infrastructure.
- Teknolojiler: ASP.NET Core MVC & Web API, SignalR, Redis, RabbitMQ, TensorFlow/FastAPI, Chart.js, Bootstrap.
Predictive Maintenance (Akıllı Bakım & Arıza Tahmin Sistemi), üretim ve dağıtım tesislerindeki pompa, vana, basınç sensörü, motor gibi ekipmanların arızalanmadan önce tespit edilmesini sağlayan endüstriyel IoT ve makine öğrenmesi tabanlı bir sistemdir.
IoT sensör verileri ve makine öğrenmesi (ML/DL) kullanarak ekipman arızalarını erken tahmin edip bakım maliyetini azaltmak, arıza kaynaklı duruş sürelerini minimize etmek ve dijital dönüşüm vizyonuna katkıda bulunmak.
- ✅ Arıza kaynaklı duruş sürelerini %60-80 oranında azaltır
- ✅ Bakım planlamasını otomatikleştirir ve maliyetleri düşürür
- ✅ Öngörülebilir bakım sayesinde işletme verimliliğini artırır
- ✅ Endüstri 4.0 ve dijital dönüşüm vizyonuna uygundur
- ✅ Gerçek zamanlı izleme ve alarm sistemi ile anında müdahale imkanı
Proje, Clean Architecture prensiplerine uygun olarak katmanlı bir yapıda geliştirilmiştir:
┌─────────────────────────────────────┐
│ Presentation Layer │
│ (MVC, SignalR Hub, Controllers) │
└─────────────────────────────────────┘
↓
┌─────────────────────────────────────┐
│ Application Layer │
│ (Services, DTOs, Business Logic) │
└─────────────────────────────────────┘
↓
┌─────────────────────────────────────┐
│ Domain Layer │
│ (Entities, Interfaces, Models) │
└─────────────────────────────────────┘
↓
┌─────────────────────────────────────┐
│ Infrastructure Layer │
│ (EF Core, SQL Server, RabbitMQ, │
│ Redis, External APIs) │
└─────────────────────────────────────┘
| Teknoloji | Versiyon | Kullanım Amacı |
|---|---|---|
| .NET Core | 8.0 | Ana framework |
| ASP.NET Core MVC | 8.0 | Web uygulaması |
| Web API | 8.0 | RESTful API servisleri |
| Entity Framework Core | 8.0 | ORM ve veritabanı yönetimi |
| SQL Server | 2022 | Veritabanı |
| SignalR | 8.0 | Gerçek zamanlı bildirimler |
| RabbitMQ | 3.12 | Mesajlaşma kuyruğu |
| Redis | 7.0 | Cache ve session yönetimi |
| AutoMapper | 12.0 | Object mapping |
| Swagger | 6.5 | API dokümantasyonu |
| Teknoloji | Versiyon | Kullanım Amacı |
|---|---|---|
| Python | 3.11 | ML servisi |
| TensorFlow | 2.15 | Deep Learning framework |
| Keras | 2.15 | LSTM model geliştirme |
| Scikit-learn | 1.3 | Machine Learning algoritmaları |
| Pandas | 2.1 | Veri işleme |
| NumPy | 1.24 | Numerik hesaplamalar |
| FastAPI | 0.104 | Python Web API |
| Anaconda | 2023.09 | Virtual environment |
| Teknoloji | Versiyon | Kullanım Amacı |
|---|---|---|
| Bootstrap | 5.3 | CSS framework |
| Chart.js | 4.4 | Grafik görselleştirme |
| SignalR Client | 8.0 | Gerçek zamanlı bağlantı |
| jQuery | 3.7 | DOM manipülasyonu |
| AJAX | - | Asenkron istekler |
| Teknoloji | Kullanım Amacı |
|---|---|
| Docker | Containerization |
| Docker Compose | Multi-container orchestration |
| Git | Version control |
- IoT sensörlerinden (basınç, sıcaklık, titreşim, akım) gelen verilerin anlık olarak işlenmesi
- Web API üzerinden veri alımı
- RabbitMQ ile asenkron veri işleme
- LSTM (Long Short-Term Memory) modeli ile zaman serisi analizi
- Random Forest ile anomali tespiti
- Normal ve anormal (arıza öncesi) verilerin sınıflandırılması
- Arıza olasılık skoru hesaplama (0-100%)
- Gerçek zamanlı ekipman durumu görselleştirme
- Sensor verilerinin grafiklerle gösterilmesi
- Arıza tahmin sonuçları ve alarm sistemi
- Geçmiş analiz raporları
- SignalR ile gerçek zamanlı "Bakım Uyarısı" bildirimleri
- Dashboard'da görsel alarm göstergeleri
- Kritik durumlar için otomatik uyarı
- RESTful API ile diğer sistemlere entegrasyon
- ML servisi ile Python API iletişimi
- IoT cihazlarından veri alımı
PredictiveMaintenance/
│
├── src/
│ ├── Domain/
│ │ └── PredictiveMaintenance.Domain/
│ │ ├── Entities/ # Domain entities
│ │ └── Interfaces/ # Repository ve service interfaces
│ │
│ ├── Application/
│ │ └── PredictiveMaintenance.Application/
│ │ ├── Services/ # Business logic services
│ │ ├── DTOs/ # Data Transfer Objects
│ │ └── Mappings/ # AutoMapper profiles
│ │
│ ├── Infrastructure/
│ │ └── PredictiveMaintenance.Infrastructure/
│ │ ├── Data/ # DbContext
│ │ ├── Repositories/ # Repository implementations
│ │ └── Services/ # RabbitMQ, Redis, ML Service
│ │
│ └── Presentation/
│ ├── PredictiveMaintenance.API/
│ │ ├── Controllers/ # REST API Controllers
│ │ └── Hubs/ # SignalR Hubs
│ │
│ └── PredictiveMaintenance.Web/
│ ├── Controllers/ # MVC Controllers
│ ├── Views/ # Razor views
│ └── wwwroot/ # Static files
│
├── ml-service/
│ ├── models/ # ML models
│ ├── services/ # ML services
│ ├── api/ # FastAPI endpoints
│ ├── requirements.txt
│ └── main.py
│
├── docker/
│ ├── docker-compose.yml
│ ├── Dockerfile.web
│ └── Dockerfile.ml
│
├── docs/
│ ├── PROJECT_DOCUMENTATION.md
│ ├── API_DOCUMENTATION.md
│ └── ML_MODEL_DOCUMENTATION.md
│
└── README.md
- .NET 8.0 SDK
- SQL Server 2022
- Redis 7.0
- RabbitMQ 3.12
- Python 3.11
- Anaconda (opsiyonel)
- Docker (opsiyonel)
git clone https://github.com/kaganaydogan/predictive-maintenance.git
cd predictive-maintenanceSQL Server'da veritabanı oluşturun ve appsettings.json dosyasında connection string'i güncelleyin:
{
"ConnectionStrings": {
"DefaultConnection": "Server=localhost;Database=PredictiveMaintenanceDb;Trusted_Connection=True;TrustServerCertificate=True;"
}
}dotnet restoredotnet ef migrations add InitialCreate --project src/Infrastructure/PredictiveMaintenance.Infrastructure
dotnet ef database update --project src/Infrastructure/PredictiveMaintenance.Infrastructurecd ml-service
conda create -n predictive-maintenance python=3.11
conda activate predictive-maintenance
pip install -r requirements.txtTerminal 1 - Web Uygulaması:
dotnet run --project src/Presentation/PredictiveMaintenance.WebTerminal 2 - API:
dotnet run --project src/Presentation/PredictiveMaintenance.APITerminal 3 - ML Servisi:
cd ml-service
python main.pycd docker
docker-compose up -dGET /api/equipment # Tüm ekipmanları listele
GET /api/equipment/{id} # Belirli bir ekipmanı getir
POST /api/equipment # Yeni ekipman ekle
PUT /api/equipment/{id} # Ekipman güncelle
DELETE /api/equipment/{id} # Ekipman sil
GET /api/equipment/status/{status} # Duruma göre filtreleGET /api/sensordata/equipment/{equipmentId} # Ekipman sensör verileri
GET /api/sensordata/equipment/{equipmentId}/range # Tarih aralığında veri
POST /api/sensordata # Yeni sensör verisi ekle
GET /api/sensordata/equipment/{equipmentId}/anomalies # Anomali tespitiPOST /api/prediction # Yeni tahmin oluştur
GET /api/prediction/equipment/{equipmentId} # Ekipman tahminleri
GET /api/prediction/equipment/{equipmentId}/latest # Son tahmin
GET /api/prediction/critical # Kritik tahminlerGET /api/alert/unread # Okunmamış uyarılar
GET /api/alert/equipment/{equipmentId} # Ekipman uyarıları
PUT /api/alert/{id}/read # Uyarıyı okundu olarak işaretleYeni Ekipman Ekleme:
curl -X POST "https://localhost:5001/api/equipment" \
-H "Content-Type: application/json" \
-d '{
"name": "Motor 1",
"type": "Motor",
"location": "Üretim Hattı A"
}'Sensör Verisi Gönderme:
curl -X POST "https://localhost:5001/api/sensordata" \
-H "Content-Type: application/json" \
-d '{
"equipmentId": 1,
"sensorType": "Temperature",
"value": 75.5,
"unit": "Celsius"
}'Tahmin Oluşturma:
curl -X POST "https://localhost:5001/api/prediction" \
-H "Content-Type: application/json" \
-d '{
"equipmentId": 1,
"modelType": "LSTM"
}'# Tüm testleri çalıştır
dotnet test
# Belirli bir test projesi
dotnet test tests/UnitTests| Hafta | Yapılacak İş |
|---|---|
| 1-2 | Sensör verisi toplama ve veritabanı entegrasyonu |
| 3-4 | ML modeli eğitimi ve testleri |
| 5-6 | ASP.NET Core API + Web dashboard geliştirme |
| 7 | SignalR bildirim entegrasyonu |
| 8 | Demo, test ve sunum hazırlığı |
- Fork edin
- Feature branch oluşturun (
git checkout -b feature/AmazingFeature) - Commit edin (
git commit -m 'Add some AmazingFeature') - Push edin (
git push origin feature/AmazingFeature) - Pull Request açın
Bu proje MIT lisansı altında lisanslanmıştır. Detaylar için LICENSE dosyasına bakın.
Kağan Aydoğan
- 🎓 Sakarya Üniversitesi Bilgisayar Mühendisliği
- 💻 Full Stack Developer
- 🤖 ML & DL Developer
- 📧 kagan.aydogan@example.com
Sorularınız veya önerileriniz için:
- 📧 Email: kagan.aydogan@example.com
- 💼 LinkedIn: Kağan Aydoğan
- 🐙 GitHub: @kaganaydogan
- .NET Foundation
- TensorFlow
- FastAPI
- Tüm açık kaynak topluluğuna katkılarından dolayı teşekkürler!
⭐ Bu projeyi beğendiyseniz yıldız vermeyi unutmayın! ⭐
Made with ❤️ by Kağan Aydoğan