From bdb88bf5aefbd7e07b681c49ebdd8fb2d2803631 Mon Sep 17 00:00:00 2001 From: lbbrhzn <@lbbrhzn> Date: Tue, 6 Jul 2021 21:44:46 +0000 Subject: [PATCH 1/2] fix linting errors --- custom_components/ocpp/api.py | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/custom_components/ocpp/api.py b/custom_components/ocpp/api.py index a7810fce..ed4bc58d 100644 --- a/custom_components/ocpp/api.py +++ b/custom_components/ocpp/api.py @@ -1,6 +1,6 @@ """Representation of a OCCP Entities.""" import asyncio -from datetime import datetime, timedelta +from datetime import datetime, timedelta, timezone import logging import time from typing import Dict @@ -9,6 +9,7 @@ from homeassistant.const import TIME_MINUTES from homeassistant.core import HomeAssistant from homeassistant.helpers import device_registry +import voluptuous as vol import websockets from ocpp.exceptions import NotImplementedError @@ -393,19 +394,21 @@ async def unlock(self, connector_id: int = 1): else: _LOGGER.debug("Failed with response: %s", resp.status) return False - + async def update_firmware(self, firmware_url: str, wait_time: int = 0): """Update charger with new firmware if available.""" """where firmware_url is the http or https url of the new firmware""" """and wait_time is hours from now to wait before install""" if FEATURE_PROFILE_FW in self._features_supported: - schema = Schema(Url()) + schema = vol.Schema(vol.Url()) try: url = schema(firmware_url) raise AssertionError("Multiple invalid not raised") - except MultipleInvalid as e: + except vol.MultipleInvalid as e: _LOGGER.debug("Failed to parse url: %s", e) - update_time = (datetime.now(tz=timezone.utc) + timedelta(hours=wait_time)).isoformat() + update_time = ( + datetime.now(tz=timezone.utc) + timedelta(hours=wait_time) + ).isoformat() req = call.UpdateFirmwarePayload(location=url, retrieve_date=update_time) resp = await self.call(req) _LOGGER.debug("Response: %s", resp) From 50791868b843900432db7a61f39307b93c4168d4 Mon Sep 17 00:00:00 2001 From: lbbrhzn <@lbbrhzn> Date: Wed, 7 Jul 2021 07:21:33 +0000 Subject: [PATCH 2/2] use enums for measurand names --- custom_components/ocpp/api.py | 25 ++++++++--------- custom_components/ocpp/const.py | 48 ++++++++++++++++----------------- 2 files changed, 37 insertions(+), 36 deletions(-) diff --git a/custom_components/ocpp/api.py b/custom_components/ocpp/api.py index ed4bc58d..e87ffe03 100644 --- a/custom_components/ocpp/api.py +++ b/custom_components/ocpp/api.py @@ -29,6 +29,7 @@ ClearChargingProfileStatus, ConfigurationStatus, DataTransferStatus, + Measurand, RegistrationStatus, RemoteStartStopStatus, ResetStatus, @@ -582,12 +583,12 @@ def on_status_notification(self, connector_id, error_code, status, **kwargs): status == ChargePointStatus.suspended_ev or status == ChargePointStatus.suspended_evse ): - if "Current.Import" in self._metrics: - self._metrics["Current.Import"] = 0 - if "Power.Active.Import" in self._metrics: - self._metrics["Power.Active.Import"] = 0 - if "Power.Reactive.Import" in self._metrics: - self._metrics["Power.Reactive.Import"] = 0 + if Measurand.current_import in self._metrics: + self._metrics[Measurand.current_import] = 0 + if Measurand.power_active_import in self._metrics: + self._metrics[Measurand.power_active_import] = 0 + if Measurand.power_reactive_import in self._metrics: + self._metrics[Measurand.power_reactive_import] = 0 self._metrics["Error.Code"] = error_code return call_result.StatusNotificationPayload() @@ -625,12 +626,12 @@ def on_stop_transaction(self, meter_stop, timestamp, transaction_id, **kwargs): self._metrics["Session.Energy"] = round( int(meter_stop) / 1000 - float(self._metrics["Meter.Start"]), 1 ) - if "Current.Import" in self._metrics: - self._metrics["Current.Import"] = 0 - if "Power.Active.Import" in self._metrics: - self._metrics["Power.Active.Import"] = 0 - if "Power.Reactive.Import" in self._metrics: - self._metrics["Power.Reactive.Import"] = 0 + if Measurand.current_import in self._metrics: + self._metrics[Measurand.current_import] = 0 + if Measurand.power_active_import in self._metrics: + self._metrics[Measurand.power_active_import] = 0 + if Measurand.power_reactive_import in self._metrics: + self._metrics[Measurand.power_reactive_import] = 0 return call_result.StopTransactionPayload( id_tag_info={"status": AuthorizationStatus.accepted} ) diff --git a/custom_components/ocpp/const.py b/custom_components/ocpp/const.py index 19f6fcc1..c7b3227c 100644 --- a/custom_components/ocpp/const.py +++ b/custom_components/ocpp/const.py @@ -1,7 +1,7 @@ """Define constants for OCPP integration.""" import homeassistant.const as ha -from ocpp.v16.enums import UnitOfMeasure +from ocpp.v16.enums import Measurand, UnitOfMeasure DOMAIN = "ocpp" CONF_METER_INTERVAL = "meter_interval" @@ -49,30 +49,30 @@ # Ocpp supported measurands MEASURANDS = [ - "Current.Export", - "Current.Import", - "Current.Offered", - "Energy.Active.Export.Register", - "Energy.Active.Import.Register", - "Energy.Reactive.Export.Register", - "Energy.Reactive.Import.Register", - "Energy.Active.Export.Interval", - "Energy.Active.Import.Interval", - "Energy.Reactive.Export.Interval", - "Energy.Reactive.Import.Interval", - "Frequency", - "Power.Active.Export", - "Power.Active.Import", - "Power.Factor", - "Power.Offered", - "Power.Reactive.Export", - "Power.Reactive.Import", - "RPM", - "SoC", - "Temperature", - "Voltage", + Measurand.current_export, + Measurand.current_import, + Measurand.current_offered, + Measurand.energy_active_export_register, + Measurand.energy_active_import_register, + Measurand.energy_reactive_export_register, + Measurand.energy_reactive_import_register, + Measurand.energy_active_export_interval, + Measurand.energy_active_import_interval, + Measurand.energy_reactive_export_interval, + Measurand.energy_reactive_import_interval, + Measurand.frequency, + Measurand.power_active_export, + Measurand.power_active_import, + Measurand.power_factor, + Measurand.power_offered, + Measurand.power_reactive_export, + Measurand.power_reactive_import, + Measurand.rpm, + Measurand.soc, + Measurand.temperature, + Measurand.voltage, ] -DEFAULT_MEASURAND = "Energy.Active.Import.Register" +DEFAULT_MEASURAND = Measurand.energy_active_import_register DEFAULT_MONITORED_VARIABLES = ",".join(MEASURANDS) DEFAULT_ENERGY_UNIT = UnitOfMeasure.wh DEFAULT_POWER_UNIT = UnitOfMeasure.w