Exporters can be used to trigger the sending of data to external sources, this can be used to either send E-mail / SMS templates or export timing data to other systems such as third party timing software, tracking partners, LED clocks and more.
Exporters include some built-in functionality for specific partners but it is designed to be fully flexible to support a wide range of uses.
The exporter runs on both online and offline versions of RACE RESULT 14, if you are working online and you are exporting to a local destination (e.g. local network IP address, Serial or File) then ensure to start the RACE RESULT Web Server on your computer.
Settings
Exporters
When started an exporter will automatically send the corresponding data when a valid trigger is received, multiple exporters can be setup and run simultaneously. Exporters are sent for individual participants and so the trigger, filter and data always refer to the individual participant record.
Name |
A name for the exporter |
Timing Point/Split |
The trigger for the exporter. Timing Point - when a raw data record is received for the selected timing point Split - whenever that split is calculated (including subsequent re-calculations for any reason) All - whenever any raw data record is received or any split calculated |
Filter | A filter to be applied, this can also use the Raw Data Fields |
Destination | The export type and additional settings according to the type |
Export Data | Which data should be sent, either a default format or any custom expression |
Line End | The line ending to be appended to each record sent |
The additional Extended Settings control the flow of data.
If you wish to write a custom output data format using the raw data then you can use the Raw Data Fields, additionally any standard fields / functions can be used in the custom export data.
If using FILE export then the file name should be the full destination address and file type for example: C:\Users\Timer\Documents\Export.csv
Tracking
Tracking forwarding is supported for a number of specific third-party platforms, these work similarly to exporters but forward the data in a pre-specified format according to the platform.
Some platforms additionally require a customer ID to process data.
Extended Settings
The extended settings additionally control the behaviour of the exporter.
Encoding - Either UTF-8 or ASCII.
Min. Seconds Between - Define a minimum time in seconds between each record being sent.
Max Queue Length - The maximum queue size allowed in the buffer, the buffer is first in, first out - so the earliest passings will be dropped if the queue reaches the maximum length.
Ignore Before / Ignore After - Define a minimum and maximum time for passings to be exported.
Connect Message - Define a custom message string which should be sent when starting the exporter (e.g. an authentication token).
Start in Paused Mode - If enabled then the exporter will be paused when started.
Default raw data exporters
This article lists all the default available exporters. Below shows the data format of each exporter as well as an example of its output.
Raw Data Record JSON
The Raw Data Record JSON mimics a Passing Record. It is a JSON struct with all relevant data, where the first part refers to information from RACE RESULT 14, and the last object refers to the actual passing raw data.
Example output
"ID":1,
"Bib":50001,
"TimingPoint":"STARTFINISH",
"Result":-10,
"Time":32795.944,
"Invalid":false,
"Passing":{
"Transponder":"ZICAD30",
"Position":{
"Latitude":0,
"Longitude":0,
"Altitude":0,
"Flag":""
},
"Hits":75,
"RSSI":-75,
"Battery":3,
"Temperature":17,
"WUC":6233,
"LoopID":8,
"Channel":8,
"InternalData":"",
"StatusFlags":128,
"DeviceID":"D-50432",
"DeviceName":"Support Decoder",
"OrderID":0,
"Port":0,
"IsMarker":false,
"FileNo":177,
"PassingNo":1,
"Customer":12345,
"Received":"2024-01-12T09:07:43.15+01:00",
"UTCTime":"2024-01-12T09:06:35.944Z"
}
}
Raw Data Record V2
The Raw Data Record V2 mimics a Passing Record from a RACE RESULT System. It does not include values for [<LoopOnly>] and [<InternalData>], however the structure is correct.
<InternalData>;<IsActive>;[<Channel>];[<LoopID>];[<LoopOnly>];[<WakeupCounter>];
[<Battery>];[<Temperature>];[<InternalActiveData>];<BoxName>;<FileNumber>;[<MaxRSSIAntenna>];<BoxId><CrLf>
Example output
Raw Data Record V1
The Raw Data Record V1 is a legacy version of a Passing Record. It does not write a data and it does not include [<LoopOnly>] (see |Decoder Communication Protocol) and hence moves all columns thereafter to the left by one column when compared to a full passing record. This format has been maintained to ensure backwards compatability for existing implementations (2023 and earlier).
<InternalData>;<IsActive>;[<Channel>];[<LoopID>];[<WakeupCounter>];
[<Battery>];[<Temperature>];[<InternalActiveData>];<BoxName>;<FileNumber>;[<MaxRSSIAntenna>];<BoxId><CrLf>
Example output
Raw Data Record with Position
The Raw Data Record V1 with Position mimics the legacy version of a Passing Record but also adds in GPS position.
<InternalData>;<IsActive>;[<Channel>];[<LoopID>];[<WakeupCounter>];
[<Battery>];[<Temperature>];[<InternalActiveData>];<BoxName>;<FileNumber>;[<MaxRSSIAntenna>];<BoxId>;[RD_Latitude];[RD_Longitude]<CrLf>
Example output
Custom
See Custom Destination Data Fields for more information on setting up a custom exporter.
Raw Data Time
This exporter only exports the raw time of the passings in seconds.
Example output
RunScore RSBCI
- RSBCI - Text string "RSBCI"
- [RD_Transponder] or [RD_IDBib] - Exports transponder if one is entered, otherwise exports bib
- [RD_Time] - Exports raw time of the passing formatted to "hh:mm:ss.kkk"
- [RD_TimingPoint] - Exports the TimingPoint name from RACE RESULT 14
Example output
Tracking Location Forwarding
Exporters can also be used to send Raw Timing Data to Tracking Partners for use in tracking visualisation.
- For passive timing data or active passings from a system which has a GPS location and is synced to GPS time then the reported GPS location of the system will be forwarded.
- For USB Timing boxes, Loop Boxes in Store or Repeat Mode or systems without a GPS location then the Timing Point Position (according to the Timing Point Settings is forwarded.
If there is no GPS location on the system and no Timing Point Position set then the data will be sent with no location, which some Tracking Visualisation setups will subsequently ignore.
Inserimento Database
Gli esportatori di dati grezzi attualmente supportano i seguenti tipi di database SQL e driver ODBC per database Access e simili: se hai bisogno di altri tipi di database, faccelo sapere e possiamo dare un'occhiata all'implementazione. Se si utilizza un database che richiede driver ODBC, assicurarsi innanzitutto che siano installati sul computer e che ODBC possa creare una connessione al database.
Quando si configura l'esportatore, è necessario immettere le impostazioni del server per il database, che accettano stringhe diverse a seconda del tipo di database.
MySQL: %USERNAME%:%PASS%@tcp(%HOSTNAME%:%PORT%)/%DATABASE%
MS-SQL: server=%HOSTNAME%; user id=%USERNAME%; password=%PASS%; database=%DATABASE%; port=%PORT%;
PostgreSQL: postgresql://%USERNAME%:%PASS%@%HOSTNAME%:%PORT%/%DATABASE%?sslmode=disable
ODBC Drivers (e.g. Microsoft Access): Driver={Microsoft Access Driver (*.mdb, *.accdb)};Dbq=C:\Database.accdb
Per le connessioni del driver ODBC sarà necessario fare riferimento alla stringa di connessione corretta per i driver installati.
Alcuni tipi di database potrebbero richiedere impostazioni di sicurezza aggiuntive per nome utente e password ed una buona risorsa per questo è disponibile all'indirizzo https://www.connectionstrings.com/
È necessario formattare i dati di esportazione utilizzando l'inserimento personalizato per formulare un'istruzione come Espressione.
Per esempio per MS-SQL:
"INSERT INTO RawData (Chip, Time, TimingPoint) VALUES ('" & if([RD_Transponder]<>"";[RD_Transponder];[RD_IDBib]) & "', '" & format([RD_Time];"hh:mm:ss.kkk") &"', '" & [RD_TimingPoint] &"')"
Ciò inserirà in una tabella chiamata "RawData", nei campi Chip, Time e TimingPoint i campi Codice Transponder o Chip Code, tempo dei dati grezzi formattato rispettivamente come hh:mm:ss.kkk e il punto di cronometraggio. Per i database di Microsoft Access, i nomi dei campi devono essere racchiusi tra parentesi quadre.
Exporting Date & Time
Some platforms may require you to send the passing date and time, however currently RACE RESULT 14 does not store the passing date when the passing is saved to the database. To send dates and times correctly you will need to set the Timing Module to handle the times correctly according to Multi-Day Race settings.
To export date and time you can use the following formulas in your expression.
Date: ([EventDate]+int([RD_Time]/86400))
This requires the EventDate to be set in your files basic settings, it calculates how many days after the start date the passing was from and sends the corresponding date.
Time: format(([RD_Time]%86400);"hh:mm:ss.kkk")
This is the remainder of time after the time has been divided by 86400, the number of seconds in 24 hours, and so will always send the Time of Day. As the modal does not return milliseconds we must then append the milliseconds with a separate format.
It is on our wishlist to save and use the passing date in the event file, however this solution should work for most cases so long as you setup the file correctly.
Inviare E-mail / SMS
Gli esportatori possono essere configurati per inviare modelli di e-mail/SMS, come ad esempio l'invio di una e-mail o SMS all'arrivo di ogni partecipante. Questa funzionalità ha sostituito quella dello strumento Instant Push.
Gli esportatori di e-mail e SMS possono essere attivati da un punto di cronometraggio o da un intermedio. Quando viene ricevuto o calcolato un tempo per il punto di cronometraggio o l'intermedio selezionati, verrà attivato l'esportatore (se, ovviamente, anche il filtro è soddisfatto).
Quando si inviano e-mail / SMS tramite esportatori, il filtro predefinito per il modello verrà precaricato nel filtro esportatore e il campo "Imposta casella di controllo" verrà impostato quando l'email/SMS viene inviato.
Setup
L'impostazione di un esportatore per l'invio di un modello e-mail/SMS richiede un nome per l'esportatore, un punto di cronometraggio o un intermedio selezionati e il modello da inviare. Facoltativamente può essere applicato un filtro che deve essere vero anche per il partecipante, per poter inviare l'email/SMS.
Una volta creato, l'esportatore verrà mostrato nelle schede Cronometraggio con chip e Sistemi in cui l'export può essere avviato, messo in pausa o interrotto. Quando avvii un esportatore che sta inviando un modello SMS, ti verrà richiesto di inserire il nome utente e la password per il tuo account, poiché l'invio di SMS detrarrà automaticamente i crediti dal tuo account.
Durante l'esecuzione, gli Exporter possono anche essere riavviati, quindi ciò significa che l'exporter può essere fatto partire anche dopo l'invio dei primi dati o riprodotti se un problema impedisce l'invio dei messaggi. Gli esportatori osservano anche l'impostazione del "mantieni il cronometraggio attivo", il che significa che per gli eventi di più giorni, questi possono essere avviati e rimarranno in esecuzione fino alla fine dell'evento.
Filtri
In particolare, quando si utilizza come trigger un punto di cronometraggio, è possibile impostare un filtro per garantire che il tempo ricevuto mandi effettivamente il comando di invio dei dati. Ad esempio, se si utilizza il punto di cronometraggio di arrivo, è possibile che si desideri filtrare su [Arrivato].
Per filtri più complessi potresti voler utilizzare i Campi dati dei dati grezzi.
Raw Data Fields
You can create any combination of data for the destination according to your requirements. You can use any of the standard data fields from RACE RESULT 14 or the custom fields below which are related directly to the passing which triggered the exporter. Data fields should be enclosed in square brackets, to join data fields you should use '&', for example to join just Transponder and Time separated by a semi-colon you would enter - [RD_Transponder] & ";" & [RD_Time] .
- [RD_ID] - A Unique ID for that passing
- [RD_IDBib] - If using standard passive tags then this is the chip code of the tag.
- [RD_Transponder] - If using non-standard passive tags or active transponders then this will return the transponder code.
- [RD_Time] - The raw time of the passing in seconds. You can use the Time Format function to display this in the required format.
- [RD_OrderID] - The OrderID of the chip. (Passive Only)
- [RD_Hits] - The number of hits on the transponder for the passing. (Number of times the transponder was seen).
- [RD_RSSI] - The max RSSI (strength) of the signal received from the transponder.
- [RD_ChannelID] - The active Channel ID from the timing point (Active Only)
- [RD_LoopID] - The active Loop ID from the timing point. (Active Only)
- [RD_WakeupCounter] - The wake-up count from the transponder. (Active Only)
- [RD_Battery] - The battery voltage of the transponder. (Active Only)
- [RD_Temperature] - Internal temperature of the transponder. (Active Only)
- [RD_StatusFlags] - The status flag indicates if the passing was a stored passing on the transponder.
- [RD_TimingPoint] - The TimingPoint name in RACE RESULT 12.
- [RD_DecoderName] - The name of the decoder if it has been assigned.
- [RD_DecoderID] - The device ID
- [RD_Port] - The antenna port with max. RSSI during a passing (Passive Only)
- [RD_Latitude] / [RD_Longitude] - The coordinates of the detection, provided the device it comes from delivers GPS coordinates.
- [RD_IsMarker] - whether or not this passing is treated as a Marker
- [RD_FileNo] - indicates the file number from a Ubidium or decoder
- [RD_PassingNo] - the passing number as saved in a passings file
- [RD_Customer] - the customer ID to which the passing has been uploaded
- [RD_Received] - the timestamp with timezone when the passing has been received by RACE RESULT 12
- [RD_UTCTime] - the timestamp of the passing converted to UTC time
Markers return a transponder code of -1 regardless of the decoder settings.
Exporter Commands
For TCP/IP exporters you can additionally send commands to the TCP socket to control exporters remotely when connected.
Comando Ottieni informazioni
Per ottenere informazioni sull'esportatore, inviare il seguente comando:
GETINFO\n
La risposta sará simile a questa:
{ "Command": "GETINFO", "Exporter": { "ID": 8, "Name": "PacketSender Home", "Filter": "", "TriggerTimingPoint": "", "TriggerResultID": 0, "DestinationType": "TCPIP", "Destination": "192.168.178.25:54696", "Data": "[RD_ID] \u0026 \";\" \u0026 if([RD_Transponder]\u003c\u003e\"\";[RD_Transponder];[RD_IDBib]) \u0026 \";;\" \u0026 format([RD_Time];\"hh:mm:ss.kkk\") \u0026 \";\" \u0026 [RD_OrderID] \u0026 \";\" \u0026 [RD_Hits] \u0026 \";\" \u0026 [RD_RSSI] \u0026 \";;\" \u0026 if([RD_LoopID]\u003e0;1;0) \u0026 \";\" \u0026 [RD_ChannelID] \u0026 \";\" \u0026 [RD_LoopID] \u0026 \";;\" \u0026 [RD_WakeupCounter] \u0026 \";\" \u0026 ([RD_Battery]/10) \u0026 \";\" \u0026 ([RD_Temperature]-100) \u0026 \";\" \u0026 [RD_StatusFlags] \u0026 \";\" \u0026 [RD_DecoderName]", "MTB": 0, "MQL": 0, "LineEnding": "LF", "OrderPos": 7000 }, "Paused": false, }
Comando Interrompi
Questo comando arresta l'esportatore in qualsiasi momento.
STOP\n
Risposta normale:
{
"Command": "STOP",}
Risposta errore:
{
"Command": "STOP","Error": "Some error message" }
Comando Pausa
Questo comando mette in pausa l'esportatore in qualsiasi momento.
Comando:
PAUSE\n
Risponde con:
{
"Command": "PAUSE","Paused": true }
Comando Riprendi
Questo comando ripristina l'esportatore in qualsiasi momento.
Comando:
RESUME\n
Risponde con:
{
"Command": "RESUME","Paused": false }
Nota: se la connessione si interrompe in modalità "in pausa", non verrà riaperta a meno che non vi siano nuovi dati da scrivere. Se si desidera riprendere, è necessario attendere il ripristino della connessione.
Comando Ripeti
Questo comando consente di riprodurre l'esportatore in qualsiasi momento.
Comando:
REPLAY\n
Risposta normale:
{
"Command": "REPLAY",}
Rispota di errore:
{
"Command": "REPLAY","Error": "Some error message" }