Advanced smart meters generate meter readings in a time unit less than a second. Fine-grained meter readings enable various smart grid applications, such as load monitoring, automatic billing, and power generation planning. However, those meter readings threaten individuals' privacy by revealing details of one's daily activities. The time granularity of smart meters is often much finer than the one a smart grid application demands. Thus, the storage and access control mechanisms of meter readings are critical to balancing privacy requirements and application functionalities. Previous studies address the issue by considering a locally trusted storage device and using cryptographic primitives. We consider a storage outsourcing scenario, where the external storage environment is semi-trusted. We construct a privacy preserving metering system by using a trusted platform module in a smart meter and pseudorandom number generators inside the module. Our system guarantees the secure storage of meter readings and supports multiple time granularities. In our system, a user grants a service provider an access right over meter readings at a time granularity S. The granted service provider is only allowed to get the power consumption at a time unit of the granted time granularity. Our system provides a simple yet very practical solution to the privacy preserving smart metering system. Moreover, we provide a privacy model to capture the privacy requirement and show that our system is privacy preserving against honest-but-curious service providers.