Zdalny Panel

Prosta, uniwersalna aplikacja z interfejsem okienkowym. Napisana w C++ na system Microsoft Windows. Pozwala na podgląd danych z platform takich jak Arduino, czy Raspberry Pi jak również sterowanie portami GPIO po przez panel z wirtualnymi przyciskami typu włącz-wyłącz.

Jest to w istocie bardziej rozbudowana i uniwersalna wersja publikowanego na tej stronie wcześniejszego mojego projektu - Monitor stacji pogodowych.

Zdalny Panel tak samo jak miało to miejsce w poprzednim projekcie ma możliwość pracować jako serwer i przekazywać dane z urządzenia połączonego przez port szeregowy do innego Zdalnego Panelu po przez protokół XMPP.

NOWOŚCI

Zdalny Panel jest przede wszystkim w pełni konfigurowany z poziomu interfejsu aplikacji, a nie z plików txt jak to ma miejsce we wcześniejszym projekcie. Może prezentować dane nie tylko w wskaźnikach numerycznych, ale również jak już wcześniej wspomniałem - sterować zdalnie portami GPIO za pomocą wirtualnych przycisków oraz wskazywać ich stan za pomocą wirtualnych kontrolek.

Do generowania wykresów został dodany odpowiedni skrypt i interpreter języka PHP. Więc wykresy generowane są autonomicznie, a ze zdalnego urządenia pobierane są jedynie dane do wykresu. W związku z wprowadzeniem tej modyfikacji powstała pewna niedogodność. Otóż do poprawnego generowania wykresów wymagane jest aby nazwy katalogów w ścieżce dostępowej do pliku wykonalnego programu nie zawierały spacji.

Konfiguracja taka jak ilość, typ, adres i nazwy wskaźników/kontrolek jest przypisana dla każdego zdalnego urządzenia oddzielnie. Urządzenia są rozróżniane w przypadku:

  • Połączenia przez port szeregowy - na podstawie numeru portu i numeru kanału dla modułu komunikacji bezprzewodowej - HC-12
  • Połączenia przez XMPP - na podstawie JID i nazwy zasobu.

WSPÓŁPRACA Z URZĄDZENIAMI

Współpraca ze stają pogodową jak też innymi urządzeniami polega na tym że Zdalny Panel po uzyskaniu połączenia z urządzeniem wysyła do niego cyklicznie komendę AT: at+state?, a urządzenie w odpowiedzi na nią wysyła ramkę z danymi. Ramka danych ma postać binarną i składa się z kolejno wysyłanych bajtów. Pierwszy bajt zawiera informację o ilości bajtów danych, a ostatni bajt to suma kontrolna bajtów z danymi czyli CRC. Pomiędzy pierwszym i ostatnim bajtem powinny znajdować się bajty z danymi.

Dane dla wskaźników numerycznych tak samo jak w poprzednim projekcie to grupa dwóch bajtów na wskaźnik w których na 14 najmłodszych bitach zapisana jest wartość, a na 2 najstarszych bitach zapisana jest wartość trendu. Natomiast stan portów przesyłany jest w jednym bajcie na grupę co pozwala na utworzenie do ośmiu przycisków/kontrolek w grupie. Do zmiany stanu poszczególnych portów służy komenda AT: at+port0=1, która zawiera numer portu i stan 0 lub 1 do niego przypisany.

Warto przypomnieć, że tak samo jak w poprzednim projekcie w przypadku połączenia XMPP ramka danych kodowana jest w standardzie Base64, aby można ją było przesłać w pakiecie XML.

AUTORYZACJA KOMUNIKACJI W POŁĄCZENIU VIA XMPP

Komunikacja po przez XMPP w trybie: Zdalny Panel (jako klient) - Zdalny Panel (jako serwer) jest autoryzowana przez wzajemną obecność na rosterze (liście kontaktów), a dodanie kontaktu do listy musi być przez niego zatwierdzone jak zresztą w większości komunikatorów. Wyjątkiem jest sytuacja gdy klient i serwer używają tego samego konta (JID). Taka autoryzacja jest szczególnie istotna gdy klient steruje portami urządzenia połączonego z serwerem gdyż zapobiega przed sterowaniem portami przez niepowołane osoby. Kontakt można dodać z poziomu programu lub za pomocą dowolnego klienta XMPP/Jabber pamiętając o tym aby kontakt znajdował się w grupie o nazwie "Bots".

ZdalnyPanel.rar