BACnet WriteProperty command
Usage: bacwp device-instance object-type object-instance property priority index tag value [tag value...]

device-instance:
BACnet Device Object Instance number that you are trying to
communicate to.  This number will be used to try and bind with
the device using Who-Is and I-Am services.  For example, if you were
writing to Device Object 123, the device-instance would be 123.

object-type:
The object type is the integer value of the enumeration
BACNET_OBJECT_TYPE in bacenum.h.  It is the object that you are
writing to.  For example if you were writing to Analog Output 2, 
the object-type would be 1.

object-instance:
This is the object instance number of the object that you are 
writing to.  For example, if you were writing to Analog Output 2, 
the object-instance would be 2.

property:
The property is an integer value of the enumeration 
BACNET_PROPERTY_ID in bacenum.h.  It is the property you are 
writing to.  For example, if you were writing to the Present Value
property, you would use 85 as the property.

priority:
This parameter is used for setting the priority of the
write. If Priority 0 is given, no priority is sent.  The BACnet 
standard states that the value is written at the lowest 
priority (16) if the object property supports priorities
when no priority is sent.

index:
This integer parameter is the index number of an array.
If the property is an array, individual elements can be written
to if supported.  If this parameter is -1, the index is ignored.

tag:
Tag is the integer value of the enumeration BACNET_APPLICATION_TAG 
in bacenum.h.  It is the data type of the value that you are
writing.  For example, if you were writing a REAL value, you would 
use a tag of 4.
Context tags are created using two tags in a row.  The context tag
is preceded by a C.  Ctag tag. C2 4 creates a context 2 tagged REAL.

value:
The value is an ASCII representation of some type of data that you
are writing.  It is encoded using the tag information provided.  For
example, if you were writing a REAL value of 100.0, you would use 
100.0 as the value.

Here is a brief overview of BACnet property and tags:
Certain properties are expected to be written with certain 
application tags, so you probably need to know which ones to use
with each property of each object.  It is almost safe to say that
given a property and an object and a table, the tag could be looked
up automatically.  There may be a few exceptions to this, such as
the Any property type in the schedule object and the Present Value
accepting REAL, BOOLEAN, NULL, etc.  Perhaps it would be simpler for
the demo to use this kind of table - but I also wanted to be able
to do negative testing by passing the wrong tag and have the server
return a reject message.

Example:
If you want send a value of 100 to the Present-Value in
Analog Output 0 of Device 123 at priority 16, send the following command:
bacwp 123 1 0 85 16 -1 4 100

To send a relinquish command to the same object:
bacwp 123 1 0 85 16 -1 0 0