# -*- 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 dk’da bir ‘used_outside’ güncelle BURNER_COMFORT_OFFSET_C = 1.0 # seçili konfor sıcaklığı offset’i 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 config’ten 0 yapar gerçekte devreye alırken 60–300 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) # 5–20 Nisan xSEASON_AUTUMN_SAVE_DAYS = (15, 30) # 15–30 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