Lora-Map/Communication.md
2019-09-24 15:13:36 +02:00

854 lines
10 KiB
Markdown

# Lora-Internal-Flow 1.0.0 documentation
Internal Communication for:
* Lora-Gateway
* Lora-Map
## Table of Contents
* [Servers](#servers)
* [Channels](#channels)
<a name="servers"></a>
## Servers
<table>
<thead>
<tr>
<th>URL</th>
<th>Protocol</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td>127.0.0.1:{port}</td>
<td>mqtt</td>
<td>Lora-Broker</td>
</tr>
<tr>
<td colspan="3">
<details>
<summary>URL Variables</summary>
<table>
<thead>
<tr>
<th>Name</th>
<th>Default value</th>
<th>Possible values</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td>port</td>
<td>
1883
</td>
<td>
<ul><li>1883</li><li>8883</li></ul>
</td>
<td>Secure connection (TLS) is available through port 8883.</td>
</tr>
</tbody>
</table>
</details>
</td>
</tr>
<tr>
<td colspan="3">
<details>
<summary>Security Requirements</summary>
<table>
<thead>
<tr>
<th>Type</th>
<th>In</th>
<th>Name</th>
<th>Scheme</th>
<th>Format</th>
<th>Description</th>
</tr>
</thead>
<tbody><tr>
<td>userPassword</td>
<td></td>
<td></td>
<td></td>
<td></td>
<td><p>Using Username and Password to connect to online broker</p>
</td>
</tr></tbody>
</table>
</details>
</td>
</tr>
</tbody>
</table>
## Channels
<a name="channel-lora/data/{deviceID}"></a>
The topic on whitch the devices are shown for Tracking data.
#### Channel Parameters
##### deviceID
The ID of the streetlight.
<table>
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th>Description</th>
<th>Accepted values</th>
</tr>
</thead>
<tbody>
<tr>
<td>deviceID </td>
<td>
string</td>
<td></td>
<td><em>Any</em></td>
</tr>
</tbody>
</table>
### `subscribe` lora/data/{deviceID}
#### Message
Informs you about a Position and Status of a Tracker
##### Payload
<table>
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th>Description</th>
<th>Accepted values</th>
</tr>
</thead>
<tbody>
<tr>
<td>Bandwidth </td>
<td>
integer</td>
<td><p>Bandwidth on witch the Signal was recieved</p>
</td>
<td><em>Any</em></td>
</tr>
<tr>
<td>BatteryLevel </td>
<td>
number</td>
<td><p>Voltage of the battery from the device</p>
</td>
<td><em>Any</em></td>
</tr>
<tr>
<td>Calculatedcrc </td>
<td>
integer</td>
<td><p>The calculated CRC</p>
</td>
<td><em>Any</em></td>
</tr>
<tr>
<td>Codingrate </td>
<td>
integer</td>
<td><p>The Codingrate in witch the Signal was recieved</p>
</td>
<td><em>Any</em></td>
</tr>
<tr>
<td>Crcstatus </td>
<td>
string</td>
<td><p>Shows the CRC-Status in a Field</p>
</td>
<td><code>Ok</code>, <code>Bad</code>, <code>No</code></td>
</tr>
<tr>
<td>Frequency </td>
<td>
integer</td>
<td><p>The Frequency on that the Message was arrived</p>
</td>
<td><em>Any</em></td>
</tr>
<tr>
<td>Gps </td>
<td>
object</td>
<td><p>Gps-Data of a Message</p>
</td>
<td><em>Any</em></td>
</tr>
<tr>
<td>Gps.Fix </td>
<td>
boolean</td>
<td><p>Status of the Tracker, true if it has GPS-Signal</p>
</td>
<td><em>Any</em></td>
</tr>
<tr>
<td>Gps.Hdop </td>
<td>
number</td>
<td><p>Dislocation from GPS-Reciever</p>
</td>
<td><em>Any</em></td>
</tr>
<tr>
<td>Gps.Height </td>
<td>
number</td>
<td><p>Height of the GPS-Reciever</p>
</td>
<td><em>Any</em></td>
</tr>
<tr>
<td>Gps.LastGPSPos </td>
<td>
string</td>
<td><p>Timestamp when the GPS-Reciever has its last position</p>
</td>
<td><em>Any</em></td>
</tr>
<tr>
<td>Gps.LastLatitude </td>
<td>
number</td>
<td><p>Last Latitude of the GPS-Reciever</p>
</td>
<td><em>Any</em></td>
</tr>
<tr>
<td>Gps.LastLongitude </td>
<td>
number</td>
<td><p>Last Longitude of the GPS-Reciever</p>
</td>
<td><em>Any</em></td>
</tr>
<tr>
<td>Gps.Latitude </td>
<td>
number</td>
<td><p>Latitude of the GPS-Reciever</p>
</td>
<td><em>Any</em></td>
</tr>
<tr>
<td>Gps.Longitude </td>
<td>
number</td>
<td><p>Longitude of the GPS-Reciever</p>
</td>
<td><em>Any</em></td>
</tr>
<tr>
<td>Gps.Time </td>
<td>
string</td>
<td><p>Timestamp of the GPS-Reciever, that it gets from the Satelites</p>
</td>
<td><em>Any</em></td>
</tr>
<tr>
<td>Host </td>
<td>
string</td>
<td><p>Name of the Gateway that Recieves the Data</p>
</td>
<td><em>Any</em></td>
</tr>
<tr>
<td>Name </td>
<td>
string</td>
<td><p>Name of the GPS-Tracker, must be unique between every Device</p>
</td>
<td><em>Any</em></td>
</tr>
<tr>
<td>PacketRssi </td>
<td>
number</td>
<td><p>Recieve Signal Strength Index for the whole LORA-Messgae</p>
</td>
<td><em>Any</em></td>
</tr>
<tr>
<td>Receivedtime </td>
<td>
string</td>
<td><p>Timestamp of the Gateway, when it recieves the LORA-Message</p>
</td>
<td><em>Any</em></td>
</tr>
<tr>
<td>Recieverinterface </td>
<td>
integer</td>
<td><p>Internal virtual Radio of the Gateway, witch recieves the LORA-Messange</p>
</td>
<td><em>Any</em></td>
</tr>
<tr>
<td>Recieverradio </td>
<td>
integer</td>
<td><p>Internal Radio of the Gateway, witch recieves the LORA-Messange</p>
</td>
<td><em>Any</em></td>
</tr>
<tr>
<td>Rssi </td>
<td>
number</td>
<td><p>Recieve Signal Strength Index for the LORA-Message</p>
</td>
<td><em>Any</em></td>
</tr>
<tr>
<td>Snr </td>
<td>
number</td>
<td><p>Signal to Noise Ratio of the LORA-Message</p>
</td>
<td><em>Any</em></td>
</tr>
<tr>
<td>Snrmax </td>
<td>
number</td>
<td><p>Maximum Signal to Noise Ratio of the LORA-Message</p>
</td>
<td><em>Any</em></td>
</tr>
<tr>
<td>Snrmin </td>
<td>
number</td>
<td><p>Minimum Signal to Noise Ratio of the LORA-Message</p>
</td>
<td><em>Any</em></td>
</tr>
<tr>
<td>Spreadingfactor </td>
<td>
integer</td>
<td><p>The Spreadingfactor of the LORA-Message</p>
</td>
<td><em>Any</em></td>
</tr>
<tr>
<td>Time </td>
<td>
integer</td>
<td><p>Internal Timecounter of the LORA-Reciever</p>
</td>
<td><em>Any</em></td>
</tr>
</tbody>
</table>
###### Example of payload _(generated)_
```json
{
"Bandwidth": 7800,
"BatteryLevel": 2.5,
"Calculatedcrc": 0,
"Codingrate": 5,
"Crcstatus": "Ok",
"Frequency": 0,
"Gps": {
"Fix": true,
"Hdop": 0.8,
"Height": 0,
"LastGPSPos": "01/01/2019 12:00:00",
"LastLatitude": 50.7,
"LastLongitude": 7.2,
"Latitude": 50.7,
"Longitude": 7.2,
"Time": "01/01/2019 12:00:00"
},
"Host": "string",
"Name": "string",
"PacketRssi": 0,
"Receivedtime": "01/01/2019 12:00:00",
"Recieverinterface": 0,
"Recieverradio": 0,
"Rssi": 0,
"Snr": 0,
"Snrmax": 0,
"Snrmin": 0,
"Spreadingfactor": 7,
"Time": 0
}
```
<a name="channel-smartylighting/streetlights/1/0/action/{streetlightId}/dim"></a>
#### Channel Parameters
##### streetlightId
The ID of the streetlight.
<table>
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th>Description</th>
<th>Accepted values</th>
</tr>
</thead>
<tbody>
<tr>
<td>streetlightId </td>
<td>
string</td>
<td></td>
<td><em>Any</em></td>
</tr>
</tbody>
</table>
### `publish` smartylighting/streetlights/1/0/action/{streetlightId}/dim
#### Message
Command a particular streetlight to dim the lights.
##### Payload
<table>
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th>Description</th>
<th>Accepted values</th>
</tr>
</thead>
<tbody>
<tr>
<td>percentage </td>
<td>
integer</td>
<td><p>Percentage to which the light should be dimmed to.</p>
</td>
<td><em>Any</em></td>
</tr>
<tr>
<td>sentAt </td>
<td>
string</td>
<td><p>Date and time when the message was sent.</p>
</td>
<td><em>Any</em></td>
</tr>
</tbody>
</table>
###### Example of payload _(generated)_
```json
{
"percentage": 0,
"sentAt": "2019-09-24T12:10:43Z"
}
```