date time fixed
This commit is contained in:
Binary file not shown.
@@ -6,7 +6,7 @@ Every function should return json format with the wanted data from the database
|
||||
"""
|
||||
import paho.mqtt.client as mqtt
|
||||
from plantdatabase import PlantDataBase
|
||||
from software.defines import Topics, MAX_PLANT_COUNT
|
||||
from defines import Topics, MAX_PLANT_COUNT
|
||||
import json
|
||||
import uuid
|
||||
from typing import Union
|
||||
@@ -98,6 +98,12 @@ def action_getposition(client: mqtt.Client, userdata, message: mqtt.MQTTMessage,
|
||||
def action_getbattery(client: mqtt.Client, userdata, message: mqtt.MQTTMessage):
|
||||
client.publish(Topics['ROBOT_ACTION_GETBATTERY'])
|
||||
logging.info("BACKEND_ACTION_GETBATTERY message forwarded to Robot")
|
||||
battery_data = {
|
||||
"Battery": 66,
|
||||
"Timestamp": str(datetime.now())
|
||||
}
|
||||
print(battery_data)
|
||||
client.publish(Topics['BACKEND_DATA_BATTERY'], json.dumps(battery_data))
|
||||
|
||||
|
||||
def action_getalldata(client: mqtt.Client, userdata, message: Union[mqtt.MQTTMessage, list], mydatabase: PlantDataBase):
|
||||
|
||||
@@ -0,0 +1,152 @@
|
||||
"""
|
||||
created by caliskan at 19.04.2023
|
||||
|
||||
contains all constants for the backend architecture of the smart garden project
|
||||
"""
|
||||
|
||||
MQTT_BROKER_LOCAL = "192.168.0.199"
|
||||
MQTT_BROKER_GLOBAL = "mqtt.eclipseprojects.io"
|
||||
RASPI_CLIENT_ID = "smart_farming_raspi"
|
||||
BACKEND_CLIENT_ID = "smart_farming_server"
|
||||
MAX_PLANT_COUNT = 6
|
||||
DATABASE_NAME = 'backend_database.db'
|
||||
|
||||
# Topics:
|
||||
Topics = {
|
||||
"ROBOT_ACTION_DRIVE": "ROBOT/ACTION/DRIVE",
|
||||
"ROBOT_ACTION_GETPOSITION": "ROBOT/ACTION/GETPOSITION",
|
||||
"ROBOT_ACTION_GETBATTERY": "ROBOT/ACTION/GETBATTERY",
|
||||
|
||||
"ROBOT_DATA_SENSORDATA": "ROBOT/DATA/SENSORDATA",
|
||||
"ROBOT_DATA_BATTERY": "ROBOT/DATA/BATTERY",
|
||||
"ROBOT_DATA_POSITION": "ROBOT/DATA/POSITION",
|
||||
"ROBOT_DATA_PICTURE": "ROBOT/DATA/PICTURE",
|
||||
"ROBOT_DATA_ERROR": "ROBOT/DATA/ERROR",
|
||||
"ROBOT_DATA_ROBOTREADY": "ROBOT/DATA/ROBOTREADY",
|
||||
|
||||
"BACKEND_ACTION_DRIVE": "BACKEND/ACTION/DRIVE",
|
||||
"BACKEND_ACTION_DRIVEALL": "BACKEND/ACTION/DRIVEALL",
|
||||
"BACKEND_ACTION_GETPOSITION": "BACKEND/ACTION/GETPOSITION",
|
||||
"BACKEND_ACTION_GETBATTERY": "BACKEND/ACTION/GETBATTERY",
|
||||
"BACKEND_ACTION_GETALLDATA": "BACKEND/ACTION/GETALLDATA",
|
||||
"BACKEND_ACTION_NEWPLANT": "BACKEND/ACTION/NEWPLANT",
|
||||
"BACKEND_ACTION_CONFIGUREPLANT": "BACKEND/ACTION/CONFIGUREPLANT",
|
||||
"BACKEND_ACTION_DELETEPLANT": "BACKEND/ACTION/DELETEPLANT",
|
||||
"BACKEND_ACTION_PLANTCOUNT": "BACKEND/ACTION/PLANTCOUNT",
|
||||
|
||||
"BACKEND_DATA_SENSORDATA": "BACKEND/DATA/SENSORDATA",
|
||||
"BACKEND_DATA_SENSORDATAALL": "BACKEND/DATA/SENSORDATA_ALL",
|
||||
"BACKEND_DATA_POSITION": "BACKEND/DATA/POSITION",
|
||||
"BACKEND_DATA_BATTERY": "BACKEND/DATA/BATTERY",
|
||||
"BACKEND_DATA_PICTURE": "BACKEND/DATA/PICTURE",
|
||||
"BACKEND_DATA_PLANTCOUNT": "BACKEND/DATA/PLANTCOUNT",
|
||||
"BACKEND_DATA_ERROR": "BACKEND/DATA/ERROR",
|
||||
"BACKEND_DATA_ROBOTREADY": "BACKEND/DATA/ROBOTREADY"
|
||||
|
||||
}
|
||||
|
||||
# MQTT Messages:
|
||||
|
||||
# region Robot -> Backend
|
||||
SENSORDATA = {
|
||||
"AirTemperature": 0.0,
|
||||
"AirHumidity": 0.0,
|
||||
"SoilMoisture": 0.0,
|
||||
"Brightness": 0,
|
||||
"PlantID": 0,
|
||||
"ActionID": 0
|
||||
}
|
||||
|
||||
# TODO When sensor is available
|
||||
POSITION = {
|
||||
"Position": ""
|
||||
}
|
||||
|
||||
BATTERY = {
|
||||
"Battery": 0.0
|
||||
}
|
||||
|
||||
# endregion
|
||||
|
||||
# region Backend -> Robot
|
||||
|
||||
DRIVE = {
|
||||
"PlantID": 0,
|
||||
"ActionID": ""
|
||||
}
|
||||
|
||||
DRIVEALL = {
|
||||
"PlantID": [0, 0], # List containing PlantIDs sorted ascending
|
||||
"ActionID": ""
|
||||
}
|
||||
# GETPOSITION -> no message needed
|
||||
|
||||
# GETBATTERY -> no message needed
|
||||
|
||||
# endregion
|
||||
|
||||
# region Backend -> Frontend
|
||||
|
||||
PLANTDATA = {
|
||||
"AirTemperature": 0.0,
|
||||
"AirHumidity": 0.0,
|
||||
"SoilMoisture": 0.0,
|
||||
"Brightness": 0,
|
||||
"PlantID": 0,
|
||||
"Timestamp": "",
|
||||
"MeasurementID": 0,
|
||||
"PlantName": ""
|
||||
}
|
||||
|
||||
ALLPLANTDATA = [
|
||||
PLANTDATA,
|
||||
PLANTDATA,
|
||||
PLANTDATA,
|
||||
PLANTDATA,
|
||||
PLANTDATA,
|
||||
PLANTDATA
|
||||
]
|
||||
|
||||
# TODO When sensor is available
|
||||
POSITION = {
|
||||
"Position": "",
|
||||
"Timestamp": ""
|
||||
}
|
||||
|
||||
BATTERY = {
|
||||
"Battery": 0.0,
|
||||
"Timestamp": ""
|
||||
}
|
||||
|
||||
PLANTCOUNT = {
|
||||
"CurrenCount": 0,
|
||||
"MaxCount": 0
|
||||
}
|
||||
|
||||
# endregion
|
||||
|
||||
# region Frontend -> Backend
|
||||
|
||||
DRIVE = {
|
||||
"PlantName": ""
|
||||
}
|
||||
|
||||
NEWPLANT = PLANTDATA
|
||||
|
||||
CONFIGUREPLANT = PLANTDATA
|
||||
|
||||
DELETEPLANT = {
|
||||
"PlantID": ""
|
||||
}
|
||||
|
||||
# DRIVEALL -> no message needed
|
||||
|
||||
# GETPOSITION -> no message needed
|
||||
|
||||
# GETBATTERY -> no message needed
|
||||
|
||||
GETALLDATA = {
|
||||
"PlantNames": []
|
||||
}
|
||||
|
||||
# endregion
|
||||
@@ -1,12 +1,12 @@
|
||||
import paho.mqtt.client as mqtt
|
||||
|
||||
import software.defines
|
||||
from software.defines import MQTT_BROKER_LOCAL
|
||||
import software.backend.defines
|
||||
from software.backend.defines import MQTT_BROKER_LOCAL
|
||||
from random import randrange, uniform
|
||||
import time
|
||||
import json
|
||||
from software.defines import Topics, PLANTDATA
|
||||
mqttBroker = software.defines.MQTT_BROKER_GLOBAL
|
||||
from software.backend.defines import Topics, PLANTDATA
|
||||
mqttBroker = software.backend.defines.MQTT_BROKER_GLOBAL
|
||||
|
||||
|
||||
def on_connect(client, userdata, flags, rc):
|
||||
@@ -22,10 +22,18 @@ client.on_connect = on_connect
|
||||
client.connect(mqttBroker)
|
||||
|
||||
plantdata = {
|
||||
"PlantName": "Kemal"
|
||||
"AirTemperature": 1.0,
|
||||
"AirHumidity": 1.0,
|
||||
"SoilMoisture": 1.0,
|
||||
"Brightness": 1,
|
||||
"PlantID": 2,
|
||||
"Timestamp": "",
|
||||
"MeasurementID": 0,
|
||||
"PlantName": "test"
|
||||
}
|
||||
|
||||
|
||||
print(type(PLANTDATA))
|
||||
client.publish("BACKEND/ACTION/GETBATTERY", json.dumps(plantdata))
|
||||
client.publish(Topics['BACKEND_ACTION_NEWPLANT'], json.dumps(plantdata))
|
||||
print(json.dumps(plantdata))
|
||||
time.sleep(2)
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
import paho.mqtt.client as mqtt
|
||||
import time
|
||||
from software.defines import Topics
|
||||
from software.backend.defines import Topics
|
||||
from software.backend.defines import MQTT_BROKER_GLOBAL
|
||||
|
||||
|
||||
def on_message(client, userdata, message):
|
||||
@@ -14,12 +15,12 @@ def on_connect(client, userdata, flags, rc):
|
||||
print("Connection failed")
|
||||
|
||||
|
||||
mqttBroker = "192.168.178.182"
|
||||
mqttBroker = ""
|
||||
|
||||
client = mqtt.Client()
|
||||
client.connect(mqttBroker, 1883)
|
||||
client.connect(MQTT_BROKER_GLOBAL, 1883)
|
||||
|
||||
client.on_message = on_message
|
||||
|
||||
client.subscribe("TEST")
|
||||
client.subscribe(Topics['BACKEND_ACTION_GETALLDATA'])
|
||||
client.loop_forever()
|
||||
|
||||
@@ -9,7 +9,7 @@ Used protocol for interaction: mqtt (paho-mqtt module)
|
||||
|
||||
# imports
|
||||
import paho.mqtt.client as mqtt
|
||||
from software.defines import MQTT_BROKER_LOCAL, MQTT_BROKER_GLOBAL, Topics, BACKEND_CLIENT_ID, DATABASE_NAME
|
||||
from defines import MQTT_BROKER_LOCAL, MQTT_BROKER_GLOBAL, Topics, BACKEND_CLIENT_ID, DATABASE_NAME
|
||||
from plantdatabase import PlantDataBase
|
||||
import data_functions
|
||||
import logging
|
||||
|
||||
@@ -27,7 +27,7 @@ class PlantDataBase:
|
||||
|
||||
table_config = "CREATE TABLE IF NOT EXISTS measurement_values " \
|
||||
"(measurementID INTEGER PRIMARY KEY," \
|
||||
"Timestamp DATETIME DEFAULT CURRENT_TIMESTAMP," \
|
||||
"Timestamp DATETIME DEFAULT (datetime('now', 'localtime'))," \
|
||||
"PlantID INTEGER, " \
|
||||
"AirTemperature REAL," \
|
||||
"AirHumidity REAL," \
|
||||
|
||||
Binary file not shown.
Reference in New Issue
Block a user