|
|
@@ -1,75 +0,0 @@
|
|
|
-from mongoengine import connect, EmbeddedDocument, Document, StringField, IntField, ListField, EmbeddedDocumentField
|
|
|
-
|
|
|
-connect('Medidores', host='192.168.100.5', port=27017, username='mailScheduler', password='pqowieuryt')
|
|
|
-
|
|
|
-class Medicion(EmbeddedDocument):
|
|
|
- descripcion = StringField()
|
|
|
- registro = IntField()
|
|
|
- lectura = StringField()
|
|
|
-
|
|
|
-class Logs(Document):
|
|
|
- meta = {'collection': 'meters_logs'}
|
|
|
- serialNumber = StringField()
|
|
|
- meterLogNumber = IntField()
|
|
|
- logDate = StringField()
|
|
|
- saveDate = StringField()
|
|
|
- mediciones = ListField(EmbeddedDocumentField(Medicion))
|
|
|
-
|
|
|
-
|
|
|
-class LogRetriever:
|
|
|
-
|
|
|
- def __init__(self, serial_number, log_number, register):
|
|
|
- self.serial_number = serial_number
|
|
|
- self.log_number = log_number
|
|
|
- self.register = register
|
|
|
-
|
|
|
- def _make_pipeline(self, start_date, end_date, aggregate_by):
|
|
|
- pipeline= [
|
|
|
- {'$project':
|
|
|
- {
|
|
|
- 'serialNumber': 1,
|
|
|
- 'meterLogNumber': 1,
|
|
|
- 'mediciones': 1,
|
|
|
- 'logDate': 1,
|
|
|
- 'hour': {'$hour': {'$dateFromString': {'dateString': '$logDate'}}},
|
|
|
- 'day': {'$dayOfMonth': {'$dateFromString': {'dateString': '$logDate'}}},
|
|
|
- 'month': {'$month': {'$dateFromString': {'dateString': '$logDate'}}},
|
|
|
- 'year': {'$year': {'$dateFromString': {'dateString': '$logDate'}}},
|
|
|
- }
|
|
|
- },
|
|
|
- {'$unwind': '$mediciones' },
|
|
|
- {'$match': {
|
|
|
- 'serialNumber': self.serial_number,
|
|
|
- 'meterLogNumber': self.log_number,
|
|
|
- "mediciones.registro": self.register,
|
|
|
- 'logDate': {'$gte': start_date, '$lt': end_date}}},
|
|
|
- {'$group':
|
|
|
- {
|
|
|
- '_id': aggregate_by,
|
|
|
- 'date': { '$min': '$logDate'},
|
|
|
- 'total': {'$sum': { '$toInt': "$mediciones.lectura"}}
|
|
|
- }
|
|
|
- },
|
|
|
- {'$sort': { 'date': -1 }}
|
|
|
- ]
|
|
|
-
|
|
|
- return pipeline
|
|
|
-
|
|
|
- def getByDay(self, start_date, end_date):
|
|
|
- aggregate_by = {
|
|
|
- 'hour': None,
|
|
|
- 'day': '$day',
|
|
|
- 'month': None,
|
|
|
- 'year': None
|
|
|
- }
|
|
|
-
|
|
|
-serial_number = '0223406118'
|
|
|
-log_number = 2
|
|
|
-register = 4999
|
|
|
-start_date = '2019-07-22 00:00:00' # String
|
|
|
-end_date = '2019-07-23 00:00:00' # String
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-mediciones = Logs.objects.aggregate(*pipeline)
|