mirror of
https://github.com/beestat/app.git
synced 2025-05-24 02:14:03 -04:00
Removed "json_" prefixes from all columns and converted columns to actual JSON types. Also removed all converged columns and converted contents to regular columns.
91 lines
1.9 KiB
PHP
91 lines
1.9 KiB
PHP
<?php
|
|
|
|
/**
|
|
* Any type of thermostat.
|
|
*
|
|
* @author Jon Ziebell
|
|
*/
|
|
class thermostat extends cora\crud {
|
|
|
|
public static $exposed = [
|
|
'private' => [
|
|
'read_id',
|
|
'sync',
|
|
'dismiss_alert',
|
|
'restore_alert'
|
|
],
|
|
'public' => []
|
|
];
|
|
|
|
public static $cache = [
|
|
'sync' => 300 // 5 Minutes
|
|
];
|
|
|
|
/**
|
|
* Sync all thermostats for the current user with their associated service.
|
|
*/
|
|
public function sync() {
|
|
// Skip this for the demo
|
|
if($this->setting->is_demo() === true) {
|
|
return;
|
|
}
|
|
|
|
$lock_name = 'thermostat->sync(' . $this->session->get_user_id() . ')';
|
|
$this->database->get_lock($lock_name);
|
|
|
|
$this->api('ecobee_thermostat', 'sync');
|
|
|
|
$this->api(
|
|
'user',
|
|
'update_sync_status',
|
|
['key' => 'thermostat']
|
|
);
|
|
|
|
$this->database->release_lock($lock_name);
|
|
}
|
|
|
|
/**
|
|
* Dismiss an alert.
|
|
*
|
|
* @param int $thermostat_id
|
|
* @param string $guid
|
|
*/
|
|
public function dismiss_alert($thermostat_id, $guid) {
|
|
$thermostat = $this->get($thermostat_id);
|
|
foreach($thermostat['alerts'] as &$alert) {
|
|
if($alert['guid'] === $guid) {
|
|
$alert['dismissed'] = true;
|
|
break;
|
|
}
|
|
}
|
|
$this->update(
|
|
[
|
|
'thermostat_id' => $thermostat_id,
|
|
'alerts' => $thermostat['alerts']
|
|
]
|
|
);
|
|
}
|
|
|
|
/**
|
|
* Restore a dismissed alert.
|
|
*
|
|
* @param int $thermostat_id
|
|
* @param string $guid
|
|
*/
|
|
public function restore_alert($thermostat_id, $guid) {
|
|
$thermostat = $this->get($thermostat_id);
|
|
foreach($thermostat['alerts'] as &$alert) {
|
|
if($alert['guid'] === $guid) {
|
|
$alert['dismissed'] = false;
|
|
break;
|
|
}
|
|
}
|
|
$this->update(
|
|
[
|
|
'thermostat_id' => $thermostat_id,
|
|
'alerts' => $thermostat['alerts']
|
|
]
|
|
);
|
|
}
|
|
}
|