Toggle Navigation
Hatchery
Eggs
Temperature v2
__init__.py
Users
Badges
Login
Register
MCH2022 badge?
go to mch2022.badge.team
__init__.py
raw
Content
import time, system, gc import rgb, consts, default_icons import mpu6050 # Constants N_MEASUREMENTS = 20 TEMP_FAILURE_VALUE = 36.53 ERROR_SLEEP_TIME = 6 # Time in seconds before retrying on error INFO_FIRMWARE_THRESHOLD = 21 TEMP_ADJUSTMENT = 2.5 # Degrees to subtract from the measured temperature # Initial setup check def check_firmware(): if int(consts.INFO_FIRMWARE_BUILD) < INFO_FIRMWARE_THRESHOLD: rgb.scrolltext('Newer firmware needed') time.sleep(8) system.reboot() def check_sensor(): if not mpu6050.has_sensor(): rgb.scrolltext('Addon required') time.sleep(ERROR_SLEEP_TIME) system.reboot() def get_measurements(): measurements = [] for _ in range(N_MEASUREMENTS): try: measurement = mpu6050.get_temp() if measurement == TEMP_FAILURE_VALUE: mpu6050.init() # Reinitialize in case of failure raise OSError('Probably bad result') measurements.append(measurement) time.sleep(0.1) except OSError: continue return measurements def noisy_average(measurements): if len(measurements) < 5: return 0.0 sorted_measurements = sorted(measurements) total = sum(sorted_measurements[2:-2]) # Exclude outliers (2 on each side) return total / (len(sorted_measurements) - 4) def display_temperature(average_temp): adjusted_temp = average_temp - TEMP_ADJUSTMENT # Adjust temperature by -2.5 degrees rgb.clear() rgb.text('%.1f' % adjusted_temp, pos=(1, 1)) rgb.text('C', pos=(26, 1)) # Check firmware version and sensor availability check_firmware() check_sensor() # Display loading animation data, size, frames = default_icons.animation_loading rgb.gif(data, (13, 1), size, frames) # Main loop while True: measurements = get_measurements() if measurements: average_temp = noisy_average(measurements) display_temperature(average_temp) gc.collect()