ilk işlem

This commit is contained in:
root
2025-11-24 14:25:02 +03:00
commit 1d458ca9f6
72 changed files with 9732 additions and 0 deletions

Binary file not shown.

149
ebuild/tools/relay_test.py Normal file
View File

@@ -0,0 +1,149 @@
# -*- coding: utf-8 -*-
__title__ = "relay_test"
__author__ = 'Mehmet Karatay & "Saraswati" (ChatGPT)'
__purpose__ = "Röle pin eşlemesini ve brülör gruplarını sahada test aracı"
__version__ = "0.1.0"
__date__ = "2025-11-20"
"""
ebuild/tools/relay_test.py
Revision : 2025-11-20
Authors : Mehmet Karatay & "Saraswati" (ChatGPT)
Amaç
-----
- config_statics.RELAY_GPIO ve BURNER_GROUPS'e göre röle sürücüsünü yüklemek,
- Her kanalı sırayla açıp kapatarak kablolamanın doğru olup olmadığını
sahada test etmek,
- Brülör bazlı test:
* Belirli bir burner_id için igniter kanalı,
* default pompalar (circulation.default=1 olanlar)
ayrı ayrı ON/OFF denemesi.
Kullanım
--------
Rasp2 üzerinde:
cd /home/karatay/ebuild
python3 -m ebuild.tools.relay_test
UYARI: Bu test gerçek röleleri tetikler.
Kazan/şebeke enerjisi bağlıysa dikkatli kullan.
"""
import time
from typing import Optional
from ..io.relay_driver import RelayDriver
from .. import config_statics as cfg_s
def _sleep(s: float) -> None:
try:
time.sleep(s)
except KeyboardInterrupt:
raise
def test_all_channels(driver: RelayDriver, on_time: float = 1.0, off_time: float = 0.5) -> None:
"""
Tüm röle kanallarını sırayla:
- ON (on_time saniye)
- OFF (off_time saniye)
yaparak test eder.
"""
print("\n=== Tüm kanalların sırayla test edilmesi ===")
channels = sorted(driver.channels())
if not channels:
print("⚠️ Tanımlı kanal yok (RELAY_GPIO boş?).")
return
for ch in channels:
print(f"\n→ Kanal: {ch} -> ON")
driver.set_channel(ch, True)
_sleep(on_time)
print(f"→ Kanal: {ch} -> OFF")
driver.set_channel(ch, False)
_sleep(off_time)
print("\n✅ Kanal döngüsü tamamlandı.\n")
def test_burner(driver: RelayDriver, burner_id: int, on_time: float = 1.0, off_time: float = 0.5) -> None:
"""
Belirli bir brülör grubunu test eder:
- Igniter ON/OFF
- default pompalar ON/OFF
Burner grubu bilgisi config_statics.BURNER_GROUPS'tan gelir.
"""
burners = driver.burners()
if burner_id not in burners:
print(f"⚠️ Burner id {burner_id} tanımlı değil.")
return
info = burners[burner_id]
name = info.get("name", f"Burner{burner_id}")
loc = info.get("location", "-")
print(f"\n=== Brülör Testi: #{burner_id} - {name} @ {loc} ===")
# Igniter test
print("\n→ Igniter ON")
driver.set_igniter(burner_id, True)
_sleep(on_time)
print("→ Igniter OFF")
driver.set_igniter(burner_id, False)
_sleep(off_time)
# Default pompalar
enabled_pumps = driver.enabled_pumps(burner_id)
if not enabled_pumps:
print("⚠️ Bu brülör için default (default=1) pompa tanımlı değil.")
else:
print(f"\nDefault pompalar: {enabled_pumps}")
for pname in enabled_pumps:
print(f"\n→ Pompa {pname} ON")
driver.set_pump(burner_id, pname, True)
_sleep(on_time)
print(f"→ Pompa {pname} OFF")
driver.set_pump(burner_id, pname, False)
_sleep(off_time)
print(f"\n✅ Brülör #{burner_id} testi tamamlandı.\n")
def main(burner_id: Optional[int] = 0) -> None:
print("RelayDriver yükleniyor…")
drv = RelayDriver()
drv.summary()
# Önce tüm kanalları hızlıca test et
test_all_channels(drv, on_time=0.7, off_time=0.3)
# Eğer config'te burner grubu varsa, onu da test et
burners = getattr(cfg_s, "BURNER_GROUPS", {})
if burners and burner_id is not None and burner_id in burners:
test_burner(drv, burner_id=burner_id, on_time=1.0, off_time=0.5)
else:
print("\n BURNER_GROUPS boş veya burner_id geçersiz; brülör test atlandı.\n")
print("Tüm röle testleri bitti. Tüm kanalları kapatıyorum…")
drv.all_off()
print("✅ Röleler güvenli moda alındı.")
if __name__ == "__main__":
try:
main(burner_id=0)
except KeyboardInterrupt:
print("\nKullanıcı tarafından kesildi, röleler kapatılıyor…")
try:
drv = RelayDriver()
drv.all_off()
except Exception:
pass
print("Çıkış.")