Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
38 changes: 21 additions & 17 deletions custom_components/ocpp/api.py
Original file line number Diff line number Diff line change
@@ -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
Expand All @@ -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
Expand All @@ -28,6 +29,7 @@
ClearChargingProfileStatus,
ConfigurationStatus,
DataTransferStatus,
Measurand,
RegistrationStatus,
RemoteStartStopStatus,
ResetStatus,
Expand Down Expand Up @@ -393,19 +395,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)
Expand Down Expand Up @@ -579,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()

Expand Down Expand Up @@ -622,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}
)
Expand Down
48 changes: 24 additions & 24 deletions custom_components/ocpp/const.py
Original file line number Diff line number Diff line change
@@ -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"
Expand Down Expand Up @@ -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
Expand Down