Google Home (trochę) inaczej
Z pomocy asystenta głosowego Google korzystam codziennie. Dzięki niemu mogę w łatwy sposób sterować urządzeniami multimedialnymi, zarządzać wpisami w kalendarzu i wyszukiwać informacje, robiąc jednocześnie coś innego. Ciągły rozwój Internetu Rzeczy pozwala na zintegrowanie coraz większej liczby urządzeń z asystentami głosowymi.
Zadałem sobie pytanie:
Czy przy pomocy otwartego ekosystemu PLCnext Technology można użyć asystenta głosowego jako pomocnika w aplikacjach przemysłowych?
Jak to zrobić…?
Sterownik z rodziny PLCnext Technology działa w oparciu o Linux i to stanowi podstawę realizacji pomysłu. Istnieją setki aplikacji na ten system operacyjny, które wspomagają automatyzację i komunikację pomiędzy urządzeniami Internetu Rzeczy.
Najlepszym przykładem takiego narzędzia jest pakiet Node-Red. Jest to projekt open source opracowany przez specjalistów z IBM. Składa się z edytora oraz środowiska runtime. Programowanie zadań odbywa się przez przeglądarkę WWW i polega na definiowaniu połączeń (ang. flows) pomiędzy bloczkami (ang nodes) odpowiadającymi za poszczególne funkcje. Idea jest bardzo zbliżona do języka FBD, doskonale znanego wszystkim programistom sterowników PLC.
Możliwości Node-Red mogą być rozszerzane poprzez dodatkowe pakiety. Aktualnie na oficjalnej stronie jest dostępnych prawie 3000 takich plug-inów. Jeden z nich pozwala na łatwą i intuicyjną współpracę z głośnikiem Google Home.
Aplikacja
W mojej aplikacji używam Node-Red jako interfejsu pomiędzy danymi generowanymi przez tradycyjny program sterujący a światem IT, konkretniej – pomiędzy fizycznymi wejściami sterownika PLC a asystentem głosowym Google.
W skrócie: Node-Red wymienia informacje z programem sterującym za pomocą serwera OPC UA działającego na sterowniku i po odpowiednim przefiltrowaniu danych wysyła treść komunikatu do głośnika Google Home.
Jak widać na powyższym obrazku, w aplikacji wykorzystałem publikowanie informacji za pomocą protokołu MQTT (którego broker działa na Raspberry Pi), ale to całkiem inna historia…
„Chciałbym Ci powiedzieć, że…”
Pierwszą zaimplementowaną przeze mnie funkcją jest głosowe informowanie o zmianie stanu wejść sterownika PLC. Włączenie lub wyłączenie konkretnego wejścia powoduje, że z głośnika Google Home słychać komunikat mówiący o zdarzeniu. Treść takiej wiadomości jest dowolna i konfigurowalna w Node-Red.
Komunikacja pomiędzy sterownikiem PLC i Google Home odbywa się przez Internet. Oznacza to, że sam głośnik nie musi się znajdować w pobliżu sterownika ani całej aplikacji, która jest nadzorowana. W ten sposób można stworzyć prosty i przyjazny użytkownikowi zdalny system powiadamiania głosowego, np. o alarmach występujących w instalacji przemysłowej.
Sterowanie głosowe
Kolejną funkcją, do której użyłem głośnika Google Home, jest sterowanie głosowe.
Wszystkie komunikaty wypowiadane do głośnika są interpretowane przez asystenta głosowego Google i przekazywane do sterownika poprzez serwis IFTTT.com (jest to kolejne świetne narzędzie do wszystkich urządzeń IoT).
W mojej aplikacji mogę na przykład zapytać o aktualny status wszystkich fizycznych wejść sterownika. W rezultacie po chwili z głośnika słychać informację podsumowującą ich stan. Komendy głosowe mogą być dowolnie używane do sterowania, zmiany statusów lub zadawania wartości dowolnych parametrów. Można za ich pomocą wpływać na dowolne zmienne z programu sterującego.
Internet Rzeczy zmienia sposób postrzegania sterowników PLC. Nie jest to już jedynie typowo przemysłowe rozwiązanie i w przypadku otwartych ekosystemów, takich jak PLCnext Technology, jedynym ograniczeniem pozostaje kreatywność programisty.
Autor: | Konrad Sobczyk– Specjalista ds. Szkoleń i Wsparcia Technicznego |
Witam, czy możesz bardziej rozwinąć wątek wysyłania komunikatów do Google home?
Jak to wygląda od strony użytkownika: google otrzymuje informacje i ją wyświetla i odczytuje głosem?
– czy ta informacja automatycznie znika, czy trzeba potwierdzić jej otrzymanie, lub co jakis czas się znów pojawia do momentu potwierdzenia jaj otrzymania?
– informacje do google home sa przekazywane z IFTTT.com? IFTTT.com odczytuje stan sterownika i przekazuje dalej?
Na wstępie zaznaczę, że opisana tu aplikacja powstała ponad dwa lata temu i na pewno obecnie istnieją nowsze wersje pakietów/modułów/itp, które pozwalają zrealizować taką samą funkcjonalność w prostszy sposób.
W opisanej aplikacji Google Home zostało wykorzystane dwutorowo. W obu przypadkach obsługiwane jest za pośrednictwem Node-RED.
1) Głosowe odczytywanie dowolnych komunikatów – Zrealizowane przy użyciu modułu google-home-notify (https://flows.nodered.org/node/node-red-contrib-google-home-notify). Wysłanie dowolnego stringa do tego modułu powoduje jego odczytanie przez skonfigurowane w nim urządzenie Google Home
2) Reakcja na komendy głosowe – Zrealizowana przy użyciu apletu „Google Assistant” z IFTTT.com. Aplet nasłuchuje komend wypowiedzianych do Google Home i gdy pojawi się wśród nich zdefiniowana fraza, to stosownie na to reaguje. W przypadku omawianej aplikacji wysyła do sterownika POST web-request, który jest realizowany przez zaprogramowany algorytm.
Pozdrawiam Konrad Sobczyk