text: """
  Support for HomeMatic switches.
  
  For more details about this platform, please refer to the documentation at
  https://home-assistant.io/components/switch.homematic/
  """
  import logging
  from homeassistant.components.switch import SwitchDevice
  from homeassistant.components.homematic import HMDevice, ATTR_DISCOVER_DEVICES
  from homeassistant.const import STATE_UNKNOWN
  
  _LOGGER = logging.getLogger(__name__)
  
  DEPENDENCIES = ['homematic']
  
  
  def setup_platform(hass, config, add_devices, discovery_info=None):
      """Set up the HomeMatic switch platform."""
      if discovery_info is None:
          return
  
      devices = []
      for conf in discovery_info[ATTR_DISCOVER_DEVICES]:
          new_device = HMSwitch(hass, conf)
          new_device.link_homematic()
          devices.append(new_device)
  
      add_devices(devices)
  
  
  class HMSwitch(HMDevice, SwitchDevice):
      """Representation of a HomeMatic switch."""
  
      @property
      def is_on(self):
          """Return True if switch is on."""
          try:
              return self._hm_get_state() > 0
          except TypeError:
              return False
  
      @property
      def today_energy_kwh(self):
          """Return the current power usage in kWh."""
          if "ENERGY_COUNTER" in self._data:
              try:
                  return self._data["ENERGY_COUNTER"] / 1000
              except ZeroDivisionError:
                  return 0
  
          return None
  
      def turn_on(self, **kwargs):
          """Turn the switch on."""
          self._hmdevice.on(self._channel)
  
      def turn_off(self, **kwargs):
          """Turn the switch off."""
          self._hmdevice.off(self._channel)
  
      def _init_data_struct(self):
          """Generate the data dictionary (self._data) from metadata."""
          self._state = "STATE"
          self._data.update({self._state: STATE_UNKNOWN})
  
          # Need sensor values for SwitchPowermeter
          for node in self._hmdevice.SENSORNODE:
              self._data.update({node: STATE_UNKNOWN})
  