diff --git a/sectoralarm/__main__.py b/sectoralarm/__main__.py index c985f25..cef1806 100644 --- a/sectoralarm/__main__.py +++ b/sectoralarm/__main__.py @@ -142,9 +142,12 @@ def main(): offset=args.offset)) if args.command == COMMAND_SET: if args.device == 'alarm': - print_result(session.set_arm_state( - args.code, - args.new_status)) + if args.new_status == 'DISARMED': + print_result(session.disarm(args.code)) + if args.new_status == 'ARMED_HOME': + print_result(session.partialarm(args.code)) + if args.new_status == 'ARMED_AWAY': + print_result(session.arm(args.code)) if args.device == 'lock': if args.new_status == 'lock': print_result(session.lock_doorlock( diff --git a/sectoralarm/session.py b/sectoralarm/session.py index 9598534..214c001 100644 --- a/sectoralarm/session.py +++ b/sectoralarm/session.py @@ -145,22 +145,55 @@ def get_lock_status(self): res = json.loads(response.text) return res - def set_arm_state(self, code, state): + def disarm(self, code): + """ Disarm alarm + + Args: + code (str): Personal alarm code (four or six digits) + """ + response = None + try: + response = requests.get(urls.disarm( + self._username, + self._password, + self._panel, + code)) + except requests.exceptions.RequestException as ex: + raise RequestError(ex) + _validate_response(response) + return json.loads(response.text) + + def arm(self, code): + """ Arm alarm + + Args: + code (str): Personal alarm code (four or six digits) + """ + response = None + try: + response = requests.get(urls.arm( + self._username, + self._password, + self._panel, + code)) + except requests.exceptions.RequestException as ex: + raise RequestError(ex) + _validate_response(response) + return json.loads(response.text) + + def partialarm(self, code): """ Set alarm state Args: code (str): Personal alarm code (four or six digits) - state (str): 'ARMED_HOME', 'ARMED_AWAY' or 'DISARMED' """ response = None try: - response = requests.put( - urls.set_armstate(self._giid), - headers={ - 'Accept': 'application/json, text/javascript, */*; q=0.01', - 'Content-Type': 'application/json', - 'Cookie': 'vid={}'.format(self._vid)}, - data=json.dumps({"code": str(code), "state": state})) + response = requests.get(urls.partialarm( + self._username, + self._password, + self._panel, + code)) except requests.exceptions.RequestException as ex: raise RequestError(ex) _validate_response(response) diff --git a/sectoralarm/urls.py b/sectoralarm/urls.py index 4a5b409..7f213a2 100644 --- a/sectoralarm/urls.py +++ b/sectoralarm/urls.py @@ -52,6 +52,28 @@ def disarm(username, password, panel, code): code=code) +def arm(username, password, panel, code): + return ( + '{base_url}/arm?username={username}&password={password}' + '&panel={panel}&armCode={code}').format( + base_url=BASE_URL, + username=username, + password=password, + panel=panel, + code=code) + + +def partialarm(username, password, panel, code): + return ( + '{base_url}/partialarm?username={username}&password={password}' + '&panel={panel}&armCode={code}').format( + base_url=BASE_URL, + username=username, + password=password, + panel=panel, + code=code) + + def disarm_and_unlock(username, password, panel, code): return ( '{base_url}/ArmAndLock?username={username}&password={password}'