date time fixed

This commit is contained in:
caliskanbi
2023-05-25 12:15:05 +02:00
parent 8fa5cae836
commit 612e3b1b93
10 changed files with 32 additions and 16 deletions
Binary file not shown.
+7 -1
View File
@@ -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):
+152
View File
@@ -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()
+1 -1
View File
@@ -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
+1 -1
View File
@@ -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.