2026. június 15., hétfő

Fütés automatizálása

A program folyamatosan figyeli a hőmérsékletet. Ha az érték a megadott küszöb (21 ° C) alá csökken és a fűtés még nem megy, bekapcsolja azt. Ha eléri a kívánt hőmérsékletet (22 ° C), lekapcsolja.
------------------

from flask import Flask, render_template_string, request

app = Flask(__name__)

# Kezdeti állapotok és beállítások
HO_CEL = 22.0          # Kívánt hőmérséklet
HO_KUSZOB = 21.0       # Bekapcsolási küszöb
aktualis_ho = 20.5     # Jelenlegi hőmérséklet (ezt normál esetben szenzor olvassa)
fut_e = False          # Fűtés állapota

# HTML felület
HTML_SABLON = """
<!DOCTYPE html>
<html lang="hu">
<head>
    <meta charset="UTF-8">
    <title>Fűtés Vezérlés</title>
</head>
<body style="font-family: Arial, sans-serif; text-align: center; margin-top: 50px;">
    <h1>Okos Fűtés Vezérlés</h1>
    <p>Aktuális hőmérséklet: <strong>{{ "%.1f" | format(aktualis_ho) }} °C</strong></p>
    <p>Állapot: <span style="color: {{ 'green' if fut_e else 'red' }}"><strong>{{ 'FŰT' if fut_e else 'Kikapcsolva' }}</strong></span></p>

    <form action="/update" method="POST">
        <label>Célhőmérséklet (°C):</label>
        <input type="number" step="0.5" name="cel" value="{{ ho_cel }}" style="width: 80px;"><br><br>
        <label>Bekapcsolási küszöb (°C):</label>
        <input type="number" step="0.5" name="kuszob" value="{{ ho_kuszob }}" style="width: 80px;"><br><br>
        <input type="submit" value="Beállítások mentése">
    </form>
</body>
</html>
"""

def futes_logika():
    global aktualis_ho, fut_e
    # Ide egy valódi szenzorkód kellene (pl. DHT vagy DS18B20), ami módosítja az aktualis_ho változót
    
    # Egyszerű automatizációs logika
    if aktualis_ho <= HO_KUSZOB and not fut_e:
        fut_e = True
        print("Fűtés bekapcsolva!")
    elif aktualis_ho >= HO_CEL and fut_e:
        fut_e = False
        print("Fűtés kikapcsolva!")

@app.route('/')
def index():
    futes_logika() # Ellenőrzés és vezérlés minden oldalletöltésnél
    return render_template_string(HTML_SABLON, ho_cel=HO_CEL, ho_kuszob=HO_KUSZOB, aktualis_ho=aktualis_ho, fut_e=fut_e)

@app.route('/update', methods=['POST'])
def update():
    global HO_CEL, HO_KUSZOB, aktualis_ho
    # Form adatok frissítése
    HO_CEL = float(request.form['cel'])
    HO_KUSZOB = float(request.form['kuszob'])
    
    # Visszatérés a főoldalra
   return redirect(url_for('index'))

if __name__ == '__main__':
    # A szerver elindítása a helyi hálózaton, így más eszközökről is elérhető
    app.run(host='0.0.0.0', port=5000, debug=True)
-------------
import time

# Beállítások
KUSTOB_HO = 21.0
CEL_HO = 22.0
fut_e = False # Jelenlegi állapot (kikapcsolva)

def homerseklet_lekerese():
    # Ide kell beilleszteni a hőmérő szenzor (pl. DS18B20, Sense HAT) kódját
    # Most egy szimulált értéket adunk vissza
    return 20.5 

def futes_vezerles(allapot):
    global fut_e
    if allapot and not fut_e:
        print("Fűtés bekapcsolva.")
        fut_e = True
    elif not allapot and fut_e:
        print("Fűtés kikapcsolva.")
        fut_e = False

# Fő vezérlő ciklus
try:
    while True:
        aktualis_ho = homerseklet_lekerese()
        print(f"Aktuális hőmérséklet: {aktualis_ho} °C")
        
        # Logika
        if aktualis_ho < KUSTOB_HO:
            futes_vezerles(True)
        elif aktualis_ho >= CEL_HO:
            futes_vezerles(False)
            
        time.sleep(5) # 5 másodperc várakozás a következő mérésig

except KeyboardInterrupt:
    print("\nProgram leállítva.")

Nincsenek megjegyzések:

Megjegyzés küldése