Developer Topics
These are code related, or very deep topics.
Adding a New Sensor
The list of sensors is maintained in the dashboard configuration file: dashboard/_data/config.json.
The DS18x20 sensors utilize a one-wire connection, so to differentiate between sensors, they all have unique identifiers (ROMs).
We keep a hex representation of that ID in order to decide what each sensor is currently monitoring.
To add a new sensor to the list, you need to generate this hex ROM code.
If you are using the custom built MicroPython firmware, you should jump the developer mode pin to ground so the device can be accessed.
Plug the device into the computer and open Thonny.
You should be able to access the REPL shell at the bottom of the program.
Execute this code in that shell, or copy the scripts/print_rom.py file to the device and run it:
import machine, onewire, ds18x20
print([x.hex() for x in ds18x20.DS18X20(onewire.OneWire(machine.Pin(28))).scan()])
This will print the ROMs for all connected devices (assuming the sensors are connected at pin GP28). Once these are written down:
Add it to the dashboard/_data/config.json file in both the rom hex map and the sensor map, with an “active” key probably set to false initially
Add a new empty file on the sensor_data branch at data/abcRomHexCode-01-DescriptiveSensorName/_
Forking the Project
The process should be pretty simple to make your own suite of sensors and dashboard.
Fork the repo
Create a sensor bot, generate a GH key for it with write access to the forked repo
Adjust default wifi networks as desired
Choose a release and build your own device
Building the Custom Firmware
Check out the micropython repo, install tools, add the required files inside ports/rp2/modules, and build it:
git clone git@github.com:micropython/micropythongit submodule update --init --recursivecopy
main.pyintoports/rp2/modulescreate
ports/rp2/modules/firmwaredirectorycopy all supporting files into that firmware directory
sudo apt install gcc-arm-none-eabimake BOARD=RPI_PICO_Wnew firmware will be at
ports/rp2/modules/build-RPI_PICO_W/firmware.uf2
Code Documentation
Controller Board Management:
Runtime Configuration and Data:
Main Entry Points:
Display and Screen Classes:
Primary Sensor Logic: