Cześć Wam!
Jestem tutaj bardzo nowy i do tej pory dłubałem swoje projekty w zaciszu domowym jednak doszedłem do momentu gdzie muszę zaczerpnąć wiedzy bardziej doświadczonych osób - stąd liczę na pomoc
Od jakiegoś czasu uczę się języka C++, a ponieważ najlepszą nauką jest praktyka, uczę się tego języka budująć własna stację meteo. Zamysł jest taki że baza posiada własne czujniki oraz zbiera odczyty z mniejszych stellit. Wszystko leci przez MQTT do openHAB oraz jest dostępne przez WWW.
-1x Baza to ESP8266 + czujniki BME 180 i DHT + ekran OLED + komunikacja czyli nRF24L01.
-3x Satelity wewnętrzne: ATtinny 85 + DHT + nRF24L01 + zasilanie bateryjne
-1x Satelita zewnętrzny to ATmega 168 + BME 180 nRFL01 + Czujnik pyłu + czujnik opadów deszczu. W przyszłości jeszcze odczyt kierunku i siły wiatru oraz poziomu opadów. zasilanie z sieci a docelowo bateria + panele słoneczne.
Pytanie mam do Was ws. przetwarzania zebranych danych. Na początku wymyśliłem sobie to tak, że stworzyłem strukturę danych w których miałem szablon odebranych informacji czyli zmienne na odczyty z czujników. z samej struktury zrobiłem sobie dynamiczną listę obiektów stworzonej struktury zwiększającą się w zależności od ilości urządzeń podpiętych. Dało mi to elastyczność w dodawaniu nowych satelitów. Jednak natrafiłem na pewien problem. Mianowicie chodzi o ilość zmiennych potrzebnych do przetworzenia danych w strukturze:
I tak:
Dla bazy - 4 zmienne - wilgotność, temperatura, ciśnienie, nazwa
dla wew satelity - wilgotność, temperatura, stan baterii, nazwa
dla zew. satelity - wilgotność, temperatura, ciśnienie, informacja o tym czy pada deszcz, odczyt pyłów, nazwa
komunikacja między satelitami a bazą idzie w paśmie 2,4Ghz a między bazą a openHAB po WiFi.
Pomyślałem że jest to świetny sposób aby wykorzystać polimorfizm czyli stworzyć klasę czujnik i dziedziczone od niej klasy satelita zewn. i satelita wew z odpowiednią ilością zmiennych w klasie zwiększającą funkcjonalność klasy zewnętrznej - ewentualnie chyba mogą też dziedziczyć struktury.
W takim przypadku pytanie mam do znawców C++:
1. Czy faktycznie tak można to wykorzystać i jest to optymalny sposób?
2. W jaki sposób zrealizować później dynamiczną listę obiektów? Do obiektu klasy głównej czy dziedziczącej?
3. Czy jak mam klasę z różnymi metodami to jak tworzę sobie nowe obiekty tej klasy to kopiowane są również metody czy tylko zmienne wewnątrz klasy? - Zastanawiam się pod względem zużycia pamięci ram przy alokowaniu przestrzeni dla nowych obiektów klas.
4. Czy da się w ogóle utworzone zmienne w nowych obiektach klas lub cały klasy zapisać do pamięci EPROM? Chciałbym aby dodane urządzenia były zapamiętane w przypadku utraty np. zasilania na bazie.
Pewnie są to pytania laika ale od kilku dni głowie się jak to rozwiązać projektowo. A może macie jakieś lepsze rozwiązanie?
Pozdrawiam!
G.