Skip to content

Latest commit

 

History

History
111 lines (91 loc) · 4.51 KB

File metadata and controls

111 lines (91 loc) · 4.51 KB

🔧 Panel zarządzania sterownikami tech przez API emodul (https://emodul.eu)

Dzięki tej aplikacji możesz teraz zarządzać swoimi sterownikami grzewczymi API Tech we własnej domenie — bez potrzeby logowania się do zewnętrznych paneli. System łączy się bezpośrednio z API eModul i pozwala na:

  • przeglądanie modułów i stref,
  • ustawianie temperatury w czasie rzeczywistym,
  • podgląd wykresów dziennych i miesięcznych,
  • porównywanie danych z różnych okresów,
  • pełną kontrolę nad interfejsem i bezpieczeństwem.
  • bazuje na api: https://api-documentation.emodul.eu/

🚀 Funkcje

  • ✅ Logowanie do API Tech i pobieranie tokena
  • ✅ Lista modułów i stref przypisanych do użytkownika
  • ✅ Dynamiczne ustawianie temperatury z potwierdzeniem
  • ✅ Wykresy dzienne, tygodniowe i miesięczne (Chart.js)
  • ✅ Porównanie danych z dwóch miesięcy
  • ✅ Obsługa CSRF i walidacja danych
  • ✅ Skeleton loader i animacje ładowania

🧰 Wymagania

  • PHP 7.4 lub nowszy
  • Rozszerzenia: curl, json, openssl
  • Serwer HTTP (np. Apache, Nginx)
  • Dostęp do konta API Tech (login + hasło)

⚙️ Instalacja

  1. Sklonuj repozytorium lub skopiuj pliki do katalogu na serwerze:

    git clone https://twoja-domena.pl/panel-api-tech.git
  2. Utwórz plik .env w katalogu głównym projektu:

    // Dane logowania do API Tech
    EMODUL_USERNAME=twoj_login_do_emodul
    EMODUL_PASSWORD=twoje_haslo_do_emodul
    // Nazwa aplikacji wyświetlana w nagłówku i tytule
    APP_NAME="eModul"
    // Login do aplikacji po instalacji
    LOGIN_USER=test
    // Hasło do aplikacji bcrypt hash: ponizej hash dla hasła test
    LOGIN_HASH=$2a$12$akb./7DQLJ0/S1CimED8SOuIxsQTOKUEyw5IqvL7yqkghQQPkG2o6
  3. W pliku config.php dane są ładowane automatycznie z getenv():

     return [
     'username' => getenv('EMODUL_USERNAME'),
     'password' => getenv('EMODUL_PASSWORD'),
     'app_name' => getenv('APP_NAME') ?: 'eModul',
     // Co ile milisekund aplikacja sprawdza, czy temperatura została zmieniona
     'polling_interval_ms' => 5000,
     // Maksymalny czas oczekiwania na potwierdzenie zmiany temperatury
     'polling_timeout_ms' => 20000,
  4. Otwórz index.php w przeglądarce i gotowe!

📁 Struktura plików

├── auth.php                # Logowanie do API Tech |
├── config.php              # Konfiguracja aplikacji (login, polling, nazwa) |
├── daily.php               # Wykres dzienny dla jednej strefy |
├── footer.php              # Stopka HTML wspólna dla wszystkich widoków |
├── functions.php           # Funkcje pomocnicze (API, formatowanie, walidacja) |
├── get_zone.php            # Endpoint do pobierania danych strefy (POST + CSRF) |
├── header.php              # Nagłówek HTML z tytułem aplikacji i stylem |
├── index.php               # Widok wszystkich stref |
├── index_data.php          # Dynamiczne ładowanie stref do index.php (AJAX) |
├── login.php               # Formularz logowania i obsługa sesji użytkownika |
├── logout.php              # Wylogowanie użytkownika i zniszczenie sesji |
├── modules.php             # Lista dostępnych modułów |
├── modules_data.php        # Dynamiczne ładowanie modułów (AJAX) |
├── set_temp.php            # Endpoint do ustawiania temperatury (POST + CSRF) |
├── stats.php               # Wykres zbiorczy dla wybranego zakresu |
├── stats_compare.php       # Porównanie dwóch zakresów danych na wykresie |
├── zones.php               # Widok stref dla wybranego modułu |
├── zones_data.php          # Dynamiczne ładowanie stref (AJAX) |

🔐 Bezpieczeństwo

  • 🔒 Wszystkie żądania POST są chronione tokenem CSRF ($_SESSION['csrf_token'])
  • 🔍 Dane wejściowe są walidowane i filtrowane (htmlspecialchars, is_numeric)
  • 🔑 Token API jest pobierany dynamicznie i nie jest przechowywany w plikach
  • 🧠 Sesje są używane do przechowywania CSRF i danych użytkownika
  • 🛡️ Brak danych logowania w repozytorium — wszystko w .env
  • 🛡️ Bezpieczeństwo- Plik .env nie powinien być udostępniany publicznie.

📈 Dalszy rozwój ???

✅ Przetestowano Aplikacja została przetestowana i działa stabilnie na urządzeniach:

  • ✅ Listwa L-8e Obsługa stref, odczyt temperatury, ustawianie zadanej temperatury, wykresy dzienne i miesięczne — wszystko działa poprawnie.

📞 Kontakt Jeśli masz pytania lub chcesz rozbudować projekt — śmiało! To Twój panel, Twoje zasady. 🔥