docs: def pair_new_device(self, pairing_mode, pairing_mode_duration=60, pairing_device_type_selector=None,
                          kidde_radio_code=None):
          """
          :param pairing_mode: a string one of ["zigbee", "zwave", "zwave_exclusion",
              "zwave_network_rediscovery", "lutron", "bluetooth", "kidde"]
          :param pairing_mode_duration: an int in seconds defaults to 60
          :param pairing_device_type_selector: a string I believe this is only for bluetooth devices.
          :param kidde_radio_code: a string of 8 1s and 0s one for each dip switch on the kidde device
              left --> right = 1 --> 8
          :return: nothing
          """
          if pairing_mode == "lutron" and pairing_mode_duration < 120:
              pairing_mode_duration = 120
          elif pairing_mode == "zwave_network_rediscovery":
              pairing_mode_duration = 0
          elif pairing_mode == "bluetooth" and pairing_device_type_selector is None:
              pairing_device_type_selector = "switchmate"
  
          desired_state = {"pairing_mode": pairing_mode,
                           "pairing_mode_duration": pairing_mode_duration}
  
          if pairing_mode == "kidde" and kidde_radio_code is not None:
              # Convert dip switch 1 and 0s to an int
              try:
                  kidde_radio_code_int = int(kidde_radio_code, 2)
                  desired_state = {"kidde_radio_code": kidde_radio_code_int, "pairing_mode": None}
              except (TypeError, ValueError):
                  _LOGGER.error("An invalid Kidde radio code was provided. %s", kidde_radio_code)
  
          if pairing_device_type_selector is not None:
              desired_state.update({"pairing_device_type_selector": pairing_device_type_selector})
  
          response = self.api_interface.set_device_state(self, {
              "desired_state": desired_state
          })
  
          self._update_state_from_response(response)