diff --git a/devices/toolkit/archiver.py b/devices/toolkit/archiver.py index 0991b05c6fac220a786b90bc922032f130785c12..35012767add234b2b0421b359bfacf19ca6b9155 100644 --- a/devices/toolkit/archiver.py +++ b/devices/toolkit/archiver.py @@ -16,6 +16,29 @@ from .archiver_base import * logger = logging.getLogger() +def parse_attribute_name(attribute_name:str): + """ + Parse the attribute names since most of the archiving operations require only + Tango full-qualified names. + """ + chunk_num = len(attribute_name.split('/')) + if (chunk_num!=4): + raise AttributeFormatException + +def reduce_attribute_name(attribute_name:str): + """ + For some operations Tango attribute must be transformed from the form 'tango://db:port/domain/family/name/attribute' + to canonical 'domain/family/name/attribute' + """ + chunk_num = len(attribute_name.split('/')) + if (chunk_num==7 and attribute_name.split('/')[0]=='tango:'): + return '/'.join(attribute_name.split('/')[3:]) + else: + if (chunk_num!=4): + raise AttributeFormatException + else: + return attribute_name + class Archiver(): """ The Archiver class implements the basic operations to perform attributes archiving @@ -50,8 +73,8 @@ class Archiver(): config_dict = self.selector.get_dict() # Set global development env variables var_dict = config_dict.get('global_variables') - self.dev_polling_time = int(var_dict.get('development_polling_time')) or 10000 - self.dev_archive_time = int(var_dict.get('development_archive_time')) or 60000 + self.dev_polling_time = int(var_dict.get('development_polling_time')) + self.dev_archive_time = int(var_dict.get('development_archive_time')) # Set devices archiving env_dict = config_dict.get('devices') for device in env_dict: @@ -91,8 +114,7 @@ class Archiver(): The ConfigurationManager and EventSubscriber devices must be already up and running. The archiving-DBMS must be already properly configured. """ - if (len(attribute_name.split('/'))!=4): - raise AttributeFormatException + parse_attribute_name(attribute_name) try: self.cm.write_attribute('SetAttributeName', attribute_name) self.cm.write_attribute('SetArchiver', self.es_name) @@ -137,8 +159,7 @@ class Archiver(): """ Stops the data archiving of the attribute passed as input, and remove it from the subscriber's list. """ - if (len(attribute_name.split('/'))!=4): - raise AttributeFormatException + parse_attribute_name(attribute_name) try: self.cm.AttributeStop(attribute_name) self.cm.AttributeRemove(attribute_name) @@ -164,14 +185,28 @@ class Archiver(): self.remove_attribute_from_archiver(attr_fullname) except Exception as e: raise Exception from e + + def remove_attributes_in_error(self,exclude:list=[],es_name:str=None): + """ + Remove from the subscriber's list all the attributes currently in error (not being archived) + """ + if es_name is not None: + es = DeviceProxy(es_name) + else: + es = self.es + attributes_nok = es.AttributeNokList or [] + exclude_list = [a.lower() for a in exclude] + attrs_list = [a.lower() for a in list(attributes_nok) if a.lower() not in exclude_list] + for a in attrs_list: + attr_fullname = reduce_attribute_name(a) + self.remove_attribute_from_archiver(attr_fullname) def start_archiving_attribute(self, attribute_name:str): """ Starts the archiving of the attribute passed as input. The attribute must be already present in the subscriber's list """ - if (len(attribute_name.split('/'))!=4): - raise AttributeFormatException + parse_attribute_name(attribute_name) try: self.cm.AttributeStart(attribute_name) except Exception as e: @@ -185,8 +220,7 @@ class Archiver(): Stops the archiving of the attribute passed as input. The attribute must be already present in the subscriber's list """ - if (len(attribute_name.split('/'))!=4): - raise AttributeFormatException + parse_attribute_name(attribute_name) try: self.cm.AttributeStop(attribute_name) except Exception as e: @@ -199,29 +233,29 @@ class Archiver(): """ Check if an attribute is in the archiving list """ - if (len(attribute_name.split('/'))!=4): - raise AttributeFormatException - try: - attributes = self.cm.AttributeSearch(attribute_name) - a = [a for a in attributes if a.lower().endswith(attribute_name.lower())] # handle cases differences - if len(attributes)>1: - raise Exception("MultipleAttributesMatched!") - if len(attributes)==1: + parse_attribute_name(attribute_name) + attributes = self.cm.AttributeSearch(attribute_name.lower()) + if len(attributes)>1: + # Handle case same attribute_name r/rw + if len(attributes)==2 and (attributes[0].endswith(attributes[1]+'w') or attributes[1].endswith(attributes[0]+'w')): return True else: - return False - except Exception as e: - raise Exception from e + raise Exception(f"Multiple Attributes Matched! {attributes}") + elif len(attributes)==1: + return True + else: + return False def update_archiving_attribute(self, attribute_name: str, polling_period: int, event_period: int, strategy: str = 'RUN'): """ Update the archiving properties of an attribute already in a subscriber list """ self.remove_attribute_from_archiver(attribute_name) - time.sleep(1) + time.sleep(3.) self.add_attribute_to_archiver(attribute_name,polling_period,event_period,strategy) - time.sleep(1) + time.sleep(3.) self.start_archiving_attribute(attribute_name) + logger.info(f"Attribute {attribute_name} successfully updated!") def get_subscriber_attributes(self,es_name:str = None): """ @@ -242,20 +276,15 @@ class Archiver(): es = DeviceProxy(es_name) else: es = self.es - try: - attrs = es.AttributeList or [] - errs = es.AttributeErrorList or [] - return dict((a,e) for a,e in zip(attrs,errs) if e) - except: - print('No attribute errors in the subscriber') - return {} + attrs = es.AttributeList or [] + errs = es.AttributeErrorList or [] + return dict((a,e) for a,e in zip(attrs,errs) if e) or {} def get_attribute_errors(self,attribute_name:str): """ Return the error related to the attribute """ - if (len(attribute_name.split('/'))!=4): - raise AttributeFormatException + parse_attribute_name(attribute_name) errs_dict = self.get_subscriber_errors() for e in errs_dict: if attribute_name in e: @@ -276,6 +305,32 @@ class Archiver(): else: return len(es.AttributeList or []) + def get_attribute_freq(self,attribute_name:str): + """ + Return the attribute archiving frequency in events/minute + """ + parse_attribute_name(attribute_name) + if self.is_attribute_archived(attribute_name): + freq_dict = dict((a,r) for a,r in zip(self.es.AttributeList,self.es.AttributeRecordFreqList)) + for f in freq_dict: + if attribute_name.lower() in f: + return freq_dict.get(f,0.) + else: + logger.warning(f"Attribute {attribute_name} not found!") + + def get_attribute_failures(self,attribute_name:str): + """ + Return the attribute failure archiving frequency in events/minute + """ + parse_attribute_name(attribute_name) + if self.is_attribute_archived(attribute_name): + fail_dict = dict((a,r) for a,r in zip(self.es.AttributeList,self.es.AttributeFailureFreqList)) + for f in fail_dict: + if attribute_name.lower() in f: + return fail_dict.get(f,0.) + else: + logger.warning(f"Attribute {attribute_name} not found!") + class AttributeFormatException(Exception): """ Exception that handles wrong attribute naming diff --git a/jupyter-notebooks/Archiving_load_test.ipynb b/jupyter-notebooks/Archiving_load_test.ipynb new file mode 100644 index 0000000000000000000000000000000000000000..afe61dacb2c9d01c17035ab641b4affadd31d7fa --- /dev/null +++ b/jupyter-notebooks/Archiving_load_test.ipynb @@ -0,0 +1,1265 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "id": "d9f35471", + "metadata": {}, + "outputs": [], + "source": [ + "import sys, time\n", + "import numpy as np\n", + "sys.path.append('/hosthome/tango/devices')\n", + "from toolkit.archiver import *\n", + "from matplotlib import pyplot as plt" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "5817986f", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Attribute lts/recv/1/version_r not found in archiving list!\n", + "Attribute lts/recv/1/opcua_missing_attributes_r not found in archiving list!\n", + "Attribute lts/recv/1/ant_mask_rw removed!\n", + "Attribute lts/recv/1/ant_status_r not found in archiving list!\n", + "Attribute lts/recv/1/clk_enable_pwr_r removed!\n", + "Attribute lts/recv/1/clk_i2c_status_r removed!\n", + "Attribute lts/recv/1/clk_pll_error_r removed!\n", + "Attribute lts/recv/1/clk_pll_locked_r removed!\n", + "Attribute lts/recv/1/clk_monitor_rate_rw removed!\n", + "Attribute lts/recv/1/clk_translator_busy_r removed!\n", + "Attribute lts/recv/1/hba_element_beamformer_delays_r removed!\n", + "Attribute lts/recv/1/hba_element_beamformer_delays_rw removed!\n", + "Attribute lts/recv/1/hba_element_led_r removed!\n", + "Attribute lts/recv/1/hba_element_led_rw removed!\n", + "Attribute lts/recv/1/hba_element_lna_pwr_r removed!\n", + "Attribute lts/recv/1/hba_element_lna_pwr_rw removed!\n", + "Attribute lts/recv/1/hba_element_pwr_r removed!\n", + "Attribute lts/recv/1/hba_element_pwr_rw removed!\n", + "Attribute lts/recv/1/rcu_adc_lock_r removed!\n", + "Attribute lts/recv/1/rcu_attenuator_r removed!\n", + "Attribute lts/recv/1/rcu_attenuator_rw removed!\n", + "Attribute lts/recv/1/rcu_band_r removed!\n", + "Attribute lts/recv/1/rcu_band_rw removed!\n", + "Attribute lts/recv/1/rcu_i2c_status_r removed!\n", + "Attribute lts/recv/1/rcu_id_r removed!\n", + "Attribute lts/recv/1/rcu_led0_r removed!\n", + "Attribute lts/recv/1/rcu_led0_rw removed!\n", + "Attribute lts/recv/1/rcu_led1_r removed!\n", + "Attribute lts/recv/1/rcu_led1_rw removed!\n", + "Attribute lts/recv/1/rcu_mask_rw removed!\n", + "Attribute lts/recv/1/rcu_monitor_rate_rw removed!\n", + "Attribute lts/recv/1/rcu_pwr_dig_r removed!\n", + "Attribute lts/recv/1/rcu_translator_busy_r removed!\n", + "Attribute lts/recv/1/rcu_version_r removed!\n", + "Attribute lts/recv/1/state removed!\n", + "Attribute lts/recv/1/status removed!\n", + "Attribute lts/recv/1/rcu_temperature_r already in archiving list!\n", + "Attribute lts/sdp/1/version_r not found in archiving list!\n", + "Attribute lts/sdp/1/opcua_missing_attributes_r not found in archiving list!\n", + "Attribute lts/sdp/1/fpga_wg_amplitude_rw not found in archiving list!\n", + "Attribute lts/sdp/1/fpga_wg_frequency_rw not found in archiving list!\n", + "Attribute lts/sdp/1/fpga_wg_phase_rw not found in archiving list!\n", + "Attribute lts/sdp/1/fpga_beamlet_output_enable_r not found in archiving list!\n", + "Attribute lts/sdp/1/fpga_beamlet_output_enable_rw not found in archiving list!\n", + "Attribute lts/sdp/1/fpga_beamlet_output_hdr_eth_destination_mac_r not found in archiving list!\n", + "Attribute lts/sdp/1/fpga_beamlet_output_hdr_eth_destination_mac_rw not found in archiving list!\n", + "Attribute lts/sdp/1/fpga_beamlet_output_hdr_ip_destination_address_r not found in archiving list!\n", + "Attribute lts/sdp/1/fpga_beamlet_output_hdr_ip_destination_address_rw not found in archiving list!\n", + "Attribute lts/sdp/1/fpga_beamlet_output_hdr_udp_destination_port_r not found in archiving list!\n", + "Attribute lts/sdp/1/fpga_beamlet_output_hdr_udp_destination_port_rw not found in archiving list!\n", + "Attribute lts/sdp/1/fpga_beamlet_output_scale_r not found in archiving list!\n", + "Attribute lts/sdp/1/fpga_beamlet_output_scale_rw not found in archiving list!\n", + "Attribute lts/sdp/1/fpga_firmware_version_r not found in archiving list!\n", + "Attribute lts/sdp/1/fpga_global_node_index_r not found in archiving list!\n", + "Attribute lts/sdp/1/fpga_hardware_version_r not found in archiving list!\n", + "Attribute lts/sdp/1/fpga_processing_enable_r not found in archiving list!\n", + "Attribute lts/sdp/1/fpga_processing_enable_rw not found in archiving list!\n", + "Attribute lts/sdp/1/fpga_scrap_r removed!\n", + "Attribute lts/sdp/1/fpga_scrap_rw removed!\n", + "Attribute lts/sdp/1/fpga_signal_input_mean_r not found in archiving list!\n", + "Attribute lts/sdp/1/fpga_signal_input_rms_r not found in archiving list!\n", + "Attribute lts/sdp/1/fpga_sdp_info_antenna_band_index_r not found in archiving list!\n", + "Attribute lts/sdp/1/fpga_sdp_info_block_period_r not found in archiving list!\n", + "Attribute lts/sdp/1/fpga_sdp_info_f_adc_r not found in archiving list!\n", + "Attribute lts/sdp/1/fpga_sdp_info_fsub_type_r not found in archiving list!\n", + "Attribute lts/sdp/1/fpga_sdp_info_nyquist_sampling_zone_index_r not found in archiving list!\n", + "Attribute lts/sdp/1/fpga_sdp_info_nyquist_sampling_zone_index_rw not found in archiving list!\n", + "Attribute lts/sdp/1/fpga_sdp_info_observation_id_r not found in archiving list!\n", + "Attribute lts/sdp/1/fpga_sdp_info_observation_id_rw not found in archiving list!\n", + "Attribute lts/sdp/1/fpga_sdp_info_station_id_r not found in archiving list!\n", + "Attribute lts/sdp/1/fpga_sdp_info_station_id_rw not found in archiving list!\n", + "Attribute lts/sdp/1/fpga_subband_weights_r not found in archiving list!\n", + "Attribute lts/sdp/1/fpga_subband_weights_rw not found in archiving list!\n", + "Attribute lts/sdp/1/fpga_temp_r removed!\n", + "Attribute lts/sdp/1/fpga_weights_r removed!\n", + "Attribute lts/sdp/1/fpga_weights_rw removed!\n", + "Attribute lts/sdp/1/fpga_wg_amplitude_r not found in archiving list!\n", + "Attribute lts/sdp/1/fpga_wg_enable_r not found in archiving list!\n", + "Attribute lts/sdp/1/fpga_wg_enable_rw not found in archiving list!\n", + "Attribute lts/sdp/1/fpga_wg_frequency_r not found in archiving list!\n", + "Attribute lts/sdp/1/fpga_wg_phase_r not found in archiving list!\n", + "Attribute lts/sdp/1/tr_fpga_mask_r not found in archiving list!\n", + "Attribute lts/sdp/1/tr_fpga_mask_rw not found in archiving list!\n", + "Attribute lts/sdp/1/tr_fpga_communication_error_r not found in archiving list!\n", + "Attribute lts/sdp/1/tr_sdp_config_first_fpga_nr_r not found in archiving list!\n", + "Attribute lts/sdp/1/tr_sdp_config_nof_beamsets_r not found in archiving list!\n", + "Attribute lts/sdp/1/tr_sdp_config_nof_fpgas_r not found in archiving list!\n", + "Attribute lts/sdp/1/tr_software_version_r not found in archiving list!\n", + "Attribute lts/sdp/1/tr_start_time_r not found in archiving list!\n", + "Attribute lts/sdp/1/tr_tod_r removed!\n", + "Attribute lts/sdp/1/tr_tod_pps_delta_r not found in archiving list!\n", + "Attribute lts/sdp/1/state not found in archiving list!\n", + "Attribute lts/sdp/1/status not found in archiving list!\n", + "Device LTS/SST/1 offline\n", + "Device LTS/XST/1 offline\n", + "Device LTS/UNB2/1 offline\n" + ] + } + ], + "source": [ + "# Apply the chosen JSON configuration file in directory toolkit/archiver_config/\n", + "archiver = Archiver(selector_filename='lofar2.json')" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "848dc5e7", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "lofar2.json\n" + ] + }, + { + "data": { + "text/plain": [ + "{'global_variables': {'development_polling_time': '10000',\n", + " 'development_archive_time': '60000'},\n", + " 'devices': {'LTS/RECV/1': {'environment': 'development',\n", + " 'include': ['rcu_temperature_r'],\n", + " 'exclude': ['CLK_Enable_PWR_R',\n", + " 'CLK_I2C_STATUS_R',\n", + " 'CLK_PLL_error_R',\n", + " 'CLK_PLL_locked_R',\n", + " 'CLK_translator_busy_R']},\n", + " 'LTS/SDP/1': {'environment': 'development', 'include': [], 'exclude': []},\n", + " 'LTS/SST/1': {'environment': 'development', 'include': [], 'exclude': []},\n", + " 'LTS/XST/1': {'environment': 'development', 'include': [], 'exclude': []},\n", + " 'LTS/UNB2/1': {'environment': 'development', 'include': [], 'exclude': []}}}" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Print the configuration file (as a dictionary)\n", + "selector = archiver.selector\n", + "print(selector.filename)\n", + "env_dict = selector.get_dict()\n", + "env_dict" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "a81e8b3b", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "OFF\n" + ] + } + ], + "source": [ + "device_name = 'LTS/RECV/1'\n", + "d=DeviceProxy(device_name) \n", + "state = str(d.state())\n", + "print(state)" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "f5394d09", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Attribute lts/recv/1/version_r will not be archived because polling is set to FALSE!\n", + "Attribute lts/recv/1/opcua_missing_attributes_r will not be archived because polling is set to FALSE!\n", + "Attribute lts/recv/1/ant_status_r will not be archived because polling is set to FALSE!\n" + ] + } + ], + "source": [ + "# Add RECV attributes to perform load test\n", + "archiver.add_attributes_by_device(device_name,global_archive_period=5000)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "ba3a25ac", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'tango://databaseds:10000/lts/recv/1/rcu_temperature_r': 'Read value for attribute RCU_temperature_R has not been updated'}" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Print the errors for each attribute\n", + "# If the device is in OFF state, all its attributes should be in error (normal behaviour)\n", + "err_dict = archiver.get_subscriber_errors()\n", + "err_dict" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "b4de92a0", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Device is now in ON state\n" + ] + } + ], + "source": [ + "# Start the device\n", + "if state == \"OFF\":\n", + " time.sleep(1)\n", + " d.initialise()\n", + " time.sleep(1)\n", + "state = str(d.state())\n", + "if state == \"STANDBY\":\n", + " d.on()\n", + "state = str(d.state())\n", + "if state == \"ON\":\n", + " d.set_defaults()\n", + " print(\"Device is now in ON state\")" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "5d40b87c", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "('tango://databaseds:10000/lts/recv/1/rcu_temperature_r',\n", + " 'tango://databaseds:10000/lts/recv/1/ant_mask_rw',\n", + " 'tango://databaseds:10000/lts/recv/1/clk_enable_pwr_r',\n", + " 'tango://databaseds:10000/lts/recv/1/clk_i2c_status_r',\n", + " 'tango://databaseds:10000/lts/recv/1/clk_pll_error_r',\n", + " 'tango://databaseds:10000/lts/recv/1/clk_pll_locked_r',\n", + " 'tango://databaseds:10000/lts/recv/1/clk_monitor_rate_rw',\n", + " 'tango://databaseds:10000/lts/recv/1/clk_translator_busy_r',\n", + " 'tango://databaseds:10000/lts/recv/1/hba_element_beamformer_delays_r',\n", + " 'tango://databaseds:10000/lts/recv/1/hba_element_beamformer_delays_rw',\n", + " 'tango://databaseds:10000/lts/recv/1/hba_element_led_r',\n", + " 'tango://databaseds:10000/lts/recv/1/hba_element_led_rw',\n", + " 'tango://databaseds:10000/lts/recv/1/hba_element_lna_pwr_r',\n", + " 'tango://databaseds:10000/lts/recv/1/hba_element_lna_pwr_rw',\n", + " 'tango://databaseds:10000/lts/recv/1/hba_element_pwr_r',\n", + " 'tango://databaseds:10000/lts/recv/1/hba_element_pwr_rw',\n", + " 'tango://databaseds:10000/lts/recv/1/rcu_adc_lock_r',\n", + " 'tango://databaseds:10000/lts/recv/1/rcu_attenuator_r',\n", + " 'tango://databaseds:10000/lts/recv/1/rcu_attenuator_rw',\n", + " 'tango://databaseds:10000/lts/recv/1/rcu_band_r',\n", + " 'tango://databaseds:10000/lts/recv/1/rcu_band_rw',\n", + " 'tango://databaseds:10000/lts/recv/1/rcu_i2c_status_r',\n", + " 'tango://databaseds:10000/lts/recv/1/rcu_id_r',\n", + " 'tango://databaseds:10000/lts/recv/1/rcu_led0_r',\n", + " 'tango://databaseds:10000/lts/recv/1/rcu_led0_rw',\n", + " 'tango://databaseds:10000/lts/recv/1/rcu_led1_r',\n", + " 'tango://databaseds:10000/lts/recv/1/rcu_led1_rw',\n", + " 'tango://databaseds:10000/lts/recv/1/rcu_mask_rw',\n", + " 'tango://databaseds:10000/lts/recv/1/rcu_monitor_rate_rw',\n", + " 'tango://databaseds:10000/lts/recv/1/rcu_pwr_dig_r',\n", + " 'tango://databaseds:10000/lts/recv/1/rcu_translator_busy_r',\n", + " 'tango://databaseds:10000/lts/recv/1/rcu_version_r',\n", + " 'tango://databaseds:10000/lts/recv/1/state',\n", + " 'tango://databaseds:10000/lts/recv/1/status')" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Print the attributes currently managed by the event subscriber\n", + "attrs = archiver.get_subscriber_attributes()\n", + "attrs" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "678879e3", + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/plain": [ + "{'tango://databaseds:10000/lts/recv/1/rcu_temperature_r': 'Read value for attribute RCU_temperature_R has not been updated',\n", + " 'tango://databaseds:10000/lts/recv/1/ant_mask_rw': 'Read value for attribute Ant_mask_RW has not been updated',\n", + " 'tango://databaseds:10000/lts/recv/1/clk_enable_pwr_r': 'Read value for attribute CLK_Enable_PWR_R has not been updated',\n", + " 'tango://databaseds:10000/lts/recv/1/clk_i2c_status_r': 'Read value for attribute CLK_I2C_STATUS_R has not been updated',\n", + " 'tango://databaseds:10000/lts/recv/1/clk_pll_error_r': 'Read value for attribute CLK_PLL_error_R has not been updated',\n", + " 'tango://databaseds:10000/lts/recv/1/clk_pll_locked_r': 'Read value for attribute CLK_PLL_locked_R has not been updated',\n", + " 'tango://databaseds:10000/lts/recv/1/clk_monitor_rate_rw': 'Read value for attribute CLK_monitor_rate_RW has not been updated',\n", + " 'tango://databaseds:10000/lts/recv/1/clk_translator_busy_r': 'Read value for attribute CLK_translator_busy_R has not been updated',\n", + " 'tango://databaseds:10000/lts/recv/1/hba_element_beamformer_delays_r': 'Read value for attribute HBA_element_beamformer_delays_R has not been updated',\n", + " 'tango://databaseds:10000/lts/recv/1/hba_element_beamformer_delays_rw': 'Read value for attribute HBA_element_beamformer_delays_RW has not been updated',\n", + " 'tango://databaseds:10000/lts/recv/1/hba_element_led_r': 'Read value for attribute HBA_element_led_R has not been updated',\n", + " 'tango://databaseds:10000/lts/recv/1/hba_element_led_rw': 'Read value for attribute HBA_element_led_RW has not been updated',\n", + " 'tango://databaseds:10000/lts/recv/1/hba_element_lna_pwr_r': 'Read value for attribute HBA_element_LNA_pwr_R has not been updated',\n", + " 'tango://databaseds:10000/lts/recv/1/hba_element_lna_pwr_rw': 'Read value for attribute HBA_element_LNA_pwr_RW has not been updated',\n", + " 'tango://databaseds:10000/lts/recv/1/hba_element_pwr_r': 'Read value for attribute HBA_element_pwr_R has not been updated',\n", + " 'tango://databaseds:10000/lts/recv/1/hba_element_pwr_rw': 'Read value for attribute HBA_element_pwr_RW has not been updated',\n", + " 'tango://databaseds:10000/lts/recv/1/rcu_adc_lock_r': 'Read value for attribute RCU_ADC_lock_R has not been updated',\n", + " 'tango://databaseds:10000/lts/recv/1/rcu_attenuator_r': 'Read value for attribute RCU_attenuator_R has not been updated',\n", + " 'tango://databaseds:10000/lts/recv/1/rcu_attenuator_rw': 'Read value for attribute RCU_attenuator_RW has not been updated',\n", + " 'tango://databaseds:10000/lts/recv/1/rcu_band_r': 'Read value for attribute RCU_band_R has not been updated',\n", + " 'tango://databaseds:10000/lts/recv/1/rcu_band_rw': 'Read value for attribute RCU_band_RW has not been updated',\n", + " 'tango://databaseds:10000/lts/recv/1/rcu_i2c_status_r': 'Read value for attribute RCU_I2C_STATUS_R has not been updated',\n", + " 'tango://databaseds:10000/lts/recv/1/rcu_id_r': 'Read value for attribute RCU_ID_R has not been updated',\n", + " 'tango://databaseds:10000/lts/recv/1/rcu_led0_r': 'Read value for attribute RCU_LED0_R has not been updated',\n", + " 'tango://databaseds:10000/lts/recv/1/rcu_led0_rw': 'Read value for attribute RCU_LED0_RW has not been updated',\n", + " 'tango://databaseds:10000/lts/recv/1/rcu_led1_r': 'Read value for attribute RCU_LED1_R has not been updated',\n", + " 'tango://databaseds:10000/lts/recv/1/rcu_led1_rw': 'Read value for attribute RCU_LED1_RW has not been updated',\n", + " 'tango://databaseds:10000/lts/recv/1/rcu_mask_rw': 'Read value for attribute RCU_mask_RW has not been updated',\n", + " 'tango://databaseds:10000/lts/recv/1/rcu_monitor_rate_rw': 'Read value for attribute RCU_monitor_rate_RW has not been updated',\n", + " 'tango://databaseds:10000/lts/recv/1/rcu_pwr_dig_r': 'Read value for attribute RCU_Pwr_dig_R has not been updated',\n", + " 'tango://databaseds:10000/lts/recv/1/rcu_translator_busy_r': 'Read value for attribute RCU_translator_busy_R has not been updated',\n", + " 'tango://databaseds:10000/lts/recv/1/rcu_version_r': 'Read value for attribute RCU_version_R has not been updated',\n", + " 'tango://databaseds:10000/lts/recv/1/status': 'Storing Error: mysql_stmt_bind_param() failed, err=Buffer type is not supported'}" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Print the errors for each attribute\n", + "err_dict = archiver.get_subscriber_errors()\n", + "err_dict" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "d3904658", + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Attribute Poll Period Archive Period \n", + "----------\n", + "LTS/RECV/1/rcu_temperature_r 10000 60000 \n", + "LTS/RECV/1/ant_mask_rw 1000 5000 \n", + "LTS/RECV/1/clk_enable_pwr_r 1000 5000 \n", + "LTS/RECV/1/clk_i2c_status_r 1000 5000 \n", + "LTS/RECV/1/clk_pll_error_r 1000 5000 \n", + "LTS/RECV/1/clk_pll_locked_r 1000 5000 \n", + "LTS/RECV/1/clk_monitor_rate_rw 1000 5000 \n", + "LTS/RECV/1/clk_translator_busy_r 1000 5000 \n", + "LTS/RECV/1/hba_element_beamformer_delays_r 1000 5000 \n", + "LTS/RECV/1/hba_element_beamformer_delays_rw 1000 5000 \n", + "LTS/RECV/1/hba_element_led_r 1000 5000 \n", + "LTS/RECV/1/hba_element_led_rw 1000 5000 \n", + "LTS/RECV/1/hba_element_lna_pwr_r 1000 5000 \n", + "LTS/RECV/1/hba_element_lna_pwr_rw 1000 5000 \n", + "LTS/RECV/1/hba_element_pwr_r 1000 5000 \n", + "LTS/RECV/1/hba_element_pwr_rw 1000 5000 \n", + "LTS/RECV/1/rcu_adc_lock_r 1000 5000 \n", + "LTS/RECV/1/rcu_attenuator_r 1000 5000 \n", + "LTS/RECV/1/rcu_attenuator_rw 1000 5000 \n", + "LTS/RECV/1/rcu_band_r 1000 5000 \n", + "LTS/RECV/1/rcu_band_rw 1000 5000 \n", + "LTS/RECV/1/rcu_i2c_status_r 1000 5000 \n", + "LTS/RECV/1/rcu_id_r 1000 5000 \n", + "LTS/RECV/1/rcu_led0_r 1000 5000 \n", + "LTS/RECV/1/rcu_led0_rw 1000 5000 \n", + "LTS/RECV/1/rcu_led1_r 1000 5000 \n", + "LTS/RECV/1/rcu_led1_rw 1000 5000 \n", + "LTS/RECV/1/rcu_mask_rw 1000 5000 \n", + "LTS/RECV/1/rcu_monitor_rate_rw 1000 5000 \n", + "LTS/RECV/1/rcu_pwr_dig_r 1000 5000 \n", + "LTS/RECV/1/rcu_translator_busy_r 1000 5000 \n", + "LTS/RECV/1/rcu_version_r 1000 5000 \n", + "LTS/RECV/1/state 1000 5000 \n", + "LTS/RECV/1/status 1000 5000 \n" + ] + } + ], + "source": [ + "# Print the attribute periods\n", + "def print_periods(attrs):\n", + " print(\"{:<45} {:<15} {:<15}\".format('Attribute','Poll Period','Archive Period'))\n", + " print(\"----------\")\n", + " for a in attrs:\n", + " ap = AttributeProxy(a)\n", + " att_fqname = ap.get_device_proxy().name()+'/'+ap.name()\n", + " print(\"{:<45} {:<15} {:<15}\".format(att_fqname,ap.get_poll_period(),ap.get_property('archive_period')['archive_period'][0],sep='\\t'))\n", + "\n", + "attrs = archiver.get_subscriber_attributes()\n", + "print_periods(attrs)" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "27ef5564", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'133.0 events/period'" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Print the current event subscriber archive frequency (number of total archive events per minute)\n", + "# Be aware that these statistics need some time (even minutes) since the device initialization to be reliable\n", + "archiver.get_subscriber_load()" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "241b5282", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Attribute Record Freq Failure Freq \n", + "----------\n", + "LTS/RECV/1/rcu_temperature_r 0.0 1.0 \n", + "LTS/RECV/1/ant_mask_rw 10.0 3.0 \n", + "LTS/RECV/1/clk_enable_pwr_r 0.0 12.0 \n", + "LTS/RECV/1/clk_i2c_status_r 0.0 12.0 \n", + "LTS/RECV/1/clk_pll_error_r 0.0 12.0 \n", + "LTS/RECV/1/clk_pll_locked_r 0.0 12.0 \n", + "LTS/RECV/1/clk_monitor_rate_rw 10.0 3.0 \n", + "LTS/RECV/1/clk_translator_busy_r 0.0 12.0 \n", + "LTS/RECV/1/hba_element_beamformer_delays_r 0.0 12.0 \n", + "LTS/RECV/1/hba_element_beamformer_delays_rw 10.0 3.0 \n", + "LTS/RECV/1/hba_element_led_r 0.0 12.0 \n", + "LTS/RECV/1/hba_element_led_rw 10.0 3.0 \n", + "LTS/RECV/1/hba_element_lna_pwr_r 0.0 12.0 \n", + "LTS/RECV/1/hba_element_lna_pwr_rw 10.0 3.0 \n", + "LTS/RECV/1/hba_element_pwr_r 0.0 12.0 \n", + "LTS/RECV/1/hba_element_pwr_rw 10.0 3.0 \n", + "LTS/RECV/1/rcu_adc_lock_r 0.0 12.0 \n", + "LTS/RECV/1/rcu_attenuator_r 0.0 12.0 \n", + "LTS/RECV/1/rcu_attenuator_rw 10.0 3.0 \n", + "LTS/RECV/1/rcu_band_r 0.0 12.0 \n", + "LTS/RECV/1/rcu_band_rw 10.0 3.0 \n", + "LTS/RECV/1/rcu_i2c_status_r 0.0 12.0 \n", + "LTS/RECV/1/rcu_id_r 0.0 12.0 \n", + "LTS/RECV/1/rcu_led0_r 10.0 3.0 \n", + "LTS/RECV/1/rcu_led0_rw 0.0 12.0 \n", + "LTS/RECV/1/rcu_led1_r 10.0 3.0 \n", + "LTS/RECV/1/rcu_led1_rw 10.0 3.0 \n", + "LTS/RECV/1/rcu_mask_rw 10.0 3.0 \n", + "LTS/RECV/1/rcu_monitor_rate_rw 0.0 12.0 \n", + "LTS/RECV/1/rcu_pwr_dig_r 0.0 12.0 \n", + "LTS/RECV/1/rcu_translator_busy_r 0.0 12.0 \n", + "LTS/RECV/1/rcu_version_r 13.0 0.0 \n", + "LTS/RECV/1/state 0.0 13.0 \n", + "LTS/RECV/1/status 0.0 6.0 \n" + ] + } + ], + "source": [ + "# Print the current attribute archive frequency (number of events per minute)\n", + "# E.G. if an attribute is supposed to be archived every 10s, its frequency value should be 6\n", + "def print_freq(attrs):\n", + " print(\"{:<45} {:<15} {:<15}\".format('Attribute','Record Freq','Failure Freq'))\n", + " print(\"----------\")\n", + " for a in attrs:\n", + " ap = AttributeProxy(a)\n", + " att_fqname = ap.get_device_proxy().name()+'/'+ap.name()\n", + " print(\"{:<45} {:<15} {:<15}\".format(att_fqname,archiver.get_attribute_freq(att_fqname),archiver.get_attribute_failures(att_fqname)))\n", + "\n", + "attrs = archiver.get_subscriber_attributes()\n", + "print_freq(attrs)" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "25446390", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Attribute LTS/RECV/1/rcu_id_r removed!\n" + ] + } + ], + "source": [ + "# Update the archive time of an attribute\n", + "archiver.update_archiving_attribute('LTS/RECV/1/rcu_id_r',polling_period=1000,event_period=10000)" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "9cc4f883", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Attribute Poll Period Archive Period \n", + "----------\n", + "LTS/RECV/1/rcu_temperature_r 10000 60000 \n", + "LTS/RECV/1/ant_mask_rw 1000 5000 \n", + "LTS/RECV/1/clk_enable_pwr_r 1000 5000 \n", + "LTS/RECV/1/clk_i2c_status_r 1000 5000 \n", + "LTS/RECV/1/clk_pll_error_r 1000 5000 \n", + "LTS/RECV/1/clk_pll_locked_r 1000 5000 \n", + "LTS/RECV/1/clk_monitor_rate_rw 1000 5000 \n", + "LTS/RECV/1/clk_translator_busy_r 1000 5000 \n", + "LTS/RECV/1/hba_element_beamformer_delays_r 1000 5000 \n", + "LTS/RECV/1/hba_element_beamformer_delays_rw 1000 5000 \n", + "LTS/RECV/1/hba_element_led_r 1000 5000 \n", + "LTS/RECV/1/hba_element_led_rw 1000 5000 \n", + "LTS/RECV/1/hba_element_lna_pwr_r 1000 5000 \n", + "LTS/RECV/1/hba_element_lna_pwr_rw 1000 5000 \n", + "LTS/RECV/1/hba_element_pwr_r 1000 5000 \n", + "LTS/RECV/1/hba_element_pwr_rw 1000 5000 \n", + "LTS/RECV/1/rcu_adc_lock_r 1000 5000 \n", + "LTS/RECV/1/rcu_attenuator_r 1000 5000 \n", + "LTS/RECV/1/rcu_attenuator_rw 1000 5000 \n", + "LTS/RECV/1/rcu_band_r 1000 5000 \n", + "LTS/RECV/1/rcu_band_rw 1000 5000 \n", + "LTS/RECV/1/rcu_i2c_status_r 1000 5000 \n", + "LTS/RECV/1/rcu_led0_r 1000 5000 \n", + "LTS/RECV/1/rcu_led0_rw 1000 5000 \n", + "LTS/RECV/1/rcu_led1_r 1000 5000 \n", + "LTS/RECV/1/rcu_led1_rw 1000 5000 \n", + "LTS/RECV/1/rcu_mask_rw 1000 5000 \n", + "LTS/RECV/1/rcu_monitor_rate_rw 1000 5000 \n", + "LTS/RECV/1/rcu_pwr_dig_r 1000 5000 \n", + "LTS/RECV/1/rcu_translator_busy_r 1000 5000 \n", + "LTS/RECV/1/rcu_version_r 1000 5000 \n", + "LTS/RECV/1/state 1000 5000 \n", + "LTS/RECV/1/status 1000 5000 \n", + "LTS/RECV/1/rcu_id_r 1000 10000 \n", + "\n", + "Attribute Record Freq Failure Freq \n", + "----------\n", + "LTS/RECV/1/rcu_temperature_r 0.0 1.0 \n", + "LTS/RECV/1/ant_mask_rw 10.0 3.0 \n", + "LTS/RECV/1/clk_enable_pwr_r 0.0 12.0 \n", + "LTS/RECV/1/clk_i2c_status_r 0.0 12.0 \n", + "LTS/RECV/1/clk_pll_error_r 0.0 12.0 \n", + "LTS/RECV/1/clk_pll_locked_r 0.0 12.0 \n", + "LTS/RECV/1/clk_monitor_rate_rw 10.0 3.0 \n", + "LTS/RECV/1/clk_translator_busy_r 0.0 12.0 \n", + "LTS/RECV/1/hba_element_beamformer_delays_r 0.0 12.0 \n", + "LTS/RECV/1/hba_element_beamformer_delays_rw 10.0 3.0 \n", + "LTS/RECV/1/hba_element_led_r 0.0 12.0 \n", + "LTS/RECV/1/hba_element_led_rw 10.0 3.0 \n", + "LTS/RECV/1/hba_element_lna_pwr_r 0.0 12.0 \n", + "LTS/RECV/1/hba_element_lna_pwr_rw 10.0 3.0 \n", + "LTS/RECV/1/hba_element_pwr_r 0.0 12.0 \n", + "LTS/RECV/1/hba_element_pwr_rw 10.0 3.0 \n", + "LTS/RECV/1/rcu_adc_lock_r 0.0 12.0 \n", + "LTS/RECV/1/rcu_attenuator_r 0.0 12.0 \n", + "LTS/RECV/1/rcu_attenuator_rw 10.0 3.0 \n", + "LTS/RECV/1/rcu_band_r 0.0 12.0 \n", + "LTS/RECV/1/rcu_band_rw 10.0 3.0 \n", + "LTS/RECV/1/rcu_i2c_status_r 0.0 12.0 \n", + "LTS/RECV/1/rcu_led0_r 0.0 12.0 \n", + "LTS/RECV/1/rcu_led0_rw 10.0 3.0 \n", + "LTS/RECV/1/rcu_led1_r 0.0 12.0 \n", + "LTS/RECV/1/rcu_led1_rw 10.0 3.0 \n", + "LTS/RECV/1/rcu_mask_rw 10.0 3.0 \n", + "LTS/RECV/1/rcu_monitor_rate_rw 10.0 3.0 \n", + "LTS/RECV/1/rcu_pwr_dig_r 0.0 12.0 \n", + "LTS/RECV/1/rcu_translator_busy_r 0.0 12.0 \n", + "LTS/RECV/1/rcu_version_r 0.0 12.0 \n", + "LTS/RECV/1/state 13.0 0.0 \n", + "LTS/RECV/1/status 0.0 13.0 \n", + "LTS/RECV/1/rcu_id_r 0.0 6.0 \n" + ] + } + ], + "source": [ + "attrs = archiver.get_subscriber_attributes()\n", + "print_periods(attrs)\n", + "print()\n", + "print_freq(attrs)" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "c3415c09", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Attribute lts/sdp/1/version_r will not be archived because polling is set to FALSE!\n", + "Attribute lts/sdp/1/opcua_missing_attributes_r will not be archived because polling is set to FALSE!\n", + "Attribute lts/sdp/1/fpga_wg_amplitude_rw will not be archived because polling is set to FALSE!\n", + "Attribute lts/sdp/1/fpga_wg_frequency_rw will not be archived because polling is set to FALSE!\n", + "Attribute lts/sdp/1/fpga_wg_phase_rw will not be archived because polling is set to FALSE!\n", + "Attribute lts/sdp/1/fpga_beamlet_output_enable_r will not be archived because polling is set to FALSE!\n", + "Attribute lts/sdp/1/fpga_beamlet_output_enable_rw will not be archived because polling is set to FALSE!\n", + "Attribute lts/sdp/1/fpga_beamlet_output_hdr_eth_destination_mac_r will not be archived because polling is set to FALSE!\n", + "Attribute lts/sdp/1/fpga_beamlet_output_hdr_eth_destination_mac_rw will not be archived because polling is set to FALSE!\n", + "Attribute lts/sdp/1/fpga_beamlet_output_hdr_ip_destination_address_r will not be archived because polling is set to FALSE!\n", + "Attribute lts/sdp/1/fpga_beamlet_output_hdr_ip_destination_address_rw will not be archived because polling is set to FALSE!\n", + "Attribute lts/sdp/1/fpga_beamlet_output_hdr_udp_destination_port_r will not be archived because polling is set to FALSE!\n", + "Attribute lts/sdp/1/fpga_beamlet_output_hdr_udp_destination_port_rw will not be archived because polling is set to FALSE!\n", + "Attribute lts/sdp/1/fpga_beamlet_output_scale_r will not be archived because polling is set to FALSE!\n", + "Attribute lts/sdp/1/fpga_beamlet_output_scale_rw will not be archived because polling is set to FALSE!\n", + "Attribute lts/sdp/1/fpga_firmware_version_r will not be archived because polling is set to FALSE!\n", + "Attribute lts/sdp/1/fpga_global_node_index_r will not be archived because polling is set to FALSE!\n", + "Attribute lts/sdp/1/fpga_hardware_version_r will not be archived because polling is set to FALSE!\n", + "Attribute lts/sdp/1/fpga_processing_enable_r will not be archived because polling is set to FALSE!\n", + "Attribute lts/sdp/1/fpga_processing_enable_rw will not be archived because polling is set to FALSE!\n", + "Attribute lts/sdp/1/fpga_signal_input_mean_r will not be archived because polling is set to FALSE!\n", + "Attribute lts/sdp/1/fpga_signal_input_rms_r will not be archived because polling is set to FALSE!\n", + "Attribute lts/sdp/1/fpga_sdp_info_antenna_band_index_r will not be archived because polling is set to FALSE!\n", + "Attribute lts/sdp/1/fpga_sdp_info_block_period_r will not be archived because polling is set to FALSE!\n", + "Attribute lts/sdp/1/fpga_sdp_info_f_adc_r will not be archived because polling is set to FALSE!\n", + "Attribute lts/sdp/1/fpga_sdp_info_fsub_type_r will not be archived because polling is set to FALSE!\n", + "Attribute lts/sdp/1/fpga_sdp_info_nyquist_sampling_zone_index_r will not be archived because polling is set to FALSE!\n", + "Attribute lts/sdp/1/fpga_sdp_info_nyquist_sampling_zone_index_rw will not be archived because polling is set to FALSE!\n", + "Attribute lts/sdp/1/fpga_sdp_info_observation_id_r will not be archived because polling is set to FALSE!\n", + "Attribute lts/sdp/1/fpga_sdp_info_observation_id_rw will not be archived because polling is set to FALSE!\n", + "Attribute lts/sdp/1/fpga_sdp_info_station_id_r will not be archived because polling is set to FALSE!\n", + "Attribute lts/sdp/1/fpga_sdp_info_station_id_rw will not be archived because polling is set to FALSE!\n", + "Attribute lts/sdp/1/fpga_subband_weights_r will not be archived because polling is set to FALSE!\n", + "Attribute lts/sdp/1/fpga_subband_weights_rw will not be archived because polling is set to FALSE!\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "OFF\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Attribute lts/sdp/1/fpga_wg_amplitude_r will not be archived because polling is set to FALSE!\n", + "Attribute lts/sdp/1/fpga_wg_enable_r will not be archived because polling is set to FALSE!\n", + "Attribute lts/sdp/1/fpga_wg_enable_rw will not be archived because polling is set to FALSE!\n", + "Attribute lts/sdp/1/fpga_wg_frequency_r will not be archived because polling is set to FALSE!\n", + "Attribute lts/sdp/1/fpga_wg_phase_r will not be archived because polling is set to FALSE!\n", + "Attribute lts/sdp/1/tr_fpga_mask_r will not be archived because polling is set to FALSE!\n", + "Attribute lts/sdp/1/tr_fpga_mask_rw will not be archived because polling is set to FALSE!\n", + "Attribute lts/sdp/1/tr_fpga_communication_error_r will not be archived because polling is set to FALSE!\n", + "Attribute lts/sdp/1/tr_sdp_config_first_fpga_nr_r will not be archived because polling is set to FALSE!\n", + "Attribute lts/sdp/1/tr_sdp_config_nof_beamsets_r will not be archived because polling is set to FALSE!\n", + "Attribute lts/sdp/1/tr_sdp_config_nof_fpgas_r will not be archived because polling is set to FALSE!\n", + "Attribute lts/sdp/1/tr_software_version_r will not be archived because polling is set to FALSE!\n", + "Attribute lts/sdp/1/tr_start_time_r will not be archived because polling is set to FALSE!\n", + "Attribute lts/sdp/1/tr_tod_pps_delta_r will not be archived because polling is set to FALSE!\n" + ] + } + ], + "source": [ + "# Add SDP attributes to load test\n", + "sdp_name = 'LTS/SDP/1'\n", + "d2=DeviceProxy(sdp_name) \n", + "state = str(d2.state())\n", + "print(state)\n", + "archiver.add_attributes_by_device(sdp_name,global_archive_period=5000)" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "141c52da", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Device is now in ON state\n" + ] + } + ], + "source": [ + "# Start the SDP device\n", + "if state == \"OFF\":\n", + " time.sleep(1)\n", + " d2.initialise()\n", + " time.sleep(1)\n", + "state = str(d2.state())\n", + "if state == \"STANDBY\":\n", + " d2.on()\n", + "state = str(d2.state())\n", + "if state == \"ON\":\n", + " d2.set_defaults()\n", + " print(\"Device is now in ON state\")" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "b53e5b8b", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'tango://databaseds:10000/lts/recv/1/rcu_temperature_r': 'Read value for attribute RCU_temperature_R has not been updated',\n", + " 'tango://databaseds:10000/lts/recv/1/clk_enable_pwr_r': 'Read value for attribute CLK_Enable_PWR_R has not been updated',\n", + " 'tango://databaseds:10000/lts/recv/1/clk_i2c_status_r': 'Read value for attribute CLK_I2C_STATUS_R has not been updated',\n", + " 'tango://databaseds:10000/lts/recv/1/clk_pll_error_r': 'Read value for attribute CLK_PLL_error_R has not been updated',\n", + " 'tango://databaseds:10000/lts/recv/1/clk_pll_locked_r': 'Read value for attribute CLK_PLL_locked_R has not been updated',\n", + " 'tango://databaseds:10000/lts/recv/1/clk_translator_busy_r': 'Read value for attribute CLK_translator_busy_R has not been updated',\n", + " 'tango://databaseds:10000/lts/recv/1/hba_element_beamformer_delays_r': 'Read value for attribute HBA_element_beamformer_delays_R has not been updated',\n", + " 'tango://databaseds:10000/lts/recv/1/hba_element_led_r': 'Read value for attribute HBA_element_led_R has not been updated',\n", + " 'tango://databaseds:10000/lts/recv/1/hba_element_lna_pwr_r': 'Read value for attribute HBA_element_LNA_pwr_R has not been updated',\n", + " 'tango://databaseds:10000/lts/recv/1/hba_element_pwr_r': 'Read value for attribute HBA_element_pwr_R has not been updated',\n", + " 'tango://databaseds:10000/lts/recv/1/rcu_adc_lock_r': 'Read value for attribute RCU_ADC_lock_R has not been updated',\n", + " 'tango://databaseds:10000/lts/recv/1/rcu_attenuator_r': 'Read value for attribute RCU_attenuator_R has not been updated',\n", + " 'tango://databaseds:10000/lts/recv/1/rcu_band_r': 'Read value for attribute RCU_band_R has not been updated',\n", + " 'tango://databaseds:10000/lts/recv/1/rcu_i2c_status_r': 'Read value for attribute RCU_I2C_STATUS_R has not been updated',\n", + " 'tango://databaseds:10000/lts/recv/1/rcu_led0_r': 'Read value for attribute RCU_LED0_R has not been updated',\n", + " 'tango://databaseds:10000/lts/recv/1/rcu_led1_r': 'Read value for attribute RCU_LED1_R has not been updated',\n", + " 'tango://databaseds:10000/lts/recv/1/rcu_pwr_dig_r': 'Read value for attribute RCU_Pwr_dig_R has not been updated',\n", + " 'tango://databaseds:10000/lts/recv/1/rcu_translator_busy_r': 'Read value for attribute RCU_translator_busy_R has not been updated',\n", + " 'tango://databaseds:10000/lts/recv/1/rcu_version_r': 'Read value for attribute RCU_version_R has not been updated',\n", + " 'tango://databaseds:10000/lts/recv/1/status': 'Storing Error: mysql_stmt_bind_param() failed, err=Buffer type is not supported',\n", + " 'tango://databaseds:10000/lts/recv/1/rcu_id_r': 'Read value for attribute RCU_ID_R has not been updated',\n", + " 'tango://databaseds:10000/lts/sdp/1/fpga_scrap_r': 'Read value for attribute FPGA_scrap_R has not been updated',\n", + " 'tango://databaseds:10000/lts/sdp/1/fpga_scrap_rw': 'Read value for attribute FPGA_scrap_RW has not been updated',\n", + " 'tango://databaseds:10000/lts/sdp/1/fpga_temp_r': 'Read value for attribute FPGA_temp_R has not been updated',\n", + " 'tango://databaseds:10000/lts/sdp/1/fpga_weights_r': 'Read value for attribute FPGA_weights_R has not been updated',\n", + " 'tango://databaseds:10000/lts/sdp/1/fpga_weights_rw': 'Read value for attribute FPGA_weights_RW has not been updated',\n", + " 'tango://databaseds:10000/lts/sdp/1/tr_tod_r': 'Read value for attribute TR_tod_R has not been updated'}" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Check errors\n", + "err_dict = archiver.get_subscriber_errors()\n", + "err_dict" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "4fed6cf4", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Attribute Poll Period Archive Period \n", + "----------\n", + "LTS/RECV/1/rcu_temperature_r 10000 60000 \n", + "LTS/RECV/1/ant_mask_rw 1000 5000 \n", + "LTS/RECV/1/clk_enable_pwr_r 1000 5000 \n", + "LTS/RECV/1/clk_i2c_status_r 1000 5000 \n", + "LTS/RECV/1/clk_pll_error_r 1000 5000 \n", + "LTS/RECV/1/clk_pll_locked_r 1000 5000 \n", + "LTS/RECV/1/clk_monitor_rate_rw 1000 5000 \n", + "LTS/RECV/1/clk_translator_busy_r 1000 5000 \n", + "LTS/RECV/1/hba_element_beamformer_delays_r 1000 5000 \n", + "LTS/RECV/1/hba_element_beamformer_delays_rw 1000 5000 \n", + "LTS/RECV/1/hba_element_led_r 1000 5000 \n", + "LTS/RECV/1/hba_element_led_rw 1000 5000 \n", + "LTS/RECV/1/hba_element_lna_pwr_r 1000 5000 \n", + "LTS/RECV/1/hba_element_lna_pwr_rw 1000 5000 \n", + "LTS/RECV/1/hba_element_pwr_r 1000 5000 \n", + "LTS/RECV/1/hba_element_pwr_rw 1000 5000 \n", + "LTS/RECV/1/rcu_adc_lock_r 1000 5000 \n", + "LTS/RECV/1/rcu_attenuator_r 1000 5000 \n", + "LTS/RECV/1/rcu_attenuator_rw 1000 5000 \n", + "LTS/RECV/1/rcu_band_r 1000 5000 \n", + "LTS/RECV/1/rcu_band_rw 1000 5000 \n", + "LTS/RECV/1/rcu_i2c_status_r 1000 5000 \n", + "LTS/RECV/1/rcu_led0_r 1000 5000 \n", + "LTS/RECV/1/rcu_led0_rw 1000 5000 \n", + "LTS/RECV/1/rcu_led1_r 1000 5000 \n", + "LTS/RECV/1/rcu_led1_rw 1000 5000 \n", + "LTS/RECV/1/rcu_mask_rw 1000 5000 \n", + "LTS/RECV/1/rcu_monitor_rate_rw 1000 5000 \n", + "LTS/RECV/1/rcu_pwr_dig_r 1000 5000 \n", + "LTS/RECV/1/rcu_translator_busy_r 1000 5000 \n", + "LTS/RECV/1/rcu_version_r 1000 5000 \n", + "LTS/RECV/1/state 1000 5000 \n", + "LTS/RECV/1/status 1000 5000 \n", + "LTS/RECV/1/rcu_id_r 1000 10000 \n", + "LTS/SDP/1/fpga_scrap_r 1000 5000 \n", + "LTS/SDP/1/fpga_scrap_rw 1000 5000 \n", + "LTS/SDP/1/fpga_temp_r 1000 5000 \n", + "LTS/SDP/1/fpga_weights_r 1000 5000 \n", + "LTS/SDP/1/fpga_weights_rw 1000 5000 \n", + "LTS/SDP/1/tr_tod_r 1000 5000 \n", + "\n", + "Attribute Record Freq Failure Freq \n", + "----------\n", + "LTS/RECV/1/rcu_temperature_r 0.0 1.0 \n", + "LTS/RECV/1/ant_mask_rw 10.0 3.0 \n", + "LTS/RECV/1/clk_enable_pwr_r 0.0 12.0 \n", + "LTS/RECV/1/clk_i2c_status_r 0.0 12.0 \n", + "LTS/RECV/1/clk_pll_error_r 0.0 12.0 \n", + "LTS/RECV/1/clk_pll_locked_r 0.0 12.0 \n", + "LTS/RECV/1/clk_monitor_rate_rw 10.0 3.0 \n", + "LTS/RECV/1/clk_translator_busy_r 0.0 12.0 \n", + "LTS/RECV/1/hba_element_beamformer_delays_r 0.0 12.0 \n", + "LTS/RECV/1/hba_element_beamformer_delays_rw 10.0 3.0 \n", + "LTS/RECV/1/hba_element_led_r 0.0 12.0 \n", + "LTS/RECV/1/hba_element_led_rw 10.0 3.0 \n", + "LTS/RECV/1/hba_element_lna_pwr_r 0.0 12.0 \n", + "LTS/RECV/1/hba_element_lna_pwr_rw 10.0 3.0 \n", + "LTS/RECV/1/hba_element_pwr_r 0.0 12.0 \n", + "LTS/RECV/1/hba_element_pwr_rw 10.0 3.0 \n", + "LTS/RECV/1/rcu_adc_lock_r 0.0 12.0 \n", + "LTS/RECV/1/rcu_attenuator_r 0.0 12.0 \n", + "LTS/RECV/1/rcu_attenuator_rw 10.0 3.0 \n", + "LTS/RECV/1/rcu_band_r 0.0 12.0 \n", + "LTS/RECV/1/rcu_band_rw 10.0 3.0 \n", + "LTS/RECV/1/rcu_i2c_status_r 0.0 12.0 \n", + "LTS/RECV/1/rcu_led0_r 0.0 12.0 \n", + "LTS/RECV/1/rcu_led0_rw 10.0 3.0 \n", + "LTS/RECV/1/rcu_led1_r 0.0 12.0 \n", + "LTS/RECV/1/rcu_led1_rw 10.0 3.0 \n", + "LTS/RECV/1/rcu_mask_rw 10.0 3.0 \n", + "LTS/RECV/1/rcu_monitor_rate_rw 10.0 3.0 \n", + "LTS/RECV/1/rcu_pwr_dig_r 0.0 12.0 \n", + "LTS/RECV/1/rcu_translator_busy_r 0.0 12.0 \n", + "LTS/RECV/1/rcu_version_r 0.0 12.0 \n", + "LTS/RECV/1/state 13.0 0.0 \n", + "LTS/RECV/1/status 0.0 13.0 \n", + "LTS/RECV/1/rcu_id_r 0.0 6.0 \n", + "LTS/SDP/1/fpga_scrap_r 0.0 12.0 \n", + "LTS/SDP/1/fpga_scrap_rw 0.0 12.0 \n", + "LTS/SDP/1/fpga_temp_r 0.0 12.0 \n", + "LTS/SDP/1/fpga_weights_r 0.0 12.0 \n", + "LTS/SDP/1/fpga_weights_rw 0.0 12.0 \n", + "LTS/SDP/1/tr_tod_r 0.0 12.0 \n" + ] + } + ], + "source": [ + "# Check frequencies\n", + "attrs = archiver.get_subscriber_attributes()\n", + "print_periods(attrs)\n", + "print()\n", + "print_freq(attrs)" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "id": "6e495661", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'lts/recv/1/ant_mask_rw'" + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Initialise the retriever object and print the archived attributes in the database\n", + "retriever = Retriever()\n", + "# Attribute chosen to be retrieved\n", + "attr_name = 'ant_mask_rw'\n", + "attr_fq_name = str(device_name+'/'+attr_name).lower()\n", + "attr_fq_name" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "id": "304f50f1", + "metadata": {}, + "outputs": [], + "source": [ + "# Retrieve records in the last n hours (works even with decimals)\n", + "\n", + "# Use alternatively one of the following two methods to retrieve data (last n hours or interval)\n", + "records= retriever.get_attribute_value_by_hours(attr_fq_name,hours=0.1)\n", + "#records = retriever.get_attribute_value_by_interval(attr_fq_name,'2021-09-01 16:00:00', '2021-09-01 16:03:00')\n", + "\n", + "if not records:\n", + " print('Empty result!')\n", + "else:\n", + " # Convert DB Array records into Python lists\n", + " data = build_array_from_record(records,records[0].dim_x_r)\n", + " # Extract only the value from the array \n", + " array_values = get_values_from_record(data)\n", + "\n", + "#records\n", + "#data\n", + "#array_values" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "id": "fb2c19f4", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[[<Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:11:45.984153',recv_time='2021-10-12 16:11:45.985227',insert_time='2021-10-12 16:11:47.172490',idx='0',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>,\n", + " <Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:11:45.984153',recv_time='2021-10-12 16:11:45.985227',insert_time='2021-10-12 16:11:47.172490',idx='1',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>,\n", + " <Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:11:45.984153',recv_time='2021-10-12 16:11:45.985227',insert_time='2021-10-12 16:11:47.172490',idx='2',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>],\n", + " [<Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:11:50.983968',recv_time='2021-10-12 16:11:50.985012',insert_time='2021-10-12 16:11:54.941481',idx='0',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>,\n", + " <Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:11:50.983968',recv_time='2021-10-12 16:11:50.985012',insert_time='2021-10-12 16:11:54.941481',idx='1',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>,\n", + " <Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:11:50.983968',recv_time='2021-10-12 16:11:50.985012',insert_time='2021-10-12 16:11:54.941481',idx='2',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>],\n", + " [<Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:11:55.984188',recv_time='2021-10-12 16:11:55.985084',insert_time='2021-10-12 16:11:58.436198',idx='0',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>,\n", + " <Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:11:55.984188',recv_time='2021-10-12 16:11:55.985084',insert_time='2021-10-12 16:11:58.436198',idx='1',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>,\n", + " <Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:11:55.984188',recv_time='2021-10-12 16:11:55.985084',insert_time='2021-10-12 16:11:58.436198',idx='2',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>],\n", + " [<Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:12:00.984500',recv_time='2021-10-12 16:12:00.985745',insert_time='2021-10-12 16:12:02.161066',idx='0',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>,\n", + " <Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:12:00.984500',recv_time='2021-10-12 16:12:00.985745',insert_time='2021-10-12 16:12:02.161066',idx='1',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>,\n", + " <Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:12:00.984500',recv_time='2021-10-12 16:12:00.985745',insert_time='2021-10-12 16:12:02.161066',idx='2',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>],\n", + " [<Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:12:05.984549',recv_time='2021-10-12 16:12:05.985632',insert_time='2021-10-12 16:12:07.162031',idx='0',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>,\n", + " <Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:12:05.984549',recv_time='2021-10-12 16:12:05.985632',insert_time='2021-10-12 16:12:07.162031',idx='1',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>,\n", + " <Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:12:05.984549',recv_time='2021-10-12 16:12:05.985632',insert_time='2021-10-12 16:12:07.162031',idx='2',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>],\n", + " [<Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:12:10.984455',recv_time='2021-10-12 16:12:10.985558',insert_time='2021-10-12 16:12:13.614716',idx='0',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>,\n", + " <Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:12:10.984455',recv_time='2021-10-12 16:12:10.985558',insert_time='2021-10-12 16:12:13.614716',idx='1',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>,\n", + " <Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:12:10.984455',recv_time='2021-10-12 16:12:10.985558',insert_time='2021-10-12 16:12:13.614716',idx='2',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>],\n", + " [<Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:12:15.984749',recv_time='2021-10-12 16:12:15.985754',insert_time='2021-10-12 16:12:17.710957',idx='0',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>,\n", + " <Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:12:15.984749',recv_time='2021-10-12 16:12:15.985754',insert_time='2021-10-12 16:12:17.710957',idx='1',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>,\n", + " <Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:12:15.984749',recv_time='2021-10-12 16:12:15.985754',insert_time='2021-10-12 16:12:17.710957',idx='2',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>],\n", + " [<Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:12:20.984437',recv_time='2021-10-12 16:12:20.985426',insert_time='2021-10-12 16:12:22.179278',idx='0',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>,\n", + " <Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:12:20.984437',recv_time='2021-10-12 16:12:20.985426',insert_time='2021-10-12 16:12:22.179278',idx='1',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>,\n", + " <Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:12:20.984437',recv_time='2021-10-12 16:12:20.985426',insert_time='2021-10-12 16:12:22.179278',idx='2',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>],\n", + " [<Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:12:25.984240',recv_time='2021-10-12 16:12:25.985322',insert_time='2021-10-12 16:12:27.121467',idx='0',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>,\n", + " <Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:12:25.984240',recv_time='2021-10-12 16:12:25.985322',insert_time='2021-10-12 16:12:27.121467',idx='1',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>,\n", + " <Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:12:25.984240',recv_time='2021-10-12 16:12:25.985322',insert_time='2021-10-12 16:12:27.121467',idx='2',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>],\n", + " [<Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:12:30.984213',recv_time='2021-10-12 16:12:30.985970',insert_time='2021-10-12 16:12:32.143646',idx='0',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>,\n", + " <Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:12:30.984213',recv_time='2021-10-12 16:12:30.985970',insert_time='2021-10-12 16:12:32.143646',idx='1',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>,\n", + " <Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:12:30.984213',recv_time='2021-10-12 16:12:30.985970',insert_time='2021-10-12 16:12:32.143646',idx='2',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>],\n", + " [<Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:12:35.984194',recv_time='2021-10-12 16:12:35.985136',insert_time='2021-10-12 16:12:37.105945',idx='0',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>,\n", + " <Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:12:35.984194',recv_time='2021-10-12 16:12:35.985136',insert_time='2021-10-12 16:12:37.105945',idx='1',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>,\n", + " <Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:12:35.984194',recv_time='2021-10-12 16:12:35.985136',insert_time='2021-10-12 16:12:37.105945',idx='2',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>],\n", + " [<Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:12:40.984436',recv_time='2021-10-12 16:12:40.985560',insert_time='2021-10-12 16:12:42.131690',idx='0',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>,\n", + " <Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:12:40.984436',recv_time='2021-10-12 16:12:40.985560',insert_time='2021-10-12 16:12:42.131690',idx='1',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>,\n", + " <Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:12:40.984436',recv_time='2021-10-12 16:12:40.985560',insert_time='2021-10-12 16:12:42.131690',idx='2',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>],\n", + " [<Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:12:45.984915',recv_time='2021-10-12 16:12:45.986000',insert_time='2021-10-12 16:12:47.175174',idx='0',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>,\n", + " <Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:12:45.984915',recv_time='2021-10-12 16:12:45.986000',insert_time='2021-10-12 16:12:47.175174',idx='1',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>,\n", + " <Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:12:45.984915',recv_time='2021-10-12 16:12:45.986000',insert_time='2021-10-12 16:12:47.175174',idx='2',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>],\n", + " [<Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:12:50.984633',recv_time='2021-10-12 16:12:50.985512',insert_time='2021-10-12 16:12:53.057782',idx='0',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>,\n", + " <Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:12:50.984633',recv_time='2021-10-12 16:12:50.985512',insert_time='2021-10-12 16:12:53.057782',idx='1',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>,\n", + " <Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:12:50.984633',recv_time='2021-10-12 16:12:50.985512',insert_time='2021-10-12 16:12:53.057782',idx='2',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>],\n", + " [<Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:12:55.984062',recv_time='2021-10-12 16:12:55.985186',insert_time='2021-10-12 16:12:57.789312',idx='0',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>,\n", + " <Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:12:55.984062',recv_time='2021-10-12 16:12:55.985186',insert_time='2021-10-12 16:12:57.789312',idx='1',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>,\n", + " <Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:12:55.984062',recv_time='2021-10-12 16:12:55.985186',insert_time='2021-10-12 16:12:57.789312',idx='2',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>],\n", + " [<Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:13:00.984010',recv_time='2021-10-12 16:13:00.985004',insert_time='2021-10-12 16:13:02.085417',idx='0',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>,\n", + " <Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:13:00.984010',recv_time='2021-10-12 16:13:00.985004',insert_time='2021-10-12 16:13:02.085417',idx='1',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>,\n", + " <Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:13:00.984010',recv_time='2021-10-12 16:13:00.985004',insert_time='2021-10-12 16:13:02.085417',idx='2',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>],\n", + " [<Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:13:05.984656',recv_time='2021-10-12 16:13:05.985886',insert_time='2021-10-12 16:13:07.114881',idx='0',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>,\n", + " <Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:13:05.984656',recv_time='2021-10-12 16:13:05.985886',insert_time='2021-10-12 16:13:07.114881',idx='1',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>,\n", + " <Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:13:05.984656',recv_time='2021-10-12 16:13:05.985886',insert_time='2021-10-12 16:13:07.114881',idx='2',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>],\n", + " [<Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:13:10.983994',recv_time='2021-10-12 16:13:10.984868',insert_time='2021-10-12 16:13:13.955591',idx='0',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>,\n", + " <Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:13:10.983994',recv_time='2021-10-12 16:13:10.984868',insert_time='2021-10-12 16:13:13.955591',idx='1',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>,\n", + " <Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:13:10.983994',recv_time='2021-10-12 16:13:10.984868',insert_time='2021-10-12 16:13:13.955591',idx='2',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>],\n", + " [<Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:13:15.984364',recv_time='2021-10-12 16:13:15.985187',insert_time='2021-10-12 16:13:17.261063',idx='0',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>,\n", + " <Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:13:15.984364',recv_time='2021-10-12 16:13:15.985187',insert_time='2021-10-12 16:13:17.261063',idx='1',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>,\n", + " <Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:13:15.984364',recv_time='2021-10-12 16:13:15.985187',insert_time='2021-10-12 16:13:17.261063',idx='2',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>],\n", + " [<Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:13:20.984283',recv_time='2021-10-12 16:13:20.985476',insert_time='2021-10-12 16:13:22.137614',idx='0',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>,\n", + " <Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:13:20.984283',recv_time='2021-10-12 16:13:20.985476',insert_time='2021-10-12 16:13:22.137614',idx='1',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>,\n", + " <Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:13:20.984283',recv_time='2021-10-12 16:13:20.985476',insert_time='2021-10-12 16:13:22.137614',idx='2',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>],\n", + " [<Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:13:25.984392',recv_time='2021-10-12 16:13:25.985198',insert_time='2021-10-12 16:13:32.429251',idx='0',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>,\n", + " <Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:13:25.984392',recv_time='2021-10-12 16:13:25.985198',insert_time='2021-10-12 16:13:32.429251',idx='1',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>,\n", + " <Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:13:25.984392',recv_time='2021-10-12 16:13:25.985198',insert_time='2021-10-12 16:13:32.429251',idx='2',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>],\n", + " [<Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:13:30.984191',recv_time='2021-10-12 16:13:30.985085',insert_time='2021-10-12 16:13:32.691181',idx='0',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>,\n", + " <Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:13:30.984191',recv_time='2021-10-12 16:13:30.985085',insert_time='2021-10-12 16:13:32.691181',idx='1',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>,\n", + " <Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:13:30.984191',recv_time='2021-10-12 16:13:30.985085',insert_time='2021-10-12 16:13:32.691181',idx='2',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>],\n", + " [<Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:13:35.984482',recv_time='2021-10-12 16:13:35.985543',insert_time='2021-10-12 16:13:36.243490',idx='0',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>,\n", + " <Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:13:35.984482',recv_time='2021-10-12 16:13:35.985543',insert_time='2021-10-12 16:13:36.243490',idx='1',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>,\n", + " <Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:13:35.984482',recv_time='2021-10-12 16:13:35.985543',insert_time='2021-10-12 16:13:36.243490',idx='2',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>],\n", + " [<Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:13:40.984427',recv_time='2021-10-12 16:13:40.985152',insert_time='2021-10-12 16:13:42.666220',idx='0',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>,\n", + " <Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:13:40.984427',recv_time='2021-10-12 16:13:40.985152',insert_time='2021-10-12 16:13:42.666220',idx='1',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>,\n", + " <Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:13:40.984427',recv_time='2021-10-12 16:13:40.985152',insert_time='2021-10-12 16:13:42.666220',idx='2',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>],\n", + " [<Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:13:45.984380',recv_time='2021-10-12 16:13:45.985301',insert_time='2021-10-12 16:13:45.987537',idx='0',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>,\n", + " <Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:13:45.984380',recv_time='2021-10-12 16:13:45.985301',insert_time='2021-10-12 16:13:45.987537',idx='1',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>,\n", + " <Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:13:45.984380',recv_time='2021-10-12 16:13:45.985301',insert_time='2021-10-12 16:13:45.987537',idx='2',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>],\n", + " [<Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:13:50.984643',recv_time='2021-10-12 16:13:50.985563',insert_time='2021-10-12 16:13:50.987682',idx='0',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>,\n", + " <Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:13:50.984643',recv_time='2021-10-12 16:13:50.985563',insert_time='2021-10-12 16:13:50.987682',idx='1',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>,\n", + " <Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:13:50.984643',recv_time='2021-10-12 16:13:50.985563',insert_time='2021-10-12 16:13:50.987682',idx='2',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>],\n", + " [<Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:13:55.983973',recv_time='2021-10-12 16:13:55.984880',insert_time='2021-10-12 16:13:55.986907',idx='0',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>,\n", + " <Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:13:55.983973',recv_time='2021-10-12 16:13:55.984880',insert_time='2021-10-12 16:13:55.986907',idx='1',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>,\n", + " <Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:13:55.983973',recv_time='2021-10-12 16:13:55.984880',insert_time='2021-10-12 16:13:55.986907',idx='2',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>],\n", + " [<Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:14:00.984719',recv_time='2021-10-12 16:14:00.985552',insert_time='2021-10-12 16:14:03.021740',idx='0',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>,\n", + " <Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:14:00.984719',recv_time='2021-10-12 16:14:00.985552',insert_time='2021-10-12 16:14:03.021740',idx='1',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>,\n", + " <Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:14:00.984719',recv_time='2021-10-12 16:14:00.985552',insert_time='2021-10-12 16:14:03.021740',idx='2',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>],\n", + " [<Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:14:05.984695',recv_time='2021-10-12 16:14:05.985635',insert_time='2021-10-12 16:14:05.989173',idx='0',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>,\n", + " <Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:14:05.984695',recv_time='2021-10-12 16:14:05.985635',insert_time='2021-10-12 16:14:05.989173',idx='1',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>,\n", + " <Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:14:05.984695',recv_time='2021-10-12 16:14:05.985635',insert_time='2021-10-12 16:14:05.989173',idx='2',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>],\n", + " [<Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:14:10.984766',recv_time='2021-10-12 16:14:10.988322',insert_time='2021-10-12 16:14:10.991811',idx='0',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>,\n", + " <Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:14:10.984766',recv_time='2021-10-12 16:14:10.988322',insert_time='2021-10-12 16:14:10.991811',idx='1',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>,\n", + " <Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:14:10.984766',recv_time='2021-10-12 16:14:10.988322',insert_time='2021-10-12 16:14:10.991811',idx='2',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>],\n", + " [<Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:14:15.984611',recv_time='2021-10-12 16:14:15.985512',insert_time='2021-10-12 16:14:15.987666',idx='0',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>,\n", + " <Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:14:15.984611',recv_time='2021-10-12 16:14:15.985512',insert_time='2021-10-12 16:14:15.987666',idx='1',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>,\n", + " <Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:14:15.984611',recv_time='2021-10-12 16:14:15.985512',insert_time='2021-10-12 16:14:15.987666',idx='2',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>],\n", + " [<Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:14:20.984560',recv_time='2021-10-12 16:14:20.985450',insert_time='2021-10-12 16:14:20.988027',idx='0',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>,\n", + " <Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:14:20.984560',recv_time='2021-10-12 16:14:20.985450',insert_time='2021-10-12 16:14:20.988027',idx='1',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>,\n", + " <Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:14:20.984560',recv_time='2021-10-12 16:14:20.985450',insert_time='2021-10-12 16:14:20.988027',idx='2',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>],\n", + " [<Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:14:25.984529',recv_time='2021-10-12 16:14:25.985516',insert_time='2021-10-12 16:14:28.424397',idx='0',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>,\n", + " <Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:14:25.984529',recv_time='2021-10-12 16:14:25.985516',insert_time='2021-10-12 16:14:28.424397',idx='1',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>,\n", + " <Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:14:25.984529',recv_time='2021-10-12 16:14:25.985516',insert_time='2021-10-12 16:14:28.424397',idx='2',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>],\n", + " [<Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:14:30.984777',recv_time='2021-10-12 16:14:30.985744',insert_time='2021-10-12 16:14:30.987772',idx='0',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>,\n", + " <Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:14:30.984777',recv_time='2021-10-12 16:14:30.985744',insert_time='2021-10-12 16:14:30.987772',idx='1',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>,\n", + " <Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:14:30.984777',recv_time='2021-10-12 16:14:30.985744',insert_time='2021-10-12 16:14:30.987772',idx='2',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>],\n", + " [<Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:14:37.039585',recv_time='2021-10-12 16:14:37.041323',insert_time='2021-10-12 16:14:37.273810',idx='0',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>,\n", + " <Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:14:37.039585',recv_time='2021-10-12 16:14:37.041323',insert_time='2021-10-12 16:14:37.273810',idx='1',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>,\n", + " <Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:14:37.039585',recv_time='2021-10-12 16:14:37.041323',insert_time='2021-10-12 16:14:37.273810',idx='2',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>],\n", + " [<Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:14:37.985042',recv_time='2021-10-12 16:14:37.985943',insert_time='2021-10-12 16:14:37.988002',idx='0',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>,\n", + " <Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:14:37.985042',recv_time='2021-10-12 16:14:37.985943',insert_time='2021-10-12 16:14:37.988002',idx='1',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>,\n", + " <Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:14:37.985042',recv_time='2021-10-12 16:14:37.985943',insert_time='2021-10-12 16:14:37.988002',idx='2',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>],\n", + " [<Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:14:41.984482',recv_time='2021-10-12 16:14:41.985286',insert_time='2021-10-12 16:14:41.987331',idx='0',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>,\n", + " <Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:14:41.984482',recv_time='2021-10-12 16:14:41.985286',insert_time='2021-10-12 16:14:41.987331',idx='1',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>,\n", + " <Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:14:41.984482',recv_time='2021-10-12 16:14:41.985286',insert_time='2021-10-12 16:14:41.987331',idx='2',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>],\n", + " [<Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:14:46.983903',recv_time='2021-10-12 16:14:46.984621',insert_time='2021-10-12 16:14:46.986645',idx='0',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>,\n", + " <Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:14:46.983903',recv_time='2021-10-12 16:14:46.984621',insert_time='2021-10-12 16:14:46.986645',idx='1',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>,\n", + " <Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:14:46.983903',recv_time='2021-10-12 16:14:46.984621',insert_time='2021-10-12 16:14:46.986645',idx='2',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>],\n", + " [<Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:14:51.985363',recv_time='2021-10-12 16:14:51.988993',insert_time='2021-10-12 16:14:51.996470',idx='0',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>,\n", + " <Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:14:51.985363',recv_time='2021-10-12 16:14:51.988993',insert_time='2021-10-12 16:14:51.996470',idx='1',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>,\n", + " <Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:14:51.985363',recv_time='2021-10-12 16:14:51.988993',insert_time='2021-10-12 16:14:51.996470',idx='2',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>],\n", + " [<Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:14:56.983913',recv_time='2021-10-12 16:14:56.984669',insert_time='2021-10-12 16:14:56.986431',idx='0',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>,\n", + " <Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:14:56.983913',recv_time='2021-10-12 16:14:56.984669',insert_time='2021-10-12 16:14:56.986431',idx='1',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>,\n", + " <Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:14:56.983913',recv_time='2021-10-12 16:14:56.984669',insert_time='2021-10-12 16:14:56.986431',idx='2',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>],\n", + " [<Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:15:01.984158',recv_time='2021-10-12 16:15:01.985027',insert_time='2021-10-12 16:15:01.987260',idx='0',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>,\n", + " <Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:15:01.984158',recv_time='2021-10-12 16:15:01.985027',insert_time='2021-10-12 16:15:01.987260',idx='1',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>,\n", + " <Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:15:01.984158',recv_time='2021-10-12 16:15:01.985027',insert_time='2021-10-12 16:15:01.987260',idx='2',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>],\n", + " [<Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:15:06.984749',recv_time='2021-10-12 16:15:06.985475',insert_time='2021-10-12 16:15:10.684370',idx='0',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>,\n", + " <Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:15:06.984749',recv_time='2021-10-12 16:15:06.985475',insert_time='2021-10-12 16:15:10.684370',idx='1',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>,\n", + " <Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:15:06.984749',recv_time='2021-10-12 16:15:06.985475',insert_time='2021-10-12 16:15:10.684370',idx='2',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>],\n", + " [<Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:15:09.984143',recv_time='2021-10-12 16:15:10.724971',insert_time='2021-10-12 16:15:10.939773',idx='0',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>,\n", + " <Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:15:09.984143',recv_time='2021-10-12 16:15:10.724971',insert_time='2021-10-12 16:15:10.939773',idx='1',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>,\n", + " <Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:15:09.984143',recv_time='2021-10-12 16:15:10.724971',insert_time='2021-10-12 16:15:10.939773',idx='2',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>],\n", + " [<Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:15:11.984527',recv_time='2021-10-12 16:15:11.985832',insert_time='2021-10-12 16:15:11.987864',idx='0',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>,\n", + " <Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:15:11.984527',recv_time='2021-10-12 16:15:11.985832',insert_time='2021-10-12 16:15:11.987864',idx='1',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>,\n", + " <Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:15:11.984527',recv_time='2021-10-12 16:15:11.985832',insert_time='2021-10-12 16:15:11.987864',idx='2',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>],\n", + " [<Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:15:16.984401',recv_time='2021-10-12 16:15:16.985325',insert_time='2021-10-12 16:15:16.987491',idx='0',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>,\n", + " <Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:15:16.984401',recv_time='2021-10-12 16:15:16.985325',insert_time='2021-10-12 16:15:16.987491',idx='1',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>,\n", + " <Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:15:16.984401',recv_time='2021-10-12 16:15:16.985325',insert_time='2021-10-12 16:15:16.987491',idx='2',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>],\n", + " [<Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:15:21.984689',recv_time='2021-10-12 16:15:21.987848',insert_time='2021-10-12 16:15:21.995639',idx='0',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>,\n", + " <Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:15:21.984689',recv_time='2021-10-12 16:15:21.987848',insert_time='2021-10-12 16:15:21.995639',idx='1',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>,\n", + " <Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:15:21.984689',recv_time='2021-10-12 16:15:21.987848',insert_time='2021-10-12 16:15:21.995639',idx='2',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>],\n", + " [<Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:15:26.985033',recv_time='2021-10-12 16:15:26.986515',insert_time='2021-10-12 16:15:26.989821',idx='0',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>,\n", + " <Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:15:26.985033',recv_time='2021-10-12 16:15:26.986515',insert_time='2021-10-12 16:15:26.989821',idx='1',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>,\n", + " <Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:15:26.985033',recv_time='2021-10-12 16:15:26.986515',insert_time='2021-10-12 16:15:26.989821',idx='2',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>],\n", + " [<Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:15:31.984568',recv_time='2021-10-12 16:15:31.985507',insert_time='2021-10-12 16:15:31.987596',idx='0',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>,\n", + " <Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:15:31.984568',recv_time='2021-10-12 16:15:31.985507',insert_time='2021-10-12 16:15:31.987596',idx='1',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>,\n", + " <Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:15:31.984568',recv_time='2021-10-12 16:15:31.985507',insert_time='2021-10-12 16:15:31.987596',idx='2',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>],\n", + " [<Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:15:36.984577',recv_time='2021-10-12 16:15:36.985529',insert_time='2021-10-12 16:15:36.987719',idx='0',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>,\n", + " <Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:15:36.984577',recv_time='2021-10-12 16:15:36.985529',insert_time='2021-10-12 16:15:36.987719',idx='1',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>,\n", + " <Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:15:36.984577',recv_time='2021-10-12 16:15:36.985529',insert_time='2021-10-12 16:15:36.987719',idx='2',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>],\n", + " [<Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:15:41.984143',recv_time='2021-10-12 16:15:41.985114',insert_time='2021-10-12 16:15:41.987742',idx='0',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>,\n", + " <Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:15:41.984143',recv_time='2021-10-12 16:15:41.985114',insert_time='2021-10-12 16:15:41.987742',idx='1',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>,\n", + " <Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:15:41.984143',recv_time='2021-10-12 16:15:41.985114',insert_time='2021-10-12 16:15:41.987742',idx='2',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>],\n", + " [<Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:15:46.983999',recv_time='2021-10-12 16:15:46.985104',insert_time='2021-10-12 16:15:46.988166',idx='0',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>,\n", + " <Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:15:46.983999',recv_time='2021-10-12 16:15:46.985104',insert_time='2021-10-12 16:15:46.988166',idx='1',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>,\n", + " <Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:15:46.983999',recv_time='2021-10-12 16:15:46.985104',insert_time='2021-10-12 16:15:46.988166',idx='2',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>],\n", + " [<Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:15:51.984200',recv_time='2021-10-12 16:15:51.985471',insert_time='2021-10-12 16:15:51.988197',idx='0',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>,\n", + " <Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:15:51.984200',recv_time='2021-10-12 16:15:51.985471',insert_time='2021-10-12 16:15:51.988197',idx='1',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>,\n", + " <Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:15:51.984200',recv_time='2021-10-12 16:15:51.985471',insert_time='2021-10-12 16:15:51.988197',idx='2',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>],\n", + " [<Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:15:56.984150',recv_time='2021-10-12 16:15:56.985423',insert_time='2021-10-12 16:15:56.988016',idx='0',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>,\n", + " <Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:15:56.984150',recv_time='2021-10-12 16:15:56.985423',insert_time='2021-10-12 16:15:56.988016',idx='1',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>,\n", + " <Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:15:56.984150',recv_time='2021-10-12 16:15:56.985423',insert_time='2021-10-12 16:15:56.988016',idx='2',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>],\n", + " [<Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:16:01.984230',recv_time='2021-10-12 16:16:01.985094',insert_time='2021-10-12 16:16:01.987267',idx='0',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>,\n", + " <Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:16:01.984230',recv_time='2021-10-12 16:16:01.985094',insert_time='2021-10-12 16:16:01.987267',idx='1',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>,\n", + " <Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:16:01.984230',recv_time='2021-10-12 16:16:01.985094',insert_time='2021-10-12 16:16:01.987267',idx='2',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>],\n", + " [<Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:16:06.983920',recv_time='2021-10-12 16:16:06.984817',insert_time='2021-10-12 16:16:06.986719',idx='0',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>,\n", + " <Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:16:06.983920',recv_time='2021-10-12 16:16:06.984817',insert_time='2021-10-12 16:16:06.986719',idx='1',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>,\n", + " <Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:16:06.983920',recv_time='2021-10-12 16:16:06.984817',insert_time='2021-10-12 16:16:06.986719',idx='2',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>],\n", + " [<Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:16:11.984220',recv_time='2021-10-12 16:16:11.985126',insert_time='2021-10-12 16:16:11.986983',idx='0',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>,\n", + " <Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:16:11.984220',recv_time='2021-10-12 16:16:11.985126',insert_time='2021-10-12 16:16:11.986983',idx='1',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>,\n", + " <Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:16:11.984220',recv_time='2021-10-12 16:16:11.985126',insert_time='2021-10-12 16:16:11.986983',idx='2',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>],\n", + " [<Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:16:16.983941',recv_time='2021-10-12 16:16:16.984744',insert_time='2021-10-12 16:16:16.986615',idx='0',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>,\n", + " <Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:16:16.983941',recv_time='2021-10-12 16:16:16.984744',insert_time='2021-10-12 16:16:16.986615',idx='1',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>,\n", + " <Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:16:16.983941',recv_time='2021-10-12 16:16:16.984744',insert_time='2021-10-12 16:16:16.986615',idx='2',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>],\n", + " [<Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:16:21.984522',recv_time='2021-10-12 16:16:21.985446',insert_time='2021-10-12 16:16:21.987553',idx='0',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>,\n", + " <Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:16:21.984522',recv_time='2021-10-12 16:16:21.985446',insert_time='2021-10-12 16:16:21.987553',idx='1',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>,\n", + " <Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:16:21.984522',recv_time='2021-10-12 16:16:21.985446',insert_time='2021-10-12 16:16:21.987553',idx='2',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>],\n", + " [<Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:16:26.984167',recv_time='2021-10-12 16:16:26.985007',insert_time='2021-10-12 16:16:26.986991',idx='0',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>,\n", + " <Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:16:26.984167',recv_time='2021-10-12 16:16:26.985007',insert_time='2021-10-12 16:16:26.986991',idx='1',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>,\n", + " <Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:16:26.984167',recv_time='2021-10-12 16:16:26.985007',insert_time='2021-10-12 16:16:26.986991',idx='2',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>],\n", + " [<Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:16:56.984488',recv_time='2021-10-12 16:16:56.985745',insert_time='2021-10-12 16:16:56.987969',idx='0',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>,\n", + " <Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:16:56.984488',recv_time='2021-10-12 16:16:56.985745',insert_time='2021-10-12 16:16:56.987969',idx='1',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>,\n", + " <Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:16:56.984488',recv_time='2021-10-12 16:16:56.985745',insert_time='2021-10-12 16:16:56.987969',idx='2',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>],\n", + " [<Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:17:01.984591',recv_time='2021-10-12 16:17:01.987665',insert_time='2021-10-12 16:17:01.995973',idx='0',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>,\n", + " <Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:17:01.984591',recv_time='2021-10-12 16:17:01.987665',insert_time='2021-10-12 16:17:01.995973',idx='1',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>,\n", + " <Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:17:01.984591',recv_time='2021-10-12 16:17:01.987665',insert_time='2021-10-12 16:17:01.995973',idx='2',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>],\n", + " [<Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:17:06.985081',recv_time='2021-10-12 16:17:06.988687',insert_time='2021-10-12 16:17:06.996786',idx='0',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>,\n", + " <Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:17:06.985081',recv_time='2021-10-12 16:17:06.988687',insert_time='2021-10-12 16:17:06.996786',idx='1',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>,\n", + " <Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:17:06.985081',recv_time='2021-10-12 16:17:06.988687',insert_time='2021-10-12 16:17:06.996786',idx='2',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>],\n", + " [<Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:17:11.984285',recv_time='2021-10-12 16:17:11.985949',insert_time='2021-10-12 16:17:11.989505',idx='0',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>,\n", + " <Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:17:11.984285',recv_time='2021-10-12 16:17:11.985949',insert_time='2021-10-12 16:17:11.989505',idx='1',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>,\n", + " <Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:17:11.984285',recv_time='2021-10-12 16:17:11.985949',insert_time='2021-10-12 16:17:11.989505',idx='2',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>],\n", + " [<Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:17:16.984731',recv_time='2021-10-12 16:17:16.985852',insert_time='2021-10-12 16:17:16.988141',idx='0',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>,\n", + " <Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:17:16.984731',recv_time='2021-10-12 16:17:16.985852',insert_time='2021-10-12 16:17:16.988141',idx='1',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>,\n", + " <Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:17:16.984731',recv_time='2021-10-12 16:17:16.985852',insert_time='2021-10-12 16:17:16.988141',idx='2',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>],\n", + " [<Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:17:21.983865',recv_time='2021-10-12 16:17:21.985019',insert_time='2021-10-12 16:17:21.987370',idx='0',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>,\n", + " <Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:17:21.983865',recv_time='2021-10-12 16:17:21.985019',insert_time='2021-10-12 16:17:21.987370',idx='1',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>,\n", + " <Array_Boolean_RW(att_conf_id='1',data_time='2021-10-12 16:17:21.983865',recv_time='2021-10-12 16:17:21.985019',insert_time='2021-10-12 16:17:21.987370',idx='2',dim_x_r='3',dim_y_r='32',value_r='1',dim_x_w='3',dim_y_w='32',value_w='1',quality='0',att_error_desc_id='None')>]]" + ] + }, + "execution_count": 21, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "data" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "id": "eb97ee97", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Attribute lts/recv/1/rcu_temperature_r removed!\n", + "Attribute lts/recv/1/clk_enable_pwr_r removed!\n", + "Attribute lts/recv/1/clk_i2c_status_r removed!\n", + "Attribute lts/recv/1/clk_pll_error_r removed!\n", + "Attribute lts/recv/1/clk_pll_locked_r removed!\n", + "Attribute lts/recv/1/clk_translator_busy_r removed!\n", + "Attribute lts/recv/1/hba_element_beamformer_delays_r removed!\n", + "Attribute lts/recv/1/hba_element_led_r removed!\n", + "Attribute lts/recv/1/hba_element_lna_pwr_r removed!\n", + "Attribute lts/recv/1/hba_element_pwr_r removed!\n", + "Attribute lts/recv/1/rcu_adc_lock_r removed!\n", + "Attribute lts/recv/1/rcu_attenuator_r removed!\n", + "Attribute lts/recv/1/rcu_band_r removed!\n", + "Attribute lts/recv/1/rcu_i2c_status_r removed!\n", + "Attribute lts/recv/1/rcu_led0_r removed!\n", + "Attribute lts/recv/1/rcu_led1_r removed!\n", + "Attribute lts/recv/1/rcu_pwr_dig_r removed!\n", + "Attribute lts/recv/1/rcu_translator_busy_r removed!\n", + "Attribute lts/recv/1/rcu_version_r removed!\n", + "Attribute lts/recv/1/rcu_id_r removed!\n", + "Attribute lts/recv/1/status removed!\n", + "Attribute lts/sdp/1/fpga_scrap_r removed!\n", + "Attribute lts/sdp/1/fpga_scrap_rw removed!\n", + "Attribute lts/sdp/1/fpga_weights_r removed!\n", + "Attribute lts/sdp/1/fpga_weights_rw removed!\n" + ] + } + ], + "source": [ + "#archiver.remove_attribute_from_archiver('lts/recv/1/rcu_temperature_r')\n", + "archiver.remove_attributes_in_error()" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "id": "a554cff4", + "metadata": {}, + "outputs": [], + "source": [ + "d.off()\n", + "d2.off()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "71fabd37", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "StationControl", + "language": "python", + "name": "stationcontrol" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.3" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +}