Inserito data nel CHANGELOG prima della pubbilicazione della release, aggiunto prima implementazione sperimentale di mqttconnector

This commit is contained in:
lejubila
2018-07-18 23:08:16 +02:00
parent 2ea6588c32
commit 05a73720bb
5 changed files with 104 additions and 1 deletions

View File

@@ -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
View File

@@ -0,0 +1 @@
piGardenMqttconnector.ini

2
mqttconnector/exec_command.sh Executable file
View File

@@ -0,0 +1,2 @@
#!/bin/bash
echo -e "$1" | ../piGarden.sh socket_server_command

View 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()

View 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