fix openapi spec, get mileage from vehicle and record it in the db

This commit is contained in:
Florian Bezannier
2020-12-12 23:47:13 +01:00
parent 307fb937db
commit fdeba33685
3 changed files with 66 additions and 12 deletions
+8 -8
View File
@@ -174,10 +174,10 @@ class MyPSACC:
self.manager.proxies = self._proxies
def get_vehicle_info(self, vin):
res = self.api().get_vehicle_status(self.get_vehicle_id_with_vin(vin))
res = self.api().get_vehicle_status(self.get_vehicle_id_with_vin(vin), extension=["odometer"])
# retry
if res is None:
res = self.api().get_vehicle_status(self.get_vehicle_id_with_vin(vin))
res = self.api().get_vehicle_status(self.get_vehicle_id_with_vin(vin), extension=["odometer"])
if self._record_enabled:
self.record_position(vin, res)
return res
@@ -404,15 +404,15 @@ class MyPSACC:
import sqlite3
conn = sqlite3.connect('info.db')
conn.execute(
"CREATE TABLE IF NOT EXISTS position (Timestamp DATETIME PRIMARY KEY, VIN TEXT, longitude REAL, latitude REAL);")
"CREATE TABLE IF NOT EXISTS position (Timestamp DATETIME PRIMARY KEY, VIN TEXT, longitude REAL, latitude REAL, mileage REAL, level INTEGER);")
longitude = res.last_position.geometry.coordinates[0]
latitude = res.last_position.geometry.coordinates[1]
date = res.last_position.properties.updated_at
e = None
mileage = res.timed_odometer.mileage
level = res.energy[0]["level"]
try:
conn.execute("INSERT INTO position(Timestamp,VIN,longitude,latitude) VALUES(?,?,?,?)",
(date, vin, longitude, latitude))
conn.execute("INSERT INTO position(Timestamp,VIN,longitude,latitude,mileage,level) VALUES(?,?,?,?,?,?)",
(date, vin, longitude, latitude, mileage, level))
conn.commit()
except sqlite3.IntegrityError:
logger.debug("position already saved")
@@ -430,7 +430,7 @@ class MyPSACC:
for row in res:
print(row)
feature = Feature(geometry=Point((row["longitude"], row["latitude"])),
properties={"vin": row["vin"], "date": row["Timestamp"]})
properties={"vin": row["vin"], "date": row["Timestamp"], "mileage": row["mileage"], "level": row["level"]})
features_list.append(feature)
feature_collection = FeatureCollection(features_list)
return geo_dumps(feature_collection, sort_keys=True)
+29 -3
View File
@@ -43,7 +43,8 @@ class Status(object):
'preconditionning': 'Preconditioning',
'privacy': 'Privacy',
'safety': 'Safety',
'service': 'ServiceType'
'service': 'ServiceType',
'timed_odometer': 'VehicleOdometer'
}
attribute_map = {
@@ -59,10 +60,11 @@ class Status(object):
'preconditionning': 'preconditionning',
'privacy': 'privacy',
'safety': 'safety',
'service': 'service'
'service': 'service',
'timed_odometer': 'timed.odometer'
}
def __init__(self, embedded=None, links=None, battery=None, doors_state=None, energy=None, environment=None, ignition=None, kinetic=None, last_position=None, preconditionning=None, privacy=None, safety=None, service=None): # noqa: E501
def __init__(self, embedded=None, links=None, battery=None, doors_state=None, energy=None, environment=None, ignition=None, kinetic=None, last_position=None, preconditionning=None, privacy=None, safety=None, service=None, timed_odometer=None): # noqa: E501
"""Status - a model defined in Swagger""" # noqa: E501
self._embedded = None
@@ -78,6 +80,7 @@ class Status(object):
self._privacy = None
self._safety = None
self._service = None
self._timed_odometer = None
self.discriminator = None
if embedded is not None:
@@ -105,6 +108,8 @@ class Status(object):
self.safety = safety
if service is not None:
self.service = service
if timed_odometer is not None:
self.timed_odometer = timed_odometer
@property
def embedded(self):
@@ -383,6 +388,27 @@ class Status(object):
self._service = service
@property
def timed_odometer(self):
"""Gets the timed_odometer of this Status. # noqa: E501
:return: The timed_odometer of this Status. # noqa: E501
:rtype: VehicleOdometer
"""
return self._timed_odometer
@timed_odometer.setter
def timed_odometer(self, timed_odometer):
"""Sets the timed_odometer of this Status.
:param timed_odometer: The timed_odometer of this Status. # noqa: E501
:type: VehicleOdometer
"""
self._timed_odometer = timed_odometer
def to_dict(self):
"""Returns the model properties as a dict"""
result = {}
+29 -1
View File
@@ -31,22 +31,50 @@ class VehicleOdometer(object):
and the value is json key in definition.
"""
swagger_types = {
'updated_at': 'datetime',
'mileage': 'float'
}
attribute_map = {
'updated_at': 'updatedAt',
'mileage': 'mileage'
}
def __init__(self, mileage=None): # noqa: E501
def __init__(self, updated_at=None, mileage=None): # noqa: E501
"""VehicleOdometer - a model defined in Swagger""" # noqa: E501
self._updated_at = None
self._mileage = None
self.discriminator = None
if updated_at is not None:
self.updated_at = updated_at
if mileage is not None:
self.mileage = mileage
@property
def updated_at(self):
"""Gets the updated_at of this VehicleOdometer. # noqa: E501
Date when the resource has been updated. # noqa: E501
:return: The updated_at of this VehicleOdometer. # noqa: E501
:rtype: datetime
"""
return self._updated_at
@updated_at.setter
def updated_at(self, updated_at):
"""Sets the updated_at of this VehicleOdometer.
Date when the resource has been updated. # noqa: E501
:param updated_at: The updated_at of this VehicleOdometer. # noqa: E501
:type: datetime
"""
self._updated_at = updated_at
@property
def mileage(self):
"""Gets the mileage of this VehicleOdometer. # noqa: E501