ilk işlem
This commit is contained in:
BIN
ebuild/tools/__pycache__/relay_test.cpython-39.pyc
Normal file
BIN
ebuild/tools/__pycache__/relay_test.cpython-39.pyc
Normal file
Binary file not shown.
149
ebuild/tools/relay_test.py
Normal file
149
ebuild/tools/relay_test.py
Normal 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ış.")
|
||||
Reference in New Issue
Block a user