Skip to content

examples: Replace test script with practical examples for wsen-pads.#228

Merged
nedseb merged 26 commits intomainfrom
wsen-pads-extand-example
Mar 24, 2026
Merged

examples: Replace test script with practical examples for wsen-pads.#228
nedseb merged 26 commits intomainfrom
wsen-pads-extand-example

Conversation

@Charly-sketch
Copy link
Copy Markdown
Contributor

@Charly-sketch Charly-sketch commented Mar 24, 2026

Summary

Expand wsen-pads examples by replacing the test suite with practical usage examples.
Closes #188


Changes

  • Removed test.py from examples/ (test suite, not a usage example)
  • Added weather_station.py — periodic measurements with CSV logging using daplink_flash
  • Added pressure_trend.py — track pressure evolution (rising/falling/stable)
  • Added floor_detector.py — detect floor changes based on altitude variations
  • Added threshold_alert.py — trigger alert when pressure crosses a threshold
  • Added temp_pressure_display.py — formatted output with ASCII bar graphs
  • Added altitude_calibration.py — compute sea-level pressure from known altitude and display calibrated altitude
  • Verified all removed test logic is covered in tests/scenarios/

Checklist

  • test.py removed from examples
  • 6 new practical examples added
  • Test coverage verified in tests/scenarios/
  • ruff check passes
  • Tested with mpremote mount lib/wsen-pads run lib/wsen-pads/examples/<name>.py
  • README updated (if adding/changing public API)
  • Tested on hardware

@Charly-sketch Charly-sketch changed the title WIP | examples: Replace test script with practical examples for wsen-pads. examples: Replace test script with practical examples for wsen-pads. Mar 24, 2026
@Charly-sketch Charly-sketch requested a review from nedseb March 24, 2026 11:00
@Charly-sketch Charly-sketch marked this pull request as ready for review March 24, 2026 11:00
@nedseb nedseb requested a review from Copilot March 24, 2026 12:28
@nedseb nedseb added the test label Mar 24, 2026
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR updates the wsen-pads package examples to focus on practical usage instead of embedding a PASS/FAIL-style test script in examples/.

Changes:

  • Removed lib/wsen-pads/examples/test.py (test-suite-like script).
  • Added multiple new practical example scripts (logging, alerts, trend tracking, calibration, display, floor detection).
  • Cleaned up existing examples by removing unused Pin imports and updated the wsen-pads README examples list.

Reviewed changes

Copilot reviewed 12 out of 12 changed files in this pull request and generated 8 comments.

Show a summary per file
File Description
lib/wsen-pads/examples/weather_station.py New example for periodic readings + DAPLink flash CSV logging.
lib/wsen-pads/examples/treshold_alert.py New pressure threshold alert example (note: filename typo).
lib/wsen-pads/examples/temp_pressure_display.py New formatted display example with ASCII bar graphs.
lib/wsen-pads/examples/pressure_trend.py New example to detect rising/falling/stable pressure trend.
lib/wsen-pads/examples/floor_detector.py New example to estimate “floor changes” from altitude deltas.
lib/wsen-pads/examples/altitude_calibration.py New example to compute sea-level pressure from known altitude and display calibrated altitude.
lib/wsen-pads/examples/test.py Removed non-example test script from examples directory.
lib/wsen-pads/examples/basic_reader.py Removed unused Pin import.
lib/wsen-pads/examples/continuous_reader.py Removed unused Pin import.
lib/wsen-pads/examples/one_shot_reader.py Removed unused Pin import.
lib/wsen-pads/examples/altitude.py Removed unused Pin import.
lib/wsen-pads/README.md Updated examples table to reflect new example set.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread lib/wsen-pads/README.md Outdated
Comment thread lib/wsen-pads/README.md
Comment thread lib/wsen-pads/examples/weather_station.py
Comment thread lib/wsen-pads/examples/weather_station.py Outdated
Comment thread lib/wsen-pads/examples/weather_station.py Outdated
Comment thread lib/wsen-pads/examples/floor_detector.py Outdated
Comment thread lib/wsen-pads/examples/temp_pressure_display.py Outdated
Comment thread lib/wsen-pads/examples/threshold_alert.py
Copy link
Copy Markdown
Contributor

@nedseb nedseb left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Bon travail, les 6 exemples demandés sont bien là et test.py est supprimé. Cependant, plusieurs problèmes doivent être corrigés avant de merger.

Bugs à corriger

1. treshold_alert.py — faute dans le nom de fichier

Le fichier s'appelle treshold_alert.py mais l'issue demande threshold_alert.py. Renommer le fichier et mettre à jour le README.

2. weather_station.py — 3 problèmes

  • Ligne 17 : set_filename("weather_station", "CSV") — le nom fait 15 caractères mais le format 8.3 autorise max 8. Il sera tronqué silencieusement. Utiliser un nom court comme "WEATHER" ou "WSTATION".
  • Ligne 30 : f"{temperature};{pressure}" — les f-strings ne sont pas supportées sur tous les ports MicroPython. Utiliser .format() comme dans tous les autres exemples du repo.
  • Ligne 32 : sleep(0.1) — le docstring dit "every 5s" mais le code fait 100ms. Mettre sleep(5) pour correspondre à la description.

3. floor_detector.py — valeur de debug

Ligne 16 : METERS_PER_FLOOR = 0.1 #3.0 — c'est une valeur de test, pas une valeur réaliste. Remettre à 3.0 (hauteur d'un étage).

4. temp_pressure_display.py — plage pression irréaliste

Lignes 12-13 : PRESS_MIN = 1020.0 / PRESS_MAX = 1023.0 — plage de 3 hPa, le bar graph sera toujours plein ou toujours vide dans la plupart des conditions. Utiliser une plage réaliste comme 960.0 à 1060.0.

5. treshold_alert.py — seuil irréaliste

Ligne 10 : PRESSURE_ALERT_HPA = 1021.8 — l'issue demandait un seuil de détection d'orage (< 1000 hPa). 1021.8 hPa est une pression normale, l'alerte se déclencherait tout le temps. Utiliser 1000.0 comme décrit dans l'issue.

Checklist non faite

L'issue demandait explicitement :

Verify that all test cases from the removed test file(s) are covered in tests/scenarios/. If any are missing, add them as YAML scenarios before deleting the file.

Peux-tu vérifier que les tests suivants de l'ancien test.py sont bien couverts dans tests/scenarios/wsen_pads.yaml ?

  • Device ID check
  • Default register config (BDU, IF_ADD_INC)
  • Soft reset + device ID after
  • Reboot + device ID after
  • One-shot read (pressure + temperature in valid range)
  • Continuous mode (1 Hz et 10 Hz)
  • STATUS helper methods (pressure_ready, temperature_ready, data_ready)

Description PR

  • Closes #XXX est resté dans le template au lieu d'être remplacé (le bon Closes #188 est au début, mais le placeholder est toujours visible)

Remarques mineures

  • La branche s'appelle wsen-pads-extand-example (typo "extand" → "expand") — ce n'est pas bloquant mais pour la prochaine fois, attention au nommage

- Compare avererage pressure to average pressure to detect trend
- Add a example that reccord weather condition and save them in a CVS file.
- Sleeping time put to 5s
- Shorter CSV file name
Add missing test scenarios to improve robustness and cover critical driver behaviors:

Initialization & identification:
- Add test for device absence on I2C bus (WSENPADSDeviceNotFound)
- Add test for invalid DEVICE_ID (WSENPADSInvalidDevice)
- Add test for boot timeout when BOOT_ON never clears (WSENPADSTimeout)

Continuous mode validation:
- Add tests ensuring set_continuous() rejects invalid ODR values
- Add tests rejecting low-noise mode at unsupported ODR (100 Hz, 200 Hz)

Status helpers:
- Add tests for pressure_ready(), temperature_ready(), and data_ready()
- Validate behavior for all STATUS combinations (none, pressure only, temperature only, both)

Reset / reboot behavior:
- Add tests ensuring soft_reset() and reboot() reapply default configuration
  (BDU enabled, power-down mode, auto-increment enabled, low-noise disabled)

Calibration:
- Add test ensuring calibrate_temperature() rejects identical measured points

These tests improve coverage of error paths, state transitions, and public helper methods,
ensuring better reliability of the driver in both mock and hardware contexts.
@Charly-sketch Charly-sketch force-pushed the wsen-pads-extand-example branch from ee79679 to da452d8 Compare March 24, 2026 14:02
@Charly-sketch
Copy link
Copy Markdown
Contributor Author

  1. treshold_alert.py — faute dans le nom de fichier
    Le fichier s'appelle treshold_alert.py mais l'issue demande threshold_alert.py. Renommer le fichier et mettre à jour le README.
  1. weather_station.py — 3 problèmes
    Ligne 17 : set_filename("weather_station", "CSV") — le nom fait 15 caractères mais le format 8.3 autorise max 8. Il sera tronqué silencieusement. Utiliser un nom court comme "WEATHER" ou "WSTATION".
    Ligne 30 : f"{temperature};{pressure}" — les f-strings ne sont pas supportées sur tous les ports MicroPython. Utiliser .format() comme dans tous les autres exemples du repo.
    Ligne 32 : sleep(0.1) — le docstring dit "every 5s" mais le code fait 100ms. Mettre sleep(5) pour correspondre à la description.
    -fix(wsen-pads): fix weather_station example
  1. floor_detector.py — valeur de debug
    Ligne 16 : METERS_PER_FLOOR = 0.1 wsen-pads: Add pressure sensor driver. #3.0 — c'est une valeur de test, pas une valeur réaliste. Remettre à 3.0 (hauteur d'un étage).
  1. temp_pressure_display.py — plage pression irréaliste
    Lignes 12-13 : PRESS_MIN = 1020.0 / PRESS_MAX = 1023.0 — plage de 3 hPa, le bar graph sera toujours plein ou toujours vide dans la plupart des conditions. Utiliser une plage réaliste comme 960.0 à 1060.0.
  1. treshold_alert.py — seuil irréaliste
    Ligne 10 : PRESSURE_ALERT_HPA = 1021.8 — l'issue demandait un seuil de détection d'orage (< 1000 hPa). 1021.8 hPa est une pression normale, l'alerte se déclencherait tout le temps. Utiliser 1000.0 comme décrit dans l'issue.

@nedseb
Copy link
Copy Markdown
Contributor

nedseb commented Mar 24, 2026

Bon travail sur les corrections, et les 18 nouveaux scénarios de test sont bien faits (init, continuous, status, reset, calibration — tout passe).

La présentation commit-par-commit est une bonne habitude. Pour la prochaine fois, ajoute une phrase résumant ce qui a été fait pour chaque point (ex: "Corrigé : filename réduit à 8 chars pour respecter le format 8.3") plutôt que juste le lien vers le commit — ça permet de comprendre sans cliquer.

Il reste 2 corrections :

1. weather_station.py ligne 31 — la f-string est encore là :

flash.write_line(f"{temperature:.1f};{pressure:.1f}")

Doit être remplacé par :

flash.write_line("{:.1f};{:.1f}".format(temperature, pressure))

Les f-strings ne sont pas supportées sur tous les ports MicroPython.

2. floor_detector.pyMETERS_PER_FLOOR = 0.3 au lieu de 3.0. Un étage fait ~3 mètres, pas 30 centimètres.

Je m'en occupe et je ferme l'issue.

@nedseb nedseb merged commit 17508d1 into main Mar 24, 2026
3 checks passed
@nedseb nedseb deleted the wsen-pads-extand-example branch March 24, 2026 15:40
@semantic-release-updater
Copy link
Copy Markdown

🎉 This PR is included in version 0.0.2 🎉

The release is available on GitHub release

Your semantic-release bot 📦🚀

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

examples: Replace test script with practical examples for wsen-pads.

3 participants