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