Prosta kolejka wiadomości pod IoT w 5 minut


Unsplash

Niezależnie od tego, czy budujesz projekt hobbystyczny, czy w pełni profesjonalny rozwój, otrzymasz wybór: Jak wysłać moje dane z urządzenia do Internetu?

Najprostszym sposobem jest wysłanie tych danych do kolejki komunikatów, z której te dane będą odczytywane przez program lub skrypt (w dowolnym języku programowania). Następująca metoda działa na każdej platformie i urządzeniu, niektóre z nich to:

  1. - Arduino
  2. - ESP8266 NodeMCU 1/2/3
  3. - Raspberry PI - wszystkie wersje
  4. - C.H.I.P Komputer
  5. - Beagle board
  6. - Każda platforma, która jest w stanie wykonywać żądania HTTP

W tym przypadku posłużę się przykładem doskonałego systemu ESP8266 NodeMCU v3, popularnie znanego jako NodeMCU. Ten system jest wyposażony w łączność WiFi i programator USB-UART już na płytce, który pozwala programistom, bez żadnych dodatkowych narzędzi, przesłać program (napisany w C lub Lua) i rozpocząć pracę. Ponadto system ma wiele analogowych i cyfrowych wejść i wyjść. Aby uzyskać więcej informacji, odsyłam do strony specyfikacji projektu.

W tym konkretnym przypadku wysyłamy prostą wartość ciągu do kolejki komunikatów. Ale możesz wysłać wszystko, co może zostać zserializowane (do stringa), np. odczyty z takich czujników:

  1. 1. Temperatura - TMP36, DS18B20
  2. 2. Wilgotność - DHT11 DHT22
  3. 3. Ciśnienie powietrza - BMP180
  4. 4. Współrzędne GPS - GY-NEO6MV2
  5. 5. Wartości przyspieszeniomierza - ADXL345
  6. 6. Wartości żyroskopu - MPU6050
  7. I wiele innych.

Spójrzmy na poniższy kod:

Jest to minimalny kod potrzebny do wysłania prostego ciągu znaków do kolejki wiadomości. Aby wysłać dane z systemu do sieci, której potrzebujesz:

  1. 1. Połącz się z siecią WiFi, jeżeli łączność jest nawiązana przejdź od razu do kroku 2.
  2. 2. Zbierz dane np. z czujnika temperatury
  3. 3. Wyślij dane w żądaniu do serwera kolejki
  4. 4. Odczekaj ustalony czas i przejdź do kroku 1.

Jak widać, nie używam żadnej specjalnej biblioteki ani protokołu AMQP / MQTT. Prosty, stary klient HTTP, który wysyła żądania przez stos TCP / IP do usługi o nazwie Qutrunk.com - platforma, która oferuje kolejkę wiadomości (message queue) jako usługę (SaaS). Dzięki prostemu interfejsowi HTTP API programista może wysyłać zebrane dane z poziomu praktycznie każdego wbudowanego urządzenia i umieszczać je w kolejce. Ten sam interfejs służy do odczytu danych z kolejki. Qutrunk to platforma zarządzana, co oznacza, że ​​deweloper nie jest zobowiązany do utrzymania całego rozwiązania, dbałości o spójność, replikację i dostępność danych.

Usługa dotyczy utrzymywania najwyższej dostępności kolejek, oferując dostęp za pomocą REST API i gRPC (Protocol Buffers + RPC). Cała platforma jest przysłoniętam prostym interfejsem graficznym dostępnym za pośrednictwem przeglądarki. Proces tworzenia konta i najprostsza implementacja zajmuje mniej niż 5 minut w dowolnym języku. Sekret platformy tkwi w jej prostocie, aby wysłać wiadomość do kolejki, deweloper wysyła tylko żądanie GET lub POST, w tym momencie wiadomość jest już w buforze kolejki i gotowa do ściągnięcia. Pobranie wykonywanujemy przez wysłanie żądania HTTP metodą GET. To wszystko, dwie metody HTTP są wystarczające aby zaimplementować najprostszy mechanizm kolejki. Wypróbuj sam, stwórz darmowe konto, które pozwoli ci obsłużyć mały projekt.

Do czego to może być przydatne?

Wraz ze wzrostem dostępności technologii IoT na rynku rośnie także zainteresowanie klientów. Projekty w jakich można użyć przesyłania wiadomości:

  1. - monitorowanie floty samochodowej (przesyłanie koordynatów GPS i danych telemetrycznych)
  2. - monitorowanie ciągu chłodniczego (przesyłanie temperatury w czasie rzeczywistym)
  3. - monitorowanie poziomu zapylenia w stacjach badawczych

Code Fibers świadczy usługi budowania rozwiązań IoT wraz z pełnym backendem, od urządzenia krańcowego po szyny danych i składowanie danych, aż po interfejsy użytkownika. Jeżeli interesuje Cię nasza oferta zapraszam do odwiedzenia naszej strony oraz kontaktu poznaj jak pracujemy oraz jakie jest nasze doświadczenie.

Piotr Osiński

These posts might be interesting for you:

  1. Klaster RabbitMQ na Dockerze z Nodejs w 5 minut
  2. 3-węzłowy zestaw repliki MongoDB z SystemD i metrykami w Telegraf / Grafana
Author: Peter

I'm a backend programmer for over 10 years now, have hands on experience with Golang and Node.js as well as other technologies, DevOps and Architecture. I share my thoughts and knowledge on this blog.