Tim · Server & Infrastruktur

Datenbank-Server

Debian-VM mit PostgreSQL 18, in der die Messdaten gespeichert werden

Bearbeitet von: Tim

Die Datenbank läuft auf einer eigenen Debian-VM (ohne GUI). Hier werden die Messwerte gespeichert, die Node-RED aus dem MQTT-Broker holt. Als Datenbank wird PostgreSQL 18 genutzt.

Eckdaten

PunktWert
VMDebian (ohne GUI)
Maschinennameposql
Interne IP192.168.1.10
DatenbankPostgreSQL 18
DB-Namemessungen
Tabellemessungen
DB-Benutzerpsql_F
Zugangsiehe Passwörter

Installation

PostgreSQL 18 ist als normale Standard-Installation auf der Debian-VM eingerichtet. Die VM hängt im internen Netz unter der festen IP 192.168.1.10.

Zugriff / Benutzer

Statt mit dem Standard-Superuser postgres zu arbeiten, wurde ein eigener Benutzer psql_F angelegt, der nur auf die Datenbank messungen zugreifen darf. So kommt Node-RED nur an genau diese eine Datenbank und nicht an den Rest des Systems.

-- eigener Benutzer nur für die Messdaten-DB (Passwort siehe Passwörter-Seite)
CREATE USER psql_F WITH PASSWORD '...';
GRANT CONNECT ON DATABASE messungen TO psql_F;
GRANT SELECT, INSERT ON messungen TO psql_F;

Das Passwort von psql_F steht bei den Passwörtern.

Datenbank & Tabelle

Es gibt die Datenbank messungen und darin die Tabelle messungen:

CREATE TABLE messungen (
    id           BIGSERIAL PRIMARY KEY,
    timestamp    TIMESTAMPTZ NOT NULL DEFAULT now(),
    temperatur   REAL,
    air_pressure REAL,
    humidity     REAL
);

Spalten

SpalteTypBedeutung
idBIGSERIAL (PK)Fortlaufende ID, wird automatisch vergeben
timestampTIMESTAMPTZZeitpunkt der Messung, Standard now()
temperaturREALTemperatur in °C
air_pressureREALLuftdruck in hPa
humidityREALLuftfeuchte in %

Jede Messung bekommt automatisch eine id und einen timestamp. Die drei Messwerte (temperatur, air_pressure, humidity) kommen vom BME280 über den ESP32 und werden von Node-RED in die Tabelle geschrieben.

Der Tabellenname messungen ist aus dem CREATE-Statement übernommen. Falls die Tabelle bei dir anders heißt, hier noch anpassen.