(Optional) Creating a BACnet Type Map (BTM)

BACnet Router and Server Configuration is available with SmartServer 2.5 and higher.

For SmartServer 3.1 or prior, see (Optional) Setting up BACnet (Release 3.1).

You can use the SmartServer as a BACnet server, BACnet client, and a BACnet router. Using the SmartServer BACnet Server, you can access the SmartServer from a BACnet workstation and other BACnet client applications. 

To configure the BACnet server, you need to create the BACnet Type Map (BTM) file for the interface as described in this section. You can create BACnet type maps for multiple device interfaces by creating a BTM file for each.

Using the BTM Creation Tool

You can use the BTM Creation Tool web page to automatically create one or more BTM file(s). Go to the SmartServer GitHub repository to retrieve this tool and follow the instructions in the ReadMe file to get started.

Once the BTM file is created, you will also need to:

  1. Set up BACnet. See Add a BACnet Interface.
  2. Import the BTM file using the Import/Export button (). See Importing and Exporting SmartServer Configuration Files. For SmartServer releases prior to 3.5, use the Devices Types widget. See Defining Device Types (Release 3.4 and 3.5).

This section covers the following topics:

Creating a BACnet Type Map (BTM) File

You can create a BACnet type map file with a .btm extension that defines the BACnet objects to be published by the BACnet Server in the SmartServer and to define how the BACnet objects are mapped to SmartServer datapoints.  You can create multiple BACnet type map files.  Each BACnet type map file defines the BACnet objects for an IAP device interface (XIF) definition that you specify.  You can map multiple IAP XIF definitions by creating multiple BACnet type map files, one per IAP XIF definition. 

The BTM file name uses the format <product>.btm, where <product> should match the name of the XIF file and encompasses everything up to the first period in the file name, and btm or BTM is recognized as an extension following the last period in the file name.

<product>.btm.csv and <product>.csv extensions also supported but must contain the meta data line #filetype,bacnet_type_map in order to be recognized as a BTM file.

For example, if you want to map datapoints from a LON EVB defined by 6kEvbMultiSensor.xif, then you should name the BTM file 6kEvbMultiSensor.btm. Similarly, if you want to map datapoints from a Modbus device defined by Adam-4150.mod, then you should create a BTM file called Adam-4150.btm.
Consequently, you cannot have a scenario where there are multiple drivers using the same <product> name and they need to be mapped. For example, if you have device.xif and device.mod, and the two files need to be mapped, then there will be a conflict because both BTM files will need to be called device.btm.

A BACnet type map file has the following three sections.

  • A file type specification that identifies the file as a BACnet type map.
  • An XIF details section that specifies the version and XIF name (repeated from the filename) for the BACnet type map.
  • A datapoint list that specifies the XIF datapoints to be mapped to the BACnet Server. The first line of the datapoint list is a header with column headings for a datapoint list.

The following example shows the top portion of a BACnet type map file.

#filetype,bacnet_type_map
#version,v7.0.0
#product_name,XL10_VAV2
#program_id,80:00:0C:50:0A:03:04:03
#manufacturer,Honeywell
#description,Variable Air Volume XL10 Controller
Block Name,Block Index,Datapoint Name,Address,IAP Type,IAP Field,BACnet Name,BACnet Units,Description,StateTextMap

File Type Specification

The file type specification for a BACnet type map file is the following:

#filetype,bacnet_type_map

If you open a CSV file with this line in Excel, it is displayed as two cells, one with #filetype and one with bacnet_type_map.

BTM Details

The BTM details identify the device interface (XIF) mapped by the mapping file.  The BTM details has the following contents: 

#version,<Version>
#product_name,<Product Name>
#program_id,<Program ID>
#manufacturer,<Manufacturer>
#description,<Description>

If you open a CSV file with these lines in Excel, each line is displayed as two cells.

Specify the details as follows:

  • <Version> – (optional) version of the mapped device.
  • <Product Name> – (optional) manufacturer's name for the mapped device.
  • <Program ID> – (optional) program ID for the mapped device.
  • <Manufacturer> – (optional) manufacturer of the mapped device.
  • <Description> – (optional) description of the mapped device.

Following is an example BTM details specification for a XL10 VAV Controller:

#filetype,bacnet_type_map
#version,v7.0.0
#product_name,XL10_VAV2
#program_id,80:00:0C:50:0A:03:04:03
#manufacturer,Honeywell
#description,Variable Air Volume XL10 Controller

Datapoint List

The datapoint list that specifies the XIF datapoints for the mapped device interface (XIF).  The first line of the datapoint list is a header with column headings for a XIF datapoint list. 

Following is an example datapoint list with a single XIF datapoint defined:

Block Name,Block Index,Datapoint Name,Address,IAP Type,IAP Field,BACnet Name,BACnet Units,Description,StateTextMap
VAV,0,nvoSpaceTemp,AI:1,SNVT_temp_p,,RmTemp,degrees-fahrenheit,Space Temperature,

The following table describes the column contents for the datapoint list: 

Parameter

Required/Optional

Description

Block NameOptional

Block XIF name for the datapoint. If not specified because the column does not exist or the existing column has no entry, then the block name will be block.

Prior to SmartServer 3.2, this parameter was called block Type.
Block IndexOptional

Specifies a numeric block index.  The block index can be any positive (>=0) integer value and is not required to be sequential. If not specified, the block index will be zero.

For example: for a device with 8 digital outputs, you can define 8 blocks, each named DO, using indexes 0 through 7 (the index names may not be sequential, and may not start with 0). 

Prior to SmartServer 3.2, this parameter was called block handle.

Datapoint Name

Required

The datapoint XIF name.  This is a descriptive name to identify the datapoint. The name must be unique for all the datapoints in a block containing the datapoint (see Block Name). 

Multiple lines in the BTM file may specify the same block name, block index, and datapoint name. These lines specify the definition of a single IAP datapoint based on multiple BACnet objects. See IAP Type Mapping for more information.

Prior to SmartServer 3.2, this parameter was called POINT NAME.
Address

Required for BACnet if the legacy Object Type and Object Instance fields are not specified, otherwise this parameter is optional

The BACnet address, specified as <BACnet object type>:<BACnet object instance number>. The supported BACnet object types are AIAOAVBIBO, BV, LAV, IV, MSI, MSO, MSV, and PIVLON and Modbus inputs are considered BACnet outputs (AOBOMSO). LON and Modbus outputs are considered BACnet inputs (AIBIMSI). The BACnet object instance number is the object instance number defined by the BACnet protocol. Do not include leading zeros. For example: AI:941001 is the BASremote Reset Status datapoint, but you cannot specify AI:00941001

Prior to SmartServer 3.2, this parameter was defined by two separate parameters called bacnet_type and instance.
IAP TypeRequired

IAP type that identifies how the data appears in IAP/MQ and identifies the datapoint type to be reported in IAP/MQ.  Multiple BACnet objects may be mapped to a single IAP datapoint. See IAP Type Mapping for more information.

Prior to SmartServer 3.2, this parameter was called SNVT type. 
IAP FieldOptional

Name of a field within the IAP type. The field is specified as a path in a nested structure. For example: the CIE luminance field in a SNVT_color_2 datapoint is named color_value/CIE1931_lumen/y. If not specified, the entire type is used.  

Prior to SmartServer 3.2, this parameter was called SNVT Field with a required field name or a value of "value" in the BACNET TYPE MAP file.  Specifying "value" for the entire field is not required starting with SmartServer 3.2. 
BACnet NameRequired

The BACnet object name property to be published for the BACnet object by the BACnet Server.

Prior to SmartServer 3.2, this parameter was called NAME.
BACnet UnitsOptional

The BACnet units property to be published for the BACnet object by the BACnet Server. Leave as blank ( ,, ) for BI, BO, BV, MSI, MSO, MSV BACnet objects. A value is optional for AI, AO, and AV BACnet objects.  BACnet unit values are listed in the BACnet Units section below.

Prior to SmartServer 3.2, this parameter was called Units.
DescriptionOptionalProvides a human-readable freeform description of the datapoint or datapoint field.

StateTextMap

Required if the device interface has any multistate objects

Comma-separated list of LonWorks datapoint enumerated types and the StateTextMap value on the BACnet multistate object (described in the table below).

Format:

"{""<LonWorks datapoint enumerated type>"": ""<StateTextMap value>""}"

Example:

"{""HVAC_NUL"": ""Null"",""HVAC_AUTO"": ""Auto""}"
Trend LogOptional

Indicates whether or not the Trend Log object is needed for a given datapoint type. If Yes or True, then the datapoint is logged. For any other value, or for a blank entry, the datapoint is not logged.

The supported BACnet object properties are defined in the BACnet Object Properties table below.

IAP Type Mapping

The BACnet Server maps native datapoints to and from IAP datapoints and datapoint fields. Type mapping is bidirectional so that the server will map received native values to IAP values, and will map received IAP value to native values. 

The IAP type mapping is performed as described in the following table.

Native TypeIAP TypeNative → IAP MappingIAP → Native Mapping
Any scalar typeAny scalar typeScaled native value

Scaled IAP value

Multistate


Enumeration

Native BACnet-compatible multistate values are mapped to IAP enumerations based on the multistate value corresponding to the multistate string as follows: starting with a native value of 1 for the first enumeration value, incrementing the native value by one for each subsequent enumeration value followed by the zero value followed by the -1 value which will be Invalid unless otherwise specified by the enumeration, followed by each negative value starting with -2.

For example, if an IAP enumeration defines values of -4, -2, 0, 1, 5, and 8, these will be mapped to native values as follows: 1 → 1, 5 → 2, 8 → 3, 0 → 4, -1 → 5, -2 → 6, and -4 → 7. 

The IAP values will be the enumeration strings associated with the mapped value. 

The reverse of the native to IAP mapping. 

For the example the mapping from IAP value to native values will be based on the enumeration value corresponding to the IAP value string as follows: 1 → 1, 2 → 5, 3 → 8, 4 → 0, -5 → -1, 6 → -2, and 7 → -4. 

The mapped value string will be the enumeration string for the IAP value.  

MultistateAny scalar type

Native BACnet-compatible multistate values are mapped to IAP scalars with the same value, with the multistate value corresponding to the multistate string.

The reverse of the native to IAP mapping.
Any scalar typeEnumerationAny native scalar type is mapped to an IAP enumeration type by setting the enumeration value to the scalar value, and the IAP value to the corresponding member name for the enumeration value.The reverse of the native to IAP mapping.

BACnet Units

The following tables provide a listing of names that can be listed in the BACnet Units parameter.

BACnet Units

    
square-meters
square-feet
milliamperes
amperes
ohms
volts
kilovolts
megavolts
volt-amperes
kilovolt-amperes
megavolt-amperes
volt-amperes-reactive
kilovolt-amperes-reactive
megavolt-amperes-reactive
degrees-phase
power-factor
joules
kilojoules
watt-hours
kilowatt-hours
btus
therms
ton-hours
joules-per-kilogram-dry-air
btus-per-pound-dry-air
cycles-per-hour
cycles-per-minute
hertz
grams-of-water-per-kilogram-dry-air
percent-relative-humidity
millimeters
meters
inches
feet
watts-per-square-foot
watts-per-square-meter
lumens
luxes
foot-candles
kilograms
pounds-mass
tons
kilograms-per-second
kilograms-per-minute
kilograms-per-hour
pounds-mass-per-minute
pounds-mass-per-hour
watts
kilowatts
megawatts
btus-per-hour
horsepower
tons-refrigeration
pascals
kilopascals
bars
pounds-force-per-square-inch
centimeters-of-water
inches-of-water
millimeters-of-mercury
centimeters-of-mercury
inches-of-mercury
degrees-celsius
degrees-kelvin
degrees-fahrenheit
degree-days-celsius
degree-days-fahrenheit
years
months
weeks
days
hours
minutes
seconds
meters-per-second
kilometers-per-hour
feet-per-second
feet-per-minute
miles-per-hour
cubic-feet
cubic-meters
imperial-gallons
liters
us-gallons
cubic-feet-per-minute
cubic-meters-per-second
imperial-gallons-per-minute
liters-per-second
liters-per-minute
us-gallons-per-minute
degrees-angular
degrees-celsius-per-hour
degrees-celsius-per-minute
degrees-fahrenheit-per-hour
degrees-fahrenheit-per-minute
no-units
parts-per-million
parts-per-billion
percent
percent-per-second
per-minute
per-second
psi-per-degree-fahrenheit
radians
revolutions-per-minute
currency1
currency2
currency3
currency4
currency5
currency6
currency7
currency8
currency9
currency10
square-inches
square-centimeters
btus_per-pound
centimeters
pounds-mass-per-second
delta-degrees-fahrenheit
delta-degrees-kelvin
kilohms
megohms
millivolts
kilojoules-per-kilogram
megajoules
joules-per-degree-kelvin
joules-per-kilogram-degree-kelvin
kilohertz
megahertz
per-hour
milliwatts
hectopascals
millibars
cubic-meters-per-hour
liters-per-hour
kilowatt-hours-per-square-meter
kilowatt-hours-per-square-foot
megajoules-per-square-meter
megajoules-per-square-foot
cubic-feet-per-second
watts-per-square-meter-degree-kelvin
percent-obscuration-per-foot
percent-obscuration-per-meter
milliohms
megawatt-hours
kilo-btus
mega-btus
kilojoules-per-kilogram-dry-air
megajoules-per-kilogram-dry-air
kilojoules-per-degree-Kelvin
megajoules-per-degree-Kelvin
newton
grams-per-second
grams-per-minute
tons-per-hour
kilo-btus-per-hour
hundredths-seconds
milliseconds
newton-meters
millimeters-per-second
millimeters-per-minute
meters-per-minute
meters-per-hour
cubic-meters-per-minute
meters-per-second-per-second
amperes-per-meter
amperes-per-square-meter
ampere-square-meters
farads
henrys
ohm-meters
siemens
siemens-per-meter
teslas
volts-per-degree-Kelvin
volts-per-meter
webers
candelas
candelas-per-square-meter
degrees-Kelvin-per-hour
degrees-Kelvin-per-minute
joule-seconds
radians-per-second
square-meters-per-Newton
kilograms-per-cubic-meter
newton-seconds
newtons-per-meter
watts-per-meter-per-degree-Kelvin

BACnet Units #if ( BACNET_PROTOCOL_REVISION >= 17 )


per-mille
grams-per-gram
kilograms-per-kilogram
grams-per-kilogram
milligrams-per-gram
milligrams-per-kilogram
grams-per-milliliter
grams-per-liter
milligrams-per-liter
micrograms-per-liter
grams-per-cubic-meter
milligrams-per-cubic-meter
micrograms-per-cubic-meter
nanograms-per-cubic-meter
grams-per-cubic-centimeter
becquerels
megabecquerels
gray
milligray
microgray
sieverts
millisieverts
microsieverts
microsieverts-per-hour
decibels-a
nephelometric-turbidity-unit
pH
grams-per-square-meter
minutes-per-degree-kelvin
ohm-meter-squared-per-meter
ampere-seconds
volt-ampere-hours
kilovolt-ampere-hours
megavolt-ampere-hours
volt-ampere-hours-reactive
kilovolt-ampere-hours-reactive
megavolt-ampere-hours-reactive
volt-square-hours
ampere-square-hours
joule-per-hours
cubic-feet-per-day
cubic-meters-per-day
watt-hours-per-cubic-meter
joules-per-cubic-meter
mole-percent
pascal-seconds
million-standard-cubic-feet-per-minute
standard-cubic-feet-per-day
million-standard-cubic-feet-per-day
thousand-cubic-feet-per-day
thousand-standard-cubic-feet-per-day
pounds-mass-per-day
millirems
millirems-per-hour


BACnet Object Properties

The following table lists the properties that are supported by the BACnet Trend Log object.

BACnet PropertyR/WValue
Object IdentifierRO

TLOG:{TL Instance #}

Example: TLOG:0000002

Object NameRO

Trend-{BACnet_instance#}-{block_name}/{block_index}/{datapoint_name}

Example: Trend-002-mmAIblock/1/AI:2

Object TypeROObject Trend Log = 20
EnableRW

GET /iap/log/data/{data_log_id}/state
Gets the current state of the data log. The state is returned as Enabled or Disabled.

PUT /iap/log/data/{data_log_id}/state {Enabled} or
PUT /iap/log/data/{data_log_id}/state {Disabled}
Sets the current state of the specified data log. The state can be set to Enabled or Disabled (case-insensitive).

Log Device Object PropertyRO

Specifies the Device Identifier, Object Identifier, and Property Identifier of the property to be trend logged.

Example:
Dev:1801003|AI:0000001.PRESENT_VALUE

Log IntervalRW

Sets the Log Interval in the Device Type. The default value is 150 seconds.

/iap/devTypes/{deviceType}/if/{block_name}/{block_index}/{datapoint_name} /dla

GET
iap/ldevTypes/{device_type}/if{block_name}/{block_index}/{datapoint_name}/dla/logInterval1

SET
iap/ldevTypes/{device_type}/if{block_name}/{block_index}/{datapoint_name}/dla/logInterval1 {value}

Stope When FullROSet to False; the data log uses a circular buffer.
Buffer SizeROSet to 2^32 – 1
DescriptionRODescription for this Trend Log object.
Log BufferROThe log buffer is only accessible via the ReadRange service.
Record CountRW

GET /iap/log/data/{data_log_id}/count

If Record Count is set to  0, then

  • /iap/log/data/{data_log_id}/start will be set to 0.

  • The Reference Index 0 of the data log will have a logging status indicator record, an entry with a null value, and    BUFFER_PURGED=TRUE tag. 

Total Record CountROGET /iap/log/data/{data_log_id}/totalCount
Event StateRONORMAL
Logging TypeROPOLLED only.  
Status FlagsROFault, alarm, or out-of-service.

Exporting a BACnet Type Map (BTM) File

BTM file exports using the IMPORT / EXPORT dialog are available with SmartServer 4.1 (Beta) and higher.

With SmartServer 4.1 (Beta) and higher, you can export BTM files using the CMS Import/Export button () → EXPORT tab → Settings option. BTM files are included in the device types package (.dtp file). See Importing and Exporting SmartServer Configuration Files

BACnet Type Map (BTM) File Examples

XL10 VAV Controller (with Enumerated Type)

Following is an example BACnet type map file for Honeywell's XL10 VAV Controller that includes an enumerated type (StateTextMap parameter).

#filetype,bacnet_type_map
#version,v7.0.0
#product_name,XL10_VAV2
#program_id,80:00:0C:50:0A:03:04:03
#manufacturer,Honeywell
#description,Variable Air Volume XL10 Controller
Block Name,Block Index,Datapoint Name,Address,IAP Type,IAP Field,BACnet Name,BACnet Units,Description,StateTextMap
VAV,0,nvoSpaceTemp,AI:1,SNVT_temp_p,,RmTemp,degrees-fahrenheit,Space Temperature,
VAV,0,nvoEffectSetPt,AI:2,SNVT_temp_p,,RmTempSpt,degrees-fahrenheit,Space Temperature Setpoint,
VAV,0,nciSetPts,AO:3,SNVT_temp_setpt,occupied_cool,ClgOccSpt,degrees-fahrenheit,Cooling Occupied Setpoint,
VAV,0,nciSetPts,AO:4,SNVT_temp_setpt,occupied_heat,HtgOccSpt,degrees-fahrenheit,Heating Occupied Setpoint,
VAV,0,nciSetPts,AO:5,SNVT_temp_setpt,unoccupied_cool,ClgUnoccSpt,degrees-fahrenheit,Cooling Unoccupied Setpoint,
VAV,0,nciSetPts,AO:6,SNVT_temp_setpt,unoccupied_heat,HtgUnoccSpt,degrees-fahrenheit,Heating Unoccupied Setpoint,
VAV,0,nvoBoxFlow,AI:7,SNVT_flow,,SaFlow,cubic-feet-per-minute,Box Flow,
VAV,0,nvoFlowControlPt,AI:8,SNVT_flow,,FlowCtrlSpt,cubic-feet-per-minute,Box Flow Setpoint,
VAV,0,nvoUnitStatus,AI:9,SNVT_hvac_status,heat_output_primary,ReheatPos,percent,Heating Valve Position,
VAV,0,nvoCtlDataG,AI:10,UNVT_ctl_data,ubDamperPosS1,SaDmprPos,percent,Damper Position,
VAV,0,nvoTerminalLoad,AI:11,SNVT_lev_percent,,TermlLoad,percent,Terminal Load,
VAV,0,nvoUnitStatus,AI:12,SNVT_hvac_status,fan_output,StatusFan,percent,Fan Status,
VAV,0,nvoUnitStatus,MSI:13,SNVT_hvac_status,mode,StatusMode,,Mode,"{""HVAC_NUL"": ""Null"",""HVAC_AUTO"": ""Auto"",""HVAC_HEAT"": ""Heat"",""HVAC_MRNG_WRMUP"": ""MorningWarmup"",""HVAC_COOL"": ""Cool"",""HVAC_NIGHT_PURGE"": ""NightPurge"",""HVAC_PRE_COOL"": ""PreCool"",""HVAC_OFF"": ""Off"",""HVAC_TEST"": ""Test"",""HVAC_EMERG_HEAT"": ""EmergHeat"",""HVAC_FAN_ONLY"": ""FanOnly"",""HVAC_FREE_COOL"": ""FreeCool"",""HVAC_ICE"": ""Ice"",""HVAC_MAX_HEAT"": ""MaxHeat"",""HVAC_ECONOMY"": ""Economy"",""HVAC_DEHUMID"": ""Dehumid"",""HVAC_CALIBRATE"": ""Calibrate"",""HVAC_EMERG_COOL"": ""EmergCool"",""HVAC_EMERG_STEAM"": ""EmergSteam"",""HVAC_MAX_COOL"": ""MaxCool"",""HVAC_HVC_LOAD"": ""HvcLoad"",""HVAC_NO_LOAD"": ""NoLoad""}"

6K EVB MultiSensor

Following is an example BACnet type map file for EnOcean's 6K EVB MultiSensor.

#filetype,bacnet_type_map
#version,v6.0.0
#product_name,6kEvbMultiSensor
#manufacturer,EnOcean
#program_id, 9F:FF:FF:05:01:84:04:60
#description,MultiSensor example application for the FT 6050 EVB
Block Name,Block Index,Datapoint Name,Address,IAP Type,IAP Field,BACnet Name,BACnet Units,Description,StateTextMap
TempSensor,0,nvoTemperature,AV:1,SNVT_temp_p,,Space Temperature,degrees-celsius,Space temperature,
LightSensor,0,nvoLightlevel,AI:2,SNVT_lux,,Light Level,luxes,Light level,
Switch,0,nvoSwitch,AI:3,SNVT_switch,state,Switch 1 State,,Switch 1 reported state,
Switch,0,nvoSwitch,AI:4,SNVT_switch,value,Switch 1 Level,percent,Switch 1 reported level,
Switch,0,nviSwitchFb,AO:5,SNVT_switch,state,Switch 1 State FB,,Switch 1 state feedback,
Switch,0,nviSwitchFb,AO:6,SNVT_switch,value,Switch 1 Value FB,percent,Switch 1 level feedback,
Lamp,0,nviLamp,AO:7,SNVT_switch,state,Lamp 1 State,,Lamp 1 state control,
Lamp,0,nviLamp,AO:8,SNVT_switch,value,Lamp 1 Level,percent,Lamp 1 level control,
Lamp,0,nvoLampFb,AI:9,SNVT_switch,state,Lamp 1 State FB State,,Lamp 1 state feedback,
Lamp,0,nvoLampFb,AI:10,SNVT_switch,value,Lamp 1 Level FB Value,percent,Lamp 1 level feedback,

Using Trend Log 

Following is an example BACnet type map file using the Trend Log column.

#filetype,bacnet_type_map
#version,v3.14.15927,,,,,,,,,,,,,,,
#product_name,MulStateVirtDev4,,,,,,,,,,,,,,,
#program_id,904321011E001E12
#manufacturer,Echelon
#description,Variable Air Volume XL10 Controller
Block Type,Datapoint Name,bacnet_type,instance,IAP Type,BACnet Name,StateTextMap,Trend Log,units
mmAIblock,AI:1,AI,1,scalar,AI:1,,true,
mmAOblock,AO:1,AO,1,scalar,AO:1,,true,
mmBIBlock,BI:1,BI,1,scalar,BI:1,,yes,
mmBVBlock,BV:1,BV,1,scalar,BV:1,,TRUE,
mmBOBlock,BO:1,BO,1,scalar,BO:1,,yes,
mmBlock,MSI:1,MSI,1,scalar,MSI:1,"{""1"": ""One"",""2"": ""Two"",""3"": ""Three""}",yes,
mmBlock,MSV:1,MSV,1,scalar,MSV:1,"{""1"": ""One"",""2"": ""Two"",""3"": ""Three""}",True,
mmBlock,MSO:1,MSO,1,scalar,MSO:1,"{""1"": ""One"",""2"": ""Two"",""3"": ""Three""}",yes,
mmIVblock,IV:1,IV,1,scalar,IV:1,,True,
mmLAVblock,LAV:1,LAV,1,scalar,LAV:1,,yes,
mmPIVblock,PIV:1,PIV,1,scalar,PIV:1,,true,