5

The Nest Protect (smoke and CO alarm) can measure temperature and humidity but neither the official or unofficial API's appear to allow access to this data. Is anyone working on a work around? Any line of sight to accessing this data? Suggestions? Thanks!

1 Answers1

-1
 $infos = (object) array(
        'current_state' => (object) array(
            'mode' => $mode,
            'temperature' => $this->temperatureInUserScale((float) $this->last_status->shared->{$serial_number}->current_temperature),
            'humidity' => $this->last_status->device->{$serial_number}->current_humidity,
            'ac' => $this->last_status->shared->{$serial_number}->hvac_ac_state,
            'heat' => $this->last_status->shared->{$serial_number}->hvac_heater_state,
            'alt_heat' => $this->last_status->shared->{$serial_number}->hvac_alt_heat_state,
            'fan' => $this->last_status->shared->{$serial_number}->hvac_fan_state,
            'auto_away' => $this->last_status->shared->{$serial_number}->auto_away, // -1 when disabled, 0 when enabled (thermostat can set auto-away), >0 when enabled and active (thermostat is currently in auto-away mode)
            'manual_away' => $manual_away,
            'leaf' => $this->last_status->device->{$serial_number}->leaf,
            'battery_level' => $this->last_status->device->{$serial_number}->battery_level
        ),
        'target' => (object) array(
            'mode' => $target_mode,
            'temperature' => $target_temperatures,
            'time_to_target' => $this->last_status->device->{$serial_number}->time_to_target,

Add this:

            'humidity' => $this->last_status->device->{$serial_number}->target_humidity, //added by Rick Ammazzini
            'humidity_enabled' => $this->last_status->device->{$serial_number}->target_humidity_enabled //added by Rick Ammazzini
        ),
        'serial_number' => $this->last_status->device->{$serial_number}->serial_number,
        'scale' => $this->last_status->device->{$serial_number}->temperature_scale,
        'location' => $structure,
        'line_power_present' => $this->last_status->device->{$serial_number}->line_power_present,
        'network' => $this->getDeviceNetworkInfo($serial_number),
        'name' => !empty($this->last_status->shared->{$serial_number}->name) ? $this->last_status->shared->{$serial_number}->name : DEVICE_WITH_NO_NAME,
        'where' => isset($this->last_status->device->{$serial_number}->where_id) ? isset($this->where_map[$this->last_status->device->{$serial_number}->where_id]) ? $this->where_map[$this->last_status->device->{$serial_number}->where_id] : $this->last_status->device->{$serial_number}->where_id : ""
    );

    if($this->last_status->device->{$serial_number}->has_humidifier) {
      $infos->current_state->humidifier= $this->last_status->device->{$serial_number}->humidifier_state;
      $infos->target->humidity = $this->last_status->device->{$serial_number}->target_humidity;
      $infos->target->humidity_enabled = $this->last_status->device->{$serial_number}->target_humidity_enabled;
    }
    return $infos;
}
Nathaniel Ford
  • 20,545
  • 20
  • 91
  • 102
  • Generally, it's poor practice to throw up poorly formatted code with a simple 'add this' in the middle. Why does this help? What is 'this'? Where should it be added? – Nathaniel Ford Jan 09 '16 at 00:55
  • Rick's code might be code for the Nest Thermostat, unfortunately not the Nest Protect. – user2828726 Oct 23 '21 at 07:27