Dzial Techniczny/Technical Department

GPRS-A MQTT

Rozwiązanie MQTT - Message Queuing Telemetry Transport - ekstremalnie prosty i lekki protokół transmisji danych
Instalujemy darmowy serwer MQTT i node-red

Możemy to zrobić na różnych maszynach : komputer PC z Windows, komputer z Linuxem, Raspberry Pi,… itp. Pominę ten punkt, bo w sumie jest mało istotny – serwer po prostu trzeba zainstalować i tyle – wszystko jest dobrze opisane na stronie https://nodered.org/ zakładka : Documentation i następnie Getting Started.
Jak już się zainstaluje – musimy uzyskać publiczny adres IP komputera na którym stoi i wolny port – będzie to nam potrzebne później – bo GPRS-A musi wiedzieć, gdzie ma wysyłać dane (najlepiej zgłosić się do IT)

1. Zaczynami od konfiguracji GPRS-A za pomocą GX-Soft – zakładka FUNCIONS / IoT
- należy podać adres IP serwera, port, Client ID, Publish topic, Subscribe topic (urządzenia MQTT publikują i/lub subskrybują wiadomości na dany temat. Kiedy coś opublikuje jakieś informacje, każdy klient, który subskrybuje ten sam temat, otrzyma tę informację)
- ustawić czas poolingu – u mnie jest co 1 minutę, ale można ustawić dowolnie
- zaznaczyć odpowiednia dla siebie opcje (np. wysłanie danych natychmiast po naruszeniu wejścia lub po zmianie stanu wyjścia)
- oraz z zakładce Frame – dane jakie chcemy otrzymywać



W efekcie – co minutę na adres serwera MQTT będzie wysyłany string jak poniżej :
{
"I1":0,
"I2":0,
"I3":0,
"I4":0,
"I5":0,
"I6":0,
"I7":0,
"I8":0,
"S1":20750,
"O1":0,
"O2":0,
"O3":0,
"O4":0,
"RSSI":67,
"P":13516,
"SP":"Play [4G]"
}

Jak łatwo się domyślić :
I1 do I8 = wejścia
S1 do S8 = temperatura z czujników 1-wire – wartość 20750 = 20,75°C (czyli należy podzielić przez 1000)
O1 do O4 = wyjścia
RRSI = siła sygnału GSM – wartości od 0 do 100
P = napięcia zasilania, wartość 13516 = 13,516V (czyli należy podzielić przez 1000)
SP = Service Privider, w moim przypadku będzie to „PLAY”
Można też z poziomu serwera wysłać do GPRS-A komendy :
"BIX":1/ "BIX" : 0–blokuj / odblokuj wejście, gdzie: X = numer wejścia od1 do 8.
"BAC":1 / "BAC" : 0–blokuj / odblokuj wejście AC.
"BSX":1/ "BSX" : 0–blokuj/ odblokuj czujnik temperatury 1-Wire, gdzie: X= numer czujnika od 1 do 8.
"OX":1/ "OX" : 0–włącz /wyłącz wyjście, gdzie: X = numer wyjścia od 1 do 4.
"MOX":1 / "MOX" : 0–włącz / wyłącz wyjście i zapamiętaj jego stan, gdzie: X = numer wyjścia od 1 do 4 (po restarcie modułu lub awarii zasilania wyjście zostanie przełączone w zapamiętany stan).
"TOX" : 1–włącz wyjście na czas zaprogramowany w module (patrz: „Czas działania” s.28), gdzie: X = numer wyjścia od 1 do 4.
I właściwie można by na tym zakończyć – bo można patrzeć na symbole i liczby – wszystko widać, ale fajniej było by te dane jakoś zwizualizować i może coś zautomatyzować.

2. Wizualizacja w node-red
Uruchamiamy w przeglądarce nasz wcześniej zainstalowany node-red :
Adres_IP_servera :1880
U mnie jest to : localhost:1880
Powinna otworzyć się strona :


Teraz – jak klocki lego – wybieramy obiekty z belki po lewej stronie, przeciągamy je i puszczamy na puste biurko.
Pierwszą rzeczą będzie klocek z sekcji „network” o nazwie „MQTT in”



Jak już go umieścicie w dowolnym miejscu i klikniecie na nim 2 razy szybko (dotyczy to wszystkich obiektów) – pojawi się okno właściwości, gdzie należy wpisać adres i port serwera, Topic, QoS – po prawej będzie dostępny help – co które pole oznacza



OK, przeciągamy kolejny przydatny klocek z kategorii „common” o nazwie „debug” – który pozwoli nam obserwować w oknie debugowania co się dzieje w dowolnym miejscu programu :



Jeśli połączymy ten klocek z poprzednim – będziemy widzieć co się dzieje na wyjściu klocka „MQQT in”

I od razu widzimy w oknie debugowania po prawej, że coś odebraliśmy :


OK, teraz string trzeba przerobić na javascript object (prosta zamiana formatu), robimy to poprzez dołożenie kolejnego klocka o nazwie „json” z kategorii „parser”


Łączymy to z „MQTT in” i wstawiamy kolejny „debug”, żeby widzieć co się dzieje

Patrzymy na okno debugowania – teraz widzimy, że mamy 2 formaty danych : pierwszy zwykły string – zaraz po „MQTT in” i drugi – jako javascript object


Dobrze.
Teraz musimy wydzielić z tego obiektu poszczególne, interesujące nas informacje i wyświetlić na ekranie Filtrowanie informacji robimy za pomocą klocka o nazwie „change” z kategorii „function”


Przeciągamy, puszczamy i edytujemy ustawienia przez 2-ktorne kliknięcie myszką


Wybieramy opcję ”Move” z „msg.payload.SP” na „msg.payload”
Czyli wyciągamy wartość parametru SP (Service Provider) z obiektu


I na koniec wyświetlamy wynik w postaci tekstu na ekranie = przeciągamy kolejny klocek o nazwie „text” z kategorii „dashboard”


i łączymy ze sobą linią


oraz edytujemy właściwości „text”, gdzie możemy wybrać wielkość pola tekstowego, dodać wyświetlaną nazwę itp.


Efekt na podglądzie :


To samo, po kolei, robimy z pozostałymi elementami tj. „move” i „text”
Zamiast pola tekstowego możemy też do wizualizacji użyć miernika wychylnego, wykresu, przełącznika, itp.
Niekiedy trzeba użyć dodatkowej funkcji, w której np. podzielimy wartość przez 1000 (jak w przypadku temperatury czy napięcia) – co będzie wymagało wpisania 2 linijek kodu


Do wizualizacji wyjść wg mnie najlepiej jest użyć przełącznika „switch” z kategorii „dashboard” – w tym przypadku dodałem jeszcze możliwość wysłania do naszego GPRS-A poprzez „MQTT out” komendy włączającej lub wyłączającej wyjście – zależy jak klikniemy np. dla wyjścia 1 : {"O1":1} lub {"O1":0}


Można też dodać klocek „email” wysyłający maila na zadany adres np. z wartością temperatury, a jeszcze lepiej jak przed nim postawimy inny klocek z funkcją warunkową IF : jeśli wartość temperatury przekroczy nam jakąś wartość np. 26 stopni – wówczas wyśle maila


Ograniczeniem jest wyobraźnia – mając to narzędzie można dowolnie sobie zaprogramować co chcemy np. włączenie klimatyzatora w przypadku przekroczenia zadanej temperatury, albo załączanie jakiegoś wyjścia w przypadku naruszenia któregoś z wejść, itp.

Układ graficzny również można zmieniać dowolnie – ja zrobiłem to tak jak widać – dopasowany do ekranu komórki
I już.


Jest mnóstwo tutoriali dotyczących node-red w sieci – łącznie z filmami na youtube – warto obejrzeć.

Załączniki:
1.png 1.png
2.png 2.png
3.png 3.png
4.png 4.png
5.png 5.png
6.png 6.png
7.png 7.png
8.png 8.png
9.png 9.png
10.png 10.png
11.png 11.png
12.png 12.png
13.png 13.png
14.png 14.png
15.png 15.png
16.png 16.png
17.png 17.png
18.png 18.png
19.png 19.png
20.png 20.png
21.png 21.png
22.png 22.png

 
Czy ten artykuł był pomocny? tak / nie
Szczegóły artykułu
ID artykułu: 98
Kategoria: GSM/GPRS/MICRA
data dodania: 2021-08-31 11:30:27
ilość wyświetleń: 157
Ocena (Głosów): Artykuł oceniony na 5.0/5.0 (2)

 
Wróć

 © 1990-2021 SATEL Sp. z o.o.
zastrzeżenia prawne | polityka prywatności | Napisz do nas