{ "mac_address": "10:52:1c:51:0e:84",? The device knows this anyway "name": "Industrial",? This is managed at the server is it not? "pcb_version": "4.0",? Why does the firmware need to know this? "analogue_ports": 4,? Same as above, we will only push the correct number of sensor settings to the board. "digital_ports": 2,? "" "adc": "ADC128S022",? Won't the below adc settings take care of this? "adc_miso": 19, "adc_mosi": 23, "adc_clk": 18, "adc_cs": 5, "upload_interval": 15, "address": "mqtt.senseright.com.au", "port": 1884, "ota_path": null, "mqtt_secondary_address": "mqtt.senseright.com.au", "mqtt_secondary_port": 1884, "sensors": [ ! We need to sit down and define what settings and naming we are using for all our current sensors so this is fully defined. { "port_type": "Analogue", ! This will define how and what settings we look for below. "port": 1, "sensor_type": "0-5m pressure transducer", ! This should be a lot shorter as we will use this for control flow. For example "Pressure1", we would just keep a list of what key means what device. "sensor_address": null, "read_interval": 15, "communication_type": "4-20mA", ? Does this change how we should read the device "daughterboard": "4-20", ? "" "pcb_version": "1.0" ? "" }, { "port_type": "Analogue", "port": 2, "sensor_type": "0-5m pressure transducer", "sensor_address": null, "read_interval": 15, "communication_type": "4-20mA", "daughterboard": "4-20", "pcb_version": "1.0" } ] }