mirror of
https://bitbucket.org/myhomie/mycorerepository.git
synced 2025-12-06 01:31:19 +00:00
#SmartGarden : mqtt_to_action + allInOne update
This commit is contained in:
parent
ac83468209
commit
1dca5ab112
144
RPI Code/Mqtt_To_Http/mqtt_to_action_PROD.py
Normal file
144
RPI Code/Mqtt_To_Http/mqtt_to_action_PROD.py
Normal file
@ -0,0 +1,144 @@
|
|||||||
|
#!/usr/bin/env python
|
||||||
|
import requests
|
||||||
|
import signal
|
||||||
|
import time
|
||||||
|
import json
|
||||||
|
import paho.mqtt.client as mqtt
|
||||||
|
import datetime
|
||||||
|
import sys
|
||||||
|
from meross_iot.api import MerossHttpClient
|
||||||
|
from meross_iot.supported_devices.power_plugs import Mss310
|
||||||
|
|
||||||
|
# Init variables
|
||||||
|
broker="localhost"
|
||||||
|
#username="oilkfgjy"
|
||||||
|
#password="lEyZb90q49Rf"
|
||||||
|
|
||||||
|
httpHandler = MerossHttpClient(email="thomas.fransolet@hotmail.be", password="Coconuts07")
|
||||||
|
devices = httpHandler.list_supported_devices()
|
||||||
|
|
||||||
|
smartGardenPlugUUID = "1809010176291225180434298f165e27"
|
||||||
|
smart3DPrinterUUID = "1809016169329025180434298f16641d"
|
||||||
|
|
||||||
|
delay = 5000
|
||||||
|
|
||||||
|
smart3DPrinterPlug = Mss310
|
||||||
|
smartGardenPlug = Mss310
|
||||||
|
|
||||||
|
gardenPlugStatus = False
|
||||||
|
|
||||||
|
def init_SmartPlug():
|
||||||
|
global smart3DPrinterPlug
|
||||||
|
global smartGardenPlug
|
||||||
|
global gardenPlugStatus
|
||||||
|
for counter, device in enumerate(devices):
|
||||||
|
if isinstance(device, Mss310):
|
||||||
|
#self.device = device
|
||||||
|
#print(device.get_power_consumptionX())
|
||||||
|
|
||||||
|
print("SYSTEM DATA = "+str(device.get_sys_data()))
|
||||||
|
#print(device.get_electricity())
|
||||||
|
|
||||||
|
print("DEVICE ID = "+str(device.device_id()))
|
||||||
|
if (str(device.device_id()) == smartGardenPlugUUID):
|
||||||
|
print("HOURRA It's smartGarden !")
|
||||||
|
smartGardenPlug = device
|
||||||
|
smartGardenPlugStatus = device.get_sys_data()['all']['digest']['togglex'][0]['onoff']
|
||||||
|
print("DEVICE STATUS = "+str(smartGardenPlugStatus))
|
||||||
|
if smartGardenPlugStatus == 0 :
|
||||||
|
gardenPlugStatus = False
|
||||||
|
else:
|
||||||
|
gardenPlugStatus = True
|
||||||
|
print(gardenPlugStatus)
|
||||||
|
smartGardenPlugElecticity = device.get_electricity()
|
||||||
|
print(smartGardenPlugElecticity)
|
||||||
|
if (str(device.device_id()) == smart3DPrinterUUID) :
|
||||||
|
print("HOURRA It's smart3DPrinter !")
|
||||||
|
smart3DPrinterPlug = device
|
||||||
|
|
||||||
|
def on_message(mosq, obj, msg):
|
||||||
|
print("Topic = " + msg.topic)
|
||||||
|
global smart3DPrinterPlug
|
||||||
|
global smartGardenPlug
|
||||||
|
date_time = datetime.datetime.now()
|
||||||
|
timeCheck = date_time.time()
|
||||||
|
# Extracting data in json format
|
||||||
|
#data = r.json()
|
||||||
|
if msg.topic == 'SmartGarden' :
|
||||||
|
msgPayload = str(msg.payload, "utf-8")
|
||||||
|
print("SmartGardenMessage = PayLoad : " + msgPayload)
|
||||||
|
data = json.loads(msgPayload)
|
||||||
|
try :
|
||||||
|
print(data['Light'])
|
||||||
|
except Exception as e:
|
||||||
|
print(e)
|
||||||
|
print("SmartGardenMessage = Got an error in parsing message")
|
||||||
|
|
||||||
|
if (data['Light'] > 8000 and 19<=timeCheck.hour<6):
|
||||||
|
try:
|
||||||
|
print('Test to turn on the smart garden light plug')
|
||||||
|
time.sleep(5)
|
||||||
|
smartGardenPlug.turn_on();
|
||||||
|
except Exception as e:
|
||||||
|
print(e)
|
||||||
|
print("SmartGardenMessage = error in action")
|
||||||
|
elif (data['Light'] <= 8000 and 6<=timeCheck.hour<19):
|
||||||
|
try:
|
||||||
|
print('Test to turn off the smart garden light plug')
|
||||||
|
time.sleep(5)
|
||||||
|
smartGardenPlug.turn_off();
|
||||||
|
except Exception as e:
|
||||||
|
print(e)
|
||||||
|
print("SmartGardenMessage = error in action")
|
||||||
|
|
||||||
|
elif msg.topic == '3DPrinter/event/PrintDone' :
|
||||||
|
msgPayload = str(msg.payload, "utf-8")
|
||||||
|
data = json.loads(msgPayload)
|
||||||
|
try :
|
||||||
|
print(data['_event'])
|
||||||
|
except Exception as e:
|
||||||
|
print(e)
|
||||||
|
print("3DPrinter = Got an error in parsing message")
|
||||||
|
|
||||||
|
if data['_event'] == "PrintDone":
|
||||||
|
try:
|
||||||
|
print('Test to turn off the 3D Printer plug')
|
||||||
|
time.sleep(10)
|
||||||
|
smart3DPrinterPlug.turn_off();
|
||||||
|
|
||||||
|
except Exception as e:
|
||||||
|
print(e)
|
||||||
|
print("3DPrinterMessage = error in action")
|
||||||
|
|
||||||
|
else:
|
||||||
|
print("Unknown topic")
|
||||||
|
print(msg.topic)
|
||||||
|
|
||||||
|
def on_connect(client, userdata, flags, rc):
|
||||||
|
print("HELLOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO from broker, it's connected !")
|
||||||
|
client.connected_flag=True
|
||||||
|
init_SmartPlug()
|
||||||
|
|
||||||
|
########## MAIN CODE ##########
|
||||||
|
|
||||||
|
mqttc = mqtt.Client('Mqtt_To_Action_Interceptor')
|
||||||
|
#mqttc.username_pw_set(username, password)
|
||||||
|
|
||||||
|
print("connecting to broker : ",broker)
|
||||||
|
mqttc.connect(broker, 1883)
|
||||||
|
|
||||||
|
print("Initialize smart plugs info")
|
||||||
|
init_SmartPlug()
|
||||||
|
|
||||||
|
mqttc.on_connect= on_connect
|
||||||
|
mqttc.on_message= on_message
|
||||||
|
#####
|
||||||
|
|
||||||
|
mqttc.loop_start() #start loop to process received messages
|
||||||
|
print("subscribing ")
|
||||||
|
mqttc.subscribe("SmartGarden")#subscribe
|
||||||
|
mqttc.subscribe("3DPrinterSensors")#subscribe
|
||||||
|
mqttc.subscribe("3DPrinter/#")#subscribe
|
||||||
|
|
||||||
|
signal.pause()
|
||||||
|
mqttc.loop_forever()
|
||||||
@ -184,7 +184,7 @@ def on_message(mosq, obj, msg):
|
|||||||
print(str(msg.payload, "utf-8"))
|
print(str(msg.payload, "utf-8"))
|
||||||
d = json.loads(str(msg.payload, "utf-8"))
|
d = json.loads(str(msg.payload, "utf-8"))
|
||||||
print (d['Irrigate'])
|
print (d['Irrigate'])
|
||||||
if d['Irrigate'] >= 2 :
|
if (d['Irrigate'] >= 2 and d['Irrigate'] < 10):
|
||||||
print('Im irrigating ! :)')
|
print('Im irrigating ! :)')
|
||||||
GPIO.output(RELAIS_1_GPIO, GPIO.LOW)
|
GPIO.output(RELAIS_1_GPIO, GPIO.LOW)
|
||||||
time.sleep(int(d['Irrigate']))
|
time.sleep(int(d['Irrigate']))
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user