diff --git a/tests/scenarios/board_temperature_comparison.yaml b/tests/scenarios/board_temperature_comparison.yaml index 11a1b654..70627241 100644 --- a/tests/scenarios/board_temperature_comparison.yaml +++ b/tests/scenarios/board_temperature_comparison.yaml @@ -100,6 +100,82 @@ tests: expect_true: true mode: [hardware] + - name: "Offset-align all sensors to WSEN-HIDS reference" + action: hardware_script + script: | + import sys + sys.path.insert(0, '/remote/hts221') + sys.path.insert(0, '/remote/wsen-hids') + sys.path.insert(0, '/remote/wsen-pads') + sys.path.insert(0, '/remote/lis2mdl') + + from machine import I2C + from time import sleep_ms + + i2c = I2C(1) + + # Initialize all sensors + from wsen_hids.device import WSEN_HIDS + ref = WSEN_HIDS(i2c) + + from hts221.device import HTS221 + hts = HTS221(i2c) + hts.poweroff() + sleep_ms(20) + hts.poweron() + sleep_ms(50) + + from wsen_pads.device import WSEN_PADS + pads = WSEN_PADS(i2c) + + from lis2mdl.device import LIS2MDL + mag = LIS2MDL(i2c) + + # Read reference just before each sensor to minimize drift + ref_t = ref.temperature() + hts_t = hts.temperature() + + ref_t2 = ref.temperature() + pads_t = pads.temperature() + + ref_t3 = ref.temperature() + mag_t = mag.read_temperature_c() + + print('--- Before offset alignment ---') + print(' WSEN-HIDS (ref): ' + str(round(ref_t, 2)) + ' C') + print(' HTS221: ' + str(round(hts_t, 2)) + ' C') + print(' WSEN-PADS: ' + str(round(pads_t, 2)) + ' C') + print(' LIS2MDL: ' + str(round(mag_t, 2)) + ' C') + + spread_before = max(hts_t, pads_t, mag_t, ref_t) - min(hts_t, pads_t, mag_t, ref_t) + print(' Spread: ' + str(round(spread_before, 2)) + ' C') + + # Apply offset to align each sensor to the reference reading + hts.set_temp_offset(ref_t - hts_t) + pads.set_temp_offset(ref_t2 - pads_t) + mag.set_temp_offset(ref_t3 - mag_t) + + # Re-read after offset alignment + sleep_ms(50) + ref_t4 = ref.temperature() + hts_t2 = hts.temperature() + pads_t2 = pads.temperature() + mag_t2 = mag.read_temperature_c() + + print('--- After offset alignment ---') + print(' WSEN-HIDS (ref): ' + str(round(ref_t4, 2)) + ' C') + print(' HTS221: ' + str(round(hts_t2, 2)) + ' C') + print(' WSEN-PADS: ' + str(round(pads_t2, 2)) + ' C') + print(' LIS2MDL: ' + str(round(mag_t2, 2)) + ' C') + + spread_after = max(hts_t2, pads_t2, mag_t2, ref_t4) - min(hts_t2, pads_t2, mag_t2, ref_t4) + print(' Spread: ' + str(round(spread_after, 2)) + ' C') + + # After alignment, spread should be < 2°C + result = spread_after < 2.0 + expect_true: true + mode: [hardware] + - name: "Temperature values feel correct" action: manual prompt: "Les températures lues sont-elles cohérentes entre elles et avec l'ambiance ?"