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
23 changes: 22 additions & 1 deletion packages/helpermodules/update_config.py
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@

class UpdateConfig:

DATASTORE_VERSION = 135
DATASTORE_VERSION = 136

valid_topic = [
"^openWB/bat/config/bat_control_activated$",
Expand Down Expand Up @@ -3448,3 +3448,24 @@ def upgrade(topic: str, payload) -> None:
return {topic: configuration_payload}
self._loop_all_received_topics(upgrade)
self._append_datastore_version(135)

def upgrade_datastore_136(self) -> None:
def upgrade(topic: str, payload) -> Optional[dict]:
if re.search("^openWB/system/device/[0-9]+/config$", topic) is not None:
payload_device = decode_payload(payload)
if payload_device.get("type") == "json":
index = get_index(topic)
modified_topics = {}
for topic_component, payload_component in self.all_received_topics.items():
if re.search(f"^openWB/system/device/{index}/component/[0-9]+/config$",
topic_component) is not None:
payload_component = decode_payload(payload_component)
if (
payload_component["type"] == "counter" and
"jq_frequency" not in payload_component["configuration"]
):
payload_component["configuration"].update({"jq_frequency": None})
modified_topics[topic_component] = payload_component
return modified_topics
self._loop_all_received_topics(upgrade)
self._append_datastore_version(136)
4 changes: 3 additions & 1 deletion packages/modules/devices/generic/json/config.py
Original file line number Diff line number Diff line change
Expand Up @@ -64,14 +64,16 @@ def __init__(self,
jq_current_l3: Optional[str] = None,
jq_voltage_l1: Optional[str] = None,
jq_voltage_l2: Optional[str] = None,
jq_voltage_l3: Optional[str] = None):
jq_voltage_l3: Optional[str] = None,
jq_frequency: Optional[str] = None):
self.jq_power = jq_power
self.jq_exported = jq_exported
self.jq_imported = jq_imported
self.jq_powers = (jq_power_l1, jq_power_l2, jq_power_l3)
self.jq_power_factors = (jq_power_factor_l1, jq_power_factor_l2, jq_power_factor_l3)
self.jq_currents = (jq_current_l1, jq_current_l2, jq_current_l3)
self.jq_voltages = (jq_voltage_l1, jq_voltage_l2, jq_voltage_l3)
self.jq_frequency = jq_frequency


class JsonCounterSetup(ComponentSetup[JsonCounterConfiguration]):
Expand Down
9 changes: 8 additions & 1 deletion packages/modules/devices/generic/json/counter.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ def _compile_jq_filters(self) -> None:
self.jq_voltages = [jq.compile(v) for v in config.jq_voltages] if all(config.jq_voltages) else None
self.jq_imported = jq.compile(config.jq_imported) if config.jq_imported else None
self.jq_exported = jq.compile(config.jq_exported) if config.jq_exported else None
self.jq_frequency = jq.compile(config.jq_frequency) if config.jq_frequency else None

def initialize(self) -> None:
self.__device_id: int = self.kwargs['device_id']
Expand Down Expand Up @@ -64,6 +65,11 @@ def update(self, response) -> None:
if self.jq_voltages is not None else None
)

frequency = (
float(self.jq_frequency.input(response).first())
if self.jq_frequency is not None else None
)

if self.jq_imported is None or self.jq_exported is None:
self.peak_filter.check_values(power)
imported, exported = self.sim_counter.sim_count(power)
Expand All @@ -79,7 +85,8 @@ def update(self, response) -> None:
powers=powers,
currents=currents,
power_factors=power_factors,
voltages=voltages
voltages=voltages,
frequency=frequency
)
self.store.set(counter_state)

Expand Down