Difference between revisions of "RPICT and MQTT"

From lechacal
Jump to: navigation, search
(Using Python Script)
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()

Using Emonhub