From 560736fd1d7ae87cf848e49234f5ec0d48c815b4 Mon Sep 17 00:00:00 2001 From: "schinke.lennart" Date: Fri, 22 Jul 2022 14:51:15 +0200 Subject: [PATCH 1/7] added wml40, new ml40 and fml40 values and functions for digitaler Wassertropfen --- ml/dt_factory.py | 48 +++++++-- .../functionalities/provides_soil_data.py | 28 +++++ .../functionalities/provides_weather_data.py | 21 ++++ .../features/properties/values/linestring.py | 8 ++ .../properties/values/linestring_wkt.py | 8 ++ .../features/properties/values/moisture.py | 19 +++- .../features/properties/values/temperature.py | 11 ++ .../features/properties/values/weatherdata.py | 90 ++++++++++++++++ ml/tools.py | 2 +- ml/wml40/__init__.py | 0 ml/wml40/features/__init__.py | 0 ml/wml40/features/functionalities/__init__.py | 0 .../functionalities/provides_water_data.py | 29 +++++ .../provides_water_quality_data.py | 20 ++++ ml/wml40/features/properties/__init__.py | 0 .../features/properties/values/__init__.py | 0 .../features/properties/values/waterflow.py | 35 ++++++ .../features/properties/values/waterlevel.py | 47 ++++++++ .../properties/values/waterquality.py | 101 ++++++++++++++++++ ml/wml40/roles/__init__.py | 0 ml/wml40/roles/dts/__init__.py | 0 ml/wml40/roles/dts/sensors/__init__.py | 0 .../roles/dts/sensors/waterlevelflowsensor.py | 8 ++ ml/wml40/roles/dts/sites/__init__.py | 0 ml/wml40/roles/dts/sites/damwall.py | 8 ++ .../dts/sites/waterqualitymeasuringpoint.py | 8 ++ .../dts/sites/waterretainingstructure.py | 8 ++ ml/wml40/roles/dts/water/inflow.py | 8 ++ ml/wml40/roles/dts/water/outflow.py | 8 ++ ml/wml40/roles/dts/water/water.py | 8 ++ ml/wml40/roles/dts/water/waterreservoir.py | 8 ++ ml/wml40/roles/hmis/__init__.py | 0 ml/wml40/roles/services/__init__.py | 0 33 files changed, 519 insertions(+), 12 deletions(-) create mode 100644 ml/fml40/features/functionalities/provides_soil_data.py create mode 100644 ml/ml40/features/functionalities/provides_weather_data.py create mode 100644 ml/ml40/features/properties/values/linestring.py create mode 100644 ml/ml40/features/properties/values/linestring_wkt.py create mode 100644 ml/ml40/features/properties/values/weatherdata.py create mode 100644 ml/wml40/__init__.py create mode 100644 ml/wml40/features/__init__.py create mode 100644 ml/wml40/features/functionalities/__init__.py create mode 100644 ml/wml40/features/functionalities/provides_water_data.py create mode 100644 ml/wml40/features/functionalities/provides_water_quality_data.py create mode 100644 ml/wml40/features/properties/__init__.py create mode 100644 ml/wml40/features/properties/values/__init__.py create mode 100644 ml/wml40/features/properties/values/waterflow.py create mode 100644 ml/wml40/features/properties/values/waterlevel.py create mode 100644 ml/wml40/features/properties/values/waterquality.py create mode 100644 ml/wml40/roles/__init__.py create mode 100644 ml/wml40/roles/dts/__init__.py create mode 100644 ml/wml40/roles/dts/sensors/__init__.py create mode 100644 ml/wml40/roles/dts/sensors/waterlevelflowsensor.py create mode 100644 ml/wml40/roles/dts/sites/__init__.py create mode 100644 ml/wml40/roles/dts/sites/damwall.py create mode 100644 ml/wml40/roles/dts/sites/waterqualitymeasuringpoint.py create mode 100644 ml/wml40/roles/dts/sites/waterretainingstructure.py create mode 100644 ml/wml40/roles/dts/water/inflow.py create mode 100644 ml/wml40/roles/dts/water/outflow.py create mode 100644 ml/wml40/roles/dts/water/water.py create mode 100644 ml/wml40/roles/dts/water/waterreservoir.py create mode 100644 ml/wml40/roles/hmis/__init__.py create mode 100644 ml/wml40/roles/services/__init__.py diff --git a/ml/dt_factory.py b/ml/dt_factory.py index bc6a745..5ab05e6 100644 --- a/ml/dt_factory.py +++ b/ml/dt_factory.py @@ -8,7 +8,8 @@ from ml.parameters import Parameters from ml.entry import Entry from ml.thing import Thing -from ml.ml40.roles.servives.service import Service +from ml.ml40.roles.services.service import Service +from ml.ml40.roles.services.openweather_service import OpenWeatherService from ml.ml40.roles.hmis.app import App from ml.ml40.roles.hmis.dashboard import Dashboard from ml.ml40.roles.hmis.machine_ui import MachineUI @@ -65,6 +66,15 @@ from ml.mml40.roles.dts.parts.cantilever import Cantilever from ml.mml40.roles.dts.sensors.strain_gauge import StrainGauge +from ml.wml40.roles.dts.sensors.waterlevelflowsensor import WaterLevelFlowSensor +from ml.wml40.roles.dts.sites.damwall import DamWall +from ml.wml40.roles.dts.sites.waterqualitymeasuringpoint import WaterQualityMeasuringPoint +from ml.wml40.roles.dts.sites.waterretainingstructure import WaterRetainingStructure +from ml.wml40.roles.dts.water.inflow import Inflow +from ml.wml40.roles.dts.water.outflow import Outflow +from ml.wml40.roles.dts.water.water import Water +from ml.wml40.roles.dts.water.waterreservoir import WaterReservoir + from ml.ml40.features.properties.associations.association import Association from ml.ml40.features.properties.associations.composite import Composite from ml.ml40.features.properties.property import Property @@ -74,11 +84,14 @@ from ml.ml40.features.properties.values.dimensions import Dimensions from ml.ml40.features.properties.values.distance import Distance from ml.ml40.features.properties.values.expansion_length import ExpansionLength +from ml.ml40.features.properties.values.financialvalue import FinancialValue from ml.ml40.features.properties.values.force import Force from ml.ml40.features.properties.values.generic_property import GenericProperty from ml.ml40.features.properties.values.last_service_check import LastServiceCheck from ml.ml40.features.properties.values.lot import Lot from ml.ml40.features.properties.values.lift import Lift +from ml.ml40.features.properties.values.linestring import LineString +from ml.ml40.features.properties.values.linestring_wkt import LineStringWKT from ml.ml40.features.properties.values.liquid_filling_level import LiquidFillingLevel from ml.ml40.features.properties.values.location import Location from ml.ml40.features.properties.values.moisture import Moisture @@ -87,9 +100,13 @@ from ml.ml40.features.properties.values.personal_name import PersonalName from ml.ml40.features.properties.values.rotational_speed import RotationalSpeed from ml.ml40.features.properties.values.route import Route +from ml.ml40.features.properties.values.srid import SRID +from ml.ml40.features.properties.values.surface import Surface +from ml.ml40.features.properties.values.surface_wkt import SurfaceWKT from ml.ml40.features.properties.values.switching_stage import SwitchingStage from ml.ml40.features.properties.values.temperature import Temperature from ml.ml40.features.properties.values.time_slot import TimeSlot +from ml.ml40.features.properties.values.weatherdata import WeatherData from ml.ml40.features.properties.values.weight import Weight from ml.ml40.features.properties.values.documents.jobs.generic_job import GenericJob from ml.ml40.features.properties.values.documents.jobs.job import Job @@ -103,18 +120,18 @@ from ml.fml40.features.properties.values.dbh import DBH from ml.fml40.features.properties.values.fell_indicator import FellIndicator from ml.fml40.features.properties.values.felling_period import FellingPeriod +from ml.fml40.features.properties.values.groundclassificationmap import GroundClassificationMap from ml.fml40.features.properties.values.harvesting_parameter import HarvestingParameters from ml.fml40.features.properties.values.harvested_volume import HarvestedVolume from ml.fml40.features.properties.values.interfering_branches import InterferingBranches from ml.fml40.features.properties.values.inventory_data import InventoryData -from ml.fml40.features.properties.values.maintenance_data import MaintenanceData -from ml.fml40.features.properties.values.mean_height import MeanHeight from ml.fml40.features.properties.values.overhang import Overhang from ml.fml40.features.properties.values.stem_segment_properties import StemSegmentProperties from ml.fml40.features.properties.values.thickness_class import ThicknessClass from ml.fml40.features.properties.values.tilt import Tilt from ml.fml40.features.properties.values.tree_data import TreeData from ml.fml40.features.properties.values.tree_type import TreeType +from ml.fml40.features.properties.values.vegetationindexmap import VegetationIndexMap from ml.fml40.features.properties.values.vitality_status import VitalityStatus from ml.fml40.features.properties.values.wood_quality import WoodQuality @@ -138,6 +155,10 @@ from ml.mml40.features.properties.values.MaterialProperties import MaterialProperties from ml.mml40.features.properties.values.Stretch import Stretch +from ml.wml40.features.properties.values.waterflow import WaterFlow +from ml.wml40.features.properties.values.waterlevel import WaterLevel +from ml.wml40.features.properties.values.waterquality import WaterQuality + from ml.ml40.features.functionalities.accepts_jobs import AcceptsJobs from ml.ml40.features.functionalities.accepts_reports import AcceptsReports @@ -147,6 +168,7 @@ from ml.ml40.features.functionalities.plans_routes import PlansRoutes from ml.ml40.features.functionalities.provides_map_data import ProvidesMapData from ml.ml40.features.functionalities.provides_operational_data import ProvidesOperationalData +from ml.ml40.features.functionalities.provides_weather_data import ProvidesWeatherData from ml.ml40.features.functionalities.renders import Renders from ml.fml40.features.functionalities.accepts_felling_jobs import AcceptsFellingJobs @@ -178,6 +200,7 @@ from ml.fml40.features.functionalities.provides_moisture_prediction import ProvidesMoisturePrediction from ml.fml40.features.functionalities.provides_passability_information import ProvidesPassabilityInformation from ml.fml40.features.functionalities.provides_production_data import ProvidesProductionData +from ml.fml40.features.functionalities.provides_soil_data import ProvidesSoilData from ml.fml40.features.functionalities.provides_tree_data import ProvidesTreeData from ml.fml40.features.functionalities.provides_weather_data import ProvidesWeatherData from ml.fml40.features.functionalities.simulates_tree_growth import SimulatesTreeGrowth @@ -188,6 +211,10 @@ from ml.mml40.features.functionalities.ProvidesDisplacementData import ProvidesDisplacementData from ml.mml40.features.functionalities.ProvidesForceData import ProvidesForceData from ml.mml40.features.functionalities.ProvidesStretchData import ProvidesStretchData + +from ml.wml40.features.functionalities.provides_water_data import ProvidesWaterData +from ml.wml40.features.functionalities.provides_water_quality_data import ProvidesWaterQualityData + # TODO: Get rid of this global variable # TODO: automatically get all classes in module DT_FACTORY = {} @@ -413,9 +440,10 @@ def create_thing( def _create_thing(model, grant_type="password", secret="", username=None, password=None, - is_broker_rest=False, - is_broker=False, - is_repo=False): + is_broker_rest=False, is_broker=False, is_repo=False, is_stanford2010=False, + is_stanford2010_sync=False, + stanford2010_sync_freq=None, stanford2010_path=None, is_database=False, + database_conf=None, database_file=None): """ Creates and launches a thing which connects to the S3I @@ -458,7 +486,13 @@ def _create_thing(model, grant_type="password", password=password, is_broker_rest=is_broker_rest, is_broker=is_broker, - is_repo=is_repo + is_repo=is_repo, + is_stanford2010=is_stanford2010, + stanford2010_sync_freq=stanford2010_sync_freq, + is_stanford2010_sync=is_stanford2010_sync, + stanford2010_path=stanford2010_path, + is_database=is_database, + database_file=database_file, ) build(thing_ref, model) diff --git a/ml/fml40/features/functionalities/provides_soil_data.py b/ml/fml40/features/functionalities/provides_soil_data.py new file mode 100644 index 0000000..dcdda9c --- /dev/null +++ b/ml/fml40/features/functionalities/provides_soil_data.py @@ -0,0 +1,28 @@ +from ml.ml40.features.functionalities.functionality import Functionality +from ml.ml40.features.properties.values.moisture import Moisture +from ml.ml40.features.properties.values.temperature import Temperature + + +class ProvidesSoilData(Functionality): + def __init__(self, namespace="fml40", name="", identifier="", parent=None): + """Initializes the object. + + :param name: Object name + :param identifier: Identifier + + """ + super().__init__( + namespace=namespace, name=name, identifier=identifier, parent=parent + ) + + def getLatestMoisture(self) -> Moisture: + pass + + def getMoistureDataSeries(self, startTime, endTime) -> [Moisture]: + pass + + def getLatestTemperature(self) -> Temperature: + pass + + def getTemperatureDataSeries(self, startTime, endTime) -> [Temperature]: + pass diff --git a/ml/ml40/features/functionalities/provides_weather_data.py b/ml/ml40/features/functionalities/provides_weather_data.py new file mode 100644 index 0000000..50f7f3f --- /dev/null +++ b/ml/ml40/features/functionalities/provides_weather_data.py @@ -0,0 +1,21 @@ +from ml.ml40.features.functionalities.functionality import Functionality +from ml.ml40.features.properties.values.weatherdata import WeatherData + + +class ProvidesWeatherData(Functionality): + def __init__(self, namespace="ml40", name="", identifier="", parent=None): + """Initializes the object. + + :param name: Object name + :param identifier: Identifier + + """ + super().__init__( + namespace=namespace, name=name, identifier=identifier, parent=parent + ) + + def getLatestWeatherData(self) -> WeatherData: + pass + + def getWeatherDataSeries(self, startTime, endTime) -> [WeatherData]: + pass diff --git a/ml/ml40/features/properties/values/linestring.py b/ml/ml40/features/properties/values/linestring.py new file mode 100644 index 0000000..38f74b5 --- /dev/null +++ b/ml/ml40/features/properties/values/linestring.py @@ -0,0 +1,8 @@ +from ml.ml40.features.properties.values.value import Value + + +class LineString(Value): + def __init__(self, namespace="ml40", name="", identifier="", parent=None): + super().__init__( + namespace=namespace, name=name, identifier=identifier, parent=parent + ) diff --git a/ml/ml40/features/properties/values/linestring_wkt.py b/ml/ml40/features/properties/values/linestring_wkt.py new file mode 100644 index 0000000..72fdb9c --- /dev/null +++ b/ml/ml40/features/properties/values/linestring_wkt.py @@ -0,0 +1,8 @@ +from ml.ml40.features.properties.values.linestring import LineString + + +class LineStringWKT(LineString): + def __init__(self, namespace="ml40", name="", identifier="", parent=None): + super().__init__( + namespace=namespace, name=name, identifier=identifier, parent=parent + ) diff --git a/ml/ml40/features/properties/values/moisture.py b/ml/ml40/features/properties/values/moisture.py index e94fb10..7d3e5a2 100644 --- a/ml/ml40/features/properties/values/moisture.py +++ b/ml/ml40/features/properties/values/moisture.py @@ -7,7 +7,8 @@ def __init__(self, namespace="ml40", name="", identifier="", parent=None): namespace=namespace, name=name, identifier=identifier, parent=parent ) self.__humidity = None - self.__join_out = dict() + self.__latestTime = None + self.__json_out = dict() @property def humidity(self): @@ -17,8 +18,18 @@ def humidity(self): def humidity(self, value): self.__humidity = value + @property + def latestTime(self): + return self.__latestTime + + @latestTime.setter + def latestTime(self, value): + self.__latestTime = value + def to_json(self): - self.__join_out = super().to_json() + self.__json_out = super().to_json() if self.humidity is not None: - self.__join_out["humidity"] = self.humidity - return self.__join_out + self.__json_out["humidity"] = self.humidity + if self.latestTime is not None: + self.__json_out["latestTime"] = self.latestTime + return self.__json_out diff --git a/ml/ml40/features/properties/values/temperature.py b/ml/ml40/features/properties/values/temperature.py index 15e3516..2b5b3e3 100644 --- a/ml/ml40/features/properties/values/temperature.py +++ b/ml/ml40/features/properties/values/temperature.py @@ -7,6 +7,7 @@ def __init__(self, namespace="ml40", name="", identifier="", parent=None): namespace=namespace, name=name, identifier=identifier, parent=parent ) self.__temperature = None + self.__latestTime = None self.__json_out = dict() @property @@ -19,9 +20,19 @@ def temperature(self, value): self.__temperature = value else: raise TypeError + + @property + def latestTime(self): + return self.__latestTime + + @latestTime.setter + def latestTime(self, value): + self.__latestTime = value def to_json(self): self.__json_out = super().to_json() if self.temperature is not None: self.__json_out["temperature"] = self.temperature + if self.latestTime is not None: + self.__json_out["latestTime"] = self.latestTime return self.__json_out diff --git a/ml/ml40/features/properties/values/weatherdata.py b/ml/ml40/features/properties/values/weatherdata.py new file mode 100644 index 0000000..d9fa52d --- /dev/null +++ b/ml/ml40/features/properties/values/weatherdata.py @@ -0,0 +1,90 @@ +from ml.ml40.features.properties.values.value import Value + + +class WeatherData(Value): + def __init__(self, namespace="ml40", name="", identifier="", parent=None): + super().__init__( + namespace=namespace, name=name, identifier=identifier, parent=parent + ) + self.__latestTime = None + self.__latestClouds = None + self.__latestDetailedStatus = None + self.__latestHumidity = None + self.__latestRain = None + self.__latestStatus = None + self.__latestTemperature = None + self.__json_out = {} + + @property + def latestTime(self): + return self.__latestTime + + @latestTime.setter + def latestTime(self, value): + self.__latestTime = value + + @property + def latestClouds(self): + return self.__latestClouds + + @latestClouds.setter + def latestClouds(self, value): + self.__latestClouds = value + + @property + def latestDetailedStatus(self): + return self.__latestDetailedStatus + + @latestDetailedStatus.setter + def latestDetailedStatus(self, value): + self.__latestDetailedStatus = value + + @property + def latestHumidity(self): + return self.__latestHumidity + + @latestHumidity.setter + def latestHumidity(self, value): + self.__latestHumidity = value + + @property + def latestRain(self): + return self.__latestRain + + @latestRain.setter + def latestRain(self, value): + self.__latestRain = value + + @property + def latestStatus(self): + return self.__latestStatus + + @latestStatus.setter + def latestStatus(self, value): + self.__latestStatus = value + + @property + def latestTemperature(self): + return self.__latestTemperature + + @latestTemperature.setter + def latestTemperature(self, value): + self.__latestTemperature = value + + def to_json(self): + self.__json_out = super().to_json() + if self.latestTime is not None: + self.__json_out["latestTime"] = self.latestTime + if self.latestClouds is not None: + self.__json_out["latestClouds"] = self.latestClouds + if self.latestDetailedStatus is not None: + self.__json_out["latestDetailedStatus"] = self.latestDetailedStatus + if self.latestHumidity is not None: + self.__json_out["latestHumidity"] = self.latestHumidity + if self.latestRain is not None: + self.__json_out["latestRain"] = self.latestRain + if self.latestStatus is not None: + self.__json_out["latestStatus"] = self.latestStatus + if self.latestTemperature is not None: + self.__json_out["latestTemperature"] = self.latestTemperature + return self.__json_out \ No newline at end of file diff --git a/ml/tools.py b/ml/tools.py index 28e7c71..7a5030b 100644 --- a/ml/tools.py +++ b/ml/tools.py @@ -162,7 +162,7 @@ def remove_namespace(input_str): :rtype: str """ - return input_str.replace("mml40::", "").replace("fml40::", "").replace("ml40::", "") + return input_str.replace("wml40::", "").replace("mml40::", "").replace("fml40::", "").replace("ml40::", "") def check_var_conflict(var): diff --git a/ml/wml40/__init__.py b/ml/wml40/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/ml/wml40/features/__init__.py b/ml/wml40/features/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/ml/wml40/features/functionalities/__init__.py b/ml/wml40/features/functionalities/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/ml/wml40/features/functionalities/provides_water_data.py b/ml/wml40/features/functionalities/provides_water_data.py new file mode 100644 index 0000000..6078689 --- /dev/null +++ b/ml/wml40/features/functionalities/provides_water_data.py @@ -0,0 +1,29 @@ +from ml.ml40.features.functionalities.functionality import Functionality +from ml.wml40.features.properties.values.waterlevel import WaterLevel +from ml.wml40.features.properties.values.waterflow import WaterFlow + + +class ProvidesWaterData(Functionality): + def __init__(self, namespace="wml40", name="", identifier="", parent=None): + """Initializes the object. + + :param name: Object name + :param identifier: Identifier + + """ + super().__init__( + namespace=namespace, name=name, identifier=identifier, parent=parent + ) + + def getLatestLevel(self) -> WaterLevel: + pass + + def getLevelDataSeries(self, startTime, endTime) -> [WaterLevel]: + return "Dataseries Data is huge" + + + def getLatestFlow(self) -> WaterFlow: + pass + + def getFlowDataSeries(self, startTime, endTime) -> [WaterFlow]: + pass diff --git a/ml/wml40/features/functionalities/provides_water_quality_data.py b/ml/wml40/features/functionalities/provides_water_quality_data.py new file mode 100644 index 0000000..856d0a0 --- /dev/null +++ b/ml/wml40/features/functionalities/provides_water_quality_data.py @@ -0,0 +1,20 @@ +from ml.ml40.features.functionalities.functionality import Functionality +from ml.wml40.features.properties.values.waterquality import WaterQuality + + +class ProvidesWaterQualityData(Functionality): + def __init__(self, namespace="wml40", name="", identifier="", parent=None): + """Initializes the object. + + :param name: Object name + :param identifier: Identifier + + """ + super().__init__( + namespace=namespace, name=name, identifier=identifier, parent=parent + ) + + def getQualityTimeSeries(self, startTime, endTime) -> [WaterQuality]: + pass + + diff --git a/ml/wml40/features/properties/__init__.py b/ml/wml40/features/properties/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/ml/wml40/features/properties/values/__init__.py b/ml/wml40/features/properties/values/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/ml/wml40/features/properties/values/waterflow.py b/ml/wml40/features/properties/values/waterflow.py new file mode 100644 index 0000000..1eed94d --- /dev/null +++ b/ml/wml40/features/properties/values/waterflow.py @@ -0,0 +1,35 @@ +from ml.ml40.features.properties.values.value import Value + + +class WaterFlow(Value): + def __init__(self, namespace="wml40", name="", identifier="", parent=None): + super().__init__( + namespace=namespace, name=name, identifier=identifier, parent=parent + ) + self.__latestTime = None + self.__latestValue = None + self.__json_out = {} + + @property + def latestTime(self): + return self.__latestTime + + @latestTime.setter + def latestTime(self, value): + self.__latestTime = value + + @property + def latestValue(self): + return self.__latestValue + + @latestValue.setter + def latestValue(self, value): + self.__latestValue = value + + def to_json(self): + self.__json_out = super().to_json() + if self.latestTime is not None: + self.__json_out["latestTime"] = self.latestTime + if self.latestValue is not None: + self.__json_out["latestValue"] = self.latestValue + return self.__json_out diff --git a/ml/wml40/features/properties/values/waterlevel.py b/ml/wml40/features/properties/values/waterlevel.py new file mode 100644 index 0000000..1f54a6d --- /dev/null +++ b/ml/wml40/features/properties/values/waterlevel.py @@ -0,0 +1,47 @@ +from ml.ml40.features.properties.values.value import Value + + +class WaterLevel(Value): + def __init__(self, namespace="wml40", name="", identifier="", parent=None): + super().__init__( + namespace=namespace, name=name, identifier=identifier, parent=parent + ) + self.__latestTime = None + self.__latestValue = None + self.__upperLimit = None + self.__json_out = {} + + @property + def latestTime(self): + return self.__latestTime + + @latestTime.setter + def latestTime(self, value): + self.__latestTime = value + + @property + def latestValue(self): + return self.__latestValue + + @latestValue.setter + def latestValue(self, value): + self.__latestValue = value + + @property + def upperLimit(self): + return self.__upperLimit + + @upperLimit.setter + def upperLimit(self, value): + self.__upperLimit = value + + def to_json(self): + self.__json_out = super().to_json() + if self.latestTime is not None: + self.__json_out["latestTime"] = self.latestTime + if self.latestValue is not None: + self.__json_out["latestValue"] = self.latestValue + if self.upperLimit is not None: + self.__json_out["upperLimit"] = self.upperLimit + return self.__json_out + diff --git a/ml/wml40/features/properties/values/waterquality.py b/ml/wml40/features/properties/values/waterquality.py new file mode 100644 index 0000000..3fa8c64 --- /dev/null +++ b/ml/wml40/features/properties/values/waterquality.py @@ -0,0 +1,101 @@ +from ml.ml40.features.properties.values.value import Value + + +class WaterQuality(Value): + def __init__(self, namespace="wml40", name="", identifier="", parent=None): + super().__init__( + namespace=namespace, name=name, identifier=identifier, parent=parent + ) + self.__latestInorgN = None + self.__latestNH4N = None + self.__latestNO2N = None + self.__latestNO3N = None + self.__latestPHValue = None + self.__latestTime = None + self.__latestTOC = None + self.__latestTP = None + self.__json_out = {} + + @property + def latestInorgN(self): + return self.__latestInorgN + + @latestInorgN.setter + def latestInorgN(self, value): + self.__latestInorgN = value + + @property + def latestNH4N(self): + return self.__latestValue + + @latestNH4N.setter + def latestNH4N(self, value): + self.__latestValue = value + + @property + def latestNO2N(self): + return self.__latestNO2 + + @latestNO2N.setter + def latestNO2N(self, value): + self.__latestNO2 = value + + @property + def latestNO3N(self): + return self.__latestNO3 + + @latestNO3N.setter + def latestNO3N(self, value): + self.__latestNO3 = value + + @property + def latestPHValue(self): + return self.__latestPHValue + + @latestPHValue.setter + def latestPHValue(self, value): + self.__latestPHValue = value + + @property + def latestTime(self): + return self.__latestTime + + @latestTime.setter + def latestTime(self, value): + self.__latestTime = value + + @property + def latestTOC(self): + return self.__latestTOC + + @latestTOC.setter + def latestTOC(self, value): + self.__latestTOC = value + + @property + def latestTP(self): + return self.__latestTP + + @latestTP.setter + def latestTP(self, value): + self.__latestTP = value + + def to_json(self): + self.__json_out = super().to_json() + if self.latestInorgN is not None: + self.__json_out["latestInorgN"] = self.latestInorgN + if self.latestNH4N is not None: + self.__json_out["latestNH4N"] = self.latestNH4N + if self.latestNO2N is not None: + self.__json_out["latestNO2N"] = self.latestNO2N + if self.latestNO3N is not None: + self.__json_out["latestNO3N"] = self.latestNO3N + if self.latestPHValue is not None: + self.__json_out["latestPHValue"] = self.latestPHValue + if self.latestTime is not None: + self.__json_out["latestTime"] = self.latestTime + if self.latestTOC is not None: + self.__json_out["latestTOC"] = self.latestTOC + if self.latestTP is not None: + self.__json_out["latestTP"] = self.latestTP + return self.__json_out diff --git a/ml/wml40/roles/__init__.py b/ml/wml40/roles/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/ml/wml40/roles/dts/__init__.py b/ml/wml40/roles/dts/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/ml/wml40/roles/dts/sensors/__init__.py b/ml/wml40/roles/dts/sensors/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/ml/wml40/roles/dts/sensors/waterlevelflowsensor.py b/ml/wml40/roles/dts/sensors/waterlevelflowsensor.py new file mode 100644 index 0000000..75bfd40 --- /dev/null +++ b/ml/wml40/roles/dts/sensors/waterlevelflowsensor.py @@ -0,0 +1,8 @@ +from ml.ml40.roles.dts.sensors.sensor import Sensor + + +class WaterLevelFlowSensor(Sensor): + def __init__(self, namespace="wml40", name="", identifier="", parent=None): + super().__init__( + namespace=namespace, name=name, identifier=identifier, parent=parent + ) diff --git a/ml/wml40/roles/dts/sites/__init__.py b/ml/wml40/roles/dts/sites/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/ml/wml40/roles/dts/sites/damwall.py b/ml/wml40/roles/dts/sites/damwall.py new file mode 100644 index 0000000..2452e1d --- /dev/null +++ b/ml/wml40/roles/dts/sites/damwall.py @@ -0,0 +1,8 @@ +from ml.ml40.roles.dts.sites.site import Site + + +class DamWall(Site): + def __init__(self, namespace="wml40", name="", identifier="", parent=None): + super().__init__( + namespace=namespace, name=name, identifier=identifier, parent=parent + ) diff --git a/ml/wml40/roles/dts/sites/waterqualitymeasuringpoint.py b/ml/wml40/roles/dts/sites/waterqualitymeasuringpoint.py new file mode 100644 index 0000000..e2f98df --- /dev/null +++ b/ml/wml40/roles/dts/sites/waterqualitymeasuringpoint.py @@ -0,0 +1,8 @@ +from ml.ml40.roles.dts.sites.site import Site + + +class WaterQualityMeasuringPoint(Site): + def __init__(self, namespace="wml40", name="", identifier="", parent=None): + super().__init__( + namespace=namespace, name=name, identifier=identifier, parent=parent + ) diff --git a/ml/wml40/roles/dts/sites/waterretainingstructure.py b/ml/wml40/roles/dts/sites/waterretainingstructure.py new file mode 100644 index 0000000..c8c32c4 --- /dev/null +++ b/ml/wml40/roles/dts/sites/waterretainingstructure.py @@ -0,0 +1,8 @@ +from ml.ml40.roles.dts.sites.site import Site + + +class WaterRetainingStructure(Site): + def __init__(self, namespace="wml40", name="", identifier="", parent=None): + super().__init__( + namespace=namespace, name=name, identifier=identifier, parent=parent + ) diff --git a/ml/wml40/roles/dts/water/inflow.py b/ml/wml40/roles/dts/water/inflow.py new file mode 100644 index 0000000..af0ac3f --- /dev/null +++ b/ml/wml40/roles/dts/water/inflow.py @@ -0,0 +1,8 @@ +from ml.wml40.roles.dts.water.water import Water + + +class Inflow(Water): + def __init__(self, namespace="wml40", name="", identifier="", parent=None): + super().__init__( + namespace=namespace, name=name, identifier=identifier, parent=parent + ) diff --git a/ml/wml40/roles/dts/water/outflow.py b/ml/wml40/roles/dts/water/outflow.py new file mode 100644 index 0000000..e7ca26c --- /dev/null +++ b/ml/wml40/roles/dts/water/outflow.py @@ -0,0 +1,8 @@ +from ml.wml40.roles.dts.water.water import Water + + +class Outflow(Water): + def __init__(self, namespace="wml40", name="", identifier="", parent=None): + super().__init__( + namespace=namespace, name=name, identifier=identifier, parent=parent + ) diff --git a/ml/wml40/roles/dts/water/water.py b/ml/wml40/roles/dts/water/water.py new file mode 100644 index 0000000..8038192 --- /dev/null +++ b/ml/wml40/roles/dts/water/water.py @@ -0,0 +1,8 @@ +from ml.ml40.roles.dts.dt import DT + + +class Water(DT): + def __init__(self, namespace="wml40", name="", identifier="", parent=None): + super().__init__( + namespace=namespace, name=name, identifier=identifier, parent=parent + ) diff --git a/ml/wml40/roles/dts/water/waterreservoir.py b/ml/wml40/roles/dts/water/waterreservoir.py new file mode 100644 index 0000000..a04123e --- /dev/null +++ b/ml/wml40/roles/dts/water/waterreservoir.py @@ -0,0 +1,8 @@ +from ml.wml40.roles.dts.water.water import Water + + +class WaterReservoir(Water): + def __init__(self, namespace="wml40", name="", identifier="", parent=None): + super().__init__( + namespace=namespace, name=name, identifier=identifier, parent=parent + ) diff --git a/ml/wml40/roles/hmis/__init__.py b/ml/wml40/roles/hmis/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/ml/wml40/roles/services/__init__.py b/ml/wml40/roles/services/__init__.py new file mode 100644 index 0000000..e69de29 -- GitLab From 8161e92e1f4184ab14762a9bbdc792b4459f45c6 Mon Sep 17 00:00:00 2001 From: "schinke.lennart" Date: Fri, 22 Jul 2022 15:49:38 +0200 Subject: [PATCH 2/7] updated dt_factory.py to the newer version, I had an older one --- ml/dt_factory.py | 17 ++++++----------- 1 file changed, 6 insertions(+), 11 deletions(-) diff --git a/ml/dt_factory.py b/ml/dt_factory.py index 5ab05e6..2357050 100644 --- a/ml/dt_factory.py +++ b/ml/dt_factory.py @@ -125,6 +125,8 @@ from ml.fml40.features.properties.values.harvested_volume import HarvestedVolume from ml.fml40.features.properties.values.interfering_branches import InterferingBranches from ml.fml40.features.properties.values.inventory_data import InventoryData +from ml.fml40.features.properties.values.maintenance_data import MaintenanceData +from ml.fml40.features.properties.values.mean_height import MeanHeight from ml.fml40.features.properties.values.overhang import Overhang from ml.fml40.features.properties.values.stem_segment_properties import StemSegmentProperties from ml.fml40.features.properties.values.thickness_class import ThicknessClass @@ -440,10 +442,9 @@ def create_thing( def _create_thing(model, grant_type="password", secret="", username=None, password=None, - is_broker_rest=False, is_broker=False, is_repo=False, is_stanford2010=False, - is_stanford2010_sync=False, - stanford2010_sync_freq=None, stanford2010_path=None, is_database=False, - database_conf=None, database_file=None): + is_broker_rest=False, + is_broker=False, + is_repo=False): """ Creates and launches a thing which connects to the S3I @@ -486,13 +487,7 @@ def _create_thing(model, grant_type="password", password=password, is_broker_rest=is_broker_rest, is_broker=is_broker, - is_repo=is_repo, - is_stanford2010=is_stanford2010, - stanford2010_sync_freq=stanford2010_sync_freq, - is_stanford2010_sync=is_stanford2010_sync, - stanford2010_path=stanford2010_path, - is_database=is_database, - database_file=database_file, + is_repo=is_repo ) build(thing_ref, model) -- GitLab From e35d8d3ce494123f402a38cbd0e36af53404aa31 Mon Sep 17 00:00:00 2001 From: "schinke.lennart" Date: Fri, 22 Jul 2022 16:06:08 +0200 Subject: [PATCH 3/7] changed folder servives to services --- ml/ml40/roles/{servives => services}/__init__.py | 0 ml/ml40/roles/{servives => services}/service.py | 0 2 files changed, 0 insertions(+), 0 deletions(-) rename ml/ml40/roles/{servives => services}/__init__.py (100%) rename ml/ml40/roles/{servives => services}/service.py (100%) diff --git a/ml/ml40/roles/servives/__init__.py b/ml/ml40/roles/services/__init__.py similarity index 100% rename from ml/ml40/roles/servives/__init__.py rename to ml/ml40/roles/services/__init__.py diff --git a/ml/ml40/roles/servives/service.py b/ml/ml40/roles/services/service.py similarity index 100% rename from ml/ml40/roles/servives/service.py rename to ml/ml40/roles/services/service.py -- GitLab From d17598a888b9346cefd1f0189cd3597ba0bcecfa Mon Sep 17 00:00:00 2001 From: Lennart Schinke Date: Fri, 22 Jul 2022 16:13:45 +0200 Subject: [PATCH 4/7] Update dt_factory.py --- ml/dt_factory.py | 1 - 1 file changed, 1 deletion(-) diff --git a/ml/dt_factory.py b/ml/dt_factory.py index 2357050..7dbb904 100644 --- a/ml/dt_factory.py +++ b/ml/dt_factory.py @@ -9,7 +9,6 @@ from ml.entry import Entry from ml.thing import Thing from ml.ml40.roles.services.service import Service -from ml.ml40.roles.services.openweather_service import OpenWeatherService from ml.ml40.roles.hmis.app import App from ml.ml40.roles.hmis.dashboard import Dashboard from ml.ml40.roles.hmis.machine_ui import MachineUI -- GitLab From 62d1a251e0b86f95b3f27da7563792684a53cbd8 Mon Sep 17 00:00:00 2001 From: "schinke.lennart" Date: Mon, 1 Aug 2022 09:46:57 +0200 Subject: [PATCH 5/7] added openweather-service and final control if everything is added --- ml/dt_factory.py | 3 ++- ml/ml40/roles/services/openweather_service.py | 13 +++++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) create mode 100644 ml/ml40/roles/services/openweather_service.py diff --git a/ml/dt_factory.py b/ml/dt_factory.py index 7dbb904..d521cb6 100644 --- a/ml/dt_factory.py +++ b/ml/dt_factory.py @@ -9,6 +9,7 @@ from ml.entry import Entry from ml.thing import Thing from ml.ml40.roles.services.service import Service +from ml.ml40.roles.services.openweather_service import OpenWeatherService from ml.ml40.roles.hmis.app import App from ml.ml40.roles.hmis.dashboard import Dashboard from ml.ml40.roles.hmis.machine_ui import MachineUI @@ -486,7 +487,7 @@ def _create_thing(model, grant_type="password", password=password, is_broker_rest=is_broker_rest, is_broker=is_broker, - is_repo=is_repo + is_repo=is_repo ) build(thing_ref, model) diff --git a/ml/ml40/roles/services/openweather_service.py b/ml/ml40/roles/services/openweather_service.py new file mode 100644 index 0000000..c83085d --- /dev/null +++ b/ml/ml40/roles/services/openweather_service.py @@ -0,0 +1,13 @@ +from ml.ml40.roles.services.service import Service + + +class OpenWeatherService(Service): + def __init__(self, namespace="ml40", name="", identifier="", parent=None): + super().__init__( + namespace=namespace, name=name, identifier=identifier, parent=parent + ) + + + + + -- GitLab From 52c14b25cb7d1cf8228c3b2b2405bae58b093cd8 Mon Sep 17 00:00:00 2001 From: Jiahang Chen <13508-jiahang.chen@users.noreply.git.rwth-aachen.de> Date: Mon, 1 Aug 2022 13:03:41 +0200 Subject: [PATCH 6/7] add property into linestring_wkt.py --- .../properties/values/linestring_wkt.py | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/ml/ml40/features/properties/values/linestring_wkt.py b/ml/ml40/features/properties/values/linestring_wkt.py index 72fdb9c..0f878ae 100644 --- a/ml/ml40/features/properties/values/linestring_wkt.py +++ b/ml/ml40/features/properties/values/linestring_wkt.py @@ -6,3 +6,21 @@ def __init__(self, namespace="ml40", name="", identifier="", parent=None): super().__init__( namespace=namespace, name=name, identifier=identifier, parent=parent ) + self.__wkt = None + self.__json_out = dict() + + + @propertiy + def wkt(self): + return self.__wkt + + @wkt.setter + def wkt(self, value): + self.__wkt = value + + def to_json(self): + self.__json_out = super().to_json() + if self.__wkt is not None: + self.__json_out["wkt"] = self.__wkt + return self.__json_out + -- GitLab From c8731db3ed9b0424877885b244ce60d1720e914b Mon Sep 17 00:00:00 2001 From: Jiahang Chen <13508-jiahang.chen@users.noreply.git.rwth-aachen.de> Date: Mon, 1 Aug 2022 13:04:41 +0200 Subject: [PATCH 7/7] add to_json() to linestring.py --- ml/ml40/features/properties/values/linestring.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/ml/ml40/features/properties/values/linestring.py b/ml/ml40/features/properties/values/linestring.py index 38f74b5..ca01eaf 100644 --- a/ml/ml40/features/properties/values/linestring.py +++ b/ml/ml40/features/properties/values/linestring.py @@ -6,3 +6,10 @@ def __init__(self, namespace="ml40", name="", identifier="", parent=None): super().__init__( namespace=namespace, name=name, identifier=identifier, parent=parent ) + + self.__json_out = dict() + + + def to_json(self): + self.__json_out = super().to_json() + return self.__json_out -- GitLab