...
The filter implements the Fledge Filter plugin interface (see filter_plugins).
Filter configuration
See Plugins configuration design for examples and details.
The "config
" parameter of "plugin_init
" call shall include :
- A "
exchanged_data
" category with the same content as provided to the IEC104 south plugin. This section is mandatory so that the filter plugin can convert the PIVOT type from IEC 104 type.
Notes :
- All types not listed in this table are not supported in current version.
- The current implementation provides a default mapping rule for each known type, but some new rules might be added in the future and configured using the "
alternate_mapping_rule
" option in its parameters.
Filter interface
The "plugin_ingest
" call will convert each "reading
" of "reading_set
" as follow:
- The Reading fields "id", "TimeStamp" and "userTimestamp" are unchanged.
- The "asset_name" field shall be mapped with
"
exchanged_data.datapoints.label"
- The Reading field "reading" is updated with a JSON object
{'<Root> key' : {...}}
. The content of object under'<Root> key'
is given below.
The <Root> key of PIVOT object
...
is:
Reading key | Content |
---|---|
PIVOTTS.GTIS | Tele Signal |
PIVOTTM.GTIM | Tele Measurement |
PIVOTTC.GTIC | Not supported yet |
In the following table: <type>
is equal to
...
<type>
conversion table:
CDC Class | IEC 104 Type ID | Type ID with timetag | Alternative format type id |
---|---|---|---|
SpsTyp | M_SP_NA_1 | M_SP_TA_1,M_SP_TB_1 | M_PS_NA_1 |
DpsTyp | M_DP_NA_1 | M_DP_TA_1,M_DP_TB_1 | M_EP_TA_1,M_EP_TD_1 |
MvTyp | M_ME_NA_1 | M_ME_TA_1,M_ME_TD_1 | M_ME_ND_1 |
MvTyp | M_ME_NB_1 | M_ME_TB_1,M_ME_TE_1 | |
MvTyp | M_ME_NC_1 | M_ME_TC_1,M_ME_TF_1 |
...
The content under <Root> will convert the IEC 104 data objet to a pivot object as follow:
Key | Type | Default Value | iec104.data_object.<...> | Note |
---|---|---|---|---|
<Root>.Cause.stVal | Integer | Mandatory | do_cot | See Cause of Transmission |
<Root>.Confirmation.stVal | Boolean | false | do_ |
negative | |||
<Root>.ComingFrom | String | Mandatory | do_comingfrom |
iec104 |
<Root>.Identifier | String | Mandatory | do_id |
do_type
do_id = PIVOT IDexchanged_data.datapoints.pivot_id | |||
<Root>.<type> | {CDC} | Mandatory | do_type |
exchanged_data.datapoints.pivot_type (see <type> conversion table above) | |||
| PIVOT : Object | 0 | do_detail |
OR-Mask of following values:
0x0001 = badReference
0x0002 = failure0x0004 = inconsistent
0x0008 = innaccurate
0x0010 = oldData
0x0020 = oscillatory
0x0040 = outOfRange
0x0080 = overflow
0x1000 = test
<Root>.<type>.t.TimeQuality | Integer | 0 | do_ts_quality |
OR-Mask of following values:
0x01 = clockFailure0x02 = clockNotSynch
<Root>.<type>.q.Source | String | "process" | do_source | "process" | "substituted" |
<Root>.<type>.q.Validity | String | Mandatory | do_value_quality | "good" | "invalid" | "reserved" | "questionable" |
<Root>.<type>.t.SecondSinceEpoch | Integer | 0 | do_ts | |
<Root>.TmOrg | String | Mandatory | do_ts_org | "genuine" | "substituted" |
<Root>.TmValidity | String | Mandatory | do_ts_validity | "good" | "invalid" | "reserved" | "questionable" |
<Root>.SpsTyp.stVal | Boolean | Mandatory | do_value | |
<Root>.DpsTyp.stVal | String | Mandatory | do_value |
<Root>.MvTyp.mag.f | Float | Mandatory | do_value | |
<Root>.MvTyp.mag.i | Integer | Mandatory | do_value |