Device Module
The device package provides a comprehensive suite of modules for managing and interacting with various devices within the system. It includes functionalities for device classification, historical data retrieval, and real-time device control.
Device Helper
The helper.py module implements the DeviceHelper class, which offers utility functions for device-related operations.
Device Types (Enum)
The DeviceHelper enum defines the following device types:
ON_OFF_EV_CHARGERELECTRIC_VEHICLE_V1GELECTRIC_VEHICLE_V2GELECTRIC_STORAGEPHOTOVOLTAIC_GENERATOR_PVLIBSPACE_HEATINGTHERMAL_STORAGEWATER_HEATER
Static Methods
device_exists(devices, device_id): Checks if a device with the specified ID exists in a list of devices.count_devices_by_type(device_list, device_type): Counts the number of devices of a specific type in a list.get_all_values_by_filtering_devices(device_list, filter_key, filter_value, target_key): Retrieves a list of values for atarget_keyfrom a list of devices, filtered by afilter_keyandfilter_value.
Historical Data Reader
The historical.py module contains the HistoricalDataReader class, responsible for retrieving historical data for a wide range of devices from InfluxDB.
Methods
get_historical_data(start, stop, devices): Retrieves historical data for a list of devices. It uses helper methods to get data based on the device type.
Realtime Data Manager
The realtime.py module features the RealtimeDataManager class, designed to manage real-time interactions with devices. This includes setting device states and retrieving current data through a Redis message broker.
Methods
has_device(device_id): Checks if a device exists.set_device_state(broker, device_id, action_to_apply): Sets the state of a device by publishing a message to the Redis broker.get_device_state(broker, entity_id, field): Gets the state of a device by sending a request to the Redis broker.