Automatyka Domowa, budynkowa Ethernet eHouse – kod źródłowy C linux

Inteligentny Dom eHouse automatyka domowa oprogramowanie Open Source C, C++, Object C dla różnych dystrybucji Linuxa i sprzętu komputerowego.

Sterowanie i zarządzanie automatyką budynkową w wersji Ethernet eHouse oraz eHouse1 pod nadzorem CommManagera.

Niniejszy artykuł opisuje kod źródłowy Open Source do zarządzania i sterowania inteligentnym domem eHouse w wersji Ethernet oraz eHouse1 pod nadzorem CommManagera.

Jest on fragmentem aplikacji serwera automatyki domowej eHouse (open source C++) napisanego do obsługi i zarządzania systemem z urządzeń będących mini komputerami z zainstalowanym systemem linux. Są to urządzenia posiadające bardzo małą wydajność sprzętową oraz zasoby, wymagają więc niskopoziomowego oprogramowania aby mogły pracować efektywnie, funkcjonalnie  i wydajnie w stosunku do swoich możliwości.

Ponieważ serwer eHouse będzie pracował w sieci LAN najsensowniejsze i najmniej kłopotliwe rozwiązanie polega na odbiorze statusów ze sterowników po UDP będących brodcastami z każdego sterownika na ten sam port. Broadcasty UDP są protokółem bezpołączeniowym i nie wymagają utrzymywanego połączenia między klientem a serwerem co było by kłopotliwe i obciążało sterowniki dodatkowo. Datagramy UDP mogą być odbierane przez dowolne panele sterujące znajdujące się w sieci, nie zależnie od  tego ile ich jest. Nie generuje to dodatkowego obciążenia sieci LAN w stosunku do połączeń TCP/IP które były by powielane. Dodatkowo aktywnych połączeń TCP/IP musiało by być z każdego panela tyle ile jest sterowników automatyki domowej eHouse w wersji Ethernet aby odbierać statusy ze wszystkich sterowników inteligentnego domu. Taki łańcuch musiał by być powielony dla każdego kolejnego panela co powoduje niepotrzebny wzrost obciążenia sieci LAN.

Ze względu na oprogramowanie C++ oraz architekturę Linux wymagania sprzętowe są wielokrotnie mniejsze w stosunku do podobnych wersji oprogramowania pracujących pod systemem Windows. Środowisko graficzne jest również nie wymagające z poziomu serwera, dzięki czemu można do tego celu zastosować płyty mikroprocesorowe na procesorach ATOM, ARM, Samsung wielokrotnie tańsze niż standardowy komputer PC. Istnieje także możliwość zainstalowania takiego oprogramowania na “zabytkowym” sprzęcie PC pracującym np na procesorze 486 uruchomiając Linuxa oraz oprogramowanie z pamięci USB.

Głównym elementem oprogramowania jest UDPListener (który nasłuchuje broadcastów ze sterowników na porcie 6789 (domyślnie) które są statusami sterowników inteligentnego domu w postaci binarnej (poniżej 200B/sterownik). Dane te są bezpośrednio kopiowane do struktury statusu ECM (dla CommManagera) macierzy statusów eHE[] dla Ethernet RoomManagerów, oraz w przypadku sterowników automatyki budynkowej eHouse1 pod nadzorem CommManagera statusy są ładowane do macierzy struktur eH[].
Komplet konfiguracji oprogramowania znajduje się w pliku Inteligentny Dom eHouse – Open Source c++ konfiguracja “globals.h” .
Aby uaktywnić pracę jako Serwer Ethernet eHouse konieczne jest ustawienie definicji ETHERNET_EHOUSE=1 która jest domyślna.
kolejne parametry krytyczne to:
COMMANAGER_IP_HIGH – Adres IP CommManger’a (3 bajt) – domyślnie (0)
COMMANAGER_IP_LOW – Adres IP CommManager’a (4 bajt) – domyślnie (254) sumaryczny adres IP dla CM jest 192.168.%COMMANAGER_IP_HIGH%.%COMMANAGER_IP_LOW%
INITIAL_ADDRESS_L – Minimalny Adres IP (4 bajt) EthernetRommManager’ów – domyślnie (200) – adresy ERM zaczynają się standardowo od 201. Jest to wykorzystywane do tworzenia indexu w tabeli statusu eHE[AdresL-INITIAL_ADDRESS_L] więc sterownik o adresie IP 192.168.0.201 będzie znajdował się w eHE[1].
STATUS_ARRAYS_SIZE – Maska dla indeksu statusu jednocześnie określająca liczbę sterowników eHouse 4 Ethernet (ERM) oraz eHouse1 (RM) – domyślnie (15). O ile nie posiadamy zainstalowanej większej liczby sterowników należy zostawić tą wartość. W przeciwnym razie należy “odremować” inną linijkę ze zdefiniowanych a nie edytować cyfrę. Przy edycji możemy zamaskować indeks macierzy statusu i część sterowników będzie nadpisywanych na inne.

Najważniejszą funkcją oprogramowania jest “UDPListener()”, która pracuje w pętli nieskończonej pobierając statusy ze sterowników Ethernetowych automatyki budynku eHouse, oraz eHouse 1 pod nadzorem CommManagera. Przerwanie pętli jest możliwe tylko poprzez wyjście z aplikacji ‘Ctrl-break’ lub uruchomienie funkcji “TerminateUDP()”.

Oprogramowanie to jest maksymalnie uproszczone, gdyż ma charakter dydaktyczno-rozwojowy, aby umożliwić naukę tworzenia oprogramowania.
Nie jest ono wielofunkcyjnym serwerem i nie posiada konfiguracji (wymaga przekompilowania po zmianach definicji w pliku globals.h).
Aby zwiększyć jego funkcjonalność należy umieścić obsługę plików konfiguracyjnych. Dla zwiększenia wydajności konieczne jest umieszczenie funkcji “UDPListener()” w niezależnym wątku od głównego o jak najmniejszym priorytecie (lowest, lower), na jaki pozwoli sprzęt na którym aplikacja pracuje.
Inteligentny Dom eHouse – oprogramowanie serwera C++ kody źródłowe / open source

Inteligentny Dom eHouse – Open Source c++ kod źródłowy oprogramowania nasłuchującego datagramów UDP ze sterowników Ethernet eHouse.

Więcej informacji o oprogramowaniu Open source C++ dla eHouse.

Inteligentny Dom eHouse – Oprogramowanie Open Source C++