From 15386edd7b0f939d8925423eb27fa2ebcadee3b9 Mon Sep 17 00:00:00 2001 From: DrChainsaw Date: Thu, 24 May 2018 14:52:56 +0200 Subject: [PATCH 1/2] added arm, partialarm and disarm functionality --- sectoralarm/__main__.py | 12 ++++++--- sectoralarm/session.py | 55 ++++++++++++++++++++++++++++++++++------- sectoralarm/urls.py | 19 ++++++++++++++ 3 files changed, 74 insertions(+), 12 deletions(-) diff --git a/sectoralarm/__main__.py b/sectoralarm/__main__.py index c985f25..5eac924 100644 --- a/sectoralarm/__main__.py +++ b/sectoralarm/__main__.py @@ -142,9 +142,15 @@ 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..9328187 100644 --- a/sectoralarm/session.py +++ b/sectoralarm/session.py @@ -145,27 +145,64 @@ 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) return json.loads(response.text) + def get_history(self, offset=0): """ Get recent events """ diff --git a/sectoralarm/urls.py b/sectoralarm/urls.py index 4a5b409..cce113e 100644 --- a/sectoralarm/urls.py +++ b/sectoralarm/urls.py @@ -50,7 +50,26 @@ def disarm(username, password, panel, code): password=password, panel=panel, 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 ( From 172533e250a4a3aebfedce5ce889089fa1ac794c Mon Sep 17 00:00:00 2001 From: DrChainsaw Date: Thu, 24 May 2018 15:30:36 +0200 Subject: [PATCH 2/2] fixed flake fails --- sectoralarm/__main__.py | 9 +++------ sectoralarm/session.py | 12 ++++-------- sectoralarm/urls.py | 5 ++++- 3 files changed, 11 insertions(+), 15 deletions(-) diff --git a/sectoralarm/__main__.py b/sectoralarm/__main__.py index 5eac924..cef1806 100644 --- a/sectoralarm/__main__.py +++ b/sectoralarm/__main__.py @@ -143,14 +143,11 @@ def main(): if args.command == COMMAND_SET: if args.device == 'alarm': if args.new_status == 'DISARMED': - print_result(session.disarm( - args.code)) + print_result(session.disarm(args.code)) if args.new_status == 'ARMED_HOME': - print_result(session.partialarm( - args.code)) + print_result(session.partialarm(args.code)) if args.new_status == 'ARMED_AWAY': - print_result(session.arm( - args.code)) + 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 9328187..214c001 100644 --- a/sectoralarm/session.py +++ b/sectoralarm/session.py @@ -153,8 +153,7 @@ def disarm(self, code): """ response = None try: - response = requests.get( - urls.disarm( + response = requests.get(urls.disarm( self._username, self._password, self._panel, @@ -163,7 +162,7 @@ def disarm(self, code): raise RequestError(ex) _validate_response(response) return json.loads(response.text) - + def arm(self, code): """ Arm alarm @@ -172,8 +171,7 @@ def arm(self, code): """ response = None try: - response = requests.get( - urls.arm( + response = requests.get(urls.arm( self._username, self._password, self._panel, @@ -191,8 +189,7 @@ def partialarm(self, code): """ response = None try: - response = requests.get( - urls.partialarm( + response = requests.get(urls.partialarm( self._username, self._password, self._panel, @@ -202,7 +199,6 @@ def partialarm(self, code): _validate_response(response) return json.loads(response.text) - def get_history(self, offset=0): """ Get recent events """ diff --git a/sectoralarm/urls.py b/sectoralarm/urls.py index cce113e..7f213a2 100644 --- a/sectoralarm/urls.py +++ b/sectoralarm/urls.py @@ -50,7 +50,8 @@ def disarm(username, password, panel, code): password=password, panel=panel, code=code) - + + def arm(username, password, panel, code): return ( '{base_url}/arm?username={username}&password={password}' @@ -61,6 +62,7 @@ def arm(username, password, panel, code): panel=panel, code=code) + def partialarm(username, password, panel, code): return ( '{base_url}/partialarm?username={username}&password={password}' @@ -71,6 +73,7 @@ def partialarm(username, password, panel, code): panel=panel, code=code) + def disarm_and_unlock(username, password, panel, code): return ( '{base_url}/ArmAndLock?username={username}&password={password}'