🔧 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/
- ✅ 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
- PHP 7.4 lub nowszy
- Rozszerzenia:
curl,json,openssl - Serwer HTTP (np. Apache, Nginx)
- Dostęp do konta API Tech (login + hasło)
-
Sklonuj repozytorium lub skopiuj pliki do katalogu na serwerze:
git clone https://twoja-domena.pl/panel-api-tech.git
-
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
-
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,
-
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.