text: """
  Support for IOTA wallets.
  
  For more details about this component, please refer to the documentation at
  https://home-assistant.io/components/iota
  """
  import logging
  from datetime import timedelta
  
  from homeassistant.components.iota import IotaDevice, CONF_WALLETS
  from homeassistant.const import CONF_NAME
  
  _LOGGER = logging.getLogger(__name__)
  
  ATTR_TESTNET = 'testnet'
  ATTR_URL = 'url'
  
  CONF_IRI = 'iri'
  CONF_SEED = 'seed'
  CONF_TESTNET = 'testnet'
  
  DEPENDENCIES = ['iota']
  
  SCAN_INTERVAL = timedelta(minutes=3)
  
  
  def setup_platform(hass, config, add_entities, discovery_info=None):
      """Set up the IOTA sensor."""
      # Add sensors for wallet balance
      iota_config = discovery_info
      sensors = [IotaBalanceSensor(wallet, iota_config)
                 for wallet in iota_config[CONF_WALLETS]]
  
      # Add sensor for node information
      sensors.append(IotaNodeSensor(iota_config=iota_config))
  
      add_entities(sensors)
  
  
  class IotaBalanceSensor(IotaDevice):
      """Implement an IOTA sensor for displaying wallets balance."""
  
      def __init__(self, wallet_config, iota_config):
          """Initialize the sensor."""
          super().__init__(
              name=wallet_config[CONF_NAME], seed=wallet_config[CONF_SEED],
              iri=iota_config[CONF_IRI], is_testnet=iota_config[CONF_TESTNET])
          self._state = None
  
      @property
      def name(self):
          """Return the name of the sensor."""
          return '{} Balance'.format(self._name)
  
      @property
      def state(self):
          """Return the state of the sensor."""
          return self._state
  
      @property
      def unit_of_measurement(self):
          """Return the unit of measurement."""
          return 'IOTA'
  
      def update(self):
          """Fetch new balance from IRI."""
          self._state = self.api.get_inputs()['totalBalance']
  
  
  class IotaNodeSensor(IotaDevice):
      """Implement an IOTA sensor for displaying attributes of node."""
  
      def __init__(self, iota_config):
          """Initialize the sensor."""
          super().__init__(
              name='Node Info', seed=None, iri=iota_config[CONF_IRI],
              is_testnet=iota_config[CONF_TESTNET])
          self._state = None
          self._attr = {ATTR_URL: self.iri, ATTR_TESTNET: self.is_testnet}
  
      @property
      def name(self):
          """Return the name of the sensor."""
          return 'IOTA Node'
  
      @property
      def state(self):
          """Return the state of the sensor."""
          return self._state
  
      @property
      def device_state_attributes(self):
          """Return the state attributes of the device."""
          return self._attr
  
      def update(self):
          """Fetch new attributes IRI node."""
          node_info = self.api.get_node_info()
          self._state = node_info.get('appVersion')
  
          # convert values to raw string formats
          self._attr.update({k: str(v) for k, v in node_info.items()})
  