Skip to content

📦 Software Dependencies

This project relies on a set of software tools and libraries to ensure proper functionality, development, and documentation. The following sections provide an overview of these dependencies.

🔧 Development Tools

  • PlatformIO: An open-source ecosystem for IoT development. It provides a command-line interface (CLI) and a VSCode extension for a seamless development experience.
  • Task: A task runner and build tool that automates development and build tasks. See the project's Taskfile.yml for available commands.
  • Docker: Used to create a consistent and reproducible development environment for the documentation server.
  • Renovate: A tool for automated dependency updates, ensuring that the project's dependencies are always up-to-date.
  • SOPS: A tool for managing secrets, allowing for the encryption and decryption of sensitive information.
Task List
task: Available tasks for this project:
* build:                 Build the firmware using PlatformIO.
* clean:                 Clean the build files.
* decrypt:               Decrypt secret and environment files using sops.
* default:               List all available tasks.
* encrypt:               Encrypt secret and environment files using sops.
* export:                Export the list of available tasks to task-list.txt.
* flash:                 Flash the latest firmware to the device using the flash.sh script.
* ftp:                   Connect to the device using an interactive FTP client.
* fullclean:             Perform a deep clean of all build and dependency files.
* get:                   Get device status via API call (unauthenticated).
* geta:                  Get device status via API call (authenticated).
* getap:                 Get device status via API call and prettify it (authenticated).
* getp:                  Get device status via API call and prettyify it (unauthenticated).
* gflash:                Run Gemini with the gemini-2.5-flash model.
* gpro:                  Run Gemini with the gemini-2.5-pro model.
* init:                  Initialize the project by creating secret and environment files from templates.
* list-devices:          List all connected serial devices.
* monitor:               Monitor the device's serial output.
* mqtt-disable:          Disable the MQTT client via API call (unauthenticated).
* mqtt-disable-a:        Disable the MQTT client via API call (authenticated).
* mqtt-enable:           Enable the MQTT client via API call (unauthenticated).
* mqtt-enable-a:         Enable the MQTT client via API call (authenticated).
* mqtt-toggle:           Toggle the MQTT client via API call (unauthenticated).
* mqtt-toggle-a:         Toggle the MQTT client via API call (authenticated).
* ping:                  Ping the device to check network connectivity.
* prune:                 Prune unused PlatformIO files to save space.
* reset:                 Reset the dongle by flashing it with the default factory firmware.
* restart:               Restart the device via API call.
* serve:                 Serve the documentation locally using Docker.
* set-brightness:        Set brightness level
* sftp:                  Switch the device to FTP mode via API call.
* smsc:                  Switch the device to USB Mass Storage (MSC) mode via API call.
* sync:                  Synchronize local files to the device via FTP using the sync.sh script.
* update-packages:       Update all project dependencies to their latest versions.
* upload:                Upload the compiled firmware to the device.
* uploadm:               Upload the firmware and immediately start monitoring the serial output.
* verbose-build:         Build the project with verbose output for debugging.

📚 Libraries

📜 Languages and Frameworks

  • C++: The primary language used for the firmware development.
  • Python: Used for scripting and automation tasks.
  • Shell Script: Used for various automation and build tasks.
  • MkDocs: A static site generator used for creating the project's documentation.

🚀 CI/CD

  • GitHub Actions: Used for automating the build, test, and release process.

🔗 References