1
0

Compare commits

..

21 Commits

Author SHA1 Message Date
floristhebeast
a4d6f69450 voeg LED toe 2025-06-30 20:47:39 +02:00
floristhebeast
5de9255526 voeg een else toe voor als de contitions niet kloppen 2025-06-30 20:43:00 +02:00
floristhebeast
27aaf239c7 update dht11.py 2025-06-30 20:07:30 +02:00
floristhebeast
af035f0358 voeg 5 minuten ventilator toe 2025-06-30 20:05:30 +02:00
b9c2c6054a Update README.md 2025-06-30 14:21:01 +00:00
ce27e252a5 update pins 2025-06-29 22:38:17 +00:00
floristhebeast
cc1170a4d1 heb comments toegevoegd 2025-06-29 02:55:16 +02:00
floristhebeast
806aaab8bd had humid en humidity omgedraaid 2025-06-29 02:51:49 +02:00
floristhebeast
501186efa3 had <title> niet gesloten 2025-06-29 02:47:36 +02:00
florisdebeast
78d2b108b2 fout met vorige commit 2025-06-29 02:43:42 +02:00
florisdebeast
270866863c voeg sensor informatie toe aan de website 2025-06-29 02:43:19 +02:00
florisdebeast
31da346652 maak het een GET request anders werkt het niet 2025-06-29 02:19:01 +02:00
florisdebeast
928b3f8a71 vorige was fout dit zal waarschijnlijk werken 2025-06-29 02:16:22 +02:00
florisdebeast
d7bb5af086 misschien dit? 2025-06-29 02:14:26 +02:00
florisdebeast
810f3fe69d proberen python niet opstart problemen fixen 2025-06-29 02:11:59 +02:00
florisdebeast
308029ca82 verander website naar self 2025-06-29 02:03:27 +02:00
florisdebeast
38a96bb61d voeg web content toe 2025-06-29 01:59:27 +02:00
florisdebeast
8366e290e3 voeg threading toe om meerdere dingen tegelijk te kunnen doen 2025-06-29 01:39:04 +02:00
florisdebeast
6f2b4fc6ce voeg webserver toe 2025-06-29 01:33:31 +02:00
florisdebeast
08d66ebf82 zet fan en LED aan wanneer temp hoger dan 20 2025-06-29 01:22:35 +02:00
florisdebeast
07b2da0e85 voeg gpio setup toe 2025-06-29 01:14:36 +02:00
2 changed files with 125 additions and 12 deletions

View File

@@ -1,3 +1,3 @@
# school-DHT11-sensor
a simple python file that reads data from a DHT11 sensor and uses it in multiple ways
a simple python file that reads data from a DHT11 sensor and uses it to decide if a fan and LED should turn on

125
dht11.py
View File

@@ -2,16 +2,129 @@ import time
import adafruit_dht
import board
import RPi.GPIO as GPIO
import http.server
import threading
import json
sensor = adafruit_dht.DHT11(board.D6)
LED_PIN = 21
FAN_PIN = 22
sensor = adafruit_dht.DHT11(board.D31)
LED_PIN = 40
FAN_PIN = 15
while True:
#stel GPIO in (ik hoop dat het werkt. ik kan het niet testen)
GPIO.setmode(GPIO.BCM)
GPIO.setup(LED_PIN, GPIO.OUT)
GPIO.setup(FAN_PIN, GPIO.OUT)
#array voor sensor data
sensor_data = {
'tempc': 0.0,
'tempf': 0.0,
'humidity': 0.0,
'led': False,
'fan': False
}
fan_timer_start = 0
fan_timer_actief = False
def check_data():
global fan_timer_actief, fan_timer_start
while True:
try:
temperatuur_C = sensor.temperature
temperatuur_F = temperatuur_C * (9/5) + 32
humidity = sensor.humidity
sensor_data['tempc'] = temperatuur_C
sensor_data['tempf'] = temperatuur_F
sensor_data['humidity'] = humidity
except RuntimeError as err:
print (err.args[0])
time.sleep(2.0)
print(err.args[0])
# zet fan en led aan als temperatuur hoger is dan 20 C
if temperatuur_C > 20:
GPIO.output(LED_PIN, GPIO.HIGH)
GPIO.output(FAN_PIN, GPIO.HIGH)
sensor_data['led'] = True
sensor_data['fan'] = True
fan_timer_actief = False
fan_timer_start = 0
else:
if sensor_data['fan'] == True and fan_timer_actief == False:
fan_timer_actief = True
fan_timer_start = time.time()
sensor_data['fan'] = True
sensor_data['led'] = False
GPIO.output(FAN_PIN, GPIO.HIGH)
GPIO.output(LED_PIN, GPIO.LOW)
elif sensor_data['fan'] == True and fan_timer_actief == True and time.time() - fan_timer_start > 300: # 5 minuten
fan_timer_actief = False
fan_timer_start = 0
sensor_data['fan'] = False
sensor_data['led'] = False
GPIO.output(FAN_PIN, GPIO.LOW)
GPIO.output(LED_PIN, GPIO.LOW)
else:
fan_timer_actief = False
fan_timer_start = 0
sensor_data['fan'] = False
sensor_data['led'] = False
GPIO.output(FAN_PIN, GPIO.LOW)
GPIO.output(LED_PIN, GPIO.LOW)
class handler_class(http.server.BaseHTTPRequestHandler):
def do_GET (self):
if self.path == '/':
#headers
self.send_response(200)
self.send_header('Content-type', 'text/html; charset=utf-8')
self.end_headers()
#html website
website = """
<!DOCTYPE html>
<html>
<head>
<title>IOT DHT11 sensor status</title>
<meta charset="UTF-8">
</head>
<body>
<h1>IOT DHT11 Sensor Status</h1>
<p>Temp_C = <span id="tempc">--</span>C</p>
<p>Temp_F = <span id="tempf">--</span>F</p>
<p>humidity = <span id="humid">--</span>%</p>
<p>LED = <span id="led">UIT</span></p>
<p>FAN = <span id="fan">UIT</span></p>
<script>
setInterval(() => {
fetch('/data')
.then(res => res.json())
.then(data => {
document.getElementById('tempc').textContent = data.tempc.toFixed(1);
document.getElementById('tempf').textContent = data.tempf.toFixed(1);
document.getElementById('humid').textContent = data.humidity.toFixed(1);
document.getElementById('led').textContent = data.led ? 'AAN' : 'UIT';
document.getElementById('fan').textContent = data.fan ? 'AAN' : 'UIT';
});
}, 1000);
</script>
</body>
</html>
"""
self.wfile.write(website.encode())
elif self.path == '/data':
self.send_response(200)
self.send_header('Content-type', 'application/json')
self.end_headers()
self.wfile.write(json.dumps(sensor_data).encode())
def web_server():
#web server port en IP binding
web_binding = ('', 8000)
server = http.server.HTTPServer(web_binding, handler_class)
print ("server draait op port 8000")
server.serve_forever()
if __name__ == '__main__':
threading.Thread(target=web_server, daemon=True).start()
threading.Thread(target=check_data, daemon=True).start()
while True:
time.sleep(1)