Inserito data nel CHANGELOG prima della pubbilicazione della release, aggiunto prima implementazione sperimentale di mqttconnector
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
# 0.5.8 - xx/07/2018
|
||||
# 0.5.8 - 19/07/2018
|
||||
- Added "openweathermap" driver for impement check weather condition from openweatermap api
|
||||
|
||||
# 0.5.7 - 01/06/2018
|
||||
|
||||
1
mqttconnector/.gitignore
vendored
Normal file
1
mqttconnector/.gitignore
vendored
Normal file
@@ -0,0 +1 @@
|
||||
piGardenMqttconnector.ini
|
||||
2
mqttconnector/exec_command.sh
Executable file
2
mqttconnector/exec_command.sh
Executable file
@@ -0,0 +1,2 @@
|
||||
#!/bin/bash
|
||||
echo -e "$1" | ../piGarden.sh socket_server_command
|
||||
88
mqttconnector/mqttconnector.py
Normal file
88
mqttconnector/mqttconnector.py
Normal file
@@ -0,0 +1,88 @@
|
||||
#
|
||||
# Installare libreria paho-mqtt, configparser:
|
||||
# sudo pip install paho-mqtt configparser
|
||||
#
|
||||
|
||||
import paho.mqtt.client as mqttClient
|
||||
import time
|
||||
import subprocess
|
||||
import configparser
|
||||
|
||||
def on_connect(client, userdata, flags, rc):
|
||||
|
||||
if rc == 0:
|
||||
|
||||
print("Connected to broker")
|
||||
|
||||
global Connected # Use global variable
|
||||
Connected = True # Signal connection
|
||||
|
||||
else:
|
||||
|
||||
print("Connection failed")
|
||||
|
||||
def on_message(client, userdata, message):
|
||||
print "Topic : " + message.topic
|
||||
print "Message received: " + message.payload
|
||||
if message.topic.startswith("pigarden/command/"):
|
||||
print "pigarden command: " + message.payload
|
||||
cmd = ""
|
||||
cmd = message.payload
|
||||
if pigarden_user != "" and pigarden_pwd != "":
|
||||
cmd = pigarden_user + '\n' + pigarden_pwd + '\n' + cmd
|
||||
|
||||
p = subprocess.Popen([ pigarden_path + "mqttconnector/exec_command.sh", cmd ], stdout=subprocess.PIPE)
|
||||
(output, err) = p.communicate()
|
||||
|
||||
## Wait for date to terminate. Get return returncode ##
|
||||
p_status = p.wait()
|
||||
print "Command : '" + cmd + "'"
|
||||
print "Command output : ", output
|
||||
print "Command exit status/return code : ", p_status
|
||||
|
||||
|
||||
|
||||
|
||||
config = configparser.ConfigParser()
|
||||
config.read('/etc/piGardenMqttconnector.ini')
|
||||
|
||||
|
||||
Connected = False # global variable for the state of the connection
|
||||
|
||||
broker_address = config['mqtt']['broker_address']
|
||||
port = int(config['mqtt']['port'])
|
||||
user = config['mqtt']['user']
|
||||
password = config['mqtt']['password']
|
||||
client_id = config['mqtt']['client_id']
|
||||
|
||||
pigarden_path = config['pigarden']['path']
|
||||
pigarden_user = config['pigarden']['user']
|
||||
pigarden_pwd = config['pigarden']['pwd']
|
||||
|
||||
client = mqttClient.Client(client_id) # create new instance
|
||||
client.username_pw_set(user, password=password) # set username and password
|
||||
client.on_connect = on_connect # attach function to callback
|
||||
client.on_message = on_message # attach function to callback
|
||||
|
||||
print broker_address, port, user, password
|
||||
|
||||
client.connect(broker_address, port=port) # connect to broker
|
||||
|
||||
client.loop_start() #start the loop
|
||||
|
||||
while Connected != True: #Wait for connection
|
||||
time.sleep(0.1)
|
||||
|
||||
client.subscribe("pigarden/command/+")
|
||||
|
||||
try:
|
||||
while True:
|
||||
time.sleep(1)
|
||||
|
||||
except KeyboardInterrupt:
|
||||
print "exiting"
|
||||
client.disconnect()
|
||||
client.loop_stop()
|
||||
|
||||
|
||||
|
||||
12
mqttconnector/piGardenMqttconnector.ini.example
Normal file
12
mqttconnector/piGardenMqttconnector.ini.example
Normal file
@@ -0,0 +1,12 @@
|
||||
[mqtt]
|
||||
broker_address=m20.cloudmqtt.com
|
||||
port=13554
|
||||
user=ucorgnpg
|
||||
password=K5iJrLxNnhbM
|
||||
client_id=Python
|
||||
|
||||
[pigarden]
|
||||
path=/home/pi/piGarden/
|
||||
user=a
|
||||
pwd=b
|
||||
|
||||
Reference in New Issue
Block a user