Move docs to seperate repo

This commit is contained in:
DTTerastar 2021-09-05 07:29:18 -04:00
parent bbfd5bb8fc
commit 3229e85300
19 changed files with 0 additions and 409 deletions

BIN
.DS_Store vendored

Binary file not shown.

View File

@ -1 +0,0 @@
theme: jekyll-theme-cayman

View File

@ -1,30 +0,0 @@
# Tracking an Android phone
<img src="./images/beacon_scope_android.jpg" style="float:right;margin:24px;width:200px">
It is possible to track your Android phone by installing a simple beacon broadcasting app. I have the best results from the [Beacon Scope](https://play.google.com/store/apps/details?id=com.davidgyoungtech.beaconscanner) app. You may also want to try [Beacon Simulator](https://play.google.com/store/apps/details?id=net.alea.beaconsimulator), although I've experienced some issues with it.
### Setup
You can use any iBeacon UUID in the app. Whatever you choose, ensure that it matches exactly with your entry in the Home Assistant configuration, including both the `major` and `minor` version numbers. An example phone configuration could be:
```
device ID: 2ec29f7da28e45eeadf491713bbe7948
major version number: 1
minor version number: 0
```
and the corresponding Home Assistant configuration would be:
```yaml
- platform: mqtt_room
device_id: "2ec29f7da28e45eeadf491713bbe7948-1-0"
name: 'Phone bt_room'
state_topic: 'room_presence'
timeout: 10
away_timeout: 15
```
### Why an App?
Both Android and iPhone use a strategy of [Bluetooth MAC address randomization](https://source.android.com/devices/tech/connect/wifi-mac-randomization) to prevent tracking. While this may not be a perfect solution, it means that the publicly-available bluetooth MAC address of your phone won't be consistent to devices with which it has not bee paired. As we're using Bluetooth Low Energy to scan, we don't want to pair the device. Thus, the need for an app to allow us to track.
### Known Issues
With the release of advanced battery management, Android now has a habit of killing background processes. This means that you may not be able to track your phone consistently. I have yet to find a solution for this problem - if you know of one, please open an issue.
### Troubleshooting
See the [troubleshooting page](./troubleshooting) for some strategies to help debug problems.

View File

@ -1,21 +0,0 @@
# Tracking Hardware
## Beacons
Generic beacon hardware should be compatible, provided it meets a beacon standard (such as iBeacon or Eddystone). There are plenty of generic beacons available from sellers such as:
* [Amazon](https://www.amazon.ca/gp/product/B07S3DQM6N/ref=as_li_tl?ie=UTF8&camp=15121&creative=330641&creativeASIN=B07S3DQM6N&linkCode=as2&tag=ptrsnja-20&linkId=2f55c80199c88db853bd583182384f50) - generic iBeacon
* [eBay](https://www.ebay.com/sch/i.html?_nkw=nrf51822+ibeacon)
* [Ali Express](https://www.aliexpress.com/wholesale?SearchText=nrf51822+ibeacon).
## configuration.yaml
Here is an example of how an entry into your `configuration.yaml` file should look:
```yaml
sensor:
# One entry for each beacon you want to track
- platform: mqtt_room
device_id: "fda50693a4e24fb1afcfc6eb07647825-5-0" # Note that major version must match, but any minor version will be ignored
name: 'iBeacon Room Presence'
state_topic: 'room_presence'
timeout: 60
away_timeout: 120
```

View File

@ -1,29 +0,0 @@
# Generic BLE Hardware
Here is a list of devices known to be "trackable":
* MiFlora plant sensor
* MiBand 2 Fitness tracker
* [Puck-JS](https://www.espruino.com/Puck.js), if programmed to [broadcast beacon packets](https://gist.github.com/jptrsn/d6cb9b9cdbcd41f3500708f8b694cad2 "An example project to broadcast iBeacon packets")
#### Add to the list
If you have a different BLE-enabled piece of hardware that you have gotten to work with this project, please let me know about it! You can [open an issue](https://github.com/jptrsn/ESP32-mqtt-room/issues/new) or just submit a pull request to update the documentation right in the repository!
## Device ID
To track generic BLE advertisements, you will need to know the hardware MAC address of the device. You can use an app on your smart phone to scan for and identify the correct device - I recommend [NRF Connect](https://play.google.com/store/apps/details?id=no.nordicsemi.android.mcp) from [Nordic Semiconductor](https://play.google.com/store/apps/dev?id=7265678888812659353) for Android (and I believe there is an iOS version as well).
Alternatively, you can subscribe to the `room_presence` topic and view what devices are being reported there. Note that modern smart phones will randomize their hardware MAC address when broadcasting advertisements, so you must use a beacon app to track your phone (see the [section on tracking phones](./android) for more information).
To track the device, specify the `device_id` entry as the hardware MAC address, without the colons.
## configuration.yaml
Here is an example of how an entry into your `configuration.yaml` file should look:
```yaml
sensor:
# One entry for each beacon you want to track
- platform: mqtt_room
device_id: C80F104DC7EB # Match the Bluetooth MAC address of the device
name: 'Mi Band'
state_topic: 'room_presence'
timeout: 60
away_timeout: 120
```

View File

@ -1,35 +0,0 @@
# Home Assistant Configuration
Once the ESP32 is running, it is important to configure Home Assistant to use the information from the MQTT topic to determine what devices to track. You can read the full documentation [on the Home Assistant website](https://www.home-assistant.io/components/sensor.mqtt_room/). It is critical that you configure your device IDs to include the Major and Minor versions, in the format `{{beacon uuid}}-{{major}}-{{minor}}`
To obtain a `{{beacon uuid}}-{{major}}-{{minor}}`, you need to setup a beacon following one of the guides:
- [Android](./android.md)
- [Beacons](./beacons.md)
- [generic_ble](./generic_ble.md)
### configuration.yaml
Here is an example of how an entry into your `configuration.yaml` file should look:
```yaml
sensor:
# One entry for each beacon you want to track
- platform: mqtt_room
device_id: "fda50693a4e24fb1afcfc6eb07647825-5-0" # Note that major version must match, but any minor version will be ignored
name: 'ESPresense Presence'
state_topic: 'espresense/rooms'
timeout: 60
away_timeout: 120
binary_sensor:
# One entry per sensor node to understand when the device is online/offline and see device metadata such as IP address and settings values
- platform: mqtt
name: ESP32 A
state_topic: "espresense/rooms/esp32_a/status"
json_attributes_topic: "espresense/rooms/esp32_a/telemetry"
payload_on: "online"
payload_off: "offline"
device_class: connectivity
```
Binary sensor with telemetry in the lovelace UI:
![Binary sensor with telemetry](./images/binary_sensor_with_telemetry.jpg)

Binary file not shown.

Before

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 122 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.0 KiB

View File

@ -1,92 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="86.877335"
height="84.732979"
viewBox="0 0 22.986294 22.418934"
version="1.1"
id="svg8"
inkscape:version="0.92.2 (5c3e80d, 2017-08-06)"
sodipodi:docname="github.svg">
<defs
id="defs2">
<clipPath
id="clipPath4522"
clipPathUnits="userSpaceOnUse">
<path
inkscape:connector-curvature="0"
id="path4520"
d="M 0,551.986 H 530.973 V 0 H 0 Z" />
</clipPath>
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="1.979899"
inkscape:cx="113.70459"
inkscape:cy="105.10844"
inkscape:document-units="mm"
inkscape:current-layer="g4518"
showgrid="false"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0"
units="px"
inkscape:window-width="1075"
inkscape:window-height="844"
inkscape:window-x="3522"
inkscape:window-y="1188"
inkscape:window-maximized="0" />
<metadata
id="metadata5">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-188.42446,-272.9616)">
<g
transform="matrix(0.35277777,0,0,-0.35277777,75.675598,316.02397)"
inkscape:label="GitHub-Mark"
id="g4512">
<g
id="g4516">
<g
clip-path="url(#clipPath4522)"
id="g4518">
<g
transform="matrix(2,0,0,2,352.17908,122.06657)"
id="g4524">
<path
inkscape:connector-curvature="0"
id="path4526"
style="fill:#1b1817;fill-opacity:1;fill-rule:evenodd;stroke:none"
d="m 0,0 c -8.995,0 -16.288,-7.293 -16.288,-16.29 0,-7.197 4.667,-13.302 11.14,-15.457 0.815,-0.149 1.112,0.354 1.112,0.786 0,0.386 -0.014,1.411 -0.022,2.77 -4.531,-0.984 -5.487,2.184 -5.487,2.184 -0.741,1.881 -1.809,2.382 -1.809,2.382 -1.479,1.011 0.112,0.991 0.112,0.991 1.635,-0.116 2.495,-1.679 2.495,-1.679 1.453,-2.489 3.813,-1.77 4.741,-1.354 0.148,1.053 0.568,1.771 1.034,2.178 -3.617,0.411 -7.42,1.809 -7.42,8.051 0,1.778 0.635,3.232 1.677,4.371 -0.168,0.412 -0.727,2.068 0.159,4.311 0,0 1.368,0.438 4.48,-1.67 1.299,0.361 2.693,0.542 4.078,0.548 1.383,-0.006 2.777,-0.187 4.078,-0.548 3.11,2.108 4.475,1.67 4.475,1.67 0.889,-2.243 0.33,-3.899 0.162,-4.311 1.044,-1.139 1.675,-2.593 1.675,-4.371 0,-6.258 -3.809,-7.635 -7.438,-8.038 0.585,-0.503 1.106,-1.497 1.106,-3.017 0,-2.177 -0.02,-3.934 -0.02,-4.468 0,-0.436 0.293,-0.943 1.12,-0.784 6.468,2.159 11.131,8.26 11.131,15.455 C 16.291,-7.293 8.997,0 0,0" />
</g>
</g>
</g>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 856 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

View File

@ -1,78 +0,0 @@
![Cover Image](./images/cover.png)
An ESP32 based presence detection node for use with the [Home Assistant](https://www.home-assistant.io/) [`mqtt_room` component](https://www.home-assistant.io/components/sensor.mqtt_room/) for localized device presence detection.
# Contents
1. [Requirements](#requirements)
2. [Getting Started](#getting-started)
1. [Flashing the Hardware](#flashing-the-hardware)
2. [Define Settings](#define-your-settings)
3. [Flashing the device via USB](#flashing-the-device-via-usb)
4. [Flashing/updating via OTA](#flashing-via-ota)
3. [Home Assistant Configuration](#home-assistant-configuration)
4. [Trackable Devices](#trackable-devices)
1. [Beacons](#beacons)
2. [Generic BLE Devices](#generic-ble-devices)
3. [Android Phones](#tracking-android-phone)
4. [iPhones](#tracking-iphone)
5. [Sensors](#sensors)
6. [Credits](#credits)
7. [Troubleshooting](#troubleshooting)
8. [Release Notes](#release-notes)
## Requirements
You're going to need the following items:
* An [ESP32 development board](https://www.amazon.ca/gp/product/B07F1GWJ1N/ref=as_li_tl?ie=UTF8&camp=15121&creative=330641&creativeASIN=B07F1GWJ1N&linkCode=as2&tag=ptrsnja-20&linkId=7ccc8364c8a8961ac9053e03efa91268)
* A running instance of [Home Assistant](https://www.homeassistant.io)
* The [Atom](https://ide.atom.io/) IDE with the [PlatformIO](https://docs.platformio.org/en/latest/ide/atom.html) package installed.
* A [Bluetooth Low Energy beacon](https://www.amazon.ca/gp/product/B07S3DQM6N/ref=as_li_tl?ie=UTF8&camp=15121&creative=330641&creativeASIN=B07S3DQM6N&linkCode=as2&tag=ptrsnja-20&linkId=2f55c80199c88db853bd583182384f50) (either iBeacon or EddyStone), or
* An Android phone with a beacon app installed.
## Getting Started
### Flashing the Hardware
You can get started by cloning this repository to your local machine using git. Alternatively, you can [download the zip](https://github.com/jptrsn/ESP32-mqtt-room/archive/master.zip). To get the code onto your device, thanks to some great work by [kylegordon](https://github.com/kylegordon), you can now build and upload using PlatformIO.
### Define your settings
Create a copy of the `Settings.h` file, and rename it to `Settings_local.h` or something similar. Any variation of the name `Settings` followed by an underscore will be ignored by git. This will allow you to set your own configuration without the risk of any commits to the repository of sensitive information. It can also be helpful to keep a settings file for each device you will run, as they will differ.
### Flashing the device via USB
Open the project folder in Atom, using the `open project` option in the PlatformIO Home screen. Modify the settings in the `Settings_local.h` file to match your environment. Set the correct port in the `platformio.ini` file (or remove the line to use auto-detection), and upload to the board. Open the serial monitor after successful upload to check for success.
### Flashing via OTA
It is possible to update the device using "Over the Air" (OTA) updates from the command line interface of PlatformIO. You will need to know the IP address of the device itself (check your router). From the command line, enter the command `platformio run -t upload --upload-port {{Device IP Address}}`. During the update process, you will see the on-board LED blinking slowly. Once the update has completed, you should see the device reconnect and update its telemetry.
## Home Assistant Configuration
See the section on [configuring Home Assistant](./home_assistant).
## Trackable Devices
### Beacons
See the section on [tracking beacons](./beacons)
### Generic BLE Devices
Some other devices that advertise as BLE (such as the Mi Flora plant sensors or the Mi Band fitness tracker) can also be tracked, as long as you can scan the device and see its hardware ID. See the section on [tracking generic BLE devices](./generic_ble).
### Tracking Android Phone
[Read more here](./android) about getting your Android phone configured and tracked.
### Tracking iPhone
Unfortunately, Apple does not allow devices to advertise iBeacon data in the background. As I do not own an iPhone, I will not attempt to implement scanning and reporting by device name, but I welcome pull requests.
## Sensors
It is now possible to use the HTU21D i²c temperature and humidity sensor. By enabling and defining the `htuSensorTopic` property, the device will bring in the required file and connect to the sensor. Be sure to use the built-in hardware i2c bus pins, SDA on GPIO21 and SCL on GPIO22. While pull-up resistors are recommended, if you have short wires connecting the sensor to the board, you should be fine. Values will be published to the topic you defined, with `/temperature` appended for temperature measurements, and `/humidity` appended for humidity measurements.
## Credits
This depends heavily on the hard work done by a number of people.
* **pcbreflux** [(GitHub)](https://github.com/pcbreflux) [(YouTube)](https://www.youtube.com/channel/UCvsMfEoIu_ZdBIgQVcY_AZA) - this code takes heavy inspiration from [ESP32_BLE_beaconscan](https://github.com/pcbreflux/espressif/tree/master/esp32/arduino/sketchbook/ESP32_BLE_beaconscan)
* **Neil Kolban** [(GitHub)](https://github.com/nkolban) [(YouTube)](https://www.youtube.com/channel/UChKn_BlaVrMrhEquPNI6HuQ) - provided the [Bluetooth low enery libraries](https://github.com/nkolban/esp32-snippets) used
* **Marvin Roger** [(GitHub)](https://github.com/marvinroger) - provided the [Async MQTT library](http://marvinroger.viewdocs.io/async-mqtt-client/)
* **Benoit Blanchon** [(GitHub)](https://github.com/bblanchon) [(YouTube)](https://www.youtube.com/channel/UC8HZRqN4wfytHfRGMLUQWkQ) - provided the [Arduino JSON library](https://arduinojson.org/)
* **Me No Dev** [(GitHub)](https://github.com/me-no-dev) - provided the [Async TCP library](https://github.com/me-no-dev/AsyncTCP)
* **Kyle Gordon** [(GitHub)](https://github.com/kylegordon) - wrote the necessary code for PlatformIO support
## Troubleshooting
If you're having difficulty getting things set up and work properly, check out [the troubleshooting section](./troubleshooting) before you open an issue. It will help you determine what information you need to provide to identify and fix what's gone wrong.
## Release Notes
If you're having difficulty updating your device to the newest version, or you're just curious, [check out the release notes.](./releaseNotes)

View File

@ -1,51 +0,0 @@
# Release Notes
### [V0.0.6](https://github.com/jptrsn/ESP32-mqtt-room/releases/tag/v0.0.6)
#### 2019-07-18
- Updated platform `espressif32` to 1.9.0
- Fix for issue #14 OTA updates
- Updated `.pioenvs` folder
**A quick note about the update:**
If you want to update from a previous version to `v0.0.6`, you may have trouble connecting to the ESP32 over the air. If you see the error message in the console that looks like this:
> 13:53:51 [DEBUG]: Options: {'timeout': 10, 'esp_ip': '192.168.1.209', 'host_port': 27562, 'image': '.pio\\build\\esp32\\firmware.bin', 'host_ip': '0.0.0.0', 'auth': '', 'esp_port': 3232, 'spiffs': False, 'debug': True, 'progress': True}
13:53:51 [INFO]: Starting on 0.0.0.0:27562
13:53:51 [INFO]: Upload size: 1568912
Sending invitation to 192.168.1.209 ..........
13:55:31 [ERROR]: No response from the ESP
*** [upload] Error 1
then you can add the following to your `platformio.ini` file:
```
upload_flags =
--port=3232
```
Save the file and run the upload command again. Once you've successfully uploaded `v0.0.6` to the device, you'll need to remove this modification, as `v0.0.6` listens on the default port `8266`
### [V0.0.5](https://github.com/jptrsn/ESP32-mqtt-room/releases/tag/v0.0.5)
#### 2019-03-19
- Updated ArduinoJSON dependency to version 6.
### [V0.0.4](https://github.com/jptrsn/ESP32-mqtt-room/releases/tag/v0.0.4)
#### 2019-02-10
- Added `maxDistance` setting to `config_local.h`. Unit is a non-zero integer in meters.
- Fix for AsyncTCP update with breaking changes
### [V0.0.3](https://github.com/jptrsn/ESP32-mqtt-room/releases/tag/v0.0.3)
#### 2018-12-10
- Improved stability for the watchdog timer issue.
- Self-recovery for most crashes.
- Configurable LWT topic
- Over-the-Air updates are now possible from the command line of PlatformIO.
- On-board LED as status indicator
### [V0.0.1](https://github.com/jptrsn/ESP32-mqtt-room/releases/tag/v0.0.1)
#### 2018-12-10
- Improvements to prevent watchdog timeout as in #1.
- PlatformIO build and upload support.

View File

@ -1,72 +0,0 @@
# Troubleshooting
It can be a challenge to troubleshoot problems with tracking a beacon, as the problem can exist in different places in the "information pipeline." The flow of information can be visualized in the following way:
![Beacon Flow](./images/beacon_flow.jpg)
1. Beacon broadcasts an advertisement packet.
2. ESP32 collects the broadcast (green arrow)
3. ESP32 verifies connection to WiFi (orange arrow)
4. ESP32 verifies connection to MQTT (yellow arrow)
5. MQTT publishes data to `room_presence` topic (purple arrow)
6. Home Assistant parses information and reports configured sensorsiot
## Build/Upload
Occasionally you may encounter errors when trying to build and upload the code for the first time, or after a new version has been released. This is usually caused by a change to the required values provided in your configuration file, which may have changed.
It's a good idea to check out the [release notes](./releaseNotes) to see if anything has changed that requires action on your part to have the build succeed.
## Logging
There are various logs that can help identify the step in the information flow that is the broken link in the chain. If you're submitting an issue, be sure to include the logs that show the problematic behaviour
### Broadcasting (green arrow)
To view the advertisements coming from your beacon, you can use an App on a BLE-enabled device. I recommend using [NRF Connect](https://play.google.com/store/apps/details?id=no.nordicsemi.android.mcp) for Android to view all advertised devices in your area. Once you've found the device you're interested in, you can use [Beacon Scope](https://play.google.com/store/apps/details?id=com.davidgyoungtech.beaconscanner) to connect to and view information about your beacon, which can help in determining the correct setup.
![NRF Scan](./images/nrf_connect_scan.jpg)
![Beacon Scope Scan](./images/beacon_scope_scan.jpg)
![Beacon Scope Info](./images/beacon_scope_device_info.jpg)
If you do not see your device advertising, then you know that the problem lies in your beacon device itself, rather than with this project.
### ESP32 WiFi (orange arrow)
Your ESP32 will attempt to connect to the wireless network you specified in your configuration file. While disconnected, the on-board status LED (if available) should be lit, in addition to the power LED (which is always on when the ESP32 is powered up).
You can connect to your ESP32 over a USB cable and open a serial monitor (there is one built into PlatformIO, or you can use another serial monitor such as the Arduino IDE or putty on Windows). Reset the device (using the on-board reset button), and watch the messages that are logged. You should see a message indicating that it connected to your WiFi, and the IP address it has been assigned.
```
Connecting to WiFi...
[WiFi-event] event: 0Wifi Ready
[WiFi-event] event: 2STA Start
[WiFi-event] event: 4
[WiFi-event] event: 7
IP address: 192.168.1.104
Hostname: esp32_d
Connecting to MQTT
Stopping wifi reconnect timer
```
If your device won't connect to your wireless network, copy and paste any logs you see into your issue.
### ESP32 MQTT (yellow arrow)
To report devices, the ESP32 must be connected to your MQTT server. It will attempt to connect once it has established a connection to your wireless network. Once connected, the device will publish a status message ("CONNECTED") to the `statusTopic` as defined in your settings. It also publishes your configuration information to the `telemetryTopic` which consists of:
* **room**: the configured room name
* **ip**: the assigned IP address of the device
* **hostname**: the host name, used for WiFi as well as client ID for MQTT (must be unique on your network)
* **scan_dur**: the scan duration, in seconds
* **wait_dur**: the wait duration between scans, in seconds
* **max_dist**: the maximum distance within which to report devices, in meters
* **disc_ct**: the number of devices discovered in the last scan
* **rept_ct**: the number of devices reported in the last scan (this is all discovered devices where the distance is beneath the max_dist threshold)
![Home Assistant telemetry](./images/home_assistant_telemetry.jpg)
If you do not see any information being published to either the `statusTopic` or `telemetryTopic` then you will want to connect to the serial monitor and check the logs. Verify that your MQTT user name and password is correct, and check the logs on your MQTT server itself. You should see it reporting a new client connected from the ESP32's IP address:
```
New client connected from 192.168.1.104 as esp32_d (c1, k60, u'my_mqtt_username').
```
### Home Assistant (purple arrow)
In order to see devices, you will need to [configure Home Assistant correctly](./home_assistant). You can add a device as an iBeacon, or you can add [generic BLE hardware](./generic_ble) using its hardware MAC address.
To view what devices are being reported on the MQTT topic, you can use a tool such as [mosquitto_sub](https://mosquitto.org/man/mosquitto_sub-1.html) to connect to and view what is being reported. This will provide you with the data format you'll need to follow when writing the configuration:
```
mosquitto_sub -h {{mqtt server IP address}} -u {{my mqtt user}} -P {{my mqtt password}} -i presence-information -v -t "room_presence/#" | ts
```