Datenpunkte

Datenpunkte bilden die zentrale logische Ebene von IOZER basic. Sie verbinden Hardware, Protokolle, Weboberfläche und lokale Logik über eine einheitliche Darstellung von Werten.

Ein Datenpunkt beschreibt nicht nur einen Wert, sondern auch dessen Bedeutung, Herkunft, Qualität und optionale Weitergabe an andere Schnittstellen.

Grundidee

Ohne Datenpunkte müsste eine Logik direkt mit Eingängen, Ausgängen, MQTT-Topics, Modbus-Registern oder 1-Wire-Sensoren arbeiten. Das wird schnell unübersichtlich, sobald mehrere Schnittstellen zusammenwirken.

Datenpunkte entkoppeln die Schnittstellen von der Programmlogik. Der Datenpunkt hält den aktuellen Wert und bildet die zentrale Drehscheibe für dessen Herkunft, Verarbeitung und Weitergabe.

Datenfluss zwischen Quelle, Datenpunkt, Ziel, Programmlogik und MQTT
Datenfluss zwischen Quelle, Datenpunkt, Ziel, Programmlogik und MQTT

Die Grafik zeigt die möglichen Datenflüsse:

Verbindung Funktion
Quelle → Datenpunkt Eine Quelle, beispielsweise ein digitaler Eingang, 1-Wire-Sensor oder Modbus-Register, aktualisiert den Wert.
Datenpunkt → Ziel Der aktuelle Wert wird an ein konfiguriertes Ziel wie einen digitalen Ausgang oder ein Modbus-Register weitergegeben.
Datenpunkt → Ereignis → Programmlogik Eine Wertänderung oder Aktualisierung kann ein Ereignis in der lokalen Programmlogik auslösen.
Programmlogik → Wert setzen → Datenpunkt Die Programmlogik kann den Wert eines Datenpunkts gezielt setzen.
Datenpunkt → Publish → MQTT Der aktuelle Wert kann über ein MQTT-Topic veröffentlicht werden.
MQTT → Subscribe → Datenpunkt Ein abonniertes MQTT-Topic kann einen neuen Wert in den Datenpunkt schreiben.

Die Programmlogik arbeitet dadurch mit technischen Namen wie raumtemperatur, licht_flur oder energie_zaehler. Sie muss nicht wissen, ob ein Wert ursprünglich von einem Sensor, einem MQTT-Topic oder einem Modbus-Register stammt. Quelle oder Ziel können später geändert werden, ohne die fachliche Logik grundsätzlich umzubauen.

Aufbau eines Datenpunkts

Ein Datenpunkt enthält typischerweise:

Eigenschaft Bedeutung
ID Eindeutige interne Nummer
Name Technischer Name für Logik und Referenzen
Label Lesbarer Anzeigename
Beschreibung Dokumentation des Zwecks
Datentyp Art des gespeicherten Werts
Einheit Anzeige- und Interpretationshilfe
Klasse Fachliche Einordnung
Qualität Zustand des aktuellen Werts
Lese-Binding Quelle, aus der der Wert gelesen wird
Schreib-Binding Ziel, auf das der Wert geschrieben wird
MQTT-Konfiguration Optionale Veröffentlichung oder Beschreibung per MQTT
Persistenz Optionale Speicherung des letzten Werts

Datentypen

Typ Verwendung
Boolean Schaltzustände, Freigaben, Binärsignale
Integer Zähler, Stufen, ganzzahlige Werte
Float Messwerte wie Temperatur, Spannung oder Leistung
String Texte, Zustände oder externe Meldungen

Der Datentyp bestimmt, wie Werte gespeichert, angezeigt und in JavaScript verarbeitet werden.

Klassen

Datenpunkte können fachlich klassifiziert werden. Diese Klasse hilft bei Anzeige, Interpretation und Integration.

Klasse Typische Bedeutung
Sonstiges Allgemeiner Wert
Temperatur Temperaturmesswert
Feuchte Luftfeuchtigkeit
Spannung Elektrische Spannung
Strom Elektrischer Strom
Leistung Momentanleistung
Energie Verbrauch oder Erzeugung
Zustand Betriebs- oder Schaltzustand
Sollwert Vorgabewert
Zähler Zählwert
Text Textinformation

Qualität

Ein Datenpunkt besitzt neben dem Wert auch eine Qualität. Dadurch kann die Logik unterscheiden, ob ein Wert aktuell und vertrauenswürdig ist.

Qualität Bedeutung
Unbekannt Noch kein verlässlicher Zustand bekannt
Gut Wert ist gültig
Veraltet Wert wurde länger nicht aktualisiert
Fehler Beim Lesen oder Schreiben ist ein Fehler aufgetreten
Nicht verfügbar Quelle oder Ziel ist nicht verfügbar

Bindings

Bindings verbinden einen Datenpunkt mit einer realen Quelle oder einem Ziel.

Binding Zweck
1-Wire Wert von einem 1-Wire-Gerät lesen
Modbus Wert aus Modbus lesen oder nach Modbus schreiben
MQTT Wert aus MQTT lesen oder nach MQTT schreiben
Digitaler Eingang Zustand, Tastendruck oder Zähler eines Eingangs lesen
Digitaler Ausgang Ausgangszustand lesen oder schreiben

Ein Datenpunkt kann ein Lese-Binding und ein Schreib-Binding besitzen. Dadurch sind Übersetzungen zwischen Schnittstellen möglich.

Beispiele:

  • MQTT-Topic schreibt einen Datenpunkt, Datenpunkt schaltet einen Ausgang.
  • Digitaler Eingang schreibt einen Datenpunkt, Datenpunkt wird per MQTT veröffentlicht.
  • Modbus-Register liest einen Datenpunkt, lokale Logik verarbeitet ihn weiter.
  • 1-Wire-Sensor aktualisiert einen Temperaturdatenpunkt, Weboberfläche und MQTT zeigen denselben Wert.

Lese- und Schreibpfad

Der Lesepfad aktualisiert den Wert eines Datenpunkts.

Sensor / Eingang / Protokoll -> Datenpunkt

Der Schreibpfad setzt den Wert an einem Ziel.

Datenpunkt -> Ausgang / Protokoll / Zielsystem

Wenn beide Pfade kombiniert werden, wird der Datenpunkt zu einer neutralen Vermittlungsebene zwischen Systemen.

Skalierung und Umrechnung

Für Protokoll- und Sensorwerte können Skalierung und Offset verwendet werden.

logischer Wert = Rohwert * Skalierung + Offset

Das ist hilfreich, wenn externe Systeme Werte in anderen Einheiten oder Auflösungen liefern.

Beispiele:

  • Modbus liefert 235, der Datenpunkt zeigt 23,5 °C.
  • Ein Rohwert wird von Volt in Prozent umgerechnet.
  • Ein MQTT-Wert wird vor der lokalen Verarbeitung angepasst.

MQTT

Datenpunkte können über MQTT veröffentlicht oder beschrieben werden.

Für jeden Datenpunkt kann festgelegt werden:

  • ob der Wert veröffentlicht wird
  • ob der Wert per MQTT beschrieben werden darf
  • ob Standardtopics oder eigene Topics verwendet werden
  • ob Retain aktiv ist
  • welches QoS verwendet wird

Damit kann ein Datenpunkt direkt in externe Systeme eingebunden werden, ohne dass die lokale Logik eigene MQTT-Behandlung schreiben muss.

Persistenz

Datenpunkte können persistent gespeichert werden. Das ist nützlich für Werte, die nach einem Neustart wieder verfügbar sein sollen.

Typische Beispiele:

  • Betriebsarten
  • Sollwerte
  • Zählerstände
  • zuletzt gesetzte Zustände

Persistenz sollte gezielt verwendet werden. Flüchtige Messwerte müssen meist nicht dauerhaft gespeichert werden.

Verwendung in der lokalen Logik

In JavaScript werden Datenpunkte über das Objekt dp verwendet.

Funktion Zweck
dp.get Aktuellen Wert lesen
dp.set Wert setzen
dp.toggle Booleschen Wert umschalten
dp.state Statusinformationen zum Datenpunkt lesen

Beispiel:

const temperatur = dp.get("raumtemperatur");

if(temperatur > 28) {
  dp.set("luefter", true);
}

Datenpunkte und Ereignisse

Datenpunkte können Ereignisse auslösen.

Ereignis Bedeutung
Wertänderung Der Wert hat sich geändert
Wertaktualisierung Der Wert wurde aktualisiert, auch wenn er gleich geblieben ist
Statusänderung Die Qualität oder Gültigkeit hat sich geändert
Fehler Beim Datenpunkt ist ein Fehler aufgetreten

Der Unterschied zwischen Änderung und Aktualisierung ist wichtig:

  • Wertänderung eignet sich für Schaltlogik.
  • Wertaktualisierung eignet sich für Überwachung, Logging oder zyklische Weitergabe.

Weitere Details zur Ausführung sind unter Ereignisse beschrieben.

Gute Praxis

  • Verwenden Sie sprechende technische Namen, z. B. raumtemperatur_buero.
  • Nutzen Sie Labels für lesbare Anzeigenamen.
  • Setzen Sie die passende Klasse und Einheit.
  • Verwenden Sie Datenpunkte als Schnittstelle zwischen Logik und Hardware.
  • Vermeiden Sie direkte Protokollabhängigkeiten in JavaScript, wenn ein Datenpunkt genügt.
  • Nutzen Sie Persistenz nur für Werte, die nach einem Neustart relevant bleiben.
  • Unterscheiden Sie bewusst zwischen Wertänderung und Wertaktualisierung.

Beispiel

Eine einfache Raumtemperaturregelung kann so aufgebaut sein:

  1. Ein DS18B20 liefert die Temperatur über 1-Wire.
  2. Der Wert wird in den Datenpunkt raumtemperatur geschrieben.
  3. Ein Ereignis reagiert auf Wertänderungen dieses Datenpunkts.
  4. Die lokale Logik vergleicht den Wert mit einem Sollwert.
  5. Der Datenpunkt heizung_freigabe wird gesetzt.
  6. Dieser Datenpunkt schaltet einen digitalen Ausgang und wird optional per MQTT veröffentlicht.

Die Logik bleibt dadurch verständlich: Sie arbeitet mit raumtemperatur und heizung_freigabe, nicht mit Busadressen, Klemmen oder MQTT-Topics.

IOZER
Innovative Steuerung für vielseitige Anwendungen.
AnmeldenRegistrieren
DE Deutsch EN English
Home
Shop
Docs
Connect
Kontakt
Sprache: DE
DE Deutsch EN English
AnmeldenRegistrieren