# coding: utf-8

"""
    teralytic

    The Teralytic API allows clients to manage their organization, view their fields and and probes, and query sensor readings and analytics.  For sandbox testing you may use the api key: `swagger.teralytic.io`   # noqa: E501

    OpenAPI spec version: 1.0.6
    
    Generated by: https://github.com/swagger-api/swagger-codegen.git
"""


import pprint
import re  # noqa: F401

import six

from teralytic.models.reading_data import ReadingData  # noqa: F401,E501


class MicroClimateData(ReadingData):
    """NOTE: This class is auto generated by the swagger code generator program.

    Do not edit the class manually.
    """

    """
    Attributes:
      swagger_types (dict): The key is attribute name
                            and the value is attribute type.
      attribute_map (dict): The key is attribute name
                            and the value is json key in definition.
    """
    swagger_types = {
        'humidity': 'float',
        'irrigation_sched': 'int',
        'irrigation_vol_acre_in': 'float',
        'irrigation_vol_acre_cm': 'float',
        'lux': 'float',
        'irrigation_gross_in': 'float',
        'irrigation_net_in': 'float',
        'irrigation_gross_cm': 'float',
        'irrigation_net_cm': 'float',
        'irrigation_rec': 'str',
        'temperature': 'float',
        'eto': 'float',
        'irrigation_stream': 'float',
        'organic_matter': 'float'
    }

    attribute_map = {
        'humidity': 'humidity',
        'irrigation_sched': 'irrigation_sched',
        'irrigation_vol_acre_in': 'irrigation_vol_acre_in',
        'irrigation_vol_acre_cm': 'irrigation_vol_acre_cm',
        'lux': 'lux',
        'irrigation_gross_in': 'irrigation_gross_in',
        'irrigation_net_in': 'irrigation_net_in',
        'irrigation_gross_cm': 'irrigation_gross_cm',
        'irrigation_net_cm': 'irrigation_net_cm',
        'irrigation_rec': 'irrigation_rec',
        'temperature': 'temperature',
        'eto': 'eto',
        'irrigation_stream': 'irrigation_stream',
        'organic_matter': 'organic_matter'
    }

    def __init__(self, humidity=None, irrigation_sched=None, irrigation_vol_acre_in=None, irrigation_vol_acre_cm=None, lux=None, irrigation_gross_in=None, irrigation_net_in=None, irrigation_gross_cm=None, irrigation_net_cm=None, irrigation_rec=None, temperature=None, eto=None, irrigation_stream=None, organic_matter=None):  # noqa: E501
        """MicroClimateData - a model defined in Swagger"""  # noqa: E501

        self._humidity = None
        self._irrigation_sched = None
        self._irrigation_vol_acre_in = None
        self._irrigation_vol_acre_cm = None
        self._lux = None
        self._irrigation_gross_in = None
        self._irrigation_net_in = None
        self._irrigation_gross_cm = None
        self._irrigation_net_cm = None
        self._irrigation_rec = None
        self._temperature = None
        self._eto = None
        self._irrigation_stream = None
        self._organic_matter = None
        self.discriminator = None

        if humidity is not None:
            self.humidity = humidity
        if irrigation_sched is not None:
            self.irrigation_sched = irrigation_sched
        if irrigation_vol_acre_in is not None:
            self.irrigation_vol_acre_in = irrigation_vol_acre_in
        if irrigation_vol_acre_cm is not None:
            self.irrigation_vol_acre_cm = irrigation_vol_acre_cm
        if lux is not None:
            self.lux = lux
        if irrigation_gross_in is not None:
            self.irrigation_gross_in = irrigation_gross_in
        if irrigation_net_in is not None:
            self.irrigation_net_in = irrigation_net_in
        if irrigation_gross_cm is not None:
            self.irrigation_gross_cm = irrigation_gross_cm
        if irrigation_net_cm is not None:
            self.irrigation_net_cm = irrigation_net_cm
        if irrigation_rec is not None:
            self.irrigation_rec = irrigation_rec
        if temperature is not None:
            self.temperature = temperature
        if eto is not None:
            self.eto = eto
        if irrigation_stream is not None:
            self.irrigation_stream = irrigation_stream
        if organic_matter is not None:
            self.organic_matter = organic_matter

    @property
    def humidity(self):
        """Gets the humidity of this MicroClimateData.  # noqa: E501


        :return: The humidity of this MicroClimateData.  # noqa: E501
        :rtype: float
        """
        return self._humidity

    @humidity.setter
    def humidity(self, humidity):
        """Sets the humidity of this MicroClimateData.


        :param humidity: The humidity of this MicroClimateData.  # noqa: E501
        :type: float
        """

        self._humidity = humidity

    @property
    def irrigation_sched(self):
        """Gets the irrigation_sched of this MicroClimateData.  # noqa: E501

        Irrigation Schedule  # noqa: E501

        :return: The irrigation_sched of this MicroClimateData.  # noqa: E501
        :rtype: int
        """
        return self._irrigation_sched

    @irrigation_sched.setter
    def irrigation_sched(self, irrigation_sched):
        """Sets the irrigation_sched of this MicroClimateData.

        Irrigation Schedule  # noqa: E501

        :param irrigation_sched: The irrigation_sched of this MicroClimateData.  # noqa: E501
        :type: int
        """

        self._irrigation_sched = irrigation_sched

    @property
    def irrigation_vol_acre_in(self):
        """Gets the irrigation_vol_acre_in of this MicroClimateData.  # noqa: E501

        Irrigation volume in3/acre  # noqa: E501

        :return: The irrigation_vol_acre_in of this MicroClimateData.  # noqa: E501
        :rtype: float
        """
        return self._irrigation_vol_acre_in

    @irrigation_vol_acre_in.setter
    def irrigation_vol_acre_in(self, irrigation_vol_acre_in):
        """Sets the irrigation_vol_acre_in of this MicroClimateData.

        Irrigation volume in3/acre  # noqa: E501

        :param irrigation_vol_acre_in: The irrigation_vol_acre_in of this MicroClimateData.  # noqa: E501
        :type: float
        """

        self._irrigation_vol_acre_in = irrigation_vol_acre_in

    @property
    def irrigation_vol_acre_cm(self):
        """Gets the irrigation_vol_acre_cm of this MicroClimateData.  # noqa: E501

        Irrigation volume c3/acre  # noqa: E501

        :return: The irrigation_vol_acre_cm of this MicroClimateData.  # noqa: E501
        :rtype: float
        """
        return self._irrigation_vol_acre_cm

    @irrigation_vol_acre_cm.setter
    def irrigation_vol_acre_cm(self, irrigation_vol_acre_cm):
        """Sets the irrigation_vol_acre_cm of this MicroClimateData.

        Irrigation volume c3/acre  # noqa: E501

        :param irrigation_vol_acre_cm: The irrigation_vol_acre_cm of this MicroClimateData.  # noqa: E501
        :type: float
        """

        self._irrigation_vol_acre_cm = irrigation_vol_acre_cm

    @property
    def lux(self):
        """Gets the lux of this MicroClimateData.  # noqa: E501


        :return: The lux of this MicroClimateData.  # noqa: E501
        :rtype: float
        """
        return self._lux

    @lux.setter
    def lux(self, lux):
        """Sets the lux of this MicroClimateData.


        :param lux: The lux of this MicroClimateData.  # noqa: E501
        :type: float
        """

        self._lux = lux

    @property
    def irrigation_gross_in(self):
        """Gets the irrigation_gross_in of this MicroClimateData.  # noqa: E501

        Gross irrigation in in3  # noqa: E501

        :return: The irrigation_gross_in of this MicroClimateData.  # noqa: E501
        :rtype: float
        """
        return self._irrigation_gross_in

    @irrigation_gross_in.setter
    def irrigation_gross_in(self, irrigation_gross_in):
        """Sets the irrigation_gross_in of this MicroClimateData.

        Gross irrigation in in3  # noqa: E501

        :param irrigation_gross_in: The irrigation_gross_in of this MicroClimateData.  # noqa: E501
        :type: float
        """

        self._irrigation_gross_in = irrigation_gross_in

    @property
    def irrigation_net_in(self):
        """Gets the irrigation_net_in of this MicroClimateData.  # noqa: E501

        Net irrigation in in3  # noqa: E501

        :return: The irrigation_net_in of this MicroClimateData.  # noqa: E501
        :rtype: float
        """
        return self._irrigation_net_in

    @irrigation_net_in.setter
    def irrigation_net_in(self, irrigation_net_in):
        """Sets the irrigation_net_in of this MicroClimateData.

        Net irrigation in in3  # noqa: E501

        :param irrigation_net_in: The irrigation_net_in of this MicroClimateData.  # noqa: E501
        :type: float
        """

        self._irrigation_net_in = irrigation_net_in

    @property
    def irrigation_gross_cm(self):
        """Gets the irrigation_gross_cm of this MicroClimateData.  # noqa: E501

        Gross irrigation in cm3  # noqa: E501

        :return: The irrigation_gross_cm of this MicroClimateData.  # noqa: E501
        :rtype: float
        """
        return self._irrigation_gross_cm

    @irrigation_gross_cm.setter
    def irrigation_gross_cm(self, irrigation_gross_cm):
        """Sets the irrigation_gross_cm of this MicroClimateData.

        Gross irrigation in cm3  # noqa: E501

        :param irrigation_gross_cm: The irrigation_gross_cm of this MicroClimateData.  # noqa: E501
        :type: float
        """

        self._irrigation_gross_cm = irrigation_gross_cm

    @property
    def irrigation_net_cm(self):
        """Gets the irrigation_net_cm of this MicroClimateData.  # noqa: E501

        Net irrigation in cm3  # noqa: E501

        :return: The irrigation_net_cm of this MicroClimateData.  # noqa: E501
        :rtype: float
        """
        return self._irrigation_net_cm

    @irrigation_net_cm.setter
    def irrigation_net_cm(self, irrigation_net_cm):
        """Sets the irrigation_net_cm of this MicroClimateData.

        Net irrigation in cm3  # noqa: E501

        :param irrigation_net_cm: The irrigation_net_cm of this MicroClimateData.  # noqa: E501
        :type: float
        """

        self._irrigation_net_cm = irrigation_net_cm

    @property
    def irrigation_rec(self):
        """Gets the irrigation_rec of this MicroClimateData.  # noqa: E501

        Irrigation recommendation  # noqa: E501

        :return: The irrigation_rec of this MicroClimateData.  # noqa: E501
        :rtype: str
        """
        return self._irrigation_rec

    @irrigation_rec.setter
    def irrigation_rec(self, irrigation_rec):
        """Sets the irrigation_rec of this MicroClimateData.

        Irrigation recommendation  # noqa: E501

        :param irrigation_rec: The irrigation_rec of this MicroClimateData.  # noqa: E501
        :type: str
        """

        self._irrigation_rec = irrigation_rec

    @property
    def temperature(self):
        """Gets the temperature of this MicroClimateData.  # noqa: E501

        Air Temperature  # noqa: E501

        :return: The temperature of this MicroClimateData.  # noqa: E501
        :rtype: float
        """
        return self._temperature

    @temperature.setter
    def temperature(self, temperature):
        """Sets the temperature of this MicroClimateData.

        Air Temperature  # noqa: E501

        :param temperature: The temperature of this MicroClimateData.  # noqa: E501
        :type: float
        """

        self._temperature = temperature

    @property
    def eto(self):
        """Gets the eto of this MicroClimateData.  # noqa: E501

        Evaporative Transpiration  # noqa: E501

        :return: The eto of this MicroClimateData.  # noqa: E501
        :rtype: float
        """
        return self._eto

    @eto.setter
    def eto(self, eto):
        """Sets the eto of this MicroClimateData.

        Evaporative Transpiration  # noqa: E501

        :param eto: The eto of this MicroClimateData.  # noqa: E501
        :type: float
        """

        self._eto = eto

    @property
    def irrigation_stream(self):
        """Gets the irrigation_stream of this MicroClimateData.  # noqa: E501


        :return: The irrigation_stream of this MicroClimateData.  # noqa: E501
        :rtype: float
        """
        return self._irrigation_stream

    @irrigation_stream.setter
    def irrigation_stream(self, irrigation_stream):
        """Sets the irrigation_stream of this MicroClimateData.


        :param irrigation_stream: The irrigation_stream of this MicroClimateData.  # noqa: E501
        :type: float
        """

        self._irrigation_stream = irrigation_stream

    @property
    def organic_matter(self):
        """Gets the organic_matter of this MicroClimateData.  # noqa: E501

        Organic Matter  # noqa: E501

        :return: The organic_matter of this MicroClimateData.  # noqa: E501
        :rtype: float
        """
        return self._organic_matter

    @organic_matter.setter
    def organic_matter(self, organic_matter):
        """Sets the organic_matter of this MicroClimateData.

        Organic Matter  # noqa: E501

        :param organic_matter: The organic_matter of this MicroClimateData.  # noqa: E501
        :type: float
        """

        self._organic_matter = organic_matter

    def to_dict(self):
        """Returns the model properties as a dict"""
        result = {}

        for attr, _ in six.iteritems(self.swagger_types):
            value = getattr(self, attr)
            if isinstance(value, list):
                result[attr] = list(map(
                    lambda x: x.to_dict() if hasattr(x, "to_dict") else x,
                    value
                ))
            elif hasattr(value, "to_dict"):
                result[attr] = value.to_dict()
            elif isinstance(value, dict):
                result[attr] = dict(map(
                    lambda item: (item[0], item[1].to_dict())
                    if hasattr(item[1], "to_dict") else item,
                    value.items()
                ))
            else:
                result[attr] = value
        if issubclass(MicroClimateData, dict):
            for key, value in self.items():
                result[key] = value

        return result

    def to_str(self):
        """Returns the string representation of the model"""
        return pprint.pformat(self.to_dict())

    def __repr__(self):
        """For `print` and `pprint`"""
        return self.to_str()

    def __eq__(self, other):
        """Returns true if both objects are equal"""
        if not isinstance(other, MicroClimateData):
            return False

        return self.__dict__ == other.__dict__

    def __ne__(self, other):
        """Returns true if both objects are not equal"""
        return not self == other
