fix: errors

This commit is contained in:
Florian Bezannier
2022-09-05 20:44:24 +02:00
parent 9f214bbc09
commit 7b7d16a49b
9 changed files with 34 additions and 61 deletions
+7 -1
View File
@@ -5,7 +5,13 @@ The car model need to be known by the app. To find it, the app use the first 10
If the car isn't in the list we need to add it, to do that you need to edit the file here:
Go to [car_models.yml](https://github.com/flobz/psa_car_controller/blob/master/psa_car_controller/psacc/resources/car_models.yml)
and click on edit then copy cut and already existent model in the list and edit all properties that are incorrect for your model.
and click on edit then copy cut an already existent model in the list and edit all properties that are incorrect for your model:
- Model
- First ten letter of the car VIN:
- Useable Electric capacity in kw: [find it here](https://ev-database.org/cheatsheet/useable-battery-capacity-electric-car)
- Fuel capacity in liter
- abrp ref : [find it here](https://api.iternio.com/1/tlm/get_carmodels_list?api_key=32b2162f-9599-4647-8139-66e9f9528370)
Finally, click on propose change.
### 2. Error during activation {'newversion': '2.0.0', 'newversionurl': 'http://m.inwebo.com/', 'err': 'NOK:FORBIDDEN'}
+2 -2
View File
@@ -40,7 +40,7 @@ class RemoteClient:
"accept": "application/hal+json",
"User-Agent": "okhttp/4.8.0",
}
self.last_request = []
self.last_request = None
self.mqtt_client = None
self.otp = None
@@ -140,7 +140,7 @@ class RemoteClient:
logger.debug("%s %s", mqtt_request.topic, message)
self.mqtt_client.publish(mqtt_request.topic, message)
if store:
self.last_request = [mqtt_request]
self.last_request = mqtt_request
def mqtt_request(self, vin, req_parameters, topic):
return MQTTRequest(topic, vin, req_parameters, self.account_info.get_mqtt_customer_id())
@@ -75,7 +75,7 @@ class PSACarController(metaclass=Singleton):
if path.isfile(self.config_name):
self.myp = PSAClient.load_config(name=self.config_name)
elif self.args.web_conf:
logger.error("Bad config")
logger.error("No config file")
self.is_good = False
return False
else:
@@ -83,7 +83,7 @@ class Charging:
try:
last_charge = Database.get_last_charge(car.vin)
charge_just_finished = last_charge.stop_at is None
except TypeError:
except (TypeError, AttributeError):
logger.debug("battery table is probably empty :", exc_info=True)
charge_just_finished = False
if charge_just_finished:
+11 -8
View File
@@ -3,13 +3,13 @@ from datetime import datetime, timedelta
from statistics import mean, StatisticsError
import xml.etree.ElementTree as ElT
import numbers
from typing import Union
import requests
import reverse_geocode
from pytz import UTC
from requests import RequestException
CO2_SIGNAL_REQ_INTERVAL = 600
CO2_SIGNAL_URL = "https://api.co2signal.com"
@@ -21,7 +21,7 @@ class Ecomix:
co2_signal_key = None
@staticmethod
def get_data_france(start, end):
def get_data_france(start, end) -> Union[float, None]:
start_str = start.strftime("%d/%m/%Y")
end_str = end.strftime("%d/%m/%Y")
try:
@@ -42,13 +42,16 @@ class Ecomix:
valeurs = etree.iter("valeur")
co2_per_kw = []
valeur = next(valeurs)
while int(valeur.attrib["periode"]) != period_start:
valeur = next(valeurs)
while int(valeur.attrib["periode"]) != period_end:
co2_per_kw.append(int(valeur.text))
try:
valeur = next(valeurs)
while int(valeur.attrib["periode"]) != period_start:
valeur = next(valeurs)
while int(valeur.attrib["periode"]) != period_end:
co2_per_kw.append(int(valeur.text))
valeur = next(valeurs)
except StopIteration:
logger.exception("Can't get CO2 value between %s %s", start, end)
return None
try:
return mean(co2_per_kw)
except StatisticsError:
@@ -175,7 +175,7 @@ class PSAClient:
def set_record(self, value: bool):
self._record_enabled = value
def record_info(self, car: Car):
def record_info(self, car: Car): # pylint: disable=too-many-locals
mileage = car.status.timed_odometer.mileage
level = car.status.get_energy('Electric').level
level_fuel = car.status.get_energy('Fuel').level
@@ -202,8 +202,9 @@ class PSAClient:
Charging.record_charging(car, charging_status, charge_date, level, latitude, longitude, self.country_code,
charging_mode, charging_rate, autonomy)
logger.debug("charging_status:%s ", charging_status)
except AttributeError:
except AttributeError as ex:
logger.error("charging status not available from api")
logger.debug(ex)
def __iter__(self):
for key, value in self.__dict__.items():
@@ -33,46 +33,3 @@ class ElecModel(CarModel):
@property
def max_fuel_consumption(self):
return 0
# car_models = [
# ElecModel("e-208", 46, "peugeot:e208:20:50", r"VR3UHZKX.*"),
# ElecModel("e-2008", 46, "peugeot:e2008:20:48", r"VR3UKZKX.*"),
# ElecModel("e-Spacetourer", 46, "peugeot:etraveler:21:50:citroen", r"VF7VZZKX.*"),
# ElecModel("e-Traveller", 46, "peugeot:etraveler:21:50", r"VF3VZZKX.*"),
# ElecModel("corsa-e", 46, "opel:corsae:20:50", r"VXKUHZKX.*"),
# ElecModel("DS3 Crossback e-tense", 46, "ds:3crossback:20:48", r"VR1UJZKX.*"), # VR1UJZKXZL
# ElecModel("Mokka-e", 46, "opel:mokkae:20:48", r"VXKUKZKX.*"), # VXKUKZKXZM
# ElecModel("Zaphira-e", 68, "peugeot:etraveler:21:75:opel", r"VXEVZZKX.*"), # VXEVZZKXZMZ
# ElecModel("E-C4", 46, "citroen:ec4:21:50", r"VR7BCZKX.*"), # VR7BCZKXCM
# CarModel("SUV 3008 Hybrid 225", 13.2, 43, reg=r"VF3M4DGZ.*"), # VF3M4DGZUMS
# CarModel("SUV 3008", 0, 53, reg=r"VF3MJEHZ.*"), # VF3MJEHZRJ
# CarModel("308", 0, 56, reg=r"VF3L35GG.*"),
# CarModel("208", 0, 44, reg=r"VR3UPHN[SE].*"), # VR3UPHNSSM VR3UPHNEKM
# CarModel("2008", 0, 44, reg=r"VR3USHNS.*"), # VR3USHNSKM
# CarModel("2008 II", 0, 45, reg=r"VR3USHNK.*"), # VR3USHNKKL
# CarModel("SUV 5008 II", 0, 56, reg=r"VF3MRHNS.*"), # vf3mrhnsum
# CarModel("SUV 5008 II 2018", 0, 56, reg=r"VF3MRHNY.*"), # VF3MRHNYHH
# CarModel("N5008 GT-LINE 1.6L", 0, 60, reg=r"VF3MCBHZ.*"), # VF3MCBHZWJ
# CarModel("C5 Aircross Hybrid", 13.2, 43, reg=r"VR7A4DGZ.*"), # VR7A4DGZSM
# CarModel("DS7 Crossback E-Tense 300 4x4", 11.5, 43, reg="VR1J45GB.*"), # VR1J45GBUM VR1J45GBUL VR1J45GBUK
# CarModel("508 SW Hybrid", 11.5, 45, reg=r"VR3F4DGZ.*"), # VR3F4DGZTL
# CarModel("508 Hybrid", 11.5, 43, reg=r"VR3F3DGZ.*"), # VR3F3DGZTM
# CarModel("508 SW 2.0 HDI 163CV", 0, 72, reg=r"VF38ERHH.*"), # VF38ERHH
# CarModel("Grandland X Hybrid", 13.2, 43, reg=r"W0VZ4DGZ.*"), # W0VZ4DGZ2L
# CarModel("Grandland X Hybrid 4x4", 13.2, 43, reg=r"W0VZ45GB.*") # W0VZ45GB3L
# ]
# fuel_model = []
#
# import sys
#
#
# print(yaml.dump(car_models, sys.stdout))
# with open("car_models.yml", "w") as f:
# yaml.dump(car_models, f)
#
# models_file = "/home/florian/Documents/psa/psa-car-controller/psacc/resources/car_models.yml"
#
# models
# res = yaml.load(models)[0]
# res
+1 -1
View File
@@ -28,7 +28,7 @@ class CarStatus(Status):
if len(self.last_position.geometry.coordinates) < 3:
# set altitude none
self.last_position.geometry.coordinates.append(None)
except AttributeError:
except (AttributeError, TypeError):
self.last_position = Position(geometry=Geometry(coordinates=[None, None, None], type="Point"),
properties=PositionProperties(updated_at=None))
if self.kinetic is None:
+8 -2
View File
@@ -236,8 +236,14 @@ function sortMultipleTable (sortParams, data, tables) {
function getLastPosition (trips) {
const lastPos = {}
lastPos.lat = trips.at(-1).positions.lat[0]
lastPos.lon = trips.at(-1).positions.long[0]
if(Array.isArray(trips) && trips.length > 0){
lastPos.lat = trips.at(-1).positions.lat[0]
lastPos.lon = trips.at(-1).positions.long[0]
}
else {
lastPos.lat = 40
lastPos.lon = 40
}
return lastPos
}