dstroy0
Zeroes and Ones
It is clear why you have not had issues disolving mc.
View attachment 26685
They should include one with first purchase over 35 bucks.
those things work great!
It is clear why you have not had issues disolving mc.
View attachment 26685
They should include one with first purchase over 35 bucks.
import re
#open file for reading 'r'
#rename columns.csv to db.cfg when the schema is moved into the file
column_file = open('columns.csv', 'r')
#read contents of file
content = column_file.read()
#remove all newline
content = content.replace('\n', '')
#remove all spaces
content = content.replace(' ', '')
#split list item on comma
content_list = re.split(';|:|`',content)
#each TABLE;COLUMN:TYPE`\n entry in db.cfg has 3 parts, so if you have anything left over after dividing all the parts you read by 3, UH OH
if len(content_list) % 3 != 0:
#do db.cfg error
print('schema incomplete')
else:
#no db.cfg error
print('schema complete')
#close file after done using
column_file.close()
def convert_list_to_nested_list(lst):
table_list = []
table = []
col = []
col_type = []
table_length_array = []
for i in range(0, len(lst), 3):
table.append(lst[i])
if lst[i] not in table_list:
table_list.append(lst[i])
table_length_array.extend([0])
col.append(lst[i+1])
col_type.append(lst[i+2])
for i in range(0,len(table_list),1):
table_length_array[i] = 0
for i in range(0, len(table), 1):
for j in range(0, len(table_list), 1):
if table[i] == table_list[j]:
table_length_array[j] = table_length_array[j] + 1
nested_list = []
gen_table = []
for i in range(0, len(table_list),1):
gen_table = [table_list[i]]
gen_table_columns = []
gen_table_column_type = []
for j in range(0, len(col), 1):
if table_list[i] == table[j]:
#print(j)
gen_table_columns.append(col[j])
gen_table_column_type.append(col_type[j])
for j in range(0, table_length_array[i],1):
gen_table.append([gen_table_columns[j],gen_table_column_type[j]])
nested_list.append(gen_table)
return nested_list
nested_content_list = convert_list_to_nested_list(content_list)
#print(nested_content_list)
for i in range(0, len(nested_content_list),1):
print(nested_content_list[i][0])
for j in range(1, len(nested_content_list[i]), 1):
print(nested_content_list[i][j][0],' ',nested_content_list[i][j][1],sep='')
print()
POWER;id:INT(11)`
POWER;TS_DT:INT(11)`
POWER;TS_RT:VARCHAR(64)`
POWER;ACPWR_A0_RCW:DECIMAL(7,3)`
POWER;ACPWR_A1_RCW:DECIMAL(7,3)`
POWER;ACPWR_A2_RCW:DECIMAL(7,3)`
POWER;ACPWR_A3_RCW:DECIMAL(7,3)`
POWER;ACPWR_A4_RCW:DECIMAL(7,3)`
POWER;ACPWR_A5_RCW:DECIMAL(7,3)`
POWER;DCPWR_5V_C:DECIMAL(6,2)`
POWER;DCPWR_5V_BV:DECIMAL(6,2)`
POWER;DCPWR_5V_P:DECIMAL(6,2)`
POWER;DCPWR_12V_C:DECIMAL(6,2)`
POWER;DCPWR_12V_BV:DECIMAL(6,2)`
POWER;DCPWR_12V_P:DECIMAL(6,2)`
POWER;DCPWR_24V_C:DECIMAL(6,2)`
POWER;DCPWR_24V_BV:DECIMAL(6,2)`
POWER;DCPWR_24V_P:DECIMAL(6,2)`
ENV_ONE;id:INT(11)`
ENV_ONE;TS_DT:INT(11)`
ENV_ONE;TS_RT:VARCHAR(64)`
ENV_ONE;ENV_A1_WL:VARCHAR(64)`
ENV_ONE;ENV_A1_LP:VARCHAR(64)`
ENV_ONE;ENV_A1_TDS:DECIMAL(6,2)`
ENV_ONE;ENV_A1_RT:DECIMAL(7,3)`
ENV_ONE;ENV_A1_RH:DECIMAL(5,2)`
ENV_ONE;ENV_A1_RHE:DECIMAL(5,2)`
ENV_ONE;ENV_A1_AT:DECIMAL(5,2)`
ENV_ONE;ENV_A1_ATE:DECIMAL(5,2)`
ENV_ONE;ENV_A1_CO2:INT(11)`
ENV_ONE;ENV_A1_CO2E:INT(11)`
ENV_ONE;ENV_A1_FAN:VARCHAR(64)`
ENV_ONE;ENV_A1_L:VARCHAR(64)`
ENV_ONE;ENV_A1_LI:INT(11)`
ENV_ONE;ENV_A1_FS:VARCHAR(64)`
ENV_ONE;ENV_A1_FD:DECIMAL(5,3)`
ENV_ONE;ENV_A1_FT:VARCHAR(64)`
ENV_ONE;ENV_A1_FI:DECIMAL(7,3)`
ENV_ONE;ENV_A1_TTF:DECIMAL(7,3)`
ENV_ONE;ENV_A1_HAM:DECIMAL(5,2)`
ENV_ONE;ENV_A1_HAH:DECIMAL(5,2)`
ENV_ONE;ENV_A1_HAD:DECIMAL(5,2)`
ENV_ONE;ENV_TTP:VARCHAR(64)`
ENV_TWO;id:INT(11)`
ENV_TWO;TS_DT:INT(11)`
ENV_TWO;TS_RT:VARCHAR(64)`
ENV_TWO;ENV_A2_WL:VARCHAR(64)`
ENV_TWO;ENV_A2_LP:VARCHAR(64)`
ENV_TWO;ENV_A2_TDS:DECIMAL(6,2)`
ENV_TWO;ENV_A2_RT:DECIMAL(7,3)`
ENV_TWO;ENV_A2_RH:DECIMAL(5,2)`
ENV_TWO;ENV_A2_RHE:DECIMAL(5,2)`
ENV_TWO;ENV_A2_AT:DECIMAL(5,2)`
ENV_TWO;ENV_A2_ATE:DECIMAL(5,2)`
ENV_TWO;ENV_A2_CO2:INT(11)`
ENV_TWO;ENV_A2_CO2E:INT(11)`
ENV_TWO;ENV_A2_FAN:VARCHAR(64)`
ENV_TWO;ENV_A2_L:VARCHAR(64)`
ENV_TWO;ENV_A2_LI:INT(11)`
ENV_TWO;ENV_A2_FS:VARCHAR(64)`
ENV_TWO;ENV_A2_FD:DECIMAL(5,3)`
ENV_TWO;ENV_A2_FT:VARCHAR(64)`
ENV_TWO;ENV_A2_FI:DECIMAL(7,3)`
ENV_TWO;ENV_A2_TTF:DECIMAL(7,3)`
ENV_TWO;ENV_A2_HAM:DECIMAL(5,2)`
ENV_TWO;ENV_A2_HAH:DECIMAL(5,2)`
ENV_TWO;ENV_A2_HAD:DECIMAL(5,2)`
ENV_TWO;ENV_TTP:VARCHAR(64)`
RESERVOIR;id:INT(11)`
RESERVOIR;TS_DT:INT(11)`
RESERVOIR;TS_RT:VARCHAR(64)`
RESERVOIR;RES_pH:DECIMAL(8,6)`
RESERVOIR;RES_EC:DECIMAL(8,6)`
RESERVOIR;RES_temp:DECIMAL(10,6)`
RESERVOIR;RES_total_in:DECIMAL(10,3)`
RESERVOIR;RES_ph_up_total:DECIMAL(8,3)`
RESERVOIR;RES_ph_down_total:DECIMAL(8,3)`
VPD;id:INT(11)`
VPD;TS_DT:INT(11)`
VPD;TS_RT:VARCHAR(64)`
VPD;VPD_A1_AIR:DECIMAL(5,3)`
VPD;VPD_A1_L0:DECIMAL(5,3)`
VPD;VPD_A1_L1:DECIMAL(5,3)`
VPD;VPD_A1_L2:DECIMAL(5,3)`
VPD;VPD_A1_L3:DECIMAL(5,3)`
VPD;VPD_A1_LFT_0:DECIMAL(5,3)`
VPD;VPD_A1_LFT_1:DECIMAL(5,3)`
VPD;VPD_A1_LFT_2:DECIMAL(5,3)`
VPD;VPD_A1_LFT_3:DECIMAL(5,3)`
VPD;VPD_A2_AIR:DECIMAL(5,3)`
VPD;VPD_A2_L0:DECIMAL(5,3)`
VPD;VPD_A2_L1:DECIMAL(5,3)`
VPD;VPD_A2_L2:DECIMAL(5,3)`
VPD;VPD_A2_L3:DECIMAL(5,3)`
VPD;VPD_A2_LFT_0:DECIMAL(5,3)`
VPD;VPD_A2_LFT_1:DECIMAL(5,3)`
VPD;VPD_A2_LFT_2:DECIMAL(5,3)`
VPD;VPD_A2_LFT_3:DECIMAL(5,3)`
TRACKER;id:INT(11)`
TRACKER;TS_DT:INT(11)`
TRACKER;TS_RT:VARCHAR(64)`
TRACKER;TRK_A1_VEG_START:INT(11)`
TRACKER;TRK_A1_VEG_END:INT(11)`
TRACKER;TRK_A1_FLOWER_START:INT(11)`
TRACKER;TRK_A1_FLOWER_END:INT(11)`
TRACKER;TRK_A2_VEG_START:INT(11)`
TRACKER;TRK_A2_VEG_END:INT(11)`
TRACKER;TRK_A2_FLOWER_START:INT(11)`
TRACKER;TRK_A2_FLOWER_END:INT(11)`
SYSTEM;id:INT(11)`
SYSTEM;TS_DT:INT(11)`
SYSTEM;TS_RT:VARCHAR(64)`
SYSTEM;TTP:VARCHAR(64)`
SYSTEM;COM:VARCHAR(64)`
SYSTEM;SYS:VARCHAR(64)`
SYSTEM;DATA:TEXT`
SYSTEM;SCRIPT_ERROR:BLOB`
SYSTEM;CFG:TEXT`
SYSTEM;MSG:TEXT`
SYSTEM;SYS_0:VARCHAR(64)`
SYSTEM;SYS_1:VARCHAR(64)`
CONFIG;id:INT(11)`
CONFIG;TS_DT:INT(11)`
CONFIG;TS_RT:VARCHAR(64)`
CONFIG;C_1_CFG_A1_FLOWER:VARCHAR(64)`
CONFIG;C_1_CFG_A1_CO2EN:VARCHAR(64)`
CONFIG;C_1_CFG_A1_SSROUTLETLIGHTTIMER:VARCHAR(64)`
CONFIG;C_1_CFG_A1_FMINON:VARCHAR(64)`
CONFIG;C_1_CFG_A1_FMINOFF:VARCHAR(64)`
CONFIG;C_1_CFG_A1_FMAXOFFLO:VARCHAR(64)`
CONFIG;C_1_CFG_A1_FMINONLO:VARCHAR(64)`
CONFIG;C_1_CFG_A1_LONT:VARCHAR(64)`
CONFIG;C_1_CFG_A1_LOFFT:VARCHAR(64)`
CONFIG;C_1_CFG_A1_LI:VARCHAR(64)`
CONFIG;C_1_CFG_A1_LIMAX:VARCHAR(64)`
CONFIG;C_1_CFG_A1_LFID:VARCHAR(64)`
CONFIG;C_1_CFG_A1_LFOD:VARCHAR(64)`
CONFIG;C_1_CFG_A1_VEGLEN:VARCHAR(64)`
CONFIG;C_1_CFG_A1_FLOWERLEN:VARCHAR(64)`
CONFIG;C_1_CFG_A1_CO2ONT:VARCHAR(64)`
CONFIG;C_1_CFG_A1_CO2OFFT:VARCHAR(64)`
CONFIG;C_1_CFG_A1_CO2VEGTGT:VARCHAR(64)`
CONFIG;C_1_CFG_A1_CO2FLOWERTGT:VARCHAR(64)`
CONFIG;C_1_CFG_A1_CO2DB:VARCHAR(64)`
CONFIG;C_1_CFG_A1_HUMT:VARCHAR(64)`
CONFIG;C_1_CFG_A1_HUMDB:VARCHAR(64)`
CONFIG;C_1_CFG_A1_TEMPT:VARCHAR(64)`
CONFIG;C_1_CFG_A1_TEMPDB:VARCHAR(64)`
CONFIG;C_1_CFG_A1_FDUR:VARCHAR(64)`
CONFIG;C_1_CFG_A1_FINT:VARCHAR(64)`
CONFIG;C_1_CFG_A1_FDURTR:VARCHAR(64)`
CONFIG;C_1_CFG_A1_FDURTRADJ:VARCHAR(64)`
CONFIG;C_1_CFG_A1_FTRADJD:VARCHAR(64)`
CONFIG;C_1_CFG_A1_HUMWSMPDLY:VARCHAR(64)`
CONFIG;C_1_CFG_A1_CO2DUR:VARCHAR(64)`
CONFIG;C_1_CFG_A1_CO2INT:VARCHAR(64)`
CONFIG;C_1_CFG_A1_LFDU:VARCHAR(64)`
CONFIG;C_1_CFG_A1_LFDD:VARCHAR(64)`
CONFIG;C_1_CFG_A2_FLOWER:VARCHAR(64)`
CONFIG;C_1_CFG_A2_CO2EN:VARCHAR(64)`
CONFIG;C_1_CFG_A2_SSROUTLETLIGHTTIMER:VARCHAR(64)`
CONFIG;C_1_CFG_A2_FMINON:VARCHAR(64)`
CONFIG;C_1_CFG_A2_FMINOFF:VARCHAR(64)`
CONFIG;C_1_CFG_A2_FMAXOFFLO:VARCHAR(64)`
CONFIG;C_1_CFG_A2_FMINONLO:VARCHAR(64)`
CONFIG;C_1_CFG_A2_LONT:VARCHAR(64)`
CONFIG;C_1_CFG_A2_LOFFT:VARCHAR(64)`
CONFIG;C_1_CFG_A2_LI:VARCHAR(64)`
CONFIG;C_1_CFG_A2_LIMAX:VARCHAR(64)`
CONFIG;C_1_CFG_A2_LFID:VARCHAR(64)`
CONFIG;C_1_CFG_A2_LFOD:VARCHAR(64)`
CONFIG;C_1_CFG_A2_VEGLEN:VARCHAR(64)`
CONFIG;C_1_CFG_A2_FLOWERLEN:VARCHAR(64)`
CONFIG;C_1_CFG_A2_CO2ONT:VARCHAR(64)`
CONFIG;C_1_CFG_A2_CO2OFFT:VARCHAR(64)`
CONFIG;C_1_CFG_A2_CO2VEGTGT:VARCHAR(64)`
CONFIG;C_1_CFG_A2_CO2FLOWERTGT:VARCHAR(64)`
CONFIG;C_1_CFG_A2_CO2DB:VARCHAR(64)`
CONFIG;C_1_CFG_A2_HUMT:VARCHAR(64)`
CONFIG;C_1_CFG_A2_HUMDB:VARCHAR(64)`
CONFIG;C_1_CFG_A2_TEMPT:VARCHAR(64)`
CONFIG;C_1_CFG_A2_TEMPDB:VARCHAR(64)`
CONFIG;C_1_CFG_A2_FDUR:VARCHAR(64)`
CONFIG;C_1_CFG_A2_FINT:VARCHAR(64)`
CONFIG;C_1_CFG_A2_FDURTR:VARCHAR(64)`
CONFIG;C_1_CFG_A2_FDURTRADJ:VARCHAR(64)`
CONFIG;C_1_CFG_A2_FTRADJD:VARCHAR(64)`
CONFIG;C_1_CFG_A2_HUMWSMPDLY:VARCHAR(64)`
CONFIG;C_1_CFG_A2_CO2DUR:VARCHAR(64)`
CONFIG;C_1_CFG_A2_CO2INT:VARCHAR(64)`
CONFIG;C_1_CFG_A2_LFDU:VARCHAR(64)`
CONFIG;C_1_CFG_A2_LFDD:VARCHAR(64)`
CONFIG;C_1_CFG_LOC_ENVMSGDLY:VARCHAR(64)`
CONFIG;C_1_CFG_LOC_DS3231TMPDLY:VARCHAR(64)`
CONFIG;C_1_CFG_LOC_BMP280DLY:VARCHAR(64)`
CONFIG;C_1_CFG_LOC_RTDSDLY:VARCHAR(64)`
CONFIG;C_1_CFG_LOC_RTMPDLY:VARCHAR(64)
Wow , love what you doin man
AMAZING!You can see right when I poked my head in to check on them, the humidity dips.
View attachment 27384
thank you!Wow , love what you doin man
AMAZING!
I've been working on splitting my database up into separate tables, and the first part of that was reading from a file that had some delimiters in it. Now I'm on to multiple delimiters and I've got what I think is the beginning of an ok solution if this db needs to be regenerated without supervision.
Python:import re #open file for reading 'r' #rename columns.csv to db.cfg when the schema is moved into the file column_file = open('columns.csv', 'r') #read contents of file content = column_file.read() #remove all newline content = content.replace('\n', '') #remove all spaces content = content.replace(' ', '') #split list item on comma content_list = re.split(';|:|`',content) #each TABLE;COLUMN:TYPE`\n entry in db.cfg has 3 parts, so if you have anything left over after dividing all the parts you read by 3, UH OH if len(content_list) % 3 != 0: #do db.cfg error print('schema incomplete') else: #no db.cfg error print('schema complete') #close file after done using column_file.close() def convert_list_to_nested_list(lst): table_list = [] table = [] col = [] col_type = [] table_length_array = [] for i in range(0, len(lst), 3): table.append(lst[i]) if lst[i] not in table_list: table_list.append(lst[i]) table_length_array.extend([0]) col.append(lst[i+1]) col_type.append(lst[i+2]) for i in range(0,len(table_list),1): table_length_array[i] = 0 for i in range(0, len(table), 1): for j in range(0, len(table_list), 1): if table[i] == table_list[j]: table_length_array[j] = table_length_array[j] + 1 nested_list = [] gen_table = [] for i in range(0, len(table_list),1): gen_table = [table_list[i]] gen_table_columns = [] gen_table_column_type = [] for j in range(0, len(col), 1): if table_list[i] == table[j]: #print(j) gen_table_columns.append(col[j]) gen_table_column_type.append(col_type[j]) for j in range(0, table_length_array[i],1): gen_table.append([gen_table_columns[j],gen_table_column_type[j]]) nested_list.append(gen_table) return nested_list nested_content_list = convert_list_to_nested_list(content_list) #print(nested_content_list) for i in range(0, len(nested_content_list),1): print(nested_content_list[i][0]) for j in range(1, len(nested_content_list[i]), 1): print(nested_content_list[i][j][0],' ',nested_content_list[i][j][1],sep='') print()
and this is the file that it loads from:
Code:POWER;id:INT(11)` POWER;TS_DT:INT(11)` POWER;TS_RT:VARCHAR(64)` POWER;ACPWR_A0_RCW:DECIMAL(7,3)` POWER;ACPWR_A1_RCW:DECIMAL(7,3)` POWER;ACPWR_A2_RCW:DECIMAL(7,3)` POWER;ACPWR_A3_RCW:DECIMAL(7,3)` POWER;ACPWR_A4_RCW:DECIMAL(7,3)` POWER;ACPWR_A5_RCW:DECIMAL(7,3)` POWER;DCPWR_5V_C:DECIMAL(6,2)` POWER;DCPWR_5V_BV:DECIMAL(6,2)` POWER;DCPWR_5V_P:DECIMAL(6,2)` POWER;DCPWR_12V_C:DECIMAL(6,2)` POWER;DCPWR_12V_BV:DECIMAL(6,2)` POWER;DCPWR_12V_P:DECIMAL(6,2)` POWER;DCPWR_24V_C:DECIMAL(6,2)` POWER;DCPWR_24V_BV:DECIMAL(6,2)` POWER;DCPWR_24V_P:DECIMAL(6,2)` ENV_ONE;id:INT(11)` ENV_ONE;TS_DT:INT(11)` ENV_ONE;TS_RT:VARCHAR(64)` ENV_ONE;ENV_A1_WL:VARCHAR(64)` ENV_ONE;ENV_A1_LP:VARCHAR(64)` ENV_ONE;ENV_A1_TDS:DECIMAL(6,2)` ENV_ONE;ENV_A1_RT:DECIMAL(7,3)` ENV_ONE;ENV_A1_RH:DECIMAL(5,2)` ENV_ONE;ENV_A1_RHE:DECIMAL(5,2)` ENV_ONE;ENV_A1_AT:DECIMAL(5,2)` ENV_ONE;ENV_A1_ATE:DECIMAL(5,2)` ENV_ONE;ENV_A1_CO2:INT(11)` ENV_ONE;ENV_A1_CO2E:INT(11)` ENV_ONE;ENV_A1_FAN:VARCHAR(64)` ENV_ONE;ENV_A1_L:VARCHAR(64)` ENV_ONE;ENV_A1_LI:INT(11)` ENV_ONE;ENV_A1_FS:VARCHAR(64)` ENV_ONE;ENV_A1_FD:DECIMAL(5,3)` ENV_ONE;ENV_A1_FT:VARCHAR(64)` ENV_ONE;ENV_A1_FI:DECIMAL(7,3)` ENV_ONE;ENV_A1_TTF:DECIMAL(7,3)` ENV_ONE;ENV_A1_HAM:DECIMAL(5,2)` ENV_ONE;ENV_A1_HAH:DECIMAL(5,2)` ENV_ONE;ENV_A1_HAD:DECIMAL(5,2)` ENV_ONE;ENV_TTP:VARCHAR(64)` ENV_TWO;id:INT(11)` ENV_TWO;TS_DT:INT(11)` ENV_TWO;TS_RT:VARCHAR(64)` ENV_TWO;ENV_A2_WL:VARCHAR(64)` ENV_TWO;ENV_A2_LP:VARCHAR(64)` ENV_TWO;ENV_A2_TDS:DECIMAL(6,2)` ENV_TWO;ENV_A2_RT:DECIMAL(7,3)` ENV_TWO;ENV_A2_RH:DECIMAL(5,2)` ENV_TWO;ENV_A2_RHE:DECIMAL(5,2)` ENV_TWO;ENV_A2_AT:DECIMAL(5,2)` ENV_TWO;ENV_A2_ATE:DECIMAL(5,2)` ENV_TWO;ENV_A2_CO2:INT(11)` ENV_TWO;ENV_A2_CO2E:INT(11)` ENV_TWO;ENV_A2_FAN:VARCHAR(64)` ENV_TWO;ENV_A2_L:VARCHAR(64)` ENV_TWO;ENV_A2_LI:INT(11)` ENV_TWO;ENV_A2_FS:VARCHAR(64)` ENV_TWO;ENV_A2_FD:DECIMAL(5,3)` ENV_TWO;ENV_A2_FT:VARCHAR(64)` ENV_TWO;ENV_A2_FI:DECIMAL(7,3)` ENV_TWO;ENV_A2_TTF:DECIMAL(7,3)` ENV_TWO;ENV_A2_HAM:DECIMAL(5,2)` ENV_TWO;ENV_A2_HAH:DECIMAL(5,2)` ENV_TWO;ENV_A2_HAD:DECIMAL(5,2)` ENV_TWO;ENV_TTP:VARCHAR(64)` RESERVOIR;id:INT(11)` RESERVOIR;TS_DT:INT(11)` RESERVOIR;TS_RT:VARCHAR(64)` RESERVOIR;RES_pH:DECIMAL(8,6)` RESERVOIR;RES_EC:DECIMAL(8,6)` RESERVOIR;RES_temp:DECIMAL(10,6)` RESERVOIR;RES_total_in:DECIMAL(10,3)` RESERVOIR;RES_ph_up_total:DECIMAL(8,3)` RESERVOIR;RES_ph_down_total:DECIMAL(8,3)` VPD;id:INT(11)` VPD;TS_DT:INT(11)` VPD;TS_RT:VARCHAR(64)` VPD;VPD_A1_AIR:DECIMAL(5,3)` VPD;VPD_A1_L0:DECIMAL(5,3)` VPD;VPD_A1_L1:DECIMAL(5,3)` VPD;VPD_A1_L2:DECIMAL(5,3)` VPD;VPD_A1_L3:DECIMAL(5,3)` VPD;VPD_A1_LFT_0:DECIMAL(5,3)` VPD;VPD_A1_LFT_1:DECIMAL(5,3)` VPD;VPD_A1_LFT_2:DECIMAL(5,3)` VPD;VPD_A1_LFT_3:DECIMAL(5,3)` VPD;VPD_A2_AIR:DECIMAL(5,3)` VPD;VPD_A2_L0:DECIMAL(5,3)` VPD;VPD_A2_L1:DECIMAL(5,3)` VPD;VPD_A2_L2:DECIMAL(5,3)` VPD;VPD_A2_L3:DECIMAL(5,3)` VPD;VPD_A2_LFT_0:DECIMAL(5,3)` VPD;VPD_A2_LFT_1:DECIMAL(5,3)` VPD;VPD_A2_LFT_2:DECIMAL(5,3)` VPD;VPD_A2_LFT_3:DECIMAL(5,3)` TRACKER;id:INT(11)` TRACKER;TS_DT:INT(11)` TRACKER;TS_RT:VARCHAR(64)` TRACKER;TRK_A1_VEG_START:INT(11)` TRACKER;TRK_A1_VEG_END:INT(11)` TRACKER;TRK_A1_FLOWER_START:INT(11)` TRACKER;TRK_A1_FLOWER_END:INT(11)` TRACKER;TRK_A2_VEG_START:INT(11)` TRACKER;TRK_A2_VEG_END:INT(11)` TRACKER;TRK_A2_FLOWER_START:INT(11)` TRACKER;TRK_A2_FLOWER_END:INT(11)` SYSTEM;id:INT(11)` SYSTEM;TS_DT:INT(11)` SYSTEM;TS_RT:VARCHAR(64)` SYSTEM;TTP:VARCHAR(64)` SYSTEM;COM:VARCHAR(64)` SYSTEM;SYS:VARCHAR(64)` SYSTEM;DATA:TEXT` SYSTEM;SCRIPT_ERROR:BLOB` SYSTEM;CFG:TEXT` SYSTEM;MSG:TEXT` SYSTEM;SYS_0:VARCHAR(64)` SYSTEM;SYS_1:VARCHAR(64)` CONFIG;id:INT(11)` CONFIG;TS_DT:INT(11)` CONFIG;TS_RT:VARCHAR(64)` CONFIG;C_1_CFG_A1_FLOWER:VARCHAR(64)` CONFIG;C_1_CFG_A1_CO2EN:VARCHAR(64)` CONFIG;C_1_CFG_A1_SSROUTLETLIGHTTIMER:VARCHAR(64)` CONFIG;C_1_CFG_A1_FMINON:VARCHAR(64)` CONFIG;C_1_CFG_A1_FMINOFF:VARCHAR(64)` CONFIG;C_1_CFG_A1_FMAXOFFLO:VARCHAR(64)` CONFIG;C_1_CFG_A1_FMINONLO:VARCHAR(64)` CONFIG;C_1_CFG_A1_LONT:VARCHAR(64)` CONFIG;C_1_CFG_A1_LOFFT:VARCHAR(64)` CONFIG;C_1_CFG_A1_LI:VARCHAR(64)` CONFIG;C_1_CFG_A1_LIMAX:VARCHAR(64)` CONFIG;C_1_CFG_A1_LFID:VARCHAR(64)` CONFIG;C_1_CFG_A1_LFOD:VARCHAR(64)` CONFIG;C_1_CFG_A1_VEGLEN:VARCHAR(64)` CONFIG;C_1_CFG_A1_FLOWERLEN:VARCHAR(64)` CONFIG;C_1_CFG_A1_CO2ONT:VARCHAR(64)` CONFIG;C_1_CFG_A1_CO2OFFT:VARCHAR(64)` CONFIG;C_1_CFG_A1_CO2VEGTGT:VARCHAR(64)` CONFIG;C_1_CFG_A1_CO2FLOWERTGT:VARCHAR(64)` CONFIG;C_1_CFG_A1_CO2DB:VARCHAR(64)` CONFIG;C_1_CFG_A1_HUMT:VARCHAR(64)` CONFIG;C_1_CFG_A1_HUMDB:VARCHAR(64)` CONFIG;C_1_CFG_A1_TEMPT:VARCHAR(64)` CONFIG;C_1_CFG_A1_TEMPDB:VARCHAR(64)` CONFIG;C_1_CFG_A1_FDUR:VARCHAR(64)` CONFIG;C_1_CFG_A1_FINT:VARCHAR(64)` CONFIG;C_1_CFG_A1_FDURTR:VARCHAR(64)` CONFIG;C_1_CFG_A1_FDURTRADJ:VARCHAR(64)` CONFIG;C_1_CFG_A1_FTRADJD:VARCHAR(64)` CONFIG;C_1_CFG_A1_HUMWSMPDLY:VARCHAR(64)` CONFIG;C_1_CFG_A1_CO2DUR:VARCHAR(64)` CONFIG;C_1_CFG_A1_CO2INT:VARCHAR(64)` CONFIG;C_1_CFG_A1_LFDU:VARCHAR(64)` CONFIG;C_1_CFG_A1_LFDD:VARCHAR(64)` CONFIG;C_1_CFG_A2_FLOWER:VARCHAR(64)` CONFIG;C_1_CFG_A2_CO2EN:VARCHAR(64)` CONFIG;C_1_CFG_A2_SSROUTLETLIGHTTIMER:VARCHAR(64)` CONFIG;C_1_CFG_A2_FMINON:VARCHAR(64)` CONFIG;C_1_CFG_A2_FMINOFF:VARCHAR(64)` CONFIG;C_1_CFG_A2_FMAXOFFLO:VARCHAR(64)` CONFIG;C_1_CFG_A2_FMINONLO:VARCHAR(64)` CONFIG;C_1_CFG_A2_LONT:VARCHAR(64)` CONFIG;C_1_CFG_A2_LOFFT:VARCHAR(64)` CONFIG;C_1_CFG_A2_LI:VARCHAR(64)` CONFIG;C_1_CFG_A2_LIMAX:VARCHAR(64)` CONFIG;C_1_CFG_A2_LFID:VARCHAR(64)` CONFIG;C_1_CFG_A2_LFOD:VARCHAR(64)` CONFIG;C_1_CFG_A2_VEGLEN:VARCHAR(64)` CONFIG;C_1_CFG_A2_FLOWERLEN:VARCHAR(64)` CONFIG;C_1_CFG_A2_CO2ONT:VARCHAR(64)` CONFIG;C_1_CFG_A2_CO2OFFT:VARCHAR(64)` CONFIG;C_1_CFG_A2_CO2VEGTGT:VARCHAR(64)` CONFIG;C_1_CFG_A2_CO2FLOWERTGT:VARCHAR(64)` CONFIG;C_1_CFG_A2_CO2DB:VARCHAR(64)` CONFIG;C_1_CFG_A2_HUMT:VARCHAR(64)` CONFIG;C_1_CFG_A2_HUMDB:VARCHAR(64)` CONFIG;C_1_CFG_A2_TEMPT:VARCHAR(64)` CONFIG;C_1_CFG_A2_TEMPDB:VARCHAR(64)` CONFIG;C_1_CFG_A2_FDUR:VARCHAR(64)` CONFIG;C_1_CFG_A2_FINT:VARCHAR(64)` CONFIG;C_1_CFG_A2_FDURTR:VARCHAR(64)` CONFIG;C_1_CFG_A2_FDURTRADJ:VARCHAR(64)` CONFIG;C_1_CFG_A2_FTRADJD:VARCHAR(64)` CONFIG;C_1_CFG_A2_HUMWSMPDLY:VARCHAR(64)` CONFIG;C_1_CFG_A2_CO2DUR:VARCHAR(64)` CONFIG;C_1_CFG_A2_CO2INT:VARCHAR(64)` CONFIG;C_1_CFG_A2_LFDU:VARCHAR(64)` CONFIG;C_1_CFG_A2_LFDD:VARCHAR(64)` CONFIG;C_1_CFG_LOC_ENVMSGDLY:VARCHAR(64)` CONFIG;C_1_CFG_LOC_DS3231TMPDLY:VARCHAR(64)` CONFIG;C_1_CFG_LOC_BMP280DLY:VARCHAR(64)` CONFIG;C_1_CFG_LOC_RTDSDLY:VARCHAR(64)` CONFIG;C_1_CFG_LOC_RTMPDLY:VARCHAR(64)
output:
View attachment 26999
import json
#open file for reading 'r'
cfg_file = open('db_cfg.ini', 'r')
#read contents of file
content = cfg_file.read()
cfg_file.close()
def print_pretty_db_schema_json(db_schema):
#prettify json loaded from db_cfg.ini
pretty_db_schema = json.dumps(db_schema, indent=4, separators=(',', ':'))
print(pretty_db_schema)
def load_db_schema():
try:
json_content = json.loads(content)
print("db schema loaded")
return json_content
except ValueError as e:
print("db schema error")
print(e)
#uh oh
#get db schema
db_schema = load_db_schema()
print_pretty_db_schema_json(db_schema)
#get tables from db schema
tables = []
for i in db_schema.keys():
tables.append(i)
#get list of acceptable columns for all tables, exclude id and INDEX
db_table_col = []
for i in tables:
for j in db_schema[i].keys():
if j != 'id' and j != 'INDEX' and j not in db_table_col:
db_table_col.append(j)
#testing
#simulated received keys list
test_column = ["ENV_A1_AT","ENV_A2_AT","VPD_A1_AIR","ACPWR_A0_RCW","DCPWR_24V_BV","TTP","C_1_CFG_A1_FLOWER"]
#put all the pegs into all the right shaped holes
for i in range(0,len(test_column),1):
if test_column[i] in db_table_col:
if test_column[i][0:3] == "ENV":
#print("env message")
if test_column[i][4:6] == "A1":
print("table: env_one")
print("col: ", test_column[i],sep='')
elif test_column[i][4:6] == "A2":
print("table: env_two")
print("col: ", test_column[i],sep='')
elif test_column[i][0:3] == "VPD":
#print("vpd message")
print("table: vpd")
print("col: ", test_column[i],sep='')
elif test_column[i][0:3] == "ACP":
#print("ac power message")
print("table: power")
print("col: ", test_column[i],sep='')
elif test_column[i][0:3] == "DCP":
#print("dc power message")
print("table: power")
print("col: ", test_column[i],sep='')
elif test_column[i][0:3] == "RES":
#print("reservoir message")
print("table: reservoir")
print("col: ", test_column[i],sep='')
elif test_column[i][0:3] == "TRK":
#print("tracker message")
print("table: tracker")
print("col: ", test_column[i],sep='')
elif test_column[i][0:3] == "TTP" or test_column[i][0:3] == "COM" or test_column[i][0:3] == "SYS" or test_column[i][0:3] == "DAT" or test_column[i][0:3] == "SCR" or test_column[i][0:3] == "MSG" or test_column[i][0:3] == "CFG":
#print("system message")
print("table: system")
print("col: ", test_column[i],sep='')
elif test_column[i][4:7] == "CFG":
#print("config message")
print("table: config")
print("col: ", test_column[i],sep='')
{
"power": {
"id": "INT(11) AUTO_INCREMENT PRIMARY KEY",
"TS_DT": "INT(11)",
"TS_RT": "VARCHAR(64)",
"ACPWR_A0_RCW": "DECIMAL(7,3)",
"ACPWR_A1_RCW": "DECIMAL(7,3)",
"ACPWR_A2_RCW": "DECIMAL(7,3)",
"ACPWR_A3_RCW": "DECIMAL(7,3)",
"ACPWR_A4_RCW": "DECIMAL(7,3)",
"ACPWR_A5_RCW": "DECIMAL(7,3)",
"DCPWR_5V_C": "DECIMAL(6,2)",
"DCPWR_5V_BV": "DECIMAL(6,2)",
"DCPWR_5V_P": "DECIMAL(6,2)",
"DCPWR_12V_C": "DECIMAL(6,2)",
"DCPWR_12V_BV": "DECIMAL(6,2)",
"DCPWR_12V_P": "DECIMAL(6,2)",
"DCPWR_24V_C": "DECIMAL(6,2)",
"DCPWR_24V_BV": "DECIMAL(6,2)",
"DCPWR_24V_P": "DECIMAL(6,2)",
"INDEX": "idx_TS_DT(TS_DT)"
},
"env_one": {
"id": "INT(11) AUTO_INCREMENT PRIMARY KEY",
"TS_DT": "INT(11)",
"TS_RT": "VARCHAR(64)",
"ENV_A1_WL": "VARCHAR(64)",
"ENV_A1_LP": "VARCHAR(64)",
"ENV_A1_TDS": "DECIMAL(6,2)",
"ENV_A1_RT": "DECIMAL(7,3)",
"ENV_A1_RH": "DECIMAL(5,2)",
"ENV_A1_RHE": "DECIMAL(5,2)",
"ENV_A1_AT": "DECIMAL(5,2)",
"ENV_A1_ATE": "DECIMAL(5,2)",
"ENV_A1_CO2": "INT(11)",
"ENV_A1_CO2E": "INT(11)",
"ENV_A1_FAN": "VARCHAR(64)",
"ENV_A1_L": "VARCHAR(64)",
"ENV_A1_LI": "INT(11)",
"ENV_A1_FS": "VARCHAR(64)",
"ENV_A1_FD": "DECIMAL(5,3)",
"ENV_A1_FT": "VARCHAR(64)",
"ENV_A1_FI": "DECIMAL(7,3)",
"ENV_A1_TTF": "DECIMAL(7,3)",
"ENV_A1_HAM": "DECIMAL(5,2)",
"ENV_A1_HAH": "DECIMAL(5,2)",
"ENV_A1_HAD": "DECIMAL(5,2)",
"ENV_TTP": "VARCHAR(64)",
"INDEX": "idx_TS_DT(TS_DT)"
},
"env_two": {
"id": "INT(11) AUTO_INCREMENT PRIMARY KEY",
"TS_DT": "INT(11)",
"TS_RT": "VARCHAR(64)",
"ENV_A2_WL": "VARCHAR(64)",
"ENV_A2_LP": "VARCHAR(64)",
"ENV_A2_TDS": "DECIMAL(6,2)",
"ENV_A2_RT": "DECIMAL(7,3)",
"ENV_A2_RH": "DECIMAL(5,2)",
"ENV_A2_RHE": "DECIMAL(5,2)",
"ENV_A2_AT": "DECIMAL(5,2)",
"ENV_A2_ATE": "DECIMAL(5,2)",
"ENV_A2_CO2": "INT(11)",
"ENV_A2_CO2E": "INT(11)",
"ENV_A2_FAN": "VARCHAR(64)",
"ENV_A2_L": "VARCHAR(64)",
"ENV_A2_LI": "INT(11)",
"ENV_A2_FS": "VARCHAR(64)",
"ENV_A2_FD": "DECIMAL(5,3)",
"ENV_A2_FT": "VARCHAR(64)",
"ENV_A2_FI": "DECIMAL(7,3)",
"ENV_A2_TTF": "DECIMAL(7,3)",
"ENV_A2_HAM": "DECIMAL(5,2)",
"ENV_A2_HAH": "DECIMAL(5,2)",
"ENV_A2_HAD": "DECIMAL(5,2)",
"ENV_TTP": "VARCHAR(64)",
"INDEX": "idx_TS_DT(TS_DT)"
},
"reservoir": {
"id": "INT(11) AUTO_INCREMENT PRIMARY KEY",
"TS_DT": "INT(11)",
"TS_RT": "VARCHAR(64)",
"RES_pH": "DECIMAL(8,6)",
"RES_EC": "DECIMAL(8,6)",
"RES_temp": "DECIMAL(10,6)",
"RES_total_in": "DECIMAL(10,3)",
"RES_ph_up_total": "DECIMAL(8,3)",
"RES_ph_down_total": "DECIMAL(8,3)",
"INDEX": "idx_TS_DT(TS_DT)"
},
"vpd": {
"id": "INT(11) AUTO_INCREMENT PRIMARY KEY",
"TS_DT": "INT(11)",
"TS_RT": "VARCHAR(64)",
"VPD_A1_AIR": "DECIMAL(5,3)",
"VPD_A1_L0": "DECIMAL(5,3)",
"VPD_A1_L1": "DECIMAL(5,3)",
"VPD_A1_L2": "DECIMAL(5,3)",
"VPD_A1_L3": "DECIMAL(5,3)",
"VPD_A1_LFT_0": "DECIMAL(5,3)",
"VPD_A1_LFT_1": "DECIMAL(5,3)",
"VPD_A1_LFT_2": "DECIMAL(5,3)",
"VPD_A1_LFT_3": "DECIMAL(5,3)",
"VPD_A2_AIR": "DECIMAL(5,3)",
"VPD_A2_L0": "DECIMAL(5,3)",
"VPD_A2_L1": "DECIMAL(5,3)",
"VPD_A2_L2": "DECIMAL(5,3)",
"VPD_A2_L3": "DECIMAL(5,3)",
"VPD_A2_LFT_0": "DECIMAL(5,3)",
"VPD_A2_LFT_1": "DECIMAL(5,3)",
"VPD_A2_LFT_2": "DECIMAL(5,3)",
"VPD_A2_LFT_3": "DECIMAL(5,3)",
"INDEX": "idx_TS_DT(TS_DT)"
},
"tracker": {
"id": "INT(11) AUTO_INCREMENT PRIMARY KEY",
"TS_DT": "INT(11)",
"TS_RT": "VARCHAR(64)",
"TRK_A1_VEG_START": "INT(11)",
"TRK_A1_VEG_END": "INT(11)",
"TRK_A1_FLOWER_START": "INT(11)",
"TRK_A1_FLOWER_END": "INT(11)",
"TRK_A2_VEG_START": "INT(11)",
"TRK_A2_VEG_END": "INT(11)",
"TRK_A2_FLOWER_START": "INT(11)",
"TRK_A2_FLOWER_END": "INT(11)",
"INDEX": "idx_TS_DT(TS_DT)"
},
"system": {
"id": "INT(11) AUTO_INCREMENT PRIMARY KEY",
"TS_DT": "INT(11)",
"TS_RT": "VARCHAR(64)",
"TTP": "VARCHAR(64)",
"COM": "VARCHAR(64)",
"SYS": "VARCHAR(64)",
"DATA": "TEXT",
"SCRIPT_ERROR": "BLOB",
"CFG": "TEXT",
"MSG": "TEXT",
"SYS_0": "VARCHAR(64)",
"SYS_1": "VARCHAR(64)",
"INDEX": "idx_TS_DT(TS_DT)"
},
"config": {
"id": "INT(11) AUTO_INCREMENT PRIMARY KEY",
"TS_DT": "INT(11)",
"TS_RT": "VARCHAR(64)",
"C_1_CFG_A1_FLOWER": "VARCHAR(64)",
"C_1_CFG_LOC_RTMPDLY": "VARCHAR(64)",
"INDEX": "idx_TS_DT(TS_DT)"
}
}
How much pressure is running in the supply lines?