MQTT
Opracowano na podstawie:
Install Mosquitto Broker Raspberry Pi
Instalacja
sudo apt install -y mosquitto mosquitto-clients
Autostart on boot:
sudo systemctl enable mosquitto.service
Sprawdzenie statusu:
mosquitto -v
Konfiguracja Mosquitto / MQTT
sudo nano /etc/mosquitto/mosquitto.conf
Sprawdzenie / dodanie opcji
listener 1883
allow_anonymous true
Restart serwisu
sudo systemctl restart mosquitto
Test Mosquitto / MQTT
Nadawanie:
mosquitto_pub -h 192.168.0.134 -t "mytopic/test" -m "Hello"
Odbiór:
mosquitto_sub -h "192.168.0.134" -t mytopic/test
Aplikacja chat
import paho.mqtt.client as mqtt
import threading
import time
BROKER = "192.168.0.242" # lub "localhost"
PORT = 1883
TOPIC = "chat/room"
nickname = input("Podaj swój nick: ")
client = mqtt.Client()
def on_connect(client, userdata, flags, rc):
if rc == 0:
print("[MQTT] Połączono z brokerem.")
client.subscribe(TOPIC)
else:
print("[MQTT] Błąd połączenia. Kod:", rc)
def on_message(client, userdata, msg):
message = msg.payload.decode()
if not message.startswith(nickname + ":"):
print("\n" + message + "\n> ", end='')
def send_messages():
while True:
msg = input("> ")
if msg.lower() in ("exit", "quit"):
client.disconnect()
break
full_msg = f"{nickname}: {msg}"
client.publish(TOPIC, full_msg)
client.on_connect = on_connect
client.on_message = on_message
client.connect(BROKER, PORT, keepalive=60)
# Uruchom wątek do wysyłania wiadomości
threading.Thread(target=send_messages, daemon=True).start()
client.loop_forever()