Enhancements
- `dosing_automation.vial_volume` replaced with `dosing_automation.liquid_volume`. You can see the values by watching `pio mqtt -t "pioreactor/+/+/dosing_automation/liquid_volume"` after starting a dosing automation.
- Adding a SQL table for tracking `liquid_volume`.
- Because we are now storing `liquid_volume` in the database, you can add charts in the UI that track the volume over time:
1. Add the following yaml contents to `~/.pioreactor/plugins/ui/contrib/charts/liquid_volume.yaml`: https://gist.github.com/CamDavidsonPilon/95eef30189101da69f706d02ef28d972
2. In your config.ini, under `ui.overview.charts`, add the line `liquid_volume=1`.
- New dataset exports from the Export data page in the UI: calibrations and liquid-volumes.
- Added a "partition by unit" option to the Export data page that will create a csv per Pioreactor in the export, instead of grouping them all together.
- od calibrations can use the `--json-file` to edit calibration polynomial coefficients. In the json file, specify `curve_data_` fields with values of the curve's polynomial coefficients (leading term first), and set `curve_type` as `"poly"`. The routine will begin with that calibration curve displayed.
- faster UI response times when starting jobs.
- faster syncing configs.
- faster copying files across cluster via `pio cp`.
- faster clean up of jobs using PWMs.
- new installs only: updated base RPiOS to 2024-10-22.
- new database table in `/tmp/local_intermittent_pioreactor_metadata.sqlite` called `pio_job_published_settings` that stores the published settings for each job. This powers the next API endpoints:
- New API endpoints for getting the current settings of a _running_ job:
- Per pioreactor:
- GET: `/unit_api/jobs/settings/job_name/<job_name>`
- GET: `/unit_api/jobs/settings/job_name/<job_name>/setting/<setting>`
- Across the cluster:
- GET: `/api/jobs/settings/job_name/<job_name>/setting/<setting>`
- GET: `/api/jobs/settings/job_name/<job_name>/experiments/<experiment>`
- GET: `/api/jobs/settings/job_name/<job_name>/experiments/<experiment>/setting/<setting>`
- GET: `/api/jobs/settings/workers/<pioreactor_unit>/job_name/<job_name>`
- GET: `/api/jobs/settings/workers/<pioreactor_unit>/job_name/<job_name>/setting/<setting>`
Ex: query the temperature of a Pioreactor: `curl http://pio01.local/unit_api/jobs/settings/job_name/temperature_automation/setting/temperature`
Breaking changes
- `pio kill --name x` is now `pio kill --job-name x`
- removed publishing published_settings metadata to mqtt. Ex `$properties`, `$settable`, `$unit`, `$datatype` are no longer being sent mqtt. This was never used, and just a bandwidth suck.
Bug fixes
- fix for OD calibration graph showing "two lines" in the terminal display
- fix for updating over the internet when a Pioreactor is on a `A.devX` or `B.rcY` release
- `pio kill --all-jobs` will no longer kill long-running jobs from plugins (specifically, `logs2x` jobs.)
- updating the UI software won't prematurely stop any currently running activities
- correct ethernet mac address on RPi5s
- We weren't passing all the OS environment variables when jobs were started from the UI. This is fixed now.
- Fixed circulate media / alt. media in the UI.
- Fixed manual dosing updates in the UI.