Uwaga! Poniższa instrukcja przeznaczona jest dla modułu Gate HTTP drugiej generacji!
Instrukcja przedstawia sposób integracji systemu Grenton zamkiem Tedee. Integracja dotyczy wersji API 1.25 i została wykonana w oparciu o informacje umieszczone na stronach:
https://tedee-tedee-api-doc.readthedocs-hosted.com/en/latest/index.html
https://api.tedee.com/
W poprzedniej instrukcji (link) wykorzystano sposób uwierzytelniania ROPC - wsparcie takiego sposobu zostało zakończone. Poniższa instrukcja przedstawia uwierzytelnianie kluczem osobistym - Personal Access Key (PAK).
Tedee
1. Integrację należy rozpocząć od utworzenia konta, sparowania zamka z urządzeniem mobilnym, skalibrowania zamka oraz wysterowania go z poziomu dedykowanej aplikacji.
2. Jeżeli wcześniej opisane kroki zostały wykonane poprawnie, można przejść do uzyskania klucza osobistego - Personal Access Key (PAK). W tym celu należy przejść do strony https://portal.tedee.com/ i zalogować się danymi do aplikacji mobilnej.
Uwaga! Klucz osobisty (PAK) przypisany jest do konta, a nie do konkretnego zamka!
3. Po zalogowaniu należy kliknąć ikonę widoczną w prawym górnym rogu i wybrać opcję "Personal access keys":
4. W przypadku pierwszego logowania należy dodać nowy klucz:
W celu wygenerowania klucza osobistego należy podać jego nazwę, czas ważności oraz uprawnienia, które będzie posiadał. (Należy zaznaczyć: Operate Lock, Device Read.)
Uwaga! Maksymalny czas ważności klucza osobistego to 5 lat!
5. Po wprowadzeniu wymaganych danych oraz zatwierdzeniu pojawi się okno z nowym kluczem, który należy skopiować:
Uwaga! Klucz będzie widoczny jednorazowo, dlatego należy go zapisać. W przypadku utraty klucza konieczne będzie utworzenie nowego.
Grenton
Chcąc dokonać integracji z zamkiem Tedee po stronie systemu Grenton należy wykonać opisane poniżej kroki:
1. W cechach użytkownika modułu Gate tworzymy następujące zmienne:
Uwaga! Wartość początkowa cechy tedee_PAK to wcześniej skopiowany klucz ze strony https://portal.tedee.com/
Uwaga! Wartość początkowa cechy tedee_lock_sn to numer seryjny posiadanego zamka. Wspomniana informacja jest dostępna w dedykowanej aplikacji: Moje urządzenia -> Zamek -> Ustawienia -> Informacje.
2. Następnie tworzymy obiekt wirtualny HttpRequest:
3. Ustawienia obiektu wirtualnego TedeeLock_DeviceID, który pozwoli nam uzyskać ID zamka wyglądają następująco:
gdzie:
Host: https://api.tedee.com
Path: /api/v1.25/my/lock
QueryStringParams: \z
4. Następnie tworzymy skrypt Tedee_DeviceID_req:
local key = "Authorization: PersonalKey " .. Gate_HTTP->tedee_PAK .. "\r\n"
Gate_HTTP->TedeeLock_DeviceID->SetRequestHeaders(key)
Gate_HTTP->TedeeLock_DeviceID->SendRequest()
5. Dalej tworzymy skrypt Tedee_DeviceID_resp:
if(Gate_HTTP->TedeeLock_DeviceID->StatusCode==200) then
local resp = Gate_HTTP->TedeeLock_DeviceID->ResponseBody
Gate_HTTP->tedee_lock_sn_get=resp.result[num].serialNumber
if(Gate_HTTP->tedee_lock_sn==Gate_HTTP->tedee_lock_sn_get) then
Gate_HTTP->tedee_lock_id = resp.result[num].id
else
Gate_HTTP->Tedee_DeviceID_resp(num+1)
end
end
gdzie zmienna num jest parametrem wspomnianego skryptu:
Uwaga! W przedstawionym przykładzie wykorzystywany był jeden Bridge oraz jeden zamek Tedee.
6. Skrypt ten z wartością parametru num równą 1 należy przypisać do zdarzenia OnResponse obiektu wirtualnego TedeeLock_DeviceID:
7. Wysyłając konfigurację do CLU oraz wywołując skrypt Tedee_DeviceID_req zmienne użytkownika w module Gate powinny przyjąć odpowiednie wartości:
8. Następnie tworzymy kolejny obiekt wirtualny HttpRequest. Ustawienia obiektu wirtualnego TedeeLock_LockID, który pozwoli nam uzyskać informacje na temat zamka (m.in. stan urządzenia, poziom naładowania baterii) wyglądają następująco:
gdzie:
Host: https://api.tedee.com
Path: /api/v1.25/my/lock/
QueryStringParams: \z
9. Następnie tworzymy skrypt Tedee_LockID_req:
local path_1 = "/api/v1.25/my/lock/" .. Gate_HTTP->tedee_lock_id .. "/sync"
Gate_HTTP->TedeeLock_LockID->SetPath(path_1)
local key = "Authorization: PersonalKey " .. Gate_HTTP->tedee_PAK .. "\r\n"
Gate_HTTP->TedeeLock_LockID->SetRequestHeaders(key)
Gate_HTTP->TedeeLock_LockID->SendRequest()
10. Dalej tworzymy skrypt Tedee_LockID_resp:
if(Gate_HTTP->TedeeLock_LockID->StatusCode==200) then
local resp = Gate_HTTP->TedeeLock_LockID->ResponseBody
Gate_HTTP->tedee_lock_state = resp.result.lockProperties.state
Gate_HTTP->tedee_lock_charging = resp.result.lockProperties.isCharging
Gate_HTTP->tedee_lock_battery = resp.result.lockProperties.batteryLevel
end
11. Skrypt ten należy przypisać do zdarzenia OnResponse obiektu wirtualnego TedeeLock_LockID:
12. Wysyłając konfigurację do CLU oraz wywołując skrypty Tedee_DeviceID_req, a następnie Tedee_LockID_req zmienne użytkownika w module Gate powinny przyjąć odpowiednie wartości:
13. Następnie tworzymy kolejny obiekt wirtualny HttpRequest. Ustawienia obiektu wirtualnego TedeeLock_Actions wyglądają następująco:
gdzie:
Host: https://api.tedee.com
Path: /api/v1.25/my/lock/
QueryStringParams: \z
14. Następnie tworzymy skrypt Tedee_Action_Open_req, którego wywołanie po przesłaniu konfiguracji spowoduje otwarcie zamka:
local path_1 = "/api/v1.25/my/lock/" .. Gate_HTTP->tedee_lock_id .. "/operation/unlock"
Gate_HTTP->TedeeLock_Actions->SetPath(path_1)
local key = "Authorization: PersonalKey " .. Gate_HTTP->tedee_PAK .. "\r\n"
Gate_HTTP->TedeeLock_Actions->SetRequestHeaders(key)
Gate_HTTP->TedeeLock_Actions->SendRequest()
15. Analogicznie tworzymy skrypt Tedee_Action_Close_req, którego wywołanie po przesłaniu konfiguracji spowoduje zamknięcie zamka:
local path_1 = "/api/v1.25/my/lock/" .. Gate_HTTP->tedee_lock_id .. "/operation/lock"
Gate_HTTP->TedeeLock_Actions->SetPath(path_1)
local key = "Authorization: PersonalKey " .. Gate_HTTP->tedee_PAK .. "\r\n"
Gate_HTTP->TedeeLock_Actions->SetRequestHeaders(key)
Gate_HTTP->TedeeLock_Actions->SendRequest()
16. Następnie tworzymy skrypt Tedee_Action_Pull_req, którego wywołanie po przesłaniu konfiguracji spowoduje odciągnięcie zapadki przy otwartych drzwiach:
local path_1 = "/api/v1.25/my/lock/" .. Gate_HTTP->tedee_lock_id .. "/operation/pull"
Gate_HTTP->TedeeLock_Actions->SetPath(path_1)
local key = "Authorization: PersonalKey " .. Gate_HTTP->tedee_PAK .. "\r\n"
Gate_HTTP->TedeeLock_Actions->SetRequestHeaders(key)
Gate_HTTP->TedeeLock_Actions->SendRequest()
17. Na końcu wywołanie skryptu Tedee_DeviceID_req przypisujemy do zdarzenia OnInit w module Gate Http:
18. Wywołanie skryptu Tedee_LockID_req umieszczamy w skrypcie Tedee_DeviceID_resp:
19. Tak utworzoną konfigurację wysyłamy do modułu Gate HTTP.
Sposób sterowania zamkiem Tedee za pomocą aplikacji myGrenton został przedstawiony w poniższym artykule:
Sterowanie zamkiem Tedee (PAK)