Jede Cursor-on-Target-Nachricht (CoT) ist ein XML-Dokument, dessen Wurzelelement <event> einen Typcode, eine eindeutige ID, drei UTC-Zeitstempel und eine <point>-Position trägt; alles andere reist im offenen <detail>-Container. Diese eine Form bewegt Positionen, Marker, Chat, Routen, Zeichnungen, Notrufe und Sanitätsanfragen zwischen ATAK, WinTAK, iTAK und TAK Server. Diese Seite ist die Kopierbibliothek: annotiertes, syntaktisch gültiges CoT XML für die Nachrichten, die taktische Systeme tatsächlich austauschen, jeweils mit einer Notiz, was der empfangende TAK-Client damit macht.
Zur Geschichte und zum Design des Formats lesen Sie unsere Übersicht des Cursor-on-Target-Formats; eine Feld-für-Feld-Analyse bietet der CoT-Schema-Deep-Dive; dieser Artikel bleibt bewusst auf der Ebene ‚zeigen Sie mir das XML‘. Element- und Attributnamen unten wurden gegen MITREs öffentliche Dokumentation des CoT-Basis-Event-Schemas, die Sub-Schema-Dokumentation und die mit den TAK-Clients veröffentlichten CoT-Typdefinitionen verifiziert. Rufzeichen, UIDs und Koordinaten sind fiktiv; Zeitstempel sind illustrative ISO-8601-UTC-Werte.
Anatomie einer CoT-Nachricht
Ein minimales, gültiges CoT-Event braucht sieben <event>-Attribute, genau einen <point> und optional ein <detail>:
<event version="2.0" uid="ANDROID-9c2f71a4" type="a-f-G-U-C" how="m-g"
time="2026-10-07T06:12:44.000Z" start="2026-10-07T06:12:44.000Z"
stale="2026-10-07T06:13:14.000Z">
<point lat="50.450112" lon="30.523398" hae="152.4" ce="4.5" le="9.0"/>
<detail>
<contact callsign="GRIF-2" endpoint="*:-1:stcp"/>
<__group name="Cyan" role="Team Member"/>
<status battery="78"/>
<takv platform="ATAK-CIV" version="5.2.0" device="Samsung SM-G975F" os="34"/>
<track speed="1.4" course="270.0"/>
<precisionlocation geopointsrc="GPS" altsrc="GPS"/>
</detail>
</event>
Was jeder Teil beim empfangenden Client bewirkt:
| Teil | Bedeutung | Was ATAK / TAK Server damit macht |
|---|---|---|
uid | Identität des Dings, nicht der Nachricht | Dieselbe uid verschiebt den bestehenden Marker; eine neue uid erzeugt einen. Löschungen und Notruf-Stornierungen richten sich auf ihn. |
type | Punkt-Bindestrich-Taxonomie dessen, was es ist | Wählt das MIL-STD-2525-Symbol und die Zugehörigkeitsfarbe; steuert serverseitige Filterung und Föderationsregeln. |
how | Wie die Position erzeugt wurde | Gewichtet den Bericht in der Fusion (GPS vs. geschätzt vs. weitergereicht); ATAK zeigt es in den Marker-Details. |
time / start / stale | Erzeugungszeit und Gültigkeitsfenster | Nach Ablauf von stale blenden Clients den Marker grau aus und entfernen ihn dann; niemand sendet ein explizites Ablaufdatum. |
point | lat/lon (WGS-84-Dezimalgrad), hae (Meter über dem Ellipsoid), ce/le (Fehlerradien) | Platziert den Marker; ce kann einen Genauigkeitsring zeichnen. Unbekannte Werte nutzen den Sentinel 9999999. |
detail | Offener Erweiterungscontainer | Bekannte Kinder (unten) setzen Rufzeichen, Teamfarbe, Batterie, Geschwindigkeitsvektor; unbekannte Kinder werden ignoriert, nicht abgewiesen. |
Drei Eigenschaften von <point> lassen Integratoren regelmäßig stolpern. hae ist die Höhe über dem WGS-84-Ellipsoid, nicht über dem mittleren Meeresspiegel. ce und le sind 1-Sigma-Grenzen des horizontalen und vertikalen Fehlers in Metern, laut Schema Pflicht, selbst wenn unbekannt — der Wert 9999999.0 ist der vereinbarte Sentinel für „unbekannt“ und besser als ein selbstbewusstes 0.0. Und lat/lon sind vorzeichenbehaftete Dezimalgrade, wobei sechs Nachkommastellen rund 0,1 m Auflösung ergeben; eine MGRS- oder UTM-Option gibt es in CoT nicht.
CoT-Typcodes und how-Werte: Spickzettel
Das Attribut type ist ein bindestrichgetrennter Pfad durch eine Taxonomie, deren erstes Token sagt, welche Art von Event vorliegt:
| Erstes Token | Familie | Typische Verwendungen |
|---|---|---|
a- | Atome — reale Objekte | Einheiten, Fahrzeuge, Luftfahrzeuge, Verwundete, Zwischenfälle |
b- | Bits — Informationsobjekte | Chat, Routen, Zeichnungen, Marker, Video-Aliase, Alarme |
t- | Auftragung / Steuerung | Keepalive-Pings, Löschaufträge, Datenabruf |
y- | Antworten | Bestätigungen, Auftragsstatus |
Bei Atomen ist das zweite Token die Zugehörigkeit und das dritte die Kampfdimension; der Rest steigt im Großbuchstaben-Baum der MIL-STD-2525-Funktionen ab, Kleinbuchstaben sind CoT-Erweiterungen vorbehalten:
| Token | Zugehörigkeit | Token | Kampfdimension |
|---|---|---|---|
p | Ausstehend | P | Weltraum |
u | Unbekannt | A | Luft |
a | Vermutlich befreundet | G | Boden |
f | Befreundet | S | Seeoberfläche |
n | Neutral | U | Unterwasser |
s | Verdächtig | X | Andere |
h | Feindlich | danach folgen 2525-Funktions-IDs in Großbuchstaben (z. B. -U-C Gefecht, -E-V-A-T Panzer) | |
Weil die Taxonomie präfixdekodierbar ist, zeichnet ein Client, der nur a-h-G versteht, für a-h-G-E-V-A-T trotzdem ein generisches feindliches Bodensymbol. Häufige Zeichenfolgen aus echtem Verkehr: a-f-G-U-C (befreundet, Boden, Gefecht — der Standardgerätetyp von ATAK), a-f-A-M-F-Q / a-f-A-M-H-Q (befreundete Drohne mit fixem / rotierendem Flügel), a-u-G (unbekannt, Boden), b-m-p-s-m (Spot-Map-Marker), b-t-f (GeoChat), b-m-r (Route), b-r-f-h-c (9-Line-Sanitätsanfrage). Wie die Icons auf Symbole abbilden, behandelt die Symbolik-Darstellung in TAK, den Standardvergleich APP-6 vs. MIL-STD-2525.
Das Attribut how hält die Herkunft fest, und Fusionssysteme gewichten danach Berichte:
| how | Bedeutung |
|---|---|
h-e | Von Hand geschätzter Eintrag |
h-c / h-t / h-p | Von Hand berechnet / abgeschrieben (Funk, Papier) / aus anderem Fenster eingefügt |
h-g-i-g-o | Offiziell „ein höchst fragwürdiger Track“ — in der Praxis stempelt ATAK die meisten von Hand gesetzten Marker und GeoChat damit |
m-g | Maschinell aus GPS erzeugt (Verfeinerungen m-g-d DGPS, m-g-n INS+GPS) |
m-i / m-f / m-r | Aus Bildern vermessen / aus mehreren Quellen fusioniert / über ein Gateway weitergereicht |
m-n / m-s / m-c | Inertialnavigation / Simulation / Konfigurationsdatei |
Zeitregeln: time, start und stale sind ISO-8601-UTC-Werte mit Endung Z (Sekundenbruchteile optional). time ist der Erzeugungszeitpunkt des Events; start–stale ist das Gültigkeitsfenster. stale vor start zu setzen ist MITREs ursprüngliche „Track verwerfen“-Konvention — in TAK-Netzen ist allerdings ein expliziter Löschauftrag (unten) zuverlässiger.
Positionsmeldungen: befreundetes PLI und feindliche/neutrale Marker
Das Beispiel oben auf dieser Seite ist eine Eigenpositionsmeldung (PLI): ATAK wiederholt sie alle paar Sekunden mit derselben uid, setzt stale auf etwa zwei bis vier Meldeintervalle plus Puffer und überlässt es allen anderen Clients, den Marker zu entsorgen, wenn Updates ausbleiben. Sensorgespeiste oder von Operatoren gesetzte Marker nutzen dieselbe Event-Form mit anderem type und längerem stale:
<event version="2.0" uid="E-20261007-0413" type="a-h-G-E-V-A-T" how="h-g-i-g-o"
time="2026-10-07T06:41:02.000Z" start="2026-10-07T06:41:02.000Z"
stale="2026-10-07T18:41:02.000Z">
<point lat="50.412220" lon="30.591054" hae="9999999.0" ce="25.0" le="9999999.0"/>
<detail>
<contact callsign="K-41"/>
<remarks source="BAO.F.ATAK.ANDROID-9c2f71a4">Hull-down at treeline, 2 vehicles</remarks>
<usericon iconsetpath="COT_MAPPING_2525C/a-h/a-h-G-E-V-A-T"/>
<link uid="ANDROID-9c2f71a4" type="a-f-G-U-C" relation="p-p"/>
<archive/>
</detail>
</event>
Was die Empfänger tun: type malt das rote Panzerraute-Symbol; contact/callsign wird zur Beschriftung; usericon pinnt den exakten Iconset-Eintrag (die Form COT_MAPPING_2525C/<affiliation>/<type> ist das, was ATAKs 2525-Palette ausgibt); link relation="p-p" schreibt den Erzeuger gut; <archive/> weist Clients an, den Marker zu behalten statt mit stale ablaufen zu lassen. Unbekannte Kontakte verwenden schlicht a-u-G; das gelbe Fragezeichen-Icon erscheint ohne weitere Änderung. Für eine einfache farbige Nadel ohne 2525-Kodierung nutzt ATAK einen Spot-Map-Marker:
<event version="2.0" uid="9405e320-9356-41c4-8449-f46990aa17f8"
type="b-m-p-s-m" how="h-g-i-g-o"
time="2026-10-07T06:55:10.000Z" start="2026-10-07T06:55:10.000Z"
stale="2026-10-08T06:55:10.000Z">
<point lat="50.456090" lon="30.563750" hae="9999999.0" ce="9999999.0" le="9999999.0"/>
<detail>
<contact callsign="R 1"/>
<color argb="-65536"/>
<usericon iconsetpath="COT_MAPPING_SPOTMAP/b-m-p-s-m/-65536"/>
</detail>
</event>
Hier wählen usericon aus der Spot-Map-Palette und der ARGB-Farbwert (eine vorzeichenbehaftete 32-Bit-Ganzzahl, -65536 ist deckendes Rot) das Icon statt eines Symbolik-Codes — nützlich für befreundete Anmerkungen, die keine 2525-Identität implizieren sollen.
GeoChat-Nachrichten (b-t-f)
Chat ist in der TAK-Welt kein eigenes Protokoll: Eine GeoChat-Zeile ist ein CoT-Event vom Typ b-t-f, dessen Text in <remarks> reist und dessen Adressierung in <__chat>/<chatgrp>:
<event version="2.0"
uid="GeoChat.ANDROID-9c2f71a4.All Chat Rooms.3f8c2b1e-77d3-4c9a-9e21-5b0f6a2d4e88"
type="b-t-f" how="h-g-i-g-o"
time="2026-10-07T07:02:31.000Z" start="2026-10-07T07:02:31.000Z"
stale="2026-10-08T07:02:31.000Z">
<point lat="0.0" lon="0.0" hae="0.0" ce="9999999.0" le="9999999.0"/>
<detail>
<__chat id="All Chat Rooms" chatroom="All Chat Rooms" groupOwner="false"
senderCallsign="GRIF-2"
messageId="3f8c2b1e-77d3-4c9a-9e21-5b0f6a2d4e88">
<chatgrp uid0="ANDROID-9c2f71a4" uid1="All Chat Rooms" id="All Chat Rooms"/>
</__chat>
<link uid="ANDROID-9c2f71a4" type="a-f-G-U-C" relation="p-p"/>
<remarks source="BAO.F.ATAK.ANDROID-9c2f71a4"
time="2026-10-07T07:02:31.000Z">Bearing 085, treeline, over.</remarks>
</detail>
</event>
So liest man sie: Die Event-uid ist konventionell GeoChat.<sender>.<conversation>.<message-uuid>, was Deduplizierung beim Replay trivial macht; chatgrp/uid0 ist der Absender, uid1 das Ziel — die UID eines einzelnen Empfängers bei Direktnachrichten, der Raumname bei Broadcast; remarks/@to trägt bei Direktnachrichten die Empfänger-UID; stale steht einen Tag in der Zukunft, weil Chat — anders als Positionen — Store-and-Forward überdauern muss. Zustell- und Lesebestätigungen kommen als Typen b-t-f-d und b-t-f-r zurück. Das point des Events kann die Nachricht an einen Kartenpunkt heften; ATAK leitet zudem die Live-Position des Absenders weiter, sofern der Operator sie nicht abschaltet. Das vollständige Store-and-Forward- und Bandbreitenbild behandelt taktischer Chat und Datenstrategie in TAK.
Routen, Zeichnungen und Entfernungs-/Peilungslinien
Eine Route ist ein b-m-r-Event, dessen Wegpunkte <link>-Kinder sind — b-m-p-w für benannte Wegpunkte, b-m-p-c für Formkontrollpunkte — gefolgt von einem <link_attr>-Stylingblock:
<event version="2.0" uid="9017073e-5658-42e7-baa8-b98f3c9c1622" type="b-m-r" how="h-e"
time="2026-10-07T07:20:00.000Z" start="2026-10-07T07:20:00.000Z"
stale="2026-10-08T07:20:00.000Z">
<point lat="0.0" lon="0.0" hae="9999999.0" ce="9999999.0" le="9999999.0"/>
<detail>
<link uid="f3acf150-d75c-407d-be43-e401ab40fe74" callsign="SP"
type="b-m-p-w" point="50.443353,-77.054400" remarks="" relation="c"/>
<link uid="820ebf04-1300-4c3a-a368-d6f1e21a5ddb" callsign=""
type="b-m-p-c" point="50.436413,-77.045642" remarks="" relation="c"/>
<link uid="f6926af1-deec-44f4-ae06-46065c829887" callsign="CP1"
type="b-m-p-w" point="50.446574,-77.040572" remarks="" relation="c"/>
<link_attr planningmethod="Infil" color="-1" method="Driving" prefix="CP"
type="Vehicle" stroke="3" direction="Infil" routetype="Primary"
order="Ascending Check Points"/>
<strokeColor value="-1"/>
<strokeWeight value="3.0"/>
<contact callsign="ROUTE ALFA"/>
<remarks></remarks>
<archive/>
<labels_on value="true"/>
</detail>
</event>
ATAK rendert die link point-Liste als Routengeometrie, befördert b-m-p-w-Einträge zu Wegpunkt-Markern mit eigenen Rufzeichen und liest link_attr für Fortbewegungsmodus (Driving|Walking|Flying|Swimming|Watercraft), Richtung (Infil|Exfil) und Routentyp (Primary|Secondary). Das eigene point des Events ist der 0/0-Sentinel — die Geometrie lebt vollständig im Detail.
Zeichnungen folgen demselben Muster „Geometrie im Detail“. Ein Kreis ist eine Ellipse mit gleichen Achsen in einem <shape>:
<event version="2.0" uid="6d09b6f6-720a-4eef-a197-183012512316"
type="u-d-c-c" how="h-e"
time="2026-10-07T07:35:12.000Z" start="2026-10-07T07:35:12.000Z"
stale="2026-10-08T07:35:12.000Z">
<point lat="50.437376" lon="30.572999" hae="9999999.0" ce="9999999.0" le="9999999.0"/>
<detail>
<shape>
<ellipse major="300.0" minor="300.0" angle="360"/>
<link uid="6d09b6f6-720a-4eef-a197-183012512316.Style"
type="b-x-KmlStyle" relation="p-c">
<Style>
<LineStyle><color>ffffffff</color><width>4.0</width></LineStyle>
<PolyStyle><color>96ffffff</color></PolyStyle>
</Style>
</link>
</shape>
<strokeColor value="-1"/>
<strokeWeight value="4.0"/>
<fillColor value="-1761607681"/>
<contact callsign="PATROL AREA"/>
<labels_on value="true"/>
</detail>
</event>
Das point ist das Zentrum, major/minor sind Meter, und der unter einem Link vom Typ b-x-KmlStyle verschachtelte KML-artige Block trägt Strich und Füllung. Ein Rechteck lässt das shape-Element weg und listet seine Ecken als <link point="lat,lon"/>-Kinder vom Typ u-d-r; eine Freihandlinie tut dasselbe mit Typ u-d-f und schließt das Polygon, indem sie den ersten Punkt am Ende wiederholt. Eine Entfernungs-/Peilungslinie ist wieder anders: Typ u-rb-a, das point ist der Anker, und der Vektor ist numerisch:
<event version="2.0" uid="58df2fcd-e33e-414f-a718-b18b50cd3137"
type="u-rb-a" how="h-e"
time="2026-10-07T07:44:03.000Z" start="2026-10-07T07:44:03.000Z"
stale="2026-10-08T07:44:03.000Z">
<point lat="50.420806" lon="30.554945" hae="9999999.0" ce="9999999.0" le="9999999.0"/>
<detail>
<range value="886.14"/>
<bearing value="45.6"/>
<inclination value="0.0"/>
<rangeUnits value="1"/>
<bearingUnits value="0"/>
<northRef value="0"/>
<strokeColor value="-65536"/>
<strokeWeight value="3.0"/>
<contact callsign="R&B 1"/>
</detail>
</event>
Einheiten sind kleine Ganzzahlen: rangeUnits 0=km, 1=Meter, 2=Meilen, 3=Yards, 4=Fuß, 5=Seemeilen; bearingUnits 0=Grad, 1=Mil, 2=Radiant; northRef 0=rechtweisend, 1=magnetisch, 2=Gitter. ATAK berechnet die Pfeilspitzenposition beim Import aus Anker und Vektor neu.
Notruf-Alarme und CASEVAC-/MEDEVAC-Anfragen
Notruf-Baken sind kleine, dringende Events: Typ b-a-o-tbl für einen allgemeinen 911-Alarm, stale nur zehn Sekunden in die Zukunft (die Bake wird erneut gesendet, statt zu verweilen), und die UID-Konvention <device-uid>-9-1-1:
<event version="2.0" uid="ANDROID-9c2f71a4-9-1-1" type="b-a-o-tbl" how="h-g-i-g-o"
time="2026-10-07T08:01:57.000Z" start="2026-10-07T08:01:57.000Z"
stale="2026-10-07T08:02:07.000Z">
<point lat="50.448620" lon="30.531104" hae="160.0" ce="8.0" le="12.0"/>
<detail>
<link uid="ANDROID-9c2f71a4" type="a-f-G-U-C" relation="p-p"/>
<contact callsign="GRIF-2-Alert"/>
<emergency type="911 Alert">GRIF-2</emergency>
</detail>
</event>
Die emergency/@type-Zeichenfolgen und ihre CoT-Typen, wie ATAK sie definiert:
| Alarm | CoT-Typ | Auslöser in ATAK |
|---|---|---|
| 911 Alert | b-a-o-tbl | Notruftaste, allgemein |
| Ring The Bell | b-a-o-pan | Gezielte Bitte um dringende Aufmerksamkeit |
| In Contact | b-a-o-opn | Truppen im Feuerkontakt |
| Geo-fence Breached | b-a-g | Track betritt oder verlässt einen überwachten Geofence |
| Custom | b-a-o-c | Plugin-definiert |
| Cancel Alert | b-a-o-can | Operator storniert eine aktive Bake |
Beim Empfang schlagen Clients den Marker zur link/@uid nach, heben den Alarm mit Entfernung und Peilung zur Position des Verwundeten aus und halten die Bake am Leben; TAK Server sendet sie periodisch erneut. Eine Stornierung verwendet dieselbe Event-uid und kippt das Detail:
<event version="2.0" uid="ANDROID-9c2f71a4-9-1-1" type="b-a-o-can" how="h-g-i-g-o"
time="2026-10-07T08:07:22.000Z" start="2026-10-07T08:07:22.000Z"
stale="2026-10-07T08:07:32.000Z">
<point lat="50.448620" lon="30.531104" hae="160.0" ce="8.0" le="12.0"/>
<detail>
<emergency cancel="true">GRIF-2</emergency>
</detail>
</event>
Die 9-Line-MEDEVAC-/CASEVAC-Anfrage ist ein Marker vom Typ b-r-f-h-c, dessen Detail ein <_medevac_>-Element trägt (beachten Sie die Unterstriche), das die neun Zeilen als Attribute hält. Eine sichere, breit verstandene Teilmenge:
<event version="2.0" uid="7b1e0c52-2f4d-4f18-9c6e-0d4a2b9f5c31"
type="b-r-f-h-c" how="h-g-i-g-o"
time="2026-10-07T08:10:40.000Z" start="2026-10-07T08:10:40.000Z"
stale="2026-10-07T09:10:40.000Z">
<point lat="50.448620" lon="30.531104" hae="160.0" ce="8.0" le="12.0"/>
<detail>
<contact callsign="GRIF-2"/>
<_medevac_ casevac="false" title="GRIF-2 9LINE" freq="41.50"
urgent="1" priority="0" routine="0"
litter="1" ambulatory="0"
security="2" hlz_marking="2"
equipment_none="true">
<zMistsMap>
<zMist title="MIST 1" z="Z1" m="GSW"
i="left thigh" s="HR 110, BP 100/60" t="tourniquet, TXA"/>
</zMistsMap>
</_medevac_>
<remarks>Pickup at gravel yard, wind 310/8</remarks>
</detail>
</event>
Entschlüsselung: Patientenzahlen nach Vorrang stecken in urgent/priority/routine; Zeile 5 in litter/ambulatory; security ist ein Index 0–3 (N kein Feind, P möglich, E Feind im Raum, X Geleitschutz nötig); hlz_marking indiziert A Tafeln, B Pyro, C Rauch, D keine, E anderes; Sonderausstattung erscheint als Boolesche Flags (hoist, extraction_equipment, ventilator); der klinische MIST-Bericht steckt unter zMistsMap. ATAK rendert aus diesem Element die vollständige 9-Line-Karte und die LZ-Werkzeuge. Den operativen Arbeitsablauf darum behandelt CASEVAC-Koordinationssoftware.
Sensor-Gesichtsfeld und Videolinks
MITREs Sensor-Sub-Schema hängt ein steuerbares Gesichtsfeld an jeden Marker. Fügen Sie innerhalb des Positions-Events der Plattform selbst — hier eine befreundete Drohne mit Rotoren, Typ a-f-A-M-H-Q — hinzu:
<event version="2.0" uid="UAV-ZP-07" type="a-f-A-M-H-Q" how="m-g"
time="2026-10-07T08:22:05.000Z" start="2026-10-07T08:22:05.000Z"
stale="2026-10-07T08:22:15.000Z">
<point lat="50.437120" lon="30.552870" hae="820.0" ce="12.0" le="15.0"/>
<detail>
<contact callsign="ZP-07" endpoint="*:-1:stcp"/>
<sensor azimuth="127.0" fov="30.0" vfov="22.0" range="2200.0"
elevation="-18.0" model="EO/IR turret"/>
<__video url="rtsp://192.168.4.60:8554/live.sdp"/>
</detail>
</event>
azimuth ist Grad von rechtweisend Nord, elevation die Neigung (negativ heißt nach unten), fov/vfov das horizontale und vertikale Feld in Grad, range die Schrägentfernung in Metern — zusammen lassen sie ATAK den Sensorkegel auf die Karte zeichnen. Das <__video>-Kind bindet den Marker an eine Stream-URL, sodass Öffnen des Markers den Feed öffnet. Eigenständige Kameraregistrierungen reisen als eigene Events vom Typ b-i-v mit einem <ConnectionEntry>, der address, port, protocol und verwandte Tuner-Attribute trägt und den Videomanager auf jedem Client füllt. Die weitere Pipeline — Telemetrieraten, KLV-Metadaten, Cueing — behandelt die Drohnen-Telemetrie-Integration mit TAK.
Hier bleiben die meisten Integrationsprogramme stecken: Radar, Drohnen-Autopilot, akustischer Sensor und Alt-C2-Feed beschreiben die Welt jeweils anders, und jeder muss in gültiges CoT übersetzt werden — korrekte Typen, ehrliche ce/le, stabile UIDs, vernünftige stale-Zeiten — sonst füllt sich das COP mit Geister-Tracks. Wir bauen genau diese CoT-Gateways und Adapter, dazu ATAK-/WinTAK-Plugins, die das Ergebnis darstellen. Sagen Sie uns, welchen Feed Sie auf dem Lagebild brauchen →
Marker löschen und Keepalive-Ping/Pong
CoT hat kein eingebautes Löschen; TAK legt eines obendrauf als Auftragsevent vom Typ t-x-d-d, dessen <link> das Opfer benennt:
<event version="2.0" uid="6650d1ee-4b17-4d02-8c95-13a1f2e9b0aa"
type="t-x-d-d" how="h-g-i-g-o"
time="2026-10-07T08:31:19.000Z" start="2026-10-07T08:31:19.000Z"
stale="2026-10-07T08:31:29.000Z">
<point lat="0.0" lon="0.0" hae="9999999.0" ce="9999999.0" le="9999999.0"/>
<detail>
<link uid="E-20261007-0413" relation="p-p" type="a-h-G-E-V-A-T"/>
<__forcedelete/>
</detail>
</event>
Ohne <__forcedelete/> markiert ATAK das referenzierte Element nur lokal als veraltet und entfernt es gemäß den Stale-Einstellungen des Nutzers; damit wird das Element auf jedem Client, der den Auftrag erhält, sofort entfernt. Der Importeur verlangt, dass link/@uid, @relation und @type vorhanden und nicht leer sind — behalten Sie alle drei. Keepalive ist noch kleiner: TAK-Clients pingen einen Server, der rund 15 Sekunden still war, alle paar Sekunden erneut und behandeln das Pong vom Typ t-x-c-t-r als Steuerbotschaft, die nie auf die Karte gelangt:
<event version="2.0" uid="ANDROID-9c2f71a4-ping" type="t-x-c-t" how="m-g"
time="2026-10-07T08:33:50.000Z" start="2026-10-07T08:33:50.000Z"
stale="2026-10-07T08:34:00.000Z">
<point lat="0.0" lon="0.0" hae="0.0" ce="9999999.0" le="9999999.0"/>
</event>
Wenn Sie ein Gateway bauen, spiegeln Sie dieses Verhalten: ein <uid>-ping-Event in jedem Intervall, in dem die Verbindung geprüft werden soll, und lautloses Verwerfen der Pongs.
Gültiges CoT erzeugen: Zeitstempel, stale, UIDs, Escaping
Die wiederkehrenden Bugs in CoT-Emittern sind vorhersehbar, und alle sind billig zu vermeiden:
- UTC, immer. Jeder Zeitstempel endet auf
Z; lokale Offsets oder ein fehlendesZverschieben Marker um Stunden in die Vergangenheit oder Zukunft. Sekundenbruchteile sind optional, jede Genauigkeit ist zulässig. - Stale-Disziplin. Bewegliche Tracks: zwei bis vier Meldeintervalle plus Rand. Statische Marker: Stunden bis Tage, mit
<archive/>, wenn sie bleiben sollen. Lassen Siestalebei einem Live-Track nie auf dem Standard in ferner Zukunft — Geistermarker sind die Feldbeschwerde Nummer eins. - Stabile UIDs. Leiten Sie die uid von der Entität ab (Seriennummer, Tracknummer, Inhalts-Hash), nicht von der Nachricht. Zwei reale Tracks mit derselben uid kollabieren zu einem flackernden Marker.
- Ehrliche Fehler. Wenn Sie Höhe oder Genauigkeit nicht kennen, senden Sie
9999999.0, nicht0. Fusions-Engines werten0als Behauptung. - Koordinaten. Vorzeichenbehaftete Dezimalgrade, WGS-84; sechs Nachkommastellen genügen völlig. Auf vier Stellen zu kürzen (rund 10 m) ist eine legitime Bandbreitenentscheidung mancher Bibliotheken — aber machen Sie es konsistent.
- XML-Escaping. Escapen Sie
&,<,>in Attributwerten und Text — Rufzeichen und Remarks enthalten irgendwann ein Kaufmanns-Und. Ein einziges streunendes<in einem Remarks-Feld killt das ganze Dokument im Parser. - Einmal validieren, dann vertrauen. Linten Sie die Ausgabe Ihres Emitters während der Entwicklung gegen das veröffentlichte CoT-Event-XSD. Das XSD fängt keine semantischen Fehler ab (stale vor start, sinnlose Typ-Enden), also fügen Sie diese Prüfungen als Assertions im Encoder hinzu.
CoT senden: Mesh-Multicast vs. TAK Server
Zwei Transporte decken fast jede Ausstattung ab. Die serverlose Mesh SA multicastet jedes XML-Dokument als ein UDP-Datagramm an die Standard-TAK-Adresse 239.2.3.1:6969 (GeoChat nutzte historisch auch 224.10.10.1:17012); jeder Client im Segment hört alles, und es gibt kein Store-and-Forward. Beim Servermodell verbinden sich Clients per TCP mit TAK Server — Port 8087 unverschlüsselt, 8089 TLS mit Client-Zertifikaten —, der XML in beide Richtungen strömen lässt, Events mit Gruppen- und Missionsfiltern verteilt und den Strom als kompaktes TAK-Protobuf pro Verbindung umkodieren kann. Kodier- und Verhandlungsdetails, einschließlich wann Protobuf Werkzeuge bricht, behandelt TAK-Protokoll: CoT XML vs. Protobuf; Routing über Servergrenzen die TAK-Federation-Hub-Architektur, das Koalitionsbild CoT und NATO-Standards verbinden.
Eine Faustregel entscheidet zwischen beiden: Liegen die Empfänger im selben RF-Segment und sind Verluste tolerierbar, ist Multicast gratis; ist jemand außerhalb des Segments, in einem anderen Netzwerk oder braucht Replay im Offline-Zustand, brauchen Sie den Server — und alles, was einen Prüfpfad verlangt, ebenso.
Verwandeln Sie Ihre Sensor- oder C2-Datenquelle in gültiges CoT
Wir bauen CoT-Gateways und Adapter, die Radar-, Drohnen-, akustische und Legacy-C2-Quellen in saubere Cursor-on-Target-Ströme übersetzen, sowie ATAK- und WinTAK-Plugins, die sie auf dem Lagebild darstellen.
Erstellt vom Engineering-Team von Corvus Intelligence, das CoT-Gateways, TAK-Server-Integrationen und ATAK/WinTAK-Plugins baut; jeder Elementname, Typcode und jedes Verhalten wurde gegen MITREs öffentliche CoT-Schema-Dokumentation und die mit den TAK-Clients veröffentlichten CoT-Definitionen geprüft. Über Corvus Intelligence →