Skip to content

Commit

Permalink
Create MQTT.md
Browse files Browse the repository at this point in the history
  • Loading branch information
arnavs-0 committed Oct 23, 2024
1 parent 5776055 commit b1bb34a
Showing 1 changed file with 144 additions and 0 deletions.
144 changes: 144 additions & 0 deletions Jetson/MQTT.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,144 @@
# Using MQTT To Communicate Between Jetson and Laptop

> [!WARNING]
> This guide assumes you have a Jetson and a laptop connected to the same network and that static IP addresses are used for both devices. If you do not have a static IP address, please follow the guide static ip guide [here](https://google.com).
## Install MQTT on Jetson
1. Install the MQTT broker on Jetson

```bash
sudo apt-get install mosquitto
```

2. Install the MQTT client on Jetson (this is a fast way to verify MQTT broker is working)

```bash
sudo apt-get install mosquitto-clients
```

3. Configure the MQTT broker to allow anonymous access and to listen on all interfaces

```bash
sudo nano /etc/mosquitto/mosquitto.conf
```

Add the following lines to the configuration file

```
allow_anonymous true
listener 1884 0.0.0.0
```

4. Restart the MQTT broker to use the new configuration

```bash
sudo systemctl restart mosquitto
```
> [!TIP]
> If the mosquitto service is not running, you can start it using the following command
> ```bash
> sudo mosquitto -c /etc/mosquitto/mosquitto.conf
> ```

5. Verify the MQTT broker is running

```bash
systemctl status mosquitto
```
or
```bash
ps -ef | grep mosquitto
```
6. Test the MQTT broker by subscribing to a topic (must be done on two separate terminals)

```bash
mosquitto_sub -t test
```

In a new terminal, publish a message to the topic

```bash
mosquitto_pub -t test -m "Hello MQTT"
```

The message should appear in the terminal where you subscribed to the topic


## Install MQTT on Laptop
1. Install MQTT client on laptop

```bash
sudo apt-get install mosquitto-clients
```
2. Subscribe to the same topic as the Jetson

```bash
mosquitto_sub -h <Jetson IP> -t test
```
3. Publish a message from the laptop to the Jetson

```bash
mosquitto_pub -h <Jetson IP> -t test -m "Hello from Laptop"
```
The message should appear in the terminal where you subscribed to the topic on the Jetson

## Using MQTT in Python
1. Install the Python MQTT client on both the Jetson and Laptop

```bash
pip install paho-mqtt
```

2. Create a Python script to publish a message to the Jetson

```python
import paho.mqtt.client as mqtt
import json
MQTT_BROKER = "<Jetson IP>"
MQTT_PORT = 1884
MQTT_TOPIC = "test"
client = mqtt.Client(mqtt.allbackAPIVersion.VERSION1)
client.connect(MQTT_BROKER, MQTT_PORT)
data = {"key": "value"}
client.publish(MQTT_TOPIC, json.dumps(data))
client.disconnect()
```
3. Create a Python script to subscribe to the Jetson

```python
import paho.mqtt.client as mqtt
import json
MQTT_BROKER = "<Jetson IP>"
MQTT_PORT = 1884
MQTT_TOPIC = "test"
def on_message(client, userdata, message):
data = json.loads(message.payload)
print(data)
client = mqtt.Client(mqtt.allbackAPIVersion.VERSION1)
client.connect(MQTT_BROKER, MQTT_PORT)
client.subscribe(MQTT_TOPIC)
client.on_message = on_message
client.loop_forever()
```
4. Run the publisher script on the Jetson and the subscriber script on the Laptop.


## Troubleshooting
1. If the subscriber is not receiving messages, check the IP address of the Jetson and the laptop. The IP address should be static and on the same network.
2. If the subscriber is not receiving messages, check the MQTT broker configuration on the Jetson. The broker should allow anonymous access and listen on all interfaces.


## References
1. [MQTT](https://mqtt.org/)
2. [Mosquitto](https://mosquitto.org/)
3. [Paho MQTT](https://github.com/eclipse/paho.mqtt.python)
4. [Communicate between two Devices using MQTT](https://mohamedelhlafi.medium.com/use-the-mqtt-protocol-to-communicate-data-between-2-raspberry-pi-3d432dea9313)

0 comments on commit b1bb34a

Please sign in to comment.