# coding=utf-8
# --------------------------------------------------------------------------
# Code generated by Microsoft (R) AutoRest Code Generator.
# Changes may cause incorrect behavior and will be lost if the code is
# regenerated.
# --------------------------------------------------------------------------

from msrest.serialization import Model


class MeterResponse(Model):
    """MeterResponse.

    :param meter_id: The identifier for the meter
    :type meter_id: int
    :param meter_code: The meter code
    :type meter_code: str
    :param meter_info: The meter info
    :type meter_info: str
    :param meter_type:
    :type meter_type: ~energycap.sdk.models.MeterTypeChild
    :param channels: An array of channels assigned to this meter
    :type channels: list[~energycap.sdk.models.ChannelChild]
    :param accounts:
    :type accounts: list[~energycap.sdk.models.MeterAccountChild]
    :param commodity:
    :type commodity: ~energycap.sdk.models.CommodityChild
    :param place:
    :type place: ~energycap.sdk.models.PlaceChild
    :param address:
    :type address: ~energycap.sdk.models.AddressChild
    :param bill_entry_note: The bill entry note
    :type bill_entry_note: str
    :param include_in_energy_star: Indicates if the building is included in
     ENERGY STAR submissions
    :type include_in_energy_star: bool
    :param primary_use:
    :type primary_use: ~energycap.sdk.models.PrimaryUseChild
    :param created_by:
    :type created_by: ~energycap.sdk.models.UserChild
    :param created_date: The date and time the meter was created
    :type created_date: datetime
    :param modified_by:
    :type modified_by: ~energycap.sdk.models.UserChild
    :param modified_date: The date and time of the most recent modification of
     the meter
    :type modified_date: datetime
    :param properties: An array of meter properties
    :type properties: dict[str, str]
    :param include_in_cost_avoidance: Indicates if the meter should be
     included in cost avoidance
    :type include_in_cost_avoidance: bool
    :param route:
    :type route: ~energycap.sdk.models.RouteChild
    :param meter_time_zone:
    :type meter_time_zone: ~energycap.sdk.models.TimeZoneChild
    :param active: Indicates whether the Meter is Active
    :type active: bool
    :param is_calculated_meter: Indicates whether the Meter is a calculated
     meter
    :type is_calculated_meter: bool
    :param is_split_parent_meter: Indicates whether the Meter is a parent of a
     split
    :type is_split_parent_meter: bool
    :param is_split_child_meter: Indicates whether the Meter is a child of a
     split
    :type is_split_child_meter: bool
    :param use_unit:
    :type use_unit: ~energycap.sdk.models.UnitChild
    :param demand_unit:
    :type demand_unit: ~energycap.sdk.models.UnitChild
    :param serial_number: Meter's currently assigned serial number
    :type serial_number: str
    :param serial_number_history:
    :type serial_number_history:
     ~energycap.sdk.models.MeterSerialNumberHistoryChild
    :param meter_description: A description of the meter
    :type meter_description: str
    :param wattics_data_point:
    :type wattics_data_point: ~energycap.sdk.models.WatticsDataPoint
    :param emission_source:
    :type emission_source: ~energycap.sdk.models.EmissionSourceLink
    """

    _attribute_map = {
        'meter_id': {'key': 'meterId', 'type': 'int'},
        'meter_code': {'key': 'meterCode', 'type': 'str'},
        'meter_info': {'key': 'meterInfo', 'type': 'str'},
        'meter_type': {'key': 'meterType', 'type': 'MeterTypeChild'},
        'channels': {'key': 'channels', 'type': '[ChannelChild]'},
        'accounts': {'key': 'accounts', 'type': '[MeterAccountChild]'},
        'commodity': {'key': 'commodity', 'type': 'CommodityChild'},
        'place': {'key': 'place', 'type': 'PlaceChild'},
        'address': {'key': 'address', 'type': 'AddressChild'},
        'bill_entry_note': {'key': 'billEntryNote', 'type': 'str'},
        'include_in_energy_star': {'key': 'includeInEnergyStar', 'type': 'bool'},
        'primary_use': {'key': 'primaryUse', 'type': 'PrimaryUseChild'},
        'created_by': {'key': 'createdBy', 'type': 'UserChild'},
        'created_date': {'key': 'createdDate', 'type': 'iso-8601'},
        'modified_by': {'key': 'modifiedBy', 'type': 'UserChild'},
        'modified_date': {'key': 'modifiedDate', 'type': 'iso-8601'},
        'properties': {'key': 'properties', 'type': '{str}'},
        'include_in_cost_avoidance': {'key': 'includeInCostAvoidance', 'type': 'bool'},
        'route': {'key': 'route', 'type': 'RouteChild'},
        'meter_time_zone': {'key': 'meterTimeZone', 'type': 'TimeZoneChild'},
        'active': {'key': 'active', 'type': 'bool'},
        'is_calculated_meter': {'key': 'isCalculatedMeter', 'type': 'bool'},
        'is_split_parent_meter': {'key': 'isSplitParentMeter', 'type': 'bool'},
        'is_split_child_meter': {'key': 'isSplitChildMeter', 'type': 'bool'},
        'use_unit': {'key': 'useUnit', 'type': 'UnitChild'},
        'demand_unit': {'key': 'demandUnit', 'type': 'UnitChild'},
        'serial_number': {'key': 'serialNumber', 'type': 'str'},
        'serial_number_history': {'key': 'serialNumberHistory', 'type': 'MeterSerialNumberHistoryChild'},
        'meter_description': {'key': 'meterDescription', 'type': 'str'},
        'wattics_data_point': {'key': 'watticsDataPoint', 'type': 'WatticsDataPoint'},
        'emission_source': {'key': 'emissionSource', 'type': 'EmissionSourceLink'},
    }

    def __init__(self, **kwargs):
        super(MeterResponse, self).__init__(**kwargs)
        self.meter_id = kwargs.get('meter_id', None)
        self.meter_code = kwargs.get('meter_code', None)
        self.meter_info = kwargs.get('meter_info', None)
        self.meter_type = kwargs.get('meter_type', None)
        self.channels = kwargs.get('channels', None)
        self.accounts = kwargs.get('accounts', None)
        self.commodity = kwargs.get('commodity', None)
        self.place = kwargs.get('place', None)
        self.address = kwargs.get('address', None)
        self.bill_entry_note = kwargs.get('bill_entry_note', None)
        self.include_in_energy_star = kwargs.get('include_in_energy_star', None)
        self.primary_use = kwargs.get('primary_use', None)
        self.created_by = kwargs.get('created_by', None)
        self.created_date = kwargs.get('created_date', None)
        self.modified_by = kwargs.get('modified_by', None)
        self.modified_date = kwargs.get('modified_date', None)
        self.properties = kwargs.get('properties', None)
        self.include_in_cost_avoidance = kwargs.get('include_in_cost_avoidance', None)
        self.route = kwargs.get('route', None)
        self.meter_time_zone = kwargs.get('meter_time_zone', None)
        self.active = kwargs.get('active', None)
        self.is_calculated_meter = kwargs.get('is_calculated_meter', None)
        self.is_split_parent_meter = kwargs.get('is_split_parent_meter', None)
        self.is_split_child_meter = kwargs.get('is_split_child_meter', None)
        self.use_unit = kwargs.get('use_unit', None)
        self.demand_unit = kwargs.get('demand_unit', None)
        self.serial_number = kwargs.get('serial_number', None)
        self.serial_number_history = kwargs.get('serial_number_history', None)
        self.meter_description = kwargs.get('meter_description', None)
        self.wattics_data_point = kwargs.get('wattics_data_point', None)
        self.emission_source = kwargs.get('emission_source', None)
