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 = {
......
<!DOCTYPE html>
<head>
<title>Current Status</title>
<title>Current Status</title>
<link rel="stylesheet" href="{{ url_for('static', filename='css/main.css') }}">
<script src='https://cdnjs.cloudflare.com/ajax/libs/Chart.js/1.0.2/Chart.min.js'></script>
</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="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 }} :
<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>)
</p>
(<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 %}
{% endfor %}
<p><a href="/devices/add_device">Add device</a></p>
{% endif %}
{% endfor %}
<p><a href="/devices/add_device">Add device</a></p>
{% if display_change_kWh == True %}
{% if display_change_kWh == True %}
<form action="{{ url_for('handle_change_kWh') }}" method="post">
Change cost per kWh: <input type="text" name="kWhprice" required>
<input type="submit">
......@@ -38,75 +43,75 @@
{% endif %}
{% if display_new_device_form == True %}
<form action="{{ url_for('handle_new_device') }}" method="post">
<label>New device name:</label> <input type="text" name="new_device_name" required> <br>
<label>New device wattage:</label> <input type="number" name="new_device_wattage" required> <br>
<input type="submit">
</form>
<form action="{{ url_for('handle_new_device') }}" method="post">
<label>New device name:</label> <input type="text" name="new_device_name" required> <br>
<label>New device wattage:</label> <input type="number" name="new_device_wattage" required> <br>
<input type="submit">
</form>
{% endif %}
</div>
</div>
<div class="smart_meter">
<div class="smart_meter_info">
{# 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>
<div class="smart_meter">
<div class="smart_meter_info">
{# 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>
<p> Devices currently in use: </p>
<ul>
{% for pin in pins %}
<p> Devices currently in use: </p>
<ul>
{% for pin in pins %}
{% if pins[pin].state == true %}
<li>{{ pins[pin].name }}</li>
<li>{{ pins[pin].name }}</li>
{% endif %}
{% endfor %}
</ul>
{% endfor %}
</ul>
{# <div class="chart">#}
<h3 class="chart_title">Energy usage for the last 7 days</h3>
<canvas id="chart" class="chart" ></canvas>
<script>
// bar chart data
var barData = {
labels : [
{% for item in labels %}
"{{ item }}",
{% endfor %}
],
datasets : [{
fillColor: "rgba(151,187,205,0.2)",
strokeColor: "rgba(151,187,205,1)",
pointColor: "rgba(151,187,205,1)",
data : [
{% for item in values %}
"{{ item }}",
{% endfor %}
]
}
{# <div class="chart">#}
<h3 class="chart_title">Energy usage for the last 7 days</h3>
<canvas id="chart" class="chart"></canvas>
<script>
// bar chart data
var barData = {
labels: [
{% for item in labels %}
"{{ item }}",
{% endfor %}
],
datasets: [{
fillColor: "rgba(151,187,205,0.2)",
strokeColor: "rgba(151,187,205,1)",
pointColor: "rgba(151,187,205,1)",
data: [
{% for item in values %}
"{{ item }}",
{% endfor %}
]
}
]
}
// get bar chart canvas
var mychart = document.getElementById("chart").getContext("2d");
steps = 1;
max = {{ max }}
// draw bar chart
new Chart(mychart).Bar(barData, {
scaleOverride: true,
scaleSteps: steps,
scaleStepWidth: Math.ceil(max / steps),
scaleStartValue: 0,
scaleShowVerticalLines: true,
scaleShowGridLines : true,
barShowStroke : true,
scaleShowLabels: true
}
);
</script>
}
// get bar chart canvas
var mychart = document.getElementById("chart").getContext("2d");
steps = 1;
max = {{ max }}
// draw bar chart
new Chart(mychart).Bar(barData, {
scaleOverride: true,
scaleSteps: steps,
scaleStepWidth: Math.ceil(max / steps),
scaleStartValue: 0,
scaleShowVerticalLines: 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