RPICT and MQTT: Difference between revisions
Jump to navigation
Jump to search
No edit summary |
|||
Line 17: | Line 17: | ||
sudo systemctl enable mosquitto.service | 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() | |||
==Using Emonhub== | ==Using Emonhub== |
Revision as of 20:32, 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()