linux-node-visability/main.py

47 lines
1.5 KiB
Python
Raw Normal View History

2025-02-24 08:03:33 +00:00
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.")