Pioreactor

Latest version: v24.12.10

Safety actively analyzes 693883 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 1 of 17

24.12.10

- Hotfix for UI settings bug

24.12.5

Highlights
- New export datasets improvements!
- new export dataset API. The datasets on the Export Data UI page are now provided via YAML files on the leader's disk. This makes it easy to add new datasets to that UI to be exported. These YAML files can be added to `~/.pioreactor/exportable_datasets`.
- new Export Data page in the UI. Preview datasets before you export them, and new partition options for the exported CSVs.
- Plugins can now add datasets to the Export Data page. The plugin's datasets are automatically added to the Export Data page when installed.
- Stirring can now pause itself during an OD reading. This is accomplished by "dodging OD readings". You can activate this feature by setting the `enable_dodging_od` to `True` in config.ini, under `[stirring.config]`. The replaces an older, less reliable plugin that was on our forums. Users have wanted this feature to have a very fast RPM between OD measurements (to get more aeration), and avoid noisy OD measurements. There's no reason to believe this will decrease the noise if using a "moderate" RPM though.

Enhancements
- improvements to Dodging background job code, including the ability to initialize the class based on dodging or not.
- better error handling for failed OD blank action.
- better button state management in the UI.
- a job YAMLs' published_settings can have a new field, `editable` (bool), which controls whether it shows up on the Settings dialog or not. (False means it won't show up since it's not editable!). Default is true. This _should_ align with the `published_setting` in Python's job classes.
- you can add IPv4 addresses to the (new) `[cluster.addresses]` section to specify IPs for pioreactors. Example:

[cluster.addresses]
pio01=10.42.0.2
pio02=10.42.0.3


Note that the leader's address is automatically added in our software.
- new installs only: updated RPiOS to version 2024-11-19
- improvements to correlation self-tests

Bug fixes
- Fixed "circulate X" actions in the Manage All dialog in the UI.

Breaking changes
- moved all the temporary caches, which previously where their own sqlite3 dbs in `/tmp/` to `/tmp/local_intermittent_pioreactor_metadata.sqlite`. This shouldn't break anything unless you update _during_ an experiment - don't do that!

24.10.29

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.

24.10.1

Enhancements
- amount of data shown on charts is now a function of the OD sampling rate
- allow for showing more than 16 workers in a chart.

Bug fixes
- Bug fix for "Manage all" that would start activities in all Pioreactors, whether they were in the experiment or not.
- Fix for bug when clicking a legend element it not hiding
- `led_intensity` (i.e. changes to LEDs) now respect whether a worker is active or not.
- Fix bug for UI crashing with "colors" error.
- If a worker is referenced in a profile, but is not part of the current experiment, the actions will not be schedualed for it.

24.9.26

Enhancements
- UI improvements to the experiment select box.
- Better clean up of configs when a worker is removed from the cluster.
- Improved UI loading time

Bug fixes
- only show ipv4 in UI and in avahi aliases.
- fixed experiment profile plugin checks.
- fixed experiment profile display crashing the UI when editing plugins section.

Breaking changes
- `pio clear-cache` renamed to `pio cache clear`
- `pio view-cache` renamed to `pio cache view`
- some more web API changes to endpoints that manage updates
- We no longer use `monitor` to start jobs. This has a slowdown when changing LEDs or starting pumps, unfortunately, but generally better performance elsewhere.
- `watchdog` job has been merged with `monitor`. `watchdog` no longer exists.

24.9.19

Highlights
- Workers now have a webserver on them. This is one of the largest architectural changes to Pioreactor, and lays the foundation for better plugin, version, and calibration cluster management, plus future features.
- As an example, in your browser, you can enter the url: http://some-worker.local/unit_api/jobs/running to see a list of jobs running on a worker.
- Note: there is no interactive user interface for workers, just a web API
- Previous actions that would involve SSHing from leader to a worker are replaced by web requests.

Bug fixes
- fixed an issue where a calibrated OD reading would be mapped to max OD signal if it was too low.
- fixed an issue where the Pioreactor UI would lock up if trying to create a new experiment with an existing name.
- fixed Hours Elapsed not updating in Overview

Breaking changes
- **Lots and lots of web API changes**. You'll want to review them on our docs: https://docs.pioreactor.com/developer-guide/web-ui-api
- We no longer recommend the Raspberry Pi Zero (the original Zero, not the Zero 2.) since supporting a web server + pioreactor functions is too much for a single core.
- `watchdog` is neutered. It used to try to "wake-up" a job, but this was flaky and causing more problems than it solved.
- removed python library dependency `sh`
- APIs that initiate a background task either return with the result, or return a task id that be be looked up at `/unit_api/task_status/`.
- `pios update` now updates the UI too.

Enhancements
- Better MQTT re-connection logic.
- New `Manage Inventory` menu on the Inventory page that can be used for bulk actions.
- `pio update` is a new command to update both the UI and app.
- adding more network logs to `network_info.txt`
- `pios` commands now return quicker since they post to the workers servers and don't wait around. You can view the status of the worker's by using the output from including `--json`.

Page 1 of 17

© 2025 Safety CLI Cybersecurity Inc. All Rights Reserved.