Skip to content

Commit

Permalink
Merge pull request #5 from chad-ermacora/Development
Browse files Browse the repository at this point in the history
New Version
  • Loading branch information
chad-ermacora committed Oct 19, 2018
2 parents 28f2c4a + 76bd7f9 commit dffea07
Show file tree
Hide file tree
Showing 9 changed files with 1,482 additions and 721 deletions.
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

0 comments on commit dffea07

Please sign in to comment.