diff --git a/README.md b/README.md index 1d65d94..c8c5105 100644 --- a/README.md +++ b/README.md @@ -41,9 +41,9 @@ docker run \ ``` rest: - scan_interval: 60 - resource: http://192.168.1.162:8125/123 + resource: http://192.168.1.100:5000/123 sensor: - - name: "Front Door" + - name: "Front Door Lock" value_template: "OK" json_attributes: - "autoLockTime" @@ -56,8 +56,33 @@ rest: - "passageModeAutoUnlock" - "soundVolume" - "tamperAlert" + + - scan_interval: 60 + resource: http://192.168.1.100:5000/123/getstatus + sensor: + - name: "Front Door ttlock Status" + value_template: "{{ value_json.state }}" + unique_id: frontdoor_ttlock_status + json_attributes: + - "sensorState" + - "state" + + rest_command: - unlock_door: - url: "http://192.168.1.162:8125/123/unlock" + unlock_front_door: + url: "http://192.168.1.100:5000/123/unlock" + method: get + lock_front_door: + url: "http://192.168.1.100:5000/123/lock" method: get -``` \ No newline at end of file + +lock: + - platform: template + name: Front Door + value_template: "{{ state_attr('sensor.frontdoor_ttlock_status', 'state') | int(0) != 1 }}" + optimistic: true + lock: + - service: rest_command.lock_front_door + unlock: + - service: rest_command.unlock_front_door +``` diff --git a/ttlock_rest.py b/ttlock_rest.py index 165bb09..0051066 100644 --- a/ttlock_rest.py +++ b/ttlock_rest.py @@ -53,6 +53,18 @@ def handle_unlock(lock): if response.status_code == 200: return(response.json()) +def handle_lock(lock): + get_token() + data = {"clientId": clientId, + "accessToken": accessToken, + "lockId": lock, + "date": current_milli_time() + } + + response = requests.post("https://euapi.ttlock.com/v3/lock/lock", data) + + if response.status_code == 200: + return(response.json()) def request_lock(lock): get_token() @@ -78,6 +90,10 @@ def hello(): def unlock(lock): return handle_unlock(lock) +@app.route("//lock",methods = ['POST', 'GET']) +def lock(lock): + return handle_lock(lock) + @app.route("//users",methods = ['GET']) def users(lock): return handle_users(lock) @@ -88,4 +104,4 @@ def get_lock(lock): @app.route("//getstatus",methods = ['GET']) def get_lockStatus(lock): - return request_lockStatus(lock) \ No newline at end of file + return request_lockStatus(lock)