Zustände und Datenpunkte

Ein Datenpunkt ist die Stelle, an der ein Wert steht: die Temperatur eines Raums, der Schaltzustand einer Lampe, der Name des laufenden Titels.

Er besteht aus zwei Teilen:

  • dem Objekt vom Typ state - der Beschreibung, die sich selten ändert (siehe Objekte),
  • dem Zustand - dem Wert selbst, der sich ständig ändert.

Umgangssprachlich meint „Datenpunkt" meistens beides zusammen.

?> Nur Objekte vom Typ state haben einen Zustand. Und die Richtung ist eindeutig: Wird das Objekt gelöscht, verschwindet der Zustand mit ihm - umgekehrt bleibt das Objekt stehen, wenn nur der Wert entfernt wird.

Der Zustand

Ein Zustand ist nicht nur eine Zahl. Er bringt mit, woher er kommt und wann er entstanden ist:

FeldBedeutung
valder Wert
ackob es ein Befehl oder eine Rückmeldung ist - siehe unten
tswann der Wert zuletzt geschrieben wurde
lcwann er sich zuletzt tatsächlich geändert hat
fromwelche Adapterinstanz ihn geschrieben hat
qdie Qualität - ungleich 0 heißt: mit diesem Wert stimmt etwas nicht
userwer ihn geschrieben hat, sofern über eine Anmeldung
expirenach wie vielen Sekunden der Wert auf null fällt
Die Zustandsdaten eines Datenpunkts im Objekt-Editor

Im Objekt-Editor steht das alles im Reiter Zustand. „Bestätigt" ist dort das ack-Flag - im Bild rot, weil der Wert ein Befehl ist und noch keine Rückmeldung.

Der Unterschied zwischen ts und lc ist nützlicher, als er aussieht: Ein Fühler, der alle 30 Sekunden denselben Wert meldet, aktualisiert ts jedes Mal, lc aber nur bei einer echten Änderung. Wer wissen will, seit wann eine Tür offen ist, schaut auf lc.

Das ack-Flag

Das ist der Begriff, an dem die meisten hängen bleiben - und der wichtigste auf dieser Seite.

  • ack: false ist ein Befehl. „Lampe, geh an." So schreibt eine Automatisierung, ein Schalter in der Visualisierung, ein Skript.
  • ack: true ist eine Rückmeldung. „Lampe ist an." So schreibt der Adapter, nachdem das Gerät bestätigt hat.

Der Ablauf ist also: Ein Skript setzt den Wert mit ack: false, der Adapter sieht das, schickt den Befehl an das Gerät, und wenn das Gerät antwortet, schreibt er denselben Datenpunkt noch einmal - diesmal mit ack: true.

!> Wer beim Auslösen einer Automatisierung nicht zwischen beidem unterscheidet, baut sich eine Rückkopplung: Das Skript schaltet, das Gerät bestätigt, die Bestätigung löst das Skript erneut aus. Faustregel: auf Rückmeldungen hören, Befehle senden. Näheres unter Logik und Automatisierung.

?> Im Admin lässt sich das sehen: In der Objektliste steht der Wert eines unbestätigten Zustands hervorgehoben. Ein Datenpunkt, der dauerhaft unbestätigt bleibt, ist ein Hinweis darauf, dass ein Befehl beim Gerät nicht angekommen ist.

Die Beschreibung dazu

Das Objekt zum Datenpunkt sagt, wie mit dem Wert umzugehen ist. Die Felder, die im Alltag zählen, stehen in common:

FeldWofür
typenumber, string, boolean, array, object, json, mixed, file
nameder angezeigte Name, ein- oder mehrsprachig
unitdie Einheit, etwa °C oder %
min, max, stepder zulässige Bereich und die Schrittweite, z. B. für einen Regler
read, writeob gelesen und ob geschrieben werden darf - beide Pflicht
rolewofür der Datenpunkt steht; die Oberflächen wählen danach ihre Bedienelemente aus, siehe Rollen
stateseine Liste möglicher Werte mit Klartext, etwa {0: "AUS", 1: "EIN"}
defder Vorgabewert
customEinstellungen anderer Adapter zu diesem Datenpunkt - hier trägt sich zum Beispiel die Aufzeichnung ein

read und write sind keine Rechte, sondern eine Aussage über das Gerät: Ein Temperaturfühler ist read: true, write: false. Wer trotzdem hineinschreibt, bekommt keinen Fehler - der Wert steht dann eben da und bedeutet nichts.

?> common.custom ist die Stelle, an der die Aufzeichnung eines Werts eingeschaltet wird. Im Admin geschieht das über das Zahnrad am Datenpunkt; dahinter steht ein Eintrag wie {"influxdb.0": {"enabled": true}}.

Werte von Hand setzen

Im Admin unter Objekte lässt sich der Wert eines beschreibbaren Datenpunkts über den Stift ändern. Beim Schreiben gibt es dort die Wahl zwischen Befehl und Rückmeldung - dieselbe Unterscheidung wie oben. Zum Ausprobieren ist der Befehl das Richtige; eine Rückmeldung von Hand zu setzen täuscht dem System einen Gerätezustand vor, den es nicht gibt.

Weiterlesen

  • Objekte - Aufbau, IDs und Namensräume
  • Rollen - die vollständige Liste von common.role
  • Aliase - eigene, stabile Namen für fremde Datenpunkte
  • Objektstruktur - alle Felder, für Entwickler