80 lines
1.5 KiB
Python
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
|