def __init__(self, email, password, update_interval):
self.__connection = Connection(email, password)<EOL>self.__vehicles = []<EOL>self.update_interval = update_interval<EOL>self.__update = {}<EOL>self.__climate = {}<EOL>self.__charging = {}<EOL>self.__state = {}<EOL>self.__driving = {}<EOL>self.__gui = {}<EOL>self._last_update_time = {}  <EOL>self._last_wake_up_time = {}  <EOL>self._last_attempted_update_time = <NUM_LIT:0>  <EOL>self.__lock = RLock()<EOL>self.car_online = {}<EOL>cars = self.get_vehicles()<EOL>self._last_attempted_update_time = time.time()<EOL>for car in cars:<EOL><INDENT>self._last_update_time[car['<STR_LIT:id>']] = <NUM_LIT:0><EOL>self._last_wake_up_time[car['<STR_LIT:id>']] = <NUM_LIT:0><EOL>self.__update[car['<STR_LIT:id>']] = True<EOL>self.car_online[car['<STR_LIT:id>']] = (car['<STR_LIT:state>'] == '<STR_LIT>')<EOL>self.__climate[car['<STR_LIT:id>']] = False<EOL>self.__charging[car['<STR_LIT:id>']] = False<EOL>self.__state[car['<STR_LIT:id>']] = False<EOL>self.__driving[car['<STR_LIT:id>']] = False<EOL>self.__gui[car['<STR_LIT:id>']] = False<EOL>try:<EOL><INDENT>self.update(car['<STR_LIT:id>'], wake_if_asleep=False)<EOL><DEDENT>except (TeslaException, RetryLimitError):<EOL><INDENT>pass<EOL><DEDENT>self.__vehicles.append(Climate(car, self))<EOL>self.__vehicles.append(Battery(car, self))<EOL>self.__vehicles.append(Range(car, self))<EOL>self.__vehicles.append(TempSensor(car, self))<EOL>self.__vehicles.append(Lock(car, self))<EOL>self.__vehicles.append(ChargerLock(car, self))<EOL>self.__vehicles.append(ChargerConnectionSensor(car, self))<EOL>self.__vehicles.append(ChargerSwitch(car, self))<EOL>self.__vehicles.append(RangeSwitch(car, self))<EOL>self.__vehicles.append(ParkingSensor(car, self))<EOL>self.__vehicles.append(GPS(car, self))<EOL>self.__vehicles.append(Odometer(car, self))<EOL><DEDENT>
Initialize controller.

        Parameters
        ----------
        email : string
            Email of Tesla account
        password : type
            Password of Tesla account
        update_interval : type
            Seconds between allowed updates to the API.  This is to prevent
            being blocked by Tesla

        Returns
        -------
        None