<?php
namespace ControlScripts;
use \SHServ\Entities\Device;
class OfficeRoomScope extends \SHServ\Middleware\ControlScripts implements \SHServ\Implements\ControlScriptsInterface {
public function register_events_handlers(): void {
}
public function register_actions_scripts(): void {
$this -> add_action_script([
"alias" => "computer_table_lamp_on",
"name" => "ВКЛ комп. лампу",
"icon" => '<i class="ph ph-lamp"></i>',
"description" => "Включить настольную компьютерную лампу",
"author" => "Eugene Sukhodolskiy"
], function($params) {
return $this -> lamp_switch("computer_table_lamp", true);
});
$this -> add_action_script([
"alias" => "computer_table_lamp_off",
"name" => "ВЫКЛ комп. лампу",
"icon" => '<i class="ph ph-lamp"></i><i class="ph ph-x"></i>',
"description" => "Выключить настольную компьютерную лампу",
"author" => "Eugene Sukhodolskiy"
], function($params) {
return $this -> lamp_switch("computer_table_lamp", false);
});
$this -> add_action_script([
"alias" => "craft_table_lamp_on",
"name" => "ВКЛ крафт. лампу",
"icon" => '<i class="ph ph-lamp"></i>',
"description" => "Включить настольную лампу на столе для крафта",
"author" => "Eugene Sukhodolskiy"
], function($params) {
return $this -> lamp_switch("craft_table_lamp", true);
});
$this -> add_action_script([
"alias" => "craft_table_lamp_off",
"name" => "ВЫКЛ крафт. лампу",
"icon" => '<i class="ph ph-lamp"></i><i class="ph ph-x"></i>',
"description" => "Выключить настольную лампу на столе для крафта",
"author" => "Eugene Sukhodolskiy"
], function($params) {
return $this -> lamp_switch("craft_table_lamp", false);
});
}
public function register_regular_scripts(): void {
}
// ACTIONS
protected function lamp_switch(String $device_alias, Bool $state = false): Array {
$relay_api = $this -> devices() -> by_alias($device_alias) -> device_api();
if($relay_api instanceof \SHServ\Tools\DeviceAPI\Relay) {
$status = $relay_api -> get_status();
if(isset($status["channels"][0]["state"]) and $status["channels"][0]["state"] != ($state ? "on" : "off")) {
return [
"device" => $relay_api -> set_state($state)
];
}
}
return [
"result" => false
];
}
}