diff --git a/devices/toolkit/archiver.py b/devices/toolkit/archiver.py
index 1b48f3a1642b15eb9599737d75f4fbe1ea050a8c..942fcf2e219ad389d97a3250db4630d9da6cd8ec 100644
--- a/devices/toolkit/archiver.py
+++ b/devices/toolkit/archiver.py
@@ -112,8 +112,6 @@ def get_attribute_value_by_hours(attribute_fqname: str, hours: float = 1.0):
             join(Attribute,Attribute.att_conf_id==base_class.att_conf_id).\
             filter(and_(Attribute.att_conf_id == attr_id,base_class.data_time >= time_delta_db, \
                        base_class.data_time <= time_now_db)).order_by(base_class.data_time).all()
-    #timestamp = [item[0].strftime("%Y-%m-%d %X:%f") for item in result]
-    #value = [item[1] for item in result]
     return result
 
 def get_attribute_value_by_interval(attribute_fqname: str, start_time: datetime, stop_time: datetime):
@@ -132,6 +130,4 @@ def get_attribute_value_by_interval(attribute_fqname: str, start_time: datetime,
             join(Attribute,Attribute.att_conf_id==base_class.att_conf_id).\
                 filter(and_(Attribute.att_conf_id == attr_id,base_class.data_time >= str(start_time), \
                         base_class.data_time <= str(stop_time))).order_by(base_class.data_time).all()
-    #timestamp = [item[0].strftime("%Y-%m-%d %X:%f") for item in result]
-    #value = [item[1] for item in result]
     return result
diff --git a/devices/toolkit/archiver_base.py b/devices/toolkit/archiver_base.py
index 4815591e4fb9c3988dd327ee79e9ba6e7717ce95..d927d4315c31a30fe66db57676f97a6a37ad0706 100644
--- a/devices/toolkit/archiver_base.py
+++ b/devices/toolkit/archiver_base.py
@@ -1,17 +1,18 @@
 #! /usr/bin/env python3
 
+from sqlalchemy.dialects.mysql.types import INTEGER
 from sqlalchemy.orm import declarative_base
 from sqlalchemy import Column, Integer, String
-from sqlalchemy.dialects.mysql import DOUBLE,TIMESTAMP
+from sqlalchemy.dialects.mysql import DOUBLE,TIMESTAMP,BLOB, FLOAT, BIGINT
 from sqlalchemy.sql.expression import table
 
 #Declarative system used to define classes mapped to relational DB tables
 Base = declarative_base()
 
 class Attribute(Base):
-    '''
+    """
     Class that represents a Tango Attribute mapped to table 'att_conf'
-    '''
+    """
     __tablename__ = 'att_conf'
     __table_args__ = {'extend_existing': True}
     
@@ -31,9 +32,9 @@ class Attribute(Base):
                 % (self.att_name,self.att_conf_data_type_id,self.att_ttl,self.facility,self.domain,self.family,self.member,self.name)
     
 class DataType(Base):
-    '''
+    """
     Class that represents a Tango Data Type mapped to table 'att_conf_data_type'
-    '''
+    """
     __tablename__ = 'att_conf_data_type'
     __table_args__ = {'extend_existing': True}
     
@@ -44,28 +45,322 @@ class DataType(Base):
         return "<DataType(type='%s')>" \
                 % (self.data_type)
 
-class Scalar_Double_RO(Base):
-    '''
-    Class that represents a Tango Scalar Read-Only Value mapped to table 'att_scalar_devdouble_ro'
-    '''
-    __tablename__ = 'att_scalar_devdouble_ro'
-    __table_args__ = {'extend_existing': True}
-    # Primary key is not defined for this kind of tables, but SQLAlchemy requires a mandatory 
+class Scalar(Base):
+    """
+    Abstract class that represents Super-class of Scalar mapper classes
+    """
+    __abstract__ = True
+    # Primary key is not defined for tables which store values, but SQLAlchemy requires a mandatory 
     # primary key definition. Anyway, this definition is on Python-side and does not compromise
     # DBMS architecture
-    
     att_conf_id = Column(Integer, primary_key=True)
     data_time = Column(TIMESTAMP)
     recv_time = Column(TIMESTAMP)
     insert_time = Column(TIMESTAMP, primary_key=True)
-    value_r = Column(DOUBLE, primary_key=True)
     quality = Column(Integer)
     att_error_desc_id = Column(Integer)
 
+class Scalar_Boolean(Scalar):
+    """
+    Abstract class that represents Parent class of Scalar Boolean mapper classes
+    """
+    __abstract__ = True
+    value_r = Column(Integer)
+
+class Scalar_Boolean_RO(Scalar_Boolean):
+    """
+    Class that represents a Tango Scalar Read-Only Value mapped to table 'att_scalar_devdouble_ro'
+    """
+    __tablename__ = 'att_scalar_devboolean_ro'
+    __table_args__ = {'extend_existing': True}
+    
+    def __repr__(self):
+        return "<Scalar_Boolean_RO(att_conf_id='%s',data_time='%s',recv_time='%s',insert_time='%s',value_r='%s',quality='%s',att_error_desc_id='%s')>" \
+                % (self.att_conf_id,self.data_time,self.recv_time,self.insert_time,self.value_r,self.quality,self.att_error_desc_id)
+
+class Scalar_Boolean_RW(Scalar_Boolean):
+    """
+    Class that represents a Tango Scalar Read-Write Value mapped to table 'att_scalar_devdouble_rw'
+    """
+    __tablename__ = 'att_scalar_devboolean_rw'
+    __table_args__ = {'extend_existing': True}
+    value_w = Column(Integer)
+
+    def __repr__(self):
+        return "<Scalar_Boolean_RW(att_conf_id='%s',data_time='%s',recv_time='%s',insert_time='%s',value_r='%s',value_w='%s',quality='%s',att_error_desc_id='%s')>" \
+                % (self.att_conf_id,self.data_time,self.recv_time,self.insert_time,self.value_r,self.value_w,self.quality,self.att_error_desc_id)
+
+class Scalar_Double(Scalar):
+    """
+    Abstract class that represents Parent class of Scalar Double mapper classes
+    """
+    __abstract__ = True
+    value_r = Column(DOUBLE)
+
+class Scalar_Double_RO(Scalar_Double):
+    """
+    Class that represents a Tango Scalar Read-Only Value mapped to table 'att_scalar_devdouble_ro'
+    """
+    __tablename__ = 'att_scalar_devdouble_ro'
+    __table_args__ = {'extend_existing': True}
+
     def __repr__(self):
         return "<Scalar_Double_RO(att_conf_id='%s',data_time='%s',recv_time='%s',insert_time='%s',value_r='%s',quality='%s',att_error_desc_id='%s')>" \
                 % (self.att_conf_id,self.data_time,self.recv_time,self.insert_time,self.value_r,self.quality,self.att_error_desc_id)
 
+class Scalar_Double_RW(Scalar_Double):
+    """
+    Class that represents a Tango Scalar Read-Write Value mapped to table 'att_scalar_devdouble_rw'
+    """
+    __tablename__ = 'att_scalar_devdouble_rw'
+    __table_args__ = {'extend_existing': True}  
+    value_w = Column(DOUBLE)
+
+    def __repr__(self):
+        return "<Scalar_Double_RW(att_conf_id='%s',data_time='%s',recv_time='%s',insert_time='%s',value_r='%s',value_w='%s',quality='%s',att_error_desc_id='%s')>" \
+                % (self.att_conf_id,self.data_time,self.recv_time,self.insert_time,self.value_r,self.value_w,self.quality,self.att_error_desc_id)
+
+class Scalar_Encoded(Scalar):
+    """
+    Abstract class that represents Parent class of Scalar Encoded mapper classes
+    """
+    __abstract__ = True
+    value_r = Column(BLOB)
+
+class Scalar_Encoded_RO(Scalar_Encoded):
+    """
+    Class that represents a Tango Scalar Read-Only Value mapped to table 'att_scalar_devencoded_ro'
+    """
+    __tablename__ = 'att_scalar_devencoded_ro'
+    __table_args__ = {'extend_existing': True}
+
+    def __repr__(self):
+        return "<Scalar_Encoded_RO(att_conf_id='%s',data_time='%s',recv_time='%s',insert_time='%s',value_r='%s',quality='%s',att_error_desc_id='%s')>" \
+                % (self.att_conf_id,self.data_time,self.recv_time,self.insert_time,self.value_r,self.quality,self.att_error_desc_id)
+
+class Scalar_Encoded_RW(Scalar_Encoded):
+    """
+    Class that represents a Tango Scalar Read-Write Value mapped to table 'att_scalar_devencoded_rw'
+    """
+    __tablename__ = 'att_scalar_devencoded_rw'
+    __table_args__ = {'extend_existing': True}
+    value_w = Column(BLOB)
+
+    def __repr__(self):
+        return "<Scalar_Encoded_RW(att_conf_id='%s',data_time='%s',recv_time='%s',insert_time='%s',value_r='%s',value_w='%s',quality='%s',att_error_desc_id='%s')>" \
+                % (self.att_conf_id,self.data_time,self.recv_time,self.insert_time,self.value_r,self.value_w,self.quality,self.att_error_desc_id)
+
+class Scalar_Enum(Scalar):
+    """
+    Abstract class that represents Parent class of Scalar Enum mapper classes
+    """
+    __abstract__ = True
+    value_r = Column(Integer)
+
+class Scalar_Enum_RO(Scalar_Enum):
+    """
+    Class that represents a Tango Scalar Read-Only Value mapped to table 'att_scalar_devenum_ro'
+    """
+    __tablename__ = 'att_scalar_devenum_ro'
+    __table_args__ = {'extend_existing': True}
+
+    def __repr__(self):
+        return "<Scalar_Enum_RO(att_conf_id='%s',data_time='%s',recv_time='%s',insert_time='%s',value_r='%s',quality='%s',att_error_desc_id='%s')>" \
+                % (self.att_conf_id,self.data_time,self.recv_time,self.insert_time,self.value_r,self.quality,self.att_error_desc_id)
+
+class Scalar_Enum_RW(Scalar_Enum):
+    """
+    Class that represents a Tango Scalar Read-Write Value mapped to table 'att_scalar_devenum_rw'
+    """
+    __tablename__ = 'att_scalar_devenum_rw'
+    __table_args__ = {'extend_existing': True}
+    value_w = Column(Integer)
+
+    def __repr__(self):
+        return "<Scalar_Enum_RW(att_conf_id='%s',data_time='%s',recv_time='%s',insert_time='%s',value_r='%s',value_w='%s',quality='%s',att_error_desc_id='%s')>" \
+                % (self.att_conf_id,self.data_time,self.recv_time,self.insert_time,self.value_r,self.value_w,self.quality,self.att_error_desc_id)
+
+class Scalar_Float(Scalar):
+    """
+    Abstract class that represents Parent class of Scalar Float mapper classes
+    """
+    __abstract__ = True
+    value_r = Column(FLOAT)
+
+class Scalar_Float_RO(Scalar_Float):
+    """
+    Class that represents a Tango Scalar Read-Only Value mapped to table 'att_scalar_devfloat_ro'
+    """
+    __tablename__ = 'att_scalar_devfloat_ro'
+    __table_args__ = {'extend_existing': True}
+
+    def __repr__(self):
+        return "<Scalar_Float_RO(att_conf_id='%s',data_time='%s',recv_time='%s',insert_time='%s',value_r='%s',quality='%s',att_error_desc_id='%s')>" \
+                % (self.att_conf_id,self.data_time,self.recv_time,self.insert_time,self.value_r,self.quality,self.att_error_desc_id)
+
+class Scalar_Float_RW(Scalar_Float):
+    """
+    Class that represents a Tango Scalar Read-Write Value mapped to table 'att_scalar_devfloat_rw'
+    """
+    __tablename__ = 'att_scalar_devfloat_rw'
+    __table_args__ = {'extend_existing': True}
+    value_w = Column(FLOAT)
+
+    def __repr__(self):
+        return "<Scalar_Float_RW(att_conf_id='%s',data_time='%s',recv_time='%s',insert_time='%s',value_r='%s',value_w='%s',quality='%s',att_error_desc_id='%s')>" \
+                % (self.att_conf_id,self.data_time,self.recv_time,self.insert_time,self.value_r,self.value_w,self.quality,self.att_error_desc_id)
+
+class Scalar_Long64(Scalar):
+    """
+    Abstract class that represents Parent class of Scalar Long64 mapper classes
+    """
+    __abstract__ = True
+    value_r = Column(BIGINT)
+
+class Scalar_Long64_RO(Scalar_Long64):
+    """
+    Class that represents a Tango Scalar Read-Only Value mapped to table 'att_scalar_devlong64_ro'
+    """
+    __tablename__ = 'att_scalar_devlong64_ro'
+    __table_args__ = {'extend_existing': True}
+
+    def __repr__(self):
+        return "<Scalar_Long64_RO(att_conf_id='%s',data_time='%s',recv_time='%s',insert_time='%s',value_r='%s',quality='%s',att_error_desc_id='%s')>" \
+                % (self.att_conf_id,self.data_time,self.recv_time,self.insert_time,self.value_r,self.quality,self.att_error_desc_id)
+
+class Scalar_Long64_RW(Scalar_Long64):
+    """
+    Class that represents a Tango Scalar Read-Write Value mapped to table 'att_scalar_devlong64_rw'
+    """
+    __tablename__ = 'att_scalar_devlong64_rw'
+    __table_args__ = {'extend_existing': True}
+    value_w = Column(BIGINT)
+
+    def __repr__(self):
+        return "<Scalar_Long64_RW(att_conf_id='%s',data_time='%s',recv_time='%s',insert_time='%s',value_r='%s',value_w='%s',quality='%s',att_error_desc_id='%s')>" \
+                % (self.att_conf_id,self.data_time,self.recv_time,self.insert_time,self.value_r,self.value_w,self.quality,self.att_error_desc_id)
+
+class Scalar_Long(Scalar):
+    """
+    Abstract class that represents Parent class of Scalar Long mapper classes
+    """
+    __abstract__ = True
+    value_r = Column(INTEGER)
+
+class Scalar_Long_RO(Scalar_Long):
+    """
+    Class that represents a Tango Scalar Read-Only Value mapped to table 'att_scalar_devlong_ro'
+    """
+    __tablename__ = 'att_scalar_devlong_ro'
+    __table_args__ = {'extend_existing': True}
+
+    def __repr__(self):
+        return "<Scalar_Long_RO(att_conf_id='%s',data_time='%s',recv_time='%s',insert_time='%s',value_r='%s',quality='%s',att_error_desc_id='%s')>" \
+                % (self.att_conf_id,self.data_time,self.recv_time,self.insert_time,self.value_r,self.quality,self.att_error_desc_id)
+
+class Scalar_Long_RW(Scalar_Long):
+    """
+    Class that represents a Tango Scalar Read-Write Value mapped to table 'att_scalar_devlong_rw'
+    """
+    __tablename__ = 'att_scalar_devlong_rw'
+    __table_args__ = {'extend_existing': True}
+    value_w = Column(INTEGER)
+
+    def __repr__(self):
+        return "<Scalar_Long_RW(att_conf_id='%s',data_time='%s',recv_time='%s',insert_time='%s',value_r='%s',value_w='%s',quality='%s',att_error_desc_id='%s')>" \
+                % (self.att_conf_id,self.data_time,self.recv_time,self.insert_time,self.value_r,self.value_w,self.quality,self.att_error_desc_id)
+
+class Scalar_Short(Scalar):
+    """
+    Abstract class that represents Parent class of Scalar Short mapper classes
+    """
+    __abstract__ = True
+    value_r = Column(Integer)
+
+class Scalar_Short_RO(Scalar_Short):
+    """
+    Class that represents a Tango Scalar Read-Only Value mapped to table 'att_scalar_devshort_ro'
+    """
+    __tablename__ = 'att_scalar_devshort_ro'
+    __table_args__ = {'extend_existing': True}
+
+    def __repr__(self):
+        return "<Scalar_Short_RO(att_conf_id='%s',data_time='%s',recv_time='%s',insert_time='%s',value_r='%s',quality='%s',att_error_desc_id='%s')>" \
+                % (self.att_conf_id,self.data_time,self.recv_time,self.insert_time,self.value_r,self.quality,self.att_error_desc_id)
+
+class Scalar_Short_RW(Scalar_Short):
+    """
+    Class that represents a Tango Scalar Read-Write Value mapped to table 'att_scalar_devshort_rw'
+    """
+    __tablename__ = 'att_scalar_devshort_rw'
+    __table_args__ = {'extend_existing': True}
+    value_w = Column(Integer)
+
+    def __repr__(self):
+        return "<Scalar_Short_RW(att_conf_id='%s',data_time='%s',recv_time='%s',insert_time='%s',value_r='%s',value_w='%s',quality='%s',att_error_desc_id='%s')>" \
+                % (self.att_conf_id,self.data_time,self.recv_time,self.insert_time,self.value_r,self.value_w,self.quality,self.att_error_desc_id)
+
+class Scalar_State(Scalar):
+    """
+    Abstract class that represents Parent class of Scalar State mapper classes
+    """
+    __abstract__ = True
+    value_r = Column(Integer)
+
+class Scalar_State_RO(Scalar_State):
+    """
+    Class that represents a Tango Scalar Read-Only Value mapped to table 'att_scalar_devstate_ro'
+    """
+    __tablename__ = 'att_scalar_devstate_ro'
+    __table_args__ = {'extend_existing': True}
+
+    def __repr__(self):
+        return "<Scalar_State_RO(att_conf_id='%s',data_time='%s',recv_time='%s',insert_time='%s',value_r='%s',quality='%s',att_error_desc_id='%s')>" \
+                % (self.att_conf_id,self.data_time,self.recv_time,self.insert_time,self.value_r,self.quality,self.att_error_desc_id)
+
+class Scalar_State_RW(Scalar_State):
+    """
+    Class that represents a Tango Scalar Read-Write Value mapped to table 'att_scalar_devstate_rw'
+    """
+    __tablename__ = 'att_scalar_devstate_rw'
+    __table_args__ = {'extend_existing': True}
+    value_w = Column(Integer)
+
+    def __repr__(self):
+        return "<Scalar_State_RW(att_conf_id='%s',data_time='%s',recv_time='%s',insert_time='%s',value_r='%s',value_w='%s',quality='%s',att_error_desc_id='%s')>" \
+                % (self.att_conf_id,self.data_time,self.recv_time,self.insert_time,self.value_r,self.value_w,self.quality,self.att_error_desc_id)
+
+class Scalar_String(Scalar):
+    """
+    Abstract class that represents Parent class of Scalar String mapper classes
+    """
+    __abstract__ = True
+    value_r = Column(String)
+
+class Scalar_String_RO(Scalar_String):
+    """
+    Class that represents a Tango Scalar Read-Only Value mapped to table 'att_scalar_devstring_ro'
+    """
+    __tablename__ = 'att_scalar_devstring_ro'
+    __table_args__ = {'extend_existing': True}
+
+    def __repr__(self):
+        return "<Scalar_String_RO(att_conf_id='%s',data_time='%s',recv_time='%s',insert_time='%s',value_r='%s',quality='%s',att_error_desc_id='%s')>" \
+                % (self.att_conf_id,self.data_time,self.recv_time,self.insert_time,self.value_r,self.quality,self.att_error_desc_id)
+
+class Scalar_String_RW(Scalar_String):
+    """
+    Class that represents a Tango Scalar Read-Write Value mapped to table 'att_scalar_devstring_rw'
+    """
+    __tablename__ = 'att_scalar_devstring_rw'
+    __table_args__ = {'extend_existing': True}
+    value_w = Column(String)
+
+    def __repr__(self):
+        return "<Scalar_String_RW(att_conf_id='%s',data_time='%s',recv_time='%s',insert_time='%s',value_r='%s',value_w='%s',quality='%s',att_error_desc_id='%s')>" \
+                % (self.att_conf_id,self.data_time,self.recv_time,self.insert_time,self.value_r,self.value_w,self.quality,self.att_error_desc_id)
+
+
 def get_class_by_tablename(tablename: str):
     """
     Returns class reference mapped to a table.    
diff --git a/jupyter-notebooks/archiving_test_v2.ipynb b/jupyter-notebooks/archiving_test_v2.ipynb
index dd6101f97e192d3d56ee4ed9e5aa145a1d4fa6d2..3e61e9273cd34a0695ad3d8772eb124e2e2b25c6 100644
--- a/jupyter-notebooks/archiving_test_v2.ipynb
+++ b/jupyter-notebooks/archiving_test_v2.ipynb
@@ -9,17 +9,28 @@
    "source": [
     "import sys\n",
     "sys.path.append('/hosthome/tango/devices')\n",
-    "from util.archiver import *\n",
-    "from util.archiver_base import *\n",
+    "from toolkit.archiver import *\n",
+    "from toolkit.archiver_base import *\n",
     "import mysql.connector"
    ]
   },
   {
    "cell_type": "code",
-   "execution_count": null,
+   "execution_count": 2,
    "id": "57834b5e",
    "metadata": {},
-   "outputs": [],
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "['rnd1', 'rnd2', 'rnd3', 'rnd4', 'rnd5', 'rnd6', 'rnd7', 'rnd8', 'rnd9', 'rnd10', 'rnd11', 'rnd12', 'rnd13', 'rnd14', 'rnd15', 'rnd16', 'rnd17', 'rnd18', 'rnd19', 'rnd20', 'State', 'Status']"
+      ]
+     },
+     "execution_count": 2,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
    "source": [
     "dev_rand = DeviceProxy(\"LTS/RandomData/1\")\n",
     "dev_rand.get_attribute_list()"
@@ -27,7 +38,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": null,
+   "execution_count": 3,
    "id": "6816f78f",
    "metadata": {},
    "outputs": [],
@@ -37,50 +48,62 @@
   },
   {
    "cell_type": "code",
-   "execution_count": null,
+   "execution_count": 4,
    "id": "7bda559b",
    "metadata": {},
-   "outputs": [],
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "[<Attribute(fullname='tango://databaseds:10000/lts/randomdata/1/rnd1',data_type ='37',ttl='0',facility ='tango://databaseds:10000',domain ='lts',family ='randomdata',member ='1',name ='rnd1')>,\n",
+       " <Attribute(fullname='tango://databaseds:10000/lts/randomdata/1/rnd3',data_type ='37',ttl='0',facility ='tango://databaseds:10000',domain ='lts',family ='randomdata',member ='1',name ='rnd3')>]"
+      ]
+     },
+     "execution_count": 4,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
    "source": [
     "get_all_archived_attributes()"
    ]
   },
   {
    "cell_type": "code",
-   "execution_count": null,
+   "execution_count": 5,
    "id": "f0ef38a4",
    "metadata": {},
    "outputs": [],
    "source": [
-    "add_attribute_to_archiver('lts/randomdata/1/rnd7',3000,1000)"
+    "attr_fullname = 'lts/randomdata/1/rnd5'\n",
+    "add_attribute_to_archiver(attr_fullname,1000,1000)"
    ]
   },
   {
    "cell_type": "code",
-   "execution_count": null,
+   "execution_count": 6,
    "id": "7d0746e7",
    "metadata": {},
    "outputs": [],
    "source": [
-    "remove_attribute_from_archiver('lts/randomdata/1/rnd7')"
+    "remove_attribute_from_archiver(attr_fullname)"
    ]
   },
   {
    "cell_type": "code",
-   "execution_count": 2,
+   "execution_count": 7,
    "id": "129a75c6",
    "metadata": {},
    "outputs": [
     {
      "data": {
       "text/plain": [
-       "[<Attribute(fullname='tango://databaseds:10000/lts/randomdata/1/rnd2',data_type ='37',ttl='0',facility ='tango://databaseds:10000',domain ='lts',family ='randomdata',member ='1',name ='rnd2')>,\n",
+       "[<Attribute(fullname='tango://databaseds:10000/lts/randomdata/1/rnd1',data_type ='37',ttl='0',facility ='tango://databaseds:10000',domain ='lts',family ='randomdata',member ='1',name ='rnd1')>,\n",
        " <Attribute(fullname='tango://databaseds:10000/lts/randomdata/1/rnd3',data_type ='37',ttl='0',facility ='tango://databaseds:10000',domain ='lts',family ='randomdata',member ='1',name ='rnd3')>,\n",
-       " <Attribute(fullname='tango://databaseds:10000/lts/randomdata/1/rnd15',data_type ='37',ttl='0',facility ='tango://databaseds:10000',domain ='lts',family ='randomdata',member ='1',name ='rnd15')>,\n",
-       " <Attribute(fullname='tango://databaseds:10000/lts/randomdata/1/rnd7',data_type ='37',ttl='0',facility ='tango://databaseds:10000',domain ='lts',family ='randomdata',member ='1',name ='rnd7')>]"
+       " <Attribute(fullname='tango://databaseds:10000/lts/randomdata/1/rnd5',data_type ='37',ttl='0',facility ='tango://databaseds:10000',domain ='lts',family ='randomdata',member ='1',name ='rnd5')>]"
       ]
      },
-     "execution_count": 2,
+     "execution_count": 7,
      "metadata": {},
      "output_type": "execute_result"
     }
@@ -91,29 +114,29 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 3,
+   "execution_count": 8,
    "id": "5f9865ee",
    "metadata": {},
    "outputs": [
     {
      "data": {
       "text/plain": [
-       "4"
+       "3"
       ]
      },
-     "execution_count": 3,
+     "execution_count": 8,
      "metadata": {},
      "output_type": "execute_result"
     }
    ],
    "source": [
-    "main_att = 'lts/randomdata/1/rnd7'\n",
+    "main_att = 'lts/randomdata/1/rnd5'\n",
     "get_attribute_id(main_att)"
    ]
   },
   {
    "cell_type": "code",
-   "execution_count": 4,
+   "execution_count": 9,
    "id": "2a3707a3",
    "metadata": {},
    "outputs": [
@@ -123,7 +146,7 @@
        "'scalar_devdouble_ro'"
       ]
      },
-     "execution_count": 4,
+     "execution_count": 9,
      "metadata": {},
      "output_type": "execute_result"
     }
@@ -134,29 +157,27 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 5,
+   "execution_count": 10,
    "id": "18100623",
    "metadata": {},
    "outputs": [
     {
      "data": {
       "text/plain": [
-       "[<Scalar_Double_RO(att_conf_id='4',data_time='2021-06-23 15:00:21.892781',recv_time='2021-06-23 15:00:23.040862',insert_time='2021-06-23 15:00:23.042065',value_r='0.9263038657',quality='2',att_error_desc_id='None')>,\n",
-       " <Scalar_Double_RO(att_conf_id='4',data_time='2021-06-23 15:00:24.909897',recv_time='2021-06-23 15:00:24.911329',insert_time='2021-06-23 15:00:24.912696',value_r='0.6869173892',quality='2',att_error_desc_id='None')>,\n",
-       " <Scalar_Double_RO(att_conf_id='4',data_time='2021-06-23 15:00:27.909636',recv_time='2021-06-23 15:00:27.910767',insert_time='2021-06-23 15:00:27.912330',value_r='0.1070759253',quality='2',att_error_desc_id='None')>,\n",
-       " <Scalar_Double_RO(att_conf_id='4',data_time='2021-06-23 15:00:30.909940',recv_time='2021-06-23 15:00:30.911529',insert_time='2021-06-23 15:00:30.913542',value_r='0.2699634793',quality='2',att_error_desc_id='None')>,\n",
-       " <Scalar_Double_RO(att_conf_id='4',data_time='2021-06-23 15:00:33.910365',recv_time='2021-06-23 15:00:33.910897',insert_time='2021-06-23 15:00:33.911735',value_r='0.8323236082',quality='2',att_error_desc_id='None')>,\n",
-       " <Scalar_Double_RO(att_conf_id='4',data_time='2021-06-23 15:00:36.910232',recv_time='2021-06-23 15:00:36.911389',insert_time='2021-06-23 15:00:36.912912',value_r='0.7979368397',quality='2',att_error_desc_id='None')>,\n",
-       " <Scalar_Double_RO(att_conf_id='4',data_time='2021-06-23 15:00:39.909182',recv_time='2021-06-23 15:00:39.909785',insert_time='2021-06-23 15:00:39.910372',value_r='0.2178505902',quality='2',att_error_desc_id='None')>,\n",
-       " <Scalar_Double_RO(att_conf_id='4',data_time='2021-06-23 15:00:42.909868',recv_time='2021-06-23 15:00:42.911390',insert_time='2021-06-23 15:00:42.913124',value_r='0.6949464171',quality='2',att_error_desc_id='None')>,\n",
-       " <Scalar_Double_RO(att_conf_id='4',data_time='2021-06-23 15:00:45.909946',recv_time='2021-06-23 15:00:45.911036',insert_time='2021-06-23 15:00:45.912787',value_r='0.1093199257',quality='2',att_error_desc_id='None')>,\n",
-       " <Scalar_Double_RO(att_conf_id='4',data_time='2021-06-23 15:00:48.909615',recv_time='2021-06-23 15:00:48.910722',insert_time='2021-06-23 15:00:48.912259',value_r='0.9768430390',quality='2',att_error_desc_id='None')>,\n",
-       " <Scalar_Double_RO(att_conf_id='4',data_time='2021-06-23 15:00:51.909200',recv_time='2021-06-23 15:00:51.910290',insert_time='2021-06-23 15:00:51.911793',value_r='0.8888621550',quality='2',att_error_desc_id='None')>,\n",
-       " <Scalar_Double_RO(att_conf_id='4',data_time='2021-06-23 15:00:54.909296',recv_time='2021-06-23 15:00:54.910679',insert_time='2021-06-23 15:00:54.912332',value_r='0.3799629383',quality='2',att_error_desc_id='None')>,\n",
-       " <Scalar_Double_RO(att_conf_id='4',data_time='2021-06-23 15:00:57.909804',recv_time='2021-06-23 15:00:57.910850',insert_time='2021-06-23 15:00:57.912311',value_r='0.7681945847',quality='2',att_error_desc_id='None')>]"
+       "[<Scalar_Double_RO(att_conf_id='3',data_time='2021-06-25 15:24:07.119788',recv_time='2021-06-25 15:24:07.930917',insert_time='2021-06-25 15:24:07.932652',value_r='0.2033680434',quality='2',att_error_desc_id='None')>,\n",
+       " <Scalar_Double_RO(att_conf_id='3',data_time='2021-06-25 15:24:08.120465',recv_time='2021-06-25 15:24:08.124548',insert_time='2021-06-25 15:24:08.127058',value_r='0.9330212368',quality='2',att_error_desc_id='None')>,\n",
+       " <Scalar_Double_RO(att_conf_id='3',data_time='2021-06-25 15:24:09.120343',recv_time='2021-06-25 15:24:09.123946',insert_time='2021-06-25 15:24:09.126367',value_r='0.1619766261',quality='2',att_error_desc_id='None')>,\n",
+       " <Scalar_Double_RO(att_conf_id='3',data_time='2021-06-25 15:24:10.120398',recv_time='2021-06-25 15:24:10.123090',insert_time='2021-06-25 15:24:10.125112',value_r='0.1600708165',quality='2',att_error_desc_id='None')>,\n",
+       " <Scalar_Double_RO(att_conf_id='3',data_time='2021-06-25 15:24:11.120518',recv_time='2021-06-25 15:24:11.123866',insert_time='2021-06-25 15:24:11.125772',value_r='0.1953627874',quality='2',att_error_desc_id='None')>,\n",
+       " <Scalar_Double_RO(att_conf_id='3',data_time='2021-06-25 15:24:12.120626',recv_time='2021-06-25 15:24:12.123934',insert_time='2021-06-25 15:24:12.126119',value_r='0.4233485985',quality='2',att_error_desc_id='None')>,\n",
+       " <Scalar_Double_RO(att_conf_id='3',data_time='2021-06-25 15:24:13.120682',recv_time='2021-06-25 15:24:13.123542',insert_time='2021-06-25 15:24:13.125435',value_r='0.1744663070',quality='2',att_error_desc_id='None')>,\n",
+       " <Scalar_Double_RO(att_conf_id='3',data_time='2021-06-25 15:24:14.120714',recv_time='2021-06-25 15:24:14.123980',insert_time='2021-06-25 15:24:14.126306',value_r='0.9820536486',quality='2',att_error_desc_id='None')>,\n",
+       " <Scalar_Double_RO(att_conf_id='3',data_time='2021-06-25 15:24:15.120239',recv_time='2021-06-25 15:24:15.122162',insert_time='2021-06-25 15:24:15.123428',value_r='0.9547788992',quality='2',att_error_desc_id='None')>,\n",
+       " <Scalar_Double_RO(att_conf_id='3',data_time='2021-06-25 15:24:16.120990',recv_time='2021-06-25 15:24:16.124006',insert_time='2021-06-25 15:24:16.126385',value_r='0.1627633385',quality='2',att_error_desc_id='None')>,\n",
+       " <Scalar_Double_RO(att_conf_id='3',data_time='2021-06-25 15:24:17.120261',recv_time='2021-06-25 15:24:17.124313',insert_time='2021-06-25 15:24:17.126494',value_r='0.2554102953',quality='2',att_error_desc_id='None')>]"
       ]
      },
-     "execution_count": 5,
+     "execution_count": 10,
      "metadata": {},
      "output_type": "execute_result"
     }
@@ -167,31 +188,112 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 6,
+   "execution_count": 11,
    "id": "ab476d57",
    "metadata": {},
    "outputs": [
     {
      "data": {
       "text/plain": [
-       "[<Scalar_Double_RO(att_conf_id='3',data_time='2021-06-21 14:50:06.179562',recv_time='2021-06-21 14:50:07.180444',insert_time='2021-06-21 14:50:07.204869',value_r='0.1400088842',quality='2',att_error_desc_id='None')>,\n",
-       " <Scalar_Double_RO(att_conf_id='3',data_time='2021-06-21 14:50:10.213110',recv_time='2021-06-21 14:50:10.214549',insert_time='2021-06-21 14:50:10.216117',value_r='0.6627579896',quality='2',att_error_desc_id='None')>]"
+       "[]"
       ]
      },
-     "execution_count": 6,
+     "execution_count": 11,
      "metadata": {},
      "output_type": "execute_result"
     }
    ],
    "source": [
-    "get_attribute_value_by_interval('lts/randomdata/1/rnd15', '2021-06-21 13:20:00', '2021-06-23 15:21:00')"
+    "get_attribute_value_by_interval(main_att, '2021-06-21 13:20:00', '2021-06-23 15:21:00')"
    ]
   },
   {
    "cell_type": "code",
-   "execution_count": null,
+   "execution_count": 12,
    "id": "21c9b91b",
    "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "Decimal('0.2033680434')"
+      ]
+     },
+     "execution_count": 12,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "rows = get_attribute_value_by_hours(main_att,2)\n",
+    "a = rows[0]\n",
+    "a.value_r"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 18,
+   "id": "762ea947",
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "(toolkit.archiver_base.Scalar_Double,)"
+      ]
+     },
+     "execution_count": 18,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "a.__class__.__bases__"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 22,
+   "id": "56b31348",
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "[0.2033680434, 0.9330212368, 0.1619766261, 0.1600708165, 0.1953627874, 0.4233485985, 0.174466307, 0.9820536486, 0.9547788992, 0.1627633385, 0.2554102953]\n"
+     ]
+    }
+   ],
+   "source": [
+    "values = [float(item.value_r) for item in rows]\n",
+    "print(values)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 24,
+   "id": "a26aa8f0",
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "['2021-06-25 15:24:07:930917', '2021-06-25 15:24:08:124548', '2021-06-25 15:24:09:123946', '2021-06-25 15:24:10:123090', '2021-06-25 15:24:11:123866', '2021-06-25 15:24:12:123934', '2021-06-25 15:24:13:123542', '2021-06-25 15:24:14:123980', '2021-06-25 15:24:15:122162', '2021-06-25 15:24:16:124006', '2021-06-25 15:24:17:124313']\n"
+     ]
+    }
+   ],
+   "source": [
+    "timestamps = [item.recv_time.strftime(\"%Y-%m-%d %X:%f\") for item in rows]\n",
+    "print(timestamps)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "c2ad3416",
+   "metadata": {},
    "outputs": [],
    "source": []
   }