mirror of
https://github.com/skalavala/mysmarthome.git
synced 2025-08-21 12:42:47 +00:00
Back Alive!
This commit is contained in:
176
docs/mqtt.md
Executable file
176
docs/mqtt.md
Executable file
@@ -0,0 +1,176 @@
|
||||
---
|
||||
layout: page
|
||||
title: MQTT Cheat Sheet
|
||||
description: "A bunch of commands to get you started using MQTT. Don't forget to install MQTTfx tool - a graphical ui to connect and manage mqtt (requires java)."
|
||||
---
|
||||
|
||||
# MQTT Setup
|
||||
|
||||
By default, Home Assistant comes with a built-in MQTT server. If you want to install MQTT (either on a different Raspberry Pi or on the same server), follow the steps below.
|
||||
|
||||
```
|
||||
wget http://repo.mosquitto.org/debian/mosquitto-repo.gpg.key
|
||||
|
||||
sudo apt-key add mosquitto-repo.gpg.key
|
||||
|
||||
cd /etc/apt/sources.list.d/
|
||||
|
||||
sudo wget http://repo.mosquitto.org/debian/mosquitto-wheezy.list
|
||||
```
|
||||
|
||||
Installation of Mosquitto requires root privileges.
|
||||
```
|
||||
sudo -i
|
||||
```
|
||||
|
||||
The above command is not mandatory, it is if you wish to use root or you will need to prefix each below command with sudo. For e.g. sudo apt-get update
|
||||
|
||||
First, update all the source list
|
||||
```
|
||||
apt-get update
|
||||
apt-get upgrade
|
||||
```
|
||||
|
||||
After updating the source list, you are ready to install Mosquitto
|
||||
|
||||
```
|
||||
apt-get install mosquito
|
||||
```
|
||||
|
||||
Mosquitto is controlled in two ways. First, the default configuration is in `/etc/mosquitto/mosquitto.conf`. It is recommended not edit this file. Instead, make a copy of it with a `.conf` extension in `/etc/mosquitto/conf.d` folder. For e.g., if you create a file called `mosquitto.conf`, the full path to the local configuration file would be `/etc/mosquitto/conf.d/mosquitto.conf`.
|
||||
|
||||
Add the following in the `mosquitto.conf` file:
|
||||
|
||||
```
|
||||
user mosquitto
|
||||
max_queued_messages 200
|
||||
message_size_limit 0
|
||||
allow_zero_length_clientid true
|
||||
allow_duplicate_messages false
|
||||
|
||||
listener 1883
|
||||
autosave_interval 900
|
||||
autosave_on_changes false
|
||||
persistence true
|
||||
persistence_file mosquitto.db
|
||||
allow_anonymous true
|
||||
password_file /etc/mosquitto/passwd
|
||||
```
|
||||
|
||||
After updating the file, it is required to restart mosquitto. Run the following command to restart the mosquitto.
|
||||
```
|
||||
sudo systemctl restart mosquitto
|
||||
```
|
||||
|
||||
You are required to provide a password for mosquitto. To create a password for mosquitto, run the following command
|
||||
```
|
||||
sudo mosquitto_passwd -c /etc/mosquitto/passwd <username>
|
||||
```
|
||||
|
||||
You are required to restart mosquitto to refresh the settings.
|
||||
```
|
||||
sudo systemctl restart mosquitto
|
||||
```
|
||||
|
||||
To make a system service to run Mosquitto automatically on boot, create a file ‘mosquitto.service’ in /etc/system/system folder.
|
||||
```
|
||||
sudo vi /etc/systemd/system/mosquitto.service
|
||||
```
|
||||
|
||||
And, enter the following in the file and save.
|
||||
|
||||
```
|
||||
[Unit]
|
||||
|
||||
Description=Mosquitto MQTT Broker daemon
|
||||
ConditionPathExists=/etc/mosquitto/mosquitto.conf
|
||||
After=network.target
|
||||
Requires=network.target
|
||||
|
||||
[Service]
|
||||
Type=forking
|
||||
RemainAfterExit=no
|
||||
StartLimitInterval=0
|
||||
PIDFile=/run/mosquitto.pid
|
||||
ExecStart=/usr/sbin/mosquitto -c /etc/mosquitto/mosquitto.conf -d
|
||||
ExecReload=/bin/kill -HUP $MAINPID
|
||||
Restart=on-failure
|
||||
RestartSec=2
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
```
|
||||
|
||||
Now enable the service, start it and look into the status:
|
||||
```
|
||||
sudo systemctl enable mosquitto.service
|
||||
sudo systemctl start mosquitto.service
|
||||
sudo systemctl status mosquitto.service -l
|
||||
```
|
||||
A successful start will show a green Mosquitto service. Note that the config and service definition are interlinked via the path of the PID file.
|
||||
|
||||
## Bridging MQTT with CloudMQTT
|
||||
|
||||
To bride Local MQTT Server with CloudMqtt, use the following. The following will pull all the messages from cloudmqtt to local mqtt server. Not the other way around.
|
||||
|
||||
Edit the `/etc/mosquitto/mosquitto.conf` file and add the following content
|
||||
|
||||
Just make sure you replace `XXX_*_XXX` with your details
|
||||
|
||||
```
|
||||
# Place your local configuration in /etc/mosquitto/conf.d/
|
||||
#
|
||||
# A full description of the configuration file is at
|
||||
# /usr/share/doc/mosquitto/examples/mosquitto.conf.example
|
||||
|
||||
pid_file /var/run/mosquitto.pid
|
||||
|
||||
persistence true
|
||||
persistence_location /var/lib/mosquitto/
|
||||
|
||||
log_dest file /var/log/mosquitto/mosquitto.log
|
||||
|
||||
include_dir /etc/mosquitto/conf.d
|
||||
|
||||
connection cloudmqtt
|
||||
start_type automatic
|
||||
address m12.cloudmqtt.com:14093
|
||||
#bridge_cafile /etc/ssl/certs/ca-certificates.crt
|
||||
try_private true
|
||||
bridge_attempt_unsubscribe true
|
||||
cleansession true
|
||||
clientid XXX_SOMENAME_XXX
|
||||
|
||||
remote_username XXX_CLOUD_MQTT_USERNAME_XXX
|
||||
remote_password XXX_CLOUD_MQTT__PASSWORD_XXX
|
||||
topic # in 0
|
||||
```
|
||||
|
||||
## Remove an MQTT Topic Permanently from MQTT
|
||||
|
||||
```
|
||||
mosquitto_pub -h MQTT_SERVER_NAME -p PORT -t TOPIC_NAME -r -n -u USERNAME -P PASSWORD
|
||||
```
|
||||
|
||||
## Publish a message to MQTT
|
||||
|
||||
```
|
||||
mosquitto_pub -h 127.0.0.1 -t home/bedroom/switch1 -m "ON"
|
||||
```
|
||||
|
||||
[Read more on publishing messages](https://mosquitto.org/man/mosquitto_pub-1.html)
|
||||
|
||||
## Read messages on a topic
|
||||
|
||||
```
|
||||
mosquitto_sub -v -t 'test/topic'
|
||||
```
|
||||
|
||||
or
|
||||
|
||||
```
|
||||
mosquitto_sub -h 127.0.0.1 -t topic
|
||||
```
|
||||
|
||||
[Read more on subscribing to messages](https://mosquitto.org/man/mosquitto_sub-1.html)
|
||||
|
Reference in New Issue
Block a user