bt-sensors-plugin-sk
Version:
Bluetooth Sensors for Signalk - see https://www.npmjs.com/package/bt-sensors-plugin-sk#supported-sensors for a list of supported sensors
942 lines (906 loc) • 28.3 kB
JSON
{
"type": "object",
"$schema": "http://json-schema.org/draft-04/schema#",
"id": "https://signalk.org/specification/1.5.1/schemas/definitions.json#",
"title": "definitions",
"description": "Reusable definitions of core object types",
"definitions": {
"timestamp": {
"type": "string",
"description": "RFC 3339 (UTC only without local offset) string representing date and time.",
"units": "RFC 3339 (UTC)",
"example": "2014-04-10T08:33:53Z",
"format": "date-time",
"pattern" : ".*Z$"
},
"source": {
"type": "object",
"description": "Source of data in delta format, a record of where the data was received from. An object containing at least the properties defined in 'properties', but can contain anything beyond that.",
"required": [
"label"
],
"properties": {
"label": {
"type": "string",
"description": "A label to identify the source bus, eg serial-COM1, eth-local,etc . Can be anything but should follow a predicatable format",
"example": "N2K-1"
},
"type": {
"type": "string",
"description": "A human name to identify the type. NMEA0183, NMEA2000, signalk",
"default": "NMEA2000",
"example": "NMEA2000"
},
"src": {
"type": "string",
"description": "NMEA2000 src value or any similar value for encapsulating the original source of the data",
"example": "36"
},
"canName": {
"type": "string",
"description": "NMEA2000 can name of the source device",
"example": "13877444229283709432"
},
"pgn": {
"type": "number",
"description": "NMEA2000 pgn of the source message",
"example": "130312"
},
"instance": {
"type": "string",
"description": "NMEA2000 instance value of the source message"
},
"sentence": {
"type": "string",
"description": "Sentence type of the source NMEA0183 sentence, $GP[RMC],092750.000,A,5321.6802,N,00630.3372,W,0.02,31.66,280511,,,A*43",
"example": "RMC"
},
"talker": {
"type": "string",
"description": "Talker id of the source NMEA0183 sentence, $[GP]RMC,092750.000,A,5321.6802,N,00630.3372,W,0.02,31.66,280511,,,A*43",
"example": "GP"
},
"aisType": {
"type": "number",
"multipleOf" : 1,
"minimum": 1,
"maximum": 27,
"description": "AIS Message Type",
"example":"15"
}
}
},
"sourceRef": {
"type": "string",
"pattern": "^[A-Za-z0-9-_.]*$",
"description": "Reference to the source under /sources. A dot spearated path to the data. eg [type].[bus].[device]",
"example": "NMEA0183.COM1.GP"
},
"version": {
"type": "string",
"description": "Version of the Signal K schema/APIs used by the root object.",
"pattern": "^[0-9]{1,3}[.][0-9]{1,2}[.][0-9]{1,2}($|-[a-zA-Z0-9]+$)",
"example": "1.5.0"
},
"units": {
"type": "string",
"description": "Allowed units of physical quantities. Units should be (derived) SI units where possible.",
"properties": {
"s": {
"display": "s",
"quantity": "Time",
"quantityDisplay": "t",
"description": "Elapsed time (interval) in seconds"
},
"Hz": {
"display": "Hz",
"quantity": "Frequency",
"quantityDisplay": "f",
"description": "Frequency in Hertz"
},
"m3": {
"display": "m\u00b3",
"quantity": "Volume",
"quantityDisplay": "V",
"description": "Volume in cubic meters"
},
"m3/s": {
"display": "m\u00b3/s",
"quantity": "Flow",
"quantityDisplay": "Q",
"description": "Liquid or gas flow in cubic meters per second"
},
"kg/s": {
"display": "kg/s",
"quantity": "Mass flow rate",
"quantityDisplay": "\u1e41",
"description": "Liquid or gas flow in kilograms per second"
},
"kg/m3": {
"display": "kg/m\u00b3",
"quantity": "Density",
"quantityDisplay": "\u03c1",
"description": "Density in kg per cubic meter"
},
"deg": {
"display": "\u00b0",
"quantity": "Angle",
"quantityDisplay": "\u2220",
"description": "Latitude or longitude in decimal degrees"
},
"rad": {
"display": "\u33ad",
"quantity": "Angle",
"quantityDisplay": "\u2220",
"description": "Angular arc in radians"
},
"rad/s": {
"display": "\u33ad/s",
"quantity": "Rotation",
"quantityDisplay": "\u03c9",
"description": "Angular rate in radians per second"
},
"A": {
"display": "A",
"quantity": "Current",
"quantityDisplay": "I",
"description": "Electrical current in ampere"
},
"C": {
"display": "C",
"quantity": "Charge",
"quantityDisplay": "Q",
"description": "Electrical charge in Coulomb"
},
"V": {
"display": "V",
"quantity": "Voltage",
"quantityDisplay": "V",
"description": "Electrical potential in volt"
},
"W": {
"display": "W",
"quantity": "Power",
"quantityDisplay": "P",
"description": "Power in watt"
},
"Nm": {
"display": "Nm",
"quantity": "Torque",
"quantityDisplay": "\u03c4",
"description": "Torque in Newton meter"
},
"J": {
"display": "J",
"quantity": "Energy",
"quantityDisplay": "E",
"description": "Electrical energy in joule"
},
"ohm": {
"display": "\u2126",
"quantity": "Resistance",
"quantityDisplay": "R",
"description": "Electrical resistance in ohm"
},
"m": {
"display": "m",
"quantity": "Distance",
"quantityDisplay": "d",
"description": "Distance in meters"
},
"m/s": {
"display": "m/s",
"quantity": "Speed",
"quantityDisplay": "v",
"description": "Speed in meters per second"
},
"m2": {
"display": "\u33a1",
"quantity": "Area",
"quantityDisplay": "A",
"description": "(Surface) area in square meters"
},
"K": {
"display": "K",
"quantity": "Temperature",
"quantityDisplay": "T",
"description": "Temperature in kelvin"
},
"Pa": {
"display": "Pa",
"quantity": "Pressure",
"quantityDisplay": "P",
"description": "Pressure in pascal"
},
"kg": {
"display": "kg",
"quantity": "Mass",
"quantityDisplay": "m",
"description": "Mass in kilogram"
},
"ratio": {
"display": "",
"quantity": "Ratio",
"quantityDisplay": "\u03c6",
"description": "Relative value compared to reference or normal value. 0 = 0%, 1 = 100%, 1e-3 = 1 ppt"
},
"m/s2": {
"display": "m/s\u00b2",
"quantity": "Acceleration",
"quantityDisplay": "a",
"description": "Acceleration in meters per second squared"
},
"rad/s2": {
"display": "rad/s\u00b2",
"quantity": "Angular acceleration",
"quantityDisplay": "a",
"description": "Angular acceleration in radians per second squared"
},
"N": {
"display": "N",
"quantity": "Force",
"quantityDisplay": "F",
"description": "Force in newton"
},
"T": {
"display": "T",
"quantity": "Magnetic field",
"quantityDisplay": "B",
"description": "Magnetic field strength in tesla"
},
"Lux": {
"display": "lx",
"quantity": "Light Intensity",
"quantityDisplay": "Ev",
"description": "Light Intensity in lux"
},
"Pa/s": {
"display": "Pa/s",
"quantity": "Pressure rate",
"quantityDisplay": "R",
"description": "Pressure change rate in pascal per second"
},
"Pa.s": {
"display": "Pa s",
"quantity": "Viscosity",
"quantityDisplay": "\u03bc",
"description": "Viscosity in pascal seconds"
}
}
},
"mmsi": {
"type": "string",
"description": "Maritime Mobile Service Identity (MMSI). Has to be 9 digits. See http://en.wikipedia.org/wiki/Maritime_Mobile_Service_Identity for information.",
"pattern": "^[2-7][0-9]{8}$",
"example": "503123456"
},
"aircraftMmsi": {
"type": "string",
"description": "Maritime Mobile Service Identity (MMSI) for aircraft. Has to be 9 digits. See http://en.wikipedia.org/wiki/Maritime_Mobile_Service_Identity for information.",
"pattern": "^1[0-9]{8}$",
"example": "103123456"
},
"atonMmsi": {
"type": "string",
"description": "Maritime Mobile Service Identity (MMSI) for . Has to be 9 digits. See http://en.wikipedia.org/wiki/Maritime_Mobile_Service_Identity for information.",
"pattern": "^99[0-9]{7}$",
"example": "993123456"
},
"sarMmsi": {
"type": "string",
"description": "Maritime Mobile Service Identity (MMSI) for . Has to be 9 digits. See http://en.wikipedia.org/wiki/Maritime_Mobile_Service_Identity for information.",
"pattern": "^97[0-9]{7}$",
"example": "973123456"
},
"uuid": {
"type": "string",
"description": "A unique Signal K flavoured maritime resource identifier (MRN). A MRN is a form of URN, following a specific format: urn:mrn:<issueing authority>:<id type>:<id>. In case of a Signal K uuid, that looks like this: urn:mrn:signalk:uuid:<uuid>, where Signal K is the issuing authority and UUID (v4) the ID type.",
"pattern": "^urn:mrn:signalk:uuid:[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-4[0-9A-Fa-f]{3}-[89ABab][0-9A-Fa-f]{3}-[0-9A-Fa-f]{12}$",
"example": "urn:mrn:signalk:uuid:b7590868-1d62-47d9-989c-32321b349fb9"
},
"url": {
"type": "string",
"description": "A location of a resource, potentially relative. For hierarchical schemes (like http), applications must resolve relative URIs (e.g. './v1/api/'). Implementations should support the following schemes: http:, https:, mailto:, tel:, and ws:.",
"example": "http://localhost:8080/signalk/v1/api/vessels/self/environment"
},
"commonValueFields": {
"type": "object",
"required": ["timestamp", "$source"],
"properties": {
"timestamp": {
"$ref": "#/definitions/timestamp"
},
"$source": {
"$ref": "#/definitions/sourceRef"
},
"_attr": {
"$ref": "#/definitions/_attr"
},
"meta": {
"$ref": "#/definitions/meta"
},
"pgn": {
"type": "number"
},
"sentence": {
"type": "string"
}
}
},
"numberValue": {
"type": "object",
"description": "Data should be of type number.",
"allOf": [{
"$ref": "#/definitions/commonValueFields"
}, {
"properties": {
"value": {
"type": "number"
},
"values": {
"type": "object",
"patternProperties": {
".*": {
"$ref": "#/definitions/valuesNumberValue"
}
}
}
}
}]
},
"valuesNumberValue": {
"type": "object",
"properties": {
"value": {
"type": "number"
},
"timestamp": {
"$ref": "#/definitions/timestamp"
},
"pgn": {
"type": "number"
},
"sentence": {
"type": "string"
}
}
},
"stringValue": {
"type": "object",
"description": "Data should be of type number.",
"allOf": [{
"$ref": "#/definitions/commonValueFields"
}, {
"properties": {
"value": {
"type": "string"
},
"values": {
"type": "object",
"patternProperties": {
".*": {
"$ref": "#/definitions/valuesStringValue"
}
}
}
}
}]
},
"valuesStringValue": {
"type": "object",
"properties": {
"value": {
"type": "string"
},
"timestamp": {
"$ref": "#/definitions/timestamp"
},
"pgn": {
"type": "number"
},
"sentence": {
"type": "string"
}
}
},
"datetimeValue": {
"type": "object",
"description": "Data should be of type number.",
"allOf": [{
"$ref": "#/definitions/commonValueFields"
}, {
"properties": {
"value": {
"type": "string",
"format": "date-time"
},
"values": {
"type": "object",
"patternProperties": {
".*": {
"$ref": "#/definitions/valuesDatetimeValue"
}
}
}
}
}]
},
"valuesDatetimeValue": {
"type": "object",
"properties": {
"value": {
"type": "string",
"format": "date-time"
},
"timestamp": {
"$ref": "#/definitions/timestamp"
},
"pgn": {
"type": "number"
},
"sentence": {
"type": "string"
}
}
},
"nullValue": {
"type": "object",
"description": "Data should be of type NULL.",
"properties": {
"value": {
"type": "null"
},
"timestamp": {
"$ref": "#/definitions/timestamp"
},
"source": {
"$ref": "#/definitions/source"
},
"_attr": {
"$ref": "#/definitions/_attr"
},
"meta": {
"$ref": "#/definitions/meta"
}
}
},
"_attr": {
"type": "object",
"title": "_attr schema.",
"description": "Filesystem specific data, e.g. security, possibly more later.",
"properties": {
"_mode": {
"type": "integer",
"title": "_mode schema.",
"description": "Unix style permissions, often written in `owner:group:other` form, `-rw-r--r--`",
"default": 644
},
"_owner": {
"type": "string",
"title": "_owner schema.",
"description": "The owner of this resource.",
"default": "self"
},
"_group": {
"type": "string",
"title": "_group schema.",
"description": "The group owning this resource.",
"default": "self"
}
}
},
"alarmState": {
"type": "string",
"title": "alarmState",
"description": "The alarm state when the value is in this zone.",
"default": "normal",
"enum": [
"nominal",
"normal",
"alert",
"warn",
"alarm",
"emergency"
]
},
"alarmMethodEnum": {
"enum": [
"visual",
"sound"
]
},
"meta": {
"type": "object",
"title": "Meta schema.",
"description": "Provides meta data to enable alarm and display configuration.",
"required": ["description"],
"properties": {
"displayName": {
"type": "string",
"title": "DisplayName schema.",
"description": "A display name for this value. This is shown on the gauge and should not include units.",
"example": "Tachometer, Engine 1"
},
"longName": {
"type": "string",
"title": "LongName schema.",
"description": "A long name for this value.",
"example": "Tachometer, Engine 1"
},
"shortName": {
"type": "string",
"title": "ShortName schema.",
"description": "A short name for this value.",
"example": "Tacho 1"
},
"description": {
"type": "string",
"title": "Description schema.",
"description": "Description of the SK path.",
"example": "Engine revolutions (x60 for RPM)"
},
"enum": {
"type": "array",
"title": "Permissible values",
"description": "List of permissible values",
"example": ["stopped", "started", "unusable"]
},
"properties": {
"type": "object",
"title": "Properties for object valued properties",
"patternProperties": {
".*": {
"type": "object",
"properties": {
"type": {
"type": "string"
},
"title": {
"type": "string"
},
"description": {
"type": "string"
},
"units": {
"type": "string"
},
"example": {
"type": [
"string",
"number",
"boolean",
"object"
]
}
}
}
}
},
"gaugeType": {
"type": "string",
"title": "gaugeType schema.",
"description": "gaugeType is deprecated. The type of gauge necessary to display this value.",
"example": "sparkline"
},
"displayScale": {
"type": "object",
"title": "Scale to display.",
"description": "Gives details of the display scale against which the value should be displayed",
"properties": {
"lower": {
"type": "number",
"title": "Display lower limit.",
"description": "The suggested lower limit for the pointer (or equivalent) on the display",
"example": 0
},
"upper": {
"type": "number",
"title": "Display upper limit.",
"description": "The suggested upper limit for the pointer (or equivalent) on the display",
"example": 4000
},
"type": {
"type": "string",
"enum": [
"linear",
"logarithmic",
"squareroot",
"power"
],
"title": "Scale type used on the display.",
"description": "The suggested type of scale to use",
"example": "logarithmic"
},
"power": {
"type": "number",
"title": "Selected power for display scale",
"description": "The power to use when the displayScale/type is set to 'power'. Can be any numeric value except zero.",
"example": 2
}
},
"oneOf": [
{
"required": [
"lower",
"upper"
],
"properties": {
"lower": {},
"upper": {}
},
"additionalProperties": false
},
{
"required": [
"lower",
"upper",
"type"
],
"properties": {
"lower": {},
"upper": {},
"type": {
"enum": [
"linear",
"squareroot",
"logarithmic"
]
}
},
"additionalProperties": false
},
{
"required": [
"lower",
"upper",
"type",
"power"
],
"properties": {
"lower": {},
"upper": {},
"type": {
"enum": [
"power"
]
},
"power": {}
},
"additionalProperties": false
}
]
},
"units": {
"type": "string",
"title": "units schema.",
"description": "The (derived) SI unit of this value.",
"example": "m/s"
},
"timeout": {
"type": "number",
"title": "Timeout",
"description": "The timeout in (fractional) seconds after which this data is invalid.",
"example": 2
},
"alertMethod": {
"type": "array",
"title": "Alert Method",
"description": "The method to use to raise the alert. An alert is an event that should be known",
"default": ["visual"],
"items": {
"$ref": "#/definitions/alarmMethodEnum"
}
},
"warnMethod": {
"type": "array",
"title": "Warn Method",
"description": "The method to use to raise the warning. A warning is an unexpected event that may require attention",
"default": ["visual"],
"items": {
"$ref": "#/definitions/alarmMethodEnum"
}
},
"alarmMethod": {
"type": "array",
"title": "Alarm Method",
"description": "The method to use to raise the alarm. An alarm requires immediate attention, eg no oil pressure",
"default": ["visual", "sound"],
"items": {
"$ref": "#/definitions/alarmMethodEnum"
}
},
"emergencyMethod": {
"type": "array",
"title": "Emergency Method",
"description": "The method to use to raise an emergency. An emergency is an immediate danger to life or vessel",
"default": ["visual", "sound"],
"items": {
"$ref": "#/definitions/alarmMethodEnum"
}
},
"zones": {
"type": "array",
"title": "Zones schema.",
"description": "The zones defining the range of values for this signalk value.",
"items": {
"type": "object",
"title": "zone",
"description": "A zone used to define the display and alarm state when the value is in between bottom and top.",
"required": ["state"],
"properties": {
"lower": {
"id": "lower",
"type": "number",
"title": "Lower",
"description": "The lowest number in this zone",
"name": "lower",
"example": 3500
},
"upper": {
"id": "upper",
"type": "number",
"title": "Upper",
"description": "The highest value in this zone",
"name": "upper",
"example": 4000
},
"state": {
"$ref": "#/definitions/alarmState"
},
"message": {
"id": "message",
"type": "string",
"title": "message",
"description": "The message to display for the alarm.",
"default": "Warning"
}
}
}
}
}
},
"geohash": {
"type": "string",
"description": "A geohash (see http://geohash.org)",
"pattern": "^[0-9A-Za-z:]{1,}$",
"example": "eg rbe:TasmanBay"
},
"position": {
"type": "object",
"title": "position",
"description": "The position in 3 dimensions",
"allOf": [
{
"$ref": "#/definitions/commonValueFields"
},
{
"properties": {
"value": {
"type": "object",
"required": [
"latitude",
"longitude"
],
"properties": {
"longitude": {
"type": "number",
"description": "Longitude",
"units": "deg",
"example": 4.98765245
},
"latitude": {
"type": "number",
"description": "Latitude",
"units": "deg",
"example": 52.0987654
},
"altitude": {
"type": "number",
"description": "Altitude",
"units": "m"
}
}
},
"values": {
"type": "object",
"patternProperties": {
".*": {
"type": "object",
"properties": {
"timestamp": {
"$ref": "#/definitions/timestamp"
},
"pgn": {
"type": "number"
},
"sentence": {
"type": "string"
},
"value": {
"type": "object",
"properties": {
"longitude": {
"type": "number",
"description": "Longitude",
"units": "deg",
"example": 4.98765245
},
"latitude": {
"type": "number",
"description": "Latitude",
"units": "deg",
"example": 52.0987654
},
"altitude": {
"type": "number",
"description": "Altitude",
"units": "m"
}
}
}
}
}
}
}
}
}
]
},
"waypoint": {
"type": "object",
"description": "A waypoint, an object with a signal k position object, and GeoJSON Feature object (see geojson.org, and https://github.com/fge/sample-json-schemas/tree/master/geojson)",
"properties": {
"position": {
"$ref": "#/definitions/position"
},
"feature": {
"title": "Feature",
"description": "A Geo JSON feature object",
"required": [
"geometry",
"properties"
],
"properties": {
"type": {
"enum": [
"Feature"
]
},
"geometry": {
"title": "Point",
"properties": {
"type": {
"enum": [
"Point"
]
},
"coordinates": {
"description": "A single position, in x,y order (Lon, Lat)",
"type": "array",
"minItems": 2,
"items": [{
"type": "number"
}, {
"type": "number"
}],
"additionalItems": false
}
}
},
"properties": {
"type": [
"object",
"null"
],
"description": "Additional data of any type",
"additionalProperties": true
},
"id": {
"FIXME": "may be there, type not known (string? number?)"
}
}
}
}
}
}
}