Rozdział 10. Import danych z regulatorów węzłów Samson (system InTouch) lub Mikrob (program PRO-2000)

W systemie SZARP istnieje mechanizm pozwalający na automatyczny import danych w formacie CSV, w szczególności generowanych przez system InTouch zbierający dane z regulatorów węzłów Samson lub system PRO-2000 firmy Mikrob.

Mechanizm ten uruchamiany jest przez skrypt script/samson2/get_sam. Ściąga on potrzebne pliki z komputera z InTouch'em, a następnie przepuszcza je przez perlowy skrypt script/samson2/get_sam, który generuje plik wejściowy, po posortowaniu i odrzuceniu wpisów obecnych przy poprzednim uruchomieniu podawany do programu szbwriter. Dodatkowo skrypt script/samson2/convert_names jest używany do konwersji nazw okien programu przeglądającego.

Mechanizm sprawdza dane z dnia obecnego i poprzedniego, może być uruchamiany z dowolną częstotliwością, ale należy zwrócić uwagę, aby nie uruchamiać go przed ukończeniem poprzedniego przebiegu.

Konfiguracja SZARP'a jest generowana automatycznie na podstawie danych z węzłów. Nie ma sensu jej modyfikacja, gdyż może ona zostać automatyczne zmodyfikowana. W szczególności tracone są wszelkie informacje nieobsługiwane przez bibliotekę IPK.

Instalacja systemu polega na wykonaniu następujących kroków:

  1. Upewniamy się, że na serwerze SZARP mamy zainstalowaną odpowiednio nową wersję systemu SZARP.

  2. Na komputerze z działającym systemem InTouch/PRO-2000 instalujemy pakiet Cygwin wraz z serwerem ssh i programem rsync. Alternatywnie dostęp może być zapewniony przez udostępnienie katalogu przez Sambę.

  3. InTouch/PRO-2000 musi być skonfigurowany w ten sposób, aby raz dziennie zapisywał dane z węzłów do plików CSV w jakimś katalogu.

  4. Wymieniamy klucze, tak, aby użytkownik root z serwera SZARP mógł logować się bez hasła na komputer z InTouchem/PRO-2000 i za pomocą mechanizmu rsync ściągać wygenerowane pliki CSV.

  5. Ustalamy prefiks konfiguracji z danymi z węzłów i tworzymy odpowiedni katalog /opt/szarp/<prefix>/config i /opt/szarp/<prefix>/szbase.

  6. W katalogu /opt/szarp/<prefix>/config tworzymy plik samsons_LASTDATE zawierający datę pierwszych danych, które chcemy ściągnąć, w formacie RRRR-MM-DD, np. 2004-09-01.

  7. W pliku /etc/szarp/szarp.cfg w sekcji o nazwie samsony umieszczamy następujące parametry:

    • config_prefix - prefiks nowo tworzonej konfiguracji.

    • remote_host - nazwa (lub numer IP) komputera z systemem InTouch.

    • dynamic_host - "yes" jeżeli komputer z InTouchem ma dynamiczne IP, które będziemy pobierać z serwera praterm.com.pl. Jako identyfikator komputera służyć będzie wartość parametru remote_host.

    • remote_user - nazwa użytkownika na komputerze z InTouch, z którego konta będziemy ściągać pliki z danymi.

    • remote_path - ścieżka do katalogu z plikami CSV (na komputerze Windows).

    • params_group - nazwa grupy parametrów (parametry będą miały nazwę postaci Grupa:Nazwa węzła:nazwa parametru).

    • date_format - format daty używany w nazwach plików na komputerze z InTouchem/PRO-2000, powinien to być prawidłowy parametr 'format' dla programu date. Domyślna wartość to "+%Y-%m-%d".

    • separator - napis (znak) używany jako separator pól w pliku CSV, domyślnie jest to przecinek, dla systemu PRO-2000 powinien to być tabulator ('\t').

    • nodata_str - napis oznaczający brak wartości, domyślnie przyjmowany jest napis pusty, dla systemu PRO-2000 powinien to być napis 'brak'.

    Dodatkowo, w sekcji szbwriter ustawiamy parametr double_match, zawierający wzorzec powłoki, do którego mają pasować nazwy parametrów zapisywanych na dwóch słowach. Jeżeli dane z węzłów zbierane są rzadziej niż co 10 minut, możemy ustawić też wartość parametru fill_how_many. Zobacz też Sekcja 8.5.1.

    Przykładowy fragment pliku szarp.cfg:

    :samsony
                                                                                    
    # prefiks tworzonej konfiguracji
    config_prefix=skis
    # nazwa zdalnego komputera
    remote_host=skis
    # czy jest to dynamiczne IP
    dynamic_host=yes
    # nazwa zdalnego uzytkownika
    remote_user=szarp
    # sciezka do raportow
    remote_path=/cygdrive/d/Raporty/Odczyty
    # nazwa grupy z parametrami
    params_group=Samsony
                                                                                    
    :szbwriter
    # shell pattern dla parametrow dwuslownych - zobacz 'info fnmatch'
    double_match=@(*-energia|*-objetosc)

  8. Kopiujemy skrypty get_sam, process_csv i convert_names z podkatalogu script/samson2 w źródłach SZARP'a do katalogu /opt/szarp/bin.

  9. Ustalamy uruchamianie skryptu get_sam w zadanym odstępie czasowym (np. co pół godziny) - albo za pomocą crontaba, albo za pomocą mechanizmu execute programu meaner3 (zalecane opcje parallel=yes i limit=0 - zobacz Sekcja 9.2).

Dodatkowo, istnieje możliwość ustalenia przez użytkowników nazw okien w programie przeglądającym (domyślnie są to "Samsony:<numer węzła>"). Odbywa się to przez umieszczenie na komputerze z Windows w katalogu z plikami CSV pliku nazwy.txt. Powinien on zawierać w kolejnych liniach starą (domyślną) i nową nazwę węzła, oddzielone myślnikiem, bez dodatkowych spacji. Przykład:

W112-Cicha 8
W115-Głośna 7
W528-Jana Sobieskiego 34
Nazwy mogą zawierać polskie znaki (w kodowaniu CP-1250!), są obcinane do 30 znaków, nie mogą zawierać znaków cudzysłowu i ukośnika. Konwersja jest dokonywana tekstowo na pliku params.xml konfiguracji. Nowe nazwy obowiązują do zmiany, przy czym zaleca się nieusuwanie starych wpisów, tylko dodawanie nowych na końcu. Przykładowo, jeżeli węzeł W112 miał się nazywać Cicha 8, a potem zmieniono jego nazwę na Cicha 12, to w pliku powinny być obecne wpisy:
W112-Cicha 8
Cicha 8-Cicha 12
Pozwoli to na prawidłową konwersję także parametrów z węzła W112, które pojawią się w konfiguracji w przyszłości.