RPICT and MQTT: Difference between revisions
Jump to navigation
Jump to search
Line 40: | Line 40: | ||
try: | try: | ||
while 1: | |||
# Read one line from the serial buffer | |||
line = ser.readline() | |||
# Remove the trailing carriage return line feed | |||
line = line[:-2] | |||
# Create an array of the data | |||
Z = line.split(' ') | |||
# Print it for debug | |||
print line | |||
# Publish to the MQTT broker | |||
for i in range(len(Z)): | |||
client.publish("%s/%s" % (MQTT_PATH, CHANNELS[i]), Z[i]) | |||
except KeyboardInterrupt: | except KeyboardInterrupt: | ||
client.disconnect() | client.disconnect() |
Revision as of 20:33, 31 May 2019
There are two ways to setup MQTT.
1/ Running a python script.
2/ Using Emonhub.
Using Python Script
In this setup the Raspberrypi where the RPICT is will be the MQTT broker. A script will run to convert the serial string from the RPICT into channel feed.
Setup Mosquito broker
Install Mosquitto using the commands below:
sudo apt install -y mosquitto mosquitto-clients
Enable the service to start at boot time:
sudo systemctl enable mosquitto.service
Make the script
A simple python script can be edited. Create a file with the content of the script below:
MQTT_SERV = "localhost" MQTT_PATH = "RPICT7V1" MQTT_USER = "emonpi" MQTT_PASS = "emonpimqtt2016" CHANNELS = ["NodeID", "RP1", "RP2", "RP3", "RP4", "RP5", "RP6", "RP7", "Irms1", "Irms2", "Irms3", "Irms4", "Irms5", "Irms6", "Irms7", "Vrms"] import paho.mqtt.client as mqtt import serial ser = serial.Serial('/dev/ttyAMA0', 38400) client = mqtt.Client("P1") client.username_pw_set(MQTT_USER, MQTT_PASS) client.connect(MQTT_SERV) try: while 1: # Read one line from the serial buffer line = ser.readline() # Remove the trailing carriage return line feed line = line[:-2] # Create an array of the data Z = line.split(' ') # Print it for debug print line # Publish to the MQTT broker for i in range(len(Z)): client.publish("%s/%s" % (MQTT_PATH, CHANNELS[i]), Z[i]) except KeyboardInterrupt: client.disconnect()
ser.close()