From e85d616da780fa4c29ff2f286812666c696b1068 Mon Sep 17 00:00:00 2001 From: Markus Zehnder Date: Fri, 22 Aug 2025 13:41:31 +0200 Subject: [PATCH] feat: simple sensor panels with file-based data source (#7) * add simulation mode for easier development * improved sensor file watcher, poc cpu & mem usage Trigger file read by rename event * feat: system information sensor tool Gather various sensor values with the sysinfo crate: https://github.com/GuillaumeGomez/sysinfo Values can be written to a sensor source file with the `--out` cmd line option for the `asterctl` tool. * ci: build sysinfo tool and include in build artifact * feat: support integerDigits, decimalDigits sensor value format options * docs: update documentation Closes #6 --- .github/workflows/build.yml | 11 +- .idea/runConfigurations/Run_demo.xml | 2 +- .idea/runConfigurations/Run_demo_DEV.xml | 20 + ..._release_demo.xml => Run_sensor_panel.xml} | 6 +- .../Run_sensor_panel_DEV.xml | 20 + .idea/runConfigurations/Run_sysinfo.xml | 20 + .../runConfigurations/Run_sysinfo_repeat.xml | 20 + .idea/runConfigurations/clippy_sysinfo.xml | 19 + .idea/vcs.xml | 7 + CHANGELOG.md | 3 + Cargo.lock | 663 ++- Cargo.toml | 22 +- Monitor3.json | 3767 ----------------- README.md | 22 +- cfg/default_1_hdd.jpg | Bin 0 -> 229398 bytes cfg/default_1_index.jpg | Bin 0 -> 176289 bytes cfg/monitor.json | 948 +++++ cfg/sensors/values.txt | 34 + doc/img/sensor_panel-01.png | Bin 0 -> 224419 bytes doc/img/sensor_panel-02.png | Bin 0 -> 265132 bytes doc/sensor_panels.md | 206 + fonts/HarmonyOS_Sans_SC.LICENSE | 26 + fonts/HarmonyOS_Sans_SC_Bold.ttf | Bin 0 -> 8158996 bytes linux/scripts/cpu_usage.sh | 73 + linux/scripts/mem_usage.sh | 84 + src/bin/sysinfo.rs | 765 ++++ src/cfg.rs | 133 +- src/display.rs | 20 +- src/dummy_serialport.rs | 158 + src/format_value.rs | 200 + src/main.rs | 318 +- src/sensors.rs | 169 + 32 files changed, 3803 insertions(+), 3933 deletions(-) create mode 100644 .idea/runConfigurations/Run_demo_DEV.xml rename .idea/runConfigurations/{Run_release_demo.xml => Run_sensor_panel.xml} (74%) create mode 100644 .idea/runConfigurations/Run_sensor_panel_DEV.xml create mode 100644 .idea/runConfigurations/Run_sysinfo.xml create mode 100644 .idea/runConfigurations/Run_sysinfo_repeat.xml create mode 100644 .idea/runConfigurations/clippy_sysinfo.xml delete mode 100644 Monitor3.json create mode 100644 cfg/default_1_hdd.jpg create mode 100644 cfg/default_1_index.jpg create mode 100644 cfg/monitor.json create mode 100644 cfg/sensors/values.txt create mode 100644 doc/img/sensor_panel-01.png create mode 100644 doc/img/sensor_panel-02.png create mode 100644 doc/sensor_panels.md create mode 100644 fonts/HarmonyOS_Sans_SC.LICENSE create mode 100644 fonts/HarmonyOS_Sans_SC_Bold.ttf create mode 100755 linux/scripts/cpu_usage.sh create mode 100755 linux/scripts/mem_usage.sh create mode 100644 src/bin/sysinfo.rs create mode 100644 src/dummy_serialport.rs create mode 100644 src/format_value.rs create mode 100644 src/sensors.rs diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 9a3e14c..7fedd29 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -25,7 +25,7 @@ permissions: jobs: lint: - name: Clippy & Rustfmt + name: Clippy, Rustfmt, Tests runs-on: ubuntu-24.04 steps: - name: Checkout repository @@ -54,9 +54,13 @@ jobs: - name: Run rustfmt run: cargo fmt --all -- --check + - name: Unit tests + run: cargo test + build: name: Linux-x64 build needs: lint + # using an older Ubuntu release on purpose to link against an older libc version for greater compatibility runs-on: ubuntu-22.04 steps: - name: Checkout repository @@ -93,7 +97,7 @@ jobs: - name: Release build shell: bash - run: cargo build --release + run: cargo build --release --bins --all-features # Archive is required to preserve file permissions and re-used for release uploads - name: Create upload artifact @@ -102,8 +106,9 @@ jobs: ls -la target/release mkdir -p ${GITHUB_WORKSPACE}/${{env.BIN_OUTPUT_PATH }} cp target/release/${{ env.APP_NAME }} ${GITHUB_WORKSPACE}/${{ env.BIN_OUTPUT_PATH }} + cp target/release/sysinfo ${GITHUB_WORKSPACE}/${{ env.BIN_OUTPUT_PATH }} cp linux/*.service ${GITHUB_WORKSPACE}/${{ env.BIN_OUTPUT_PATH }} - cp Monitor3.json ${GITHUB_WORKSPACE}/${{ env.BIN_OUTPUT_PATH }} + cp -r cfg ${GITHUB_WORKSPACE}/${{ env.BIN_OUTPUT_PATH }} echo "VERSION=${{ env.APP_VERSION }}" > ${GITHUB_WORKSPACE}/${{ env.BIN_OUTPUT_PATH }}/version.txt echo "TIMESTAMP=$(date +"%Y%m%d_%H%M%S")" >> ${GITHUB_WORKSPACE}/${{ env.BIN_OUTPUT_PATH }}/version.txt tar czvf ${{ env.ARTIFACT_NAME }}.tar.gz -C ${GITHUB_WORKSPACE}/${{ env.BIN_OUTPUT_PATH }} . diff --git a/.idea/runConfigurations/Run_demo.xml b/.idea/runConfigurations/Run_demo.xml index 1a7cfcd..6eeb8af 100644 --- a/.idea/runConfigurations/Run_demo.xml +++ b/.idea/runConfigurations/Run_demo.xml @@ -1,7 +1,7 @@