diff --git a/docker-compose/logstash/loki.conf b/docker-compose/logstash/loki.conf
index 0423b33144dbe6d61fb22e583c9385ce99a7dd90..b0b22e26996f82f5dcdb9561183090abb131dbad 100644
--- a/docker-compose/logstash/loki.conf
+++ b/docker-compose/logstash/loki.conf
@@ -97,16 +97,16 @@ filter {
 }
 
 filter {
-  # mark all our mariadb instances
+  # mark our tangodb instances
   grok {
     match => {
-      "program" => [ "archiver-maria-db", "tangodb" ]
+      "program" => ["tangodb" ]
     }
-    add_tag => [ "mariadb" ]
+    add_tag => [ "tangodb" ]
   }
 
-  # parse mariadb output
-  if "mariadb" in [tags] {
+  # parse tangodb output
+  if "tangodb" in [tags] {
     grok {
       match => {
         "message" => [
diff --git a/jupyter-notebooks/Archiving_load_test.ipynb b/jupyter-notebooks/Archiving_load_test.ipynb
deleted file mode 100644
index 1a39a3115949398fd2743d4122aa053bd6f880f6..0000000000000000000000000000000000000000
--- a/jupyter-notebooks/Archiving_load_test.ipynb
+++ /dev/null
@@ -1,1135 +0,0 @@
-{
- "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/tangostationcontrol/tangostationcontrol')\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 stat/recv/1/version_r not found in archiving list!\n",
-      "Attribute stat/recv/1/opcua_missing_attributes_r not found in archiving list!\n",
-      "Attribute stat/recv/1/ant_status_r not found in archiving list!\n",
-      "Attribute stat/recv/1/rcu_led_colour_r not found in archiving list!\n",
-      "Attribute stat/recv/1/ant_mask_rw removed!\n",
-      "Attribute stat/recv/1/hbat_bf_delays_r not found in archiving list!\n",
-      "Attribute stat/recv/1/hbat_bf_delays_rw not found in archiving list!\n",
-      "Attribute stat/recv/1/hbat_led_on_r not found in archiving list!\n",
-      "Attribute stat/recv/1/hbat_led_on_rw not found in archiving list!\n",
-      "Attribute stat/recv/1/hbat_pwr_lna_on_r not found in archiving list!\n",
-      "Attribute stat/recv/1/hbat_pwr_lna_on_rw not found in archiving list!\n",
-      "Attribute stat/recv/1/hbat_pwr_on_r not found in archiving list!\n",
-      "Attribute stat/recv/1/hbat_pwr_on_rw not found in archiving list!\n",
-      "Attribute stat/recv/1/rcu_adc_locked_r not found in archiving list!\n",
-      "Attribute stat/recv/1/rcu_attenuator_db_r not found in archiving list!\n",
-      "Attribute stat/recv/1/rcu_attenuator_db_rw not found in archiving list!\n",
-      "Attribute stat/recv/1/rcu_band_select_r not found in archiving list!\n",
-      "Attribute stat/recv/1/rcu_band_select_rw not found in archiving list!\n",
-      "Attribute stat/recv/1/rcu_dth_freq_r not found in archiving list!\n",
-      "Attribute stat/recv/1/rcu_dth_freq_rw not found in archiving list!\n",
-      "Attribute stat/recv/1/rcu_dth_on_r not found in archiving list!\n",
-      "Attribute stat/recv/1/rcu_led_green_on_r not found in archiving list!\n",
-      "Attribute stat/recv/1/rcu_led_green_on_rw not found in archiving list!\n",
-      "Attribute stat/recv/1/rcu_led_red_on_r not found in archiving list!\n",
-      "Attribute stat/recv/1/rcu_led_red_on_rw not found in archiving list!\n",
-      "Attribute stat/recv/1/rcu_mask_rw removed!\n",
-      "Attribute stat/recv/1/rcu_pcb_id_r not found in archiving list!\n",
-      "Attribute stat/recv/1/rcu_pcb_number_r not found in archiving list!\n",
-      "Attribute stat/recv/1/rcu_pcb_version_r not found in archiving list!\n",
-      "Attribute stat/recv/1/rcu_pwr_1v8_r not found in archiving list!\n",
-      "Attribute stat/recv/1/rcu_pwr_2v5_r not found in archiving list!\n",
-      "Attribute stat/recv/1/rcu_pwr_3v3_r not found in archiving list!\n",
-      "Attribute stat/recv/1/rcu_pwr_analog_on_r not found in archiving list!\n",
-      "Attribute stat/recv/1/rcu_pwr_ant_iout_r not found in archiving list!\n",
-      "Attribute stat/recv/1/rcu_pwr_ant_on_r not found in archiving list!\n",
-      "Attribute stat/recv/1/rcu_pwr_ant_on_rw not found in archiving list!\n",
-      "Attribute stat/recv/1/rcu_pwr_ant_vin_r not found in archiving list!\n",
-      "Attribute stat/recv/1/rcu_pwr_ant_vout_r not found in archiving list!\n",
-      "Attribute stat/recv/1/rcu_pwr_digital_on_r not found in archiving list!\n",
-      "Attribute stat/recv/1/rcu_pwr_good_r not found in archiving list!\n",
-      "Attribute stat/recv/1/rcu_temp_r not found in archiving list!\n",
-      "Attribute stat/recv/1/recvtr_i2c_error_r not found in archiving list!\n",
-      "Attribute stat/recv/1/recvtr_monitor_rate_rw not found in archiving list!\n",
-      "Attribute stat/recv/1/recvtr_translator_busy_r not found in archiving list!\n",
-      "Attribute stat/recv/1/state removed!\n",
-      "Attribute stat/recv/1/status not found in archiving list!\n",
-      "Attribute stat/sdp/1/version_r not found in archiving list!\n",
-      "Attribute stat/sdp/1/opcua_missing_attributes_r not found in archiving list!\n",
-      "Attribute stat/sdp/1/fpga_wg_amplitude_rw not found in archiving list!\n",
-      "Attribute stat/sdp/1/fpga_wg_frequency_rw not found in archiving list!\n",
-      "Attribute stat/sdp/1/fpga_wg_phase_rw not found in archiving list!\n",
-      "Attribute stat/sdp/1/fpga_beamlet_output_enable_r not found in archiving list!\n",
-      "Attribute stat/sdp/1/fpga_beamlet_output_enable_rw not found in archiving list!\n",
-      "Attribute stat/sdp/1/fpga_beamlet_output_hdr_eth_destination_mac_r not found in archiving list!\n",
-      "Attribute stat/sdp/1/fpga_beamlet_output_hdr_eth_destination_mac_rw not found in archiving list!\n",
-      "Attribute stat/sdp/1/fpga_beamlet_output_hdr_ip_destination_address_r not found in archiving list!\n",
-      "Attribute stat/sdp/1/fpga_beamlet_output_hdr_ip_destination_address_rw not found in archiving list!\n",
-      "Attribute stat/sdp/1/fpga_beamlet_output_hdr_udp_destination_port_r not found in archiving list!\n",
-      "Attribute stat/sdp/1/fpga_beamlet_output_hdr_udp_destination_port_rw not found in archiving list!\n",
-      "Attribute stat/sdp/1/fpga_beamlet_output_scale_r not found in archiving list!\n",
-      "Attribute stat/sdp/1/fpga_beamlet_output_scale_rw not found in archiving list!\n",
-      "Attribute stat/sdp/1/fpga_firmware_version_r not found in archiving list!\n",
-      "Attribute stat/sdp/1/fpga_global_node_index_r not found in archiving list!\n",
-      "Attribute stat/sdp/1/fpga_hardware_version_r not found in archiving list!\n",
-      "Attribute stat/sdp/1/fpga_processing_enable_r not found in archiving list!\n",
-      "Attribute stat/sdp/1/fpga_processing_enable_rw not found in archiving list!\n",
-      "Attribute stat/sdp/1/fpga_scrap_r not found in archiving list!\n",
-      "Attribute stat/sdp/1/fpga_scrap_rw not found in archiving list!\n",
-      "Attribute stat/sdp/1/fpga_sdp_info_antenna_band_index_r not found in archiving list!\n",
-      "Attribute stat/sdp/1/fpga_sdp_info_block_period_r not found in archiving list!\n",
-      "Attribute stat/sdp/1/fpga_sdp_info_f_adc_r not found in archiving list!\n",
-      "Attribute stat/sdp/1/fpga_sdp_info_fsub_type_r not found in archiving list!\n",
-      "Attribute stat/sdp/1/fpga_sdp_info_nyquist_sampling_zone_index_r not found in archiving list!\n",
-      "Attribute stat/sdp/1/fpga_sdp_info_nyquist_sampling_zone_index_rw not found in archiving list!\n",
-      "Attribute stat/sdp/1/fpga_sdp_info_observation_id_r not found in archiving list!\n",
-      "Attribute stat/sdp/1/fpga_sdp_info_observation_id_rw not found in archiving list!\n",
-      "Attribute stat/sdp/1/fpga_sdp_info_station_id_r not found in archiving list!\n",
-      "Attribute stat/sdp/1/fpga_sdp_info_station_id_rw not found in archiving list!\n",
-      "Attribute stat/sdp/1/fpga_subband_weights_r not found in archiving list!\n",
-      "Attribute stat/sdp/1/fpga_subband_weights_rw not found in archiving list!\n",
-      "Attribute stat/sdp/1/fpga_temp_r not found in archiving list!\n",
-      "Attribute stat/sdp/1/fpga_weights_r not found in archiving list!\n",
-      "Attribute stat/sdp/1/fpga_weights_rw not found in archiving list!\n",
-      "Attribute stat/sdp/1/fpga_wg_amplitude_r not found in archiving list!\n",
-      "Attribute stat/sdp/1/fpga_wg_enable_r not found in archiving list!\n",
-      "Attribute stat/sdp/1/fpga_wg_enable_rw not found in archiving list!\n",
-      "Attribute stat/sdp/1/fpga_wg_frequency_r not found in archiving list!\n",
-      "Attribute stat/sdp/1/fpga_wg_phase_r not found in archiving list!\n",
-      "Attribute stat/sdp/1/tr_fpga_mask_r not found in archiving list!\n",
-      "Attribute stat/sdp/1/tr_fpga_mask_rw not found in archiving list!\n",
-      "Attribute stat/sdp/1/tr_fpga_communication_error_r not found in archiving list!\n",
-      "Attribute stat/sdp/1/tr_sdp_config_first_fpga_nr_r not found in archiving list!\n",
-      "Attribute stat/sdp/1/tr_sdp_config_nof_beamsets_r not found in archiving list!\n",
-      "Attribute stat/sdp/1/tr_sdp_config_nof_fpgas_r not found in archiving list!\n",
-      "Attribute stat/sdp/1/tr_software_version_r not found in archiving list!\n",
-      "Attribute stat/sdp/1/tr_start_time_r not found in archiving list!\n",
-      "Attribute stat/sdp/1/tr_tod_r removed!\n",
-      "Attribute stat/sdp/1/tr_tod_pps_delta_r not found in archiving list!\n",
-      "Attribute stat/sdp/1/fpga_signal_input_mean_r not found in archiving list!\n",
-      "Attribute stat/sdp/1/fpga_signal_input_rms_r not found in archiving list!\n",
-      "Attribute stat/sdp/1/fpga_jesd204b_csr_rbd_count_r not found in archiving list!\n",
-      "Attribute stat/sdp/1/fpga_jesd204b_csr_dev_syncn_r not found in archiving list!\n",
-      "Attribute stat/sdp/1/fpga_jesd204b_rx_err0_r not found in archiving list!\n",
-      "Attribute stat/sdp/1/fpga_jesd204b_rx_err1_r not found in archiving list!\n",
-      "Attribute stat/sdp/1/fpga_bsn_monitor_input_bsn_r not found in archiving list!\n",
-      "Attribute stat/sdp/1/fpga_bsn_monitor_input_nof_packets_r not found in archiving list!\n",
-      "Attribute stat/sdp/1/fpga_bsn_monitor_input_nof_valid_r not found in archiving list!\n",
-      "Attribute stat/sdp/1/fpga_bsn_monitor_input_nof_err_r not found in archiving list!\n",
-      "Attribute stat/sdp/1/state not found in archiving list!\n",
-      "Attribute stat/sdp/1/status not found in archiving list!\n",
-      "Device STAT/SST/1 offline\n",
-      "Device STAT/XST/1 offline\n",
-      "Device STAT/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': {'STAT/RECV/1': {'environment': 'development',\n",
-       "   'include': [],\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",
-       "  'STAT/SDP/1': {'environment': 'development',\n",
-       "   'include': [],\n",
-       "   'exclude': ['FPGA_scrap_R', 'FPGA_scrap_RW']},\n",
-       "  'STAT/SST/1': {'environment': 'development', 'include': [], 'exclude': []},\n",
-       "  'STAT/XST/1': {'environment': 'development', 'include': [], 'exclude': []},\n",
-       "  'STAT/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 = 'STAT/RECV/1'\n",
-    "d=DeviceProxy(device_name) \n",
-    "d.set_timeout_millis(10000)\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 stat/recv/1/version_r will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/recv/1/opcua_missing_attributes_r will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/recv/1/ant_status_r will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/recv/1/rcu_led_colour_r will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/recv/1/hbat_bf_delays_r will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/recv/1/hbat_bf_delays_rw will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/recv/1/hbat_led_on_r will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/recv/1/hbat_led_on_rw will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/recv/1/hbat_pwr_lna_on_r will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/recv/1/hbat_pwr_lna_on_rw will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/recv/1/hbat_pwr_on_r will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/recv/1/hbat_pwr_on_rw will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/recv/1/rcu_adc_locked_r will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/recv/1/rcu_attenuator_db_r will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/recv/1/rcu_attenuator_db_rw will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/recv/1/rcu_band_select_r will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/recv/1/rcu_band_select_rw will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/recv/1/rcu_dth_freq_r will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/recv/1/rcu_dth_freq_rw will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/recv/1/rcu_dth_on_r will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/recv/1/rcu_led_green_on_r will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/recv/1/rcu_led_green_on_rw will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/recv/1/rcu_led_red_on_r will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/recv/1/rcu_led_red_on_rw will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/recv/1/rcu_pcb_id_r will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/recv/1/rcu_pcb_number_r will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/recv/1/rcu_pcb_version_r will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/recv/1/rcu_pwr_1v8_r will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/recv/1/rcu_pwr_2v5_r will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/recv/1/rcu_pwr_3v3_r will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/recv/1/rcu_pwr_analog_on_r will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/recv/1/rcu_pwr_ant_iout_r will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/recv/1/rcu_pwr_ant_on_r will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/recv/1/rcu_pwr_ant_on_rw will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/recv/1/rcu_pwr_ant_vin_r will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/recv/1/rcu_pwr_ant_vout_r will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/recv/1/rcu_pwr_digital_on_r will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/recv/1/rcu_pwr_good_r will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/recv/1/rcu_temp_r will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/recv/1/recvtr_i2c_error_r will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/recv/1/recvtr_monitor_rate_rw will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/recv/1/recvtr_translator_busy_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/stat/recv/1/ant_mask_rw': 'Read value for attribute ANT_mask_RW has not been updated',\n",
-       " 'tango://databaseds:10000/stat/recv/1/rcu_mask_rw': 'Read value for attribute RCU_mask_RW has not been updated',\n",
-       " 'tango://databaseds:10000/stat/recv/1/status': 'Storing Error: mysql_stmt_bind_param() failed, err=Buffer type is not supported'}"
-      ]
-     },
-     "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.set_defaults()\n",
-    "    d.on()\n",
-    "state = str(d.state())\n",
-    "if state == \"ON\":\n",
-    "    print(\"Device is now in ON state\")"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": 8,
-   "id": "5d40b87c",
-   "metadata": {},
-   "outputs": [
-    {
-     "data": {
-      "text/plain": [
-       "['tango://databaseds:10000/stat/recv/1/ant_mask_rw',\n",
-       " 'tango://databaseds:10000/stat/recv/1/rcu_mask_rw',\n",
-       " 'tango://databaseds:10000/stat/recv/1/state',\n",
-       " 'tango://databaseds:10000/stat/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/stat/recv/1/ant_mask_rw': 'Read value for attribute ANT_mask_RW has not been updated',\n",
-       " 'tango://databaseds:10000/stat/recv/1/rcu_mask_rw': 'Read value for attribute RCU_mask_RW has not been updated',\n",
-       " 'tango://databaseds:10000/stat/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",
-      "STAT/RECV/1/ant_mask_rw                       1000            5000           \n",
-      "STAT/RECV/1/rcu_mask_rw                       1000            5000           \n",
-      "STAT/RECV/1/state                             1000            5000           \n",
-      "STAT/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",
-    "        a = parse_attribute_name(a)\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": [
-       "'0.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",
-      "STAT/RECV/1/ant_mask_rw                       0.0             12.0           \n",
-      "STAT/RECV/1/rcu_mask_rw                       0.0             12.0           \n",
-      "STAT/RECV/1/state                             0.0             12.0           \n",
-      "STAT/RECV/1/status                            0.0             12.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",
-    "        a = parse_attribute_name(a)\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 STAT/RECV/1/rcu_mask_rw removed!\n"
-     ]
-    }
-   ],
-   "source": [
-    "# Update the archive time of an attribute\n",
-    "archiver.update_archiving_attribute('STAT/RECV/1/rcu_mask_rw',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",
-      "STAT/RECV/1/ant_mask_rw                       1000            5000           \n",
-      "STAT/RECV/1/state                             1000            5000           \n",
-      "STAT/RECV/1/status                            1000            5000           \n",
-      "STAT/RECV/1/rcu_mask_rw                       1000            10000          \n",
-      "\n",
-      "Attribute                                     Record Freq     Failure Freq   \n",
-      "----------\n",
-      "STAT/RECV/1/ant_mask_rw                       0.0             3.0            \n",
-      "STAT/RECV/1/state                             1.0             2.0            \n",
-      "STAT/RECV/1/status                            -1.0            4.0            \n",
-      "STAT/RECV/1/rcu_mask_rw                       1.0             0.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 stat/sdp/1/version_r will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/sdp/1/opcua_missing_attributes_r will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/sdp/1/fpga_wg_amplitude_rw will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/sdp/1/fpga_wg_frequency_rw will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/sdp/1/fpga_wg_phase_rw will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/sdp/1/fpga_beamlet_output_enable_r will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/sdp/1/fpga_beamlet_output_enable_rw will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/sdp/1/fpga_beamlet_output_hdr_eth_destination_mac_r will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/sdp/1/fpga_beamlet_output_hdr_eth_destination_mac_rw will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/sdp/1/fpga_beamlet_output_hdr_ip_destination_address_r will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/sdp/1/fpga_beamlet_output_hdr_ip_destination_address_rw will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/sdp/1/fpga_beamlet_output_hdr_udp_destination_port_r will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/sdp/1/fpga_beamlet_output_hdr_udp_destination_port_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 stat/sdp/1/fpga_beamlet_output_scale_r will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/sdp/1/fpga_beamlet_output_scale_rw will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/sdp/1/fpga_firmware_version_r will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/sdp/1/fpga_global_node_index_r will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/sdp/1/fpga_hardware_version_r will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/sdp/1/fpga_processing_enable_r will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/sdp/1/fpga_processing_enable_rw will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/sdp/1/fpga_sdp_info_antenna_band_index_r will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/sdp/1/fpga_sdp_info_block_period_r will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/sdp/1/fpga_sdp_info_f_adc_r will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/sdp/1/fpga_sdp_info_fsub_type_r will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/sdp/1/fpga_sdp_info_nyquist_sampling_zone_index_r will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/sdp/1/fpga_sdp_info_nyquist_sampling_zone_index_rw will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/sdp/1/fpga_sdp_info_observation_id_r will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/sdp/1/fpga_sdp_info_observation_id_rw will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/sdp/1/fpga_sdp_info_station_id_r will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/sdp/1/fpga_sdp_info_station_id_rw will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/sdp/1/fpga_subband_weights_r will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/sdp/1/fpga_subband_weights_rw will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/sdp/1/fpga_wg_amplitude_r will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/sdp/1/fpga_wg_enable_r will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/sdp/1/fpga_wg_enable_rw will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/sdp/1/fpga_wg_frequency_r will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/sdp/1/fpga_wg_phase_r will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/sdp/1/tr_fpga_mask_r will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/sdp/1/tr_fpga_mask_rw will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/sdp/1/tr_fpga_communication_error_r will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/sdp/1/tr_sdp_config_first_fpga_nr_r will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/sdp/1/tr_sdp_config_nof_beamsets_r will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/sdp/1/tr_sdp_config_nof_fpgas_r will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/sdp/1/tr_software_version_r will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/sdp/1/tr_start_time_r will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/sdp/1/tr_tod_pps_delta_r will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/sdp/1/fpga_signal_input_mean_r will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/sdp/1/fpga_signal_input_rms_r will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/sdp/1/fpga_jesd204b_csr_rbd_count_r will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/sdp/1/fpga_jesd204b_csr_dev_syncn_r will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/sdp/1/fpga_jesd204b_rx_err0_r will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/sdp/1/fpga_jesd204b_rx_err1_r will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/sdp/1/fpga_bsn_monitor_input_bsn_r will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/sdp/1/fpga_bsn_monitor_input_nof_packets_r will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/sdp/1/fpga_bsn_monitor_input_nof_valid_r will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/sdp/1/fpga_bsn_monitor_input_nof_err_r will not be archived because polling is set to FALSE!\n"
-     ]
-    }
-   ],
-   "source": [
-    "# Add SDP attributes to load test\n",
-    "sdp_name = 'STAT/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",
-    "    d2.set_timeout_millis(10000)#Temporary workaround due to new SPD implementation\n",
-    "    time.sleep(1)\n",
-    "    d2.initialise()\n",
-    "    time.sleep(1)\n",
-    "state = str(d2.state())\n",
-    "if state == \"STANDBY\":\n",
-    "    d.set_defaults()\n",
-    "    d2.on()\n",
-    "state = str(d2.state())\n",
-    "if state == \"ON\":\n",
-    "    print(\"Device is now in ON state\")"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": 17,
-   "id": "b53e5b8b",
-   "metadata": {},
-   "outputs": [
-    {
-     "data": {
-      "text/plain": [
-       "{'tango://databaseds:10000/stat/recv/1/status': 'Storing Error: mysql_stmt_bind_param() failed, err=Buffer type is not supported',\n",
-       " 'tango://databaseds:10000/stat/sdp/1/fpga_scrap_r': 'Read value for attribute FPGA_scrap_R has not been updated',\n",
-       " 'tango://databaseds:10000/stat/sdp/1/fpga_scrap_rw': 'Read value for attribute FPGA_scrap_RW has not been updated',\n",
-       " 'tango://databaseds:10000/stat/sdp/1/fpga_temp_r': 'Read value for attribute FPGA_temp_R has not been updated',\n",
-       " 'tango://databaseds:10000/stat/sdp/1/fpga_weights_r': 'Read value for attribute FPGA_weights_R has not been updated',\n",
-       " 'tango://databaseds:10000/stat/sdp/1/fpga_weights_rw': 'Read value for attribute FPGA_weights_RW has not been updated',\n",
-       " 'tango://databaseds:10000/stat/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\n",
-    "#Reminder: MySQL DBMS cannot handle SPD/FPGA_scrap_R attribute probably due to its dimension (8192)"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": 18,
-   "id": "4fed6cf4",
-   "metadata": {},
-   "outputs": [
-    {
-     "name": "stdout",
-     "output_type": "stream",
-     "text": [
-      "Attribute                                     Poll Period     Archive Period \n",
-      "----------\n",
-      "STAT/RECV/1/ant_mask_rw                       1000            5000           \n",
-      "STAT/RECV/1/state                             1000            5000           \n",
-      "STAT/RECV/1/status                            1000            5000           \n",
-      "STAT/RECV/1/rcu_mask_rw                       1000            10000          \n",
-      "STAT/SDP/1/fpga_scrap_r                       1000            5000           \n",
-      "STAT/SDP/1/fpga_scrap_rw                      1000            5000           \n",
-      "STAT/SDP/1/fpga_temp_r                        1000            5000           \n",
-      "STAT/SDP/1/fpga_weights_r                     1000            5000           \n",
-      "STAT/SDP/1/fpga_weights_rw                    1000            5000           \n",
-      "STAT/SDP/1/tr_tod_r                           1000            5000           \n",
-      "\n",
-      "Attribute                                     Record Freq     Failure Freq   \n",
-      "----------\n",
-      "STAT/RECV/1/ant_mask_rw                       0.0             3.0            \n",
-      "STAT/RECV/1/state                             1.0             2.0            \n",
-      "STAT/RECV/1/status                            -1.0            4.0            \n",
-      "STAT/RECV/1/rcu_mask_rw                       1.0             0.0            \n",
-      "STAT/SDP/1/fpga_scrap_r                       -6.0            18.0           \n",
-      "STAT/SDP/1/fpga_scrap_rw                      -6.0            18.0           \n",
-      "STAT/SDP/1/fpga_temp_r                        0.0             12.0           \n",
-      "STAT/SDP/1/fpga_weights_r                     -6.0            18.0           \n",
-      "STAT/SDP/1/fpga_weights_rw                    -6.0            18.0           \n",
-      "STAT/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": [
-       "'stat/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-11-09 11:52:29.957895',recv_time='2021-11-09 11:52:30.955440',insert_time='2021-11-09 11:52:30.957113',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-11-09 11:52:29.957895',recv_time='2021-11-09 11:52:30.955440',insert_time='2021-11-09 11:52:30.957113',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-11-09 11:52:29.957895',recv_time='2021-11-09 11:52:30.955440',insert_time='2021-11-09 11:52:30.957113',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-11-09 11:52:40.957954',recv_time='2021-11-09 11:52:40.997550',insert_time='2021-11-09 11:52:40.998981',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-11-09 11:52:40.957954',recv_time='2021-11-09 11:52:40.997550',insert_time='2021-11-09 11:52:40.998981',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-11-09 11:52:40.957954',recv_time='2021-11-09 11:52:40.997550',insert_time='2021-11-09 11:52:40.998981',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-11-09 11:52:50.958367',recv_time='2021-11-09 11:52:51.031650',insert_time='2021-11-09 11:52:51.033094',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-11-09 11:52:50.958367',recv_time='2021-11-09 11:52:51.031650',insert_time='2021-11-09 11:52:51.033094',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-11-09 11:52:50.958367',recv_time='2021-11-09 11:52:51.031650',insert_time='2021-11-09 11:52:51.033094',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-11-09 11:53:00.957834',recv_time='2021-11-09 11:53:01.070405',insert_time='2021-11-09 11:53:01.071890',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-11-09 11:53:00.957834',recv_time='2021-11-09 11:53:01.070405',insert_time='2021-11-09 11:53:01.071890',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-11-09 11:53:00.957834',recv_time='2021-11-09 11:53:01.070405',insert_time='2021-11-09 11:53:01.071890',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-11-09 11:53:10.957778',recv_time='2021-11-09 11:53:11.109409',insert_time='2021-11-09 11:53:11.110791',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-11-09 11:53:10.957778',recv_time='2021-11-09 11:53:11.109409',insert_time='2021-11-09 11:53:11.110791',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-11-09 11:53:10.957778',recv_time='2021-11-09 11:53:11.109409',insert_time='2021-11-09 11:53:11.110791',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-11-09 11:53:20.958163',recv_time='2021-11-09 11:53:21.139904',insert_time='2021-11-09 11:53:21.141175',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-11-09 11:53:20.958163',recv_time='2021-11-09 11:53:21.139904',insert_time='2021-11-09 11:53:21.141175',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-11-09 11:53:20.958163',recv_time='2021-11-09 11:53:21.139904',insert_time='2021-11-09 11:53:21.141175',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-11-09 11:53:30.958127',recv_time='2021-11-09 11:53:31.177200',insert_time='2021-11-09 11:53:31.178474',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-11-09 11:53:30.958127',recv_time='2021-11-09 11:53:31.177200',insert_time='2021-11-09 11:53:31.178474',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-11-09 11:53:30.958127',recv_time='2021-11-09 11:53:31.177200',insert_time='2021-11-09 11:53:31.178474',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-11-09 11:53:40.957758',recv_time='2021-11-09 11:53:41.215064',insert_time='2021-11-09 11:53:41.216572',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-11-09 11:53:40.957758',recv_time='2021-11-09 11:53:41.215064',insert_time='2021-11-09 11:53:41.216572',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-11-09 11:53:40.957758',recv_time='2021-11-09 11:53:41.215064',insert_time='2021-11-09 11:53:41.216572',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-11-09 11:53:50.958355',recv_time='2021-11-09 11:53:51.248946',insert_time='2021-11-09 11:53:51.250289',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-11-09 11:53:50.958355',recv_time='2021-11-09 11:53:51.248946',insert_time='2021-11-09 11:53:51.250289',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-11-09 11:53:50.958355',recv_time='2021-11-09 11:53:51.248946',insert_time='2021-11-09 11:53:51.250289',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-11-09 11:54:00.958079',recv_time='2021-11-09 11:54:01.282162',insert_time='2021-11-09 11:54:01.283518',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-11-09 11:54:00.958079',recv_time='2021-11-09 11:54:01.282162',insert_time='2021-11-09 11:54:01.283518',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-11-09 11:54:00.958079',recv_time='2021-11-09 11:54:01.282162',insert_time='2021-11-09 11:54:01.283518',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-11-09 11:54:10.958288',recv_time='2021-11-09 11:54:11.313545',insert_time='2021-11-09 11:54:11.314891',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-11-09 11:54:10.958288',recv_time='2021-11-09 11:54:11.313545',insert_time='2021-11-09 11:54:11.314891',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-11-09 11:54:10.958288',recv_time='2021-11-09 11:54:11.313545',insert_time='2021-11-09 11:54:11.314891',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-11-09 11:54:20.958563',recv_time='2021-11-09 11:54:21.344520',insert_time='2021-11-09 11:54:21.345807',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-11-09 11:54:20.958563',recv_time='2021-11-09 11:54:21.344520',insert_time='2021-11-09 11:54:21.345807',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-11-09 11:54:20.958563',recv_time='2021-11-09 11:54:21.344520',insert_time='2021-11-09 11:54:21.345807',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-11-09 11:54:30.958539',recv_time='2021-11-09 11:54:31.379597',insert_time='2021-11-09 11:54:31.380996',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-11-09 11:54:30.958539',recv_time='2021-11-09 11:54:31.379597',insert_time='2021-11-09 11:54:31.380996',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-11-09 11:54:30.958539',recv_time='2021-11-09 11:54:31.379597',insert_time='2021-11-09 11:54:31.380996',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-11-09 11:54:40.958046',recv_time='2021-11-09 11:54:41.414444',insert_time='2021-11-09 11:54:41.415878',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-11-09 11:54:40.958046',recv_time='2021-11-09 11:54:41.414444',insert_time='2021-11-09 11:54:41.415878',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-11-09 11:54:40.958046',recv_time='2021-11-09 11:54:41.414444',insert_time='2021-11-09 11:54:41.415878',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-11-09 11:54:50.958498',recv_time='2021-11-09 11:54:51.446569',insert_time='2021-11-09 11:54:51.447766',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-11-09 11:54:50.958498',recv_time='2021-11-09 11:54:51.446569',insert_time='2021-11-09 11:54:51.447766',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-11-09 11:54:50.958498',recv_time='2021-11-09 11:54:51.446569',insert_time='2021-11-09 11:54:51.447766',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-11-09 11:55:00.958172',recv_time='2021-11-09 11:55:01.478610',insert_time='2021-11-09 11:55:01.480002',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-11-09 11:55:00.958172',recv_time='2021-11-09 11:55:01.478610',insert_time='2021-11-09 11:55:01.480002',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-11-09 11:55:00.958172',recv_time='2021-11-09 11:55:01.478610',insert_time='2021-11-09 11:55:01.480002',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-11-09 11:55:10.957568',recv_time='2021-11-09 11:55:11.517281',insert_time='2021-11-09 11:55:11.518621',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-11-09 11:55:10.957568',recv_time='2021-11-09 11:55:11.517281',insert_time='2021-11-09 11:55:11.518621',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-11-09 11:55:10.957568',recv_time='2021-11-09 11:55:11.517281',insert_time='2021-11-09 11:55:11.518621',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-11-09 11:55:20.958282',recv_time='2021-11-09 11:55:21.552854',insert_time='2021-11-09 11:55:21.554212',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-11-09 11:55:20.958282',recv_time='2021-11-09 11:55:21.552854',insert_time='2021-11-09 11:55:21.554212',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-11-09 11:55:20.958282',recv_time='2021-11-09 11:55:21.552854',insert_time='2021-11-09 11:55:21.554212',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-11-09 11:55:30.957464',recv_time='2021-11-09 11:55:31.585827',insert_time='2021-11-09 11:55:31.587218',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-11-09 11:55:30.957464',recv_time='2021-11-09 11:55:31.585827',insert_time='2021-11-09 11:55:31.587218',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-11-09 11:55:30.957464',recv_time='2021-11-09 11:55:31.585827',insert_time='2021-11-09 11:55:31.587218',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-11-09 11:55:40.958453',recv_time='2021-11-09 11:55:41.618850',insert_time='2021-11-09 11:55:41.620081',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-11-09 11:55:40.958453',recv_time='2021-11-09 11:55:41.618850',insert_time='2021-11-09 11:55:41.620081',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-11-09 11:55:40.958453',recv_time='2021-11-09 11:55:41.618850',insert_time='2021-11-09 11:55:41.620081',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-11-09 11:55:50.958024',recv_time='2021-11-09 11:55:51.653490',insert_time='2021-11-09 11:55:51.654830',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-11-09 11:55:50.958024',recv_time='2021-11-09 11:55:51.653490',insert_time='2021-11-09 11:55:51.654830',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-11-09 11:55:50.958024',recv_time='2021-11-09 11:55:51.653490',insert_time='2021-11-09 11:55:51.654830',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-11-09 11:56:00.957550',recv_time='2021-11-09 11:56:01.685266',insert_time='2021-11-09 11:56:01.686650',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-11-09 11:56:00.957550',recv_time='2021-11-09 11:56:01.685266',insert_time='2021-11-09 11:56:01.686650',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-11-09 11:56:00.957550',recv_time='2021-11-09 11:56:01.685266',insert_time='2021-11-09 11:56:01.686650',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-11-09 11:56:10.958180',recv_time='2021-11-09 11:56:11.728988',insert_time='2021-11-09 11:56:11.730311',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-11-09 11:56:10.958180',recv_time='2021-11-09 11:56:11.728988',insert_time='2021-11-09 11:56:11.730311',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-11-09 11:56:10.958180',recv_time='2021-11-09 11:56:11.728988',insert_time='2021-11-09 11:56:11.730311',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-11-09 11:56:20.957521',recv_time='2021-11-09 11:56:21.762715',insert_time='2021-11-09 11:56:21.763981',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-11-09 11:56:20.957521',recv_time='2021-11-09 11:56:21.762715',insert_time='2021-11-09 11:56:21.763981',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-11-09 11:56:20.957521',recv_time='2021-11-09 11:56:21.762715',insert_time='2021-11-09 11:56:21.763981',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-11-09 11:56:30.957691',recv_time='2021-11-09 11:56:31.798641',insert_time='2021-11-09 11:56:31.799975',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-11-09 11:56:30.957691',recv_time='2021-11-09 11:56:31.798641',insert_time='2021-11-09 11:56:31.799975',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-11-09 11:56:30.957691',recv_time='2021-11-09 11:56:31.798641',insert_time='2021-11-09 11:56:31.799975',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-11-09 11:56:40.957644',recv_time='2021-11-09 11:56:41.839704',insert_time='2021-11-09 11:56:41.841005',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-11-09 11:56:40.957644',recv_time='2021-11-09 11:56:41.839704',insert_time='2021-11-09 11:56:41.841005',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-11-09 11:56:40.957644',recv_time='2021-11-09 11:56:41.839704',insert_time='2021-11-09 11:56:41.841005',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-11-09 11:56:50.957540',recv_time='2021-11-09 11:56:51.873701',insert_time='2021-11-09 11:56:51.875028',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-11-09 11:56:50.957540',recv_time='2021-11-09 11:56:51.873701',insert_time='2021-11-09 11:56:51.875028',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-11-09 11:56:50.957540',recv_time='2021-11-09 11:56:51.873701',insert_time='2021-11-09 11:56:51.875028',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-11-09 11:57:00.957772',recv_time='2021-11-09 11:57:01.913800',insert_time='2021-11-09 11:57:01.915239',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-11-09 11:57:00.957772',recv_time='2021-11-09 11:57:01.913800',insert_time='2021-11-09 11:57:01.915239',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-11-09 11:57:00.957772',recv_time='2021-11-09 11:57:01.913800',insert_time='2021-11-09 11:57:01.915239',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-11-09 11:57:10.957623',recv_time='2021-11-09 11:57:11.952909',insert_time='2021-11-09 11:57:11.954569',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-11-09 11:57:10.957623',recv_time='2021-11-09 11:57:11.952909',insert_time='2021-11-09 11:57:11.954569',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-11-09 11:57:10.957623',recv_time='2021-11-09 11:57:11.952909',insert_time='2021-11-09 11:57:11.954569',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-11-09 11:57:51.958517',recv_time='2021-11-09 11:57:52.032720',insert_time='2021-11-09 11:57:52.034096',idx='0',dim_x_r='3',dim_y_r='32',value_r='0',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-11-09 11:57:51.958517',recv_time='2021-11-09 11:57:52.032720',insert_time='2021-11-09 11:57:52.034096',idx='1',dim_x_r='3',dim_y_r='32',value_r='0',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-11-09 11:57:51.958517',recv_time='2021-11-09 11:57:52.032720',insert_time='2021-11-09 11:57:52.034096',idx='2',dim_x_r='3',dim_y_r='32',value_r='0',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-11-09 11:58:01.957612',recv_time='2021-11-09 11:58:02.070025',insert_time='2021-11-09 11:58:02.071232',idx='0',dim_x_r='3',dim_y_r='32',value_r='0',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-11-09 11:58:01.957612',recv_time='2021-11-09 11:58:02.070025',insert_time='2021-11-09 11:58:02.071232',idx='1',dim_x_r='3',dim_y_r='32',value_r='0',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-11-09 11:58:01.957612',recv_time='2021-11-09 11:58:02.070025',insert_time='2021-11-09 11:58:02.071232',idx='2',dim_x_r='3',dim_y_r='32',value_r='0',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-11-09 11:58:11.957976',recv_time='2021-11-09 11:58:12.098246',insert_time='2021-11-09 11:58:12.099522',idx='0',dim_x_r='3',dim_y_r='32',value_r='0',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-11-09 11:58:11.957976',recv_time='2021-11-09 11:58:12.098246',insert_time='2021-11-09 11:58:12.099522',idx='1',dim_x_r='3',dim_y_r='32',value_r='0',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-11-09 11:58:11.957976',recv_time='2021-11-09 11:58:12.098246',insert_time='2021-11-09 11:58:12.099522',idx='2',dim_x_r='3',dim_y_r='32',value_r='0',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-11-09 11:58:21.957645',recv_time='2021-11-09 11:58:22.132944',insert_time='2021-11-09 11:58:22.134263',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-11-09 11:58:21.957645',recv_time='2021-11-09 11:58:22.132944',insert_time='2021-11-09 11:58:22.134263',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-11-09 11:58:21.957645',recv_time='2021-11-09 11:58:22.132944',insert_time='2021-11-09 11:58:22.134263',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 stat/recv/1/status removed!\n",
-      "Attribute stat/sdp/1/fpga_scrap_r removed!\n",
-      "Attribute stat/sdp/1/fpga_scrap_rw removed!\n",
-      "Attribute stat/sdp/1/fpga_weights_r removed!\n",
-      "Attribute stat/sdp/1/fpga_weights_rw removed!\n"
-     ]
-    }
-   ],
-   "source": [
-    "#archiver.remove_attribute_from_archiver('STAT/recv/1/rcu_temperature_r')\n",
-    "archiver.remove_attributes_in_error()"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": 27,
-   "id": "6ffaeab3",
-   "metadata": {
-    "scrolled": true
-   },
-   "outputs": [
-    {
-     "name": "stdout",
-     "output_type": "stream",
-     "text": [
-      "['tango://databaseds:10000/archiving/hdbpp/eventsubscriber01']\n",
-      "tango://databaseds:10000/archiving/hdbpp/eventsubscriber01\n",
-      "tango://databaseds:10000/archiving/hdbpp/eventsubscriber01\n"
-     ]
-    }
-   ],
-   "source": [
-    "# Add a new subscriber if not already present\n",
-    "print(archiver.es_list)\n",
-    "print(archiver.get_next_subscriber())\n",
-    "if len(archiver.es_list)==1:\n",
-    "    archiver.add_event_subscriber()\n",
-    "print(archiver.get_next_subscriber()) # choose the best one with minimum load\n",
-    "new_subscriber = archiver.get_next_subscriber()"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": 28,
-   "id": "39f49c8e",
-   "metadata": {},
-   "outputs": [
-    {
-     "name": "stderr",
-     "output_type": "stream",
-     "text": [
-      "Attribute stat/sdp/1/version_r not found in archiving list!\n",
-      "Attribute stat/sdp/1/opcua_missing_attributes_r not found in archiving list!\n",
-      "Attribute stat/sdp/1/fpga_wg_amplitude_rw not found in archiving list!\n",
-      "Attribute stat/sdp/1/fpga_wg_frequency_rw not found in archiving list!\n",
-      "Attribute stat/sdp/1/fpga_wg_phase_rw not found in archiving list!\n",
-      "Attribute stat/sdp/1/fpga_beamlet_output_enable_r not found in archiving list!\n",
-      "Attribute stat/sdp/1/fpga_beamlet_output_enable_rw not found in archiving list!\n",
-      "Attribute stat/sdp/1/fpga_beamlet_output_hdr_eth_destination_mac_r not found in archiving list!\n",
-      "Attribute stat/sdp/1/fpga_beamlet_output_hdr_eth_destination_mac_rw not found in archiving list!\n",
-      "Attribute stat/sdp/1/fpga_beamlet_output_hdr_ip_destination_address_r not found in archiving list!\n",
-      "Attribute stat/sdp/1/fpga_beamlet_output_hdr_ip_destination_address_rw not found in archiving list!\n",
-      "Attribute stat/sdp/1/fpga_beamlet_output_hdr_udp_destination_port_r not found in archiving list!\n",
-      "Attribute stat/sdp/1/fpga_beamlet_output_hdr_udp_destination_port_rw not found in archiving list!\n",
-      "Attribute stat/sdp/1/fpga_beamlet_output_scale_r not found in archiving list!\n",
-      "Attribute stat/sdp/1/fpga_beamlet_output_scale_rw not found in archiving list!\n",
-      "Attribute stat/sdp/1/fpga_firmware_version_r not found in archiving list!\n",
-      "Attribute stat/sdp/1/fpga_global_node_index_r not found in archiving list!\n",
-      "Attribute stat/sdp/1/fpga_hardware_version_r not found in archiving list!\n",
-      "Attribute stat/sdp/1/fpga_processing_enable_r not found in archiving list!\n",
-      "Attribute stat/sdp/1/fpga_processing_enable_rw not found in archiving list!\n",
-      "Attribute stat/sdp/1/fpga_scrap_r not found in archiving list!\n",
-      "Attribute stat/sdp/1/fpga_scrap_rw not found in archiving list!\n",
-      "Attribute stat/sdp/1/fpga_sdp_info_antenna_band_index_r not found in archiving list!\n",
-      "Attribute stat/sdp/1/fpga_sdp_info_block_period_r not found in archiving list!\n",
-      "Attribute stat/sdp/1/fpga_sdp_info_f_adc_r not found in archiving list!\n",
-      "Attribute stat/sdp/1/fpga_sdp_info_fsub_type_r not found in archiving list!\n",
-      "Attribute stat/sdp/1/fpga_sdp_info_nyquist_sampling_zone_index_r not found in archiving list!\n",
-      "Attribute stat/sdp/1/fpga_sdp_info_nyquist_sampling_zone_index_rw not found in archiving list!\n",
-      "Attribute stat/sdp/1/fpga_sdp_info_observation_id_r not found in archiving list!\n",
-      "Attribute stat/sdp/1/fpga_sdp_info_observation_id_rw not found in archiving list!\n",
-      "Attribute stat/sdp/1/fpga_sdp_info_station_id_r not found in archiving list!\n",
-      "Attribute stat/sdp/1/fpga_sdp_info_station_id_rw not found in archiving list!\n",
-      "Attribute stat/sdp/1/fpga_subband_weights_r not found in archiving list!\n",
-      "Attribute stat/sdp/1/fpga_subband_weights_rw not found in archiving list!\n",
-      "Attribute stat/sdp/1/fpga_temp_r removed!\n",
-      "Attribute stat/sdp/1/fpga_weights_r not found in archiving list!\n",
-      "Attribute stat/sdp/1/fpga_weights_rw not found in archiving list!\n",
-      "Attribute stat/sdp/1/fpga_wg_amplitude_r not found in archiving list!\n",
-      "Attribute stat/sdp/1/fpga_wg_enable_r not found in archiving list!\n",
-      "Attribute stat/sdp/1/fpga_wg_enable_rw not found in archiving list!\n",
-      "Attribute stat/sdp/1/fpga_wg_frequency_r not found in archiving list!\n",
-      "Attribute stat/sdp/1/fpga_wg_phase_r not found in archiving list!\n",
-      "Attribute stat/sdp/1/tr_fpga_mask_r not found in archiving list!\n",
-      "Attribute stat/sdp/1/tr_fpga_mask_rw not found in archiving list!\n",
-      "Attribute stat/sdp/1/tr_fpga_communication_error_r not found in archiving list!\n",
-      "Attribute stat/sdp/1/tr_sdp_config_first_fpga_nr_r not found in archiving list!\n",
-      "Attribute stat/sdp/1/tr_sdp_config_nof_beamsets_r not found in archiving list!\n",
-      "Attribute stat/sdp/1/tr_sdp_config_nof_fpgas_r not found in archiving list!\n",
-      "Attribute stat/sdp/1/tr_software_version_r not found in archiving list!\n",
-      "Attribute stat/sdp/1/tr_start_time_r not found in archiving list!\n",
-      "Attribute stat/sdp/1/tr_tod_r removed!\n",
-      "Attribute stat/sdp/1/tr_tod_pps_delta_r not found in archiving list!\n",
-      "Attribute stat/sdp/1/fpga_signal_input_mean_r not found in archiving list!\n",
-      "Attribute stat/sdp/1/fpga_signal_input_rms_r not found in archiving list!\n",
-      "Attribute stat/sdp/1/fpga_jesd204b_csr_rbd_count_r not found in archiving list!\n",
-      "Attribute stat/sdp/1/fpga_jesd204b_csr_dev_syncn_r not found in archiving list!\n",
-      "Attribute stat/sdp/1/fpga_jesd204b_rx_err0_r not found in archiving list!\n",
-      "Attribute stat/sdp/1/fpga_jesd204b_rx_err1_r not found in archiving list!\n",
-      "Attribute stat/sdp/1/fpga_bsn_monitor_input_bsn_r not found in archiving list!\n",
-      "Attribute stat/sdp/1/fpga_bsn_monitor_input_nof_packets_r not found in archiving list!\n",
-      "Attribute stat/sdp/1/fpga_bsn_monitor_input_nof_valid_r not found in archiving list!\n",
-      "Attribute stat/sdp/1/fpga_bsn_monitor_input_nof_err_r not found in archiving list!\n",
-      "Attribute stat/sdp/1/state not found in archiving list!\n",
-      "Attribute stat/sdp/1/status not found in archiving list!\n",
-      "Attribute stat/sdp/1/version_r will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/sdp/1/opcua_missing_attributes_r will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/sdp/1/fpga_wg_amplitude_rw will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/sdp/1/fpga_wg_frequency_rw will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/sdp/1/fpga_wg_phase_rw will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/sdp/1/fpga_beamlet_output_enable_r will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/sdp/1/fpga_beamlet_output_enable_rw will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/sdp/1/fpga_beamlet_output_hdr_eth_destination_mac_r will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/sdp/1/fpga_beamlet_output_hdr_eth_destination_mac_rw will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/sdp/1/fpga_beamlet_output_hdr_ip_destination_address_r will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/sdp/1/fpga_beamlet_output_hdr_ip_destination_address_rw will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/sdp/1/fpga_beamlet_output_hdr_udp_destination_port_r will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/sdp/1/fpga_beamlet_output_hdr_udp_destination_port_rw will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/sdp/1/fpga_beamlet_output_scale_r will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/sdp/1/fpga_beamlet_output_scale_rw will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/sdp/1/fpga_firmware_version_r will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/sdp/1/fpga_global_node_index_r will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/sdp/1/fpga_hardware_version_r will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/sdp/1/fpga_processing_enable_r will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/sdp/1/fpga_processing_enable_rw will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/sdp/1/fpga_sdp_info_antenna_band_index_r will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/sdp/1/fpga_sdp_info_block_period_r will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/sdp/1/fpga_sdp_info_f_adc_r will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/sdp/1/fpga_sdp_info_fsub_type_r will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/sdp/1/fpga_sdp_info_nyquist_sampling_zone_index_r will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/sdp/1/fpga_sdp_info_nyquist_sampling_zone_index_rw will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/sdp/1/fpga_sdp_info_observation_id_r will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/sdp/1/fpga_sdp_info_observation_id_rw will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/sdp/1/fpga_sdp_info_station_id_r will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/sdp/1/fpga_sdp_info_station_id_rw will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/sdp/1/fpga_subband_weights_r will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/sdp/1/fpga_subband_weights_rw will not be archived because polling is set to FALSE!\n"
-     ]
-    },
-    {
-     "name": "stderr",
-     "output_type": "stream",
-     "text": [
-      "Attribute stat/sdp/1/fpga_wg_amplitude_r will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/sdp/1/fpga_wg_enable_r will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/sdp/1/fpga_wg_enable_rw will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/sdp/1/fpga_wg_frequency_r will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/sdp/1/fpga_wg_phase_r will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/sdp/1/tr_fpga_mask_r will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/sdp/1/tr_fpga_mask_rw will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/sdp/1/tr_fpga_communication_error_r will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/sdp/1/tr_sdp_config_first_fpga_nr_r will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/sdp/1/tr_sdp_config_nof_beamsets_r will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/sdp/1/tr_sdp_config_nof_fpgas_r will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/sdp/1/tr_software_version_r will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/sdp/1/tr_start_time_r will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/sdp/1/tr_tod_pps_delta_r will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/sdp/1/fpga_signal_input_mean_r will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/sdp/1/fpga_signal_input_rms_r will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/sdp/1/fpga_jesd204b_csr_rbd_count_r will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/sdp/1/fpga_jesd204b_csr_dev_syncn_r will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/sdp/1/fpga_jesd204b_rx_err0_r will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/sdp/1/fpga_jesd204b_rx_err1_r will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/sdp/1/fpga_bsn_monitor_input_bsn_r will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/sdp/1/fpga_bsn_monitor_input_nof_packets_r will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/sdp/1/fpga_bsn_monitor_input_nof_valid_r will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/sdp/1/fpga_bsn_monitor_input_nof_err_r will not be archived because polling is set to FALSE!\n"
-     ]
-    }
-   ],
-   "source": [
-    "# Move SDP attributes from one EventSubscriber to another one\n",
-    "archiver.remove_attributes_by_device(sdp_name)\n",
-    "archiver.add_attributes_by_device(sdp_name,global_archive_period=5000,es_name=new_subscriber)"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": 29,
-   "id": "a554cff4",
-   "metadata": {},
-   "outputs": [],
-   "source": [
-    "d.off()\n",
-    "d2.off()"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": null,
-   "id": "100664ab",
-   "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
-}
diff --git a/jupyter-notebooks/HdbppReader_demonstrator.ipynb b/jupyter-notebooks/HdbppReader_demonstrator.ipynb
deleted file mode 100644
index ea1786979fa6083cc7660176f1ece3da2bba21ad..0000000000000000000000000000000000000000
--- a/jupyter-notebooks/HdbppReader_demonstrator.ipynb
+++ /dev/null
@@ -1,1172 +0,0 @@
-{
- "cells": [
-  {
-   "cell_type": "code",
-   "execution_count": 3,
-   "id": "d0328351",
-   "metadata": {},
-   "outputs": [],
-   "source": [
-    "import sys, time\n",
-    "sys.path.append('/hosthome/tango/tangostationcontrol/tangostationcontrol/toolkit/libhdbpp-python')\n",
-    "from hdbpp_reader.timescaledb import TimescaleDbReader"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": 4,
-   "id": "c2295969",
-   "metadata": {},
-   "outputs": [],
-   "source": [
-    "# Initialise a Reader object\n",
-    "reader = TimescaleDbReader({'database':'hdb', 'user':'postgres', 'password':'password', 'port':5432,'host':'archiver-timescale'})"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": 5,
-   "id": "24cd0dbc",
-   "metadata": {},
-   "outputs": [
-    {
-     "data": {
-      "text/plain": [
-       "{'user': 'postgres',\n",
-       " 'password': 'password',\n",
-       " 'host': 'archiver-timescale',\n",
-       " 'database': 'hdb',\n",
-       " 'port': 5432}"
-      ]
-     },
-     "execution_count": 5,
-     "metadata": {},
-     "output_type": "execute_result"
-    }
-   ],
-   "source": [
-    "reader.parse_config('postgres:password@archiver-timescale:5432/hdb')"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": 6,
-   "id": "2e01bf2a",
-   "metadata": {},
-   "outputs": [
-    {
-     "data": {
-      "text/plain": [
-       "<connection object at 0x7fcf8f18ee08; dsn: 'user=postgres password=xxx dbname=hdb host=archiver-timescale port=5432', closed: 0>"
-      ]
-     },
-     "execution_count": 6,
-     "metadata": {},
-     "output_type": "execute_result"
-    }
-   ],
-   "source": [
-    "# Check connection\n",
-    "reader.get_connection()"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": 7,
-   "id": "582e2c9e",
-   "metadata": {},
-   "outputs": [
-    {
-     "data": {
-      "text/plain": [
-       "['tango://databaseds:10000/stat/sdp/1/fpga_temp_r',\n",
-       " 'tango://databaseds:10000/stat/recv/1/version_r',\n",
-       " 'tango://databaseds:10000/stat/recv/1/opcua_missing_attributes_r',\n",
-       " 'tango://databaseds:10000/stat/recv/1/rcu_led_green_on_r',\n",
-       " 'tango://databaseds:10000/stat/recv/1/rcu_led_green_on_rw',\n",
-       " 'tango://databaseds:10000/stat/recv/1/rcu_led_red_on_r',\n",
-       " 'tango://databaseds:10000/stat/recv/1/rcu_led_red_on_rw',\n",
-       " 'tango://databaseds:10000/stat/recv/1/rcu_mask_rw',\n",
-       " 'tango://databaseds:10000/stat/recv/1/rcu_pcb_id_r',\n",
-       " 'tango://databaseds:10000/stat/recv/1/rcu_pcb_number_r',\n",
-       " 'tango://databaseds:10000/stat/recv/1/rcu_pcb_version_r',\n",
-       " 'tango://databaseds:10000/stat/recv/1/rcu_pwr_1v8_r',\n",
-       " 'tango://databaseds:10000/stat/recv/1/rcu_pwr_2v5_r',\n",
-       " 'tango://databaseds:10000/stat/recv/1/rcu_pwr_3v3_r',\n",
-       " 'tango://databaseds:10000/stat/recv/1/rcu_pwr_analog_on_r',\n",
-       " 'tango://databaseds:10000/stat/recv/1/rcu_pwr_digital_on_r',\n",
-       " 'tango://databaseds:10000/stat/recv/1/rcu_pwr_good_r',\n",
-       " 'tango://databaseds:10000/stat/recv/1/rcu_temp_r',\n",
-       " 'tango://databaseds:10000/stat/recv/1/recvtr_i2c_error_r',\n",
-       " 'tango://databaseds:10000/stat/recv/1/recvtr_monitor_rate_rw',\n",
-       " 'tango://databaseds:10000/stat/recv/1/recvtr_translator_busy_r',\n",
-       " 'tango://databaseds:10000/stat/recv/1/rcu_led_colour_r',\n",
-       " 'tango://databaseds:10000/stat/recv/1/rcu_error_r',\n",
-       " 'tango://databaseds:10000/stat/recv/1/recv_iout_error_r',\n",
-       " 'tango://databaseds:10000/stat/recv/1/recv_temp_error_r',\n",
-       " 'tango://databaseds:10000/stat/recv/1/recv_vout_error_r',\n",
-       " 'tango://databaseds:10000/stat/recv/1/state',\n",
-       " 'tango://databaseds:10000/stat/recv/1/status',\n",
-       " 'tango://databaseds:10000/stat/sdp/1/version_r',\n",
-       " 'tango://databaseds:10000/stat/sdp/1/opcua_missing_attributes_r',\n",
-       " 'tango://databaseds:10000/stat/sdp/1/fpga_beamlet_output_enable_r',\n",
-       " 'tango://databaseds:10000/stat/sdp/1/fpga_beamlet_output_enable_rw',\n",
-       " 'tango://databaseds:10000/stat/sdp/1/fpga_beamlet_output_hdr_eth_destination_mac_r',\n",
-       " 'tango://databaseds:10000/stat/sdp/1/fpga_beamlet_output_hdr_eth_destination_mac_rw',\n",
-       " 'tango://databaseds:10000/stat/sdp/1/fpga_beamlet_output_hdr_ip_destination_address_r',\n",
-       " 'tango://databaseds:10000/stat/sdp/1/fpga_beamlet_output_hdr_ip_destination_address_rw',\n",
-       " 'tango://databaseds:10000/stat/sdp/1/fpga_beamlet_output_hdr_udp_destination_port_r',\n",
-       " 'tango://databaseds:10000/stat/sdp/1/fpga_beamlet_output_hdr_udp_destination_port_rw',\n",
-       " 'tango://databaseds:10000/stat/sdp/1/fpga_beamlet_output_scale_r',\n",
-       " 'tango://databaseds:10000/stat/sdp/1/fpga_beamlet_output_scale_rw',\n",
-       " 'tango://databaseds:10000/stat/sdp/1/fpga_boot_image_r',\n",
-       " 'tango://databaseds:10000/stat/sdp/1/fpga_boot_image_rw',\n",
-       " 'tango://databaseds:10000/stat/sdp/1/fpga_global_node_index_r',\n",
-       " 'tango://databaseds:10000/stat/sdp/1/fpga_pps_present_r',\n",
-       " 'tango://databaseds:10000/stat/sdp/1/fpga_pps_capture_cnt_r',\n",
-       " 'tango://databaseds:10000/stat/sdp/1/fpga_pps_expected_cnt_r',\n",
-       " 'tango://databaseds:10000/stat/sdp/1/fpga_pps_expected_cnt_rw',\n",
-       " 'tango://databaseds:10000/stat/sdp/1/fpga_processing_enable_r',\n",
-       " 'tango://databaseds:10000/stat/sdp/1/fpga_processing_enable_rw',\n",
-       " 'tango://databaseds:10000/stat/sdp/1/fpga_scrap_r',\n",
-       " 'tango://databaseds:10000/stat/sdp/1/fpga_scrap_rw',\n",
-       " 'tango://databaseds:10000/stat/sdp/1/fpga_sdp_info_antenna_band_index_r',\n",
-       " 'tango://databaseds:10000/stat/sdp/1/fpga_sdp_info_block_period_r',\n",
-       " 'tango://databaseds:10000/stat/sdp/1/fpga_sdp_info_f_adc_r',\n",
-       " 'tango://databaseds:10000/stat/sdp/1/fpga_sdp_info_fsub_type_r',\n",
-       " 'tango://databaseds:10000/stat/sdp/1/fpga_sdp_info_nyquist_sampling_zone_index_r',\n",
-       " 'tango://databaseds:10000/stat/sdp/1/fpga_sdp_info_nyquist_sampling_zone_index_rw',\n",
-       " 'tango://databaseds:10000/stat/sdp/1/fpga_sdp_info_observation_id_r',\n",
-       " 'tango://databaseds:10000/stat/sdp/1/fpga_sdp_info_observation_id_rw',\n",
-       " 'tango://databaseds:10000/stat/sdp/1/fpga_sdp_info_station_id_r',\n",
-       " 'tango://databaseds:10000/stat/sdp/1/fpga_sdp_info_station_id_rw',\n",
-       " 'tango://databaseds:10000/stat/sdp/1/fpga_time_since_last_pps_r',\n",
-       " 'tango://databaseds:10000/stat/sdp/1/tr_fpga_mask_r',\n",
-       " 'tango://databaseds:10000/stat/sdp/1/tr_sdp_config_first_fpga_nr_r',\n",
-       " 'tango://databaseds:10000/stat/sdp/1/tr_sdp_config_nof_beamsets_r',\n",
-       " 'tango://databaseds:10000/stat/sdp/1/tr_sdp_config_nof_fpgas_r',\n",
-       " 'tango://databaseds:10000/stat/sdp/1/tr_start_time_r',\n",
-       " 'tango://databaseds:10000/stat/sdp/1/tr_tod_r',\n",
-       " 'tango://databaseds:10000/stat/sdp/1/tr_tod_pps_delta_r',\n",
-       " 'tango://databaseds:10000/stat/sdp/1/fpga_bsn_monitor_input_bsn_r',\n",
-       " 'tango://databaseds:10000/stat/sdp/1/fpga_bsn_monitor_input_nof_packets_r',\n",
-       " 'tango://databaseds:10000/stat/sdp/1/fpga_bsn_monitor_input_nof_valid_r',\n",
-       " 'tango://databaseds:10000/stat/sdp/1/fpga_bsn_monitor_input_nof_err_r',\n",
-       " 'tango://databaseds:10000/stat/sdp/1/fpga_error_r',\n",
-       " 'tango://databaseds:10000/stat/sdp/1/fpga_processing_error_r',\n",
-       " 'tango://databaseds:10000/stat/sdp/1/fpga_input_error_r',\n",
-       " 'tango://databaseds:10000/stat/sdp/1/state',\n",
-       " 'tango://databaseds:10000/stat/sdp/1/status',\n",
-       " 'tango://databaseds:10000/stat/sdp/1/fpga_firmware_version_r',\n",
-       " 'tango://databaseds:10000/stat/sdp/1/fpga_hardware_version_r',\n",
-       " 'tango://databaseds:10000/stat/sdp/1/tr_fpga_mask_rw',\n",
-       " 'tango://databaseds:10000/stat/sdp/1/tr_fpga_communication_error_r',\n",
-       " 'tango://databaseds:10000/stat/sdp/1/tr_software_version_r']"
-      ]
-     },
-     "execution_count": 7,
-     "metadata": {},
-     "output_type": "execute_result"
-    }
-   ],
-   "source": [
-    "# Get the list of all the archived attributes\n",
-    "reader.get_attributes()"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": 8,
-   "id": "9f985ceb",
-   "metadata": {},
-   "outputs": [
-    {
-     "data": {
-      "text/plain": [
-       "['tango://databaseds:10000/stat/recv/1/version_r',\n",
-       " 'tango://databaseds:10000/stat/recv/1/opcua_missing_attributes_r',\n",
-       " 'tango://databaseds:10000/stat/recv/1/rcu_led_green_on_r',\n",
-       " 'tango://databaseds:10000/stat/recv/1/rcu_led_green_on_rw',\n",
-       " 'tango://databaseds:10000/stat/recv/1/rcu_led_red_on_r',\n",
-       " 'tango://databaseds:10000/stat/recv/1/rcu_led_red_on_rw',\n",
-       " 'tango://databaseds:10000/stat/recv/1/rcu_mask_rw',\n",
-       " 'tango://databaseds:10000/stat/recv/1/rcu_pcb_id_r',\n",
-       " 'tango://databaseds:10000/stat/recv/1/rcu_pcb_number_r',\n",
-       " 'tango://databaseds:10000/stat/recv/1/rcu_pcb_version_r',\n",
-       " 'tango://databaseds:10000/stat/recv/1/rcu_pwr_1v8_r',\n",
-       " 'tango://databaseds:10000/stat/recv/1/rcu_pwr_2v5_r',\n",
-       " 'tango://databaseds:10000/stat/recv/1/rcu_pwr_3v3_r',\n",
-       " 'tango://databaseds:10000/stat/recv/1/rcu_pwr_analog_on_r',\n",
-       " 'tango://databaseds:10000/stat/recv/1/rcu_pwr_digital_on_r',\n",
-       " 'tango://databaseds:10000/stat/recv/1/rcu_pwr_good_r',\n",
-       " 'tango://databaseds:10000/stat/recv/1/rcu_temp_r',\n",
-       " 'tango://databaseds:10000/stat/recv/1/recvtr_i2c_error_r',\n",
-       " 'tango://databaseds:10000/stat/recv/1/recvtr_monitor_rate_rw',\n",
-       " 'tango://databaseds:10000/stat/recv/1/recvtr_translator_busy_r',\n",
-       " 'tango://databaseds:10000/stat/recv/1/rcu_led_colour_r',\n",
-       " 'tango://databaseds:10000/stat/recv/1/rcu_error_r',\n",
-       " 'tango://databaseds:10000/stat/recv/1/recv_iout_error_r',\n",
-       " 'tango://databaseds:10000/stat/recv/1/recv_temp_error_r',\n",
-       " 'tango://databaseds:10000/stat/recv/1/recv_vout_error_r',\n",
-       " 'tango://databaseds:10000/stat/recv/1/state',\n",
-       " 'tango://databaseds:10000/stat/recv/1/status']"
-      ]
-     },
-     "execution_count": 8,
-     "metadata": {},
-     "output_type": "execute_result"
-    }
-   ],
-   "source": [
-    "# Given a name pattern, return a list of archived attributes\n",
-    "device_name = 'STAT/RECV/1'\n",
-    "reader.get_attributes(pattern=f'*{device_name}*'.lower())"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": 9,
-   "id": "5517c508",
-   "metadata": {},
-   "outputs": [
-    {
-     "data": {
-      "text/plain": [
-       "1"
-      ]
-     },
-     "execution_count": 9,
-     "metadata": {},
-     "output_type": "execute_result"
-    }
-   ],
-   "source": [
-    "# Check if an attribute is archived\n",
-    "attr_name = 'rcu_mask_rw'\n",
-    "reader.is_attribute_archived(f'{device_name}/{attr_name}'.lower())"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": 10,
-   "id": "740064f3",
-   "metadata": {},
-   "outputs": [
-    {
-     "data": {
-      "text/plain": [
-       "{}"
-      ]
-     },
-     "execution_count": 10,
-     "metadata": {},
-     "output_type": "execute_result"
-    }
-   ],
-   "source": [
-    "# Return the list of the last n value for a given attribute(s)\n",
-    "# ! Cannot figure out why it does not work ... on the other hand, the relative code \n",
-    "# in the next cell works!\n",
-    "a = 'tango://databaseds:10000/stat/sdp/1/fpga_temp_r'\n",
-    "columns = [\"value_r\", \"value_w\", \"quality\", \"att_error_desc_id\"]\n",
-    "reader.get_last_attributes_values(attributes=a,columns=columns,n=3)"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": 11,
-   "id": "d48fe536",
-   "metadata": {},
-   "outputs": [
-    {
-     "data": {
-      "text/plain": [
-       "[(datetime.datetime(2022, 3, 9, 12, 0, 27, 686930, tzinfo=datetime.timezone.utc),\n",
-       "  None,\n",
-       "  None,\n",
-       "  1,\n",
-       "  1),\n",
-       " (datetime.datetime(2022, 3, 8, 15, 38, 34, 497576, tzinfo=datetime.timezone.utc),\n",
-       "  None,\n",
-       "  None,\n",
-       "  1,\n",
-       "  2),\n",
-       " (datetime.datetime(2022, 3, 8, 15, 38, 23, 838368, tzinfo=datetime.timezone.utc),\n",
-       "  None,\n",
-       "  None,\n",
-       "  1,\n",
-       "  2)]"
-      ]
-     },
-     "execution_count": 11,
-     "metadata": {},
-     "output_type": "execute_result"
-    }
-   ],
-   "source": [
-    "reader._cursor.execute(\"SELECT att_conf_id, table_name, att_name FROM att_conf WHERE att_name LIKE %s;\", ('%'+a+'%',))\n",
-    "att_id = reader._cursor.fetchall()\n",
-    "\n",
-    "reader._cursor.execute(f\"SELECT data_time, value_r, value_w, quality, att_error_desc_id FROM {att_id[0][1]} WHERE att_conf_id={att_id[0][0]} ORDER BY data_time DESC LIMIT 3\")\n",
-    "reader._cursor.fetchall()"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": 12,
-   "id": "fcab2a21",
-   "metadata": {},
-   "outputs": [
-    {
-     "data": {
-      "text/plain": [
-       "[(datetime.datetime(2022, 3, 9, 12, 0, 27, 686930, tzinfo=datetime.timezone.utc),\n",
-       "  None,\n",
-       "  None,\n",
-       "  1,\n",
-       "  1),\n",
-       " (datetime.datetime(2022, 3, 8, 15, 38, 34, 497576, tzinfo=datetime.timezone.utc),\n",
-       "  None,\n",
-       "  None,\n",
-       "  1,\n",
-       "  2),\n",
-       " (datetime.datetime(2022, 3, 8, 15, 38, 23, 838368, tzinfo=datetime.timezone.utc),\n",
-       "  None,\n",
-       "  None,\n",
-       "  1,\n",
-       "  2),\n",
-       " (datetime.datetime(2022, 3, 8, 15, 38, 23, 401983, tzinfo=datetime.timezone.utc),\n",
-       "  [0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0],\n",
-       "  None,\n",
-       "  0,\n",
-       "  None),\n",
-       " (datetime.datetime(2022, 3, 8, 15, 38, 12, 908590, tzinfo=datetime.timezone.utc),\n",
-       "  None,\n",
-       "  None,\n",
-       "  1,\n",
-       "  2),\n",
-       " (datetime.datetime(2022, 3, 8, 15, 38, 12, 398194, tzinfo=datetime.timezone.utc),\n",
-       "  [0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0],\n",
-       "  None,\n",
-       "  0,\n",
-       "  None),\n",
-       " (datetime.datetime(2022, 3, 8, 15, 38, 1, 974671, tzinfo=datetime.timezone.utc),\n",
-       "  None,\n",
-       "  None,\n",
-       "  1,\n",
-       "  2),\n",
-       " (datetime.datetime(2022, 3, 8, 15, 38, 1, 400801, tzinfo=datetime.timezone.utc),\n",
-       "  [0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0],\n",
-       "  None,\n",
-       "  0,\n",
-       "  None),\n",
-       " (datetime.datetime(2022, 3, 8, 15, 37, 51, 57525, tzinfo=datetime.timezone.utc),\n",
-       "  None,\n",
-       "  None,\n",
-       "  1,\n",
-       "  2),\n",
-       " (datetime.datetime(2022, 3, 8, 15, 37, 50, 398277, tzinfo=datetime.timezone.utc),\n",
-       "  [0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0],\n",
-       "  None,\n",
-       "  0,\n",
-       "  None),\n",
-       " (datetime.datetime(2022, 3, 8, 15, 37, 40, 124000, tzinfo=datetime.timezone.utc),\n",
-       "  None,\n",
-       "  None,\n",
-       "  1,\n",
-       "  2),\n",
-       " (datetime.datetime(2022, 3, 8, 15, 37, 39, 402424, tzinfo=datetime.timezone.utc),\n",
-       "  [0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0],\n",
-       "  None,\n",
-       "  0,\n",
-       "  None),\n",
-       " (datetime.datetime(2022, 3, 8, 15, 37, 29, 194141, tzinfo=datetime.timezone.utc),\n",
-       "  None,\n",
-       "  None,\n",
-       "  1,\n",
-       "  2),\n",
-       " (datetime.datetime(2022, 3, 8, 15, 37, 28, 403995, tzinfo=datetime.timezone.utc),\n",
-       "  [0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0],\n",
-       "  None,\n",
-       "  0,\n",
-       "  None),\n",
-       " (datetime.datetime(2022, 3, 8, 15, 37, 18, 325812, tzinfo=datetime.timezone.utc),\n",
-       "  None,\n",
-       "  None,\n",
-       "  1,\n",
-       "  2),\n",
-       " (datetime.datetime(2022, 3, 8, 15, 37, 17, 414731, tzinfo=datetime.timezone.utc),\n",
-       "  [0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0],\n",
-       "  None,\n",
-       "  0,\n",
-       "  None),\n",
-       " (datetime.datetime(2022, 3, 8, 15, 37, 7, 423699, tzinfo=datetime.timezone.utc),\n",
-       "  None,\n",
-       "  None,\n",
-       "  1,\n",
-       "  2),\n",
-       " (datetime.datetime(2022, 3, 8, 15, 37, 6, 406963, tzinfo=datetime.timezone.utc),\n",
-       "  [0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0],\n",
-       "  None,\n",
-       "  0,\n",
-       "  None),\n",
-       " (datetime.datetime(2022, 3, 8, 15, 36, 56, 399116, tzinfo=datetime.timezone.utc),\n",
-       "  None,\n",
-       "  None,\n",
-       "  1,\n",
-       "  2),\n",
-       " (datetime.datetime(2022, 3, 8, 15, 36, 55, 406792, tzinfo=datetime.timezone.utc),\n",
-       "  [0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0],\n",
-       "  None,\n",
-       "  0,\n",
-       "  None),\n",
-       " (datetime.datetime(2022, 3, 8, 15, 36, 45, 491806, tzinfo=datetime.timezone.utc),\n",
-       "  None,\n",
-       "  None,\n",
-       "  1,\n",
-       "  2),\n",
-       " (datetime.datetime(2022, 3, 8, 15, 36, 44, 401894, tzinfo=datetime.timezone.utc),\n",
-       "  [0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0],\n",
-       "  None,\n",
-       "  0,\n",
-       "  None),\n",
-       " (datetime.datetime(2022, 3, 8, 15, 36, 34, 594970, tzinfo=datetime.timezone.utc),\n",
-       "  None,\n",
-       "  None,\n",
-       "  1,\n",
-       "  2),\n",
-       " (datetime.datetime(2022, 3, 8, 15, 36, 33, 385793, tzinfo=datetime.timezone.utc),\n",
-       "  [0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0],\n",
-       "  None,\n",
-       "  0,\n",
-       "  None),\n",
-       " (datetime.datetime(2022, 3, 8, 15, 36, 23, 718610, tzinfo=datetime.timezone.utc),\n",
-       "  None,\n",
-       "  None,\n",
-       "  1,\n",
-       "  2),\n",
-       " (datetime.datetime(2022, 3, 8, 15, 36, 23, 402214, tzinfo=datetime.timezone.utc),\n",
-       "  [0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0],\n",
-       "  None,\n",
-       "  0,\n",
-       "  None),\n",
-       " (datetime.datetime(2022, 3, 8, 15, 36, 12, 785296, tzinfo=datetime.timezone.utc),\n",
-       "  None,\n",
-       "  None,\n",
-       "  1,\n",
-       "  2),\n",
-       " (datetime.datetime(2022, 3, 8, 15, 36, 12, 392858, tzinfo=datetime.timezone.utc),\n",
-       "  [0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0],\n",
-       "  None,\n",
-       "  0,\n",
-       "  None),\n",
-       " (datetime.datetime(2022, 3, 8, 15, 36, 1, 840443, tzinfo=datetime.timezone.utc),\n",
-       "  None,\n",
-       "  None,\n",
-       "  1,\n",
-       "  2),\n",
-       " (datetime.datetime(2022, 3, 8, 15, 36, 1, 404531, tzinfo=datetime.timezone.utc),\n",
-       "  [0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0],\n",
-       "  None,\n",
-       "  0,\n",
-       "  None),\n",
-       " (datetime.datetime(2022, 3, 8, 15, 35, 50, 913943, tzinfo=datetime.timezone.utc),\n",
-       "  None,\n",
-       "  None,\n",
-       "  1,\n",
-       "  2),\n",
-       " (datetime.datetime(2022, 3, 8, 15, 35, 50, 401988, tzinfo=datetime.timezone.utc),\n",
-       "  [0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0],\n",
-       "  None,\n",
-       "  0,\n",
-       "  None),\n",
-       " (datetime.datetime(2022, 3, 8, 15, 35, 39, 984898, tzinfo=datetime.timezone.utc),\n",
-       "  None,\n",
-       "  None,\n",
-       "  1,\n",
-       "  2),\n",
-       " (datetime.datetime(2022, 3, 8, 15, 35, 39, 393043, tzinfo=datetime.timezone.utc),\n",
-       "  [0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0],\n",
-       "  None,\n",
-       "  0,\n",
-       "  None),\n",
-       " (datetime.datetime(2022, 3, 8, 15, 35, 29, 69789, tzinfo=datetime.timezone.utc),\n",
-       "  None,\n",
-       "  None,\n",
-       "  1,\n",
-       "  2),\n",
-       " (datetime.datetime(2022, 3, 8, 15, 35, 28, 409644, tzinfo=datetime.timezone.utc),\n",
-       "  [0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0],\n",
-       "  None,\n",
-       "  0,\n",
-       "  None),\n",
-       " (datetime.datetime(2022, 3, 8, 15, 35, 18, 114191, tzinfo=datetime.timezone.utc),\n",
-       "  None,\n",
-       "  None,\n",
-       "  1,\n",
-       "  2),\n",
-       " (datetime.datetime(2022, 3, 8, 15, 35, 17, 388089, tzinfo=datetime.timezone.utc),\n",
-       "  [0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0],\n",
-       "  None,\n",
-       "  0,\n",
-       "  None),\n",
-       " (datetime.datetime(2022, 3, 8, 15, 35, 7, 192311, tzinfo=datetime.timezone.utc),\n",
-       "  None,\n",
-       "  None,\n",
-       "  1,\n",
-       "  2),\n",
-       " (datetime.datetime(2022, 3, 8, 15, 35, 6, 400084, tzinfo=datetime.timezone.utc),\n",
-       "  [0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0],\n",
-       "  None,\n",
-       "  0,\n",
-       "  None),\n",
-       " (datetime.datetime(2022, 3, 8, 15, 34, 56, 295447, tzinfo=datetime.timezone.utc),\n",
-       "  None,\n",
-       "  None,\n",
-       "  1,\n",
-       "  2),\n",
-       " (datetime.datetime(2022, 3, 8, 15, 34, 55, 390150, tzinfo=datetime.timezone.utc),\n",
-       "  [0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0],\n",
-       "  None,\n",
-       "  0,\n",
-       "  None),\n",
-       " (datetime.datetime(2022, 3, 8, 15, 34, 45, 458677, tzinfo=datetime.timezone.utc),\n",
-       "  None,\n",
-       "  None,\n",
-       "  1,\n",
-       "  2),\n",
-       " (datetime.datetime(2022, 3, 8, 15, 34, 44, 386107, tzinfo=datetime.timezone.utc),\n",
-       "  [0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0],\n",
-       "  None,\n",
-       "  0,\n",
-       "  None),\n",
-       " (datetime.datetime(2022, 3, 8, 15, 34, 34, 598981, tzinfo=datetime.timezone.utc),\n",
-       "  None,\n",
-       "  None,\n",
-       "  1,\n",
-       "  2),\n",
-       " (datetime.datetime(2022, 3, 8, 15, 34, 33, 384623, tzinfo=datetime.timezone.utc),\n",
-       "  [0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0],\n",
-       "  None,\n",
-       "  0,\n",
-       "  None),\n",
-       " (datetime.datetime(2022, 3, 8, 15, 34, 23, 717252, tzinfo=datetime.timezone.utc),\n",
-       "  None,\n",
-       "  None,\n",
-       "  1,\n",
-       "  2),\n",
-       " (datetime.datetime(2022, 3, 8, 15, 34, 22, 394157, tzinfo=datetime.timezone.utc),\n",
-       "  [0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0],\n",
-       "  None,\n",
-       "  0,\n",
-       "  None),\n",
-       " (datetime.datetime(2022, 3, 8, 15, 34, 12, 660277, tzinfo=datetime.timezone.utc),\n",
-       "  None,\n",
-       "  None,\n",
-       "  1,\n",
-       "  2),\n",
-       " (datetime.datetime(2022, 3, 8, 15, 34, 11, 390295, tzinfo=datetime.timezone.utc),\n",
-       "  [0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0],\n",
-       "  None,\n",
-       "  0,\n",
-       "  None),\n",
-       " (datetime.datetime(2022, 3, 8, 15, 34, 1, 641750, tzinfo=datetime.timezone.utc),\n",
-       "  None,\n",
-       "  None,\n",
-       "  1,\n",
-       "  2),\n",
-       " (datetime.datetime(2022, 3, 8, 15, 34, 0, 385438, tzinfo=datetime.timezone.utc),\n",
-       "  [0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0],\n",
-       "  None,\n",
-       "  0,\n",
-       "  None),\n",
-       " (datetime.datetime(2022, 3, 8, 15, 33, 50, 633679, tzinfo=datetime.timezone.utc),\n",
-       "  None,\n",
-       "  None,\n",
-       "  1,\n",
-       "  2),\n",
-       " (datetime.datetime(2022, 3, 8, 15, 33, 49, 396047, tzinfo=datetime.timezone.utc),\n",
-       "  [0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0],\n",
-       "  None,\n",
-       "  0,\n",
-       "  None),\n",
-       " (datetime.datetime(2022, 3, 8, 15, 33, 39, 494091, tzinfo=datetime.timezone.utc),\n",
-       "  None,\n",
-       "  None,\n",
-       "  1,\n",
-       "  2),\n",
-       " (datetime.datetime(2022, 3, 8, 15, 33, 38, 392001, tzinfo=datetime.timezone.utc),\n",
-       "  [0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0],\n",
-       "  None,\n",
-       "  0,\n",
-       "  None),\n",
-       " (datetime.datetime(2022, 3, 8, 15, 33, 27, 532083, tzinfo=datetime.timezone.utc),\n",
-       "  [0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0],\n",
-       "  None,\n",
-       "  0,\n",
-       "  None),\n",
-       " (datetime.datetime(2022, 3, 8, 15, 33, 7, 927971, tzinfo=datetime.timezone.utc),\n",
-       "  None,\n",
-       "  None,\n",
-       "  1,\n",
-       "  1),\n",
-       " (datetime.datetime(2022, 3, 8, 15, 31, 15, 82880, tzinfo=datetime.timezone.utc),\n",
-       "  None,\n",
-       "  None,\n",
-       "  1,\n",
-       "  2),\n",
-       " (datetime.datetime(2022, 3, 8, 15, 31, 4, 961433, tzinfo=datetime.timezone.utc),\n",
-       "  None,\n",
-       "  None,\n",
-       "  1,\n",
-       "  2),\n",
-       " (datetime.datetime(2022, 3, 8, 15, 31, 4, 405487, tzinfo=datetime.timezone.utc),\n",
-       "  [0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0],\n",
-       "  None,\n",
-       "  0,\n",
-       "  None),\n",
-       " (datetime.datetime(2022, 3, 8, 15, 30, 54, 841743, tzinfo=datetime.timezone.utc),\n",
-       "  None,\n",
-       "  None,\n",
-       "  1,\n",
-       "  2),\n",
-       " (datetime.datetime(2022, 3, 8, 15, 30, 54, 402356, tzinfo=datetime.timezone.utc),\n",
-       "  [0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0],\n",
-       "  None,\n",
-       "  0,\n",
-       "  None),\n",
-       " (datetime.datetime(2022, 3, 8, 15, 30, 44, 727440, tzinfo=datetime.timezone.utc),\n",
-       "  None,\n",
-       "  None,\n",
-       "  1,\n",
-       "  2),\n",
-       " (datetime.datetime(2022, 3, 8, 15, 30, 44, 400452, tzinfo=datetime.timezone.utc),\n",
-       "  [0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0],\n",
-       "  None,\n",
-       "  0,\n",
-       "  None),\n",
-       " (datetime.datetime(2022, 3, 8, 15, 30, 33, 414200, tzinfo=datetime.timezone.utc),\n",
-       "  [0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0,\n",
-       "   0.0],\n",
-       "  None,\n",
-       "  0,\n",
-       "  None),\n",
-       " (datetime.datetime(2022, 3, 8, 15, 30, 15, 378183, tzinfo=datetime.timezone.utc),\n",
-       "  None,\n",
-       "  None,\n",
-       "  1,\n",
-       "  1)]"
-      ]
-     },
-     "execution_count": 12,
-     "metadata": {},
-     "output_type": "execute_result"
-    }
-   ],
-   "source": [
-    "# Get the last attribute values given a start date and optionally a stop date\n",
-    "reader.get_attribute_values(a, start_date='2022-03-08 00:00:00')"
-   ]
-  }
- ],
- "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
-}
diff --git a/jupyter-notebooks/RECV_archive_all_attributes.ipynb b/jupyter-notebooks/RECV_archive_all_attributes.ipynb
deleted file mode 100644
index 9e3e2192d4931ad5894707d6286240626e56f09a..0000000000000000000000000000000000000000
--- a/jupyter-notebooks/RECV_archive_all_attributes.ipynb
+++ /dev/null
@@ -1,502 +0,0 @@
-{
- "cells": [
-  {
-   "cell_type": "code",
-   "execution_count": 5,
-   "id": "b14a15ae",
-   "metadata": {},
-   "outputs": [],
-   "source": [
-    "import sys, time\n",
-    "import numpy as np\n",
-    "sys.path.append('/hosthome/tango/tangostationcontrol/tangostationcontrol')\n",
-    "from toolkit.archiver import *\n",
-    "from matplotlib import pyplot as plt"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": 7,
-   "id": "1514b0cd",
-   "metadata": {},
-   "outputs": [
-    {
-     "name": "stderr",
-     "output_type": "stream",
-     "text": [
-      "Attribute stat/recv/1/version_r not found in archiving list!\n",
-      "Attribute stat/recv/1/opcua_missing_attributes_r not found in archiving list!\n",
-      "Attribute stat/recv/1/ant_status_r not found in archiving list!\n",
-      "Attribute stat/recv/1/rcu_led_colour_r not found in archiving list!\n",
-      "Attribute stat/recv/1/ant_mask_rw not found in archiving list!\n",
-      "Attribute stat/recv/1/hbat_bf_delays_r not found in archiving list!\n",
-      "Attribute stat/recv/1/hbat_bf_delays_rw not found in archiving list!\n",
-      "Attribute stat/recv/1/hbat_led_on_r not found in archiving list!\n",
-      "Attribute stat/recv/1/hbat_led_on_rw not found in archiving list!\n",
-      "Attribute stat/recv/1/hbat_pwr_lna_on_r not found in archiving list!\n",
-      "Attribute stat/recv/1/hbat_pwr_lna_on_rw not found in archiving list!\n",
-      "Attribute stat/recv/1/hbat_pwr_on_r not found in archiving list!\n",
-      "Attribute stat/recv/1/hbat_pwr_on_rw not found in archiving list!\n",
-      "Attribute stat/recv/1/rcu_adc_locked_r not found in archiving list!\n",
-      "Attribute stat/recv/1/rcu_attenuator_db_r not found in archiving list!\n",
-      "Attribute stat/recv/1/rcu_attenuator_db_rw not found in archiving list!\n",
-      "Attribute stat/recv/1/rcu_band_select_r not found in archiving list!\n",
-      "Attribute stat/recv/1/rcu_band_select_rw not found in archiving list!\n",
-      "Attribute stat/recv/1/rcu_dth_freq_r not found in archiving list!\n",
-      "Attribute stat/recv/1/rcu_dth_freq_rw not found in archiving list!\n",
-      "Attribute stat/recv/1/rcu_dth_on_r not found in archiving list!\n",
-      "Attribute stat/recv/1/rcu_led_green_on_r not found in archiving list!\n",
-      "Attribute stat/recv/1/rcu_led_green_on_rw not found in archiving list!\n",
-      "Attribute stat/recv/1/rcu_led_red_on_r not found in archiving list!\n",
-      "Attribute stat/recv/1/rcu_led_red_on_rw not found in archiving list!\n",
-      "Attribute stat/recv/1/rcu_mask_rw not found in archiving list!\n",
-      "Attribute stat/recv/1/rcu_pcb_id_r not found in archiving list!\n",
-      "Attribute stat/recv/1/rcu_pcb_number_r not found in archiving list!\n",
-      "Attribute stat/recv/1/rcu_pcb_version_r not found in archiving list!\n",
-      "Attribute stat/recv/1/rcu_pwr_1v8_r not found in archiving list!\n",
-      "Attribute stat/recv/1/rcu_pwr_2v5_r not found in archiving list!\n",
-      "Attribute stat/recv/1/rcu_pwr_3v3_r not found in archiving list!\n",
-      "Attribute stat/recv/1/rcu_pwr_analog_on_r not found in archiving list!\n",
-      "Attribute stat/recv/1/rcu_pwr_ant_iout_r not found in archiving list!\n",
-      "Attribute stat/recv/1/rcu_pwr_ant_on_r not found in archiving list!\n",
-      "Attribute stat/recv/1/rcu_pwr_ant_on_rw not found in archiving list!\n",
-      "Attribute stat/recv/1/rcu_pwr_ant_vin_r not found in archiving list!\n",
-      "Attribute stat/recv/1/rcu_pwr_ant_vout_r not found in archiving list!\n",
-      "Attribute stat/recv/1/rcu_pwr_digital_on_r not found in archiving list!\n",
-      "Attribute stat/recv/1/rcu_pwr_good_r not found in archiving list!\n",
-      "Attribute stat/recv/1/rcu_temp_r not found in archiving list!\n",
-      "Attribute stat/recv/1/recvtr_i2c_error_r not found in archiving list!\n",
-      "Attribute stat/recv/1/recvtr_monitor_rate_rw not found in archiving list!\n",
-      "Attribute stat/recv/1/recvtr_translator_busy_r not found in archiving list!\n",
-      "Attribute stat/recv/1/state not found in archiving list!\n",
-      "Attribute stat/recv/1/status not found in archiving list!\n",
-      "Device STAT/SDP/1 offline\n",
-      "Device STAT/SST/1 offline\n",
-      "Device STAT/XST/1 offline\n",
-      "Device STAT/UNB2/1 offline\n"
-     ]
-    }
-   ],
-   "source": [
-    "# Apply the chosen JSON configuration file in directory toolkit/archiver_config/\n",
-    "# RECV is set on PRODUCTION mode to test the archiving of all its attributes\n",
-    "archiver = Archiver(selector_filename='lofar2.json')"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": 9,
-   "id": "03dafaed",
-   "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': {'STAT/RECV/1': {'environment': 'development',\n",
-       "   'include': [],\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",
-       "  'STAT/SDP/1': {'environment': 'development',\n",
-       "   'include': [],\n",
-       "   'exclude': ['FPGA_scrap_R', 'FPGA_scrap_RW']},\n",
-       "  'STAT/SST/1': {'environment': 'development', 'include': [], 'exclude': []},\n",
-       "  'STAT/XST/1': {'environment': 'development', 'include': [], 'exclude': []},\n",
-       "  'STAT/UNB2/1': {'environment': 'development', 'include': [], 'exclude': []}}}"
-      ]
-     },
-     "execution_count": 9,
-     "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": 10,
-   "id": "8720f9e7",
-   "metadata": {},
-   "outputs": [
-    {
-     "name": "stdout",
-     "output_type": "stream",
-     "text": [
-      "OFF\n"
-     ]
-    }
-   ],
-   "source": [
-    "device_name = 'STAT/RECV/1'\n",
-    "d=DeviceProxy(device_name) \n",
-    "state = str(d.state())\n",
-    "print(state)"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": 11,
-   "id": "6a9c4f4c",
-   "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.set_defaults()\n",
-    "    d.on()\n",
-    "state = str(d.state())\n",
-    "if state == \"ON\":\n",
-    "    print(\"Device is now in ON state\")"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": 13,
-   "id": "f85bd73f",
-   "metadata": {},
-   "outputs": [
-    {
-     "name": "stderr",
-     "output_type": "stream",
-     "text": [
-      "Attribute stat/recv/1/version_r will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/recv/1/opcua_missing_attributes_r will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/recv/1/ant_status_r will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/recv/1/rcu_led_colour_r will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/recv/1/hbat_bf_delays_r will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/recv/1/hbat_bf_delays_rw will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/recv/1/hbat_led_on_r will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/recv/1/hbat_led_on_rw will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/recv/1/hbat_pwr_lna_on_r will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/recv/1/hbat_pwr_lna_on_rw will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/recv/1/hbat_pwr_on_r will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/recv/1/hbat_pwr_on_rw will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/recv/1/rcu_adc_locked_r will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/recv/1/rcu_attenuator_db_r will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/recv/1/rcu_attenuator_db_rw will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/recv/1/rcu_band_select_r will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/recv/1/rcu_band_select_rw will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/recv/1/rcu_dth_freq_r will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/recv/1/rcu_dth_freq_rw will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/recv/1/rcu_dth_on_r will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/recv/1/rcu_led_green_on_r will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/recv/1/rcu_led_green_on_rw will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/recv/1/rcu_led_red_on_r will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/recv/1/rcu_led_red_on_rw will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/recv/1/rcu_pcb_id_r will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/recv/1/rcu_pcb_number_r will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/recv/1/rcu_pcb_version_r will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/recv/1/rcu_pwr_1v8_r will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/recv/1/rcu_pwr_2v5_r will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/recv/1/rcu_pwr_3v3_r will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/recv/1/rcu_pwr_analog_on_r will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/recv/1/rcu_pwr_ant_iout_r will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/recv/1/rcu_pwr_ant_on_r will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/recv/1/rcu_pwr_ant_on_rw will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/recv/1/rcu_pwr_ant_vin_r will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/recv/1/rcu_pwr_ant_vout_r will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/recv/1/rcu_pwr_digital_on_r will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/recv/1/rcu_pwr_good_r will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/recv/1/rcu_temp_r will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/recv/1/recvtr_i2c_error_r will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/recv/1/recvtr_monitor_rate_rw will not be archived because polling is set to FALSE!\n",
-      "Attribute stat/recv/1/recvtr_translator_busy_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": 14,
-   "id": "1a872f87",
-   "metadata": {},
-   "outputs": [
-    {
-     "data": {
-      "text/plain": [
-       "['tango://databaseds:10000/stat/recv/1/ant_mask_rw',\n",
-       " 'tango://databaseds:10000/stat/recv/1/rcu_mask_rw',\n",
-       " 'tango://databaseds:10000/stat/recv/1/state',\n",
-       " 'tango://databaseds:10000/stat/recv/1/status']"
-      ]
-     },
-     "execution_count": 14,
-     "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": 15,
-   "id": "ca5e58fa",
-   "metadata": {},
-   "outputs": [
-    {
-     "data": {
-      "text/plain": [
-       "{'tango://databaseds:10000/stat/recv/1/status': 'Storing Error: mysql_stmt_bind_param() failed, err=Buffer type is not supported'}"
-      ]
-     },
-     "execution_count": 15,
-     "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": 16,
-   "id": "c96f1a8d",
-   "metadata": {},
-   "outputs": [
-    {
-     "name": "stdout",
-     "output_type": "stream",
-     "text": [
-      "Attribute                                     Poll Period     Archive Period \n",
-      "----------\n",
-      "STAT/RECV/1/ant_mask_rw                       1000            5000           \n",
-      "STAT/RECV/1/rcu_mask_rw                       1000            5000           \n",
-      "STAT/RECV/1/state                             1000            5000           \n",
-      "STAT/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": 17,
-   "id": "b12e8887",
-   "metadata": {},
-   "outputs": [],
-   "source": [
-    "# Turn off the device\n",
-    "d.off()"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": 20,
-   "id": "a906823c",
-   "metadata": {},
-   "outputs": [
-    {
-     "data": {
-      "text/plain": [
-       "[<Attribute(fullname='tango://databaseds:10000/stat/recv/1/ant_mask_rw',data_type ='4',ttl='0',facility ='tango://databaseds:10000',domain ='stat',family ='recv',member ='1',name ='ant_mask_rw')>,\n",
-       " <Attribute(fullname='tango://databaseds:10000/stat/recv/1/rcu_mask_rw',data_type ='4',ttl='0',facility ='tango://databaseds:10000',domain ='stat',family ='recv',member ='1',name ='rcu_mask_rw')>,\n",
-       " <Attribute(fullname='tango://databaseds:10000/stat/recv/1/state',data_type ='45',ttl='0',facility ='tango://databaseds:10000',domain ='stat',family ='recv',member ='1',name ='state')>,\n",
-       " <Attribute(fullname='tango://databaseds:10000/stat/recv/1/status',data_type ='41',ttl='0',facility ='tango://databaseds:10000',domain ='stat',family ='recv',member ='1',name ='status')>]"
-      ]
-     },
-     "execution_count": 20,
-     "metadata": {},
-     "output_type": "execute_result"
-    }
-   ],
-   "source": [
-    "# Initialise the retriever object and print the archived attributes in the database\n",
-    "retriever = Retriever()\n",
-    "retriever.get_all_archived_attributes()"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": 18,
-   "id": "770d6dbc",
-   "metadata": {},
-   "outputs": [
-    {
-     "data": {
-      "text/plain": [
-       "'stat/recv/1/rcu_mask_rw'"
-      ]
-     },
-     "execution_count": 18,
-     "metadata": {},
-     "output_type": "execute_result"
-    }
-   ],
-   "source": [
-    "# Attribute chosen to be retrieved\n",
-    "attr_name = 'rcu_mask_rw'\n",
-    "attr_fq_name = str(device_name+'/'+attr_name).lower()\n",
-    "attr_fq_name"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": 21,
-   "id": "3734554e",
-   "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": 22,
-   "id": "edb9f117",
-   "metadata": {},
-   "outputs": [],
-   "source": [
-    "# Extract and process timestamps for plotting purposes\n",
-    "def get_timestamps(data,strformat):\n",
-    "    timestamps = []\n",
-    "    for i in range(len(data)):\n",
-    "        timestamps.append(data[i][0].recv_time.strftime(strformat))\n",
-    "    return timestamps\n",
-    "timestamps = get_timestamps(data,\"%Y-%m-%d %X\")"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": 23,
-   "id": "112962a0",
-   "metadata": {},
-   "outputs": [
-    {
-     "data": {
-      "image/png": "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\n",
-      "text/plain": [
-       "<Figure size 432x288 with 2 Axes>"
-      ]
-     },
-     "metadata": {
-      "needs_background": "light"
-     },
-     "output_type": "display_data"
-    }
-   ],
-   "source": [
-    "# Plot of array values\n",
-    "\n",
-    "heatmap = np.array(array_values,dtype=np.float64)\n",
-    "fig = plt.figure()\n",
-    "plt.rcParams['figure.figsize'] = [128, 64]\n",
-    "plt.rcParams['figure.dpi'] = 128\n",
-    "ax = fig.add_subplot(111)\n",
-    "im = ax.imshow(heatmap, interpolation='nearest',cmap='coolwarm')\n",
-    "ax.set_xlabel('Array index')\n",
-    "ax.set_ylabel('Timestamp')\n",
-    "ax.set_xlim([0,(records[0].dim_x_r)-1])\n",
-    "ax.set_xticks(np.arange(0,records[0].dim_x_r))\n",
-    "\n",
-    "ax.set_yticks(range(0,len(timestamps)))\n",
-    "ax.set_yticklabels(timestamps,fontsize=4)\n",
-    "\n",
-    "# Comment the previous two lines and uncomment the following line if there are too many timestamp labels\n",
-    "#ax.set_yticks(range(0,len(timestamps),10))\n",
-    "\n",
-    "ax.set_title('Archived data for '+ attr_fq_name)\n",
-    "ax.grid()\n",
-    "cbar = fig.colorbar(ax=ax, mappable=im, orientation='horizontal')\n",
-    "plt.show()"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": null,
-   "id": "a4a7caae",
-   "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
-}
diff --git a/jupyter-notebooks/archiving_demo.ipynb b/jupyter-notebooks/archiving_demo.ipynb
deleted file mode 100644
index d478c20c71ce35a7c4d017a180bdd404d0b06c2d..0000000000000000000000000000000000000000
--- a/jupyter-notebooks/archiving_demo.ipynb
+++ /dev/null
@@ -1,351 +0,0 @@
-{
- "cells": [
-  {
-   "cell_type": "code",
-   "execution_count": null,
-   "id": "d56e59b7",
-   "metadata": {},
-   "outputs": [],
-   "source": [
-    "import sys, time\n",
-    "import numpy as np\n",
-    "sys.path.append('/hosthome/tango/tangostationcontrol/tangostationcontrol/')\n",
-    "from toolkit.archiver_util import *\n",
-    "from toolkit.archiver_configurator import *\n",
-    "from toolkit.archiver import *\n",
-    "from toolkit.retriever import *\n",
-    "from matplotlib import pyplot as plt"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": null,
-   "id": "fd619562",
-   "metadata": {},
-   "outputs": [],
-   "source": [
-    "# Create an archiver object\n",
-    "archiver = Archiver()"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": null,
-   "id": "b3748c34",
-   "metadata": {},
-   "outputs": [],
-   "source": [
-    "# Safety cleanup\n",
-    "DeviceProxy(archiver.get_subscribers()[0]).delete_property('AttributeList')\n",
-    "DeviceProxy(archiver.get_subscribers()[0]).delete_property('__SubDevices')"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": null,
-   "id": "c1eedafb",
-   "metadata": {
-    "scrolled": true
-   },
-   "outputs": [],
-   "source": [
-    "# Apply the chosen JSON configuration file in directory toolkit/archiver_config/\n",
-    "config_dict = archiver.get_configuration()\n",
-    "#print(config_dict)\n",
-    "archiver.apply_configuration(config_dict)"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": null,
-   "id": "76e9656f",
-   "metadata": {},
-   "outputs": [],
-   "source": [
-    "# Print max loads\n",
-    "# print(DATATYPES_SIZE_DICT)\n",
-    "print(archiver.get_maximum_device_load('STAT/SDP/1'))\n",
-    "print(archiver.get_maximum_device_load('STAT/RECV/1'))"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": null,
-   "id": "948e95f0",
-   "metadata": {},
-   "outputs": [],
-   "source": [
-    "# RECV device\n",
-    "device_name = 'STAT/RECV/1'\n",
-    "#device_name = 'STAT/UNB2/1'\n",
-    "d=DeviceProxy(device_name) \n",
-    "d.set_timeout_millis(30000)\n",
-    "state = str(d.state())\n",
-    "print(device_name + ' : ' + state)"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": null,
-   "id": "225a5e06",
-   "metadata": {},
-   "outputs": [],
-   "source": [
-    "# Start RECV device\n",
-    "if state == 'FAULT':\n",
-    "    d.off()\n",
-    "    time.sleep(3)\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.set_defaults()\n",
-    "    d.on()\n",
-    "state = str(d.state())\n",
-    "if state == \"ON\":\n",
-    "    print(f\"Device {device_name} is now in ON state\")"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": null,
-   "id": "0e27ac40",
-   "metadata": {},
-   "outputs": [],
-   "source": [
-    "# SDP device\n",
-    "device_name = 'STAT/SDP/1'\n",
-    "d2=DeviceProxy(device_name) \n",
-    "d2.set_timeout_millis(10000)\n",
-    "state = str(d2.state())\n",
-    "print(device_name + ' : ' + state)"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": null,
-   "id": "348a9d44",
-   "metadata": {},
-   "outputs": [],
-   "source": [
-    "# Start SDP device\n",
-    "if state == 'FAULT':\n",
-    "    d2.off()\n",
-    "    time.sleep(3)\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.set_defaults()\n",
-    "    d2.on()\n",
-    "state = str(d2.state())\n",
-    "if state == \"ON\":\n",
-    "    print(f\"Device {device_name} is now in ON state\")"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": null,
-   "id": "c33fa7ee",
-   "metadata": {},
-   "outputs": [],
-   "source": [
-    "# Add boolean scalar attribute\n",
-    "archiver.add_attribute_to_archiver('stat/recv/1/RECVTR_translator_busy_R', polling_period=1000, archive_event_period=5000)\n",
-    "# Add boolean array attribute\n",
-    "archiver.add_attribute_to_archiver('stat/recv/1/rcu_mask_rw', polling_period=1000, archive_event_period=5000)\n",
-    "# Add boolean image attribute\n",
-    "archiver.add_attribute_to_archiver('stat/recv/1/ANT_mask_RW', polling_period=1000, archive_event_period=5000)\n",
-    "\n",
-    "# Add double scalar attribute\n",
-    "archiver.add_attribute_to_archiver('stat/sdp/1/TR_tod_pps_delta_R', polling_period=1000, archive_event_period=5000)\n",
-    "# Add double array attribute\n",
-    "archiver.add_attribute_to_archiver('stat/sdp/1/fpga_temp_r', polling_period=1000, archive_event_period=5000)\n",
-    "# Add double image attribute\n",
-    "archiver.add_attribute_to_archiver('stat/recv/1/HBAT_antenna_ITRF_offsets_R', polling_period=1000, archive_event_period=5000)\n",
-    "\n",
-    "# Add long array attribute\n",
-    "#archiver.add_attribute_to_archiver('stat/sdp/1/FPGA_bsn_monitor_input_nof_err_R', polling_period=1000, archive_event_period=5000)\n",
-    "\n",
-    "# Add ulong scalar attribute\n",
-    "#archiver.add_attribute_to_archiver('stat/sdp/1/TR_sdp_config_first_fpga_nr_R', polling_period=1000, archive_event_period=5000)\n",
-    "# Add ulong array attribute\n",
-    "#archiver.add_attribute_to_archiver('stat/recv/1/RCU_LED_colour_R', polling_period=1000, archive_event_period=5000)\n",
-    "\n",
-    "# Add long64 scalar attribute\n",
-    "archiver.add_attribute_to_archiver('stat/recv/1/RECVTR_monitor_rate_RW', polling_period=1000, archive_event_period=5000)\n",
-    "# Add long64 array attribute\n",
-    "archiver.add_attribute_to_archiver('stat/recv/1/RCU_PCB_ID_R', polling_period=1000, archive_event_period=5000)\n",
-    "# Add long64 image attribute\n",
-    "archiver.add_attribute_to_archiver('stat/recv/1/HBAT_BF_delay_steps_R', polling_period=1000, archive_event_period=5000)\n",
-    "\n",
-    "# Add string scalar attribute\n",
-    "#archiver.add_attribute_to_archiver('stat/recv/1/status', polling_period=1000, archive_event_period=5000)\n",
-    "# Add string array attribute\n",
-    "#archiver.add_attribute_to_archiver('stat/recv/1/opcua_missing_attributes_R', polling_period=1000, archive_event_period=5000)\n",
-    "\n",
-    "# Add state scalar attribute\n",
-    "#archiver.add_attribute_to_archiver('stat/recv/1/state', polling_period=1000, archive_event_period=5000)"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": null,
-   "id": "ec7878b2",
-   "metadata": {},
-   "outputs": [],
-   "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": null,
-   "id": "3d2ce2da",
-   "metadata": {},
-   "outputs": [],
-   "source": [
-    "# Print the attributes currently managed by the event subscriber\n",
-    "attrs = archiver.get_subscriber_attributes()\n",
-    "attrs"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": null,
-   "id": "0ec2abd3",
-   "metadata": {},
-   "outputs": [],
-   "source": [
-    "retriever = RetrieverTimescale()\n",
-    "attr_name = 'stat/sdp/1/tr_tod_pps_delta_r'\n",
-    "records = retriever.get_attribute_value_by_hours(attr_name,1.5)\n",
-    "records"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": null,
-   "id": "81b60192",
-   "metadata": {},
-   "outputs": [],
-   "source": [
-    "timestamps = [item.data_time.strftime(\"%Y-%m-%d %X:%f\") for item in records]\n",
-    "values = [float(item.value_r) for item in records]"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": null,
-   "id": "26b4aab8",
-   "metadata": {},
-   "outputs": [],
-   "source": [
-    "plt.plot(timestamps,values)\n",
-    "plt.title('Archived data for '+ attr_name)\n",
-    "plt.xticks(rotation=90)\n",
-    "plt.grid()\n",
-    "#plt.rcParams['figure.figsize'] = [12, 8]\n",
-    "plt.rcParams['figure.dpi'] = 60\n",
-    "plt.show()"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": null,
-   "id": "18aeb91f",
-   "metadata": {},
-   "outputs": [],
-   "source": [
-    "views_records = retriever.get_lofar_attribute('stat/sdp/1/tr_tod_pps_delta_r')\n",
-    "views_records"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": null,
-   "id": "eb24ed8f",
-   "metadata": {},
-   "outputs": [],
-   "source": [
-    "views_records = retriever.get_lofar_attribute('stat/sdp/1/fpga_temp_r')\n",
-    "views_records"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": null,
-   "id": "d7a624b0",
-   "metadata": {},
-   "outputs": [],
-   "source": [
-    "d.off()\n",
-    "d2.off()"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": null,
-   "id": "3e08fc4a",
-   "metadata": {},
-   "outputs": [],
-   "source": [
-    "# Retrieve boolean image attributes\n",
-    "attr_name = 'stat/recv/1/ant_mask_rw'\n",
-    "records = retriever.get_attribute_value_by_hours(attr_name,1.5)\n",
-    "print(np.array(records[0].value_r).shape)\n",
-    "#records[0].value_r"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": null,
-   "id": "cb2f36f6",
-   "metadata": {},
-   "outputs": [],
-   "source": [
-    "# Retrieve numeric image attributes\n",
-    "attr_name = 'stat/recv/1/HBAT_antenna_ITRF_offsets_R'.lower()\n",
-    "records = retriever.get_attribute_value_by_hours(attr_name,0.5)\n",
-    "print(np.array(records[0].value_r).shape)\n",
-    "#records[0].value_r"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": null,
-   "id": "a53be0f9",
-   "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
-}