v5.14.0
OpenC3 COSMOS 5.14.0 - Related Telemetry, Cmd/Response Framework, Dynamic Packet Definition, and More
Welcome to OpenC3 COSMOS 5.14.0!
Related Telemetry Items and Screens for Commands
Commands have a new keyword for associating related telemetry items to the command: RELATED_ITEM. This automatically builds a telemetry screen that is shown alongside the command in CmdSender. If you want to get fancy, you can also associate a full custom built telemetry screen with the SCREEN keyword.
Generic Command / Response Protocol
The command response architecture is a command pattern for a lot of different devices, so we took the legacy TEMPLATED protocol and extracted the command response pattern from it into its own CmdResponseProtocol class. Adding this protocol to your Interface will put it into a command/response mode for any commands that have an associated RESPONSE keyword defined.
Dynamic Packet Definition
We've added the ability to dynamically define packets within the COSMOS framework at runtime. This will typically be done by an Accessor or a Processor after receipt of a packet to define its contents for access by our fronted tools.
BucketExplorer Folder Size
BucketExplorer now calculates and displays the size of all files in the currently displayed folder.
New ping endpoints for our API containers
We added a couple new ping endpoints to our API containers that can be used for health/aliveness checks.
PROCESSORs now only run in the Decom microservice
Previous processors were being run both in the interface and in decom (twice total). Processors can now be used reliably run once on each packet reception, so they can safely perform side effects if needed. This is a potentially breaking change if the multiple execution was expected in previous versions.
ScriptRunner Performance Greatly Enhanced
ScriptRunner was updated to process script events in batches, rather than one at a time. This greatly improved ScriptRunner performance and should keep it from ever falling behind when flying through lots of lines that would have to be highlighted one by one.
Important Bug Fixes
- Accessors now enforce data type on read/write
- wait() fixed in Python scripts
- Continue even if there are errors in local_init in the init container. This removes many use cases where the init container can get stuck looping, and will allow for manual recovery by users.
- Fixed diff logic on plugin upgrade
- Fixed Python Tcp/IP Client Interface
- Made tlm item cache default to no caching, unless you specifically want it
- Fixed a bug where Interface#disconnect would not be called if an exception was raised during Interface#connect
- Fixed BucketExplorer routes with special characters
- Fixed writing Python strings without first converting them to bytes type
- Fixed loading TlmGrapher configurations with more than one graph specified
- Support upload/download from TableManager in Python
- Fixed a bug with the rux-status component handling of fatal
- Updated DataExtractor to handle receiving null values
All Pull Requests in this Release
- Bump github/codeql-action from 2 to 3 by @dependabot in #992
- Bump actions/upload-artifact from 3 to 4 by @dependabot in #993
- Tool Screenshots for AstroUX by @jmthomas in #996
- update logging doc. Add license discussion. by @ryanmelt in #1016
- Create ping endpoint in cmd-tlm and scripts api by @jmthomas in #1009
- Add folder size by @jmthomas in #1000
- Make json, cbor, xml, html enforce data types by @jmthomas in #1006
- Move openc3_script_sleep and fix wait() in python by @jmthomas in #1004
- New cmd keywords for related telemetry and remove legacy snmp by @ryanmelt in #1005
- continue if local init fails by @ryanmelt in #1021
- upcase microservice target name by @ryanmelt in #1020
- Only run processors in decom microservice by @ryanmelt in #1019
- Add TCPIP keepalive options by @ryanmelt in #1018
- Add Generic Cmd Response Protocol and Template Accessor by @ryanmelt in #1017
- Add warning about unmerged diffs and fix diff logic by @jmthomas in #1027
- Fix python tpcip client connection by @jmthomas in #1034
- Bump follow-redirects from 1.15.2 to 1.15.4 in /openc3-cosmos-init/plugins/openc3-tool-base by @dependabot in #1028
- Bump follow-redirects from 1.15.2 to 1.15.4 in /openc3-cosmos-init/plugins by @dependabot in #1029
- Bump follow-redirects from 1.15.2 to 1.15.4 in /openc3/templates/tool_react by @dependabot in #1031
- Bump follow-redirects from 1.15.3 to 1.15.4 in /docs.openc3.com by @dependabot in #1030
- Default to no tlm cache by @ryanmelt in #1037
- Process ScriptRunner events in batches by @ryanmelt in #1038
- Dependencies by @jmthomas in #1035
- Ensure disconnect called at least once on interface. by @ryanmelt in #1039
- Fix bucket explorer route by @jmthomas in #1047
- Write python strings by @jmthomas in #1041
- Fix Grapher load config by @jmthomas in #1046
- Allow python upload/download in TableManager by @jmthomas in #1052
- Map fatal to critical by @jmthomas in #1050
- Add requirements.txt to python gems by @jmthomas in #1061
- Add Script Runner to logger source. Fix docs by @jmthomas in #1057
- Data Extractor handle null by @ryanmelt in #1063
- Test command endianness by @jmthomas in #1051
- Handle 404 errors in Script Runner by @jmthomas in #1064
- Add queued store and display active users by @jmthomas in #1045
- Dynamic target packet definition creation support. by @ryanmelt in #1048
Prerequisites:
Docker - Running OpenC3 requires a working Docker or Podman installation. Typically Docker Desktop on Windows / Mac. Plain Docker or Podman also works on linux. We actively develop and run with Docker Desktop on Mac/Windows, and Linux on Raspberry Pi, so if you have any issues on another platform, please let us know by submitting a ticket!
Minimum Resources allocated to Docker: 4GB RAM, 1 CPU, 80GB Disk
Recommended Resources allocated to Docker: 16GB RAM, 2+ CPUs, 100GB Disk
Also requires docker compose version 1.27+
To Run:
- git clone https://github.com/openc3/cosmos-project.git cosmos-myproject
- cd cosmos-myproject
- Run Linux/Mac: ./openc3.sh run
- Run Windows: openc3.bat run
- Connect a web browser to http://localhost:2900/
- Have fun running OpenC3 COSMOS!
Please see our documentation at https://openc3.com
Try it out and let us know what you think! Please submit any issues as Github tickets, or any generic feedback to [email protected].
Thanks!
Full Changelog: Changelog