of 45

IoT - komunikacja TCP/IP w oparciu o Laravel

1. IoT - komunikacja TCP/IP 
 w oparciu o Laravel 2. Krzysztof Czechowski Head of Technology krzysztof.czechowski@b-mind.pl 3. Agenda 1. Wprowadzenie 2. Demo 3. Co…
0 views45 pages
All materials on our website are shared by users. If you have any questions about copyright issues, please report us to resolve them. We are always happy to assist you.
Documenttranscript
  • 1. IoT - komunikacja TCP/IP 
 w oparciu o Laravel
  • 2. Krzysztof Czechowski Head of Technology krzysztof.czechowski@b-mind.pl
  • 3. Agenda 1. Wprowadzenie 2. Demo 3. Co przyniesie przyszłość 4. Podsumowanie
  • 4. Wprowadzenie - IoT Sieć urządzeń takich jak pojazdy, urządzenia domowe które zawierają elektronikę, oprogramowanie, czujniki, urządzenia uruchamiające oraz łączność. Pozwala to im się łączyć, wchodzić w interakcję oraz wymieniać dane. IoT - Internet of Things wolne tłumaczenie: Eric Brown dla linux.com
  • 5. Wprowadzenie - IoT Subiektywna klasyfikacja urządzeń IoT 1. Według skali 2. Według posiadania stanu
  • 6. Wprowadzenie Podział według skali 1. Urządzenia lokalne 1. Smart appliances (Samsung, Amica, Haier) 2. Home automation (Neatmo, Nest, Philips HUE) 2. Urządzenia globalne 1. Sieci czujników (Airly, Blitzortung) 2. Mobility (LIME, Blinkee, Uber, Traficar)
  • 7. Wprowadzenie - IoT Podział według posiadania stanu 1. Urządzenia bezstanowe - stateless 1. Wszelkiego rodzaju czujniki 2. Urządzenia raportujące dane 2. Urządzenia posiadające stan - stateful 1. Samochody, skutery, hulajnogi 2. Przekaźniki, włączniki i inne
  • 8. Wprowadzenie - TCP/IP IoT i TCP/IP Na potrzeby tej prezentacji skupiamy się na urządzeniach posiadających stan (stateful) które są rozproszone geograficznie (zasięg globalny).
  • 9. Wprowadzenie - TCP/IP Dlaczego TCP/IP? Wiele z rozwiązań funkcjonujących na rynku IoT to wdrożenia własnościowe, oparte o zamknięte protokoły. Stąd konieczność wdrożenia własnej obsługi na poziomie warstwy 4 według modelu OSI.
  • 10. Wprowadzenie - TCP/IP źródło: Muhammad Raza dla bmc.com
  • 11. Wprowadzenie - ReactPHP Zaczynamy! W celu uruchomienia projektu potrzebujemy dwa główne składniki:
  • 12. Wprowadzenie - ReactPHP Najważniejsze elementy • ReactEventLoop Główna pętla która pozwala współdziałać wszystkim komponentom • ReactSocket Prosty serwer plaintext dla TCP/IP
  • 13. Wprowadzenie - ReactPHP AppProvidersAppServiceProvider.php
  • 14. Wprowadzenie - ReactPHP AppServersReceiveServer.php
  • 15. Wprowadzenie - ReactPHP AppServersReceiveServer.php
  • 16. Demo Jak to połączyć? Najłatwiejszym sposobem jest użycie wsparcia dla poleceń z poziomu CLI dostępnego w Larevel.
  • 17. Demo AppConsoleReceiveCommand.php
  • 18. Wprowadzenie - ReactPHP Efekt
  • 19. Demo Jak przetwarzać otrzymywane dane? Najlepszym rozwiązaniem jest napisanie klasy która będzie reprezentowała połączenie, jednocześnie obsługując eventy dostępne w ramach ConnectionInterface z ReactPHP.
  • 20. Demo AppConnection.php
  • 21. Demo AppConnection.php
  • 22. Demo Punkt wejścia dla danych Stosując takie podejście metoda onConnectionData staje się naszym głównym punktem dla przetwarzania danych. Dopiero od tego momentu możemy dane weryfikować i podejmować dezycję co z nimi dalej robić.
  • 23. Demo Efekt
  • 24. Demo Przetwarzani przychodzących danych Aby móc odpisać na dane które trafiają do naszego serwera musimy utworzyć struktury które pozwolą nam zrozumieć otrzymywane dane oraz wygenerować stosowną odpowiedź. W tym momencie dochodzi do implementacji protokołu dostawcy urządzeń.
  • 25. Demo AppConnection.php
  • 26. Demo AppCoffeeRequestFactory.php
  • 27. Demo AppRequestContract.php
  • 28. Demo Generowanie odpowiedzi Posiadając wstępną implementację protokołu, możemy zacząć tworzyć implementację poszczególnych ramek które do nas spływają. W zależności od specyfikacji niektóre z nich mogą generować stosowne odpowiedzi.
  • 29. Demo AppCoffeeHelloRequest.php
  • 30. Demo AppCoffeeStatusRequest.php
  • 31. Demo Pisanie do połączenia Mając obsłużone napływające dane wraz ze schematami zachowania opisanymi przez protokół, musimy finalnie wygenerować odpowiedź dla urządzenia klienckiego i wysłać ja na połączenie
  • 32. Demo AppConnection.php
  • 33. Demo Pisanie do połączenia Mając obsłużone napływające dane wraz ze schematami zachowania opisanymi przez protokół, musimy finalnie wygenerować odpowiedź dla urządzenia klienckiego i wysłać ja na połączenie
  • 34. Demo Efekt
  • 35. Demo Dalsze kroki 1. Przetwarzanie asynchroniczne np. RabbitMQ 2. Przechowywanie stanu urządzenia np. Redis/Aerospike 3. Load balancing
  • 36. Demo Odbieranie rozkazów zewnętrznych Na potrzeby pełnej implementacji nasze rozwiązanie musi również reagować na polecenia napływające np. z naszego API. W tym celu można wykorzystać implementacje serwera HTTP dostępną w ReactPHP, gdzie następnie za pomocą Zend Diactoros requesty można przekazać do wykonania przez Laravel.
  • 37. Demo Ciąg dalszy? Zapewnienie wcześniej opisanych usług wykracza poza zakres tej prezentacji, być może spotkamy się w przyszłości aby o tym ponownie porozmawiać?
  • 38. Co przyniesie przyszłość Znaczne zwiększenie wydajności rozwiązań opartych o PHP-FPM, lub ReactPHP. Kod kompilowany do kodu maszynowego w momencie bezpośrednio przed wykonaniem danego fragmentu. JIT - just-in-time compilation RFC: https://wiki.php.net/rfc/jit
  • 39. Co przyniesie przyszłość Sukcesywny i zrównoważony rozwój języka o nowe funkcje oraz pełniejsze wsparcie dla programowania obiektowego. Większość nowych funkcji oraz struktur pozytywnie odbija się na wydajności rozwiązań asynchronicznych. Optymalizacja i rozwój języka
  • 40. Podsumowanie 1. Pozwala łatwo zweryfikować założenia 2. Relatywnie łatwo skalowalne 3. Niski próg wejścia 4. Ograniczone wymagania co do hostingu Zalety rozwiązania
  • 41. Podsumowanie 1. Skomplikowana obsługa niektórych funkcji (Promises) 2. Problematycznie przełączanie kontekstu 3. Podatność na błędy 4. Problematyczny rozwój oprogramowania 5. Każda zmiana wymaga restartu Wady
  • 42. Pytania? krzysztof.czechowski@b-mind.pl
 Krzysztof Czechowski
  • Advertisement
    MostRelated
    View more
    We Need Your Support
    Thank you for visiting our website and your interest in our free products and services. We are nonprofit website to share and download documents. To the running of this website, we need your help to support us.

    Thanks to everyone for your continued support.

    No, Thanks
    SAVE OUR EARTH

    We need your sign to support Project to invent "SMART AND CONTROLLABLE REFLECTIVE BALLOONS" to cover the Sun and Save Our Earth.

    More details...

    Sign Now!

    We are very appreciated for your Prompt Action!

    x