Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Development #5

Merged
merged 14 commits into from Oct 19, 2018
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
29 changes: 29 additions & 0 deletions additional_files/html_template_readings1.html
@@ -0,0 +1,29 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Sensors System Details</title>
<style>
table {
border: 3px solid white;
border-collapse: collapse;
}
th, td {
padding: 5px;
white-space: nowrap;
}
th {
text-align: center;
white-space: nowrap;
}
body {
background-color: #000000;
white-space: nowrap;
}
</style>
</head>
<body><p><table><strong>
<tr>
<th><span style="background-color: #00ffff;">Sensor Interval Readings</span></th>
<th><span style="background-color: #00ffff;">Sensor Trigger Readings</span></th>
</tr>
8 changes: 8 additions & 0 deletions additional_files/html_template_readings2.html
@@ -0,0 +1,8 @@
<tr>
<th><span style="background-color: #0BB10D;">_{{IntervalTypes}}_</span></th>
<th><span style="background-color: #0BB10D;">_{{TriggerTypes}}_</span></th>
</tr>
<tr>
<th><span style="background-color: #F4A460;">_{{IntervalReadings}}_</span></th>
<th><span style="background-color: #F4A460;">_{{TriggerReadings}}_</span></th>
</tr>
5 changes: 5 additions & 0 deletions additional_files/html_template_readings3.html
@@ -0,0 +1,5 @@
</strong></table>
<p><font color="red">Sensor Readings File
<br />
</font></p>
</p></body></html>
149 changes: 88 additions & 61 deletions app_config.py
Expand Up @@ -17,75 +17,96 @@
along with this program. If not, see <https://www.gnu.org/licenses/>.
"""
import os
import sys
import logging
from logging.handlers import RotatingFileHandler
from datetime import datetime

script_directory = str(os.path.dirname(os.path.realpath(__file__))).replace("\\", "/")

if not os.path.exists(os.path.dirname(script_directory + "/logs/")):
os.makedirs(os.path.dirname(script_directory + "/logs/"))

logger = logging.getLogger(__name__)
logger.setLevel(logging.INFO)

formatter = logging.Formatter('%(asctime)s - %(levelname)s - %(funcName)s: %(message)s', '%Y-%m-%d %H:%M:%S')

file_handler = RotatingFileHandler('logs/KootNet_log.txt', maxBytes=256000, backupCount=5)
file_handler = RotatingFileHandler(script_directory + '/logs/KootNet_log.txt', maxBytes=256000, backupCount=5)
file_handler.setFormatter(formatter)
stream_handler = logging.StreamHandler()
stream_handler.setFormatter(formatter)

logger.addHandler(file_handler)
logger.addHandler(stream_handler)

app_location_directory = str(os.path.dirname(sys.argv[0])) + "/"
config_file = app_location_directory + "config.txt"


class CreateConfigSettings:
class CreateDefaultConfigSettings:
""" Creates a object holding all the Control Centers default configuration options. """

def __init__(self):
save_to = str(os.path.join(os.path.join(os.environ['USERPROFILE']), 'Desktop\\'))
self.save_to = save_to.replace('\\', '/')
self.script_directory = str(os.path.dirname(os.path.realpath(__file__))).replace("\\", "/")
self.logs_directory = script_directory + "/logs"
self.additional_files_directory = self.script_directory + "/additional_files"
self.config_file = self.script_directory + "/config.txt"
self.about_text = self.additional_files_directory + "/about_text.txt"
self.app_version = "Tested on Python 3.7 / KootNet Sensors - PC Control Center / Ver. Alpha.19.2"

# Start of user configurable options
self.save_to = str(os.path.expanduser('~/Desktop/')).replace('\\', '/')
self.graph_start = "2018-09-12 00:00:01"
self.graph_end = "2200-01-01 00:00:01"
self.time_offset = "-7"
self.sql_queries_skip = "3"
self.temperature_offset = "-4"
self.network_check_timeout = "2"
self.network_details_timeout = "5"
self.allow_power_controls = 0
self.allow_reset_config = 0
self.datetime_offset = -7.0
self.sql_queries_skip = 3
self.temperature_offset = -4.0
self.live_refresh = 5
self.network_timeout_sensor_check = 2
self.network_timeout_data = 5
self.allow_advanced_controls = 0
self.ip_list = ["192.168.10.11", "192.168.10.12", "192.168.10.13", "192.168.10.14",
"192.168.10.15", "192.168.10.16", "192.168.10.17", "192.168.10.18",
"192.168.10.19", "192.168.10.20", "192.168.10.21", "192.168.10.22",
"192.168.10.23", "192.168.10.24", "192.168.10.25", "192.168.10.26"]

def reset_to_defaults(self):
default_config = CreateDefaultConfigSettings()

self.save_to = default_config.save_to
self.graph_start = default_config.graph_start
self.graph_end = default_config.graph_end
self.datetime_offset = default_config.datetime_offset
self.sql_queries_skip = default_config.sql_queries_skip
self.temperature_offset = default_config.temperature_offset
self.live_refresh = default_config.live_refresh
self.network_timeout_sensor_check = default_config.network_timeout_sensor_check
self.network_timeout_data = default_config.network_timeout_data
self.allow_advanced_controls = default_config.allow_advanced_controls
self.ip_list = default_config.ip_list


def load_file():
config_settings = CreateConfigSettings()
def get_from_file():
""" Loads the Control Center configurations from file and returns the Verified settings. """
config_settings = CreateDefaultConfigSettings()

try:
os.path.isfile(config_file)
local_file = open(config_file, 'r')
os.path.isfile(config_settings.config_file)
local_file = open(config_settings.config_file, 'r')
tmp_config_settings = local_file.read().split(',')
local_file.close()

config_settings.save_to = tmp_config_settings[0]
config_settings.graph_start = tmp_config_settings[1]
config_settings.graph_end = tmp_config_settings[2]
config_settings.time_offset = tmp_config_settings[3]
config_settings.datetime_offset = tmp_config_settings[3]
config_settings.sql_queries_skip = tmp_config_settings[4]
config_settings.temperature_offset = tmp_config_settings[5]
config_settings.network_check_timeout = tmp_config_settings[6]
config_settings.network_details_timeout = tmp_config_settings[7]
config_settings.live_refresh = tmp_config_settings[6]
config_settings.network_timeout_sensor_check = tmp_config_settings[7]
config_settings.network_timeout_data = tmp_config_settings[8]

if int(tmp_config_settings[8]) >= 0:
config_settings.allow_power_controls = int(tmp_config_settings[8])
else:
logger.error("Setting Enable Sensor Shutdown/Reboot - BAD - Using Default")

if int(tmp_config_settings[9]) >= 0:
config_settings.allow_reset_config = int(tmp_config_settings[9])
else:
logger.error("Setting Enable Config Reset - BAD - Using Default")
try:
config_settings.allow_advanced_controls = int(tmp_config_settings[9])
except Exception as error:
logger.error("Setting Enable Sensor Shutdown/Reboot - Using Default: " + str(error))

count = 0
while count < 16:
Expand All @@ -98,16 +119,22 @@ def load_file():
count = count + 1

logger.debug("Configuration File Load - OK")
return config_settings

except Exception as error:
logger.warning("Configuration File Load Failed - Using All or Some Defaults: " + str(error))
return config_settings

check_config(config_settings)
return config_settings


def check_config(config_settings):
"""
Checks the provided Control Center configuration for validity and returns it.

Invalid options are replaced with defaults.
"""
logger.debug("Checking Configuration Settings")
default_settings = CreateConfigSettings()
default_settings = CreateDefaultConfigSettings()

if os.path.isdir(config_settings.save_to):
logger.debug("Setting Save to Folder - OK")
Expand All @@ -130,53 +157,54 @@ def check_config(config_settings):
config_settings.graph_end = default_settings.graph_end

try:
float(config_settings.time_offset)
config_settings.datetime_offset = float(config_settings.datetime_offset)
logger.debug("Setting DataBase Hours Offset - OK")
except Exception as error:
logger.error("Setting DataBase Hours Offset - BAD - Using Default: " + str(error))
config_settings.time_offset = default_settings.time_offset
config_settings.datetime_offset = default_settings.datetime_offset

try:
int(config_settings.sql_queries_skip)
config_settings.sql_queries_skip = int(config_settings.sql_queries_skip)
logger.debug("Setting Skip SQL Queries - OK")
except Exception as error:
logger.error("Setting Skip SQL Queries - BAD - Using Default: " + str(error))
config_settings.sql_queries_skip = default_settings.sql_queries_skip

try:
float(config_settings.temperature_offset)
config_settings.temperature_offset = float(config_settings.temperature_offset)
logger.debug("Setting Temperature Offset - OK")
except Exception as error:
logger.error("Setting Temperature Offset - BAD - Using Default: " + str(error))
config_settings.temperature_offset = default_settings.temperature_offset

try:
int(config_settings.network_check_timeout)
config_settings.live_refresh = int(config_settings.live_refresh)
logger.debug("Setting Live Refresh - OK")
except Exception as error:
logger.error("Setting Live Refresh - BAD - Using Default: " + str(error))
config_settings.live_refresh = default_settings.live_refresh

try:
config_settings.network_timeout_sensor_check = int(config_settings.network_timeout_sensor_check)
logger.debug("Setting Sensor Check Timeout - OK")
except Exception as error:
logger.error("Setting Sensor Check Timeout - BAD - Using Default: " + str(error))
config_settings.network_check_timeout = default_settings.network_check_timeout
config_settings.network_timeout_sensor_check = default_settings.network_timeout_sensor_check

try:
int(config_settings.network_details_timeout)
config_settings.network_timeout_data = int(config_settings.network_timeout_data)
logger.debug("Setting Get Details Timeout - OK")
except Exception as error:
logger.error("Setting Get Details Timeout - BAD - Using Default: " + str(error))
config_settings.network_details_timeout = default_settings.network_details_timeout
config_settings.network_timeout_data = default_settings.network_timeout_data

try:
if config_settings.allow_power_controls >= 0:
config_settings.allow_advanced_controls = int(config_settings.allow_advanced_controls)
if 2 > config_settings.allow_advanced_controls >= 0:
logger.debug("Setting Enable Sensor Shutdown/Reboot - OK")
except Exception as error:
logger.error("Setting Enable Sensor Shutdown/Reboot - BAD - Using Default: " + str(error))
config_settings.allow_power_controls = default_settings.allow_power_controls

try:
if config_settings.allow_reset_config >= 0:
logger.debug("Setting Enable Config Reset - OK")
except Exception as error:
logger.error("Setting Enable Config Reset - BAD - Using Default: " + str(error))
config_settings.allow_reset_config = default_settings.allow_reset_config
config_settings.allow_advanced_controls = default_settings.allow_advanced_controls

count = 0
while count < 16:
Expand All @@ -187,27 +215,26 @@ def check_config(config_settings):
config_settings.ip_list[count] = default_settings.ip_list[count]
count = count + 1

return config_settings


def save_config_to_file(temp_config_settings):
config_settings = check_config(temp_config_settings)
def save_config_to_file(config_settings):
""" Saves provided Control Center configuration to file. """
check_config(config_settings)

var_final_write = str(config_settings.save_to)
var_final_write = var_final_write + ',' + str(config_settings.graph_start)
var_final_write = var_final_write + ',' + str(config_settings.graph_end)
var_final_write = var_final_write + ',' + str(config_settings.time_offset)
var_final_write = var_final_write + ',' + str(config_settings.datetime_offset)
var_final_write = var_final_write + ',' + str(config_settings.sql_queries_skip)
var_final_write = var_final_write + ',' + str(config_settings.temperature_offset)
var_final_write = var_final_write + ',' + str(config_settings.network_check_timeout)
var_final_write = var_final_write + ',' + str(config_settings.network_details_timeout)
var_final_write = var_final_write + ',' + str(config_settings.allow_power_controls)
var_final_write = var_final_write + ',' + str(config_settings.allow_reset_config)
var_final_write = var_final_write + ',' + str(config_settings.live_refresh)
var_final_write = var_final_write + ',' + str(config_settings.network_timeout_sensor_check)
var_final_write = var_final_write + ',' + str(config_settings.network_timeout_data)
var_final_write = var_final_write + ',' + str(config_settings.allow_advanced_controls)
for ip in config_settings.ip_list:
var_final_write = var_final_write + ',' + str(ip)

try:
local_file = open(config_file, 'w')
local_file = open(config_settings.config_file, 'w')
local_file.write(var_final_write)
local_file.close()
logger.debug("Configuration Settings Save to File - OK")
Expand Down