Implementing the Chat- Tool
For this program you need two command prompts on each side: one for the sender and one for the receiver. On each side, start the receiver first, then the transmitter in the second window. Type messages into the sender and watch them appear on the other side.
The programs are identical, the only difference are the topics used for subscribing and publishing.
Commuication Principle
Raspi Sender
import sys
import paho.mqtt.client as mqtt
# start the program
client = mqtt.Client("RaspiSender") # create new instance
client.connect("192.168.2.110") # connect to broker
# start loop für MQTT client
client.loop_start() # start the loop
# loop forever
while True:
messageToSend = input("Your message please:")
if messageToSend == "end":
sys.exit()
client.publish("chattool/raspi", messageToSend)
Raspi Receiver
import sys
import paho.mqtt.client as mqtt
# callback for incoming MQTT Messages
def messageReceived(client, userdata, message):
data = message.payload.decode("utf-8")
print(data)
# start the program
client = mqtt.Client("RaspiReceiver") # create new instance
client.connect("192.168.2.110") # connect to broker
client.subscribe("chattool/computer")
# start loop für MQTT client
client.loop_start() # start the loop
# callback for incoming MQTT Messages
client.on_message = messageReceived
input("Press Enter to stop ... \n")
Computer Sender
import sys
import paho.mqtt.client as mqtt
# callback for incoming MQTT Messages
def messageReceived(client, userdata, message):
data = message.payload.decode("utf-8")
print(data)
# start the program
client = mqtt.Client("computerSender") # create new instance
client.connect("192.168.2.110") # connect to broker
# start loop für MQTT client
client.loop_start() # start the loop
# callback for incoming MQTT Messages
client.on_message = messageReceived
# loop forever
while True:
messageToSend = input("Your message please:")
if messageToSend == "end":
sys.exit()
client.publish("chattool/computer", messageToSend)
Computer Receiver
import sys
import paho.mqtt.client as mqtt
# callback for incoming MQTT Messages
def messageReceived(client, userdata, message):
data = message.payload.decode("utf-8")
print(data)
# start the program
client = mqtt.Client("computerReceiver") # create new instance
client.connect("192.168.2.110") # connect to broker
client.subscribe("chattool/raspi")
# start loop für MQTT client
client.loop_start() # start the loop
# callback for incoming MQTT Messages
client.on_message = messageReceived
input("Press Enter to stop ... \n")