network state is saved across app reboots

This commit is contained in:
iou1name 2019-06-08 03:56:30 -04:00
parent 952d725639
commit 0b17c76fae

View File

@ -3,6 +3,7 @@
A hub for controlling IOT devices. A hub for controlling IOT devices.
""" """
import re import re
import copy
import json import json
import requests import requests
@ -92,11 +93,19 @@ class RelayOutlet:
return self return self
def init_network(): class DeviceEncoder(json.JSONEncoder):
"""
A custom json encoder for dumping devices to file.
"""
def default(self, o):
return vars(o)
def init_network(filepath="devices.json"):
""" """
Initializes the network of IOT devices. Initializes the network of IOT devices.
""" """
with open("devices.json", 'r') as file: with open(filepath, 'r') as file:
data = file.read() data = file.read()
data = json.loads(data) data = json.loads(data)
network = {} network = {}
@ -111,6 +120,14 @@ def init_network():
return network return network
def save_network(filepath="devices.json"):
"""
Dumps the network to file.
"""
with open(filepath, 'w') as file:
file.write(json.dumps(network, cls=DeviceEncoder, indent='\t'))
app = Flask(__name__) app = Flask(__name__)
network = init_network() network = init_network()
@ -138,6 +155,7 @@ def toggle():
res = device.toggle(sub_dev_id) res = device.toggle(sub_dev_id)
if not res: if not res:
abort(404) abort(404)
save_network()
return res return res