Zum Hauptinhalt springen

Datenflüsse, Timer und Geofences

Ein Flow ist der Weg, den eine eingehende Meldung durch Yggio nimmt. Er entscheidet, welche Dienste die Meldung sehen und in welcher Reihenfolge - Translatoren, Berechnungen, den Location Service, die Datenbank, die Kanäle und die Rule Engine.

Die meisten Geräte brauchen nie etwas anderes als den Standard. Den Flow ändern Sie, wenn der Anwendungsfall etwas braucht, das der Standardweg nicht kann. Davon gibt es zwei Dinge: einen Timer, der eine einzelne Meldung überdauert, und eine Prüfung, ob ein Gerät sich in einem Geofence befindet.

FlowWas er ergänzt
DefaultNichts. Translatoren, Berechnungen, Location, Datenbank, Kanäle, Regeln
General TimerEinen Timer je Gerät, sodass eine Bedingung andauern muss
General Geo QueryGeofence-Prüfungen, für Tracking
General Timer and Geo QueryBeides

Ein Flow ist eine Folge von Anweisungen und kann Transform-Funktionen enthalten - Code, den Sie hochladen und den Yggio als Teil des Flows in einer Sandbox ausführt.

Flows sind auch die Art, wie Yggio mit hochfrequenten Daten umgeht: ein Flow kann den größten Teil der Verarbeitungskette überspringen und eingehende Daten direkt in die Datenbank schreiben.

Einen Flow zuweisen​

Der Flow gehört zum Gerät. Jedes Gerät führt seinen eigenen aus, sodass ein Tracker auf dem Geo-Query-Flow und ein Temperatursensor auf dem Default-Flow am selben Connector hängen können.

Der Connector trägt einen Standard-Flow, den neue darauf angelegte Geräte erben. Das erspart Ihnen, den Flow auf jedem Gerät von Hand zu setzen - einmal am Connector gesetzt, starten die darüber ankommenden Geräte richtig.

Das Zuweisen eines Flows geschieht heute über die API. Es gibt noch keine Oberfläche, um beim Anlegen eines Geräts einen auszuwählen oder ihn nachträglich zu ändern, und die Connector-Anleitung bietet nur Default an. Eigene Flows werden auf demselben Weg hochgeladen.

Hinweis: Nicht jede Integration unterstützt jeden Flow. Fragen Sie Ihren Support-Kontakt zu der Integration, die Sie verwenden, und zum Hochladen eines eigenen Flows.

Auf den älteren Connectors unter New Device in Devices werden Flows nicht unterstützt.

Default flow​

Der Default-Flow, der die Dienste zeigt, die eine eingehende Meldung durchläuft

Der Flow, der verwendet wird, wenn nichts konfiguriert wurde.

Die Daten kommen vom Connector und gehen an den Translator Service, der jeden Translator auf dem Gerät ausführt. Danach laufen die Berechnungen, dann der Location Service, der die Position des Geräts aktualisiert, falls sie sich geändert hat. Das Ergebnis wird an die Kanäle, die Datenbank und die Rule Engine verteilt.

General Timer flow​

Der General-Timer-Flow, mit dem Scheduler nach dem Location Service

Der Default-Flow, ergänzt um den Scheduler nach dem Location Service.

Eine Meldung ist ein Zeitpunkt. Ein Timer macht aus einem Zeitpunkt eine Dauer, sodass der Flow die Frage "ist das seit fünf Minuten so" beantworten kann und nicht nur "ist das jetzt so".

Der general-timer-Translator​

Der Flow liefert die Zeitsteuerung; der Translator entscheidet, was gemessen wird. Beides wird gebraucht - der Translator berechnet bei jeder Meldung den Timer-Zustand, und der Flow ist das, was tatsächlich wartet und anschließend timerExpired zurückschreibt. Ohne den Flow läuft der Timer nie ab.

Der general-timer-Translator mit konfiguriertem Trigger-Feld und Verzögerung

general-timer ist ein verketteter Translator: er läuft auf dem Hardware-Translator des Geräts auf und liest Felder, die dieser bereits dekodiert hat.

Parameter
timerTriggerFieldDas zu überwachende Gerätefeld, zum Beispiel door oder temperature. Verschachtelte Pfade funktionieren
timerDelayWie lange die Bedingung halten muss, bevor der Alarm auslöst, in Sekunden. Standard 600
timerBooleanTriggerValueDer boolesche Wert, der den Timer startet, wenn der Trigger ein Boolean ist

Numerische Trigger nehmen einen oberen und einen unteren Schwellwert mit Hysterese. Ein Schwellwert, der auf "Unused" steht, ist deaktiviert.

Ausgabe
timerExpiredDer Alarm. True, sobald die Bedingung länger als die Verzögerung gehalten hat
timerStartOb der Timer läuft
timerStartedAtWann er gestartet ist, als Zeitstempel
timerDelayDie Verzögerung in Millisekunden, aus dem Parameter umgerechnet

timerExpired ist das, was eine Regel beobachtet, und timerStart und timerStartedAt sind das, was eine Ansicht oder ein Dashboard zeigt, um zu sagen, dass ein Timer läuft.

Einrichtung​

  1. Setzen Sie den Flow des Geräts auf General Timer.
  2. Fügen Sie den general-timer-Translator hinzu, geräteweise oder mit Select many.
  3. Konfigurieren Sie seine Parameter - das zu überwachende Feld, die Verzögerung und die Schwellwerte oder den booleschen Wert.
  4. Bauen Sie eine Regel auf timerExpired und setzen Sie timerStart und timerStartedAt auf eine Ansicht oder ein Dashboard.

Wofür es gedacht ist​

  • Eine Tür oder ein Fenster, das nicht in der erwarteten Zeit geschlossen wurde.
  • Ein Schwellwert, der kurz überschritten werden darf, ohne zu alarmieren - Temperatur höchstens fünf Minuten über ihrem Limit, und erst eine längere Überschreitung löst den Alarm aus.
  • Ein boolescher Zustand, der länger gehalten wird, als er sollte.

General Geo Query flow​

Der General-Geo-Query-Flow, mit der Geo Query nach dem Location Service

Der Default-Flow, ergänzt um die Geo Query nach dem Location Service. Verwenden Sie ihn für Tracking.

Die Geo Query vergleicht die WGS84-Position eines Trackers mit den Geofences und erzeugt ein Access-Ereignis:

Ereignis
access: enterDer Tracker hat ein Geofence betreten
access: insideEr hat eine neue Position gemeldet, während er drinnen war
access: exitEr hat es verlassen

Ein Geofence ist ein Polygon und ist mit einem IoT-Node verbunden - dem Geofence Reference Node. Die Logik liegt in einem Translator auf diesem Node, nicht auf dem Tracker.

Der general-geofence-Translator​

general-geofence gehört auf den Geofence Reference Node. Bei jedem Access-Ereignis pflegt er die Liste der aktuell befindlichen Assets, zählt sie und entfernt Assets, die verstummt sind oder das Geofence verlassen haben.

Ausgabe
assetsWie viele Assets sich darin befinden
trackersWie viele davon dem Tracker-Typ entsprechen, den Sie zählen
assetListAlles darin, jeweils mit Name, Id, Position, Etage, Access-Zustand und Zeitstempel
assetUpdateDas Asset, das gerade betreten, verlassen oder sich bewegt hat

Parameter, die man kennen sollte:

  • contextMapTrackerField und contextMapTrackerFieldValue greifen einen Asset-Typ heraus, um ihn gesondert zu zählen. Ein Geofence mit Gepäckwagen und Rollstühlen kann assetType = "Baggage Cart" als trackers zählen, während assets alles zählt.
  • removeIdleAssetsAfterHours entfernt Assets, die nicht mehr melden, mindestens 24 Stunden. removeExitedAssetsAfterHours entfernt solche, die gegangen sind, 0 entfernt sie sofort.
  • assetListEnabled und assetListMaxLength schalten die Asset-Liste ab oder begrenzen sie. Schalten Sie sie ab, wenn ein Geofence viele Assets enthält.

Dem Tracker sagen, wo er ist​

Standardmäßig weiß der Tracker nichts über seinen eigenen Geofence-Zustand - gezählt wird auf dem Geofence-Node.

forwardAccessEventToTracker ändert das. Ist es eingeschaltet, wird ein Enter- oder Exit-Ereignis an den Tracker zurückgesendet, adressiert über das in trackerIdentifier genannte Feld (etwa devEui). Gesendet wird forwardDataStructureToTracker, ein Port und eine Hex-Payload. Nur Ereignisse innerhalb von forwardAccuracyLimit werden weitergeleitet, damit eine schlechte Position einen Tracker nicht hinein- oder hinausbewegt.

Einrichtung​

  1. Setzen Sie den Flow der Tracker auf General Geo Query.
  2. Legen Sie mit New device für jedes geplante Geofence einen generischen Node an.
  3. Fügen Sie diesen Nodes den general-geofence-Translator hinzu, beim Anlegen oder später mit Select many.
  4. Zeichnen Sie die Geofences auf der Karte oder in einem Karten-Widget und verbinden Sie jedes mit seinem Node.
  5. Bauen Sie Regeln auf den Enter- und Exit-Ereignissen auf den Geofence-Nodes.

General Timer and Geo Query flow​

Der kombinierte General-Timer- und Geo-Query-Flow

Beides von oben. Er beantwortet Fragen danach, wie lange ein Tracker auf einer Seite eines Geofences war, und nicht nur, auf welcher Seite er ist.

Eine Limit-Zone ist der übliche Fall: ein Asset darf einen abgegrenzten Bereich verlassen, aber nicht länger als zwanzig Minuten, und eine bestimmte Anzahl Assets muss drinnen bleiben.

Der general-timer-Translator deckt das ab. Starten Sie einen Timer, wenn ein Asset betritt oder verlässt, und wenn der Zustand sich nicht innerhalb von timerDelay zurückgeändert hat, löst timerExpired aus.

Für Logik, die der Standard-Translator nicht abdeckt, verwendet ein eigener Translator auf dem Geofence-Node dieselben Felder:

Feld
timerStarttrue startet oder startet den Timer neu, false stoppt ihn
timerDelayDie Dauer, in Millisekunden
timerStartedAtWann er gestartet ist, als UTC-Zeitstempel. Leeren Sie ihn, wenn der Timer stoppt
timerExpiredWird vom Flow zurückgeschrieben, wenn der Timer abläuft

Weitere Flows​

Für Positionierungs-Anwendungsfälle gibt es zwei weitere Flows: einer ermittelt eine Position aus WLAN-Access-Points und gleicht sie mit der Karte ab, der andere tut dasselbe und kann zusätzlich einen Tuning-Downlink an das Gerät zurücksenden. Keiner der beiden ist Self-Service. Fragen Sie Ihren Support-Kontakt, ob einer zu dem passt, was Sie bauen.