diff --git a/database_dump/smart-home-server_device_auth.sql b/database_dump/smart-home-server_device_auth.sql index 34d04d1..b464248 100644 --- a/database_dump/smart-home-server_device_auth.sql +++ b/database_dump/smart-home-server_device_auth.sql @@ -33,7 +33,8 @@ `device_token` varchar(32) NOT NULL, `server_token` varchar(32) NOT NULL COMMENT 'dont using yet', `state` varchar(16) NOT NULL DEFAULT 'active' COMMENT 'expire | killed | active', - `create_at` timestamp NOT NULL DEFAULT current_timestamp() + `update_at` timestamp NOT NULL DEFAULT current_timestamp(), + `create_at` timestamp NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; -- diff --git a/database_dump/smart-home-server_table_devices.sql b/database_dump/smart-home-server_table_devices.sql index 078d206..7dd05e1 100644 --- a/database_dump/smart-home-server_table_devices.sql +++ b/database_dump/smart-home-server_table_devices.sql @@ -40,7 +40,7 @@ `connection_state` varchar(50) NOT NULL COMMENT 'active | lost', `state` varchar(16) NOT NULL DEFAULT 'active' COMMENT 'active | removed | freezed', `description` text NOT NULL, - `lact_contact` timestamp NOT NULL, + `last_contact` timestamp NOT NULL, `update_at` timestamp NOT NULL DEFAULT current_timestamp(), `create_at` timestamp NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; diff --git a/server/SHServ/Entities/Device.php b/server/SHServ/Entities/Device.php index 0dd8620..c68a1f7 100644 --- a/server/SHServ/Entities/Device.php +++ b/server/SHServ/Entities/Device.php @@ -3,6 +3,7 @@ namespace SHServ\Entities; use \SHServ\Entities\DeviceAuth; +use \SHServ\Tools\DeviceAPI\Base; class Device extends \SHServ\Middleware\Entity { public static $table_name = "devices"; @@ -13,13 +14,14 @@ ]; protected $device_auth; + protected $device_api; public function __construct(Int $id, Array $data = []){ parent::__construct( self::$table_name, $id, $data - ); + ); } public function remove() { @@ -46,4 +48,29 @@ return $this -> device_auth ?? null; } + + public function get_device_api(): Base | null { + if($this -> device_api) { + return $this -> device_api; + } + + $this -> device_api = new Base($this -> device_ip); + + if($this -> get_auth()) { + $this -> device_api -> set_local_token($this -> get_auth() -> device_token); + } + + return $this -> device_api ?? null; + } + + public function set_device_token(String $token) { + $this -> get_device_api() -> remote_set_token($token); + if(!$this -> get_auth()) + return false; + + + $this -> get_auth() -> device_token = $token; + $this -> device_api -> set_local_token($token); + return $this -> get_auth() -> update(); + } } \ No newline at end of file diff --git a/server/SHServ/Entities/DeviceAuth.php b/server/SHServ/Entities/DeviceAuth.php index 80992e4..78ee7fe 100644 --- a/server/SHServ/Entities/DeviceAuth.php +++ b/server/SHServ/Entities/DeviceAuth.php @@ -2,7 +2,7 @@ namespace SHServ\Entities; -class Device extends \SHServ\Middleware\Entity { +class DeviceAuth extends \SHServ\Middleware\Entity { public static $table_name = "device_auth"; protected static $fields = [ "id", "device_id", "device_token", "server_token", "state", "create_at" diff --git a/server/SHServ/Models/Devices.php b/server/SHServ/Models/Devices.php index b116d05..c2cacc8 100644 --- a/server/SHServ/Models/Devices.php +++ b/server/SHServ/Models/Devices.php @@ -5,9 +5,9 @@ use \SHServ\Tools\DeviceScanner; use \SHServ\Tools\DeviceAPI\Base; use \SHServ\Entities\Device; -// use \SHServ\Entities\DeviceAuth; +use \SHServ\Entities\DeviceAuth; -class Device extends \SHServ\Middleware\Model { +class Devices extends \SHServ\Middleware\Model { public function connect_new_device(String $device_ip, String $alias = "", String $name = "") { // validate device @@ -17,7 +17,7 @@ return false; } - if($device_info["status"] != "setup") { + if($device_info["data"]["status"] != "setup") { return false; } @@ -47,7 +47,7 @@ // generate token - $device_token = app() -> utils() -> generate_token(16); + $device_token = app() -> utils -> generate_token(16); // create in table device_auth @@ -55,7 +55,7 @@ "device_id" => $device -> id(), "device_token" => $device_token, "server_token" => "", - "state" => "active" + "state" => "active", "create_at" => date("Y-m-d H:i:s") ]); @@ -63,6 +63,8 @@ return false; } + $device -> set_device_token($device_token); + return $device; } @@ -83,7 +85,7 @@ // reset device - if(!$device -> reset()) { + if(!$device -> get_device_api() -> reset()) { return false; } @@ -98,7 +100,7 @@ // remove from devices - return $device -> remove(); + return $device -> remove() ? true : false; } public function get_device_list(): Array { diff --git a/server/SHServ/Routes.php b/server/SHServ/Routes.php index 5c32488..8fe166b 100644 --- a/server/SHServ/Routes.php +++ b/server/SHServ/Routes.php @@ -59,6 +59,27 @@ $this -> router -> uri("/dev/test/device-api-base/action.html", "{$this -> cn}\\DevTestController@device_api_base__post_action"); $this -> router -> uri("/dev/test/device-api-base/set_device_name.html", "{$this -> cn}\\DevTestController@device_api_base__set_device_name"); $this -> router -> uri("/dev/test/device-api-base/reset.html", "{$this -> cn}\\DevTestController@device_api_base__reset"); + + $this -> router -> uri("/dev/test/model/devices/connect_new_device.html", function($args){ + $devices_model = new \SHServ\Models\Devices(); + + echo "
";
+ var_dump($devices_model -> connect_new_device("192.168.68.7", "test_device", "Test device"));
+ });
+
+ $this -> router -> uri("/dev/test/model/devices/unregistered_devices.html", function($args){
+ $devices_model = new \SHServ\Models\Devices();
+
+ echo "";
+ var_dump($devices_model -> get_unregistered_devices());
+ });
+
+ $this -> router -> uri("/dev/test/model/devices/remove_device.html", function($args){
+ $devices_model = new \SHServ\Models\Devices();
+
+ echo "";
+ var_dump($devices_model -> remove_device(6));
+ });
}
}