RemoteMe posiada mechanizm, który pozwala użytkownikom ( gościom ) posiadającym odpowiedni link sterować Waszymi urządzeniami przez stronę internetową. Tak wygenerowany klucz pozwala na
- Określić czas przez jaki dany gość może sterować stroną ( w trybie jedna osoba naraz)
- Liczbę kredytów gdzie po określonej akcji liczba kredytów się zmniejsza
- Wybór które urządzenia nie będą sterowane przez określony link
- Określenie czy sterowanie może się odbywać przez jedną osobę naraz czy wiele
- Czas kredyty mogą być powiększane przez wykorzystanie kuponów
- kupon może być jednorazowy (wykorzystany tylko raz )
- wielokrotny wiele osób (sesji) może realizować kupon dowolną ilość razy
Generowanie strony WWW gościa
Strona ta będzie służyła gościowi do interakcji z Waszymi urządzeniami. Na stronie tej można też wypisywać dane – podobnie jak przy stronie do sterowania w normalnym trybie.
Można dodać komponenty identycznie jak się to robi budując normalną stronę. Dodatkowo można wskazać ile minimalnie kredytów jest potrzebne, żeby komponent był aktywny:
Gdy kredyt gościa jest poniżej wpisanej wartości przycisk będzie nieaktywny. (Ponieważ nieaktywność przycisku jest ustawiana po stronie przeglądarki użytkownika zaleca się sprawdzanie wartości kredytów również po stronie urządzenia.( Przy komunikacji WebRTC punkty wysyłane z przeglądarki mogą być przez sprytnego hakera- użytkownika zafałszowane – żeby temu przeciwdziałać po stronie urządzenia Pythonowego najlepiej stworzyć zmienna która będzie przechowywać wartość punktów dla aktywnej sesji.))
Oczywiście można budować bardziej skomplikowane komponenty wtedy, żeby mieć po stronie przeglądarki aktualny czas i kredyty w skrypcie trzeba ustawić listenery które zostaną zawołane z aktualną wartościa kredytów i czasu
Włączenie trybu gościa
Żeby pozwolić użytkownikom na sterowanie stroną WWW potrzebny jest klucz ( jest to link po otwarciu którego dana osoba może sterować stroną)
- Ustawienia globalne
- Czy naraz jedną stroną może sterować więcej niż jeden gość
- Wygenerowanie kuponu do zwiększenia kredytów, czasu i priorytetu w kolejce oczekujących
- Dodanie nowego klucza
- Wygenerowany klucz
- Włączanie wyłączanie klucza
- Właściwości klucza
- Nazwa
- Kredyt na początku
- Czas na początku
- Identifikator ( przydaje się w obsłudze po stronie urządzeń)
- Link do strony
Żeby wygenerować klucz potrzebujemy istniejącą stronę, wtedy klikamy w przycisk dodania nowego klucza (3) :
- Nazwa klucza ( nie ma większego znaczenia – po porstu informacja dla nas)
- Kredyt jaki dostaną użytkownicy na początku ( i po odnowieniu sesji)
- Czas w sekundach ( aktywny wtedy gdy naraz może korzystać jedna osoba)
- Ignorowane urządzenia – do tych urządzeń np po zmianie zmiennej nie zostanie wysłany nowy stan (ale gdy urządzenie zostanie zresetowane a zmienna była persistence stan zmiennej zostanie pobrany)
- Jeżeli jest zaznaczone to użytkownikowi po wyczerpaniu kredytów zostanie przerwany dostęp
- Jeżeli nie udało się ustanowić połączenia webRTC w czasie 15s gościowi zostanie przerwany dostęp ( przydatne gdy pozwalamy użytkownikom na podgląd z kamery RPi )
- Identyfikator klucza który jest przekazywany do urządzeń ( link do dokumentacji )
- Czy dany klucz ma być aktywny
Po wygenerowaniu klucza możemy kliknąć na ikonkę linka ( (7) na poprzednim screenie) i dać go osobom którym chcemy dać dostęp.
Dodatkowe pliki
Po wygenerowaniu pierwszego klucza w naszej stronie internetowej powstaną nowe pliki:
- welcome.html – jest to plik wyświetlany gościom przed uzyskaniem dostępu
- finish.html – plik wyświetlany gościom po utracie dostępu ( gdy się skończył czas lub wyczerpał kredyt (gdy jest odpowiednie ustawienie))
- error.html – gdy jest problem z uzyskaniem dostępu ( niemożność ustanowienie połączenia webrtc (w odpowiednim trybie), błędne otwarcie strony z dostępem itp )
- guest.css – plik ze stylami do plików wylistowanych wyżej
Polecamy zmienić zawartość plików dostosowując do naszych potrzeb.
Strona gościa – czyli co zobaczy użytkownik po wejściu w link z klucza
Gość po otwarciu linka wygenerowanego w poprzednim kroku otrzyma stronę ( w czasie testów najlepiej link otwierać w osobnej przeglądarce lub w trybie incognito):
Przed uzyskaniem dostępu:
- Właściwości przyszłej sesji do sterowania
- Miejsce gdzie można zrealizować kupony
- Po kliknięciu użytkownik trafia na kolejkę oczekujących ( w trybie jeden użytkownik naraz) albo dostaje dostęp w punktami i kredytami zdefiniowanymi w (1)
- Wylogowanie ( wykorzystane kupony przepadają )
- Obszar strony WWW (wyświetlony jest plik welcome.html)
Powyższa strona w głównej mierze pozwala na wykorzystanie kuponów i poprzez plik welcome.html instruuje gościa co będzie mógł robić w następnym kroku
Uzyskanie dostępu
Po kliknięciu przycisku (3) w poprzednim kroku ( i gdy nadejdzie kolei gościa ( w trybie jeden użytkownik naraz)) gość będzie miał możliwość sterowania naszymi urządzeniami:
- Strona zawiera jeden przycisk z label “Some Button”,
- Pozostały czas
- Pozostałe kredyty.
W tak wygenerowanej stronie możemy za każdym razem gdy zostanie wciśnięty przycisk obniżać kredyt (obniżenie kredytu następuje po wywołaniu odpowiedniej funkcji na urządzeniu docelowym).
Programowanie ESP
Żeby gość mógł sterować naszym ESP potrzebny jest oczywiście program wgrany do ESP. Robimy to podobnie jak dla zwykłego sterowania ESP. Najwygodniej korzystając z “wizarda” do generowania kodu, jedyne co trzeba zmienić w czasie generowania kodu to zaznaczyć opcję, że program ma wspierać wypożyczenie “Guest support”
Spowoduje to zmiany w wygenerowanym kodzie :
1 2 3 4 5 |
void onLedChange(boolean b, uint16_t sessionId,uint16_t identifier, uint16_t credit, uint16_t time) { if (sessionId!=0) { remoteMe.sendDecreaseWebPageTokenCreditMessage(sessionId, 3, 4);//lets decrease credit and time } } |
przy zmianie zmiennej dodatkowo otrzymamy parametry z aktualnym czasem,kredytem pozostałym gościowi, identyfikator sesji który możemy użyć do obniżenia (zwiększenia kredytu), i identyfikator klucza – co się może przydać np gdy dla danego klucza nie chcemy obniżać kredytu czy czasu. Podobnie funkcje do obsługi wiadomości gościa posiadają podobne parametry więcej jest opisane w dokumentacji kodu dla trybu wypożyczenia
Programowanie Urządzeń Python
podobnie jak dla urządzeń ESP najlepiej użyć generatora kodu i podobnie jak dla ESP wygenerować kod z funkcją wsparcia wypożyczenia.
identycznie jak dla ESP funkcję będą posiadały dodatkowe parametry jak pozostały czas identyfikator sesji klucza, będzie możliwość pomniejszania czasu i kredytu z urządzenia pythonowego dla określonej sesji użytkownika dokumentacji kodu dla trybu wypożyczenia
Generowanie kuponów
Możliwe, że chcemy dla danego gościa powiększyć posiadany czas i kredyty, można to zrobić generując klucz z odpowiednimi wartościami – wtedy każdy kto użyje linku będzie posiadał na starcie odpowiedni czas i kredyty, Drugą opcją jest wygenerowanie kuponów które potem możemy dać/ sprzedać odpowiednik użytkownikom, a oni wpisując je na stronie startowej powiększą swój limit czasowo – kredytowy
pojawi się okno
- Wartość doładowania czasu (w sekundach)
- Wartość doładowania kredytów
- Priorytet w kolejce (gdy ze strony może korzystać jeden gość naraz)
- Data ważności kredytu ( nie większa niż pół roku )
- Tylko jedne użycie – jeżeli użytkownik użyje kupon nikt inny nie może użyć ponownie kodu
- Ile kuponów wygenerować
Pojawi się okno gdzie jeden kupon jest w jednej linii:
Tak wygenerowane kupony należy zapisać – nie będzie możliwości ich późniejszego ponownego wyświetlenia.
Teraz gdy chcemy zwiększyć czas i/lub kredyt danemu gościowi wysyłamy mu jeden z wygenerowanych kuponów