Serwis wykorzystuje pliki cookies. Korzystając z forum wyrażasz zgodę na używanie cookies. Więcej informacji w regulaminie.
StacjePogody.waw.pl

Autor Wątek: Local Weather - program na PC do wysyłania danych na stronę internetową  (Przeczytany 31928 razy)

Offline geofinder

  • Stratus
  • ***
  • Wiadomości: 217
  • Otrzymał podziękowań: 6
  • Płeć: Mężczyzna
    • Stacja meteo - Rososz
  • Miejscowość: Rososz
  • Typ stacji: Viking 02041, Renkforce WH2600
Odp: Local Weather - program na PC do wysyłania danych na stronę internetową
« Odpowiedź #75 dnia: 07 Październik, 2015, 20:34:46 »
Zdecydowałem się udostępnić kody źródłowe programu lweather, głównie do celu użytkowego w linuksie.
Można modyfikować i udostępniać kod innym.
Bezpośredni link do archiwum: http://pogodawrososzy.republika.pl/lweather.tar.gz

Opiszę dość skomplikowany proces instalacji w systemie Raspbian (instalowany w urządzeniach Raspberry Pi).

Program napisany jest w języku "Object pascal", jest aplikacją okienkową (uruchamia się go w trybie "startx"), do instalacji w systemach Unix potrzebny jest kompilator tego języka. Pokażę jak zainstalować Free Pascal Compiler (w skrócie fpc) oraz środowisko Lazarus w systemie Raspbian.

Lepiej jest nie używać powłoki graficznej (startx) w czasie instalacji, tylko działać w trybie tekstowym, ponieważ może zabraknąć pamięci w czasie instalacji (szczególnie w starszych modelach Raspberry Pi 1). Podczas instalacji w wielu jej miejscach potrzebny będzie dostęp do internetu (aby pobrać oprogramowanie). Potrzebne będzie także dość dużo, ok. 500 MB wolnego miejsca na dysku (karcie microSD/SD).

Instalowanie z prawami administratora wymaga użycia polecenia sudo. Polecenie:

     sudo bash

zdejmuje z nas uciążliwość każdorazowego (gdy to konieczne) używania sudo w poleceniach.

Żeby pobrać i zainstalować fpc, w wierszu poleceń należy wpisać:

     apt-get install fpc
   
Następnie tak samo robimy z IDE lazarus:

     apt-get install lazarus

Jeżeli nie wystąpiły błędy podczas instalacji to mamy już dość stare, stabilne wersje programów, które wystarczą aby skompilować program lweather. Teraz możemy przejść do okienek wpisując startx. W menu programowanie pojawi się pozycja Lazarus. Gdyby po uruchomieniu Lazarus pytał o ścieżkę dostępu do źródeł fpc, należy odszukać ją w systemie i podać (u mnie /usr/share/fpcsrc/).

Local Weather wykorzystuje "internetowe" komponenty Indy 10, których nie ma standardowo w Lazarusie, więc należy je zainstalować.
Ze strony http://www.indyproject.org/Sockets/fpc/index.EN.aspx z sekcji Downloads pobieramy plik archiwum dla użytkowników Unix/Linux. Obecnie jest to dość stara wersja indy-10.2.0.3.tar.gz, ale oczywiście wystarczy. Wypakowujemy zawartość archiwum do podkatalogu w katalogu "components" Lazarusa.

    cd  /usr/lib/lazarus/0.9.30.4/components/
    tar -xvzf /home/user/Downloads/indy-10.2.0.3.tar.gz


Nazwa "user" w ścieżkach "/home/user/..." musi być zastąpiona odpowiednią nazwą użytkownika (standardowa nazwa użytkownika: "pi"). Folder "Downloads" dla polskiego języka będzie miał nazwę "Pobrane". Należy pamiętać także, że Lazarus musi mieć prawa zapisywać w utworzonym katalogu i jego podkatalogach. Można to uzyskać korzystając z polecenia:

    chmod -R 777 indy-10.2.0.3

W lazarusie otwieramy pakiet (Package) indylaz.lpk, który znajduje się w podkatalogu "lazarus" wypakowanego archiwum.
Następnie zmieniamy opcje kompilatora pakietu:

Inne pliki modułów (-Fu)

      ../fpc

Inne źródła (pliki .pp/.pas, używane tylko przez IDE, nie przez kompilator)

   lib/arm-linux

Zapisujemy i wciskamy "Kompiluj pakiet" (Build).

Gdy pakiet skompiluje się poprawnie możemy przejść do jego instalacji wciskając "Zainstaluj" (Use...->Install).
Jeżeli nie wystąpią błędy (okienko "Komunikaty"), Lazarus uruchomi się ponownie z rozszerzoną paletą komponentów (Indy Cilents Protocols itd.).

Jeśli przy instalacji fpc, lazarusa lub indy wystąpiły błędy uniemożliwiające dalszą instalację, można zwiększyć tzw. "swapsize" i spróbować ponownie zainstalować.

    nano /etc/dphys-swapfile

ustawiając

  CONF_SWAPSIZE=500

lub nawet

  CONF_SWAPSIZE=1000

Kiedy uda się zainstalować powyższe składniki, można wtedy zabrać się za instalowanie programu Local Weather.
Wypakowujemy pliki z archiwum podanego na początku postu, znanym już programem tar:

   cd /home/user/
   tar -xvzf /home/user/Downloads/lweather.tar.gz


W Lazarusie otwieramy projekt lweather.lpr (z wypakowanego archiwum) by go zbudować (Ctrl+F9). Po udanej kompilacji Local Weather jest już prawie gotowy do pracy.

Trzeba jeszcze skompilować napisany w języku C program fowsr do transmisji danych ze stacji typu Fine Offset.
Do transmisji niezbędny jest zainstalowany w linuksie pakiet libusb:

   apt-get install libusb-dev

Jeżeli program lweather znajduje się w innym folderze niż domyślnym /home/pi/lweater/ to należy jeszcze przed kompilacją zmienić kod programu fowsr, np. używając programu nano.

     nano /home/user/lweater/fowsr.c

Pliki znajdujące się w domowym katalogu użytkownika (i podkatalogach), można edytować także z poziomu okienek, używając domyślnego edytora tekstowego (Text Editor).

W pliku fowsr.c odszukaj linię:

   #define WORKPATH "//home//pi//lweather//"

i zmień ścieżkę na odpowiednią, na katalog w którym znajduje się lweather i fowsr (ważne też żeby były podwójne "//" zamiast pojedynczych).

Działając w tym katalogu,

    cd /home/user/lweather/

 utwórz fowsr następującym poleceniem:

    make all Makefile

Jeśli kompilator gcc wyrzuci błędy dotyczące modułów usb można spróbować zainstalować inny pakiet libusb np.:

   apt-get install libusb-1.0-0-dev

i ponownie użyć polecenia make.

Gdy kompilacja fowsr zakończy się powodzeniem, podłącz stację FO do portu USB w Raspberry Pi i uruchom program lweather by go skonfigurować.
Żeby lweather mógł uruchamiać fowsr w opcjach w zakładce "Station" trzeba wpisać hasło użytkownika dla polecenia sudo (domyślnie jest tam standardowe hasło po instalacji Raspbiana, więc jeśli nie było zmieniane w systemie to będzie prawdopodobnie to samo). W celu konfiguracji programu czytaj poprzednie posty w tym wątku.

Pomocnicze linki:
http://wiki.freepascal.org/Lazarus_on_Raspberry_Pi
« Ostatnia zmiana: 08 Październik, 2015, 17:00:55 wysłana przez geofinder »

Forum Użytkowników Stacji Pogodowych

Odp: Local Weather - program na PC do wysyłania danych na stronę internetową
« Odpowiedź #75 dnia: 07 Październik, 2015, 20:34:46 »

Offline geofinder

  • Stratus
  • ***
  • Wiadomości: 217
  • Otrzymał podziękowań: 6
  • Płeć: Mężczyzna
    • Stacja meteo - Rososz
  • Miejscowość: Rososz
  • Typ stacji: Viking 02041, Renkforce WH2600
Odp: Local Weather - program na PC do wysyłania danych na stronę internetową
« Odpowiedź #76 dnia: 01 Styczeń, 2016, 21:19:59 »
Nowa wersja 0.99.9r, a w niej:

- Warstwa hydrograficzna na mapie (w zakładce "Map" opcja "Rivers"),
- dodana funkcja usuwania skoków temperatury w wykresach i w oknie "Statistics" (opcje na stronie "Charts"),
- możliwość ustawienia częstotliwości (w minutach) odczytu ze stacji pogodowej (zakładka "Files"),
- w Linuksie usunięty błąd powodujący nieoczekiwane zamknięcie programu (w Windows ten błąd nie występował),
- w Linuksie zmieniona metoda transmisji poprzez program fowsr, teraz zastąpiony programem lwsr, który lepiej pasuje do Local Weather. Program lwsr jest napisany w Pascalu i kompiluje się go Lazarusie (tak samo jak lweather). Podobnie jak fowsr, lwsr do działania potrzebuje zainstalowanej biblioteki LibUsb.

Strona z której można pobrać najnowszą wersję programu:
http://pogodawrososzy.republika.pl/archive.html
« Ostatnia zmiana: 02 Styczeń, 2016, 12:40:33 wysłana przez geofinder »

Offline geofinder

  • Stratus
  • ***
  • Wiadomości: 217
  • Otrzymał podziękowań: 6
  • Płeć: Mężczyzna
    • Stacja meteo - Rososz
  • Miejscowość: Rososz
  • Typ stacji: Viking 02041, Renkforce WH2600
Odp: Local Weather - program na PC do wysyłania danych na stronę internetową
« Odpowiedź #77 dnia: 22 Styczeń, 2016, 18:48:28 »
Co nowego w wersji 0.99.9s:

1. Możliwość wysyłania danych do portalu Weather Underground.
2. Model średniego pionowego gradientu temperatury na podstawie danych z http://weather.uwyo.edu z lat 2007-2015 ze stacji Legionowo. Model uwzględnia wysokość, "sezonowość" - miesiąc i porę (dzień/noc).
3. Drobne zmiany w wyglądzie barometru i wykresach.
« Ostatnia zmiana: 22 Styczeń, 2016, 18:59:14 wysłana przez geofinder »

Offline geofinder

  • Stratus
  • ***
  • Wiadomości: 217
  • Otrzymał podziękowań: 6
  • Płeć: Mężczyzna
    • Stacja meteo - Rososz
  • Miejscowość: Rososz
  • Typ stacji: Viking 02041, Renkforce WH2600
Odp: Local Weather - program na PC do wysyłania danych na stronę internetową
« Odpowiedź #78 dnia: 14 Marzec, 2016, 19:57:08 »
W wersji 0.99.9t:

- W zakładce Internet opcja "Cache Up", czyli automatyczne buforowanie danych* (w osobnym pliku) wysyłanych do Weather Underground.
- Cache Up Creator - czyli manualne zapisywanie danych do bufora*.
- W zakładce Stations ustawienie jednostek stacji (ważne żeby były takie same jak w urządzeniu stacji).
- Dodatkowe statystyki dobowe dla poszczególnych parametrów i miesięcy, statystyki teraz można zapisać.
- Mapka "Synoptic" przedstawiająca temperaturę powietrza oraz kierunek i prędkość wiatru.


*Buforowanie (Cache Up) przed wysłaniem danych do WU zmnięjsza niebezpieczeństwo utraty danych.
« Ostatnia zmiana: 15 Marzec, 2016, 10:14:22 wysłana przez geofinder »

Offline geofinder

  • Stratus
  • ***
  • Wiadomości: 217
  • Otrzymał podziękowań: 6
  • Płeć: Mężczyzna
    • Stacja meteo - Rososz
  • Miejscowość: Rososz
  • Typ stacji: Viking 02041, Renkforce WH2600
Odp: Local Weather - program na PC do wysyłania danych na stronę internetową
« Odpowiedź #79 dnia: 24 Kwiecień, 2016, 12:35:45 »
Wczoraj na nowo instalowałem Raspbiana (Jessie) w Raspberry Pi 2 oraz Lazarusa i lweather.
Tym razem wszystko poszło dość gładko, bez problemów. Nastąpiły pewne zmiany, wiec chciałbym zaktualizować procedurę instalacyjną dla programu Local Weather.

Jak poprzednio ustawiamy prawa administratorskie:

sudo bash

Dodatkowo aktualizujemy system:

apt-get update
apt-get upgrade


Instalujemy kompilator:

apt-get install fpc

Instalujemy stabilną wersję Lazarusa:

apt-get install lazarus

Pobieramy archiwum źródeł Indy 10 http://www.indyproject.org/Sockets/fpc/indy-10.2.0.3.tar.gz

Zmieniamy katalog roboczy podając ścieżkę do folderu komponentów Lazarusa:

cd  /usr/lib/lazarus/1.2.4/components/

Do tego katalogu wypakowujemy pliki pakietu Indy:

tar -xvzf /home/pi/Downloads/indy-10.2.0.3.tar.gz

Ustawiamy prawa zapisu dla katalogu i podkatalogów:

chmod -R 777 indy-10.2.0.3

Otwieramy Lazarusa przez menu systemu:

Menu->Programming->Lazarus (1.2.4)

W Lazarusie otwieramy pakiet componentów Indy:

Package->Open Package File (.lpk)...

Wybierając plik:

/usr/lib/lazarus/1.2.4/components/indy-10.2.0.3/lazarus/indylaz.lpk

Następnie klikamy na opcje pakietu:

[Options]

I wpisujemy lub wybieramy z drzewa katalogów w polu "Other Unit Files":

../fpc

Zapisujemy wciskając przycisk [Save] i kompilujemy pakiet [Compile]
Komunikaty podczas kompilacji można obserwować w okienku "Messages".

Następnie ponownie wybieramy opcje pakietu [Options] i w polu
"Other Unit Files (.pp/.pas files, used only by IDE not by compiler)" ustawiamy:

lib/arm-linux

Zapisujemy [Save] i instalujemy [Use>>]Install

Pojawi się komunikat "Do you want rebuild Lazarus now?"
Potwierdzamy go wciskając przycisk [Yes]

Nie zapominamy o zainstalowaniu biblioteki libusb:

apt-get install libusb-dev

Tutaj pobieramy program Local Weather http://pogodawrososzy.republika.pl/lweather.tar.gz

Dalej zmieniamy katalog roboczy na folder domowy użytkownika

cd /home/pi/

Teraz trzeba wypakować pobrane źródła programu Local Weather

tar -xvzf /home/pi/Downloads/lweather.tar.gz

Aby można skompilować program lweather należy ustawić możliwość edytowania (zapisu) w katalogu projektu poleceniem:

chmod -R 777 lweather

Następnie w Lazarusie otwieramy projekt programu lweather

Project->Open Project...
/home/pi/lweather/lweather.lpi

Zmieniamy opcje projektu otwierając:

Project->Project Options...

W polu "Search Paths" musi znaleźć się ścieżka dostępu do źródeł Indy:

/usr/lib/lazarus/1.2.4/components/indy-10.2.0.3/fpc

Jeżeli jej nie ma, to trzeba ją dodać do listy przyciskiem [Add].

Teraz już możemy zbudować program używając:

Run->Compile

Gdy w oknie "Messages" wyświetli się komunikat "Project lweather successfully built" program jest poprawnie skompilowany.

Zostało jeszcze tylko zbudować program lwsr do komunikacji ze stacją. W tym celu w Lazarusie otwieramy  projekt:

/home/pi/lweather/lwsr.lpi

znanym poleceniem:

Project->Open Project...

i następnie kompilujemy program:

Run->Compile

I to już wszystko, program Local Weather jest już w pełni zainstalowany.
« Ostatnia zmiana: 24 Kwiecień, 2016, 14:52:10 wysłana przez geofinder »

Offline geofinder

  • Stratus
  • ***
  • Wiadomości: 217
  • Otrzymał podziękowań: 6
  • Płeć: Mężczyzna
    • Stacja meteo - Rososz
  • Miejscowość: Rososz
  • Typ stacji: Viking 02041, Renkforce WH2600
Odp: Local Weather - program na PC do wysyłania danych na stronę internetową
« Odpowiedź #80 dnia: 24 Lipiec, 2016, 15:46:42 »
Wersja 0.99.9u programu a w niej:

1. Podprogram do odczytu ze stacji typu Fine Offset (WH1080,WH1090,WH2080) lwsr napisany jest teraz w języku C (poprzednio był w Pascalu i czasem nie odczytywał danych). W Linuksie trzeba go skompilować poleceniem sudo make all Makefile.
2. W Oknie "Cache Up Creator" dodany przycisk [Send 2 WU] czyli ręczne wysyłanie pomiarów z bufora do Weather Undergrund.
3. Dodatkowy parametr Cloudbase (wysokość postawy chmur) na mapie.
4. Nowa warstwa "Adminborders" na mapie - czyli granice administracyjne województw.
5. Zmiany w wykresach (w zakładce Charts opcja "Start at hour").
« Ostatnia zmiana: 24 Lipiec, 2016, 18:50:11 wysłana przez geofinder »

Offline geofinder

  • Stratus
  • ***
  • Wiadomości: 217
  • Otrzymał podziękowań: 6
  • Płeć: Mężczyzna
    • Stacja meteo - Rososz
  • Miejscowość: Rososz
  • Typ stacji: Viking 02041, Renkforce WH2600
Odp: Local Weather - program na PC do wysyłania danych na stronę internetową
« Odpowiedź #81 dnia: 18 Grudzień, 2016, 19:29:03 »
W tym roku jeszcze wersja 0.99.9v. Główne zmiany:

1. Okno "Data Log Editor" a w nim podgląd i edycja* zapisanych rekordów (format Cumulusa).
2. Okno "Dayfile viewer". Tylko podgląd danych z programu Cumulus.
3. Nowy barometr połączony z termometrem wewnętrznym, zastępujący oddzielne wskaźniki (okno Sensors).


Na stronie http://pogodawrososzy.republika.pl/archive.html dodałem instrukcję instalacji lweather w raspberry pi w formacie PDF.

* Funcja Repair Record naprawia tylko: temperaturę punktu rosy, pozorną (apparent), windchill i humidex w danym wierszu. Funkcja Repair All naprawia błędne pola (temperatura zewn., wilgotność zewn. prędkość i poryw wiatru) i te same co Repair Record w całym zakresie wczytanych danych. W przypadku pierwszej funkcji, przed jej użyciem pola podstawowych parametrów trzeba poprawić ręcznie. Dodałem także funkcję Repair Press naprawy ciśnienia na poziomie morza dla pojedynczego rekordu.
« Ostatnia zmiana: 19 Grudzień, 2016, 12:42:28 wysłana przez geofinder »