examples: Replace test script with practical examples for wsen-pads.#228
examples: Replace test script with practical examples for wsen-pads.#228
Conversation
There was a problem hiding this comment.
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
Pinimports and updated thewsen-padsREADME 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.
nedseb
left a comment
There was a problem hiding this comment.
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. Mettresleep(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 #XXXest resté dans le template au lieu d'être remplacé (le bonCloses #188est 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.
ee79679 to
da452d8
Compare
|
|
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. 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. Je m'en occupe et je ferme l'issue. |
|
🎉 This PR is included in version 0.0.2 🎉 The release is available on GitHub release Your semantic-release bot 📦🚀 |
Summary
Expand
wsen-padsexamples by replacing the test suite with practical usage examples.Closes #188
Changes
test.pyfromexamples/(test suite, not a usage example)weather_station.py— periodic measurements with CSV logging usingdaplink_flashpressure_trend.py— track pressure evolution (rising/falling/stable)floor_detector.py— detect floor changes based on altitude variationsthreshold_alert.py— trigger alert when pressure crosses a thresholdtemp_pressure_display.py— formatted output with ASCII bar graphsaltitude_calibration.py— compute sea-level pressure from known altitude and display calibrated altitudetests/scenarios/Checklist
test.pyremoved from examplestests/scenarios/ruff checkpassesmpremote mount lib/wsen-pads run lib/wsen-pads/examples/<name>.py