123 lines
3.1 KiB
Python
Executable File
123 lines
3.1 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
# A tool to generate that part of config.json that deals with pages and fields.
|
|
|
|
import json
|
|
|
|
# List of all pages and the number of parameters they expect.
|
|
no_of_fields_per_page = {
|
|
"ApparentWind": 0,
|
|
"XTETrack": 0,
|
|
"Battery2": 0,
|
|
"Battery": 0,
|
|
"BME280": 0,
|
|
"Clock": 0,
|
|
"DST810": 0,
|
|
"Fluid": 0,
|
|
"FourValues2": 4,
|
|
"FourValues": 4,
|
|
"Generator": 0,
|
|
"KeelPosition": 0,
|
|
"OneValue": 1,
|
|
"RollPitch": 2,
|
|
"RudderPosition": 0,
|
|
"Solar": 0,
|
|
"ThreeValues": 3,
|
|
"TwoValues": 2,
|
|
"Voltage": 0,
|
|
"White": 0,
|
|
"WindRose": 0,
|
|
"WindRoseFlex": 6,
|
|
}
|
|
|
|
# No changes needed beyond this point
|
|
# max number of pages supported by OBP60
|
|
no_of_pages = 10
|
|
# Default selection for each page
|
|
default_pages = [
|
|
"Voltage",
|
|
"WindRose",
|
|
"OneValue",
|
|
"TwoValues",
|
|
"ThreeValues",
|
|
"FourValues",
|
|
"FourValues2",
|
|
"Clock",
|
|
"RollPitch",
|
|
"Battery2",
|
|
]
|
|
numbers = [
|
|
"one",
|
|
"two",
|
|
"three",
|
|
"four",
|
|
"five",
|
|
"six",
|
|
"seven",
|
|
"eight",
|
|
"nine",
|
|
"ten",
|
|
]
|
|
pages = sorted(no_of_fields_per_page.keys())
|
|
max_no_of_fields_per_page = max(no_of_fields_per_page.values())
|
|
|
|
output = []
|
|
|
|
for page_no in range(1, no_of_pages + 1):
|
|
page_data = {
|
|
"name": f"page{page_no}type",
|
|
"label": "Type",
|
|
"type": "list",
|
|
"default": default_pages[page_no - 1],
|
|
"description": f"Type of page for page {page_no}",
|
|
"list": pages,
|
|
"category": f"OBP60 Page {page_no}",
|
|
"capabilities": {"obp60": "true"},
|
|
"condition": [{"visiblePages": vp} for vp in range(page_no, no_of_pages + 1)],
|
|
#"fields": [],
|
|
}
|
|
output.append(page_data)
|
|
|
|
for field_no in range(1, max_no_of_fields_per_page + 1):
|
|
field_data = {
|
|
"name": f"page{page_no}value{field_no}",
|
|
"label": f"Field {field_no}",
|
|
"type": "boatData",
|
|
"default": "",
|
|
"description": f"The display for field {numbers[field_no - 1]}",
|
|
"category": f"OBP60 Page {page_no}",
|
|
"capabilities": {"obp60": "true"},
|
|
"condition": [
|
|
{f"page{page_no}type": page}
|
|
for page in pages
|
|
if no_of_fields_per_page[page] >= field_no
|
|
],
|
|
}
|
|
output.append(field_data)
|
|
|
|
fluid_data ={
|
|
"name": f"page{page_no}fluid",
|
|
"label": "Fluid type",
|
|
"type": "list",
|
|
"default": "0",
|
|
"list": [
|
|
{"l":"Fuel (0)","v":"0"},
|
|
{"l":"Water (1)","v":"1"},
|
|
{"l":"Gray Water (2)","v":"2"},
|
|
{"l":"Live Well (3)","v":"3"},
|
|
{"l":"Oil (4)","v":"4"},
|
|
{"l":"Black Water (5)","v":"5"},
|
|
{"l":"Fuel Gasoline (6)","v":"6"}
|
|
],
|
|
"description": "Fluid type in tank",
|
|
"category": f"OBP60 Page {page_no}",
|
|
"capabilities": {
|
|
"obp60":"true"
|
|
},
|
|
"condition":[{f"page{page_no}type":"Fluid"}]
|
|
}
|
|
output.append(fluid_data)
|
|
|
|
json_output = json.dumps(output, indent=4)
|
|
# print omitting first and last line containing [ ] of JSON array
|
|
print(json_output[1:-1])
|
|
# print(",") |