Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
48 changes: 41 additions & 7 deletions webtest.py
Original file line number Diff line number Diff line change
@@ -1,24 +1,37 @@
#!/usr/bin/python
from BaseHTTPServer import BaseHTTPRequestHandler,HTTPServer
from prometheus_client import Gauge
import serial
import time
import json

PORT_NUMBER = 8080

# Setup Prometheus metrics.
bartem_metric = Gauge('barometer_sensor_temperature_celcius', 'Barometric sensor temperature reading')
barpres_metric = Gauge('barometer_sensor_pressure_pascals', 'Barometric sensor pressure reading')
humidity_metric = Gauge('humidity_sensor_percent', 'Humidity sensor humidity reading')
humidity_temp_metric = Gauge('humidity_sensor_temperature_celcius', 'Humidity sensor temperature reading')


# Return the readings from the serial line.
class readSerial():
ser.write('g')
bartemp = float(ser.readline())
barpres = int(float(ser.readline()))
humidity = int(float(ser.readline()))
humtemp = int(float(ser.readline()))
return bartemp, barpres, humidity, humtemp


#This class will handles any incoming request from
#the browser
class myHandler(BaseHTTPRequestHandler):
#Handler for the GET requests
def do_GET(self):
if self.path=="/temp.json":
ser.write('g')
bartemp = float(ser.readline())
barpres = int(float(ser.readline()))
humidity = int(float(ser.readline()))
humtemp = int(float(ser.readline()))
bartemp, barpres, humidity, humtemp = readSerial()
currenttime = time.time()

data = {'BarometerTemperature':bartemp, 'BarometerPressure':barpres, 'Humidity':humidity, 'HumidityTemperature':humtemp, 'CurrentTime':int(currenttime)}

self.send_response(200)
Expand All @@ -27,6 +40,27 @@ def do_GET(self):
# Send the html message
self.wfile.write(json.dumps(data))
return
elif self.path=="/metrics":
bartemp, barpres, humidity, humtemp = readSerial()
bartemp_metric.set(bartemp)
barpres_metric.set(barpres)
humidity_metric.set(humidity)
humidity_temp_metric.set(humtemp)

registry = core.REGISTRY
params = parse_qs(urlparse(self.path).query)
if 'name[]' in params:
registry = registry.restricted_registry(params['name[]'])
try:
output = generate_latest(registry)
except:
self.send_error(500, 'error generating metric output')
raise
self.send_response(200)
self.send_header('Content-Type', CONTENT_TYPE_LATEST)
self.end_headers()
self.wfile.write(output)
return
else:
self.send_error(404,'File Not Found: %s' % self.path)

Expand All @@ -45,4 +79,4 @@ def do_GET(self):
except KeyboardInterrupt:
print '^C received, shutting down the web server'
server.socket.close()
ser.close()
ser.close()