CityBEM-CityLayers-SaeedRay.../hub/city_model_structure/iot/sensor.py

80 lines
1.5 KiB
Python

"""
Sensor module
SPDX - License - Identifier: LGPL - 3.0 - or -later
Copyright © 2022 Concordia CERC group
Project Coder Guille Gutierrez guillermo.gutierrezmorote@concordia.ca
"""
from hub.helpers.location import Location
from hub.city_model_structure.iot.sensor_measure import SensorMeasure
from hub.city_model_structure.iot.sensor_type import SensorType
class Sensor:
"""
Sensor abstract class
"""
def __init__(self):
self._name = None
self._type = None
self._units = None
self._location = None
@property
def name(self):
"""
Get sensor name
:return: str
"""
if self._name is None:
raise ValueError('Undefined sensor name')
return self._name
@name.setter
def name(self, value):
"""
Set sensor name
:param value: str
"""
if value is not None:
self._name = str(value)
@property
def type(self) -> SensorType:
"""
Get sensor type
:return: str
"""
return self._type
@property
def units(self):
"""
Get sensor units
:return: str
"""
return self._units
@property
def location(self) -> Location:
"""
Get sensor location
:return: Location
"""
return self._location
@location.setter
def location(self, value):
"""
Set sensor location
:param value: Location
"""
self._location = value
@property
def measures(self) -> [SensorMeasure]:
"""
Raises not implemented error
"""
raise NotImplementedError