UWAGA Obecna wersja integracji jest tymczasowa. Wymaga ona internetu, przez co mogą występować opóźnienia. Pod koniec 2021 roku przez producenta zamka wdrożone ma zostać API lokalne i wtedy przygotujemy nową integrację – już docelową – wówczas trzeba będzie się na nią przenieść, bo metoda autoryzacji, z której tu korzystamy (ROPC) może wtedy przestać działać.
Pliki do pobrania:
Metoda autoryzacji przez nas użyta wymaga podania loginu i hasła do chmury tedee w parametrach bloczka – wykorzystujemy te dane poprzez metodę opisaną w oficjalnej dokumentacji producenta. Wszystko, co jest w bloczku jest widoczne – każdy może sobie podejrzeć, co z tymi danymi skrypt robi. Hasło jest zagwiazdkowane przez Node-RED, sam dostęp do Node-RED na MSERVach jest również zabezpieczony hasłem. Generalnie w naszej opinii integracja jest bezpieczna, ale przezornym polecamy ustawić solidne hasło dostępu do MSERVa i SmartHomeManagera – to jest podstawa.
W SHM powinniśmy dodać 2 obiekty typu czujnik – jeden będzie nam pokazywał stan, a drugi poziom baterii w zamku. Zapisujemy ich ID. Następnie dodajemy do SHM 2 flagi zwykłe (dodajemy obiekt, wybieramy z listy po lewej, do którego modułu ma być przypisany, a w kolumnie Numer wpisujemy numer flagi w tymże module) – mogą być przypisane do obojętnie jakiego modułu, najlepiej MSERV ale to żaden wymóg. One posłużą nam za ‘wywoływacz’ akcji ‘Otwórz’ i ‘Zamknij’. Tutaj musimy sobie zapamiętać, które to flagi i który moduł. Najlepiej je opisać w konfiguratorze, żeby ich nie użyć do czego innego. Nadajemy im czas włączenia równy ‘100′ – wtedy flaga będzie działała jak przycisk, czyli wysyłała tylko impuls.
Uwaga: w najbliższym czasie zostanie to zaktualizowane i będziemy dodawać do MSERVa flagę liniową. Na razie czekamy na dodanie jednej funkcjonalności do aplikacji.
Kliknij, aby powiększyć i otworzyć w nowej zakładce.
Opcjonalnie można również dodać obiekt powiązany w celu uporządkowania tych wartości w jednym polu.
W nowym CAN konfiguratorze możemy zobaczyć, że w M-SERV-s dostępne są flagi liniowe. Jedną z nich sobie opiszmy (nadajmy nazwę), żeby nie wykorzystać jej później gdzieś indziej nieświadomie. Flaga liniowa nam będzie przechowywała stan zamka w postaci liczbowej, zgodnie z legendą (z oficjalnej dokumentacji):
Number | Name |
---|---|
1 | Uncalibrated |
2 | Calibrating |
3 | Unlocked |
4 | SemiLocked |
5 | Unlocking |
6 | Locking |
7 | Pulled |
8 | Pulling |
9 | Unknown |
18 | Updating |
Od takiej flagi liniowej możemy później zrobić warunek i np. zapalić światło, podświetlić panel na zielono, czerwono lub inaczej, itd.
Kolejny krok integracji jest w Node-REDzie. Odpalamy Node-RED pod adresem http://ADRES_IP_MSERV:1880. Odrobina doświadczenia z Node-RED jest wskazana.
Za pomocą funkcji Import dostępnej w prawym górnym rogu ekranu, importujemy plik tedee.json. Uzyskamy taki oto bloczek:
Kliknij, aby powiększyć i otworzyć w nowej zakładce.
Po wejściu w niego uzupełniamy parametry:
Kliknij, aby powiększyć i otworzyć w nowej zakładce.
Wpisujemy kolejno login, hasło do konta Tedee. W aplikacji Tedee przechodzimy do naszego zamka, następnie na dole ekranu wciskamy koło zębate, przechodzimy do zakładki Informacje i w parametrach bloczka przepisujemy z aplikacji ID urządzenia.
W polu SHM State object ID wpisujemy obiekt, który stworzyliśmy w SmartHomeManagerze do przechowywania stanu zamka.
W polu SHM Battery level object ID wpisujemy obiekt, który stworzyliśmy w SmartHome Managerze do przechowywania stanu baterii.
W polu Linear flag ID wybieramy numer flagi liniowej, którą wykorzystamy.
Teraz podłączamy bloczek:
Kliknij, aby powiększyć i otworzyć w nowej zakładce.
Na wejściu bloczek będzie oczekiwał w msg.payload stringa ‘open’ albo ‘close’. Dlatego podpinamy dwa bloczki Ampio IN – jeden od flagi ‘otwórz’, drugi od flagi ‘zamknij’. Następnie za nimi dajemy bloczek switch oraz change. Switch weryfikuje, czy msg.payload jest równy 1, a change ustawia odpowiednio stringa ‘open’ lub ‘close’.
Osobom, które nie czują się pewnie z tym krokiem integracji, polecamy wczytać przykład zawarty w pliku tedee_example.json i sobie podejrzeć, jak to powinno być zrobione.
Na wyjściu mamy 4 ‘kropki’, stanowiące wyjścia. Pierwsza wysyła stan w formie liczbowej. Druga wysyła poziom baterii. Trzecia wysyła nam komendę RAW do ustawienia flagi liniowej, zaś czwarta wysyła żądania HTTP do API.
Do integracji wystarczy podpiąć wyjście trzecie i czwarte. Pod wyjście trzecie podpinamy bloczek Ampio, w którym wybieramy MSERVa (lub inny moduł z flagą liniową, tą samą którą przygotowaliśmy sobie w kroku 2 „Flaga liniowa”) i typ wyjścia – RAW CAN broadcast. Pod wyjście czwarte podpinamy bloczek HTTP Request i konfigurujemy go zgodnie ze zrzutem:
Kliknij, aby powiększyć i otworzyć w nowej zakładce.
Jako login i hasło podajemy dane do SmartHome Managera.
Po przypisaniu obiektów w SHM do jakiejś grupy, wchodzimy do aplikacji mobilnej i testujemy, Powinno to wyglądać mniej więcej tak:
Kliknij, aby powiększyć i otworzyć w nowej zakładce.
Aktualizacja stanu i baterii może chwilkę zająć – aktualizacja następuje co 10 sekund. Po kliknięciu przycisku otwórz lub zamknij zamek powinien wykonać tę akcję i zaktualizować stan. Po wywołaniu akcji otwórz/zamknij z Ampio, zamek przez 10 kolejnych sekund będzie się aktualizował co 1 sekundę, aby szybciej raportować stan. Następnie powróci do aktualizacji co 10 sekund.
Najnowsza wersja bibliotek Tedee może nie wspierać powyższego podejścia do wyświetlenia stanu baterii. W takim przypadku należy pobrać stan baterii z drugiego wyjścia bloczku Tedee Lock i wyświetlić stan w aplikacji mobilnej przy użyciu flagi liniowej. Do tego zadania może być przydatny poradnik Integracja systemu Ampio z Node-RED.
Jeśli chcemy, możemy sterować zamkiem z panelu lub wejścia jakiegoś modułu. W tym celu wystarczy stworzyć warunek przepisania stanu wejścia na flagę, którą sterujemy otwarciem lub zamknięciem zamka. Dodatkowo możemy robić warunki od stanu zamka – wystarczy zrobić warunek od flagi liniowej, przykładowo, jeśli jest ona równa 2, to znaczy, że zamek jest otwarty i możemy coś wtedy wywołać.