diff --git a/app/Routes.php b/app/Routes.php index 6e7f198..4995734 100644 --- a/app/Routes.php +++ b/app/Routes.php @@ -18,8 +18,12 @@ $router->any('/oauth', 'Oauth'); $router->post('/api/login', 'AuthApi@login'); $router->post('/api/logout', 'AuthApi@logout'); -$router->get('/api/devices', 'DevicesApi@default'); $router->get('/api/rooms', 'RoomsApi@default'); +$router->get('/api/rooms/:id/update', 'RoomsApi@update'); + +$router->get('/api/devices', 'DevicesApi@default'); + +$router->get('/api/widget/:id/run', 'WidgetApi@default'); $router->any('/api/HA/auth', 'Oauth'); $router->any('/api/HA', 'GoogleHomeApi@response'); diff --git a/app/api/RoomsApi.php b/app/api/RoomsApi.php index 340f09d..ff038ec 100644 --- a/app/api/RoomsApi.php +++ b/app/api/RoomsApi.php @@ -3,7 +3,7 @@ class RoomsApi extends ApiController{ public function default(){ - //$this->requireAuth(); + $this->requireAuth(); $response = []; $roomIds = []; $roomsData = RoomManager::getRoomsDefault(); @@ -23,4 +23,15 @@ class RoomsApi extends ApiController{ } $this->response($response); } + + public function update($roomId){ + //$this->requireAuth(); + + $subDevicesData = SubDeviceManager::getSubdevicesByRoomIds($roomIds); + + foreach ($roomsData as $roomKey => $roomData) { + $response[] = isset($subDevicesData[$roomData['room_id']]) ? $subDevicesData[$roomData['room_id']] : []; + } + $this->response($response); + } } diff --git a/app/api/WidgetApi.php b/app/api/WidgetApi.php new file mode 100644 index 0000000..3bd2847 --- /dev/null +++ b/app/api/WidgetApi.php @@ -0,0 +1,17 @@ +requireAuth(); + $response = null; + + $subDeviceData = SubDeviceManager::getSubDevice($subDeviceId); + if ($subDeviceData['type'] == 'on/off'){ + $lastValue = RecordManager::getLastRecord($subDeviceData['subdevice_id'])['value']; + RecordManager::create($subDeviceData['device_id'], 'on/off', !$lastValue); + $response = !$lastValue; + } + + $this->response($response); + } +}