docs: def get_devices(self, refresh=False, generic_type=None):
          """Get all devices from Abode."""
          if refresh or self._devices is None:
              if self._devices is None:
                  self._devices = {}
  
              _LOGGER.info("Updating all devices...")
              response = self.send_request("get", CONST.DEVICES_URL)
              response_object = json.loads(response.text)
  
              if (response_object and
                      not isinstance(response_object, (tuple, list))):
                  response_object = [response_object]
  
              _LOGGER.debug("Get Devices Response: %s", response.text)
  
              for device_json in response_object:
                  # Attempt to reuse an existing device
                  device = self._devices.get(device_json['id'])
  
                  # No existing device, create a new one
                  if device:
                      device.update(device_json)
                  else:
                      device = new_device(device_json, self)
  
                      if not device:
                          _LOGGER.debug(
                              "Skipping unknown device: %s",
                              device_json)
  
                          continue
  
                      self._devices[device.device_id] = device
  
              # We will be treating the Abode panel itself as an armable device.
              panel_response = self.send_request("get", CONST.PANEL_URL)
              panel_json = json.loads(panel_response.text)
  
              self._panel.update(panel_json)
  
              _LOGGER.debug("Get Mode Panel Response: %s", response.text)
  
              alarm_device = self._devices.get(CONST.ALARM_DEVICE_ID + '1')
  
              if alarm_device:
                  alarm_device.update(panel_json)
              else:
                  alarm_device = ALARM.create_alarm(panel_json, self)
                  self._devices[alarm_device.device_id] = alarm_device
  
          if generic_type:
              devices = []
              for device in self._devices.values():
                  if (device.generic_type is not None and
                          device.generic_type in generic_type):
                      devices.append(device)
              return devices
  
          return list(self._devices.values())