diff --git a/server/ControlScripts/TestScriptsScope.php b/server/ControlScripts/TestScriptsScope.php index 23285b6..325c646 100644 --- a/server/ControlScripts/TestScriptsScope.php +++ b/server/ControlScripts/TestScriptsScope.php @@ -40,38 +40,18 @@ // EVENTS HANDLERS protected function stand_btn_pressed_to_stand_relay() { - $this -> add_event_handler("button.press", function(Device $device, Array $data) { - $channel = intval($data["channel"]); + $this -> add_event_handler("button@backdoor_buttons(1).press", function(Device $device, Array $data) { + $relay = $this -> devices() -> by_alias("stand_relay"); + $relay -> device_api() -> toggle_channel(0); + $relay_channels = ($relay -> device_api() -> get_status())["channels"]; - switch($channel) { - case 0: - $relay = $this -> devices() -> by_alias("test_device_relay"); - $relay -> device_api() -> toggle_channel($channel); - - $relay_channels = ($relay -> device_api() -> get_status())["channels"]; - - $device_api = $device -> device_api(); - if($device_api instanceof \SHServ\Tools\DeviceAPI\Button) { - $device_api -> set_channel_state( - $relay_channels[$channel]["state"] == "on" ? "enabled" : "disabled", - $channel - ); - } - case 1: - $relay = $this -> devices() -> by_alias("test_back_street_light"); - $relay -> device_api() -> toggle_channel(0); - $relay_channels = ($relay -> device_api() -> get_status())["channels"]; - - $device_api = $device -> device_api(); - if($device_api instanceof \SHServ\Tools\DeviceAPI\Button) { - $device_api -> set_channel_state( - $relay_channels[0]["state"] == "on" ? "enabled" : "disabled", - $channel - ); - } - break; + $device_api = $device -> device_api(); + if($device_api instanceof \SHServ\Tools\DeviceAPI\Button) { + $device_api -> set_channel_state( + $relay_channels[0]["state"] == "on" ? "enabled" : "disabled", + $data["channel"] + ); } - }); } } \ No newline at end of file diff --git a/server/SHServ/Controllers/EventsController.php b/server/SHServ/Controllers/EventsController.php index c331e96..ba2b885 100644 --- a/server/SHServ/Controllers/EventsController.php +++ b/server/SHServ/Controllers/EventsController.php @@ -3,6 +3,7 @@ namespace SHServ\Controllers; use \SHServ\Models\Devices; +use \SHServ\Models\EventsModel; class EventsController extends \SHServ\Middleware\Controller { @@ -37,16 +38,15 @@ ob_end_flush(); flush(); - $result = events() -> app_call( - "{$device -> device_type}.{$event_name}", - [ - "device" => $device, - "data" => $data - ] - ); + $events_model = new EventsModel(); - return $this -> utils() -> response_success([ - "result" => $result - ]); + // For multichannels + if(isset($data["channel"])) { + $events_model -> channel_alias_device_event_call($device, $event_name, intval($data["channel"]), $data); + $events_model -> channel_device_event_call($device, $event_name, intval($data["channel"]), $data); + } + + $events_model -> alias_device_event_call($device, $event_name, $data); + $events_model -> global_device_event_call($device, $event_name, $data); } } \ No newline at end of file diff --git a/server/SHServ/Models/EventsModel.php b/server/SHServ/Models/EventsModel.php new file mode 100644 index 0000000..003ca66 --- /dev/null +++ b/server/SHServ/Models/EventsModel.php @@ -0,0 +1,53 @@ + app_call( + "{$device -> device_type}.{$event_name}", + [ + "device" => $device, + "data" => $data + ] + ); + } + + public function channel_device_event_call($device, $event_name, $channel_index, $data) { + return events() -> app_call( + "{$device -> device_type}({$channel_index}).{$event_name}", + [ + "device" => $device, + "data" => $data + ] + ); + } + + public function alias_device_event_call($device, $event_name, $data) { + $alias = $device -> alias; + return events() -> app_call( + "{$device -> device_type}@{$alias}.{$event_name}", + [ + "device" => $device, + "data" => $data + ] + ); + } + + public function channel_alias_device_event_call($device, $event_name, $channel_index, $data) { + $alias = $device -> alias; + return events() -> app_call( + "{$device -> device_type}@{$alias}({$channel_index}).{$event_name}", + [ + "device" => $device, + "data" => $data + ] + ); + } +} \ No newline at end of file diff --git a/server/SHServ/Routes.php b/server/SHServ/Routes.php index 7a7df2e..067cd77 100644 --- a/server/SHServ/Routes.php +++ b/server/SHServ/Routes.php @@ -76,11 +76,11 @@ // "/auth/signup" // ); - // $this -> router -> post( - // [ "event_name", "device_id", "data"], - // "{$this -> cn}\\EventsController@new_event", - // "/events/new" - // ); + $this -> router -> post( + [ "event_name", "device_id", "data"], + "{$this -> cn}\\EventsController@new_event", + "/events/new" + ); }