Serwer FTP

Dostęp do serwera FTP

WebHMI posiada wbudowany serwer FTP, który pozwala na uzyskanie dostępu do wszystkich plików na karcie SD urządzenia. Domyślnie serwer FTP jest włączony, natomiast istnieje możliwość wyłączenia tego serwera. Opcja wyłączenia serwera FTP znajduje się na stronie Ustawienia → Ustawienia → Usługi. Odznaczenie checkboxa przy opcji Serwer FTP wyłączy dostęp do plików. Możliwość wyłączenia serwera jest dostępna od wersji 3.3.

Do połączenia się z serwerem FTP zaleca się użycie dowolnego klienta FTP (np. Filezilla lub WinSCP). Dostęp z poziomu wiersza poleceń systemu Windows nie jest możliwy. Dane dostępu do serwera FTP są następujące:

  • Serwer: adres IP WebHMI (domyślnie 192.168.1.1)
  • Protokół/Port: FTP/21
  • Login: admin
  • Hasło: hasło do ustawień sieciowych (domyślnie webhmi)

Pliki na serwerze FTP WebHMI

Pliki na karcie SD WebHMI są podzielone na kilka folderów:

  • backups – tutaj znajdują się wszystkie kopie zapasowe projektów zapisane w WebHMI
  • files – tutaj znajdują się wszystkie pliki dostępne w zakładce Dokumenty
  • images – tutaj znajdują się wszystkie obrazy z biblioteki obrazów
  • log – najważniejszy folder na serwerze FTP, to tutaj znajdują się archiwalne dane zapisywane w WebHMI. Dane są podzielone w plikach sqlite3, gdzie każdy plik w nazwie zawiera datę.

Przed skopiowaniem plików .sqlite3 do folderu lokalnego zaleca się wprowadzenie dowolnej zmiany w projekcie (np. wyłączenie i włączenie jednej ze zmiennych na liście zmiennych). Spowoduje to przeniesienie danych z plików tymczasowych .sqlite3-shm i .sqlite3-wal do pliku bazy danych .sqlite3.

Automatyczna kopia zapasowa logów

Przy użyciu klienta FTP oraz harmonogramu zadań możliwe jest zautomatyzowanie procesu kopiowania plików .sqlite3 na komputer w sieci lokalnej WebHMI. Poniższa instrukcja wykorzystuje program WinSCP.

Punkt 1: Instalacja klienta ftp WinSCP

 

Punkt 2: Stworzenie pliku .bat

W notatniku wpisujemy następującą treść:

@echo off
„C:\Program Files (x86)\WinSCP\WinSCP.com” /command „open ftp://admin:admin@192.168.1.1” „synchronize local c:\logi /files/” „exit”

Kolejno w tym pliku jest ścieżka do zainstalowanego programu WinSCP, komenda otwarcia połączenia ftp w której podajemy login, hasło do ustawień sieciowych i adres IP WebHMI, oraz komenda synchronizacji plików z WebHMI do folderu lokalnego (parametr local świadczy o kierunku synchronizacji), dalej pierwsza ścieżka to folder na komputerze, a druga ścieżka to folder na serwerze ftp.

Zapisujemy plik z dowolną nazwą i rozszerzeniem .bat. Taki plik można już uruchomić, co spowoduje skopiowanie wszystkich plików z folderu files na karcie SD WebHMI do folderu lokalnego logi na komputerze.

 

Punkt 3: Automatyzacja synchronizacji plików

Jeśli nie chcemy ręcznie uruchamiać pliku .bat to można stworzyć zadanie podstawowe w harmonogramie zadań systemu Windows, co spowoduje automatycznie wywołanie programu z określoną częstotliwością lub gdy pojawią się inne zdarzenia. Dodawanie takiego zadania jest bardzo proste. Po uruchomieniu harmonogramu wystarczy wybrać opcję „Utwórz zadanie podstawowe…”, a następnie nadać nazwę zadania, wybrać częstotliwość wykonywania zadania oraz podpiąć nasz program .bat.

 

Punkt 4: Bezpieczeństwo

Jak widać w powyższym kodzie login i hasło do ustawień sieciowych WebHMI jest zapisany zwykłym tekstem i każdy, kto otworzy taki plik dowolnym edytorem tekstu może te hasło podejrzeć. Jeśli nie chcemy, aby operator miał dostęp do hasła ustawień sieciowych to możliwa jest konwersja pliku .bat na plik .exe, przy użyciu na przykład Advanced Bat To Exe Converter. Hasło zostanie zaszyte i zaszyfrowane i nie będzie już widoczne. Taki plik .exe dokładnie tak samo można wywoływać przez harmonogram zadań. Jeśli jednak konieczna będzie zmiana ścieżki/ip/hasła to należy ponownie skompilować zaktualizowany plik .bat do .exe.

Ręczne przeglądanie i edycja danych z plików logów

Pliki logów są przechowywane i zapisywane z rozszerzeniem .sqlite3, co oznacza że są plikami bazy danych SQLite. Czasami zachodzi potrzeba bezpośredniej podglądu oraz edycji danych przechowywanych w plikach logów, np. gdy chcemy przejrzeć historię wartości rejestrów, które nie były uwzględnione w zdefiniowanych raportach lub gdy chcemy dostać do danych dostępnych za pomocą API bez pisania służącej do tego ekstra aplikacji. W tej sytuacji możemy to zrobić za pomocą dowolnej przeglądarki plików w formacie .sqlite3. Pokażemy to na przykładzie programu DB Browser for SQLite. 

Krok 1. Instalujemy DB Browser for SQLite ze strony  https://sqlitebrowser.org/dl/.

Krok 2. Pobieramy szukany plik logów z folderu „log”.

Pliki logów, które będą nam potrzebne, posiadają rozszerzenie „.sqlite3”. Pliki o rozszerzeniu „.sqlite3-shm” oraz „.sqlite-wal” są plikami tymczasowymi zgodnie z dokumentacją SQLite. Logi i wszystkie dane zapisywane są w plikach o nazwie „log-XXXX-YY-ZZ..sqlite3”, gdzie „XXXX-YY-ZZ” dzień, z którego pochodzą dane. Każdego dnia jest tworzony nowy plik.

Krok 3. Otwieramy plik logów w DB Browser for SQLite.

W zakładce „Struktura danych” widzimy strukturę naszej bazy danych. Jest to widok pokazujący zawartość logu, w którym znajdziemy wszystko co WebHMI zapisuje w pamięci:

  • „alerts” – alarmy
  • „alerts_comments” – komentarze do alarmów
  •  „log” – logi zmiennych etc.

Przejdźmy teraz do zakładki „Przeglądarka danych”, gdzie będziemy mogli podejrzeć zawartość tabel.

Jako przykład została wybrana tabela „log_60”, gdzie gromadzone są wartości zapisywane w logu co 60 minut. Widzimy wszystkie informacje, które możemy także odczytać na WebHMI, czyli patrząc kolumnami:

  • „regId” – numer ID rejestru,
  • „min” – wartość minimalna z tego przedziału czasowego,
  • „max” – wartość maksymalna z tego przedziału czasowego,
  • „datetime” – czas wpisu do logu w formacie Unix TimeStamp (w dalszej części pokażemy sposób w jaki przekonwertować go na czytelne datę i czas).

Krok 4. Eksportujemy dane do pliku CSV za pomocą polecenia „Plik” → „Eksportuj” → „Tabele do pliku CSV…”.

Krok 5. W ostatnim kroku otworzymy plik CSV i poprawimy formatowanie danych w celu zwiększenia jego czytelności.

Widok po rozdzieleniu tekstu na kolumny po wykorzystaniu polecenia „Dane” → „Narzędzia danych” → „Tekst jako kolumny” z  przecinkiem jako wybranym znakiem rozdzielenia.

W kolumnie „datatime” znajdują się czasy i daty wykonania wpisu do logu w formacie Unix TimeStamp, czyli ilość sekund jaka minęła od daty 1970-01-01. Jest to informacja dla człowieka nieczytelna, więc w celu jej rozkodowania należy użyć formuły =(((E2/60)/60)/24)+DATA(1970;1;1) oraz zmienić formatowanie kolumn na niestandardowe, a w typie wpisać dd.mm.rrrr gg:mm:ss, dzięki czemu uzyskamy w jednej kolumnie datę i czas z dokładnością do sekundy.

 

Wróć na początek