Floor Layouts

You can have a graphical representation of how the devices are placed for the location with respect to the given location. This is what we refer to as Location Layout. Similarly, if a layout is placed for a location floor that depicts the floor plan. For this you need to go to Locations tab, and access layouts for the selected location.

JSON Table

Attribute Data Type Description
type String The layout type. The expected value is floorlayout.
location application/json The location for which the layout is defined. This is a JSON object. For details about the JSON, click Location.
length long The length (horizontal length) of the layout.
width long The width (vertical length) of the layout.
unit String The unit of measurement for the floor layout. The applicable values are FEET and METER.
imageKey String The key to access the image attached to the floor layout. This needs to be appended to webservice/sfiles?id=
lastModifiedTime long When was the layout last modified.
obstaclesInfo application/json A group of attributes related to the obstacles present on the floor.
obstaclesInfo/materialProperties application/json A group of attributes related to the material properties of the obstacle.
obstaclesInfo/materialProperties/CONCRETE application/json A group of attributes related to the properties of the concrete obstacle.
obstaclesInfo/materialProperties/CONCRETE/id String Identifier of the material type. The applicable values are:

  • CONCRETE
  • BRICK
  • GLASS
  • CONCRETE_COLUMN
obstaclesInfo/materialProperties/CONCRETE/name String A group of attributes related to the Concrete material type .
obstaclesInfo/materialProperties/CONCRETE /attenuationCoefficientsA application/json A group of attributes related to the attentuation coefficients properties for A.
obstaclesInfo/materialProperties/CONCRETE /attenuationCoefficientsA /passthroughCoefficient double Passthrough coefficient.
obstaclesInfo/materialProperties/CONCRETE /attenuationCoefficientsA /reflectionCoefficient double Reflection coefficient
obstaclesInfo/materialProperties/CONCRETE /attenuationCoefficientsBG application/json A group of attributes related to Attentuation coefficients properties for BG.
obstaclesInfo/materialProperties/CONCRETE /attenuationCoefficientsBG /passthroughCoefficient double Passthrough coefficient.
obstaclesInfo/materialProperties/CONCRETE /attenuationCoefficientsBG /reflectionCoefficient double Reflection coefficient.
obstaclesInfo/materialProperties/CONCRETE/fillColor application/json A group of attributes related to the fill colors of the obstacle.
obstaclesInfo/materialProperties/CONCRETE/fillColor/r int The proportion of Red color in the obstacle material. Range is 0-255
obstaclesInfo/materialProperties/CONCRETE/fillColor/g int The proportion of Green color in the obstacle material. Range is 0-255
obstaclesInfo/materialProperties/CONCRETE/fillColor/b int The proportion of Blue color in the obstacle material. Range is 0-255
obstaclesInfo/materialProperties/CONCRETE/groupId String Group ID that the obstacle belongs to.
obstaclesInfo/obstacles application/json List of obstacles.
obstaclesInfo/obstacles/type String The applicable values are:

  • ArchedObstacle
  • EllipticalObstacle
  • PolygonObstacle
  • RectangularObstacle
obstaclesInfo/obstacles/centerX double Center X co-ordinate
obstaclesInfo/obstacles/centerY double Center Y co-ordinate
obstaclesInfo/obstacles/angle double Angle of the obstacle
obstaclesInfo/obstacles/thickness double Thickness of the obstacle.
obstaclesInfo/obstacles/materialId String Material ID of the obstacle.
obstaclesInfo/obstacles/breadth double Breadth of the obstacle. Valid only for rectangularObstacle
obstaclesInfo/obstacles/height double Height of the obstacle. Valid only for rectangularObstacle
obstaclesInfo/obstacles/enclosingRectangle application/json Enclosing rectangle for the obstacle.
obstaclesInfo/obstacles/enclosingRectangle/topLeftx double The top-left corner X co-ordinate
obstaclesInfo/obstacles/enclosingRectangle/topLefty double The top-left corner Y co-ordinate
obstaclesInfo/obstacles/enclosingRectangle/bottomRightx double The bottom right-corner X co-ordinate
obstaclesInfo/obstacles/enclosingRectangle/bottomRighty double The bottom right corner Y co-ordinate
obstaclesInfo/obstacles/obstacleGroupList application/json A goup of attributes related to an obstacle group.
obstaclesInfo/obstacles/obstacleGroupList/id String The applicable values are:

  • INDOOR_MATERIALS
  • OUTDOOR_MATERIALS
  • OTHERS
obstaclesInfo/obstacles/obstacleGroupList/name String Name of the group.
obstaclesInfo/obstacles/obstacleGroupList/visible boolean True or false value indicating whether the obstacle is visible.
rfParamsPL application/json A group of attributes related to Floor RF parameters for the path loss model.
rfParamsPL/signalDecayInflection double Signal Decay Inflection (Alpha) control how the decay exponent changes from its minimum value to maximum value for nodes with GIF, JPEG, or blank layout.
rfParamsPL/maxAttenuationConstant double The amount of signal loss that is acceptable for regions away from the transmitter for nodes with GIF, JPEG, or blank layout.
rfParamsPL/minAttenuationConstant double Specifies the amount of signal loss that is acceptable for regions close to the transmitter (Sensor) for nodes with GIF, JPEG, or blank layout.
rfParamsPL/signaleDecaySlope double Controls how the decay exponent changes from its minimum value to maximum value for nodes with GIF, JPEG, or a blank layout.
rfParamsSPM application/json A group of attributes related to Floor RF parameters. These attributes are used only when an SPM file is used.
rfParamsSPM/signalDecayInflection double The amount of signal loss that is acceptable for regions away from the transmitter for nodes imported with Mojo Planner.
rfParamsSPM/maxAttenuationConstant double The amount of signal loss that is acceptable for regions close to the transmitter (Sensor) for nodes imported with Mojo Planner.
rfParamsSPM/minAttenuationConstant double The decay exponent changes from its minimum value to maximum value for nodes imported with Mojo Planner.
rfParamsSPM/signaleDecaySlope double The decay exponent changes from its minimum value to maximum value for nodes with GIF, JPEG or blank layout.
usesSpmFile boolean A true or false value indicating whether the floor layout uses an SPM file.
spmFileKey String File key of the SPM file if the floor layout is being set.
calibrated boolean A true or false value indicating whether the RF calibration has been set.
lastSensorPlacementChangeTime long Last time the floor layout or placement information was changed.
rfParams application/json A group of attributes related to Floor RF parameters.
rfParams/signalDecayInflection double The amount of signal loss that is acceptable for regions away from the transmitter.
rfParams/maxAttenuationConstant double The amount of signal loss that is acceptable for regions close to the transmitter (Sensor).
rfParams/minAttenuationConstant double The decay exponent changes from its minimum value to maximum value.
rfParams/signaleDecaySlope double The decay exponent changes from its minimum value to maximum value for nodes with GIF, JPEG or blank layout.

Copy Sample JSON
Sample JSON
{
    "type": "floorlayout",
    "location": {
       "type": "floorlocation",
       "id": {
            "type": "locallocationid",
            "id": 3
        },
        "parentId": {
            "type": "locallocationid",
            "id": 2
        },
        "name": "alpha",
        "accessibleToUser": true,
        "defaultLocation": false,
        "timezoneId": "Asia/Calcutta",
        "locationTag": null
    },
    "length": 548,
    "width": 464,
    "unit": "FEET",
    "imageKey": "0178ace3-04c3-4b1a-9212-57dfbcc0cef1",
    "lastModifiedTime": 1469613043601,
    "obstaclesInfo": {
       "materialProperties": {
          "CONCRETE": {
              "id": "CONCRETE",
              "name": "Concrete",
              "attenuationCoefficientsA": {
                  "passthroughCoefficient": 10,
                  "reflectionCoefficient": 0
                },
               "attenuationCoefficientsBG": {
                  "passthroughCoefficient": 10,
                  "reflectionCoefficient": 0
                },
                "fillColor": {
                   "r": 124,
                   "g": 124,
                   "b": 124
                },
                "groupId": "INDOOR_MATERIALS"
            },
            "BRICK": {
                "id": "BRICK",
                "name": "Brick",
                "attenuationCoefficientsA": {
                    "passthroughCoefficient": 14.621000289916992,
                    "reflectionCoefficient": 0
                },
                "attenuationCoefficientsBG": {
                    "passthroughCoefficient": 4.434899806976318,
                    "reflectionCoefficient": 0
                },
                "fillColor": {
                    "r": 192,
                    "g": 0,
                    "b": 0
                },
                "groupId": "INDOOR_MATERIALS"
            },
            "GLASS": {
                "id": "GLASS",
                "name": "Glass",
                "attenuationCoefficientsA": {
                    "passthroughCoefficient": 1.690600037574768,
                    "reflectionCoefficient": 0
                },
                "attenuationCoefficientsBG": {
                    "passthroughCoefficient": 0.4997999966144562,
                    "reflectionCoefficient": 0
                },
                "fillColor": {
                    "r": 128,
                    "g": 128,
                    "b": 255
                },
                "groupId": "INDOOR_MATERIALS"
            },
            "CONCRETE_COLUMN": {
                "id": "CONCRETE_COLUMN",
                "name": "Concrete Column",
                "attenuationCoefficientsA": {
                    "passthroughCoefficient": 12,
                    "reflectionCoefficient": 0
                },
                "attenuationCoefficientsBG": {
                    "passthroughCoefficient": 12,
                    "reflectionCoefficient": 0
                },
                "fillColor": {
                    "r": 102,
                    "g": 102,
                    "b": 102
                },
                "groupId": "INDOOR_MATERIALS"
            }
        },
        "obstacles": [
            {
                "type": "rectangularObstacle",
                "centerX": 13.951982,
                "centerY": 86.540337,
                "angle": 6.100074,
                "thickness": -1,
                "materialId": "CONCRETE",
                "breadth": 22.447548,
                "height": 0.6,
                "enclosingRectangle": {
                    "topLeftx": -11.223774,
                    "topLefty": -0.3,
                    "bottomRightx": 11.223774,
                    "bottomRighty": 0.3
                }
            },
            {
                "type": "rectangularObstacle",
                "centerX": 76.670029,
                "centerY": 128.087723,
                "angle": 0,
                "thickness": -1,
                "materialId": "CONCRETE",
                "breadth": 42.291063,
                "height": 0.6,
                "enclosingRectangle": {
                   "topLeftx": -21.1455315,
                   "topLefty": -0.3,
                   "bottomRightx": 21.1455315,
                   "bottomRighty": 0.3
                }
            },
            {
                "type": "rectangularObstacle",
                "centerX": 97.885132,
                "centerY": 115.556236,
                "angle": 1.570796,
                "thickness": -1,
                "materialId": "CONCRETE",
                "breadth": 25.560191,
                "height": 0.6,
                "enclosingRectangle": {
                   "topLeftx": -12.7800955,
                   "topLefty": -0.3,
                   "bottomRightx": 12.7800955,
                   "bottomRighty": 0.3
                }
            },
            {
                "type": "rectangularObstacle",
                "centerX": 130.212799,
                "centerY": 102.897919,
                "angle": 6.283185,
                "thickness": -1,
                "materialId": "CONCRETE",
                "breadth": 64.169665,
                "height": 0.6,
                "enclosingRectangle": {
                    "topLeftx": -32.0848325,
                    "topLefty": -0.3,
                    "bottomRightx": 32.0848325,
                    "bottomRighty": 0.3
                }
            },
            {
                "type": "rectangularObstacle",
                "centerX": 162.221802,
                "centerY": 143.990082,
                "angle": 1.570796,
                "thickness": -1,
                "materialId": "CONCRETE",
                "breadth": 82.042969,
                "height": 0.600006,
                "enclosingRectangle": {
                    "topLeftx": -41.0214845,
                    "topLefty": -0.300003,
                    "bottomRightx": 41.0214845,
                    "bottomRighty": 0.300003
                }
            },
            {
                "type": "rectangularObstacle",
                "centerX": 367.226288,
                "centerY": 257.553833,
                "angle": 1.570796,
                "thickness": -1,
                "materialId": "GLASS",
                "breadth": 80.924759,
                "height": 0.6,
                "enclosingRectangle": {
                    "topLeftx": -40.4623795,
                    "topLefty": -0.3,
                    "bottomRightx": 40.4623795,
                    "bottomRighty": 0.3
                }
            },
            {
                "type": "rectangularObstacle",
                "centerX": 496.440155,
                "centerY": 331.535675,
                "angle": 6.283185,
                "thickness": -1,
                "materialId": "GLASS",
                "breadth": 4.684698,
                "height": 0.6,
                "enclosingRectangle": {
                    "topLeftx": -2.342349,
                    "topLefty": -0.3,
                    "bottomRightx": 2.342349,
                    "bottomRighty": 0.3
                }
            }
        ],
        "obstacleGroupList": [
            {
                "id": "INDOOR_MATERIALS",
                "name": "Indoor Materials",
                "visible": true
            },
            {
                "id": "OUTDOOR_MATERIALS",
                "name": "Outdoor Materials",
                "visible": true
            },
            {
                "id": "OTHERS",
                "name": "Others",
                "visible": false
            }
        ]
    },
    "rfParamsPL": {
        "signalDecayInflection": -4,
        "maxAttenuationConstant": 2.5,
        "minAttenuationConstant": 1.8,
        "signaleDecaySlope": 0.08
    },
    "rfParamsSPM": {
        "signalDecayInflection": -4,
        "maxAttenuationConstant": 2.4,
        "minAttenuationConstant": 2,
        "signaleDecaySlope": 0.08
    },
    "usesSpmFile": true,
    "spmFileKey": null,
    "calibrated": true,
    "lastSensorPlacementChangeTime": 1427405086634,
    "rfParams": {
        "signalDecayInflection": -4,
        "maxAttenuationConstant": 2.4,
        "minAttenuationConstant": 2,
        "signaleDecaySlope": 0.08
    }
}
API Calls

/V5/layouts

/V5/layouts/image

/V5/layouts

/V5/layouts/image

/V5/layouts/spm

/V5/layouts

Get Layout For a Floor Location

Description This API is used to fetch the floor layout details at a location.
Users with the following roles can call this API: superuser, administrator, operator, and viewer.
Syntax
GET <Base_URL>/layouts
Sample
GET https://training.mojonetworks.com/new/webservice/v5/layouts?locationid=125

Here,

  • locationid

    The parameter takes an integer value specifying the ID of the floor location for which the layout is to be fetched. To retrieve location ID refer Location.

Request Body This API call does not require any request body parameters.
Response Body If the API call is successful, the HTTP response status is 200.
The response body contains the details of the floor layout that is being fetched at a location. The response body contains the floor layout details. The response is in the application/json format.

Set Layout for a Floor

Description This API is used to set a layout for a floor.
Users with the following roles can call this API: superuser, administrator, operator, and viewer.
Syntax
POST <Base_URL>/layouts?locationid=<value>

Here,

  • locationid

    The parameter takes an integer value specifying the ID of the location for which the layout is to be set. To retrieve location ID refer Location.

Sample
POST https://training.mojonetworks.com/new/webservice/v5/layouts?locationid=125
Request Body The request body contains the floor layout of the location, for which the layout is to be set. You must provide the appropriate value for the locationid JSON attribute.

Sample request body is as follows:

{
    "type": "floorlayout",
    "location": {
        "type": "floorlocation",
        "id": {
            "type": "locallocationid",
            "id": 6
        },
        "parentId": {
            "type": "locallocationid",
            "id": 0
        },
        "name": "Loc1",
        "accessibleToUser": true,
        "defaultLocation": false,
        "timezoneId": "Asia/Calcutta",
        "locationTag": null
    },
    "length": 10,
    "width": 15,
    "unit": "FEET"
}
Response Body If the API call is successful, the HTTP response status is 204.
The response body does not contain any other information.

Delete Layout For a Floor Location

Description This API is used to delete the layout of a location.
Users with the following roles can call this API: superuser, administrator, and operator.
Syntax
DELETE <Base_URL>/layouts?locationid=<value>

Here,

  • locationid

    The parameter takes an integer value specifying the ID of the location for which the layout is to be deleted. To retrieve location ID refer Location.

Sample
DELETE https://training.mojonetworks.com/new/webservice/v5/layouts?locationid=125
Request Body This API call does not require any request body parameters.
Response Body If the API call is successful, the HTTP response status is 204.
The response body does not contain any other information.

Get Image Attached to a Floor Location

Description This API is used to fetch the image attached to a location.
Users with the roles can call this API: superuser, administrator, operator, and viewer.
Syntax
GET <Base_URL>/layouts/image?locationid=<value>

Here,

  • locationid

    The parameter takes an integer value specifying the ID of the location for which the layout is to be fetched. To retrieve location ID refer Location.

Sample
GET https://training.mojonetworks.com/new/webservice/v5/layouts/image?locationid=125
Request Body This API call does not require any request body parameters.
Response Body If the API call is successful, the HTTP response status is 200.
The response body contains the details of the link to the image file that is to be downloaded. The link contains the system-generated key for the image loaded in the server cache for the provided location. A sample response is as follows:

webservice/sfiles?id=e4e2f7cb-57a4-46f6-a9cc-d79989f8e2e1

Attach Image to a Floor  Location

Description This API is used to attach an image to a location.
Users with the following roles can call this API: superuser, administrator, and operator.
Syntax
POST <Base_URL>/layouts/image?locationid=<value>

Here,

  • locationid

    The parameter takes an integer value specifying the ID of the location for which the layout is to be fetched. To retrieve location ID refer Location.

Sample
POST https://training.mojonetworks.com/new/webservice/v5/layouts?locationid=125
Request Body The request body accepts multipart/form-data with the key as uploadedFile.
Response Body If the API call is successful, the HTTP response status is 200.
The response body contains the details of the layout to which the image is attached. The response is in the application/json format.

Attach an SPM File to a Floor Location

Description This API is used to attach an SPM file to a location. This API is only applicable to floor layouts.
Users with the following roles can call this API: superuser, administrator, and operator.
Syntax
POST <Base_URL>/layouts/spm?locationid=<value>

Here,

  • locationid

    The parameter takes an integer value specifying the ID of the location. To retrieve location ID refer Location.

Sample
POST https://training.mojonetworks.com/new/webservice/v5/layouts/spm?locationid=125
Request Body The request body accepts multipart/form-data with the key as uploadedFile
Response Body If the API call is successful, the HTTP response status is 204.
The response body does not contain any information.