­čö┤ Relacyjna Baza danych PostgreSQL

Opis jak zainstalowa─ç baz─Ö danych PostgreSQL na bramce DEV

:warning: 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 :wink:

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

  1. prze┼é─ůcz si─Ö na nasze najnowsze repozytorium pakiet├│w apt i wykonaj aktualizacj─Ö systemu - opis krok po kroku w tym wpisie
  1. zainstaluj binark─Ö PostgreSQL
apt install postgresql
  1. zainstaluj pakiet Python do komunikacji z baz─ů PostgreSQL
pip install psycopg2

Konfiguracja i sprawdzenie działania serwera bazodanowego

  1. Tworzymy katalog, w którym serwer bazodanowy będzie przechowywał pliki bazy danych
mkdir -p $PREFIX/var/lib/postgresql
  1. Inicjujemy serwer bazy danych
initdb $PREFIX/var/lib/postgresql
  1. Uruchamiamy serwer bazy danych
pg_ctl -D $PREFIX/var/lib/postgresql start

tu powiniene┼Ť zobaczy─ç co┼Ť takiego w konsoli:

  1. 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:

image

  1. Tworzymy baz─Ö o nazwie ha
createdb ha
  1. Otwieramy baz─Ö ha
psql ha

image

tu mo┼╝emy robi─ç zapytania, tworzy─ç tabele, procedury i wszystko to, co potrafimy zrobi─ç znaj─ůc j─Özyk SQL

wychodzimy wpisuj─ůc

exit
  1. 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
  • Instagram
  • Spotify

oraz tysi─ůce innych:

Gotowa do rejestrowania :red_circle: zdarzeń w Twoim domu :houses:

1 polubienie

Czy kto┼Ť mo┼╝e ma baz─Ö PostgreSQL na Synology?
Wiem, ┼╝e mo┼╝na zrobi─ç w dockerze
ale do ko┼äca nie jestem pewien czy baza danych w kontenerze to dobry pomys┼éÔÇŽ
Macie jakie┼Ť do┼Ťwiadczenie w tym temacie ?

Edit
Z tego co wyczyta┼éem to PostgreSQL nie jest oficjalnie obs┼éugiwany przez firm─Ö Synology, bo DSM u┼╝ywa PostgreSQL wewn─Ötrznie do zarz─ůdzania serwerem NAS. Zostaje tylko docker lub nie wspierane rozwi─ůzania np.:

  1. Managing PostgreSQL on a Synology Server ÔÇô SGMedia (sondregronas.com)
  2. tutorials:mairlistdb:setup-postgresql [mAirList Wiki]

Mam mariedb na synology, bezproblemowo z AIS działa.

Mam te┼╝ mariadb w dockerze. I jeszcze eclipse-mosquitto, influxdb, grafan─Ö, telegraf i chronograf. No problemo.

1 polubienie

Zainstalowałem pakiety dla bazy PostgreSQL na DEV3 (zgodnie ze wskazówkami @jolka) W dzienniku HA otrzymuję historię zdarzeń. Jedynie nie jestem pewien czy wszystko będzie przebiegać dobrze w czasie. Zapis ustawiony na 30dni przy prawie standardowych ustawieniach filtrowania zapisu.
Nie otrzymuję tabeli dla szczegółów domen czy encji.
Otrzymuj─Ö po komendzie select domain, entity_id, state from states; mam poni┼╝sz─ů odpowied┼║ dotycz─ůc─ů brakuj─ůcej biblioteki libmagic.so:

CANNOT LINK EXECUTABLE "more": library "libmagic.so" not found

Czy to co┼Ť problematycznego dla dzia┼éania bazy?

EDIT
@jolka - podbij─Ö tematÔÇŽ czy mog─Ö jako┼Ť doda─ç bilbioteki libmagic.so?
Czy komunikat CANNOT LINK EXECUTABLE "more": library "libmagic.so" not found zignorowa─ç?

1 polubienie

Dodajemy czujnik wskazuj─ůcy wielko┼Ť─ç bazy danych:

Jak Powinna wygl─ůda─ç przyk┼éadowa konfiguracja sensora wielko┼Ťci bazy danych PostgreSQL , zainstalowanych zgodnie z wskaz├│wkami z tego tematu?

Odpowied┼║ poni┼╝ej:

sensor:
  - platform: sql
    db_url: postgresql://ais:dom@localhost/ha
    queries:
      - name: DB size
        query: "SELECT (pg_database_size('ha')/1024/1024) as db_size;"
        column: "db_size"
        unit_of_measurement: MB

Mam kolejny sensor do zestawu na bramce (278MB o 4-dniach):

3 polubienia

Pytanie do posiadaczy bazy danych na dysku wewn─Ötrznym bramki. Jak zmieni─ç domy┼Ťln─ů ilo┼Ť─ç dni zapisu powy┼╝ej 10dni. Obecnie PostgeSQL mam za DEV3 i pomimo konfiguracji w GUI jak poni┼╝ej, zapisu 30dni historii. Baza ma w/g historii w HA 10dni.

Ja mam zapis na Synology i też mi nie zapisywało po takiej konfiguracji jak u Ciebie. Musiałem dodać w recorder wpis:
purge_keep_days:30

1 polubienie

Dzięki, tak przypuszczałem. Teraz się upewniłem, a za 11 dni pewnie potwierdzę.

obraz

Podbijam temat - r├│wnie┼╝ mam ten problem, np na fundamentalnym poleceniu ÔÇťmoreÔÇŁ

Prosz─Ö o sugesti─Ö

Czy jest mo┼╝liwo┼Ť─ç ustawienia bazy PostgreSQL, aby mia┼éa r├│┼╝ne d┼éugo┼Ťci czasu przechowywania, zale┼╝nie od podzia┼éu na encje?

Np. automation były przechowywane 5 dni, a sensor 30 dni.

@bartas87poz tak, poczytaj oryginaln─ů dokumentacj─Ö Recorder - Home Assistant, w przypadku AIS - Konfiguracja bramki - Logi i baza danych | AI-Speaker.

Nie wiem, czy si─Ö dobrze zrozumieli┼Ťmy.
Jest mo┼╝liwo┼Ť─ç filtrowania wed┼éug: domains, entity_globs, entities.
Co powoduje ┼╝e wybrane warto┼Ťci s─ů w og├│le rejestrowane.

Ale nie znalazłem nigdzie parametru który mógłbym zadeklarować inny czas przechowywania dla różnych encji.

Np.
include:
domains - > sensor
purge_keep_days: 30
domains - > light
purge_keep_days: 90

Takie co┼Ť mo┼╝esz spr├│bowa─ç uzyska─ç modyfikujac rekordy bezpo┼Ťrednio w bazie.

@Cezary.K jak zrobi┼ée┼Ť sensor dysku wewn─Ötrznego bramki, tzn. chodzi mi co wpisa┼ée┼Ť po ÔÇťarg:ÔÇŁ ?

  • type: disk_use
    arg: /

Nie bardzo wiem o co pytasz. Wszystko co zrobi┼éem to dopisanie tych paru wierszy konfiguracji sensora, kt├│re zamie┼Ťci┼éem w po┼Ťcie. Podajesz tylko url do bazy. Kierowa┼éem si─Ö dokumentacj─ů HA dla sensora SQL.

Chodzi mi o wolne miejsce na dysku wewn─Ötrznym tym 128GB
Bo u mnie pokazuje to:
image

@Cezary.K A to nie Twoje?

Moje, ewoluowa┼éoÔÇŽ
Nadal nie wiem z czym masz problem?
Mam encje stworzone wg dokumentacji z HA:

Do tego dołożyłem wpis koniguracji pod sensor temperatury procesora.

A na końcu sensor SQL.

Nazwy encji zmieniałem na własne.