# budget_maanden.py - de rekenhulp van hoofdstuk 27 met een woordenboek, lijsten en functies
VERBRUIKERS = {                          # naam: (vermogen in W, uren per dag)
    "groeilampen": (190, 16),
    "pomp": (12, 4),
    "sensoren": (3.0, 24),
    "ventilatie dag": (5, 16),
    "ventilatie nacht": (2, 8),
    "CO2-klep": (6, 0.25),
    "BMS": (0.5, 24),
}
MAANDEN = ['jan', 'feb', 'mrt', 'apr', 'mei', 'jun', 'jul', 'aug', 'sep', 'okt', 'nov', 'dec']
WH_PER_WP = [1.41, 2.11, 2.99, 3.69, 3.58, 3.54, 3.45, 3.31, 3.29, 2.5, 1.66, 1.25]
PIEK = 4 * 350                           # Wp


def verbruik_per_dag(lichturen=16):
    """Verbruik van de module in Wh per dag, als de groeilampen 'lichturen' uur branden."""
    totaal = 0
    for naam, (vermogen, uren) in VERBRUIKERS.items():
        if naam == "groeilampen":
            uren = lichturen
        totaal = totaal + vermogen * uren
    return totaal


def zon_per_dag(maand):
    """Zonnestroom in Wh per dag in maand 1 tot 12 (PVGIS, Brussel, 60 graden zuid)."""
    return PIEK * WH_PER_WP[maand - 1]


def max_lichturen(maand):
    """Hoeveel lichturen de zonnestroom alleen kan betalen (hoogstens 16)."""
    for uren in range(16, -1, -1):
        if verbruik_per_dag(uren) <= zon_per_dag(maand):
            return uren
    return 0


print("maand   zon  saldo  lichturen")
for m in range(1, 13):
    saldo = zon_per_dag(m) - verbruik_per_dag()
    print(f"{MAANDEN[m - 1]:5} {zon_per_dag(m):5.0f} {saldo:+6.0f} {max_lichturen(m):6d}")
