diff --git a/app/api/RoomsApi.php b/app/api/RoomsApi.php index 8c51e5d..23d62e1 100644 --- a/app/api/RoomsApi.php +++ b/app/api/RoomsApi.php @@ -18,6 +18,7 @@ class RoomsApi extends ApiController $subDevicesData = SubDeviceManager::getSubdevicesByRoomIds($roomIds); foreach ($subDevicesData as $subDeviceKey => $subDevice) { foreach ($subDevice as $key => $value) { + //Type Handling $type = null; if (strpos($subDevicesData[$subDeviceKey][$key]['type'], '-') !== false) { $type = $subDevicesData[$subDeviceKey][$key]['type']; @@ -27,6 +28,7 @@ class RoomsApi extends ApiController continue; } + //Record Translation $cammelCaseClass = ""; foreach (explode('-', $type) as $word) { $cammelCaseClass .= ucfirst($word); @@ -39,6 +41,25 @@ class RoomsApi extends ApiController continue; } $subDevicesData[$subDeviceKey][$key]['value'] = $deviceClass->translate($subDevicesData[$subDeviceKey][$key]['value']); + + //Connection Error Creation + $niceTime = Utilities::ago($LastRecordTime); + + $interval = $LastRecordTime->diff(new DateTime()); + $hours = $interval->format('%h'); + $minutes = $interval->format('%i'); + $lastSeen = ($hours * 60 + $minutes); + + if ( + $lastSeen < $subDevicesData[$subDeviceKey][$key]['sleep_time'] || + $subDevicesData[$subDeviceKey][$key]['type'] == "on/off" || + $subDevicesData[$subDeviceKey][$key]['type'] == "door" || + $subDevicesData[$subDeviceKey][$key]['type'] == "wather" + ) { + $connectionError = false; + } + $subDevicesData[$subDeviceKey][$key]['connection_error'] = $connectionError + } } diff --git a/app/api/WidgetApi.php b/app/api/WidgetApi.php index 2630736..3500b39 100644 --- a/app/api/WidgetApi.php +++ b/app/api/WidgetApi.php @@ -46,9 +46,9 @@ class WidgetApi extends ApiController $response = null; $connectionError = true; - $subDeviceData = SubDeviceManager::getSubDevice($subDeviceId); - $deviceData = DeviceManager::getDeviceById($subDeviceData['device_id']); + $subDeviceData = SubDeviceManager::getSubdeviceDetailById($subDeviceId); + //TODO: zeptat se @Patrik Je Graf Dobře Seřazený na DESC ? $events = RecordManager::getAllRecordForGraph($subDeviceId, $period, $groupBy[$period]); if ( count($events) == 0){ @@ -65,20 +65,6 @@ class WidgetApi extends ApiController $LastRecordTime = new DateTime(reset($events)['time']); $niceTime = Utilities::ago($LastRecordTime); - $interval = $LastRecordTime->diff(new DateTime()); - $hours = $interval->format('%h'); - $minutes = $interval->format('%i'); - $lastSeen = ($hours * 60 + $minutes); - - if ( - $lastSeen < $deviceData['sleep_time'] || - $subDeviceData['type'] == "on/off" || - $subDeviceData['type'] == "door" || - $subDeviceData['type'] == "wather" - ) { - $connectionError = false; - } - $labels = []; $values = []; foreach ($events as $key => $event) { @@ -95,6 +81,9 @@ class WidgetApi extends ApiController } $response = [ + 'room_id' => $subDeviceData['room_id'], + 'device_id' => $subDeviceData['device_id'], + 'lastConnectionTime' => (empty($niceTime) ? "00:00" : $niceTime), 'records' => $events, 'graph' => [ 'type' => $this->getDeviceConfig($subDeviceData['type'])['graph'], @@ -124,8 +113,7 @@ class WidgetApi extends ApiController ], ], ], - 'comError' => $connectionError, - 'lastConnectionTime' => (empty($niceTime) ? "00:00" : $niceTime), + ]; //TODO: Make Cleaner diff --git a/app/models/GoogleHome.php b/app/models/GoogleHome.php index 0ba09ca..aaf18aa 100644 --- a/app/models/GoogleHome.php +++ b/app/models/GoogleHome.php @@ -26,6 +26,10 @@ class GoogleHome { } } + if ($traids < 0){ + continue; + } + $tempDevice = [ 'id' => (string) $deviceData['device_id'], 'type' => $actionType, diff --git a/app/models/managers/SubDeviceManager.php b/app/models/managers/SubDeviceManager.php index 7ac3aec..9c51261 100644 --- a/app/models/managers/SubDeviceManager.php +++ b/app/models/managers/SubDeviceManager.php @@ -5,7 +5,7 @@ class SubDeviceManager public static function getAllSubDevices($deviceId = null) { - if ($deviceId == null){ + if ($deviceId == null) { return Db::loadAll("SELECT * FROM subdevices"); } return Db::loadAll("SELECT * FROM subdevices WHERE device_id = ?", array($deviceId)); @@ -72,15 +72,16 @@ class SubDeviceManager return Db::loadAll("DELETE FROM subdevices WHERE subdevice_id = ?", array($subDeviceId)); } - public static function getSubdevicesByRoomIds($roomIds = NULL) { - if(empty($roomIds)) return NULL; + public static function getSubdevicesByRoomIds($roomIds = NULL) + { + if (empty($roomIds)) return NULL; //TODO: @Patrik Check line 89 $rows = Db::loadAll(" - SELECT d.room_id, sd.subdevice_id, sd.device_id, d.icon, d.name, sd.type, sd.unit, r.value FROM subdevices sd + SELECT d.room_id, d.sleep_time, sd.subdevice_id, sd.device_id, d.icon, d.name, sd.type, sd.unit, r.value FROM subdevices sd JOIN devices d ON sd.device_id = d.device_id JOIN records r ON r.subdevice_id = sd.subdevice_id - WHERE d.room_id IN (".str_repeat("?,", count($roomIds)-1)."?) + WHERE d.room_id IN (" . str_repeat("?,", count($roomIds) - 1) . "?) /*AND value != '999'*/ AND r.record_id IN ( SELECT MAX(record_id) @@ -92,10 +93,21 @@ class SubDeviceManager ", $roomIds); $ret = []; - foreach($rows as $row){ + foreach ($rows as $row) { $ret[$row['room_id']][] = $row; } return $ret; } + + public static function getSubdeviceDetailById($subDeviceId){ + if (empty($subDeviceId)) return NULL; + + $rows = Db::loadOne("SELECT d.room_id, d.sleep_time, sd.subdevice_id, sd.type, sd.device_id FROM subdevices sd + JOIN devices d ON sd.device_id = d.device_id + WHERE sd.subdevice_id = ? ", [$subDeviceId]); + + return $rows; + + } } diff --git a/app/models/types/GoogleHomeDeviceTypes.php b/app/models/types/GoogleHomeDeviceTypes.php index df4a79e..293ba20 100644 --- a/app/models/types/GoogleHomeDeviceTypes.php +++ b/app/models/types/GoogleHomeDeviceTypes.php @@ -75,7 +75,7 @@ class GoogleHomeDeviceTypes { 'control-light' => 'action.devices.types.LIGHT', 'control-socket' => 'action.devices.types.OUTLET', 'control-temp' => 'action.devices.types.THERMOSTAT', - 'control-media' => 'action.devices.types.REMOTECONTROL', + 'control-media' => 'action.devices.types.REMOTECONTROL', ]; private static $traidWordBook = [