Na rynku dostępnych jest wielu dostawców rozwiązań chmurowych, dlatego postanowiłem napisać kolejny wpis z tej serii, tym razem na podstawie chmurę Microsoftu. Porównując możliwości różnych dostawców wyraźnie widać że usługi i możliwości są bardzo podobne, często identyczne, więc wybierając dostawcę warto wziąć pod uwagę różne aspekty, i porównać możliwości. W Azure, czyli platformie chmurowej Microsoftu, znajdziemy odpowiednik AWS IoT Core, a konkretnie IoT Hub. Posiada on bardzo podobną funkcjonalność, i umożliwia zarówno odbieranie wiadomości od urządzeń, jak i wysyłanie do nich danych. We wpisie tym pokażę na podstawie przygotowanej przykładowej topologii jak skonfigurować ThingsPro Gateway zainstalowanego na UC-8112-ME-LX do odczytywania urządzeń Modbus TCP, i wysyłania danych do chmury, a także konfigurację wszystkich niezbędnych składników w konsoli web Azure, zapraszam do lektury.
Utworzenie konta Azure
Pierwszym niezbędnym krokiem jest utworzenie konta w platformie Azure, można to zrobić na tej stronie. Podobnie jak Amazon, Microsoft na start udostępnia swoje usługi za darmo. Przez pierwszy miesiąc daje 170 Euro do wykorzystania na dowolne usługi, co zdecydowanie ułatwia zapoznanie się z nimi, praktycznie bezkosztowo. Przez pozostały czas nadal można testować najpopularniejsze usługi za darmo, w ramach pewnych limitów oczywiście. Samo utworzenie konta jest proste, wystarczy podać swoje dane, dane karty kredytowej, i należy też posiadać konto Microsoft.
Utworzenie IoT Hub + dodanie „rzeczy”
W tym kroku należy zalogować się do konsoli Azure i kliknąć „Create a resource” i wyszukać „io hub”, i oczywiście wybrać go z listy propozycji.
Następnie zobaczysz krótki opis usługi i przydatne linki, wystarczy kliknąć „Create”. W następnym widoku należy wybrać subskrypcję, grupę zasobów (można też utworzyć nową), region i nazwę huba IoT.
W następnym widoku wybieramy rozmiar i skalę naszego huba, oczywiście im wyższe limity tym zasób będzie droższy. Na początek najprościej i najtaniej jest wybrać „Free tier”.
Po kliknięciu „Create” nasz zasób zacznie się inicjować i może to potrwać od kilku do kilkunastu minut. Po przejściu do „All resources” lub widoku grupy zasobów zobaczymy nowy hub, klikając w niego zobaczymy przegląd i najważniejsze informacje.
Następnym krokiem jest utworzenie „IoT device” czyli naszej rzeczy, wystarczy kliknąć "IoT devices" i "Add". Po jej dodaniu pojawi się na liście, należy w nią kliknąć i zapisać parametr „Connection string (primary key)” na dysku.
Na tym etapie mamy już wszystko, co potrzebne do nawiązania połączenia ThingsPro Gateway z chmurą Azure, przejdźmy więc do konfiguracji ThingsPro.
ThingsPro, podstawowa konfiguracja
ThingsPro Gateway to oprogramowanie instalowane na niektórych komputerach firmy Moxa, umożliwiające łatwiejszą integrację urządzeń z protokołem Modbus TCP lub RTU z innymi usługami IT, np. chmurowymi, lub też lokalnymi.
W tym przykładzie do bramki ThingsPro będą podłączone i odczytywane 2 urządzenia: analizator jakości energii UMG 604 oraz wyspa zdalnych wejść/wyjść ioLogik E2242. Poniżej topologia:
Pierwszym krokiem jest jak zawsze zalogowanie się do w interfejsu webowego, domyślny adres to 192.168.4.127, należy też pamiętać, że domyślnie konsola konfiguracyjna jest uruchomiona tylko na interfejsie LAN2, domyślnie LAN1 jest do połączenia do siecią lokalną lub WAN. Domyślny login i hasło to admin@moxa.com i admin1234. Po zalogowaniu pierwsze co zobaczymy to widok główny czyli dashboard z podstawowymi informacjami i funkcjami do zarządzania.
Następnie przechodzimy do „Modbus & Logging” aby skonfigurować profile odczytu danych protokołem Modbus i ustawić „kogo i jak” ma odpytywać ThingsPro.
W pierwszej kolejności klikamy w „Add template” aby dodać nowy profil odczytu danych, trzeba też nazwać nowo tworzony szablon.
Nasz nowy szablon już powinien być na liście, następnym krokiem jest dodanie tagu, czyli szczegółów na temat odpytywanych adresów, takich jak numer funkcji Modbus, adres rejestru, typ przechowywanych danych, ilość rejestrów Modbus do odpytywania, i kolejność bajtów. Dane te można znaleźć w dokumentacji technicznej danego urządzenia.
Klikamy „SAVE” i dodajemy w ten sam sposób kolejne tagi, czyli odczytywane rejestry, o ile są one w tym samym urządzeniu. Do odczytywania rejestrów z innego urządzenia (slave) należy dodać kolejny szablon.
Następnie należy przejść do zakładki „Modbus Device”, i w moim przypadku zakładki „Modbus /TCP”. Klikamy „Add a TCP Interface” aby dodać nowy intefejs, tam wpisujemy nazwę, adres IP, port TCP i inne parametry, a na koniec tradycyjnie „SAVE”.
Do tak utworzonego interfejsu należy przypisać wcześniej utworzony szablon Modbus, podać ID tego slave, i zapisać. Klikając „TEST” można też sprawdzić, czy ThingsPro prawidłowo odczytuje dodane urządzenie.
Dla każdego fizycznego urządzenia, które chcemy odczytywać należy dodać taki Interfejs z przypisanym szablonem. Na koniec powinniśmy zobaczyć taki podobny widok:
ThingsPro odczytuje już dane z podłączonych urządzeń Modbus, następnie należy skonfigurować klienta Azure IoT. W tym celu należy przejść do Menu Menu->Applications-> Azure.
Oczywiście należy w pierwszej kolejności przełączyć klienta w stan „Enable”, wkleić wcześniej zapisany „Connection string” , który był wygenerowany po utworzeniu urządzenia w IoT Hub, ustawić protokół MQTT, i odpowiedni okres wysyłania danych do Azure. Następnie wybieram tagi, które chcemy, aby były śledzone, a ich wartości wysyłane do Azure, np. przy ich zmianie „Log On Change”.
Można też zaznaczyć „Logging data when network is disconnected” aby dane były zapisywane lokalnie w razie przerwy w dostępie do Internetu, a po powrocie zostaną przesłane do chmury. Na koniec wystarczy kliknąć „SAVE”, aby dane z naszych urządzeń Modbus zaczęły w końcu spływać do Azure IoT hub. Ale jak to sprawdzić? Wystarczy w konsoli Azure przejść do wcześniej utworzonego Huba i zjechać na dół do wykresu „Device to cloud messages”. Jeśli konfiguracja jest poprawna to zobaczymy ładny wykres z ilością przesłanych wiadomości, jeśli nie to znaczy, że gdzieś popełniliśmy błąd.
Co dalej z takimi danymi?
Tak samo jak u innych dostawców chmurowych, Azure umożliwia przetwarzanie danych w rozmaitych usługach. Można np. archiwizować dane w bazie danych (obiektów) blob, można wysyłać powiadomienia email na podstawie ustalonych reguł, tworzyć aplikacje łączące dane z różnych źródeł w zależności logiczne, wizualizować dane (np. w PowerBI), budować systemy tzw. predictive maintence z uczeniem maszynowym, i wiele innych, możliwości są ogromne. Na stronach Microsoftu jest ciekawy poradnik na temat tego jak wizualizować dane z huba IoT w aplikacji webowej, czyli po prostu w przeglądarce. Modyfikując nieco kod źródłowy pliku index.js można bardzo szybko dostosować tę aplikację aby prezentowała dane przychodzące do naszego huba IoT. Tak oto wygląda efekt:
Aplikacja ta będzie jeszcze aktywna przez jakiś czas od opublikowania wpisu, a można ją znaleźć pod tym adresem: https://elmarkmoxaiot2.azurewebsites.net/
Z różnych powodów nie będzie zawsze dostępna, dlatego jeśli chciałbyś ją zobaczyć na własne oczy to daj nam znać, a uruchomimy ThingsPro.
Podsumowanie
Wpis wyszedł nieco długi ale temat również jest bardzo obszerny, i ciężko go zamknąć w kilku zdaniach. Jak widać integracja danych z urządzeń Modbus z usługami i oprogramowaniem IT w chmurze jest stosunkowo prosta z ThingsPro Gateway. Usługi chmurowe również nie są aż tak skomplikowane jak może się wydawać przy pierwszym kontakcie, a eliminują min. problem związany z utrzymaniem własnych serwerów, i oszczędzają czas dzięki łatwiejszemu zarządzaniu infrastrukturą. Dziękuję za lekturę i do zobaczenia!
To jest druga część cyklu Modbus w chmurze, zapraszam do zapoznania się z pierwszą częścią:
http://moxa.elmark.com.pl/2018/04/16/modbus-w-chmurze-czyli-przemysl-4-0-w-praktyce/
Źródła :
Poradnik Microsoftu do Wizualizacji danych z Huba IoT:
https://docs.microsoft.com/pl-pl/azure/iot-hub/iot-hub-live-data-visualization-in-web-apps
Źródło aplikacji webowej która wizualizuje dane z huba IoT:
https://github.com/Azure-Samples/web-apps-node-iot-hub-data-visualization.git
Strona Visual Studio Code – umożliwia monitorowanie danych przechodzących przez IoT Hub:
https://code.visualstudio.com/
Jak korzystać z VS Code:
https://docs.microsoft.com/en-us/azure/iot-hub/iot-hub-vscode-iot-toolkit-cloud-device-messaging
ThingsPro Gateway na stronie producenta:
https://www.moxa.com/en/products/industrial-computing/system-software/thingspro-2
ThingsPro na naszej stronie:
https://www.elmark.com.pl/pl/sklep/moxa/Pakiet_ThingsPro
Strona organizacji Modbus:
Skontaktuj się ze specjalistą Elmark
Masz pytania? Potrzebujesz porady? Zadzwoń lub napisz do nas!