text: """
  Support for EnOcean binary sensors.
  
  For more details about this platform, please refer to the documentation at
  https://home-assistant.io/components/binary_sensor.enocean/
  """
  import logging
  
  import voluptuous as vol
  
  from homeassistant.components.binary_sensor import (
      BinarySensorDevice, PLATFORM_SCHEMA, DEVICE_CLASSES_SCHEMA)
  from homeassistant.components import enocean
  from homeassistant.const import (
      CONF_NAME, CONF_ID, CONF_DEVICE_CLASS)
  import homeassistant.helpers.config_validation as cv
  
  _LOGGER = logging.getLogger(__name__)
  
  DEPENDENCIES = ['enocean']
  DEFAULT_NAME = 'EnOcean binary sensor'
  
  PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({
      vol.Required(CONF_ID): vol.All(cv.ensure_list, [vol.Coerce(int)]),
      vol.Optional(CONF_NAME, default=DEFAULT_NAME): cv.string,
      vol.Optional(CONF_DEVICE_CLASS): DEVICE_CLASSES_SCHEMA,
  })
  
  
  def setup_platform(hass, config, add_devices, discovery_info=None):
      """Set up the Binary Sensor platform for EnOcean."""
      dev_id = config.get(CONF_ID)
      devname = config.get(CONF_NAME)
      device_class = config.get(CONF_DEVICE_CLASS)
  
      add_devices([EnOceanBinarySensor(dev_id, devname, device_class)])
  
  
  class EnOceanBinarySensor(enocean.EnOceanDevice, BinarySensorDevice):
      """Representation of EnOcean binary sensors such as wall switches."""
  
      def __init__(self, dev_id, devname, device_class):
          """Initialize the EnOcean binary sensor."""
          enocean.EnOceanDevice.__init__(self)
          self.stype = 'listener'
          self.dev_id = dev_id
          self.which = -1
          self.onoff = -1
          self.devname = devname
          self._device_class = device_class
  
      @property
      def name(self):
          """Return the default name for the binary sensor."""
          return self.devname
  
      @property
      def device_class(self):
          """Return the class of this sensor."""
          return self._device_class
  
      def value_changed(self, value, value2):
          """Fire an event with the data that have changed.
  
          This method is called when there is an incoming packet associated
          with this platform.
          """
          self.schedule_update_ha_state()
          if value2 == 0x70:
              self.which = 0
              self.onoff = 0
          elif value2 == 0x50:
              self.which = 0
              self.onoff = 1
          elif value2 == 0x30:
              self.which = 1
              self.onoff = 0
          elif value2 == 0x10:
              self.which = 1
              self.onoff = 1
          elif value2 == 0x37:
              self.which = 10
              self.onoff = 0
          elif value2 == 0x15:
              self.which = 10
              self.onoff = 1
          self.hass.bus.fire('button_pressed', {'id': self.dev_id,
                                                'pushed': value,
                                                'which': self.which,
                                                'onoff': self.onoff})
  