Commit a80a855a authored by Kristian Tan's avatar Kristian Tan

Display device details

parent 1d14a9d5
......@@ -4,6 +4,7 @@ from flask_sqlalchemy import SQLAlchemy
from sqlalchemy import asc, desc
import os
from datetime import datetime, date, timedelta
# from daily_usage import DailyUsage
app = Flask(__name__)
......@@ -56,8 +57,8 @@ def create_entry(change_pin):
start_date = pins[change_pin]['on_date']
# Formula to calculate kWh based on time and wattage
kwh = pins[change_pin]['Wattage'] * (elapsed / 3600) / 1000
print(pins[change_pin]['Wattage'])
kwh = pins[change_pin]['wattage'] * (elapsed / 3600) / 1000
print(pins[change_pin]['wattage'])
print(elapsed)
print(kwh)
print("LATEST ENTRY: ")
......@@ -109,19 +110,17 @@ todays_cost = get_todays_cost()
# Create dictionary to store pin info
pins = {
25: {'name': 'Light', 'state': GPIO.LOW, 'on_time': None, 'on_date': None, 'Wattage': 15},
8: {'name': None, 'state': GPIO.LOW, 'on_time': None, 'on_date': None, 'Wattage': 0},
7: {'name': None, 'state': GPIO.LOW, 'on_time': None, 'on_date': None, 'Wattage': 0},
12: {'name': None, 'state': GPIO.LOW, 'on_time': None, 'on_date': None, 'Wattage': 0}
25: {'name': 'Light', 'state': GPIO.LOW, 'on_time': None, 'on_date': None, 'wattage': 15},
8: {'name': None, 'state': GPIO.LOW, 'on_time': None, 'on_date': None, 'wattage': 0},
7: {'name': None, 'state': GPIO.LOW, 'on_time': None, 'on_date': None, 'wattage': 0},
12: {'name': None, 'state': GPIO.LOW, 'on_time': None, 'on_date': None, 'wattage': 0}
}
# Setup each pin
for pin in pins:
GPIO.setup(pin, GPIO.OUT)
GPIO.output(pin, GPIO.LOW)
labels, values, max = generate_graph_data()
......@@ -217,7 +216,7 @@ def handle_new_device():
for key in pins:
if pins[key]['name'] is None:
pins[key]['name'] = new_name
pins[key]['Wattage'] = new_wattage
pins[key]['wattage'] = new_wattage
break
template_data = {
......@@ -238,7 +237,7 @@ def delete_pin(delete_pin):
for key in pins:
if key == delete_pin:
pins[delete_pin]['name'] = None
pins[delete_pin]['Wattage'] = None
pins[delete_pin]['wattage'] = None
break
template_data = {
......
......@@ -6,24 +6,29 @@
</head>
<div class="heading">
<h1 >IoT Smart Meter and Lighting Control</h1>
<h1>IoT Smart Meter and Lighting Control</h1>
</div>
<body>
<div class="containerRows">
<div class="containerRows">
<div class="device_list">
<h3 class="device_list_title">Device Listing and Status</h3>
{% for pin in pins %}
{% if pins[pin].name != None %}
<p>
{{ pins[pin].name }} :
{% if pins[pin].state == true %}
(<a href="/toggle/{{pin}}">turn off</a>)
(<a href="/remove/{{pin}}">remove</a>)
(<a href="/toggle/{{ pin }}">turn off</a>)
(<a href="/remove/{{ pin }}">remove</a>)
{% else %}
(<a href="/toggle/{{pin}}">turn on</a>)
(<a href="/remove/{{pin}}">remove</a>)
(<a href="/toggle/{{ pin }}">turn on</a>)
(<a href="/remove/{{ pin }}">remove</a>)
</p>
<p>
<ul>
<li>Last turned on: {{ pins[pin].on_date }} {{ pins[pin].on_time }}</li>
<li>Device Wattage: {{ pins[pin].wattage }} </li>
</ul>
</p>
{% endif %}
{% endif %}
......@@ -49,7 +54,7 @@
<div class="smart_meter">
<div class="smart_meter_info">
{# Implement some way to display "No devices" message if none are in use#}
{# Implement some way to display "No devices" message if none are in use#}
<p> Cost per kWh: £{{ cost_per_kWh }} <a href="/update_info/kWh"> (Update)</a></p>
<p> Total energy used today: {{ daily_total }} kWh.</p>
<p> Total cost of today's energy usage: £{{ todays_cost }}</p>
......@@ -63,22 +68,22 @@
{% endfor %}
</ul>
{# <div class="chart">#}
{# <div class="chart">#}
<h3 class="chart_title">Energy usage for the last 7 days</h3>
<canvas id="chart" class="chart" ></canvas>
<canvas id="chart" class="chart"></canvas>
<script>
// bar chart data
var barData = {
labels : [
labels: [
{% for item in labels %}
"{{ item }}",
{% endfor %}
],
datasets : [{
datasets: [{
fillColor: "rgba(151,187,205,0.2)",
strokeColor: "rgba(151,187,205,1)",
pointColor: "rgba(151,187,205,1)",
data : [
data: [
{% for item in values %}
"{{ item }}",
{% endfor %}
......@@ -97,16 +102,16 @@
scaleStepWidth: Math.ceil(max / steps),
scaleStartValue: 0,
scaleShowVerticalLines: true,
scaleShowGridLines : true,
barShowStroke : true,
scaleShowGridLines: true,
barShowStroke: true,
scaleShowLabels: true
}
);
</script>
{# </div>#}
</div>
{# </div>#}
</div>
</div>
</div>
</body>
</html>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment