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.
| Flow | Was er ergänzt |
|---|---|
| Default | Nichts. Translatoren, Berechnungen, Location, Datenbank, Kanäle, Regeln |
| General Timer | Einen Timer je Gerät, sodass eine Bedingung andauern muss |
| General Geo Query | Geofence-Prüfungen, für Tracking |
| General Timer and Geo Query | Beides |
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 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 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.

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 | |
|---|---|
| timerTriggerField | Das zu überwachende Gerätefeld, zum Beispiel door oder temperature. Verschachtelte Pfade funktionieren |
| timerDelay | Wie lange die Bedingung halten muss, bevor der Alarm auslöst, in Sekunden. Standard 600 |
| timerBooleanTriggerValue | Der 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 | |
|---|---|
timerExpired | Der Alarm. True, sobald die Bedingung länger als die Verzögerung gehalten hat |
timerStart | Ob der Timer läuft |
timerStartedAt | Wann er gestartet ist, als Zeitstempel |
timerDelay | Die 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
- Setzen Sie den Flow des Geräts auf General Timer.
- Fügen Sie den
general-timer-Translator hinzu, geräteweise oder mit Select many. - Konfigurieren Sie seine Parameter - das zu überwachende Feld, die Verzögerung und die Schwellwerte oder den booleschen Wert.
- Bauen Sie eine Regel auf
timerExpiredund setzen SietimerStartundtimerStartedAtauf 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 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: enter | Der Tracker hat ein Geofence betreten |
access: inside | Er hat eine neue Position gemeldet, während er drinnen war |
access: exit | Er 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 | |
|---|---|
assets | Wie viele Assets sich darin befinden |
trackers | Wie viele davon dem Tracker-Typ entsprechen, den Sie zählen |
assetList | Alles darin, jeweils mit Name, Id, Position, Etage, Access-Zustand und Zeitstempel |
assetUpdate | Das 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" alstrackerszählen, währendassetsalles 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
- Setzen Sie den Flow der Tracker auf General Geo Query.
- Legen Sie mit New device für jedes geplante Geofence einen generischen Node an.
- Fügen Sie diesen Nodes den
general-geofence-Translator hinzu, beim Anlegen oder später mit Select many. - Zeichnen Sie die Geofences auf der Karte oder in einem Karten-Widget und verbinden Sie jedes mit seinem Node.
- Bauen Sie Regeln auf den Enter- und Exit-Ereignissen auf den Geofence-Nodes.
General Timer and 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 | |
|---|---|
timerStart | true startet oder startet den Timer neu, false stoppt ihn |
timerDelay | Die Dauer, in Millisekunden |
timerStartedAt | Wann er gestartet ist, als UTC-Zeitstempel. Leeren Sie ihn, wenn der Timer stoppt |
timerExpired | Wird 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.