Found while live-testing the previous fix: brewpi.py unconditionally wired heater.power_set to tc.set_model_power, but "Normal" has no internal model and thus no such method - same hasattr guard already used elsewhere (tasks/sud.py's apply_plant_params) for this.