47 lines
1.5 KiB
Python
47 lines
1.5 KiB
Python
|
import time
|
||
|
import board
|
||
|
import adafruit_dht
|
||
|
from http.server import BaseHTTPRequestHandler, HTTPServer
|
||
|
|
||
|
sensor = adafruit_dht.DHT22(board.D21)
|
||
|
|
||
|
hostName = "0.0.0.0"
|
||
|
serverPort = 7070
|
||
|
|
||
|
class MyServer(BaseHTTPRequestHandler):
|
||
|
def do_GET(self):
|
||
|
try:
|
||
|
# Print the values to the serial port
|
||
|
temperature_c = sensor.temperature
|
||
|
temperature_f = temperature_c * (9 / 5) + 32
|
||
|
humidity = sensor.humidity
|
||
|
self.send_response(200)
|
||
|
self.send_header("Content-type", "text/plain")
|
||
|
self.end_headers()
|
||
|
self.wfile.write(bytes("# TYPE target_info gauge\n", "utf-8"))
|
||
|
self.wfile.write(bytes("humidity{{location=\"beddroom\"}} {}\n".format(humidity), "utf-8"))
|
||
|
|
||
|
self.wfile.write(bytes("# TYPE temperature gauge\n", "utf-8"))
|
||
|
self.wfile.write(bytes("temperature{{location=\"beddroom\"}} {}\n".format(temperature_f), "utf-8"))
|
||
|
|
||
|
except RuntimeError as error:
|
||
|
# Errors happen fairly often, DHT's are hard to read, just keep going
|
||
|
self.send_response(500)
|
||
|
print(error.args[0])
|
||
|
except Exception as error:
|
||
|
self.send_response(500)
|
||
|
sensor.exit()
|
||
|
raise error
|
||
|
|
||
|
if __name__ == "__main__":
|
||
|
webServer = HTTPServer((hostName, serverPort), MyServer)
|
||
|
print("Server started http://%s:%s" % (hostName, serverPort))
|
||
|
|
||
|
try:
|
||
|
webServer.serve_forever()
|
||
|
except KeyboardInterrupt:
|
||
|
pass
|
||
|
|
||
|
webServer.server_close()
|
||
|
print("Server stopped.")
|