ebuild_rasp2/ebuild/config_runtime.py

134 lines
4.9 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# -*- coding: utf-8 -*-
from __future__ import annotations
__title__ = "ebuild_config_runtime"
__author__ = 'Mehmet Karatay & "Saraswati" (ChatGPT)'
__purpose__ = "Çalışma zamanı (runtime) ısıtma/soğutma parametreleri"
__version__ = "0.3.0"
__date__ = "2025-11-22"
"""
ebuild/config_runtime.py
Sık değişebilen, sistem durmadan güncellenebilen parametreler:
- ısı aralıkları
- kazan limitleri
- saatlik tasarruf haritaları
- override tabloları
"""
# -------------------------------------------------
# Sistem / Hedefler
# -------------------------------------------------
CFG_DEBUG = 1
BUILDING_AGG_STRATEGY = "robust"
BUILD_HEAT_TOLERANCE = 1.00 # ısı dengeleme toleransı
BUILD_EXIT_HEAT = 0 # 0= bina ort ısı, 1= üst kat, 2= alt kat, 3= en düşük daire ısısı
BUILDING_RANGE_C = (18.0, 28.0) # bina hedef aralığı
BUILDING_SETPOINT_C = 23.0 # seçili bina konfor sıcaklığı
BUILDING_INCREMENT_C = 0.5 # B modunda kademe adımı (ileride kullanacağız)
MAX_OUTLET_C = 45.0 # kazan çıkış emniyet limiti
OUTSIDE_LIMIT_HEAT_C = 30.0
USED_OUTSIDE_ELAPSED_S = 300 # 5 dkda bir used_outside güncelle
BURNER_COMFORT_OFFSET_C = 1.0 # seçili konfor sıcaklığı offseti
CIRCULATION_MIN_RETURN_C = 25.0 # Çıkış ısısı bu değerin ALTINA düşerse pompalar DURUR
OUTSIDE_SMOOTH_SECONDS = 300
BUILDING_READ_PERIOD_S = 300 # bina istatistik okuma periyodu
# Hafta sonu lüks artırımı
WEEKEND_HEAT_BOOST_C = 2.0
WEEKEND_DAYS = (5, 6) # 5=Cumartesi, 6=Pazar
# Böylece debug sırasında bu min süreleri configten 0 yapar gerçekte devreye alırken 60300 saniye gibi gerçekçi değerler verirsin
BURNER_MIN_RUN_SEC = 0
BURNER_MIN_STOP_SEC = 0
BURNER_HYSTERESIS_C = 0
# -------------------------------------------------
# Ateşleme bant haritaları
# -------------------------------------------------
BURNER_FIRE_SETPOINT_MAP = {
-9: {"fire": 70}, -8: {"fire": 69}, -7: {"fire": 67}, -6: {"fire": 66}, -5: {"fire": 65},
-4: {"fire": 63}, -3: {"fire": 62}, -2: {"fire": 61}, -1: {"fire": 59}, 0: {"fire": 58},
1: {"fire": 57}, 2: {"fire": 55}, 3: {"fire": 54}, 4: {"fire": 53}, 5: {"fire": 51},
6: {"fire": 50}, 7: {"fire": 48}, 8: {"fire": 47}, 9: {"fire": 46}, 10: {"fire": 44},
11: {"fire": 43}, 12: {"fire": 42}, 13: {"fire": 40}, 14: {"fire": 39}, 15: {"fire": 38},
16: {"fire": 36}, 17: {"fire": 35},
}
DELTA_T_MAP_HOURLY = {
0: 6, 1: 6, 2: 6, 3: 6, 4: 6, 5: 6, 6: 7, 7: 7, 8: 7, 9: 7, 10: 7, 11: 7,
12: 6, 13: 6, 14: 6, 15: 6, 16: 6, 17: 6, 18: 7, 19: 7, 20: 7, 21: 7, 22: 7, 23: 7,
}
SAVING_T_PERCENT_HOURLY = {
0: 95, 1: 90, 2: 85, 3: 85, 4: 90, 5: 95, 6: 95, 7: 100, 8: 100, 9: 95, 10: 90, 11: 95,
12: 100, 13: 95, 14: 90, 15: 85, 16: 90, 17: 95, 18: 95, 19: 100, 20: 100, 21: 100, 22: 100, 23: 100,
}
# -------------------------------------------------
# Zaman bazlı override (örnekler)
# -------------------------------------------------
HEAT_TIME_OVERRIDES = [
{
"enable": True,
"start": "19:00",
"end": "22:00",
"days": [0, 1, 2, 3, 4, 5, 6],
"outside_c": [7, 18],
"set_fire_c": 45,
"note": "sabah konfor",
},
{
"enable": False,
"start": "12:00",
"end": "13:30",
"days": [0, 1, 2, 3, 4],
"outside_c": [14, 20],
"building_c": 27,
"note": "öğle sıcak tut",
},
{
"enable": False,
"start": "16:00",
"end": "18:00",
"days": [5, 6],
"outside_c": [14, 18],
"set_fire_c": 50,
"note": "akşam artır",
},
{
"enable": False,
"start": "20:30",
"end": "22:00",
"days": [0, 1, 2, 3, 4, 5, 6],
"outside_c": [8, 15],
"set_fire_c": 38,
"building_c": 26,
"note": "gece ekonomik",
},
]
SHOW_OVERRIDE_NOTE = 0 # 0: not yazma, 1: yaz
SHOW_ALL_OVERRIDES = 1 # 1: dış ısı aralığı eşleşmese de listele (gün eşleşmesi yine aranır)
# -------------------------------------------------
# Mevsim parametreleri
# -------------------------------------------------
SEASON_SPRING_SAVE_DAYS = 20
SEASON_AUTUMN_SAVE_DAYS = 20
xSEASON_SPRING_SAVE_DAYS = (5, 20) # 520 Nisan
xSEASON_AUTUMN_SAVE_DAYS = (15, 30) # 1530 Eylül
SEASON_PROVIDER = "SunHolidayInfo"
SEASON_LANG = "tr"
SEASON_NAMES = ("İlkbahar", "Yaz", "Sonbahar", "Kış")
SEASON_ENG = {
"İlkbahar": "Spring",
"Yaz": "Summer",
"Sonbahar": "Autumn",
"Kış": "Winter",
}
SPRING_HOURS = ["00:00", "22:00"] # 00 → sunset bazlı başlangıç
SPRING_START_MINUTE = 30