shepherd-core 2024.11.2__tar.gz → 2024.11.3__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/PKG-INFO +1 -1
- {shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/shepherd_core/data_models/content/virtual_harvester.py +24 -4
- {shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/shepherd_core/reader.py +21 -0
- {shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/shepherd_core/version.py +1 -1
- {shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/shepherd_core/vsource/virtual_harvester_simulation.py +1 -0
- {shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/shepherd_core/vsource/virtual_source_model.py +2 -0
- {shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/shepherd_core/vsource/virtual_source_simulation.py +1 -0
- {shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/shepherd_core.egg-info/PKG-INFO +1 -1
- {shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/tests/vsource/test_converter.py +14 -6
- {shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/tests/vsource/test_harvester.py +31 -1
- {shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/README.md +0 -0
- {shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/examples/eenv_generator.py +0 -0
- {shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/examples/experiment_from_yaml.yaml +0 -0
- {shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/examples/experiment_generic_var1.py +0 -0
- {shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/examples/experiment_generic_var2.py +0 -0
- {shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/examples/experiment_models.py +0 -0
- {shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/examples/firmware_model.py +0 -0
- {shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/examples/firmware_modification.py +0 -0
- {shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/examples/inventory.py +0 -0
- {shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/examples/simulate_vharvester.py +0 -0
- {shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/examples/simulate_vsource.py +0 -0
- {shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/examples/uart_decode_waveform.py +0 -0
- {shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/examples/uart_raw2.csv +0 -0
- {shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/examples/vsource_debug_sim.py +0 -0
- {shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/pyproject.toml +0 -0
- {shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/setup.cfg +0 -0
- {shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/shepherd_core/__init__.py +0 -0
- {shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/shepherd_core/calibration_hw_def.py +0 -0
- {shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/shepherd_core/commons.py +0 -0
- {shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/shepherd_core/data_models/__init__.py +0 -0
- {shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/shepherd_core/data_models/base/__init__.py +0 -0
- {shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/shepherd_core/data_models/base/cal_measurement.py +0 -0
- {shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/shepherd_core/data_models/base/calibration.py +0 -0
- {shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/shepherd_core/data_models/base/content.py +0 -0
- {shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/shepherd_core/data_models/base/shepherd.py +0 -0
- {shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/shepherd_core/data_models/base/timezone.py +0 -0
- {shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/shepherd_core/data_models/base/wrapper.py +0 -0
- {shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/shepherd_core/data_models/content/__init__.py +0 -0
- {shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/shepherd_core/data_models/content/_external_fixtures.yaml +0 -0
- {shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/shepherd_core/data_models/content/energy_environment.py +0 -0
- {shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/shepherd_core/data_models/content/energy_environment_fixture.yaml +0 -0
- {shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/shepherd_core/data_models/content/firmware.py +0 -0
- {shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/shepherd_core/data_models/content/firmware_datatype.py +0 -0
- {shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/shepherd_core/data_models/content/virtual_harvester_fixture.yaml +0 -0
- {shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/shepherd_core/data_models/content/virtual_source.py +0 -0
- {shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/shepherd_core/data_models/content/virtual_source_fixture.yaml +0 -0
- {shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/shepherd_core/data_models/experiment/__init__.py +0 -0
- {shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/shepherd_core/data_models/experiment/experiment.py +0 -0
- {shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/shepherd_core/data_models/experiment/observer_features.py +0 -0
- {shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/shepherd_core/data_models/experiment/target_config.py +0 -0
- {shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/shepherd_core/data_models/readme.md +0 -0
- {shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/shepherd_core/data_models/task/__init__.py +0 -0
- {shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/shepherd_core/data_models/task/emulation.py +0 -0
- {shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/shepherd_core/data_models/task/firmware_mod.py +0 -0
- {shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/shepherd_core/data_models/task/harvest.py +0 -0
- {shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/shepherd_core/data_models/task/observer_tasks.py +0 -0
- {shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/shepherd_core/data_models/task/programming.py +0 -0
- {shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/shepherd_core/data_models/task/testbed_tasks.py +0 -0
- {shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/shepherd_core/data_models/testbed/__init__.py +0 -0
- {shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/shepherd_core/data_models/testbed/cape.py +0 -0
- {shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/shepherd_core/data_models/testbed/cape_fixture.yaml +0 -0
- {shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/shepherd_core/data_models/testbed/gpio.py +0 -0
- {shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/shepherd_core/data_models/testbed/gpio_fixture.yaml +0 -0
- {shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/shepherd_core/data_models/testbed/mcu.py +0 -0
- {shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/shepherd_core/data_models/testbed/mcu_fixture.yaml +0 -0
- {shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/shepherd_core/data_models/testbed/observer.py +0 -0
- {shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/shepherd_core/data_models/testbed/observer_fixture.yaml +0 -0
- {shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/shepherd_core/data_models/testbed/target.py +0 -0
- {shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/shepherd_core/data_models/testbed/target_fixture.old1 +0 -0
- {shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/shepherd_core/data_models/testbed/target_fixture.yaml +0 -0
- {shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/shepherd_core/data_models/testbed/testbed.py +0 -0
- {shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/shepherd_core/data_models/testbed/testbed_fixture.yaml +0 -0
- {shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/shepherd_core/data_models/virtual_source_doc.txt +0 -0
- {shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/shepherd_core/decoder_waveform/__init__.py +0 -0
- {shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/shepherd_core/decoder_waveform/uart.py +0 -0
- {shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/shepherd_core/fw_tools/__init__.py +0 -0
- {shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/shepherd_core/fw_tools/converter.py +0 -0
- {shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/shepherd_core/fw_tools/converter_elf.py +0 -0
- {shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/shepherd_core/fw_tools/patcher.py +0 -0
- {shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/shepherd_core/fw_tools/validation.py +0 -0
- {shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/shepherd_core/inventory/__init__.py +0 -0
- {shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/shepherd_core/inventory/python.py +0 -0
- {shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/shepherd_core/inventory/system.py +0 -0
- {shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/shepherd_core/inventory/target.py +0 -0
- {shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/shepherd_core/logger.py +0 -0
- {shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/shepherd_core/testbed_client/__init__.py +0 -0
- {shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/shepherd_core/testbed_client/cache_path.py +0 -0
- {shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/shepherd_core/testbed_client/client_abc_fix.py +0 -0
- {shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/shepherd_core/testbed_client/client_web.py +0 -0
- {shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/shepherd_core/testbed_client/fixtures.py +0 -0
- {shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/shepherd_core/testbed_client/user_model.py +0 -0
- {shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/shepherd_core/vsource/__init__.py +0 -0
- {shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/shepherd_core/vsource/target_model.py +0 -0
- {shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/shepherd_core/vsource/virtual_converter_model.py +0 -0
- {shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/shepherd_core/vsource/virtual_harvester_model.py +0 -0
- {shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/shepherd_core/writer.py +0 -0
- {shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/shepherd_core.egg-info/SOURCES.txt +0 -0
- {shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/shepherd_core.egg-info/dependency_links.txt +0 -0
- {shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/shepherd_core.egg-info/requires.txt +0 -0
- {shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/shepherd_core.egg-info/top_level.txt +0 -0
- {shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/shepherd_core.egg-info/zip-safe +0 -0
- {shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/tests/__init__.py +0 -0
- {shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/tests/conftest.py +0 -0
- {shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/tests/data_models/__init__.py +0 -0
- {shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/tests/data_models/conftest.py +0 -0
- {shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/tests/data_models/example_cal_data.yaml +0 -0
- {shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/tests/data_models/example_cal_data_faulty.yaml +0 -0
- {shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/tests/data_models/example_cal_meas.yaml +0 -0
- {shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/tests/data_models/example_cal_meas_faulty1.yaml +0 -0
- {shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/tests/data_models/example_cal_meas_faulty2.yaml +0 -0
- {shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/tests/data_models/example_config_emulator.yaml +0 -0
- {shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/tests/data_models/example_config_experiment.yaml +0 -0
- {shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/tests/data_models/example_config_experiment_alternative.yaml +0 -0
- {shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/tests/data_models/example_config_harvester.yaml +0 -0
- {shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/tests/data_models/example_config_testbed.yaml +0 -0
- {shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/tests/data_models/example_config_virtsource.yaml +0 -0
- {shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/tests/data_models/test_base_models.py +0 -0
- {shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/tests/data_models/test_content_fixtures.py +0 -0
- {shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/tests/data_models/test_content_models.py +0 -0
- {shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/tests/data_models/test_examples.py +0 -0
- {shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/tests/data_models/test_experiment_models.py +0 -0
- {shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/tests/data_models/test_task_generation.py +0 -0
- {shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/tests/data_models/test_task_models.py +0 -0
- {shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/tests/data_models/test_testbed_fixtures.py +0 -0
- {shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/tests/data_models/test_testbed_models.py +0 -0
- {shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/tests/decoder_waveform/__init__.py +0 -0
- {shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/tests/decoder_waveform/test_decoder.py +0 -0
- {shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/tests/fw_tools/__init__.py +0 -0
- {shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/tests/fw_tools/build_msp.elf +0 -0
- {shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/tests/fw_tools/build_nrf.elf +0 -0
- {shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/tests/fw_tools/conftest.py +0 -0
- {shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/tests/fw_tools/test_converter.py +0 -0
- {shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/tests/fw_tools/test_patcher.py +0 -0
- {shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/tests/fw_tools/test_validation.py +0 -0
- {shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/tests/inventory/__init__.py +0 -0
- {shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/tests/inventory/test_inventory.py +0 -0
- {shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/tests/test_cal_hw.py +0 -0
- {shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/tests/test_examples.py +0 -0
- {shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/tests/test_logger.py +0 -0
- {shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/tests/test_reader.py +0 -0
- {shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/tests/test_writer.py +0 -0
- {shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/tests/testbed_client/__init__.py +0 -0
- {shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/tests/vsource/__init__.py +0 -0
- {shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/tests/vsource/conftest.py +0 -0
- {shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/tests/vsource/test_z.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: shepherd_core
|
|
3
|
-
Version: 2024.11.
|
|
3
|
+
Version: 2024.11.3
|
|
4
4
|
Summary: Programming- and CLI-Interface for the h5-dataformat of the Shepherd-Testbed
|
|
5
5
|
Author-email: Ingmar Splitt <ingmar.splitt@tu-dresden.de>
|
|
6
6
|
Maintainer-email: Ingmar Splitt <ingmar.splitt@tu-dresden.de>
|
|
@@ -239,6 +239,7 @@ class HarvesterPRUConfig(ShpModel):
|
|
|
239
239
|
data: VirtualHarvesterConfig,
|
|
240
240
|
dtype_in: Optional[EnergyDType] = EnergyDType.ivsample,
|
|
241
241
|
window_size: Optional[u32] = None,
|
|
242
|
+
voltage_step_V: Optional[float] = None,
|
|
242
243
|
*,
|
|
243
244
|
for_emu: bool = False,
|
|
244
245
|
) -> Self:
|
|
@@ -247,17 +248,36 @@ class HarvesterPRUConfig(ShpModel):
|
|
|
247
248
|
if for_emu and dtype_in not in {EnergyDType.ivsample, EnergyDType.ivcurve}:
|
|
248
249
|
raise NotImplementedError
|
|
249
250
|
|
|
251
|
+
if for_emu and dtype_in == EnergyDType.ivcurve and voltage_step_V is None:
|
|
252
|
+
raise ValueError(
|
|
253
|
+
"For correct emulation specify voltage_step used by harvester "
|
|
254
|
+
"e.g. via file_src.get_voltage_step()"
|
|
255
|
+
)
|
|
256
|
+
|
|
257
|
+
if for_emu and dtype_in == EnergyDType.ivcurve and window_size is None:
|
|
258
|
+
raise ValueError(
|
|
259
|
+
"For correct emulation specify window_size used by harvester "
|
|
260
|
+
"e.g. via file_src.get_window_size()"
|
|
261
|
+
)
|
|
262
|
+
|
|
250
263
|
interval_ms, duration_ms = data.calc_timings_ms(for_emu=for_emu)
|
|
264
|
+
window_size = (
|
|
265
|
+
window_size
|
|
266
|
+
if window_size is not None
|
|
267
|
+
else data.calc_window_size(dtype_in, for_emu=for_emu)
|
|
268
|
+
)
|
|
269
|
+
voltage_step_mV = (
|
|
270
|
+
1e3 * voltage_step_V if voltage_step_V is not None else data.voltage_step_mV
|
|
271
|
+
)
|
|
272
|
+
|
|
251
273
|
return cls(
|
|
252
274
|
algorithm=data.calc_algorithm_num(for_emu=for_emu),
|
|
253
275
|
hrv_mode=data.calc_hrv_mode(for_emu=for_emu),
|
|
254
|
-
window_size=window_size
|
|
255
|
-
if window_size is not None
|
|
256
|
-
else data.calc_window_size(dtype_in, for_emu=for_emu),
|
|
276
|
+
window_size=window_size,
|
|
257
277
|
voltage_uV=round(data.voltage_mV * 10**3),
|
|
258
278
|
voltage_min_uV=round(data.voltage_min_mV * 10**3),
|
|
259
279
|
voltage_max_uV=round(data.voltage_max_mV * 10**3),
|
|
260
|
-
voltage_step_uV=round(
|
|
280
|
+
voltage_step_uV=round(voltage_step_mV * 10**3),
|
|
261
281
|
current_limit_nA=round(data.current_limit_uA * 10**3),
|
|
262
282
|
setpoint_n8=round(min(255, data.setpoint_n * 2**8)),
|
|
263
283
|
interval_n=round(interval_ms * samplerate_sps_default * 1e-3),
|
|
@@ -270,6 +270,26 @@ class Reader:
|
|
|
270
270
|
else:
|
|
271
271
|
return None
|
|
272
272
|
|
|
273
|
+
def get_voltage_step(self) -> Optional[float]:
|
|
274
|
+
"""Informs about the voltage step (in volts) used during harvesting the ivcurve.
|
|
275
|
+
|
|
276
|
+
Options for figuring out the real step:
|
|
277
|
+
- look into config (if available)
|
|
278
|
+
- analyze recorded data for most often used delta
|
|
279
|
+
- calculate with 'steps_n * (1 + wait_cycles)' (done for calculating window_size)
|
|
280
|
+
"""
|
|
281
|
+
voltage_step: Optional[float] = (
|
|
282
|
+
self.get_config().get("virtual_harvester", {}).get("voltage_step_mV", None)
|
|
283
|
+
)
|
|
284
|
+
if voltage_step is None:
|
|
285
|
+
dsv = self.ds_voltage[0:2000]
|
|
286
|
+
diffs_np = np.unique(dsv[1:] - dsv[0:-1], return_counts=False)
|
|
287
|
+
diffs_ls = [_e for _e in list(np.array(diffs_np)) if _e > 0]
|
|
288
|
+
voltage_step = min(diffs_ls)
|
|
289
|
+
if voltage_step is not None:
|
|
290
|
+
voltage_step = 1e-3 * voltage_step
|
|
291
|
+
return voltage_step
|
|
292
|
+
|
|
273
293
|
def get_hrv_config(self) -> dict:
|
|
274
294
|
"""Essential info for harvester.
|
|
275
295
|
|
|
@@ -278,6 +298,7 @@ class Reader:
|
|
|
278
298
|
return {
|
|
279
299
|
"datatype": self.get_datatype(),
|
|
280
300
|
"window_samples": self.get_window_samples(),
|
|
301
|
+
"voltage_step_V": self.get_voltage_step(),
|
|
281
302
|
}
|
|
282
303
|
|
|
283
304
|
def is_valid(self) -> bool:
|
{shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/shepherd_core/vsource/virtual_source_model.py
RENAMED
|
@@ -31,6 +31,7 @@ class VirtualSourceModel:
|
|
|
31
31
|
cal_emu: CalibrationEmulator,
|
|
32
32
|
dtype_in: EnergyDType = EnergyDType.ivsample,
|
|
33
33
|
window_size: Optional[int] = None,
|
|
34
|
+
voltage_step_V: Optional[float] = None,
|
|
34
35
|
*,
|
|
35
36
|
log_intermediate: bool = False,
|
|
36
37
|
) -> None:
|
|
@@ -50,6 +51,7 @@ class VirtualSourceModel:
|
|
|
50
51
|
for_emu=True,
|
|
51
52
|
dtype_in=dtype_in,
|
|
52
53
|
window_size=window_size,
|
|
54
|
+
voltage_step_V=voltage_step_V,
|
|
53
55
|
)
|
|
54
56
|
|
|
55
57
|
self.hrv: VirtualHarvesterModel = VirtualHarvesterModel(hrv_config)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: shepherd_core
|
|
3
|
-
Version: 2024.11.
|
|
3
|
+
Version: 2024.11.3
|
|
4
4
|
Summary: Programming- and CLI-Interface for the h5-dataformat of the Shepherd-Testbed
|
|
5
5
|
Author-email: Ingmar Splitt <ingmar.splitt@tu-dresden.de>
|
|
6
6
|
Maintainer-email: Ingmar Splitt <ingmar.splitt@tu-dresden.de>
|
|
@@ -26,6 +26,7 @@ def src_model(
|
|
|
26
26
|
name: str,
|
|
27
27
|
dtype_in: EnergyDType = EnergyDType.ivsample,
|
|
28
28
|
window_size: Optional[int] = None,
|
|
29
|
+
voltage_step_V: Optional[float] = None,
|
|
29
30
|
) -> VirtualSourceModel:
|
|
30
31
|
src_config = VirtualSourceConfig(name=name, V_intermediate_init_mV=2000)
|
|
31
32
|
cal_emu = CalibrationEmulator()
|
|
@@ -35,6 +36,7 @@ def src_model(
|
|
|
35
36
|
log_intermediate=False,
|
|
36
37
|
dtype_in=dtype_in,
|
|
37
38
|
window_size=window_size,
|
|
39
|
+
voltage_step_V=voltage_step_V,
|
|
38
40
|
)
|
|
39
41
|
|
|
40
42
|
|
|
@@ -145,9 +147,12 @@ def test_vsource_vsrc_create_files(
|
|
|
145
147
|
@pytest.mark.parametrize("src_name", src_list)
|
|
146
148
|
def test_vsource_vsrc_sim_curve(src_name: str, file_ivcurve: Path) -> None:
|
|
147
149
|
with Reader(file_ivcurve) as file:
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
150
|
+
src = src_model(
|
|
151
|
+
"BQ25504s",
|
|
152
|
+
dtype_in=file.get_datatype(),
|
|
153
|
+
window_size=file.get_window_samples(),
|
|
154
|
+
voltage_step_V=file.get_voltage_step(),
|
|
155
|
+
)
|
|
151
156
|
for _t, _v, _i in file.read_buffers():
|
|
152
157
|
length = max(_v.size, _i.size)
|
|
153
158
|
for _n in range(length):
|
|
@@ -157,9 +162,12 @@ def test_vsource_vsrc_sim_curve(src_name: str, file_ivcurve: Path) -> None:
|
|
|
157
162
|
@pytest.mark.parametrize("src_name", src_list)
|
|
158
163
|
def test_vsource_vsrc_sim_sample(src_name: str, file_ivsample: Path) -> None:
|
|
159
164
|
with Reader(file_ivsample) as file:
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
165
|
+
src = src_model(
|
|
166
|
+
"BQ25504s",
|
|
167
|
+
dtype_in=file.get_datatype(),
|
|
168
|
+
window_size=file.get_window_samples(),
|
|
169
|
+
voltage_step_V=file.get_voltage_step(),
|
|
170
|
+
)
|
|
163
171
|
for _t, _v, _i in file.read_buffers():
|
|
164
172
|
length = max(_v.size, _i.size)
|
|
165
173
|
for _n in range(length):
|
|
@@ -39,7 +39,13 @@ def test_vsource_hrv_fail_ivcurve(hrv_name: str) -> None:
|
|
|
39
39
|
# the first algos are not usable for ivcurve
|
|
40
40
|
hrv_config = VirtualHarvesterConfig(name=hrv_name)
|
|
41
41
|
with pytest.raises(ValueError): # noqa: PT011
|
|
42
|
-
_ = HarvesterPRUConfig.from_vhrv(
|
|
42
|
+
_ = HarvesterPRUConfig.from_vhrv(
|
|
43
|
+
hrv_config,
|
|
44
|
+
for_emu=True,
|
|
45
|
+
dtype_in=EnergyDType.ivcurve,
|
|
46
|
+
window_size=100,
|
|
47
|
+
voltage_step_V=0.1,
|
|
48
|
+
)
|
|
43
49
|
|
|
44
50
|
|
|
45
51
|
@pytest.mark.parametrize("hrv_name", hrv_list[3:])
|
|
@@ -51,6 +57,7 @@ def test_vsource_hrv_sim(hrv_name: str, file_ivcurve: Path) -> None:
|
|
|
51
57
|
for_emu=True,
|
|
52
58
|
dtype_in=file.get_datatype(),
|
|
53
59
|
window_size=file.get_window_samples(),
|
|
60
|
+
voltage_step_V=file.get_voltage_step(),
|
|
54
61
|
)
|
|
55
62
|
hrv = VirtualHarvesterModel(hrv_pru)
|
|
56
63
|
for _t, _v, _i in file.read_buffers():
|
|
@@ -71,3 +78,26 @@ def test_vsource_hrv_fail_unknown_type() -> None:
|
|
|
71
78
|
hrv_config = VirtualHarvesterConfig(name="mppt_voc")
|
|
72
79
|
with pytest.raises(KeyError):
|
|
73
80
|
_ = HarvesterPRUConfig.from_vhrv(hrv_config, for_emu=True, dtype_in="xyz")
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
def test_vsource_hrv_adapt_voltage_step() -> None:
|
|
84
|
+
hrv_config = VirtualHarvesterConfig(name="mppt_bq")
|
|
85
|
+
# first case without setting step-size
|
|
86
|
+
pru_config1 = HarvesterPRUConfig.from_vhrv(
|
|
87
|
+
hrv_config,
|
|
88
|
+
for_emu=True,
|
|
89
|
+
dtype_in=EnergyDType.ivcurve,
|
|
90
|
+
window_size=1000,
|
|
91
|
+
voltage_step_V=1e-3 * hrv_config.voltage_step_mV,
|
|
92
|
+
)
|
|
93
|
+
step_expected_uV = (pru_config1.voltage_max_uV - pru_config1.voltage_min_uV) / (1000 - 1)
|
|
94
|
+
assert pru_config1.voltage_step_uV > 2 * step_expected_uV
|
|
95
|
+
# now it gets set
|
|
96
|
+
pru_config2 = HarvesterPRUConfig.from_vhrv(
|
|
97
|
+
hrv_config,
|
|
98
|
+
for_emu=True,
|
|
99
|
+
dtype_in=EnergyDType.ivcurve,
|
|
100
|
+
window_size=1000,
|
|
101
|
+
voltage_step_V=1e-6 * step_expected_uV,
|
|
102
|
+
)
|
|
103
|
+
assert pru_config2.voltage_step_uV < 2 * step_expected_uV
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/shepherd_core/data_models/base/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/shepherd_core/data_models/base/calibration.py
RENAMED
|
File without changes
|
{shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/shepherd_core/data_models/base/content.py
RENAMED
|
File without changes
|
{shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/shepherd_core/data_models/base/shepherd.py
RENAMED
|
File without changes
|
{shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/shepherd_core/data_models/base/timezone.py
RENAMED
|
File without changes
|
{shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/shepherd_core/data_models/base/wrapper.py
RENAMED
|
File without changes
|
{shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/shepherd_core/data_models/content/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/shepherd_core/data_models/content/firmware.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/shepherd_core/data_models/experiment/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/shepherd_core/data_models/task/__init__.py
RENAMED
|
File without changes
|
{shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/shepherd_core/data_models/task/emulation.py
RENAMED
|
File without changes
|
{shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/shepherd_core/data_models/task/firmware_mod.py
RENAMED
|
File without changes
|
{shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/shepherd_core/data_models/task/harvest.py
RENAMED
|
File without changes
|
{shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/shepherd_core/data_models/task/observer_tasks.py
RENAMED
|
File without changes
|
{shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/shepherd_core/data_models/task/programming.py
RENAMED
|
File without changes
|
{shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/shepherd_core/data_models/task/testbed_tasks.py
RENAMED
|
File without changes
|
{shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/shepherd_core/data_models/testbed/__init__.py
RENAMED
|
File without changes
|
{shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/shepherd_core/data_models/testbed/cape.py
RENAMED
|
File without changes
|
|
File without changes
|
{shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/shepherd_core/data_models/testbed/gpio.py
RENAMED
|
File without changes
|
|
File without changes
|
{shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/shepherd_core/data_models/testbed/mcu.py
RENAMED
|
File without changes
|
|
File without changes
|
{shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/shepherd_core/data_models/testbed/observer.py
RENAMED
|
File without changes
|
|
File without changes
|
{shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/shepherd_core/data_models/testbed/target.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/shepherd_core/data_models/testbed/testbed.py
RENAMED
|
File without changes
|
|
File without changes
|
{shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/shepherd_core/data_models/virtual_source_doc.txt
RENAMED
|
File without changes
|
{shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/shepherd_core/decoder_waveform/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/shepherd_core/testbed_client/__init__.py
RENAMED
|
File without changes
|
{shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/shepherd_core/testbed_client/cache_path.py
RENAMED
|
File without changes
|
{shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/shepherd_core/testbed_client/client_abc_fix.py
RENAMED
|
File without changes
|
{shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/shepherd_core/testbed_client/client_web.py
RENAMED
|
File without changes
|
{shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/shepherd_core/testbed_client/fixtures.py
RENAMED
|
File without changes
|
{shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/shepherd_core/testbed_client/user_model.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/shepherd_core/vsource/virtual_converter_model.py
RENAMED
|
File without changes
|
{shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/shepherd_core/vsource/virtual_harvester_model.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/shepherd_core.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/tests/data_models/example_cal_data_faulty.yaml
RENAMED
|
File without changes
|
|
File without changes
|
{shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/tests/data_models/example_cal_meas_faulty1.yaml
RENAMED
|
File without changes
|
{shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/tests/data_models/example_cal_meas_faulty2.yaml
RENAMED
|
File without changes
|
{shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/tests/data_models/example_config_emulator.yaml
RENAMED
|
File without changes
|
{shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/tests/data_models/example_config_experiment.yaml
RENAMED
|
File without changes
|
|
File without changes
|
{shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/tests/data_models/example_config_harvester.yaml
RENAMED
|
File without changes
|
{shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/tests/data_models/example_config_testbed.yaml
RENAMED
|
File without changes
|
{shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/tests/data_models/example_config_virtsource.yaml
RENAMED
|
File without changes
|
|
File without changes
|
{shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/tests/data_models/test_content_fixtures.py
RENAMED
|
File without changes
|
{shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/tests/data_models/test_content_models.py
RENAMED
|
File without changes
|
|
File without changes
|
{shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/tests/data_models/test_experiment_models.py
RENAMED
|
File without changes
|
{shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/tests/data_models/test_task_generation.py
RENAMED
|
File without changes
|
|
File without changes
|
{shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/tests/data_models/test_testbed_fixtures.py
RENAMED
|
File without changes
|
{shepherd_core-2024.11.2 → shepherd_core-2024.11.3}/tests/data_models/test_testbed_models.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|