1
0
mirror of https://github.com/beestat/app.git synced 2025-05-24 02:14:03 -04:00

Fixed #157 - Re-evaluate converged columns

Removed "json_" prefixes from all columns and converted columns to actual JSON types. Also removed all converged columns and converted contents to regular columns.
This commit is contained in:
Jon Ziebell 2019-10-28 21:18:43 -04:00
parent 43e547198b
commit eaee95736d
27 changed files with 207 additions and 258 deletions

View File

@ -17,14 +17,6 @@ class address extends cora\crud {
'public' => [] 'public' => []
]; ];
public static $converged = [
'normalized' => [
'type' => 'json'
]
];
public static $user_locked = true;
/** /**
* Search for an address based on an address string. This will make an API * Search for an address based on an address string. This will make an API
* call to Smarty Streets using that address string (after first checking * call to Smarty Streets using that address string (after first checking

View File

@ -17,18 +17,6 @@ class announcement extends cora\crud {
] ]
]; ];
public static $converged = [
'title' => [
'type' => 'string'
],
'text' => [
'type' => 'string'
],
'icon' => [
'type' => 'string'
]
];
public static $user_locked = false; public static $user_locked = false;
} }

View File

@ -9,10 +9,6 @@ namespace cora;
*/ */
class api_cache extends crud { class api_cache extends crud {
public static $converged = [];
public static $user_locked = true;
/** /**
* Insert an item into the current resource with the provided attributes. * Insert an item into the current resource with the provided attributes.
* Setting of the primary key column is not allowed and will be overwritten * Setting of the primary key column is not allowed and will be overwritten
@ -45,7 +41,7 @@ class api_cache extends crud {
$attributes = []; $attributes = [];
$attributes['key'] = $key; $attributes['key'] = $key;
$attributes['expires_at'] = date('Y-m-d H:i:s', time() + $duration); $attributes['expires_at'] = date('Y-m-d H:i:s', time() + $duration);
$attributes['json_response_data'] = $response_data; $attributes['response_data'] = $response_data;
$attributes['request_resource'] = $api_call['resource']; $attributes['request_resource'] = $api_call['resource'];
$attributes['request_method'] = $api_call['method']; $attributes['request_method'] = $api_call['method'];
@ -63,7 +59,7 @@ class api_cache extends crud {
$attributes = []; $attributes = [];
$attributes['expires_at'] = date('Y-m-d H:i:s', time() + $duration); $attributes['expires_at'] = date('Y-m-d H:i:s', time() + $duration);
$attributes['json_response_data'] = $response_data; $attributes['response_data'] = $response_data;
$attributes['api_cache_id'] = $cache_hit['api_cache_id']; $attributes['api_cache_id'] = $cache_hit['api_cache_id'];
return $this->update($attributes); return $this->update($attributes);

View File

@ -12,8 +12,6 @@ namespace cora;
*/ */
class api_user extends crud { class api_user extends crud {
public static $converged = [];
public static $user_locked = false; public static $user_locked = false;
} }

View File

@ -330,7 +330,7 @@ final class cora {
if($api_cache !== null) { if($api_cache !== null) {
// If there was a cache entry available, use that. // If there was a cache entry available, use that.
$this->response_data[$index] = $api_cache['json_response_data']; $this->response_data[$index] = $api_cache['response_data'];
$this->from_cache[$index] = true; $this->from_cache[$index] = true;
$this->cached_until[$index] = date('c', strtotime($api_cache['expires_at'])); $this->cached_until[$index] = date('c', strtotime($api_cache['expires_at']));
} else { } else {

View File

@ -38,6 +38,13 @@ final class database extends \mysqli {
*/ */
private static $transactionless_instance; private static $transactionless_instance;
/**
* Column types
*
* @var array
*/
private static $types;
/** /**
* Whether or not to use transactions in this connection. * Whether or not to use transactions in this connection.
* *
@ -63,7 +70,7 @@ final class database extends \mysqli {
/** /**
* The total time all queries have taken to execute. * The total time all queries have taken to execute.
* *
* @var float; * @var float
*/ */
private $query_time = 0; private $query_time = 0;
@ -348,6 +355,7 @@ final class database extends \mysqli {
* FUNCTION DIRECTLY. THIS FUNCTION DOES NOT DO IT FOR YOU. * FUNCTION DIRECTLY. THIS FUNCTION DOES NOT DO IT FOR YOU.
* *
* @param string $query The query to execute. * @param string $query The query to execute.
* @param int $resultmode Just here because PHP requires it.
* *
* @throws DuplicateEntryException if the query failed due to a duplicate * @throws DuplicateEntryException if the query failed due to a duplicate
* entry (unique key violation) * entry (unique key violation)
@ -356,7 +364,7 @@ final class database extends \mysqli {
* *
* @return mixed The result directly from $mysqli->query. * @return mixed The result directly from $mysqli->query.
*/ */
public function query($query, $resultmode = NULL) { public function query($query, $resultmode = null) {
// If this was an insert, update or delete, start a transaction // If this was an insert, update or delete, start a transaction
$query_type = substr(trim($query), 0, 6); $query_type = substr(trim($query), 0, 6);
if( if(
@ -486,10 +494,6 @@ final class database extends \mysqli {
else if($field_info->type === 245) { else if($field_info->type === 245) {
$json_fields[] = $field_info->name; $json_fields[] = $field_info->name;
} }
else if(substr($field_info->name, 0, 5) === 'json_') {
// TODO This will go away as soon as I switch to json type columns.
$json_fields[] = $field_info->name;
}
} }
$results = []; $results = [];
@ -505,6 +509,7 @@ final class database extends \mysqli {
$row[$json_field] = json_decode($row[$json_field], true); $row[$json_field] = json_decode($row[$json_field], true);
} }
// Diverge the converged column. // Diverge the converged column.
if( if(
isset($row['converged']) === true && isset($row['converged']) === true &&
@ -590,7 +595,8 @@ final class database extends \mysqli {
* @param array $attributes The attributes to set. * @param array $attributes The attributes to set.
* @param array $return_mode Either "row" or "id". Specifying row will * @param array $return_mode Either "row" or "id". Specifying row will
* return the newly created row (does a database read). Specifying id will * return the newly created row (does a database read). Specifying id will
* return just the ID of the created row. * return just the ID of the created row instead of performing another query
* to get the whole inserted row.
* *
* @throws \Exception If no attributes were specified. * @throws \Exception If no attributes were specified.
* *
@ -599,9 +605,8 @@ final class database extends \mysqli {
public function update($resource, $attributes, $return_mode = 'row') { public function update($resource, $attributes, $return_mode = 'row') {
$table = $this->get_table($resource); $table = $this->get_table($resource);
// TODO This will go away as soon as I switch to json type columns.
foreach($attributes as $key => $value) { foreach($attributes as $key => $value) {
if(substr($key, 0, 5) === 'json_') { if($this->get_type($resource, $key) === 'json') {
if($value === null) { if($value === null) {
$attributes[$key] = null; $attributes[$key] = null;
} }
@ -700,9 +705,8 @@ final class database extends \mysqli {
public function create($resource, $attributes, $return_mode = 'row') { public function create($resource, $attributes, $return_mode = 'row') {
$table = $this->get_table($resource); $table = $this->get_table($resource);
// TODO This will go away as soon as I switch to json type columns.
foreach($attributes as $key => $value) { foreach($attributes as $key => $value) {
if(substr($key, 0, 5) === 'json_') { if($this->get_type($resource, $key) === 'json') {
if($value === null) { if($value === null) {
$attributes[$key] = null; $attributes[$key] = null;
} }
@ -769,6 +773,47 @@ final class database extends \mysqli {
return end($class_parts); return end($class_parts);
} }
/**
* Get the type of a specific column.
*
* @param string $table The table.
* @param string $column The column.
*
* @return string The type.
*/
private function get_type($resource, $column) {
$table = $this->get_table($resource);
// If this column is in converged, get the type from there.
if(
class_exists($resource) === true && // This will also call the autoloader to make sure it's loaded
isset($resource::$converged) === true &&
isset($resource::$converged[$column]) === true
) {
return $resource::$converged[$column]['type'];
}
// Otherwise query the entire schema (and cache it) to see what the type is.
if(isset(self::$types) === false) {
self::$types = [];
$result = $this->query('
select
`table_name`,
`column_name`,
`data_type`
from
`information_schema`.`columns`
where
`table_schema` = ' . $this->escape($this->setting->get('database_name')) . '
');
while($row = $result->fetch_assoc()) {
self::$types[$row['table_name'] . '.' . $row['column_name']] = $row['data_type'];
}
}
return self::$types[$table . '.' . $column];
}
/** /**
* Attempt to get a database lock. * Attempt to get a database lock.
* *

View File

@ -9,10 +9,6 @@ namespace cora;
*/ */
final class session { final class session {
public static $converged = [];
public static $user_locked = true;
/** /**
* The session_key for this session. * The session_key for this session.
* *

View File

@ -15,10 +15,6 @@ class ecobee_sensor extends cora\crud {
'public' => [] 'public' => []
]; ];
public static $converged = [];
public static $user_locked = true;
/** /**
* Sync sensors. * Sync sensors.
*/ */
@ -173,7 +169,7 @@ class ecobee_sensor extends cora\crud {
'type' => $api_sensor['type'], 'type' => $api_sensor['type'],
'code' => (isset($api_sensor['code']) === true ? $api_sensor['code'] : null), 'code' => (isset($api_sensor['code']) === true ? $api_sensor['code'] : null),
'in_use' => ($api_sensor['inUse'] === true ? 1 : 0), 'in_use' => ($api_sensor['inUse'] === true ? 1 : 0),
'json_capability' => $api_sensor['capability'], 'capability' => $api_sensor['capability'],
'inactive' => 0 'inactive' => 0
] ]
); );

View File

@ -15,10 +15,6 @@ class ecobee_thermostat extends cora\crud {
'public' => [] 'public' => []
]; ];
public static $converged = [];
public static $user_locked = true;
/** /**
* Sync thermostats. * Sync thermostats.
*/ */
@ -135,7 +131,7 @@ class ecobee_thermostat extends cora\crud {
[ [
'attributes' => [ 'attributes' => [
'ecobee_thermostat_id' => $ecobee_thermostat['ecobee_thermostat_id'], 'ecobee_thermostat_id' => $ecobee_thermostat['ecobee_thermostat_id'],
'json_alerts' => [] 'alerts' => []
] ]
] ]
); );
@ -150,27 +146,27 @@ class ecobee_thermostat extends cora\crud {
'identifier' => $api_thermostat['identifier'], 'identifier' => $api_thermostat['identifier'],
'utc_time' => $api_thermostat['utcTime'], 'utc_time' => $api_thermostat['utcTime'],
'model_number' => $api_thermostat['modelNumber'], 'model_number' => $api_thermostat['modelNumber'],
'json_runtime' => $api_thermostat['runtime'], 'runtime' => $api_thermostat['runtime'],
'json_extended_runtime' => $api_thermostat['extendedRuntime'], 'extended_runtime' => $api_thermostat['extendedRuntime'],
'json_electricity' => $api_thermostat['electricity'], 'electricity' => $api_thermostat['electricity'],
'json_settings' => $api_thermostat['settings'], 'settings' => $api_thermostat['settings'],
'json_location' => $api_thermostat['location'], 'location' => $api_thermostat['location'],
'json_program' => $api_thermostat['program'], 'program' => $api_thermostat['program'],
'json_events' => $api_thermostat['events'], 'events' => $api_thermostat['events'],
'json_device' => $api_thermostat['devices'], 'device' => $api_thermostat['devices'],
'json_technician' => $api_thermostat['technician'], 'technician' => $api_thermostat['technician'],
'json_utility' => $api_thermostat['utility'], 'utility' => $api_thermostat['utility'],
'json_management' => $api_thermostat['management'], 'management' => $api_thermostat['management'],
'json_alerts' => $api_thermostat['alerts'], 'alerts' => $api_thermostat['alerts'],
'json_weather' => $api_thermostat['weather'], 'weather' => $api_thermostat['weather'],
'json_house_details' => $api_thermostat['houseDetails'], 'house_details' => $api_thermostat['houseDetails'],
'json_oem_cfg' => $api_thermostat['oemCfg'], 'oem_cfg' => $api_thermostat['oemCfg'],
'json_equipment_status' => trim($api_thermostat['equipmentStatus']) !== '' ? explode(',', $api_thermostat['equipmentStatus']) : [], 'equipment_status' => trim($api_thermostat['equipmentStatus']) !== '' ? explode(',', $api_thermostat['equipmentStatus']) : [],
'json_notification_settings' => $api_thermostat['notificationSettings'], 'notification_settings' => $api_thermostat['notificationSettings'],
'json_privacy' => $api_thermostat['privacy'], 'privacy' => $api_thermostat['privacy'],
'json_version' => $api_thermostat['version'], 'version' => $api_thermostat['version'],
'json_remote_sensors' => $api_thermostat['remoteSensors'], 'remote_sensors' => $api_thermostat['remoteSensors'],
'json_audio' => $api_thermostat['audio'], 'audio' => $api_thermostat['audio'],
'inactive' => 0 'inactive' => 0
] ]
); );
@ -210,7 +206,7 @@ class ecobee_thermostat extends cora\crud {
$attributes['property'] = $this->get_property($thermostat, $ecobee_thermostat); $attributes['property'] = $this->get_property($thermostat, $ecobee_thermostat);
$attributes['filters'] = $this->get_filters($thermostat, $ecobee_thermostat); $attributes['filters'] = $this->get_filters($thermostat, $ecobee_thermostat);
$attributes['json_alerts'] = $this->get_alerts($thermostat, $ecobee_thermostat); $attributes['alerts'] = $this->get_alerts($thermostat, $ecobee_thermostat);
$attributes['weather'] = $this->get_weather($thermostat, $ecobee_thermostat); $attributes['weather'] = $this->get_weather($thermostat, $ecobee_thermostat);
$attributes['time_zone'] = $this->get_time_zone($thermostat, $ecobee_thermostat); $attributes['time_zone'] = $this->get_time_zone($thermostat, $ecobee_thermostat);
@ -302,28 +298,28 @@ class ecobee_thermostat extends cora\crud {
private function get_address($thermostat, $ecobee_thermostat) { private function get_address($thermostat, $ecobee_thermostat) {
$address_parts = []; $address_parts = [];
if(isset($ecobee_thermostat['json_location']['streetAddress']) === true) { if(isset($ecobee_thermostat['location']['streetAddress']) === true) {
$address_parts[] = $ecobee_thermostat['json_location']['streetAddress']; $address_parts[] = $ecobee_thermostat['location']['streetAddress'];
} }
if(isset($ecobee_thermostat['json_location']['city']) === true) { if(isset($ecobee_thermostat['location']['city']) === true) {
$address_parts[] = $ecobee_thermostat['json_location']['city']; $address_parts[] = $ecobee_thermostat['location']['city'];
} }
if(isset($ecobee_thermostat['json_location']['provinceState']) === true) { if(isset($ecobee_thermostat['location']['provinceState']) === true) {
$address_parts[] = $ecobee_thermostat['json_location']['provinceState']; $address_parts[] = $ecobee_thermostat['location']['provinceState'];
} }
if(isset($ecobee_thermostat['json_location']['postalCode']) === true) { if(isset($ecobee_thermostat['location']['postalCode']) === true) {
$address_parts[] = $ecobee_thermostat['json_location']['postalCode']; $address_parts[] = $ecobee_thermostat['location']['postalCode'];
} }
if( if(
isset($ecobee_thermostat['json_location']['country']) === true && isset($ecobee_thermostat['location']['country']) === true &&
trim($ecobee_thermostat['json_location']['country']) !== '' trim($ecobee_thermostat['location']['country']) !== ''
) { ) {
if(preg_match('/(^USA?$)|(united.?states)/i', $ecobee_thermostat['json_location']['country']) === 1) { if(preg_match('/(^USA?$)|(united.?states)/i', $ecobee_thermostat['location']['country']) === 1) {
$country = 'USA'; $country = 'USA';
} }
else { else {
$country = $ecobee_thermostat['json_location']['country']; $country = $ecobee_thermostat['location']['country'];
} }
} }
else { else {
@ -359,8 +355,8 @@ class ecobee_thermostat extends cora\crud {
* "semiDetached", "townhouse", "Townhouse" * "semiDetached", "townhouse", "Townhouse"
*/ */
$property['structure_type'] = null; $property['structure_type'] = null;
if(isset($ecobee_thermostat['json_house_details']['style']) === true) { if(isset($ecobee_thermostat['house_details']['style']) === true) {
$structure_type = $ecobee_thermostat['json_house_details']['style']; $structure_type = $ecobee_thermostat['house_details']['style'];
if(preg_match('/^detached$/i', $structure_type) === 1) { if(preg_match('/^detached$/i', $structure_type) === 1) {
$property['structure_type'] = 'detached'; $property['structure_type'] = 'detached';
} }
@ -388,8 +384,8 @@ class ecobee_thermostat extends cora\crud {
* Example values from ecobee: "0", "1", "2", "3", "4", "5", "8", "9", "10" * Example values from ecobee: "0", "1", "2", "3", "4", "5", "8", "9", "10"
*/ */
$property['stories'] = null; $property['stories'] = null;
if(isset($ecobee_thermostat['json_house_details']['numberOfFloors']) === true) { if(isset($ecobee_thermostat['house_details']['numberOfFloors']) === true) {
$stories = $ecobee_thermostat['json_house_details']['numberOfFloors']; $stories = $ecobee_thermostat['house_details']['numberOfFloors'];
if(ctype_digit((string) $stories) === true && $stories > 0) { if(ctype_digit((string) $stories) === true && $stories > 0) {
$property['stories'] = (int) $stories; $property['stories'] = (int) $stories;
} }
@ -404,8 +400,8 @@ class ecobee_thermostat extends cora\crud {
* "9000", "9500", "10000" * "9000", "9500", "10000"
*/ */
$property['square_feet'] = null; $property['square_feet'] = null;
if(isset($ecobee_thermostat['json_house_details']['size']) === true) { if(isset($ecobee_thermostat['house_details']['size']) === true) {
$square_feet = $ecobee_thermostat['json_house_details']['size']; $square_feet = $ecobee_thermostat['house_details']['size'];
if(ctype_digit((string) $square_feet) === true && $square_feet > 0) { if(ctype_digit((string) $square_feet) === true && $square_feet > 0) {
$property['square_feet'] = (int) $square_feet; $property['square_feet'] = (int) $square_feet;
} }
@ -425,8 +421,8 @@ class ecobee_thermostat extends cora\crud {
* "121", "122", "123", "124" * "121", "122", "123", "124"
*/ */
$property['age'] = null; $property['age'] = null;
if(isset($ecobee_thermostat['json_house_details']['age']) === true) { if(isset($ecobee_thermostat['house_details']['age']) === true) {
$age = $ecobee_thermostat['json_house_details']['age']; $age = $ecobee_thermostat['house_details']['age'];
if(ctype_digit((string) $age) === true) { if(ctype_digit((string) $age) === true) {
$property['age'] = (int) $age; $property['age'] = (int) $age;
} }
@ -471,8 +467,8 @@ class ecobee_thermostat extends cora\crud {
$sums = []; $sums = [];
$min_timestamp = INF; $min_timestamp = INF;
if(isset($ecobee_thermostat['json_notification_settings']['equipment']) === true) { if(isset($ecobee_thermostat['notification_settings']['equipment']) === true) {
foreach($ecobee_thermostat['json_notification_settings']['equipment'] as $notification) { foreach($ecobee_thermostat['notification_settings']['equipment'] as $notification) {
if($notification['enabled'] === true && isset($supported_types[$notification['type']]) === true) { if($notification['enabled'] === true && isset($supported_types[$notification['type']]) === true) {
$key = $supported_types[$notification['type']]['key']; $key = $supported_types[$notification['type']]['key'];
$sum_column = $supported_types[$notification['type']]['sum_column']; $sum_column = $supported_types[$notification['type']]['sum_column'];
@ -522,7 +518,7 @@ class ecobee_thermostat extends cora\crud {
private function get_alerts($thermostat, $ecobee_thermostat) { private function get_alerts($thermostat, $ecobee_thermostat) {
// Get a list of all ecobee thermostat alerts // Get a list of all ecobee thermostat alerts
$new_alerts = []; $new_alerts = [];
foreach($ecobee_thermostat['json_alerts'] as $ecobee_thermostat_alert) { foreach($ecobee_thermostat['alerts'] as $ecobee_thermostat_alert) {
$alert = []; $alert = [];
$alert['timestamp'] = date( $alert['timestamp'] = date(
'Y-m-d H:i:s', 'Y-m-d H:i:s',
@ -539,7 +535,7 @@ class ecobee_thermostat extends cora\crud {
} }
// Cool Differential Temperature // Cool Differential Temperature
if($ecobee_thermostat['json_settings']['stage1CoolingDifferentialTemp'] / 10 === 0.5) { if($ecobee_thermostat['settings']['stage1CoolingDifferentialTemp'] / 10 === 0.5) {
$alert = [ $alert = [
'timestamp' => date('Y-m-d H:i:s'), 'timestamp' => date('Y-m-d H:i:s'),
'text' => 'Cool Differential Temperature is set to 0.5°F; we recommend at least 1.0°F', 'text' => 'Cool Differential Temperature is set to 0.5°F; we recommend at least 1.0°F',
@ -554,7 +550,7 @@ class ecobee_thermostat extends cora\crud {
} }
// Heat Differential Temperature // Heat Differential Temperature
if($ecobee_thermostat['json_settings']['stage1HeatingDifferentialTemp'] / 10 === 0.5) { if($ecobee_thermostat['settings']['stage1HeatingDifferentialTemp'] / 10 === 0.5) {
$alert = [ $alert = [
'timestamp' => date('Y-m-d H:i:s'), 'timestamp' => date('Y-m-d H:i:s'),
'text' => 'Heat Differential Temperature is set to 0.5°F; we recommend at least 1.0°F', 'text' => 'Heat Differential Temperature is set to 0.5°F; we recommend at least 1.0°F',
@ -570,13 +566,13 @@ class ecobee_thermostat extends cora\crud {
// Get the guids for easy comparison // Get the guids for easy comparison
$new_guids = array_column($new_alerts, 'guid'); $new_guids = array_column($new_alerts, 'guid');
$existing_guids = array_column($thermostat['json_alerts'], 'guid'); $existing_guids = array_column($thermostat['alerts'], 'guid');
$guids_to_add = array_diff($new_guids, $existing_guids); $guids_to_add = array_diff($new_guids, $existing_guids);
$guids_to_remove = array_diff($existing_guids, $new_guids); $guids_to_remove = array_diff($existing_guids, $new_guids);
// Remove any removed alerts // Remove any removed alerts
$final_alerts = $thermostat['json_alerts']; $final_alerts = $thermostat['alerts'];
foreach($final_alerts as $key => $thermostat_alert) { foreach($final_alerts as $key => $thermostat_alert) {
if(in_array($thermostat_alert['guid'], $guids_to_remove) === true) { if(in_array($thermostat_alert['guid'], $guids_to_remove) === true) {
unset($final_alerts[$key]); unset($final_alerts[$key]);
@ -652,8 +648,8 @@ class ecobee_thermostat extends cora\crud {
private function get_detected_system_type($thermostat, $ecobee_thermostat) { private function get_detected_system_type($thermostat, $ecobee_thermostat) {
$detected_system_type = []; $detected_system_type = [];
$settings = $ecobee_thermostat['json_settings']; $settings = $ecobee_thermostat['settings'];
$devices = $ecobee_thermostat['json_device']; $devices = $ecobee_thermostat['device'];
// Get a list of all outputs. These get their type set when they get // Get a list of all outputs. These get their type set when they get
// connected to a wire so it's a pretty reliable way to see what's hooked // connected to a wire so it's a pretty reliable way to see what's hooked
@ -743,15 +739,15 @@ class ecobee_thermostat extends cora\crud {
'condition' => null 'condition' => null
]; ];
if(isset($ecobee_thermostat['json_weather']['weatherStation']) === true) { if(isset($ecobee_thermostat['weather']['weatherStation']) === true) {
$weather['station'] = $ecobee_thermostat['json_weather']['weatherStation']; $weather['station'] = $ecobee_thermostat['weather']['weatherStation'];
} }
if( if(
isset($ecobee_thermostat['json_weather']['forecasts']) === true && isset($ecobee_thermostat['weather']['forecasts']) === true &&
isset($ecobee_thermostat['json_weather']['forecasts'][0]) === true isset($ecobee_thermostat['weather']['forecasts'][0]) === true
) { ) {
$ecobee_weather = $ecobee_thermostat['json_weather']['forecasts'][0]; $ecobee_weather = $ecobee_thermostat['weather']['forecasts'][0];
if(isset($ecobee_weather['dewpoint']) === true) { if(isset($ecobee_weather['dewpoint']) === true) {
$weather['dew_point'] = $ecobee_weather['dewpoint']; $weather['dew_point'] = $ecobee_weather['dewpoint'];
@ -872,12 +868,12 @@ class ecobee_thermostat extends cora\crud {
* @return The time zone. * @return The time zone.
*/ */
private function get_time_zone($thermostat, $ecobee_thermostat) { private function get_time_zone($thermostat, $ecobee_thermostat) {
$time_zone = $ecobee_thermostat['json_location']['timeZone']; $time_zone = $ecobee_thermostat['location']['timeZone'];
if (in_array($time_zone, timezone_identifiers_list()) === true) { if (in_array($time_zone, timezone_identifiers_list()) === true) {
return $time_zone; return $time_zone;
} else if ($ecobee_thermostat['json_location']['timeZoneOffsetMinutes'] !== '') { } else if ($ecobee_thermostat['location']['timeZoneOffsetMinutes'] !== '') {
$offset_seconds = $ecobee_thermostat['json_location']['timeZoneOffsetMinutes'] * 60; $offset_seconds = $ecobee_thermostat['location']['timeZoneOffsetMinutes'] * 60;
$time_zone = timezone_name_from_abbr('', $offset_seconds, 1); $time_zone = timezone_name_from_abbr('', $offset_seconds, 1);
// Workaround for bug #44780 // Workaround for bug #44780
if ($time_zone === false) { if ($time_zone === false) {

View File

@ -7,10 +7,6 @@
*/ */
class ecobee_token extends cora\crud { class ecobee_token extends cora\crud {
public static $converged = [];
public static $user_locked = true;
/** /**
* This should be called when connecting a new user. Get the access/refresh * This should be called when connecting a new user. Get the access/refresh
* tokens, then attach them to a brand new anonymous user. * tokens, then attach them to a brand new anonymous user.

View File

@ -7,8 +7,6 @@
*/ */
class external_api_cache extends cora\crud { class external_api_cache extends cora\crud {
public static $converged = [];
public static $user_locked = false; public static $user_locked = false;
public function delete($id) { public function delete($id) {

View File

@ -7,15 +7,6 @@
*/ */
class external_api_log extends cora\crud { class external_api_log extends cora\crud {
public static $converged = [
'request' => [
'type' => 'json'
],
'response' => [
'type' => 'string'
]
];
/** /**
* Insert an item into the log table using the transactionless database * Insert an item into the log table using the transactionless database
* connection. * connection.

View File

@ -7,10 +7,6 @@
*/ */
class patreon_token extends cora\crud { class patreon_token extends cora\crud {
public static $converged = [];
public static $user_locked = true;
/** /**
* Obtain Patreon access & refresh tokens. If a token already exists for * Obtain Patreon access & refresh tokens. If a token already exists for
* this user, overwrite it. * this user, overwrite it.

View File

@ -19,10 +19,6 @@ class sensor extends cora\crud {
'sync' => 300 // 5 Minutes 'sync' => 300 // 5 Minutes
]; ];
public static $converged = [];
public static $user_locked = true;
/** /**
* Sync all sensors connected to this account. Once Nest support is * Sync all sensors connected to this account. Once Nest support is
* added this will need to check for all connected accounts and run the * added this will need to check for all connected accounts and run the

View File

@ -21,26 +21,6 @@ class thermostat extends cora\crud {
'sync' => 300 // 5 Minutes 'sync' => 300 // 5 Minutes
]; ];
public static $converged = [
'filters' => [
'type' => 'json'
],
'temperature_profile' => [
'type' => 'json'
],
'property' => [
'type' => 'json'
],
'system_type' => [
'type' => 'json'
],
'weather' => [
'type' => 'json'
]
];
public static $user_locked = true;
/** /**
* Sync all thermostats for the current user with their associated service. * Sync all thermostats for the current user with their associated service.
*/ */
@ -72,7 +52,7 @@ class thermostat extends cora\crud {
*/ */
public function dismiss_alert($thermostat_id, $guid) { public function dismiss_alert($thermostat_id, $guid) {
$thermostat = $this->get($thermostat_id); $thermostat = $this->get($thermostat_id);
foreach($thermostat['json_alerts'] as &$alert) { foreach($thermostat['alerts'] as &$alert) {
if($alert['guid'] === $guid) { if($alert['guid'] === $guid) {
$alert['dismissed'] = true; $alert['dismissed'] = true;
break; break;
@ -81,7 +61,7 @@ class thermostat extends cora\crud {
$this->update( $this->update(
[ [
'thermostat_id' => $thermostat_id, 'thermostat_id' => $thermostat_id,
'json_alerts' => $thermostat['json_alerts'] 'alerts' => $thermostat['alerts']
] ]
); );
} }
@ -94,7 +74,7 @@ class thermostat extends cora\crud {
*/ */
public function restore_alert($thermostat_id, $guid) { public function restore_alert($thermostat_id, $guid) {
$thermostat = $this->get($thermostat_id); $thermostat = $this->get($thermostat_id);
foreach($thermostat['json_alerts'] as &$alert) { foreach($thermostat['alerts'] as &$alert) {
if($alert['guid'] === $guid) { if($alert['guid'] === $guid) {
$alert['dismissed'] = false; $alert['dismissed'] = false;
break; break;
@ -103,7 +83,7 @@ class thermostat extends cora\crud {
$this->update( $this->update(
[ [
'thermostat_id' => $thermostat_id, 'thermostat_id' => $thermostat_id,
'json_alerts' => $thermostat['json_alerts'] 'alerts' => $thermostat['alerts']
] ]
); );
} }

View File

@ -26,17 +26,6 @@ class thermostat_group extends cora\crud {
'get_scores' => 604800 // 7 Days 'get_scores' => 604800 // 7 Days
]; ];
public static $converged = [
'temperature_profile' => [
'type' => 'json'
],
'weather' => [
'type' => 'json'
]
];
public static $user_locked = true;
/** /**
* Generate the group temperature profile. * Generate the group temperature profile.
* *

View File

@ -18,10 +18,6 @@ class user extends cora\crud {
'public' => [] 'public' => []
]; ];
public static $converged = [];
public static $user_locked = true;
/** /**
* Selects a user. * Selects a user.
* *
@ -177,10 +173,10 @@ class user extends cora\crud {
*/ */
public function update_setting($key, $value) { public function update_setting($key, $value) {
$user = $this->get($this->session->get_user_id()); $user = $this->get($this->session->get_user_id());
if($user['json_settings'] === null) { if($user['settings'] === null) {
$settings = []; $settings = [];
} else { } else {
$settings = $user['json_settings']; $settings = $user['settings'];
} }
$settings[$key] = $value; $settings[$key] = $value;
@ -189,7 +185,7 @@ class user extends cora\crud {
$this->update( $this->update(
[ [
'user_id' => $this->session->get_user_id(), 'user_id' => $this->session->get_user_id(),
'json_settings' => $settings 'settings' => $settings
] ]
); );
} }
@ -206,10 +202,10 @@ class user extends cora\crud {
*/ */
public function update_sync_status($key) { public function update_sync_status($key) {
$user = $this->get($this->session->get_user_id()); $user = $this->get($this->session->get_user_id());
if($user['json_sync_status'] === null) { if($user['sync_status'] === null) {
$sync_status = []; $sync_status = [];
} else { } else {
$sync_status = $user['json_sync_status']; $sync_status = $user['sync_status'];
} }
$sync_status[$key] = date('Y-m-d H:i:s'); $sync_status[$key] = date('Y-m-d H:i:s');
@ -217,7 +213,7 @@ class user extends cora\crud {
$this->update( $this->update(
[ [
'user_id' => $this->session->get_user_id(), 'user_id' => $this->session->get_user_id(),
'json_sync_status' => $sync_status 'sync_status' => $sync_status
] ]
); );
@ -264,7 +260,7 @@ class user extends cora\crud {
$this->update( $this->update(
[ [
'user_id' => $this->session->get_user_id(), 'user_id' => $this->session->get_user_id(),
'json_patreon_status' => $include['attributes'] 'patreon_status' => $include['attributes']
] ]
); );
} }
@ -275,7 +271,7 @@ class user extends cora\crud {
$this->update( $this->update(
[ [
'user_id' => $this->session->get_user_id(), 'user_id' => $this->session->get_user_id(),
'json_patreon_status' => null 'patreon_status' => null
] ]
); );
} else { } else {
@ -283,7 +279,7 @@ class user extends cora\crud {
$this->update( $this->update(
[ [
'user_id' => $this->session->get_user_id(), 'user_id' => $this->session->get_user_id(),
'json_patreon_status' => [ 'patreon_status' => [
'patron_status' => 'not_patron' 'patron_status' => 'not_patron'
] ]
] ]

View File

@ -47,7 +47,7 @@ beestat.get_climate = function(climate_ref) {
thermostat.ecobee_thermostat_id thermostat.ecobee_thermostat_id
]; ];
var climates = ecobee_thermostat.json_program.climates; var climates = ecobee_thermostat.program.climates;
for (var i = 0; i < climates.length; i++) { for (var i = 0; i < climates.length; i++) {
if (climates[i].climateRef === climate_ref) { if (climates[i].climateRef === climate_ref) {
@ -68,36 +68,36 @@ beestat.get_thermostat_color = function(thermostat_id) {
]; ];
if ( if (
ecobee_thermostat.json_equipment_status.indexOf('compCool2') !== -1 || ecobee_thermostat.equipment_status.indexOf('compCool2') !== -1 ||
ecobee_thermostat.json_equipment_status.indexOf('compCool1') !== -1 ecobee_thermostat.equipment_status.indexOf('compCool1') !== -1
) { ) {
return beestat.style.color.blue.light; return beestat.style.color.blue.light;
} else if ( } else if (
ecobee_thermostat.json_settings.hasHeatPump === true && ecobee_thermostat.settings.hasHeatPump === true &&
( (
ecobee_thermostat.json_equipment_status.indexOf('auxHeat3') !== -1 || ecobee_thermostat.equipment_status.indexOf('auxHeat3') !== -1 ||
ecobee_thermostat.json_equipment_status.indexOf('auxHeat2') !== -1 || ecobee_thermostat.equipment_status.indexOf('auxHeat2') !== -1 ||
ecobee_thermostat.json_equipment_status.indexOf('auxHeat1') !== -1 || ecobee_thermostat.equipment_status.indexOf('auxHeat1') !== -1 ||
ecobee_thermostat.json_equipment_status.indexOf('auxHotWater') !== -1 ecobee_thermostat.equipment_status.indexOf('auxHotWater') !== -1
) )
) { ) {
return beestat.style.color.red.base; return beestat.style.color.red.base;
} else if ( } else if (
( (
ecobee_thermostat.json_settings.hasHeatPump === false && ecobee_thermostat.settings.hasHeatPump === false &&
( (
ecobee_thermostat.json_equipment_status.indexOf('auxHeat3') !== -1 || ecobee_thermostat.equipment_status.indexOf('auxHeat3') !== -1 ||
ecobee_thermostat.json_equipment_status.indexOf('auxHeat2') !== -1 || ecobee_thermostat.equipment_status.indexOf('auxHeat2') !== -1 ||
ecobee_thermostat.json_equipment_status.indexOf('auxHeat1') !== -1 || ecobee_thermostat.equipment_status.indexOf('auxHeat1') !== -1 ||
ecobee_thermostat.json_equipment_status.indexOf('compHotWater') !== -1 || ecobee_thermostat.equipment_status.indexOf('compHotWater') !== -1 ||
ecobee_thermostat.json_equipment_status.indexOf('auxHotWater') !== -1 ecobee_thermostat.equipment_status.indexOf('auxHotWater') !== -1
) )
) || ) ||
( (
ecobee_thermostat.json_settings.hasHeatPump === true && ecobee_thermostat.settings.hasHeatPump === true &&
( (
ecobee_thermostat.json_equipment_status.indexOf('heatPump1') !== -1 || ecobee_thermostat.equipment_status.indexOf('heatPump1') !== -1 ||
ecobee_thermostat.json_equipment_status.indexOf('heatPump2') !== -1 ecobee_thermostat.equipment_status.indexOf('heatPump2') !== -1
) )
) )
) { ) {
@ -173,9 +173,9 @@ beestat.has_early_access = function() {
var user = beestat.get_user(); var user = beestat.get_user();
return user.user_id === 1 || return user.user_id === 1 ||
( (
user.json_patreon_status !== null && user.patreon_status !== null &&
user.json_patreon_status.patron_status === 'active_patron' && user.patreon_status.patron_status === 'active_patron' &&
user.json_patreon_status.currently_entitled_amount_cents >= 500 user.patreon_status.currently_entitled_amount_cents >= 500
); );
}; };

View File

@ -26,8 +26,8 @@ beestat.setting = function(key, opt_value, opt_callback) {
'temperature_unit': '°F' 'temperature_unit': '°F'
}; };
if (user.json_settings === null) { if (user.settings === null) {
user.json_settings = {}; user.settings = {};
} }
/* /*
@ -35,16 +35,16 @@ beestat.setting = function(key, opt_value, opt_callback) {
* control. Just doing this so other parts of the application can be built out * control. Just doing this so other parts of the application can be built out
* properly. * properly.
*/ */
if (user.json_settings.thermostat_id !== undefined) { if (user.settings.thermostat_id !== undefined) {
user.json_settings.thermostat_id = parseInt( user.settings.thermostat_id = parseInt(
user.json_settings.thermostat_id, user.settings.thermostat_id,
10 10
); );
} }
if (opt_value === undefined && typeof key !== 'object') { if (opt_value === undefined && typeof key !== 'object') {
if (user.json_settings[key] !== undefined) { if (user.settings[key] !== undefined) {
return user.json_settings[key]; return user.settings[key];
} else if (defaults[key] !== undefined) { } else if (defaults[key] !== undefined) {
return defaults[key]; return defaults[key];
} }
@ -64,8 +64,8 @@ beestat.setting = function(key, opt_value, opt_callback) {
var has_calls = false; var has_calls = false;
for (var k in settings) { for (var k in settings) {
if (user.json_settings[k] !== settings[k]) { if (user.settings[k] !== settings[k]) {
user.json_settings[k] = settings[k]; user.settings[k] = settings[k];
beestat.dispatcher.dispatchEvent('setting.' + k); beestat.dispatcher.dispatchEvent('setting.' + k);

View File

@ -262,7 +262,7 @@ beestat.component.alert.prototype.decorate_detail_ = function(parent) {
) )
.send(); .send();
beestat.cache.thermostat[beestat.setting('thermostat_id')].json_alerts.forEach(function(alert) { beestat.cache.thermostat[beestat.setting('thermostat_id')].alerts.forEach(function(alert) {
if (alert.guid === self.alert_.guid) { if (alert.guid === self.alert_.guid) {
alert.dismissed = true; alert.dismissed = true;
} }
@ -299,7 +299,7 @@ beestat.component.alert.prototype.decorate_detail_ = function(parent) {
) )
.send(); .send();
beestat.cache.thermostat[beestat.setting('thermostat_id')].json_alerts.forEach(function(alert) { beestat.cache.thermostat[beestat.setting('thermostat_id')].alerts.forEach(function(alert) {
if (alert.guid === self.alert_.guid) { if (alert.guid === self.alert_.guid) {
alert.dismissed = false; alert.dismissed = false;
} }

View File

@ -40,7 +40,7 @@ beestat.component.card.alerts.prototype.decorate_contents_ = function(parent) {
.set_color(beestat.style.color.bluegray.light) .set_color(beestat.style.color.bluegray.light)
).render(this.no_alerts_); ).render(this.no_alerts_);
thermostat.json_alerts.forEach(function(alert) { thermostat.alerts.forEach(function(alert) {
var alert_component = new beestat.component.alert(alert); var alert_component = new beestat.component.alert(alert);
alert_component.addEventListener('click', function() { alert_component.addEventListener('click', function() {

View File

@ -1045,7 +1045,7 @@ beestat.component.card.recent_activity.prototype.get_series_ = function() {
thermostat.ecobee_thermostat_id thermostat.ecobee_thermostat_id
]; ];
this_calendar_event = 'calendar_event_' + ecobee_thermostat.json_program.schedule[day_of_week_index][chunk_of_day_index]; this_calendar_event = 'calendar_event_' + ecobee_thermostat.program.schedule[day_of_week_index][chunk_of_day_index];
} else { } else {
if (runtime_thermostat.event === null) { if (runtime_thermostat.event === null) {
if (runtime_thermostat.climate === null) { if (runtime_thermostat.climate === null) {

View File

@ -160,56 +160,56 @@ beestat.component.card.system.prototype.decorate_equipment_ = function(parent) {
var running_equipment = []; var running_equipment = [];
if (ecobee_thermostat.json_equipment_status.indexOf('fan') !== -1) { if (ecobee_thermostat.equipment_status.indexOf('fan') !== -1) {
running_equipment.push('fan'); running_equipment.push('fan');
} }
if (ecobee_thermostat.json_equipment_status.indexOf('ventilator') !== -1) { if (ecobee_thermostat.equipment_status.indexOf('ventilator') !== -1) {
running_equipment.push('ventilator'); running_equipment.push('ventilator');
} }
if (ecobee_thermostat.json_equipment_status.indexOf('humidifier') !== -1) { if (ecobee_thermostat.equipment_status.indexOf('humidifier') !== -1) {
running_equipment.push('humidifier'); running_equipment.push('humidifier');
} }
if (ecobee_thermostat.json_equipment_status.indexOf('dehumidifier') !== -1) { if (ecobee_thermostat.equipment_status.indexOf('dehumidifier') !== -1) {
running_equipment.push('dehumidifier'); running_equipment.push('dehumidifier');
} }
if (ecobee_thermostat.json_equipment_status.indexOf('economizer') !== -1) { if (ecobee_thermostat.equipment_status.indexOf('economizer') !== -1) {
running_equipment.push('economizer'); running_equipment.push('economizer');
} }
if (ecobee_thermostat.json_equipment_status.indexOf('compCool2') !== -1) { if (ecobee_thermostat.equipment_status.indexOf('compCool2') !== -1) {
running_equipment.push('cool_2'); running_equipment.push('cool_2');
} else if (ecobee_thermostat.json_equipment_status.indexOf('compCool1') !== -1) { } else if (ecobee_thermostat.equipment_status.indexOf('compCool1') !== -1) {
running_equipment.push('cool_1'); running_equipment.push('cool_1');
} }
if (ecobee_thermostat.json_settings.hasHeatPump === true) { if (ecobee_thermostat.settings.hasHeatPump === true) {
if (ecobee_thermostat.json_equipment_status.indexOf('heatPump3') !== -1) { if (ecobee_thermostat.equipment_status.indexOf('heatPump3') !== -1) {
running_equipment.push('heat_3'); running_equipment.push('heat_3');
} else if (ecobee_thermostat.json_equipment_status.indexOf('heatPump2') !== -1) { } else if (ecobee_thermostat.equipment_status.indexOf('heatPump2') !== -1) {
running_equipment.push('heat_2'); running_equipment.push('heat_2');
} else if (ecobee_thermostat.json_equipment_status.indexOf('heatPump') !== -1) { } else if (ecobee_thermostat.equipment_status.indexOf('heatPump') !== -1) {
running_equipment.push('heat_1'); running_equipment.push('heat_1');
} }
if (ecobee_thermostat.json_equipment_status.indexOf('auxHeat3') !== -1) { if (ecobee_thermostat.equipment_status.indexOf('auxHeat3') !== -1) {
running_equipment.push('aux_3'); running_equipment.push('aux_3');
} else if (ecobee_thermostat.json_equipment_status.indexOf('auxHeat2') !== -1) { } else if (ecobee_thermostat.equipment_status.indexOf('auxHeat2') !== -1) {
running_equipment.push('aux_2'); running_equipment.push('aux_2');
} else if (ecobee_thermostat.json_equipment_status.indexOf('auxHeat1') !== -1) { } else if (ecobee_thermostat.equipment_status.indexOf('auxHeat1') !== -1) {
running_equipment.push('aux_1'); running_equipment.push('aux_1');
} }
} else if (ecobee_thermostat.json_equipment_status.indexOf('auxHeat3') !== -1) { } else if (ecobee_thermostat.equipment_status.indexOf('auxHeat3') !== -1) {
running_equipment.push('heat_3'); running_equipment.push('heat_3');
} else if (ecobee_thermostat.json_equipment_status.indexOf('auxHeat2') !== -1) { } else if (ecobee_thermostat.equipment_status.indexOf('auxHeat2') !== -1) {
running_equipment.push('heat_2'); running_equipment.push('heat_2');
} else if (ecobee_thermostat.json_equipment_status.indexOf('auxHeat1') !== -1) { } else if (ecobee_thermostat.equipment_status.indexOf('auxHeat1') !== -1) {
running_equipment.push('heat_1'); running_equipment.push('heat_1');
} }
if (ecobee_thermostat.json_equipment_status.indexOf('compHotWater') !== -1) { if (ecobee_thermostat.equipment_status.indexOf('compHotWater') !== -1) {
running_equipment.push('heat_1'); running_equipment.push('heat_1');
} }
if (ecobee_thermostat.json_equipment_status.indexOf('auxHotWater') !== -1) { if (ecobee_thermostat.equipment_status.indexOf('auxHotWater') !== -1) {
running_equipment.push('aux_1'); running_equipment.push('aux_1');
} }
@ -300,7 +300,7 @@ beestat.component.card.system.prototype.decorate_climate_ = function(parent) {
]; ];
var climate = beestat.get_climate( var climate = beestat.get_climate(
ecobee_thermostat.json_program.currentClimateRef ecobee_thermostat.program.currentClimateRef
); );
var climate_container = $.createElement('div') var climate_container = $.createElement('div')
@ -389,26 +389,26 @@ beestat.component.card.system.prototype.get_subtitle_ = function() {
]; ];
var climate = beestat.get_climate( var climate = beestat.get_climate(
ecobee_thermostat.json_program.currentClimateRef ecobee_thermostat.program.currentClimateRef
); );
// Is the temperature overridden? // Is the temperature overridden?
var override = ( var override = (
ecobee_thermostat.json_runtime.desiredHeat !== climate.heatTemp || ecobee_thermostat.runtime.desiredHeat !== climate.heatTemp ||
ecobee_thermostat.json_runtime.desiredCool !== climate.coolTemp ecobee_thermostat.runtime.desiredCool !== climate.coolTemp
); );
// Get the heat/cool values to display. // Get the heat/cool values to display.
var heat; var heat;
if (override === true) { if (override === true) {
heat = ecobee_thermostat.json_runtime.desiredHeat / 10; heat = ecobee_thermostat.runtime.desiredHeat / 10;
} else { } else {
heat = climate.heatTemp / 10; heat = climate.heatTemp / 10;
} }
var cool; var cool;
if (override === true) { if (override === true) {
cool = ecobee_thermostat.json_runtime.desiredCool / 10; cool = ecobee_thermostat.runtime.desiredCool / 10;
} else { } else {
cool = climate.coolTemp / 10; cool = climate.coolTemp / 10;
} }
@ -422,7 +422,7 @@ beestat.component.card.system.prototype.get_subtitle_ = function() {
'heat': 'Heat' 'heat': 'Heat'
}; };
var hvac_mode = hvac_modes[ecobee_thermostat.json_settings.hvacMode]; var hvac_mode = hvac_modes[ecobee_thermostat.settings.hvacMode];
heat = beestat.temperature({ heat = beestat.temperature({
'temperature': heat 'temperature': heat
@ -433,7 +433,7 @@ beestat.component.card.system.prototype.get_subtitle_ = function() {
var subtitle = hvac_mode; var subtitle = hvac_mode;
if (ecobee_thermostat.json_settings.hvacMode !== 'off') { if (ecobee_thermostat.settings.hvacMode !== 'off') {
if (override === true) { if (override === true) {
subtitle += ' / Overridden'; subtitle += ' / Overridden';
} else { } else {
@ -441,15 +441,15 @@ beestat.component.card.system.prototype.get_subtitle_ = function() {
} }
} }
if (ecobee_thermostat.json_settings.hvacMode === 'auto') { if (ecobee_thermostat.settings.hvacMode === 'auto') {
subtitle += ' / ' + heat + ' - ' + cool; subtitle += ' / ' + heat + ' - ' + cool;
} else if ( } else if (
ecobee_thermostat.json_settings.hvacMode === 'heat' || ecobee_thermostat.settings.hvacMode === 'heat' ||
ecobee_thermostat.json_settings.hvacMode === 'auxHeatOnly' ecobee_thermostat.settings.hvacMode === 'auxHeatOnly'
) { ) {
subtitle += ' / ' + heat; subtitle += ' / ' + heat;
} else if ( } else if (
ecobee_thermostat.json_settings.hvacMode === 'cool' ecobee_thermostat.settings.hvacMode === 'cool'
) { ) {
subtitle += ' / ' + cool; subtitle += ' / ' + cool;
} }

View File

@ -69,8 +69,8 @@ beestat.component.modal.patreon_hide.prototype.hide_patreon_card_for_ = function
*/ */
beestat.component.modal.patreon_hide.prototype.is_active_patron_ = function() { beestat.component.modal.patreon_hide.prototype.is_active_patron_ = function() {
var user = beestat.get_user(); var user = beestat.get_user();
if (user.json_patreon_status !== null) { if (user.patreon_status !== null) {
return (user.json_patreon_status.patron_status === 'active_patron'); return (user.patreon_status.patron_status === 'active_patron');
} }
return null; return null;
}; };

View File

@ -32,15 +32,15 @@ beestat.component.modal.thermostat_info.prototype.decorate_contents_ = function(
}, },
{ {
'name': 'Firmware Revision', 'name': 'Firmware Revision',
'value': ecobee_thermostat.json_version.thermostatFirmwareVersion 'value': ecobee_thermostat.version.thermostatFirmwareVersion
}, },
{ {
'name': 'Weather Station', 'name': 'Weather Station',
'value': ecobee_thermostat.json_weather.weatherStation 'value': ecobee_thermostat.weather.weatherStation
}, },
{ {
'name': 'First Connected', 'name': 'First Connected',
'value': moment.utc(ecobee_thermostat.json_runtime.firstConnected).local() 'value': moment.utc(ecobee_thermostat.runtime.firstConnected).local()
.format('MMM Do, YYYY') .format('MMM Do, YYYY')
} }
]; ];

View File

@ -51,8 +51,8 @@ beestat.layer.dashboard.prototype.decorate_ = function(parent) {
var user = beestat.get_user(); var user = beestat.get_user();
if ( if (
user.json_patreon_status !== null && user.patreon_status !== null &&
user.json_patreon_status.patron_status === 'active_patron' user.patreon_status.patron_status === 'active_patron'
) { ) {
show_patreon_card = false; show_patreon_card = false;
} }

View File

@ -179,15 +179,15 @@ beestat.layer.load.prototype.decorate_ = function(parent) {
beestat.setting('temperature_unit', thermostat.temperature_unit); beestat.setting('temperature_unit', thermostat.temperature_unit);
// Rename series if only one stage is available. // Rename series if only one stage is available.
if (ecobee_thermostat.json_settings.coolStages === 1) { if (ecobee_thermostat.settings.coolStages === 1) {
beestat.series.sum_compressor_cool_1.name = 'Cool'; beestat.series.sum_compressor_cool_1.name = 'Cool';
} }
if (ecobee_thermostat.json_settings.heatStages === 1) { if (ecobee_thermostat.settings.heatStages === 1) {
beestat.series.sum_compressor_heat_1.name = 'Heat'; beestat.series.sum_compressor_heat_1.name = 'Heat';
} }
// Fix some other stuff for non-heat-pump. // Fix some other stuff for non-heat-pump.
if (ecobee_thermostat.json_settings.hasHeatPump === false) { if (ecobee_thermostat.settings.hasHeatPump === false) {
beestat.series.auxiliary_heat_1.name = beestat.series.auxiliary_heat_1.name =
beestat.series.sum_compressor_heat_1.name; beestat.series.sum_compressor_heat_1.name;
beestat.series.auxiliary_heat_1.color = beestat.series.auxiliary_heat_1.color =