diff --git a/main.js b/main.js index b007deb..064735f 100644 --- a/main.js +++ b/main.js @@ -4,15 +4,30 @@ var gauge = document.getElementById('temp-gauge'); // Randomly add a data point every 500ms var random = new TimeSeries(); setInterval(function() { - var nr = Math.random() * 100; - random.append(new Date().getTime(), nr); - gauge.dataset.value = nr; + fetch("/temps.json").then(function (resp) { + return resp.json(); + }).then(function (resp) { + console.log(resp) + var nr = Math.random() * 100; + nr = resp.pop() + random.append(new Date().getTime(), nr); + gauge.dataset.value = nr; + }); }, 500); function createTimeline() { - var chart = new SmoothieChart(); - chart.addTimeSeries(random, { strokeStyle: 'rgba(0, 255, 0, 1)', fillStyle: 'rgba(0, 255, 0, 0.2)', lineWidth: 4 }); + var chart = new SmoothieChart({grid:{fillStyle:'transparent'}}); + chart.addTimeSeries(random, { strokeStyle: 'rgba(0, 0, 0, 1)', fillStyle: 'rgba(0, 0, 0, 0.1)', lineWidth: 4 }); chart.streamTo(document.getElementById("chart"), 500); } +fetch("/temps.json").then(function (resp) { + return resp.json(); +}).then(function (resp) { + console.log(resp) + for (val of resp) { + random.append(new Date().getTime(), val) + } +}); + createTimeline(); diff --git a/main.py b/main.py index c0bf7f8..543d2c9 100644 --- a/main.py +++ b/main.py @@ -35,6 +35,8 @@ from html import escape as html_escape from collections import deque from urllib.parse import parse_qs +import serial + max_nr_messages = 25 html = """ @@ -101,6 +103,18 @@ html = """ """ + +temps = deque(maxlen=10) + +def stream(dev): + with serial.Serial(dev, timeout=1) as s: + while True: + temperature = s.readline().decode().strip() + print("temperature", temperature) + temps.append(temperature) + + + def application(env, start_response): if env["REQUEST_METHOD"] == "POST": @@ -132,7 +146,9 @@ def application(env, start_response): messages.appendleft(html_escape(message.strip())) #start_response("200 OK", [('Content-Type', 'application/json')]) - + if env["PATH_INFO"] == "/temps.json": + start_response('200 OK', [('Content-Type', 'application/json')]) + return [json.dumps(list(temps)).encode()] if env["PATH_INFO"] == "/favicon.ico": start_response('200 OK', [('Content-Type', 'image/x-icon')]) @@ -158,6 +174,15 @@ def application(env, start_response): if __name__ == "__main__": + import threading + t = threading.Thread(target=stream, args=["/dev/ttyACM0"]) + + # classifying as a daemon, so they will die when the main dies + t.daemon = True + + # begins, must come after daemon definition + t.start() + from wsgiref.simple_server import make_server httpd = make_server('0.0.0.0', 8080, application)