# ebuild `ebuild`, Raspberry Pi 2 üzerinde çalışacak şekilde tasarlanmış, **bina ısıtma / soğutma / sulama ve genel otomasyon** projesinin çekirdek Python kodunu içerir. Proje yapısı: ------------- ```text ebuild/ ├─ README.md ├─ requirements.txt ├─ document/ # Tasarım PDF'leri, notlar, şemalar ├─ scripts/ │ └─ run_ebuild_main.py # Ana döngüyü çalıştırmak için yardımcı script ├─ tests/ │ └─ test_building.py └─ ebuild/ ├─ __init__.py ├─ config_statics.py # Bina topolojisi, FLAT_AREA, sensör/pin map'leri ├─ config_variables.py # Setpoint, haritalar, çalışma modu (hot-reload) ├─ reloader.py # Statik/dinamik config için ConfigReloader ├─ core/ │ ├─ building.py # Building/Flat/EDSensor iskeleti │ ├─ environment.py # BuildingEnvironment – dış ısı/nem/yağmur/ışık │ ├─ devices.py # Sensör/aktüatör soyutlamaları │ └─ systems/ │ ├─ burner.py # Brülör sistemi ve BurnerController │ ├─ irrigation.py # Sulama sistemi │ ├─ firealarm.py # Yangın alarm sistemi │ └─ hydrophore.py # Hidrofor sistemi ├─ io/ │ ├─ legacy_syslog.py # Eski Rasp2 syslog formatı köprüsü │ ├─ dbtext.py # Metin tabanlı log/DB iskeleti │ ├─ relay_driver.py # GPIO röle sürücüsü │ ├─ sensor_ds18b20.py # DS18B20 sensör sürücü iskeleti │ ├─ sensor_dht11.py # DHT11 sensör sürücü iskeleti │ └─ adc_mcp3008.py # MCP3008 ADC (yağmur / LDR) iskeleti └─ runtime/ ├─ main.py # Ana çalışma döngüsü iskeleti └─ __init__.py ``` Konfigürasyon tasarımı: ----------------------- * `config_statics.py` - Bina topolojisi (FLAT_AREA: `serial`, `flat_no`, `room_no`, `floor`, `direction`, `size_m2`) - Donanım pin eşlemeleri (`RELAY_GPIO`, `OUTPUT_GPIO`, `INPUT_GPIO` vb.) - Ortak sensör ID'leri (dış ısı, dönüş hattı, kazan çıkışı vb.) * `config_variables.py` - Konfor sıcaklığı, aralık ve tolerans (`BUILDING_SETPOINT_C`, `BUILDING_RANGE_C`, `BUILD_HEAT_TOLERANCE`) - Brülör setpoint haritaları (`BURNER_FIRE_SETPOINT_MAP`) - Saat bazlı delta-T ve tasarruf haritaları - Zaman bazlı override listesi (`HEAT_TIME_OVERRIDES`) - Runtime sensör/dairesel aktif/pasif durumları (`FLAT_STATUS`) `reloader.ConfigReloader`, bu iki dosyanın değişimini ayrı ayrı izler: - `statics_changed=True` → bina/sistem topolojisi değişmiş (genelde restart / re-init gerekir) - `variables_changed=True` → parametreler değişmiş (hot-reload ile devam edilebilir) `document/` klasörü: -------------------- Proje ile ilgili **tüm dokümantasyon ve tasarım çalışmaları** bu klasörde tutulmalıdır. Örneğin: - Mimari ve akış diyagramları (PDF) - Donanım bağlantı şemaları - Test raporları - Eski sistemden yeni ebuild'e geçiş notları Her yeni tasarım veya önemli revizyon için, ilgili notları PDF olarak `document/` klasörüne koymak, ileride bakım ve geri izleme açısından işleri kolaylaştırır. Raspberry Pi 2 üzerinde kurulum: -------------------------------- 1. Python 3 ve `pip` paket yöneticisinin kurulu olduğundan emin ol. 2. Proje klasörüne geç: ```bash cd ebuild ``` 3. (İsteğe bağlı) Sanal ortam oluştur: ```bash python3 -m venv .venv source .venv/bin/activate ``` 4. Gerekli Python paketlerini yükle: ```bash pip install -r requirements.txt ``` 5. Test amaçlı ana döngüyü çalıştır: ```bash python3 scripts/run_ebuild_main.py ``` Notlar: ------- * GPIO ve sensör kütüphaneleri gerçek Raspberry Pi üzerinde test edilmelidir. * Bu repo şu anda **iskelet** durumundadır; `core/` ve `io/` altındaki dosyalar senin gerçek sürücü ve kontrol kodlarınla yavaş yavaş doldurulacaktır.