unterstütung zum einleis von dictionaries
zeilen die mit einem ' in der ems.conf beginnen werden als dict interpretiert. vorbereitung für mehrdimensionale dictionaries
This commit is contained in:
parent
c08f86cf8f
commit
053dff064e
2 changed files with 91 additions and 38 deletions
101
src/config.py
101
src/config.py
|
|
@ -31,42 +31,95 @@ class Config():
|
||||||
cls, *args, **kwargs)
|
cls, *args, **kwargs)
|
||||||
return cls._instance
|
return cls._instance
|
||||||
|
|
||||||
|
def printConf(self):
|
||||||
|
'''
|
||||||
|
Print the config only if debug is enable.
|
||||||
|
'''
|
||||||
|
if self._confDic['config_debug']:
|
||||||
|
mes = 'config:\t{'
|
||||||
|
for x in self._confDic:
|
||||||
|
mes = '%s\r %s \t: %s' % (mes, x, self._confDic[x])
|
||||||
|
mes = '%s\r }' % mes
|
||||||
|
print mes
|
||||||
|
|
||||||
|
def makeList(self, arg):
|
||||||
|
for a in range(len(arg)):
|
||||||
|
arg[a] = arg[a].strip()
|
||||||
|
arg[a] = True if arg[a] == 'True' else arg[a]
|
||||||
|
arg[a] = False if arg[a] == 'False' else arg[a]
|
||||||
|
return arg
|
||||||
|
|
||||||
|
def getElement(self, line):
|
||||||
|
tmp = line.split("=")
|
||||||
|
key = tmp[0].strip()
|
||||||
|
val = tmp[1].split("#") #cut off comments, comment is on val[1]
|
||||||
|
val = str(val[0].strip()) #overwrite val with string
|
||||||
|
|
||||||
|
if key == '':
|
||||||
|
stderr.write('config_error there is an empty key\r')
|
||||||
|
return None, None
|
||||||
|
if val == '':
|
||||||
|
stderr.write('config_error %s has no value\r' % key)
|
||||||
|
return None, None
|
||||||
|
|
||||||
|
arg = val.split(',')
|
||||||
|
while arg.count('') > 0:
|
||||||
|
arg.remove('')
|
||||||
|
if len(arg) == 0:
|
||||||
|
stderr.write('config_error %s has an empty argument\r' % key)
|
||||||
|
return None, None
|
||||||
|
return key, arg
|
||||||
|
|
||||||
def readConf(self):
|
def readConf(self):
|
||||||
if self._confDic['config_read']:
|
if self._confDic['config_read']: #prevent re-read
|
||||||
return self._confDic
|
return self._confDic
|
||||||
|
|
||||||
try:
|
try:
|
||||||
confFile = open("config\ems.conf", "r")
|
confFile = open(config, "r")
|
||||||
except IOError:
|
except IOError:
|
||||||
self._confDic.update({'error' : 'config/ems.conf not found'})
|
self._confDic.update({'error' : '%s not found' % config})
|
||||||
|
stderr.write('config_error %s not found\r' % config)
|
||||||
return self._confDic
|
return self._confDic
|
||||||
|
|
||||||
|
# master = None
|
||||||
|
|
||||||
for line in confFile:
|
for line in confFile:
|
||||||
line = line.strip()
|
line = line.strip()
|
||||||
if len(line) > 0 and not line[0] == "#":
|
|
||||||
ident = line.split("=")
|
|
||||||
for i in range(len(ident)):
|
|
||||||
ident[i] = ident[i].strip()
|
|
||||||
|
|
||||||
val = ident[1].split("#") #cut off comments
|
if len(line) == 0 or line[0] == "#": #remove empty lines and comments
|
||||||
#comment is on val[1]
|
# master = None
|
||||||
argument = str(val[0].strip()).split(',')
|
continue
|
||||||
arg = []
|
|
||||||
for a in argument:
|
if line[0] == '\'':
|
||||||
a.strip()
|
line = line.lstrip('\'')
|
||||||
a = True if a == 'True' else a
|
# if master is not None:
|
||||||
a = False if a == 'False' else a
|
key, arg = self.getElement(line)
|
||||||
arg.append(a)
|
res = []
|
||||||
|
for a in arg:
|
||||||
|
tmp = a.split(':')
|
||||||
|
for t in tmp:
|
||||||
|
res.append(t.strip())
|
||||||
|
arg = dict(res[i:i+2] for i in range(0, len(res), 2))
|
||||||
|
### prepared for more dimensional dictionaries ###
|
||||||
|
# elif line.find(':') != -1:
|
||||||
|
# master = line.split(':')[0]
|
||||||
|
# key = master
|
||||||
|
# arg = None
|
||||||
|
# pass
|
||||||
|
elif line.find("=") != -1:
|
||||||
|
key, arg = self.getElement(line)
|
||||||
|
if key == None:
|
||||||
|
continue
|
||||||
|
self.makeList(arg)
|
||||||
|
arg = arg if len(arg) > 1 else arg[0]
|
||||||
|
|
||||||
|
self._confDic[key] = arg
|
||||||
|
|
||||||
self._confDic[ident[0]] = arg if len(arg) > 1 else arg[0]
|
|
||||||
confFile.close()
|
confFile.close()
|
||||||
self._confDic['config_read'] = True
|
self._confDic['config_read'] = True
|
||||||
if self._confDic['config_debug']:
|
|
||||||
print 'config:\t{'
|
self.printConf()
|
||||||
for x in self._confDic:
|
|
||||||
print ' ', x, '\t:', self._confDic[x]
|
|
||||||
print ' }'
|
|
||||||
return self._confDic
|
return self._confDic
|
||||||
|
|
||||||
#c = Config()
|
c = Config()
|
||||||
#conf = c.readConf()
|
conf = c.readConf()
|
||||||
|
|
|
||||||
|
|
@ -19,17 +19,17 @@ config_debug = True
|
||||||
#possible Baud Rates: 100k, 125k, 250k, 500k, 1000k
|
#possible Baud Rates: 100k, 125k, 250k, 500k, 1000k
|
||||||
can_baudrate = 250k
|
can_baudrate = 250k
|
||||||
|
|
||||||
#can_messages = dc_battery, dc_grid, dc_pv, dc_charger
|
can_messages = dc_battery, dc_grid, dc_pv, dc_charger
|
||||||
#'dc_battery = id:0x3A4, length:8, time:50
|
'dc_battery = id:0x3A4, length:8, time:50
|
||||||
#'dc_grid = id:0x3A5, length:8, time:50
|
'dc_grid = id:0x3A5, length:8, time:50
|
||||||
#'dc_pv = id:0x3A6, length:8, time:50
|
'dc_pv = id:0x3A6, length:8, time:50
|
||||||
#'dc_charger = id:0x3A7, length:8, time:50
|
'dc_charger = id:0x3A7, length:8, time:50
|
||||||
#
|
|
||||||
#can_signales = current, voltage, capacity, isMaster, isFeed, isCharging, isOn
|
can_signales = current, voltage, capacity, isMaster, isFeed, isCharging, isOn
|
||||||
#'current = begin:0, length:16, offset:0, scaling:0.001, data:0
|
'current = begin:0, length:16, offset:0, scaling:0.001, data:0
|
||||||
#'voltage = begin:16, length:16, offset:0, scaling:0.01, data:0
|
'voltage = begin:16, length:16, offset:0, scaling:0.01, data:0
|
||||||
#'capacity = begin:32, length:11, offset:0, scaling:0.05, data:0
|
'capacity = begin:32, length:11, offset:0, scaling:0.05, data:0
|
||||||
#'isMaster = begin:56, length:1, offset:0, scaling:1, data:0
|
'isMaster = begin:56, length:1, offset:0, scaling:1, data:0
|
||||||
#'isFeed = begin:57, length:1, offset:0, scaling:1, data:0
|
'isFeed = begin:57, length:1, offset:0, scaling:1, data:0
|
||||||
#'isCharging = begin:57, length:1, offset:0, scaling:1, data:0
|
'isCharging = begin:57, length:1, offset:0, scaling:1, data:0
|
||||||
#'isOn = begin:58, length:1, offset:0, scaling:1, data:0
|
'isOn = begin:58, length:1, offset:0, scaling:1, data:0
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue