Integracja z zamkiem Tedee z wykorzystaniem Personal Access Key (PAK)

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)