Opis jak zainstalować bazę danych PostgreSQL na bramce DEV
Opis ten ma charakter “edukacyjny” podobnie jak w przypadku Node-RED lub innych rzeczy, które można instalować na bramce, nie jest to coś, co rekomendujemy czy wspieramy.
Być może komuś ten opis się przyda, bo dzięki temu będzie miał stabilnie działający, prawdziwy relacyjny bazodanowy serwer na bramce. Poza programowaniem w Python, Nodejs i C będzie mógł też robić zapytania w SQL czy inne fajne rzeczy
Ktoś inny może przesadzić i zacząć logować za dużo dni i skończy mu się miejsce, albo ilość zdarzeń, które zapisuje do bazy spowoduje destabilizację działania systemu.
W takim przypadku rozwiązanie jest jedno - wyłączenie rejestrowania zdarzeń w systemie i powrót do stabilnej wersji poprzez pełny reset aplikacji.
Zanim przejdziesz dalej, zastanów się czy naprawdę potrzebujesz rejestrować zdarzenia na bramce? Pamiętaj, że jeśli np. używasz integracji, które co sekundę wykonują jakieś działania, to możesz bardzo szybko wyprodukować plik, który będzie miał kilka GB i z którym sobie nie porodzisz. W takim przypadku odesłanie sprzętu do serwisu będzie wiązać się z kosztami, bo nikt nie chce pracować za darmo.
Jeżeli przechodzisz dalej to znaczy, że rozumiesz zagrożenie, panujesz nad tym, jak działają Twoje integracje, ile rzeczy logują i generalnie jesteś świadomy tego, jaką moc posiadasz i co robisz.
Instalacja bazy
- przełącz się na nasze najnowsze repozytorium pakietów apt i wykonaj aktualizację systemu - opis krok po kroku w tym wpisie
- zainstaluj binarkę PostgreSQL
apt install postgresql
- zainstaluj pakiet Python do komunikacji z bazą PostgreSQL
pip install psycopg2
Konfiguracja i sprawdzenie działania serwera bazodanowego
- Tworzymy katalog, w którym serwer bazodanowy będzie przechowywał pliki bazy danych
mkdir -p $PREFIX/var/lib/postgresql
- Inicjujemy serwer bazy danych
initdb $PREFIX/var/lib/postgresql
- Uruchamiamy serwer bazy danych
pg_ctl -D $PREFIX/var/lib/postgresql start
tu powinieneś zobaczyć coś takiego w konsoli:
- Tworzymy użytkownika bazy danych o nazwie ais
createuser --superuser --pwprompt ais
zapytani o hasło, które mamy ustawić, możemy podać dom i jeszcze raz potwierdzić to samo hasło:
- Tworzymy bazę o nazwie ha
createdb ha
- Otwieramy bazę ha
psql ha
tu możemy robić zapytania, tworzyć tabele, procedury i wszystko to, co potrafimy zrobić znając język SQL
wychodzimy wpisując
exit
- zatrzymujemy serwer bazodanowy
pg_ctl -D $PREFIX/var/lib/postgresql stop
Dodanie serwera do usług na bramce
Chodzi o to, żeby serwer startował automatycznie tak jak inne usługi, które mamy na bramce
pm2 start postgres --name db --output /dev/null --error /dev/null --restart-delay=150000 -- -D /data/data/pl.sviete.dom/files/usr/var/lib/postgresql
efekt powinien być taki:
zapisujemy procesy
pm2 save
Konfiguracja połączenia z serwerem w aplikacji Asystent domowy
po restartcie usługi ais
pm2 restart ais
jeżeli w konfiguracji mamy włączony logbook
# przykład wpisów w configuration.yaml
logbook:
to po ponownym uruchomieniu asystenta zobaczymy, że zdarzenia są brane z lokalnej / działającej na bramce bazy danych
dla pewności możemy sprawdzić to w konsoli, łącząc się ponownie z bazą danych ha i wykonując komendę \dt która wylistuje nam table w bazie ha
psql ha
\dt
żeby zobaczyć więcej informacji o bazie, można wykonać komendę
\dt+
i jeszcze przykład, żeby zobaczyć, co mam w tabeli ze stanami:
select domain, entity_id, state from states;
Profesjonalna baza stosowana jako podstawa do biznesu przez ogromną liczbę firm, w tym:
- Uber
- Netflix
- Spotify
oraz tysiące innych:
Gotowa do rejestrowania zdarzeń w Twoim domu