Cel i zakres projektu
Chciałem sprawdzić, czy potrafię zbudować od podstaw własną stację z informacjami i możliwością sterowania światłem. Wybrałem dane przydatne dla mnie, a ekran dotykowy pozwalał przechodzić między kolejnymi widokami.
Stacja wykorzystuje ESP32 i panel Nextion HMI. Przetestowałem współpracę z moim systemem, przełączanie ekranów oraz włączanie i wyłączanie oświetlenia z panelu. Projekt jest prywatnym prototypem edukacyjnym.
Co ujawniły domowe testy?
Pierwsza wersja nie ograniczała dostępu do panelu sterowania. Podczas domowych testów dzieci zaczęły korzystać z ekranu dotykowego, włączając i wyłączając oświetlenie. Ta sytuacja ujawniła brak ochrony funkcji pozwalających zmieniać stan urządzeń.
W odpowiedzi zabezpieczyłem panel sterowania hasłem. Zabezpieczenie dodałem po zaobserwowaniu problemu; dotyczyło dostępu do sterowania, a nie całego interfejsu. Było to proste usprawnienie prototypu wynikające z obserwacji jego użytkowania.
Ograniczenie funkcji i wydzielenie sieciowe
Pozostawiłem dodatkowe, niepotrzebne w tym projekcie funkcje i porty ESP32 niewłączone. Był to element ograniczania powierzchni ataku. Urządzenie pracuje w osobnej podsieci. To wydzielenie sieciowe; zakres izolacji zależy również od reguł komunikacji między podsieciami.
Dlaczego Security-by-Design jest istotne?
Z tego doświadczenia wyciągnąłem wniosek, że dostęp do informacji i możliwość sterowania warto rozpatrywać oddzielnie już podczas projektowania. W tym znaczeniu Security-by-Design jest dla mnie istotne: pytania o to, kto może korzystać z funkcji i jakie skutki może wywołać jego działanie, powinny pojawić się przed uruchomieniem rozwiązania.
W moim prototypie ochrona panelu była późniejszą korektą. Ta kolejność pokazała mi wartość wcześniejszego uwzględnienia kontroli dostępu, zamiast czekania, aż zwykłe użytkowanie ujawni jej brak.
Projekt skłonił mnie również do refleksji nad zasadą Least Privilege: dostęp do funkcji powinien odpowiadać potrzebom i odpowiedzialności użytkownika. Jest to wniosek dotyczący projektowania uprawnień, a nie deklaracja wdrożenia różnych ról w moim prototypie.
Przełożenie na biznes
W środowisku przemysłowym zakres uprawnień powinien wynikać z roli, kompetencji i odpowiedzialności za proces. Podgląd danych, obsługa urządzenia oraz zmiana konfiguracji oznaczają różne poziomy wpływu na działanie systemu. Interfejs powinien uwzględniać te różnice, a zmiany parametrów podlegać ustalonym zasadom.
Ważny jest również sposób reagowania na odchylenia. Jeżeli wcześniej stabilny proces zaczyna działać nieprawidłowo, sama korekta nastaw może jedynie zamaskować przyczynę. Najpierw trzeba ustalić, co się zmieniło i dlaczego. Zmiana parametrów może być uzasadniona, ale powinna wynikać z diagnozy oraz oceny jej wpływu na proces.
Domowy prototyp pozwolił mi zaobserwować prosty mechanizm: dostęp do sterowania daje możliwość wpływania na działanie systemu. W organizacji trzeba powiązać tę możliwość z odpowiedzialnością i zarządzaniem zmianą.
Wyniki i ograniczenia
Sprawdziłem wyświetlanie wybranych informacji, nawigację dotykową, sterowanie światłem oraz dostęp do panelu sterowania przez ekran z hasłem. Nie wdrażałem różnych poziomów uprawnień. Opis nie przedstawia testów odporności na obejście hasła, dokładności pomiarów ani długotrwałej niezawodności, więc nie potwierdza gotowości do zastosowania przemysłowego.
Podsumowanie
Projekt pozwolił mi połączyć budowę własnego urządzenia z obserwacją sposobu jego użytkowania i wprowadzeniem korekty. Najważniejszy wniosek dotyczy projektowania funkcji sterujących: trzeba określić nie tylko to, co urządzenie potrafi, lecz także kto i na jakich zasadach może wpływać na jego działanie.
Źródła i dokumentacja
- Espressif - ESP-IDF Programming Guide - oficjalna dokumentacja platformy ESP32, interfejsów i tworzenia firmware.
- Nextion - Instruction Set - dokumentacja poleceń i komunikacji szeregowej panelu HMI.
- CISA - ICS Recommended Practices - zalecenia dotyczące ochrony systemów sterowania, segmentacji i podejścia defense-in-depth.
Q&A: stacja ESP32 i panel HMI
Czy hasło oznacza różne poziomy uprawnień?
Nie. W tym prototypie hasło chroni panel sterowania. Różne poziomy uprawnień są wnioskiem dotyczącym zastosowań organizacyjnych, a nie funkcją wdrożoną w tym urządzeniu.
Co to jest HMI?
HMI (Human-Machine Interface) to panel operatorski umożliwiający interakcję człowieka z maszyną lub systemem. W środowiskach OT panel HMI wyświetla dane procesowe i przyjmuje dane wejściowe od użytkownika, często za pomocą ekranu dotykowego. W tym projekcie rolę HMI pełni wyświetlacz Nextion 3.5" z rezystancyjnym panelem dotykowym, zapewniając wizualizację danych pogodowych w czasie rzeczywistym oraz nawigację między ekranami za pomocą dotyku.
Czym jest ESP32?
ESP32 to niskokosztowy, energooszczędny mikrokontroler z wbudowanym Wi-Fi i Bluetooth, szeroko stosowany w projektach IoT. Obsługuje wiele protokołów komunikacyjnych i oferuje wystarczającą moc obliczeniową do akwizycji danych z czujników, łączności sieciowej oraz komunikacji szeregowej z urządzeniami zewnętrznymi, takimi jak panele HMI.
Jak wyświetlacz komunikuje się z mikrokontrolerem?
Wyświetlacz Nextion HMI komunikuje się z ESP32 przez interfejs szeregowy UART (Universal Asynchronous Receiver-Transmitter). Połączenie wykorzystuje GPIO16 (RX) i GPIO17 (TX) z prędkością transmisji 115200 baud. Umożliwia to dwukierunkową wymianę danych: ESP32 wysyła odczyty czujników i komendy do wyświetlacza, a wyświetlacz przesyła zdarzenia dotykowe i dane wejściowe użytkownika z powrotem do mikrokontrolera.