Skip to content
Draft
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
5 changes: 5 additions & 0 deletions emlite_mediator/emlite/messages/emlite_response.ksy
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ seq:
"object_id_type::hardware_version": hardware_rec
"object_id_type::csq_net_op": csq_net_op_rec
"object_id_type::instantaneous_voltage": instantaneous_voltage_rec
"object_id_type::average_voltage": average_voltage_rec
"object_id_type::prepay_enabled_flag": prepay_enabled_rec
"object_id_type::prepay_balance": prepay_balance_rec
"object_id_type::three_phase_instantaneous_voltage_l1": three_phase_instantaneous_voltage_l1_rec
Expand Down Expand Up @@ -76,6 +77,10 @@ types:
seq:
- id: voltage
type: u2le
average_voltage_rec:
seq:
- id: voltage
type: u2le
prepay_enabled_rec:
seq:
- id: enabled_flag
Expand Down
39 changes: 39 additions & 0 deletions emlite_mediator/emlite/messages/emlite_response.py
Original file line number Diff line number Diff line change
Expand Up @@ -91,6 +91,10 @@ def _read(self):
pass
self.response = EmliteResponse.InstantaneousVoltageRec(self._io, self, self._root)
self.response._read()
elif _on == EmliteResponse.ObjectIdType.average_voltage:
pass
self.response = EmliteResponse.AverageVoltageRec(self._io, self, self._root)
self.response._read()
elif _on == EmliteResponse.ObjectIdType.prepay_balance:
pass
self.response = EmliteResponse.PrepayBalanceRec(self._io, self, self._root)
Expand Down Expand Up @@ -133,6 +137,9 @@ def _fetch_instances(self):
elif _on == EmliteResponse.ObjectIdType.instantaneous_voltage:
pass
self.response._fetch_instances()
elif _on == EmliteResponse.ObjectIdType.average_voltage:
pass
self.response._fetch_instances()
elif _on == EmliteResponse.ObjectIdType.prepay_balance:
pass
self.response._fetch_instances()
Expand Down Expand Up @@ -171,6 +178,9 @@ def _write__seq(self, io=None):
elif _on == EmliteResponse.ObjectIdType.instantaneous_voltage:
pass
self.response._write__seq(self._io)
elif _on == EmliteResponse.ObjectIdType.average_voltage:
pass
self.response._write__seq(self._io)
elif _on == EmliteResponse.ObjectIdType.prepay_balance:
pass
self.response._write__seq(self._io)
Expand Down Expand Up @@ -230,6 +240,12 @@ def _check(self):
raise kaitaistruct.ConsistencyError(u"response", self.response._root, self._root)
if self.response._parent != self:
raise kaitaistruct.ConsistencyError(u"response", self.response._parent, self)
elif _on == EmliteResponse.ObjectIdType.average_voltage:
pass
if self.response._root != self._root:
raise kaitaistruct.ConsistencyError(u"response", self.response._root, self._root)
if self.response._parent != self:
raise kaitaistruct.ConsistencyError(u"response", self.response._parent, self)
elif _on == EmliteResponse.ObjectIdType.prepay_balance:
pass
if self.response._root != self._root:
Expand Down Expand Up @@ -326,6 +342,29 @@ def _check(self):
pass


class AverageVoltageRec(ReadWriteKaitaiStruct):
def __init__(self, _io=None, _parent=None, _root=None):
self._io = _io
self._parent = _parent
self._root = _root

def _read(self):
self.voltage = self._io.read_u2le()


def _fetch_instances(self):
pass


def _write__seq(self, io=None):
super(EmliteResponse.AverageVoltageRec, self)._write__seq(io)
self._io.write_u2le(self.voltage)


def _check(self):
pass


class CsqNetOpRec(ReadWriteKaitaiStruct):
def __init__(self, _io=None, _parent=None, _root=None):
self._io = _io
Expand Down
5 changes: 5 additions & 0 deletions emlite_mediator/mediator/client.py
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,11 @@ def instantaneous_voltage(self) -> float:
logger.info('received instantaneous voltage', voltage=data.voltage)
return data.voltage

def average_voltage(self) -> float:
data = self._read_element(ObjectIdEnum.average_voltage)
logger.info('received average voltage', voltage=data.voltage)
return data.voltage

def prepay_enabled(self) -> bool:
data = self._read_element(ObjectIdEnum.prepay_enabled_flag)
enabled: bool = data.enabled_flag == 1
Expand Down
1 change: 1 addition & 0 deletions emlite_mediator/mediator/grpc/client.py
Original file line number Diff line number Diff line change
Expand Up @@ -61,4 +61,5 @@ def send_message(self, message: bytes):
if __name__ == '__main__':
client = EmliteMediatorGrpcClient()
client.read_element(ObjectIdEnum.instantaneous_voltage)
client.read_element(ObjectIdEnum.average_voltage)
# client.send_message(bytes.fromhex('0160010000'))
6 changes: 4 additions & 2 deletions emlite_mediator/sync/syncer_voltage.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,9 @@ def fetch_metrics(self) -> UpdatesTuple:
'3p_voltage_l2': v2,
'3p_voltage_l3': v3}
else:
voltage = self.emlite_client.instantaneous_voltage()
metrics = {'voltage': voltage}
instantaneous_voltage = self.emlite_client.instantaneous_voltage()
average_voltage = self.emlite_client.average_voltage()
metrics = {'average_voltage': average_voltage,
'instantaneous_voltage': instantaneous_voltage}

return UpdatesTuple(metrics, None)
8 changes: 6 additions & 2 deletions tests/emlite_mediator/emlite/messages/test_emlite_response.py
Original file line number Diff line number Diff line change
Expand Up @@ -55,8 +55,12 @@ def test_prepay_balance(self):
self.assertEqual(response.balance, -33326400) # -333.264 GBP

def test_instantaneous_voltage(self):
response = self._deserialize(EmliteResponse.ObjectIdType.instantaneous_voltage, '5209')
self.assertEqual(response.voltage, 2386) # 238.6
response = self._deserialize(EmliteResponse.ObjectIdType.instantaneous_voltage, 'f300')
self.assertEqual(response.voltage, 243) # 243

def test_average_voltage(self):
response = self._deserialize(EmliteResponse.ObjectIdType.average_voltage, 'be00')
self.assertEqual(response.voltage, 190) # 190

def test_threephase_voltage(self):
response = self._deserialize(EmliteResponse.ObjectIdType.three_phase_instantaneous_voltage_l1, '5209')
Expand Down