Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // ------------------------------------------------------------------------------------------ //
- //
- // My Home E-Station by Tomasz Majcher
- //
- //
- //
- // ------------------------------------------------------------------------------------------ //
- // --- HISTORIA WERSJI ---------------------------------------------------------------------- //
- //
- // (27.03.2021) My Home E-Station core v0.012 - dodano obsługę Multi-Switch TFT
- // (27.03.2021) My Home E-Station core v0.011 - optymalizacja
- // (27.03.2021) My Home E-Station core v0.010 - dodano obsługę Zegara RTC na TFT
- // (23.03.2021) My Home E-Station core v0.009 - dodano obsługę Temp i Wilg na TFT
- // (20.03.2021) My Home E-Station core v0.008 - dodano obsługę wyświetlacza TFT
- // (19.03.2021) My Home E-Station core v0.007 - dodano funkcje budowy tablicy WEATHER
- // (19.03.2021) My Home E-Station core v0.006 - dodano obsługę Archiwizacji odczytów
- // (18.03.2021) My Home E-Station core v0.005 - dodano obsługę czytnika kart SD i SPIFFS
- // (17.03.2021) My Home E-Station core v0.004 - dodano obsługę zadań Scheluder
- // (16.03.2021) My Home E-Station core v0.003 - dodano obsługę rdzenie procesora ESP32
- // (15.03.2021) My Home E-Station core v0.002 - dodano obsługę Open Weather Map
- // (14.03.2021) My Home E-Station core v0.001 - dodano obsługę NTP
- // (13.03.2021) My Home E-Station core v0.000 - początek budowy systemu głównego
- //
- // --- PROTOTYPY------------------------------------------------------------------------------ //
- void Core_0_Task1( void * pvParameters ); // funkcja Task1 dla rdzenia nr. 0 CPU
- void Core_0_Task2( void * pvParameters ); // funkcja Task2 dla rdzenia nr. 0 CPU
- void Core_0_Task3( void * pvParameters ); // funkcja Task3 dla rdzenia nr. 0 CPU
- void Core_0_Task4( void * pvParameters ); // funkcja Task4 dla rdzenia nr. 0 CPU
- void Core_0_Task5( void * pvParameters ); // funkcja Task5 dla rdzenia nr. 0 CPU
- void Core_1_Task1( void * pvParameters ); // funkcja Task1 dla rdzenia nr. 1 CPU
- void Core_1_Task2( void * pvParameters ); // funkcja Tasl2 dla rdzenia nr. 1 CPU
- void Core_1_Task3( void * pvParameters ); // funkcja Tasl2 dla rdzenia nr. 1 CPU
- void Task0Callback(); // funkcja dla task_0
- void Task1Callback(); // funkcja dla task_1
- void Task2Callback(); // funkcja dla task_2
- void Task3Callback(); // funkcja dla task_2
- // --- TYPEDEF ------------------------------------------------------------------------------ //
- // --- DEFINE ------------------------------------------------------------------------------- //
- #define SerialSpeed 115200 // prędkość komunikacji szeregowej
- #define RxTxSpeed 19200 // prędkość transmisji RxTx
- #define true 1 // True - prawda
- #define false 0 // False - fałsz
- #define Terminal true // Terminal jest True
- #define RamDebug false // Debuger wolnej pamięci RAM
- // --- INCLUDE ------------------------------------------------------------------------------ //
- #include <WiFi.h> // biblioteka obsługi Wi-Fi
- #include <NTPClient.h> // dla serwera NTP
- #include <ESP32Time.h> // zegar RTC ESP32
- #include <SPIFFS.h> // system plików SPIFFS
- #include <FTPServer.h> // Serwer FTP
- #include "SoftwareSerial.h" // RX TX - jeszcze nie zaimplementowano
- #include <TFT_eSPI.h> // Sprzętowa biblioteka TFT
- #include <SPI.h>
- #if Terminal
- #include "tools.h" // moje narzędzia dla Serial jeśli Terminal True
- #endif
- #include "pogoda.h" // moja biblioteka do obsługi serwera pogodowego
- #include "kartaSD.h" // moja biblioteka do obsługi SD i SPIFFS
- // --- STAŁE GLOBALNE ------------------------------------------------------------------------ //
- const char *ssid = "DIABLO"; // wifi ssid sieci
- const char *password = "XXX"; // wifi hasło sieci
- struct SCzas
- {
- String SformatowanaData;
- int DzienTygodnia;
- int DzienMiesiaca;
- int Miesiac;
- int Rok;
- String SformatowanyCzas;
- int Godzina;
- int Minuta;
- int Sekunda;
- }
- zegar;
- // --- obsługa zapisu temperatur i obliczanie średniej dziennej ------------
- double TabTemperatura[24]; // tablica do przechowywanie temperatur
- String SrednieTemperatury = ""; // łańcuch String ze średnimi temperaturami
- uint8_t TabTemperaturaIndex = 0; // index zapisanych danych
- int TabCisnienie[24]; // tablica do przechowywania cisnienia
- String SrednieCisnienie = ""; // łańcuch String ze średnimi cisnieniami
- uint8_t TabCisnienieIndex = 0; // index zapisanych danych
- int TabWilgotnosc[24]; // tablica do przechowywania wilgotnosci
- String SredniaWilgotnosc = ""; // łańcuch String ze średnimi wilgotnościami
- uint8_t TabWilgotnoscIndex = 0; // index zapisanych danych
- int TabZachmurzenie[24]; // tablica do przechowywania zachmurzenia
- String SrednieZachmurzenie = ""; // łańcuch String ze średnim zachmurzeniem
- uint8_t TabZachmurzenieIndex = 0; // index zapisanych danych
- double TabPredkoscWiatru[24]; // tablica do przechowywania prędkości wiatru
- String SredniaPredkoscWiatru; // łańcuch String ze średnimi prędkościami wiatru
- uint8_t TabWiatrIndex = 0; // index zapisanych danych
- String WschodSlonca = ""; // łańcuch String do przechowywania wschodu słońca
- String ZachodSlonca = ""; // łańcuch String do przechowywania zachodu słońca
- bool Flaga_Sloneczko = false; // pobieramy tylko raz na dobę, głupie nazwy :-) słoneczko
- bool Flaga_NowyDzien = false; // czy nowy dzień ? TAK/NIE True/False
- bool Flaga_NowaGodzina = false; // czy nowa godzina ? TAK/NIE True/False
- bool Flaga_NowaMinuta = false; // czy nowa minuta ? TAK/NIE True/False
- int czyNowyDzien = 0; // zmienna globalna do porównania
- int czyNowaGodzina = 0; // zmienna globalna do porównania
- int czyNowaMinuta = 0; // zmienna globalna do porównania
- #define LOOP_PERIOD 35 // Display updates every 35 ms
- bool Flaga_TFT_Panel_1 = false;
- // --- OBIEKTY ------------------------------------------------------------------------------ //
- #if Terminal
- Tools tools; // obiekt tools jeśli Terminal True
- #endif
- TaskHandle_t CPU_Core_0; // rdzeń nr. 0 CPU - ESP32
- TaskHandle_t CPU_Core_1; // rdzeń nr. 1 CPU - ESP32
- WiFiUDP ntpUDP; // ntp
- NTPClient timeClient(ntpUDP, "pool.ntp.org", 3600); // ntp client
- ESP32Time rtc; // zegar wewnętrznyRTC ESP32
- TPogoda pogoda("Lubin","Pl"); // pseudo-obiekt pogoda (miasto,kraj)
- FTPServer ftpSrv(SPIFFS); // serwer FTP na systemie plików SPIFFS
- SoftwareSerial RxTx( 4, 5); // RX = pinD1, TX = pinD2 na ESP2886
- TFT_eSPI tft = TFT_eSPI(); // wyświetlacz TFT
- #include "tft.h"
- TFTPanel Panel(tft);
- // --- SETUP INIT --------------------------------------------------------------------------- //
- void Terminal_Start()
- {
- #if Terminal
- Serial.begin(SerialSpeed);
- tools.TypeWriter(" Tomek Home System v0.08 Beta for ESP32 ");
- tools.PokazZasobySystemowe(false, true);
- #endif
- }
- void SPIFFS_Start()
- {
- //SPIFFS_Format();
- if (SPIFFS.begin())
- {
- #if Terminal
- tools.PokazWiadomosc("SETUP","SPIFFS","Pomyslnie zamontowano SPIFFS");
- #endif
- #if Terminal
- #if RamDebug
- tools.PokazWolnyRAM(true, true, 60);
- #endif
- #endif
- }
- else
- {
- #if Terminal
- tools.PokazWiadomosc("SETUP","SPIFFS","Blad. Nie zamontowano SPIFFS");
- #endif
- #if Terminal
- #if RamDebug
- tools.PokazWolnyRAM(true, true, 60);
- #endif
- #endif
- }
- }
- void WiFi_Start()
- {
- WiFi.begin(ssid, password);
- #if Terminal
- tools.PokazWiadomosc("SETUP","Nawiazuje polaczenie z siecia Wi-Fi");
- #endif
- while ( WiFi.status() != WL_CONNECTED )
- {
- #if Terminal
- tools.PokazWiadomosc(".",150);
- #endif
- }
- #if Terminal
- tools.PokazWiadomosc("SETUP","Polaczono z siecia WiFI");
- tools.PokazWiadomosc("SETUP","Twoj adres IP",WiFi.localIP().toString().c_str());
- #endif
- }
- void FTP_Start()
- {
- ftpSrv.begin(F("ESP32"), F("ESP32"));
- #if Terminal
- tools.PokazWiadomosc("SETUP", "FTP", "Uruchomiono serwer FTP");
- tools.PokazWiadomosc("SETUP", "Login FTP", "ESP32");
- tools.PokazWiadomosc("SETUP", "Haslo FTP", "ESP32");
- #endif
- }
- void TimeCLient_Start()
- {
- timeClient.begin();
- AktualizujCzas();
- #if Terminal
- tools.PokazWiadomosc("SETUP", "TimeClient","Uruchomiono klienta");
- #endif
- }
- void Reboot_Start()
- {
- ArchiwizujReboot();
- #if Terminal
- tools.PokazWiadomosc("SETUP", "Reboot","Zapisano datę i czas ponownego uruchomienia");
- #endif
- }
- // --- SETUP -------------------------------------------------------------------------------- //
- void setup()
- {
- RxTx.begin(RxTxSpeed); // uruchom komunikację RxTx
- Terminal_Start(); // start Terminala Serial
- WiFi_Start(); // start WiFi
- SPIFFS_Start(); // start systemu plików SPIFFS
- FTP_Start(); // start serwera FTP
- TimeCLient_Start(); // start klienta Time
- pogoda.PobierzPogode(); // pobierz by uniknąć błedów w przypadku wywołania wątku
- Panel.PanelInit();
- Panel.AnalogPanel_v1_Create();
- Panel.AnalogPanel_v1_Show(int (pogoda.PublicPobierzTemperature()), pogoda.PublicPobierzWilgotnosc()) ;
- // --- CPU_Core_0 ----------------------------------------------------------------------------------
- xTaskCreatePinnedToCore(Core_0_Task1, "CPU_Core_0", 10000, NULL, 1, &CPU_Core_0, 0);
- vTaskDelay(500 / portTICK_PERIOD_MS);
- xTaskCreatePinnedToCore(Core_0_Task2, "CPU_Core_0", 10000, NULL, 1, &CPU_Core_0, 0);
- vTaskDelay(500 / portTICK_PERIOD_MS);
- xTaskCreatePinnedToCore(Core_0_Task3, "CPU_Core_0", 10000, NULL, 1, &CPU_Core_0, 0);
- vTaskDelay(500 / portTICK_PERIOD_MS);
- xTaskCreatePinnedToCore(Core_0_Task4, "CPU_Core_0", 10000, NULL, 1, &CPU_Core_0, 0);
- vTaskDelay(500 / portTICK_PERIOD_MS);
- xTaskCreatePinnedToCore(Core_0_Task5, "CPU_Core_0", 10000, NULL, 1, &CPU_Core_0, 0);
- vTaskDelay(500 / portTICK_PERIOD_MS);
- // --- CPU_Core_1 ----------------------------------------------------------------------------------
- xTaskCreatePinnedToCore(Core_1_Task1, "CPU_Core_1", 10000, NULL, 1, &CPU_Core_1, 1);
- vTaskDelay(500 / portTICK_PERIOD_MS);
- xTaskCreatePinnedToCore(Core_1_Task2, "CPU_Core_1", 10000, NULL, 1, &CPU_Core_1, 1);
- vTaskDelay(500 / portTICK_PERIOD_MS);
- xTaskCreatePinnedToCore(Core_1_Task3, "CPU_Core_1", 10000, NULL, 1, &CPU_Core_1, 1);
- vTaskDelay(500 / portTICK_PERIOD_MS);
- Reboot_Start(); // archiwizuj do pliku czas ponownego uruchomienia systemu
- }
- // ----------------------------------------------------------------------------------------------------
- // --- Rdzeń 0 CPU - Zadanie 1 - co 15 minut ----------------------------------------------------------
- void Core_0_Task1( void * pvParameters ) // Rdzeń 0 Zadanie 1
- { // początek
- for(;;) // nieskończona pętla
- { // początek FOR
- #if Terminal
- tools.DrukujLinie(60);
- tools.PokazWiadomosc("ESP32","CORE", "Wykonuje watek Task1 na CORE-0");
- #if RamDebug
- tools.PokazWolnyRAM(true, true, 60);
- #endif
- #endif
- pogoda.PobierzPogode(); // pobierz pogodę z serwera
- pogoda.PokazPogode(); // wyświetl pogodę
- // ------------------------------------------------------------------------------------------ //
- // jeśli Flaga_TFT_Panel_1 jest TRUE to znaczy że panel został TEMPERATURY i WILGOTNOŚCI //
- // jest obecnie wyświetlony na TFT. Co 15 minut po pobraniu danych z serwera OpenWeatherMap //
- // wyświetl zaktualizowane odczyty na wyświetlaczu analogowym //
- // ------------------------------------------------------------------------------------------ //
- // ------------------------------------------------------------------------------------------ //
- delay(900000); // wykonuj 15 min
- }
- }
- // ----------------------------------------------------------------------------------------------------
- // --- Rdzeń 0 CPU - Zadanie 2 - co 10 minut ----------------------------------------------------------
- void Core_0_Task2( void * pvParameters ) // Rdzeń 0 Zadanie 1
- { // początek
- for(;;) // nieskończona pętla
- { // początek FOR
- AktualizujCzas();
- if (czyNowaGodzina != zegar.Godzina) // czy zmieniła się godzina ?
- {
- czyNowaGodzina = zegar.Godzina; // jeśli tak zapisz nową godzinę do zmiennej Godzina
- Flaga_NowaGodzina = true; // flaga na true
- }
- if (czyNowyDzien != zegar.DzienMiesiaca) // czy zmienił się dzien ?
- {
- czyNowyDzien = zegar.DzienMiesiaca; // jeśli tak zapisz nowy dzień do zmiennej Dzien
- Flaga_NowyDzien = true; // flaga na true
- Flaga_Sloneczko = true; // flaga dla wschod i zachod slonca
- }
- #if Terminal
- tools.DrukujLinie(60);
- tools.PokazWiadomosc("ESP32", "CORE", "Wykonuje watek Task2 na CORE-0");
- #if RamDebug
- tools.PokazWolnyRAM(true, true, 60);
- #endif
- #endif
- delay(600000); // wykonuj co 10 minut
- }
- }
- // ----------------------------------------------------------------------------------------------------
- // --- Rdzeń 0 CPU - Zadanie 3 - co 1 minutę ----------------------------------------------------------
- void Core_0_Task3( void * pvParameters ) // CPU Core 0 - task 3
- {
- for(;;)
- {
- if( czyNowaMinuta != rtc.getMinute()) // sprawdź czy zmieniła się minuta
- {
- Flaga_NowaMinuta = true; // minuta się zmieniła - ustaw FLAGĘ
- czyNowaMinuta = rtc.getMinute(); // altualizuj z RTC
- #if Terminal
- tools.PokazWiadomosc("CORE0 TASK3","Czas RTC", rtc.getTime().c_str());
- #if RamDebug
- tools.PokazWolnyRAM(true, true, 60);
- #endif
- #endif
- }
- Panel.AnalogPanel_v1_Show(int (pogoda.PublicPobierzTemperature()), pogoda.PublicPobierzWilgotnosc());
- delay(60000); // wykonuj co 1 minute
- }
- }
- // ----------------------------------------------------------------------------------------------------
- // --- Rdzeń 0 CPU - Zadanie 4 - co 1 minutę ----------------------------------------------------------
- void Core_0_Task4( void * pvParameters ) // CPU Core 0 - task 4
- {
- for(;;)
- {
- if ( Flaga_NowyDzien ) // jeśli minęła północ
- {
- Flaga_NowyDzien = false; // przestaw flagę na false, wejście udane
- #if Terminal
- tools.DrukujLinie(60);
- #endif
- if (TabTemperaturaIndex > 0) // jeśli istnieją jakieś dane ( index > 0)
- {
- ArchiwizujTemperature(); // archiwizuj temperaturę
- TabTemperaturaIndex = 0; // resetuj index tablicy
- SrednieTemperatury = ""; // resetuj stringa
- } // lub jeśli nie ma danych pokaz wiadomosc
- else tools.PokazWiadomosc("CORE0 TASK4","Temperatura","Nie ma co archiwizowac !");
- if (TabCisnienieIndex > 0)
- {
- ArchiwizujCisnienie();
- TabCisnienieIndex = 0;
- SrednieCisnienie = "";
- }
- else tools.PokazWiadomosc("CORE0 TASK4","Cisnienie","Nie ma co archiwizowac !");
- if (TabWilgotnoscIndex > 0)
- {
- ArchiwizujWilgotnosc();
- TabWilgotnoscIndex = 0;
- SredniaWilgotnosc = "";
- }
- else tools.PokazWiadomosc("CORE0 TASK4","Wilgotnosc","Nie ma co archiwizowac !");
- if (TabZachmurzenieIndex > 0)
- {
- ArchiwizujZachmurzenie();
- TabZachmurzenieIndex = 0;
- SrednieZachmurzenie = "";
- }
- else tools.PokazWiadomosc("CORE0 TASK4","Zachmurzenie","Nie ma co archiwizowac !");
- if (TabWiatrIndex > 0)
- {
- ArchiwizujPredkoscWiatru();
- TabWiatrIndex = 0;
- SredniaPredkoscWiatru = "";
- }
- else tools.PokazWiadomosc("CORE0 TASK4","Predkosc Wiatru","Nie ma co archiwizowac !");
- #if Terminal
- #if RamDebug
- tools.PokazWolnyRAM(true, true, 60);
- #endif
- #endif
- }
- delay(600000); // wykonuj co 10 minut
- }
- }
- // ----------------------------------------------------------------------------------------------------
- // --- Rdzeń 0 CPU - Zadanie 5------------------------------------------------------------------------
- void Core_0_Task5( void * pvParameters ) // CPU Core 0 - task 5
- {
- for(;;)
- {
- if ( Flaga_NowaGodzina )
- {
- Flaga_NowaGodzina = false; // przestaw flagę na false, wejście udane
- #if Terminal
- tools.DrukujLinie(60);
- #endif
- BudujTabliceTemperatur(); // zapisz do tablicy nowe dane o temperatyrze powietrza
- BudujTabliceCisnien(); // zapisz do tablicy nowe dane o ciśnieniu atmosferycznym
- BudujTabliceWilgotnosci(); // zapisz do tablicy nowe dane o wilgotności powietrza
- BudujTabliceZachmurzenia(); // zapisz do tablicy nowe dane o zachmurzeniu nieba
- BudujTablicePredkosciWiatru(); // zapisz do tablicy nowe dane o prędkości wiatru
- tools.DrukujLinie(60);
- PokazTabliceTemperatur(); // pokaż tablicę z pobranymi informacjami o temperaturze
- PokazSredniaTemperatur(); // pokaż średnią temperaturę
- PokazTabliceCisnien(); // pokaż tablicę z pobranymi informacjami o ciśnieniu
- PokazSredniaCisnien(); // pokaż średnie ciśnienie
- PokazTabliceWilgotnosci(); // pokaż tablicę z pobranymi informacjami o wilgotności
- PokazSredniaWilgotnosc(); // pokaż średnią wilgotność
- PokazTabliceZachmurzenia(); // pokaż tablicę z pobranymi informacjami o zachmurzeniu
- PokazSrednieZachmurzenie(); // pokaż średnie zachmurzenie nieba
- PokazTablicePredkosciWiatru(); // pokaż tablicę z pobranymi prędkościamia wiatru
- PokazSredniaPredkoscWiatru(); // pokaż średnią prędkość wiatru
- #if Terminal
- #if RamDebug
- tools.PokazWolnyRAM(true, true, 60);
- #endif
- #endif
- }
- if ( Flaga_Sloneczko ) // archiwuzuj 1x na dobę wschód / zachód słońca
- {
- #if Terminal
- tools.DrukujLinie(60);
- #endif
- BudujBuforSloneczko(); // zbuduj bufor WschodSlonca / ZachodSłonca
- ArchiwizujSloneczko(); // zapisz odczyty do pamięci SPIFFS
- PokazBuforSloneczko(); // pokaz zawartość buforów
- Flaga_Sloneczko = false; // przestaw flagę na false
- WschodSlonca = ""; // resetuj bufor WschodSlonca ( EMPTY )
- ZachodSlonca = ""; // resetuj bufor ZachodSlonca ( EMPTY )
- #if Terminal
- #if RamDebug
- tools.PokazWolnyRAM(true, true, 60);
- #endif
- #endif
- }
- else tools.PokazWiadomosc("CORE0 TASK4","Wschod Zachod Slonca","Nie ma co archiwizowac !");
- delay(3600000); // wykonuj co 1h
- }
- }
- // ----------------------------------------------------------------------------------------------------
- // --- Rdzeń 1 CPU - Zadanie 1 ------------------------------------------------------------------------
- void Core_1_Task1( void * pvParameters ) // Rdzeń 0 Zadanie 1
- { // początek
- for(;;) // nieskończona pętla
- { // początek FOR
- ftpSrv.handleFTP(); // serwer FTP w tle
- delay(10); //
- } // koniec pętli FOR
- }
- // ----------------------------------------------------------------------------------------------------
- // --- Rdzeń 1 CPU - Zadanie 2 ------------------------------------------------------------------------
- void Core_1_Task2( void * pvParameters ) // Rdzeń 0 Zadanie 1
- { // początek
- for(;;) // nieskończona pętla
- { // początek FOR
- Panel.MultiSwitchPanel_v1(rtc);
- delay(5000); // wykonuj co 10 sekund
- } // koniec pętli FOR
- }
- // ----------------------------------------------------------------------------------------------------
- // --- Rdzeń 1 CPU - Zadanie 3 ------------------------------------------------------------------------
- void Core_1_Task3( void * pvParameters ) // Rdzeń 0 Zadanie 1
- { // początek
- for(;;) // nieskończona pętla
- { // początek FOR
- Panel.DigitalClock_v1_Show(rtc); // wyświetl ZEGAR
- delay(1000 ); // wykonuj co 1s
- } // koniec pętli FOR
- }
- // ----------------------------------------------------------------------------------------------------
- // --- Task 0 Callback --- co 30 minut ----------------------------------------------------------------
- void Task0Callback() // funkcja dla task_0
- {
- }
- // ----------------------------------------------------------------------------------------------------
- // --- Task 1 Callback --------------------------------------------------------------------------------
- void Task1Callback() // funkcja dla task_1
- {
- }
- // ----------------------------------------------------------------------------------------------------
- // --- Task 2 Callback --------------------------------------------------------------------------------
- void Task2Callback() // funkcja dla task2
- {
- }
- // ----------------------------------------------------------------------------------------------------
- // --- Task 1 Callback --------------------------------------------------------------------------------
- void Task3Callback() // funkcja dla task_3
- {
- }
- // ----------------------------------------------------------------------------------------------------
- // --- L O O P ----------------------------------------------------------------------------------------
- // ----------------------------------------------------------------------------------------------------
- void loop()
- {
- }
- // ----------------------------------------------------------------------------------------------------
- // --- Archiwizuj Temperature -------------------------------------------------------------------------
- void ArchiwizujTemperature()
- {
- String Bufor = "[" + zegar.SformatowanaData + "]" + SrednieTemperatury + "\n";
- DodajDoPliku(SPIFFS, "/temperatura.txt", &Bufor);
- }
- // ----------------------------------------------------------------------------------------------------
- void BudujTabliceTemperatur()
- {
- TabTemperatura[TabTemperaturaIndex] = pogoda.PublicPobierzTemperature();
- SrednieTemperatury += "[" + String(TabTemperatura[TabTemperaturaIndex]) + "]";
- TabTemperaturaIndex ++;
- #if Terminal
- tools.PokazWiadomosc("ESP","BudujTabliceTemperatur","Pobrano do tablicy");
- #if RamDebug
- tools.PokazWolnyRAM(false, false);
- #endif
- #endif
- }
- // ----------------------------------------------------------------------------------------------------
- void PokazTabliceTemperatur()
- {
- tools.PokazWiadomosc("ESP","Tablica Temperatur", SrednieTemperatury.c_str());
- #if RamDebug
- tools.PokazWolnyRAM(false, false);
- #endif
- }
- // ----------------------------------------------------------------------------------------------------
- void PokazSredniaTemperatur()
- {
- double sumator = 0;
- for ( uint_fast8_t i = 0; i < TabTemperaturaIndex; i ++ ) sumator += TabTemperatura[i];
- if ( TabTemperaturaIndex > 0 ) sumator = sumator / TabTemperaturaIndex; // nie dziel przez ZERO
- String bufor = String(sumator) + " st.C";
- tools.PokazWiadomosc("ESP","Srednia Temperatura",bufor.c_str());
- #if RamDebug
- tools.PokazWolnyRAM(false, false);
- #endif
- }
- // ----------------------------------------------------------------------------------------------------
- // --- Archiwizuj Cisnienie ---------------------------------------------------------------------------
- void ArchiwizujCisnienie()
- {
- String Bufor = "[" + zegar.SformatowanaData + "]" + SrednieCisnienie + "\n";
- DodajDoPliku(SPIFFS, "/cisnienie.txt", &Bufor);
- }
- // ----------------------------------------------------------------------------------------------------
- void BudujTabliceCisnien()
- {
- TabCisnienie[TabCisnienieIndex] = pogoda.PublicPobierzCisnienie();
- SrednieCisnienie += "[" + String(TabCisnienie[TabCisnienieIndex]) + "]";
- TabCisnienieIndex ++;
- #if Terminal
- tools.PokazWiadomosc("ESP","BudujTabliceCisnien","Pobrano do tablicy");
- #if RamDebug
- tools.PokazWolnyRAM(false, false);
- #endif
- #endif
- }
- // ----------------------------------------------------------------------------------------------------
- void PokazTabliceCisnien()
- {
- tools.PokazWiadomosc("ESP","Tablica Cisnienia", SrednieCisnienie.c_str());
- #if RamDebug
- tools.PokazWolnyRAM(true, true, 60);
- #endif
- }
- // ----------------------------------------------------------------------------------------------------
- void PokazSredniaCisnien()
- {
- uint16_t sumator = 0;
- for ( uint_fast8_t i = 0; i < TabCisnienieIndex; i ++ ) sumator += TabCisnienie[i];
- if ( TabCisnienieIndex > 0 ) sumator = sumator / TabCisnienieIndex; // nie dziel przez ZERO
- String bufor = String(sumator) + " mPA";
- tools.PokazWiadomosc("ESP","Srednia Cisnien",bufor.c_str());
- #if RamDebug
- tools.PokazWolnyRAM(false, false);
- #endif
- }
- // ----------------------------------------------------------------------------------------------------
- // --- Archiwizuj Wilgotnosc --------------------------------------------------------------------------
- void ArchiwizujWilgotnosc()
- {
- String Bufor = "[" + zegar.SformatowanaData + "]" + SredniaWilgotnosc + "\n";
- DodajDoPliku(SPIFFS, "/wilgotnosc.txt", &Bufor);
- }
- // ----------------------------------------------------------------------------------------------------
- void BudujTabliceWilgotnosci()
- {
- TabWilgotnosc[TabWilgotnoscIndex] = pogoda.PublicPobierzWilgotnosc();
- SredniaWilgotnosc += "[" + String(TabWilgotnosc[TabWilgotnoscIndex]) + "]";
- TabWilgotnoscIndex ++;
- #if Terminal
- tools.PokazWiadomosc("ESP","BudujTabliceWilgotnosci","Pobrano do tablicy");
- #if RamDebug
- tools.PokazWolnyRAM(false, false);
- #endif
- #endif
- }
- // ----------------------------------------------------------------------------------------------------
- void PokazTabliceWilgotnosci()
- {
- tools.PokazWiadomosc("ESP","Tablica Wilgotnosci", SredniaWilgotnosc.c_str());
- #if RamDebug
- tools.PokazWolnyRAM(true, true, 60);
- #endif
- }
- // ----------------------------------------------------------------------------------------------------
- void PokazSredniaWilgotnosc()
- {
- uint16_t sumator = 0;
- for ( uint_fast8_t i = 0; i < TabWilgotnoscIndex; i ++ ) sumator += TabWilgotnosc[i];
- if ( TabWilgotnoscIndex > 0 ) sumator = sumator / TabWilgotnoscIndex; // nie dziel przez ZERO
- String bufor = String(sumator) + " %";
- tools.PokazWiadomosc("ESP","Srednia Wilgotnosc",bufor.c_str());
- #if RamDebug
- tools.PokazWolnyRAM(false, false);
- #endif
- }
- // ----------------------------------------------------------------------------------------------------
- // --- Archiwizuj Zachmurzenie ------------------------------------------------------------------------
- void ArchiwizujZachmurzenie()
- {
- String Bufor = "[" + zegar.SformatowanaData + "]" + SrednieZachmurzenie + "\n";
- DodajDoPliku(SPIFFS, "/zachmurzenie.txt", &Bufor);
- }
- // ----------------------------------------------------------------------------------------------------
- void BudujTabliceZachmurzenia()
- {
- TabZachmurzenie[TabZachmurzenieIndex] = pogoda.PublicPobierzZachmurzenie();
- SrednieZachmurzenie += "[" + String(TabZachmurzenie[TabZachmurzenieIndex]) + "]";
- TabZachmurzenieIndex ++;
- #if Terminal
- tools.PokazWiadomosc("ESP","BudujTabliceZachmurzenia","Pobrano do tablicy");
- #if RamDebug
- tools.PokazWolnyRAM(false, false);
- #endif
- #endif
- }
- // ----------------------------------------------------------------------------------------------------
- void PokazTabliceZachmurzenia()
- {
- tools.PokazWiadomosc("ESP","Tablica Zachmurzenia", SrednieZachmurzenie.c_str());
- #if RamDebug
- tools.PokazWolnyRAM(false, false);
- #endif
- }
- // ----------------------------------------------------------------------------------------------------
- void PokazSrednieZachmurzenie()
- {
- uint16_t sumator = 0;
- for ( uint_fast8_t i = 0; i < TabZachmurzenieIndex; i ++ ) sumator += TabZachmurzenie[i];
- if ( TabZachmurzenieIndex > 0 ) sumator = sumator / TabZachmurzenieIndex; // nie dziel przez ZERO
- String bufor = String(sumator) + " %";
- tools.PokazWiadomosc("ESP","Srednie Zachmurzenie",bufor.c_str());
- #if RamDebug
- tools.PokazWolnyRAM(false, false);
- #endif
- }
- // ----------------------------------------------------------------------------------------------------
- // --- Archiwizuj Prędkość Wiatru ---------------------------------------------------------------------
- void ArchiwizujPredkoscWiatru()
- {
- String Bufor = "[" + zegar.SformatowanaData + "]" + SredniaPredkoscWiatru + "\n";
- DodajDoPliku(SPIFFS, "/wiatr.txt", &Bufor);
- }
- // ----------------------------------------------------------------------------------------------------
- void BudujTablicePredkosciWiatru()
- {
- TabPredkoscWiatru[TabWiatrIndex] = pogoda.PublicPobierzPredkoscWiatru();
- SredniaPredkoscWiatru += "[" + String(TabPredkoscWiatru[TabWiatrIndex]) + "]";
- TabWiatrIndex ++;
- #if Terminal
- tools.PokazWiadomosc("ESP","BudujTablicePredkosciWiatru","Pobrano do tablicy");
- #if RamDebug
- tools.PokazWolnyRAM(false, false);
- #endif
- #endif
- }
- // ----------------------------------------------------------------------------------------------------
- void PokazTablicePredkosciWiatru()
- {
- tools.PokazWiadomosc("ESP","Tablica Predkosc Wiatru", SredniaPredkoscWiatru.c_str());
- #if RamDebug
- tools.PokazWolnyRAM(false, false);
- #endif
- }
- // ----------------------------------------------------------------------------------------------------
- void PokazSredniaPredkoscWiatru()
- {
- uint16_t sumator = 0;
- for ( uint_fast8_t i = 0; i < TabWiatrIndex; i ++ ) sumator += TabPredkoscWiatru[i];
- if ( TabWiatrIndex > 0 ) sumator = sumator / TabWiatrIndex; // nie dziel przez ZERO
- String bufor = String(sumator) + " km/h";
- tools.PokazWiadomosc("ESP","Srednia Predkosc Wiatru",bufor.c_str());
- #if RamDebug
- tools.PokazWolnyRAM(false, false);
- #endif
- }
- // ----------------------------------------------------------------------------------------------------
- // --- Archiwizuj Wschod / Zachod Slonca --------------------------------------------------------------
- void BudujBuforSloneczko()
- {
- WschodSlonca = pogoda.PublicPobierzWschodSlonca(); // zapisz do (GLOBAL) String WschodSlonca
- ZachodSlonca = pogoda.PublicPobierzZachodSlonca(); // zapisz do (GLOBAL) String ZachodSlonca
- }
- // ----------------------------------------------------------------------------------------------------
- void ArchiwizujSloneczko()
- {
- String Bufor = "["+ zegar.SformatowanaData +"][Wschod. " + WschodSlonca + "][Zachod. " + ZachodSlonca + "]" + "\n";
- DodajDoPliku(SPIFFS, "/slonce.txt", &Bufor);
- }
- // ----------------------------------------------------------------------------------------------------
- void ArchiwizujReboot()
- {
- String Bufor = "[" + zegar.SformatowanaData + "][" + zegar.SformatowanyCzas + "]\n";
- #if Terminal
- tools.DrukujLinie(60);
- #endif
- DodajDoPliku(SPIFFS, "/reboot.txt", &Bufor);
- }
- // ----------------------------------------------------------------------------------------------------
- void PokazBuforSloneczko()
- {
- String Bufor = "[Wschod " + WschodSlonca + "][Zachod " + ZachodSlonca + "]";
- tools.PokazWiadomosc("ESP","SLONCE", Bufor.c_str());
- #if RamDebug
- tools.PokazWolnyRAM(false, false);
- #endif
- }
- // ----------------------------------------------------------------------------------------------------
- // --- Aktualizuj Czas --------------------------------------------------------------------------------
- void AktualizujCzas()
- {
- timeClient.update(); // aktualizuj z serwera
- unsigned long epochTime = timeClient.getEpochTime(); // pobierz EpochTime
- struct tm *ptm = gmtime ((time_t *)&epochTime); // strukrura dla EpochTime
- zegar.Godzina = timeClient.getHours(); // pobierz z NTP i zapisz do struktury
- zegar.Minuta = timeClient.getMinutes(); // pobierz z NTP i zapisz do struktury
- zegar.Sekunda = timeClient.getSeconds(); // pobierz z NTP i zapisz do struktury
- zegar.DzienTygodnia = timeClient.getDay(); // pobierz z NTP i zapisz do struktury
- zegar.DzienMiesiaca = ptm->tm_mday; // pobierz z NTP i zapisz do struktury
- zegar.Miesiac = ptm->tm_mon+1; // pobierz z NTP i zapisz do struktury
- zegar.Rok = ptm->tm_year+1900; // pobierz z NTP i zapisz do struktury
- zegar.SformatowanaData = String(zegar.Rok) + ".";
- if (zegar.Miesiac < 10) zegar.SformatowanaData += "0"; // formatowanie do liczby dziesiatek
- zegar.SformatowanaData += String(zegar.Miesiac) + ".";
- if (zegar.DzienMiesiaca < 10) zegar.SformatowanaData += "0"; // formatowanie do liczby dziesiatek
- zegar.SformatowanaData += String(zegar.DzienMiesiaca);
- if (zegar.Godzina < 10) zegar.SformatowanyCzas = "0";
- else zegar.SformatowanyCzas = "";
- zegar.SformatowanyCzas += String(zegar.Godzina);
- zegar.SformatowanyCzas += ":";
- if (zegar.Minuta < 10) zegar.SformatowanyCzas += "0";
- zegar.SformatowanyCzas += String(zegar.Minuta);
- zegar.SformatowanyCzas += ":";
- if (zegar.Sekunda <10) zegar.SformatowanyCzas += "0";
- zegar.SformatowanyCzas += String(zegar.Sekunda);
- #if Terminal
- tools.DrukujLinie(60);
- tools.PokazWiadomosc("ESP32", "CORE", "RTC przed synchronizacja");
- tools.PokazWiadomosc("ESP32", "TIME NTP", zegar.SformatowanyCzas.c_str());
- tools.PokazWiadomosc("ESP32", "TIME RTC", rtc.getTime().c_str());
- tools.PokazWiadomosc("ESP32", "DATA NTP", zegar.SformatowanaData.c_str());
- tools.PokazWiadomosc("ESP32", "DATA RTC", rtc.getDate().c_str());
- tools.PokazWiadomosc("ESP32", "CORE", "Synchronizacja RTC wykonana");
- #endif
- // Synchronizacja czasu RTC z serwera NTP ---------------------------------------------------------
- rtc.setTime(zegar.Sekunda, zegar.Minuta, zegar.Godzina, zegar.DzienMiesiaca, zegar.Miesiac, zegar.Rok);
- // RTC wystartował i został zaktualizowany --------------------------------------------------------
- }
- // ----------------------------------------------------------------------------------------------------
Add Comment
Please, Sign In to add comment