function [siteID,unitID,chainID,Chain_Scheme,num_nodi] = soglie(IDcentralina,...
    yesTuL,yesRL,yesTLH,yesTLHRH,yesPCL,yesPCLHR,conn,FileName)

fileID = fopen(FileName,'a');
fmt = '%s \r';

text = 'soglie function started';
fprintf(fileID,fmt,text);

%% Raccolgo Informazioni
% Cerco tutte le centraline presenti in quel sito
comando = ['select site_id from units where name = ''' IDcentralina ''' ']; % il rapporto centralina sito è di 1 a 1
curs = exec(conn,comando);
curs = fetch(curs);
siteID = curs.Data;

% Scarico tutte le centraline presenti in sito
comando = ['select id, name from units where site_id = ''' num2str(cell2mat(siteID)) ''' order by name']; % il rapporto centralina sito è di 1 a 1
curs = exec(conn,comando);
curs = fetch(curs);
unitID = curs.Data;

col = size(unitID);
chainID = cell(1,4);
ini = 1;
for c = 1:col(1,1)
    % dalle centraline presenti, risalgo alle catene disponibili
    comando = ['select id, name from tools where unit_id = ''' num2str(cell2mat(unitID(c,1))) ''' order by name'];
    curs = exec(conn,comando);
    curs = fetch(curs);
    chainID_down = curs.Data; % id tool, nome tool
    [fin,~] = size(chainID_down);
    fin = fin+ini-1;
    chainID(ini:fin,3:4) = chainID_down;
    for j = ini:fin
        chainID(j,1:2) = unitID(c,1:2); % Id centralina, nome centralina, id tool, nome tool
    end
    ini = fin+1;
end

% Scarico gli schemi delle catene
[col,~] = size(chainID); % Numero di Array
Chain_Scheme = cell(1,3);
num_nodi = zeros(col,1);
ini = 1;
cont = 1;
for c = 1:col(1,1)
    comando = ['select nodetype_id, depth, num from nodes where tool_id = ''' num2str(cell2mat(chainID(c,3))) ''' order by num'];
    curs = exec(conn,comando);
    curs = fetch(curs);
    scheme_down = curs.Data; % id nodo, profondità, numero
    [fin,~] = size(scheme_down);
    num_nodi(cont) = fin;
    Chain_Scheme(1:fin,ini:ini+2) = scheme_down;
    ini = ini+3;
    cont = cont+1;
end

if yesTuL == 1 || yesRL == 1 || yesTLH == 1 || yesTLHRH == 1 || ...
        yesPCL == 1 || yesPCLHR == 1
        
    % Per ogni tipologia di nodo, riconosco se è presente o meno nella catena
    yesTL = zeros(col,1); % Tilt Link V
    yesTLHR = zeros(col,1); % Tilt Link HR V
    yesTLH = zeros(col,1); % Tilt Link H
    yesTLHRH = zeros(col,1); % Tilt Link HR H
    yesIPL = zeros(col,1); % In Place Link
    yesIPLHR = zeros(col,1); % In Place Link HR
    yesTuL = zeros(col,1); % Tunnel Link
    yesRL = zeros(col,1); % Radial Link
    yesPCL = zeros(col,1); % PreConv Link
    yesPCLHR = zeros(col,1); % PreConv Link HR
    yesPL = zeros(col,1); % Piezo Link
    yesKL = zeros(col,1); % Klino Link
    yesKLHR = zeros(col,1); % Klino Link HR
    yesRaL = zeros(col,1); % Rain Link
    yesLL = zeros(col,1); % Load Link
    yesPrL = zeros(col,1); % Pressure Link
    yesEL = zeros(col,1); % Extensometer Link
    yes3DEL = zeros(col,1); % 3D Extensometer Link
    yesWEL = zeros(col,1); % Wire Extensometer Link
    yesMPBEL = zeros(col,1); % Multi Point BoreHole Extensometer Link
    yesCrL = zeros(col,1); % Crack Link
    yes3DCrL = zeros(col,1); % 3D Crack Link
    % Numero di nodi per catena
    rTL = zeros(col,1);
    rTLHR = zeros(col,1);
    rTLH = zeros(col,1);
    rTLHRH = zeros(col,1);
    rIPL = zeros(col,1);
    rIPLHR = zeros(col,1);
    rTuL = zeros(col,1);
    rRL = zeros(col,1);
    rPCL = zeros(col,1);
    rPCLHR = zeros(col,1);
    rKL = zeros(col,1);
    rKLHR = zeros(col,1);
    rRaL = zeros(col,1);
    rPL = zeros(col,1);
    rLL = zeros(col,1);
    rPrL = zeros(col,1);
    rEL = zeros(col,1);
    r3DEL = zeros(col,1);
    rWEL = zeros(col,1);
    rMPBEL = zeros(col,1);
    rCrL = zeros(col,1);
    r3DCrL = zeros(col,1);
    indice = 1;
    for a = 1:col % Array
        nTL = 1;
        nTLHR = 1;
        nTLH = 1;
        nTLHRH = 1;
        nIPL = 1;
        nIPLHR = 1;
        nTuL = 1;
        nRL = 1;
        nPCL = 1;
        nPCLHR = 1;
        nKL = 1;
        nKLHR = 1;
        nRaL = 1;
        nPL = 1;
        nLL = 1;
        nPrL = 1;
        nEL = 1;
        n3DEL = 1;
        nMPBEL = 1;
        nCrL = 1;
        n3DCrL = 1;
        nWEL = 1;
        for b = 1:num_nodi(a) % Numero di nodi dell'Array
            if cell2mat(Chain_Scheme(b,indice)) == 1 % Tilt Link V
                yesTL(a) = 1;
                NodoTiltLink(nTL,a) = Chain_Scheme(b,indice+2); % Ogni colonna riporta i nodi di un array
                nTL = nTL+1;
            elseif cell2mat(Chain_Scheme(b,indice)) == 5 % Tilt Link HR V
                yesTLHR(a) = 1;
                NodoTiltLinkHR(nTLHR,a) = Chain_Scheme(b,indice+2); % Ogni colonna riporta i nodi di un array
                nTLHR = nTLHR+1;
            elseif cell2mat(Chain_Scheme(b,indice)) == 11 % Tilt Link H
                yesTLH(a) = 1;
                NodoTiltLinkH(nTLH,a) = Chain_Scheme(b,indice+2); % Ogni colonna riporta i nodi di un array
                nTLH = nTLH+1;
            elseif cell2mat(Chain_Scheme(b,indice)) == 12 % Tilt Link HR H
                yesTLHRH(a) = 1;
                NodoTiltLinkHRH(nTLHRH,a) = Chain_Scheme(b,indice+2); % Ogni colonna riporta i nodi di un array
                nTLHRH = nTLHRH+1;
            elseif cell2mat(Chain_Scheme(b,indice)) == 42 % In Place Link
                yesIPL(a) = 1;
                NodoInPlaceLink(nIPL,a) = Chain_Scheme(b,indice+2); % Ogni colonna riporta i nodi di un array
                nIPL = nIPL+1;
            elseif cell2mat(Chain_Scheme(b,indice)) == 43 % In Place Link HR
                yesIPLHR(a) = 1;
                NodoInPlaceLinkHR(nIPLHR,a) = Chain_Scheme(b,indice+2); % Ogni colonna riporta i nodi di un array
                nIPLHR = nIPLHR+1;
            elseif cell2mat(Chain_Scheme(b,indice)) == 17 % Tunnel Link
                yesTuL(a) = 1;
                NodoTunnelLink(nTuL,a) = Chain_Scheme(b,indice+2); % Ogni colonna riporta i nodi di un array
                nTuL = nTuL+1;
            elseif cell2mat(Chain_Scheme(b,indice)) == 18 % Radial Link
                yesRL(a) = 1;
                NodoRadialLink(nRL,a) = Chain_Scheme(b,indice+2); % Ogni colonna riporta i nodi di un array
                nRL = nRL+1;
            elseif cell2mat(Chain_Scheme(b,indice)) == 23 % PreConv Link
                yesPCL(a) = 1;
                NodoPreConvLink(nPCL,a) = Chain_Scheme(b,indice+2); % Ogni colonna riporta i nodi di un array
                nPCL = nPCL+1;
            elseif cell2mat(Chain_Scheme(b,indice)) == 24 % PreConv Link HR
                yesPCLHR(a) = 1;
                NodoPreConvLinkHR(nPCLHR,a) = Chain_Scheme(b,indice+2); % Ogni colonna riporta i nodi di un array
                nPCLHR = nPCLHR+1;     
            elseif cell2mat(Chain_Scheme(b,indice)) == 2 % Piezo Link
                yesPL(a) = 1;
                NodoPiezoLink(nPL,a) = Chain_Scheme(b,indice+2); % Ogni colonna riporta i nodi di un array
                nPL = nPL+1;
            elseif cell2mat(Chain_Scheme(b,indice)) == 26 % Klino Link
                yesKL(a) = 1;
                NodoKlinoLink(nKL,a) = Chain_Scheme(b,indice+2); % Ogni colonna riporta i nodi di un array
                nKL = nKL+1;
            elseif cell2mat(Chain_Scheme(b,indice)) == 44 % Klino Link HR
                yesKLHR(a) = 1;
                NodoKlinoLinkHR(nKLHR,a) = Chain_Scheme(b,indice+2); % Ogni colonna riporta i nodi di un array
                nKLHR = nKLHR+1;
            elseif cell2mat(Chain_Scheme(b,indice)) == 27 % Rain Link
                yesRaL(a) = 1;
                NodoRainLink(nRaL,a) = Chain_Scheme(b,indice+2); % Ogni colonna riporta i nodi di un array
                nRaL = nRaL+1;
            elseif cell2mat(Chain_Scheme(b,indice)) == 15 % Load Link
                yesLL(a) = 1;
                NodoLoadLink(nLL,a) = Chain_Scheme(b,indice+2); % Ogni colonna riporta i nodi di un array
                nLL = nLL+1;
            elseif cell2mat(Chain_Scheme(b,indice)) == 21 % Pressure Link
                yesPrL(a) = 1;
                NodoPressureLink(nPrL,a) = Chain_Scheme(b,indice+2); % Ogni colonna riporta i nodi di un array
                nPrL = nPrL+1;
            elseif cell2mat(Chain_Scheme(b,indice)) == 16 % Extensometer Link
                yesEL(a) = 1;
                NodoExtensometerLink(nEL,a) = Chain_Scheme(b,indice+2); % Ogni colonna riporta i nodi di un array
                nEL = nEL+1;
            elseif cell2mat(Chain_Scheme(b,indice)) == 19 % 3D Extensometer Link
                yes3DEL(a) = 1;
                Nodo3DExtensometerLink(n3DEL,a) = Chain_Scheme(b,indice+2); % Ogni colonna riporta i nodi di un array
                n3DEL = n3DEL+1;
            elseif cell2mat(Chain_Scheme(b,indice)) == 22 % Wire Extensometer Link
                yesWEL(a) = 1;
                NodoWireExtensometerLink(nWEL,a) = Chain_Scheme(b,indice+2); % Ogni colonna riporta i nodi di un array
                nWEL = nWEL+1;
            elseif cell2mat(Chain_Scheme(b,indice)) == 25 % Multi Point Borehole Extensometer Link
                yesMPBEL(a) = 1;
                NodoMultiPointExtensometerLink(nMPBEL,a) = Chain_Scheme(b,indice+2); % Ogni colonna riporta i nodi di un array
                nMPBEL = nMPBEL+1;
            elseif cell2mat(Chain_Scheme(b,indice)) == 36 % Crack Link
                yesCrL(a) = 1;
                NodoCrackLink(nCrL,a) = Chain_Scheme(b,indice+2); % Ogni colonna riporta i nodi di un array
                nCrL = nCrL+1;
            elseif cell2mat(Chain_Scheme(b,indice)) == 37 % 3D Crack Link
                yes3DCrL(a) = 1;
                Nodo3DCrackLink(n3DCrL,a) = Chain_Scheme(b,indice+2); % Ogni colonna riporta i nodi di un array
                n3DCrL = n3DCrL+1;
            end
        end
        indice = indice+3;
        rTL(a) = nTL-1;
        rTLHR(a) = nTLHR-1;
        rTLH(a) = nTLH-1;
        rTLHRH(a) = nTLHRH-1;
        rIPL(a) = nIPL-1;
        rIPLHR(a) = nIPLHR-1;
        rTuL(a) = nTuL-1;
        rRL(a) = nRL-1;
        rPCL(a) = nPCL-1;
        rPCLHR(a) = nPCLHR-1;
        rKL(a) = nKL-1;
        rKLHR(a) = nKLHR-1;
        rRaL(a) = nRaL-1;
        rPL(a) = nPL-1;
        rPrL(a) = nPrL-1;
        rCrL(a) = nCrL-1;
        r3DCrL(a) = n3DCrL-1;
        rEL(a) = nEL-1;
        r3DEL(a) = n3DEL-1;
        rWEL(a) = nWEL-1;
        rMPBEL(a) = nMPBEL-1;
    end
    
    try
    % --- Analizzo i singoli nodi ---
    %% Tilt Link V
    if isempty(find(yesTL)) == 1 % Non ho Tilt Link V
        text = 'Tilt Link V have not been analyzed during the execution of soglie function';
        fprintf(fileID,fmt,text);
        Num_Allarmi_TL = 0;
    else
        TL = cumsum(rTL);
        Alert_TL = zeros(1,TL(end)); % Livello di Allerta
        Date_Alert_TL = zeros(1,TL(end)); % Data di Allerta
        Node_Alert_TL = zeros(1,TL(end)); % Numero di nodo in Allerta
        ID_Alert_TL = cell(1,TL(end)); % ID centralina - ID catena in Allerta
        index = 1;
        prog = 1;
        for n = 1:col % Ripeto per ogni Array
            DatiElab = cell(1);
            Date = zeros(1);
            if yesTL(n) == 1
                date_rif = now-15; % 15 giorni
                for nn = 1:rTL(n) % Ripeto per ogni nodo
                    comando = ['select EventDate, EventTime from ElabDataView where EventDate >= ''' ...
                        datestr(date_rif,'yyyy-mm-dd') ''' and  ToolNameID = ''' char(chainID(n,4))...
                        ''' and UnitName = ''' char(chainID(n,2)) ''' and NodeNum = ''' num2str(cell2mat(NodoTiltLink(nn,n))) ''' '];
                    curs = exec(conn,comando);
                    curs = fetch(curs);
                    DateElab = curs.Data;
                    % Modifico il formato di data e ora in DATini.
                    [rD,cD] = size(DateElab);
                    if rD ~= 1 && cD ~= 1
                        T = [cell2mat(DateElab(:,1)) repmat(' ', [rD,1]) cell2mat(DateElab(:,2))];
                        if nn == 1
                            Date(1:rD,n) = datenum(T); % scrivo la matrice date usando il primo nodo
                        end
                        comando = ['select XShift, YShift from ElabDataView where EventDate >= ''' ...
                            datestr(date_rif,'yyyy-mm-dd') ''' and  ToolNameID = ''' char(chainID(n,4))...
                            ''' and UnitName = ''' char(chainID(n,2)) ''' and NodeNum = ''' num2str(cell2mat(NodoTiltLink(nn,n))) ''' '];
                        curs = exec(conn,comando);
                        curs = fetch(curs);
                        Control = curs.Data;
                        [rCD,~] = size(Control); % Dati del nodo N dell'Array X
                        [rDE,~] = size(DatiElab);
                        if rCD ~= rDE
                            if rCD > rDE
                                DatiElab(1:rCD,index:index+1) = Control;
                                RIF = rCD;
                            elseif rCD < rDE
                                DatiElab(1:rCD,index:index+1) = Control;
                                DatiElab(rCD+1:rDE,index:index+1) = Control(end,:);
                                RIF = rDE;
                            end
                        else
                            DatiElab(:,index:index+1) = Control; % Tutti i dati dei sensori dell'Array n
                            RIF = rDE;
                        end
                        % Guardo le soglie
                        [rCheck,cCheck] = size(DatiElab);
                        if rCheck > 1 && cCheck > 1
                            % Da Ieri
                            index1 = find(datenum(Date(:,n))>(now-1));
                            [rID,~] = size(index1);
                            if isempty(index1) == 0 && rID ~= 1 % non posso fare la diff
                                Incrementi_1gg = sqrt((diff(cell2mat(DatiElab(index1(1):end,index))))...
                                    .^2+(diff(cell2mat(DatiElab(index1(1):end,index+1)))).^2);
                                Date_1gg(1:RIF-index1(1),n) = Date(index1(2):index1(end),n);
                                % 15 gg
                                Incrementi_15gg = sqrt((diff(cell2mat(DatiElab(:,index)))).^2+(diff(cell2mat(DatiElab(:,index+1)))).^2);
                                ST15 = std(Incrementi_15gg(1:index1(1),:)); % 1 Deviazione standard per i 15 giorni
                                MAX15 = max(Incrementi_15gg(1:index1(1),:));
                                % 7 gg
                                index7 = find(datenum(Date(:,n))>(now-7));
                                Incrementi_7gg = sqrt((diff(cell2mat(DatiElab(index7(1):index1(1),index)))).^2+(diff(cell2mat(DatiElab(index7(1):index1(1),index+1)))).^2);
                                ST7 = 3*std(Incrementi_7gg); % 3 Deviazioni standard per i 7 giorni
                                MAX7 = max(Incrementi_7gg);
                                % 3 gg
                                index3 = find(datenum(Date(:,n))>(now-3));
                                Incrementi_3gg = sqrt((diff(cell2mat(DatiElab(index3(1):index1(1),index)))).^2+(diff(cell2mat(DatiElab(index3(1):index1(1),index+1)))).^2);
                                ST3 = 5*std(Incrementi_3gg); % 5 Deviazioni standard per i 3 giorni
                                MAX3 = max(Incrementi_3gg);
                                [rI,cI] = size(Incrementi_1gg); % Dati per quel nodo
                                soglia3 = zeros(rI,cI);
                                soglia7 = zeros(rI,cI);
                                soglia15 = zeros(rI,cI);
                                for cc = 1:cI
                                    for s = 1:rI
                                        if Incrementi_1gg(s,cc) > ST15+MAX15
                                            soglia15(s,cc) = 1;
                                        end
                                        if Incrementi_1gg(s,cc) > ST7+MAX7
                                            soglia7(s,cc) = 1;
                                        end
                                        if Incrementi_1gg(s,cc) > ST3+MAX3
                                            soglia3(s,cc) = 1;
                                        end
                                        if soglia3(s,cc) == 1 && soglia7(s,cc) == 1 && soglia15(s,cc) == 1
                                            Alert_TL(s,prog) = 3; % Allerta del nodo di Livello 3
                                            Date_Alert_TL(s,prog) = Date_1gg(s,n);
                                            Node_Alert_TL(s,prog) = cell2mat(NodoTiltLink(nn,n));
                                            ID_Alert_TL(1,prog) = cellstr([char(chainID(n,2)) '-' char(chainID(n,4))]);
                                        elseif soglia3(s,cc) == 1 && soglia7(s,cc) == 1 || soglia3(s,cc) == 1 && soglia15(s,cc) == 1 || soglia15(s,cc) == 1 && soglia7(s,cc) == 1
                                            Alert_TL(s,prog) = 2; % Allerta del nodo di Livello 2
                                            Date_Alert_TL(s,prog) = Date_1gg(s,n);
                                            Node_Alert_TL(s,prog) = cell2mat(NodoTiltLink(nn,n));
                                            ID_Alert_TL(1,prog) = cellstr([char(chainID(n,2)) '-' char(chainID(n,4))]);
                                        elseif soglia3(s,cc) == 1 || soglia7(s,cc) == 1 || soglia15(s,cc) == 1
                                            Alert_TL(s,prog) = 1; % Allerta del nodo di Livello 1
                                            Date_Alert_TL(s,prog) = Date_1gg(s,n);
                                            Node_Alert_TL(s,prog) = cell2mat(NodoTiltLink(nn,n));
                                            ID_Alert_TL(1,prog) = cellstr([char(chainID(n,2)) '-' char(chainID(n,4))]);
                                        end
                                    end
                                end
                            end
                        end
                    end
                    index = index+2;
                    prog = prog+1;
                end
                text = ['Data of ' char(chainID(n,2)) '-' char(chainID(n,4)) ' Tilt Link V have been analyzed'];
                fprintf(fileID,fmt,text);
                index = 1;
            end
        end
        [num_TL,~] = size(rTL);
        ini = 1;
        fin = cumsum(rTL);
        Num_Allarmi_TL = zeros(1,num_TL);
        for AL = 1:num_TL
            if ini > fin(AL) % si va a quello dopo
            else
                Livello = max(max(Alert_TL(:,ini:fin(AL))));
                if isempty(Livello) == 1
                    Livello = 0;
                end
                Num_Allarmi_TL(1,AL) = Livello;
                ini = fin(AL)+1;
            end
        end
    end
    
    %% Tilt Link HR V
    if isempty(find(yesTLHR)) == 1 % Non ho Tilt Link HR V
        text = 'Tilt Link HR V have not been analyzed during the execution of soglie function';
        fprintf(fileID,fmt,text);
        Num_Allarmi_TLHR = 0;
    else
        clear Date_1gg
        TLHR = cumsum(rTLHR);
        Alert_TLHR = zeros(1,TLHR(end)); % Livello di Allerta
        Date_Alert_TLHR = zeros(1,TLHR(end)); % Data di Allerta
        Node_Alert_TLHR = zeros(1,TLHR(end)); % Numero di nodo in Allerta
        ID_Alert_TLHR = cell(1,TLHR(end)); % ID centralina - ID catena in Allerta
        index = 1;
        prog = 1;
        for n = 1:col % Ripeto per ogni Array
            DatiElab = cell(1);
            Date = zeros(1);
            if yesTLHR(n) == 1
                date_rif = now-15; % 15 giorni
                for nn = 1:rTLHR(n) % Ripeto per ogni nodo
                    comando = ['select EventDate, EventTime from ElabDataView where EventDate >= ''' ...
                        datestr(date_rif,'yyyy-mm-dd') ''' and  ToolNameID = ''' char(chainID(n,4))...
                        ''' and UnitName = ''' char(chainID(n,2)) ''' and NodeNum = ''' num2str(cell2mat(NodoTiltLinkHR(nn,n))) ''' '];
                    curs = exec(conn,comando);
                    curs = fetch(curs);
                    DateElab = curs.Data;
                    % Modifico il formato di data e ora in DATini.
                    [rD,cD] = size(DateElab);
                    if rD ~= 1 && cD ~= 1
                        T = [cell2mat(DateElab(:,1)) repmat(' ', [rD,1]) cell2mat(DateElab(:,2))];
                        if nn == 1
                            Date(1:rD,n) = datenum(T); % scrivo lamatrice date usando il primo nodo
                        end
                        comando = ['select XShift, YShift from ElabDataView where EventDate >= ''' ...
                            datestr(date_rif,'yyyy-mm-dd') ''' and  ToolNameID = ''' char(chainID(n,4))...
                            ''' and UnitName = ''' char(chainID(n,2)) ''' and NodeNum = ''' num2str(cell2mat(NodoTiltLinkHR(nn,n))) ''' '];
                        curs = exec(conn,comando);
                        curs = fetch(curs);
                        Control = curs.Data;
                        [rCD,~] = size(Control);
                        [rDE,~] = size(DatiElab);
                        if rCD ~= rDE
                            if rCD > rDE
                                DatiElab(1:rCD,index:index+1) = Control;
                                RIF = rCD;
                            elseif rCD < rDE
                                DatiElab(1:rCD,index:index+1) = Control;
                                DatiElab(rCD+1:rDE,index:index+1) = Control(end,:);
                                RIF = rDE;
                            end
                        else
                            DatiElab(:,index:index+1) = Control; % Tutti i dati dei sensori dell'Array n
                            RIF = rDE;
                        end
                        % Guardo le soglie
                        [rCheck,cCheck] = size(DatiElab);
                        if rCheck > 1 && cCheck > 1
                            % Da Ieri
                            index1 = find(datenum(Date(:,n))>(now-1));
                            [rID,~] = size(index1);
                            if isempty(index1) == 0 && rID ~= 1 % non posso fare la diff
                                Incrementi_1gg = sqrt((diff(cell2mat(DatiElab(index1(1):end,index))))...
                                    .^2+(diff(cell2mat(DatiElab(index1(1):end,index+1)))).^2);
                                Date_1gg(1:RIF-index1(1),n) = Date(index1(2):index1(end),n);
                                % 15 gg
                                Incrementi_15gg = sqrt((diff(cell2mat(DatiElab(:,index)))).^2+(diff(cell2mat(DatiElab(:,index+1)))).^2);
                                ST15 = std(Incrementi_15gg(1:index1(1),:)); % 1 Deviazione standard per i 15 giorni
                                MAX15 = max(Incrementi_15gg(1:index1(1),:));
                                % 7 gg
                                index7 = find(datenum(Date(:,n))>(now-7));
                                Incrementi_7gg = sqrt((diff(cell2mat(DatiElab(index7(1):index1(1),index)))).^2+(diff(cell2mat(DatiElab(index7(1):index1(1),index+1)))).^2);
                                ST7 = 3*std(Incrementi_7gg); % 3 Deviazioni standard per i 7 giorni
                                MAX7 = max(Incrementi_7gg);
                                % 3 gg
                                index3 = find(datenum(Date(:,n))>(now-3));
                                Incrementi_3gg = sqrt((diff(cell2mat(DatiElab(index3(1):index1(1),index)))).^2+(diff(cell2mat(DatiElab(index3(1):index1(1),index+1)))).^2);
                                ST3 = 5*std(Incrementi_3gg); % 5 Deviazioni standard per i 3 giorni
                                MAX3 = max(Incrementi_3gg);
                                [rI,cI] = size(Incrementi_1gg); % Dati per quel nodo
                                soglia3 = zeros(rI,cI);
                                soglia7 = zeros(rI,cI);
                                soglia15 = zeros(rI,cI);
                                for cc = 1:cI
                                    for s = 1:rI
                                        if Incrementi_1gg(s,cc) > ST15+MAX15
                                            soglia15(s,cc) = 1;
                                        end
                                        if Incrementi_1gg(s,cc) > ST7+MAX7
                                            soglia7(s,cc) = 1;
                                        end
                                        if Incrementi_1gg(s,cc) > ST3+MAX3
                                            soglia3(s,cc) = 1;
                                        end
                                        if soglia3(s,cc) == 1 && soglia7(s,cc) == 1 && soglia15(s,cc) == 1
                                            Alert_TLHR(s,prog) = 3; % Allerta del nodo di Livello 3
                                            Date_Alert_TLHR(s,prog) = Date_1gg(s,n);
                                            Node_Alert_TLHR(s,prog) = cell2mat(NodoTiltLinkHR(nn,n));
                                            ID_Alert_TLHR(1,prog) = cellstr([char(chainID(n,2)) '-' char(chainID(n,4))]);
                                        elseif soglia3(s,cc) == 1 && soglia7(s,cc) == 1 || soglia3(s,cc) == 1 && soglia15(s,cc) == 1 || soglia15(s,cc) == 1 && soglia7(s,cc) == 1
                                            Alert_TLHR(s,prog) = 2; % Allerta del nodo di Livello 2
                                            Date_Alert_TLHR(s,prog) = Date_1gg(s,n);
                                            Node_Alert_TLHR(s,prog) = cell2mat(NodoTiltLinkHR(nn,n));
                                            ID_Alert_TLHR(1,prog) = cellstr([char(chainID(n,2)) '-' char(chainID(n,4))]);
                                        elseif soglia3(s,cc) == 1 || soglia7(s,cc) == 1 || soglia15(s,cc) == 1
                                            Alert_TLHR(s,prog) = 1; % Allerta del nodo di Livello 1
                                            Date_Alert_TLHR(s,prog) = Date_1gg(s,n);
                                            Node_Alert_TLHR(s,prog) = cell2mat(NodoTiltLinkHR(nn,n));
                                            ID_Alert_TLHR(1,prog) = cellstr([char(chainID(n,2)) '-' char(chainID(n,4))]);
                                        end
                                    end
                                end
                            end
                        end
                    end
                    index = index+2;
                    prog = prog+1;
                end
                text = ['Data of ' char(chainID(n,2)) '-' char(chainID(n,4)) ' Tilt Link HR V have been analyzed'];
                fprintf(fileID,fmt,text);
                index = 1;
            end
        end
        [num_TLHR,~] = size(rTLHR);
        ini = 1;
        fin = cumsum(rTLHR);
        Num_Allarmi_TLHR = zeros(1,num_TLHR);
        for AL = 1:num_TLHR
            if ini > fin(AL) % si va a quello dopo
            else
                Livello = max(max(Alert_TLHR(:,ini:fin(AL))));
                if isempty(Livello) == 1
                    Livello = 0;
                end
                Num_Allarmi_TLHR(1,AL) = Livello;
                ini = fin(AL)+1;
            end
        end
    end
    
    %% In Place Link
    if isempty(find(yesIPL)) == 1 % Non ho In Place Link
        text = 'In Place Link have not been analyzed during the execution of soglie function';
        fprintf(fileID,fmt,text);
        Num_Allarmi_IPL = 0;
    else
        IPL = cumsum(rIPL);
        Alert_IPL = zeros(1,IPL(end)); % Livello di Allerta
        Date_Alert_IPL = zeros(1,IPL(end)); % Data di Allerta
        Node_Alert_IPL = zeros(1,IPL(end)); % Numero di nodo in Allerta
        ID_Alert_IPL = cell(1,IPL(end)); % ID centralina - ID catena in Allerta
        index = 1;
        prog = 1;
        for n = 1:col % Ripeto per ogni Array
            DatiElab = cell(1);
            Date = zeros(1);
            if yesIPL(n) == 1
                date_rif = now-15; % 15 giorni
                for nn = 1:rIPL(n) % Ripeto per ogni nodo
                    comando = ['select EventDate, EventTime from ElabDataView where EventDate >= ''' ...
                        datestr(date_rif,'yyyy-mm-dd') ''' and  ToolNameID = ''' char(chainID(n,4))...
                        ''' and UnitName = ''' char(chainID(n,2)) ''' and NodeNum = ''' ...
                        num2str(cell2mat(NodoInPlaceLink(nn,n))) ''' '];
                    curs = exec(conn,comando);
                    curs = fetch(curs);
                    DateElab = curs.Data;
                    % Modifico il formato di data e ora in DATini.
                    [rD,cD] = size(DateElab);
                    if rD ~= 1 && cD ~= 1
                        T = [cell2mat(DateElab(:,1)) repmat(' ', [rD,1]) cell2mat(DateElab(:,2))];
                        if nn == 1
                            Date(1:rD,n) = datenum(T); % scrivo la matrice date usando il primo nodo
                        end
                        comando = ['select XShift, YShift from ElabDataView where EventDate >= ''' ...
                            datestr(date_rif,'yyyy-mm-dd') ''' and  ToolNameID = ''' char(chainID(n,4))...
                            ''' and UnitName = ''' char(chainID(n,2)) ''' and NodeNum = ''' ...
                            num2str(cell2mat(NodoInPlaceLink(nn,n))) ''' '];
                        curs = exec(conn,comando);
                        curs = fetch(curs);
                        Control = curs.Data;
                        [rCD,~] = size(Control); % Dati del nodo N dell'Array X
                        [rDE,~] = size(DatiElab);
                        if rCD ~= rDE
                            if rCD > rDE
                                DatiElab(1:rCD,index:index+1) = Control;
                                RIF = rCD;
                            elseif rCD < rDE
                                DatiElab(1:rCD,index:index+1) = Control;
                                DatiElab(rCD+1:rDE,index:index+1) = Control(end,:);
                                RIF = rDE;
                            end
                        else
                            DatiElab(:,index:index+1) = Control; % Tutti i dati dei sensori dell'Array n
                            RIF = rDE;
                        end
                        % Guardo le soglie
                        [rCheck,cCheck] = size(DatiElab);
                        if rCheck > 1 && cCheck > 1
                            % Da Ieri
                            index1 = find(datenum(Date(:,n))>(now-1));
                            [rID,~] = size(index1);
                            if isempty(index1) == 0 && rID ~= 1 % non posso fare la diff
                                Incrementi_1gg = sqrt((diff(cell2mat(DatiElab(index1(1):end,index))))...
                                    .^2+(diff(cell2mat(DatiElab(index1(1):end,index+1)))).^2);
                                Date_1gg(1:RIF-index1(1),n) = Date(index1(2):index1(end),n);
                                % 15 gg
                                Incrementi_15gg = sqrt((diff(cell2mat(DatiElab(:,index)))).^2+(diff(cell2mat(DatiElab(:,index+1)))).^2);
                                ST15 = std(Incrementi_15gg(1:index1(1),:)); % 1 Deviazione standard per i 15 giorni
                                MAX15 = max(Incrementi_15gg(1:index1(1),:));
                                % 7 gg
                                index7 = find(datenum(Date(:,n))>(now-7));
                                Incrementi_7gg = sqrt((diff(cell2mat(DatiElab(index7(1):index1(1),index)))).^2+(diff(cell2mat(DatiElab(index7(1):index1(1),index+1)))).^2);
                                ST7 = 3*std(Incrementi_7gg); % 3 Deviazioni standard per i 7 giorni
                                MAX7 = max(Incrementi_7gg);
                                % 3 gg
                                index3 = find(datenum(Date(:,n))>(now-3));
                                Incrementi_3gg = sqrt((diff(cell2mat(DatiElab(index3(1):index1(1),index)))).^2+(diff(cell2mat(DatiElab(index3(1):index1(1),index+1)))).^2);
                                ST3 = 5*std(Incrementi_3gg); % 5 Deviazioni standard per i 3 giorni
                                MAX3 = max(Incrementi_3gg);
                                [rI,cI] = size(Incrementi_1gg); % Dati per quel nodo
                                soglia3 = zeros(rI,cI);
                                soglia7 = zeros(rI,cI);
                                soglia15 = zeros(rI,cI);
                                for cc = 1:cI
                                    for s = 1:rI
                                        if Incrementi_1gg(s,cc) > ST15+MAX15
                                            soglia15(s,cc) = 1;
                                        end
                                        if Incrementi_1gg(s,cc) > ST7+MAX7
                                            soglia7(s,cc) = 1;
                                        end
                                        if Incrementi_1gg(s,cc) > ST3+MAX3
                                            soglia3(s,cc) = 1;
                                        end
                                        if soglia3(s,cc) == 1 && soglia7(s,cc) == 1 && soglia15(s,cc) == 1
                                            Alert_IPL(s,prog) = 3; % Allerta del nodo di Livello 3
                                            Date_Alert_IPL(s,prog) = Date_1gg(s,n);
                                            Node_Alert_IPL(s,prog) = cell2mat(NodoInPlaceLink(nn,n));
                                            ID_Alert_IPL(1,prog) = cellstr([char(chainID(n,2)) '-' char(chainID(n,4))]);
                                        elseif soglia3(s,cc) == 1 && soglia7(s,cc) == 1 || soglia3(s,cc) == 1 && soglia15(s,cc) == 1 || soglia15(s,cc) == 1 && soglia7(s,cc) == 1
                                            Alert_IPL(s,prog) = 2; % Allerta del nodo di Livello 2
                                            Date_Alert_IPL(s,prog) = Date_1gg(s,n);
                                            Node_Alert_IPL(s,prog) = cell2mat(NodoInPlaceLink(nn,n));
                                            ID_Alert_IPL(1,prog) = cellstr([char(chainID(n,2)) '-' char(chainID(n,4))]);
                                        elseif soglia3(s,cc) == 1 || soglia7(s,cc) == 1 || soglia15(s,cc) == 1
                                            Alert_IPL(s,prog) = 1; % Allerta del nodo di Livello 1
                                            Date_Alert_IPL(s,prog) = Date_1gg(s,n);
                                            Node_Alert_IPL(s,prog) = cell2mat(NodoInPlaceLink(nn,n));
                                            ID_Alert_IPL(1,prog) = cellstr([char(chainID(n,2)) '-' char(chainID(n,4))]);
                                        end
                                    end
                                end
                            end
                        end
                    end
                    index = index+2;
                    prog = prog+1;
                end
                text = ['Data of ' char(chainID(n,2)) '-' char(chainID(n,4)) ' In Place Link have been analyzed'];
                fprintf(fileID,fmt,text);
                index = 1;
            end
        end
        [num_IPL,~] = size(rIPL);
        ini = 1;
        fin = cumsum(rIPL);
        Num_Allarmi_IPL = zeros(1,num_IPL);
        for AL = 1:num_IPL
            if ini > fin(AL) % si va a quello dopo
            else
                Livello = max(max(Alert_IPL(:,ini:fin(AL))));
                if isempty(Livello) == 1
                    Livello = 0;
                end
                Num_Allarmi_IPL(1,AL) = Livello;
                ini = fin(AL)+1;
            end
        end
    end
    
    %% In Place Link HR
    if isempty(find(yesIPLHR)) == 1 % Non ho In Place Link HR
        text = 'In Place Link HR have not been analyzed during the execution of soglie function';
        fprintf(fileID,fmt,text);
        Num_Allarmi_IPLHR = 0;
    else
        clear Date_1gg
        IPLHR = cumsum(rIPLHR);
        Alert_IPLHR = zeros(1,IPLHR(end)); % Livello di Allerta
        Date_Alert_IPLHR = zeros(1,IPLHR(end)); % Data di Allerta
        Node_Alert_IPLHR = zeros(1,IPLHR(end)); % Numero di nodo in Allerta
        ID_Alert_IPLHR = cell(1,IPLHR(end)); % ID centralina - ID catena in Allerta
        index = 1;
        prog = 1;
        for n = 1:col % Ripeto per ogni Array
            DatiElab = cell(1);
            Date = zeros(1);
            if yesIPLHR(n) == 1
                date_rif = now-15; % 15 giorni
                for nn = 1:rIPLHR(n) % Ripeto per ogni nodo
                    comando = ['select EventDate, EventTime from ElabDataView where EventDate >= ''' ...
                        datestr(date_rif,'yyyy-mm-dd') ''' and  ToolNameID = ''' char(chainID(n,4))...
                        ''' and UnitName = ''' char(chainID(n,2)) ''' and NodeNum = ''' ...
                        num2str(cell2mat(NodoInPlaceLinkHR(nn,n))) ''' '];
                    curs = exec(conn,comando);
                    curs = fetch(curs);
                    DateElab = curs.Data;
                    % Modifico il formato di data e ora in DATini.
                    [rD,cD] = size(DateElab);
                    if rD ~= 1 && cD ~= 1
                        T = [cell2mat(DateElab(:,1)) repmat(' ', [rD,1]) cell2mat(DateElab(:,2))];
                        if nn == 1
                            Date(1:rD,n) = datenum(T); % scrivo lamatrice date usando il primo nodo
                        end
                        comando = ['select XShift, YShift from ElabDataView where EventDate >= ''' ...
                            datestr(date_rif,'yyyy-mm-dd') ''' and  ToolNameID = ''' char(chainID(n,4))...
                            ''' and UnitName = ''' char(chainID(n,2)) ''' and NodeNum = ''' ...
                            num2str(cell2mat(NodoInPlaceLinkHR(nn,n))) ''' '];
                        curs = exec(conn,comando);
                        curs = fetch(curs);
                        Control = curs.Data;
                        [rCD,~] = size(Control);
                        [rDE,~] = size(DatiElab);
                        if rCD ~= rDE
                            if rCD > rDE
                                DatiElab(1:rCD,index:index+1) = Control;
                                RIF = rCD;
                            elseif rCD < rDE
                                DatiElab(1:rCD,index:index+1) = Control;
                                DatiElab(rCD+1:rDE,index:index+1) = Control(end,:);
                                RIF = rDE;
                            end
                        else
                            DatiElab(:,index:index+1) = Control; % Tutti i dati dei sensori dell'Array n
                            RIF = rDE;
                        end
                        % Guardo le soglie
                        [rCheck,cCheck] = size(DatiElab);
                        if rCheck > 1 && cCheck > 1
                            % Da Ieri
                            index1 = find(datenum(Date(:,n))>(now-1));
                            [rID,~] = size(index1);
                            if isempty(index1) == 0 && rID ~= 1 % non posso fare la diff
                                Incrementi_1gg = sqrt((diff(cell2mat(DatiElab(index1(1):end,index))))...
                                    .^2+(diff(cell2mat(DatiElab(index1(1):end,index+1)))).^2);
                                Date_1gg(1:RIF-index1(1),n) = Date(index1(2):index1(end),n);
                                % 15 gg
                                Incrementi_15gg = sqrt((diff(cell2mat(DatiElab(:,index)))).^2+(diff(cell2mat(DatiElab(:,index+1)))).^2);
                                ST15 = std(Incrementi_15gg(1:index1(1),:)); % 1 Deviazione standard per i 15 giorni
                                MAX15 = max(Incrementi_15gg(1:index1(1),:));
                                % 7 gg
                                index7 = find(datenum(Date(:,n))>(now-7));
                                Incrementi_7gg = sqrt((diff(cell2mat(DatiElab(index7(1):index1(1),index)))).^2+(diff(cell2mat(DatiElab(index7(1):index1(1),index+1)))).^2);
                                ST7 = 3*std(Incrementi_7gg); % 3 Deviazioni standard per i 7 giorni
                                MAX7 = max(Incrementi_7gg);
                                % 3 gg
                                index3 = find(datenum(Date(:,n))>(now-3));
                                Incrementi_3gg = sqrt((diff(cell2mat(DatiElab(index3(1):index1(1),index)))).^2+(diff(cell2mat(DatiElab(index3(1):index1(1),index+1)))).^2);
                                ST3 = 5*std(Incrementi_3gg); % 5 Deviazioni standard per i 3 giorni
                                MAX3 = max(Incrementi_3gg);
                                [rI,cI] = size(Incrementi_1gg); % Dati per quel nodo
                                soglia3 = zeros(rI,cI);
                                soglia7 = zeros(rI,cI);
                                soglia15 = zeros(rI,cI);
                                for cc = 1:cI
                                    for s = 1:rI
                                        if Incrementi_1gg(s,cc) > ST15+MAX15
                                            soglia15(s,cc) = 1;
                                        end
                                        if Incrementi_1gg(s,cc) > ST7+MAX7
                                            soglia7(s,cc) = 1;
                                        end
                                        if Incrementi_1gg(s,cc) > ST3+MAX3
                                            soglia3(s,cc) = 1;
                                        end
                                        if soglia3(s,cc) == 1 && soglia7(s,cc) == 1 && soglia15(s,cc) == 1
                                            Alert_IPLHR(s,prog) = 3; % Allerta del nodo di Livello 3
                                            Date_Alert_IPLHR(s,prog) = Date_1gg(s,n);
                                            Node_Alert_IPLHR(s,prog) = cell2mat(NodoInPlaceLinkHR(nn,n));
                                            ID_Alert_IPLHR(1,prog) = cellstr([char(chainID(n,2)) '-' char(chainID(n,4))]);
                                        elseif soglia3(s,cc) == 1 && soglia7(s,cc) == 1 || soglia3(s,cc) == 1 && soglia15(s,cc) == 1 || soglia15(s,cc) == 1 && soglia7(s,cc) == 1
                                            Alert_IPLHR(s,prog) = 2; % Allerta del nodo di Livello 2
                                            Date_Alert_IPLHR(s,prog) = Date_1gg(s,n);
                                            Node_Alert_IPLHR(s,prog) = cell2mat(NodoInPlaceLinkHR(nn,n));
                                            ID_Alert_IPLHR(1,prog) = cellstr([char(chainID(n,2)) '-' char(chainID(n,4))]);
                                        elseif soglia3(s,cc) == 1 || soglia7(s,cc) == 1 || soglia15(s,cc) == 1
                                            Alert_IPLHR(s,prog) = 1; % Allerta del nodo di Livello 1
                                            Date_Alert_IPLHR(s,prog) = Date_1gg(s,n);
                                            Node_Alert_IPLHR(s,prog) = cell2mat(NodoInPlaceLinkHR(nn,n));
                                            ID_Alert_IPLHR(1,prog) = cellstr([char(chainID(n,2)) '-' char(chainID(n,4))]);
                                        end
                                    end
                                end
                            end
                        end
                    end
                    index = index+2;
                    prog = prog+1;
                end
                text = ['Data of ' char(chainID(n,2)) '-' char(chainID(n,4)) ' In Place Link HR have been analyzed'];
                fprintf(fileID,fmt,text);
                index = 1;
            end
        end
        [num_IPLHR,~] = size(rIPLHR);
        ini = 1;
        fin = cumsum(rIPLHR);
        Num_Allarmi_IPLHR = zeros(1,num_IPLHR);
        for AL = 1:num_IPLHR
            if ini > fin(AL) % si va a quello dopo
            else
                Livello = max(max(Alert_IPLHR(:,ini:fin(AL))));
                if isempty(Livello) == 1
                    Livello = 0;
                end
                Num_Allarmi_IPLHR(1,AL) = Livello;
                ini = fin(AL)+1;
            end
        end
    end
    
    %% Tilt Link H
    if isempty(find(yesTLH)) == 1 % Non ho Tilt Link H
        text = 'Tilt Link H have not been analyzed during the execution of soglie function';
        fprintf(fileID,fmt,text);
        Num_Allarmi_TLH = 0;
    else
        clear Date_1gg
        TLH = cumsum(rTLH);
        Alert_TLH = zeros(1,TLH(end)); % Livello di Allerta
        Date_Alert_TLH = zeros(1,TLH(end)); % Data di Allerta
        Node_Alert_TLH = zeros(1,TLH(end)); % Numero di nodo in Allerta
        ID_Alert_TLH = cell(1,TLH(end)); % ID centralina - ID catena in Allerta
        index = 1;
        prog = 1;
        for n = 1:col % Ripeto per ogni Array
            DatiElab = cell(1);
            Date = zeros(1);
            if yesTLH(n) == 1
                date_rif = now-15; % 15 giorni
                for nn = 1:rTLH(n) % Ripeto per ogni nodo
                    comando = ['select EventDate, EventTime from ElabDataView where EventDate >= ''' ...
                        datestr(date_rif,'yyyy-mm-dd') ''' and  ToolNameID = ''' char(chainID(n,4))...
                        ''' and UnitName = ''' char(chainID(n,2)) ''' and NodeNum = ''' num2str(cell2mat(NodoTiltLinkH(nn,n))) ''' '];
                    curs = exec(conn,comando);
                    curs = fetch(curs);
                    DateElab = curs.Data;
                    % Modifico il formato di data e ora in DATini.
                    [rD,cD] = size(DateElab);
                    if rD ~= 1 && cD ~= 1
                        T = [cell2mat(DateElab(:,1)) repmat(' ', [rD,1]) cell2mat(DateElab(:,2))];
                        if nn == 1
                            Date(1:rD,n) = datenum(T); % scrivo lamatrice date usando il primo nodo
                        end
                        comando = ['select ZShift from ElabDataView where EventDate >= ''' ...
                            datestr(date_rif,'yyyy-mm-dd') ''' and  ToolNameID = ''' char(chainID(n,4))...
                            ''' and UnitName = ''' char(chainID(n,2)) ''' and NodeNum = ''' num2str(cell2mat(NodoTiltLinkH(nn,n))) ''' '];
                        curs = exec(conn,comando);
                        curs = fetch(curs);
                        Control = curs.Data;
                        [rCD,~] = size(Control);
                        [rDE,~] = size(DatiElab);
                        if rCD ~= rDE
                            if rCD > rDE
                                DatiElab(1:rCD,index) = Control;
                                RIF = rCD;
                            elseif rCD < rDE
                                DatiElab(1:rCD,index) = Control;
                                DatiElab(rCD+1:rDE,index) = Control(end,:);
                                RIF = rDE;
                            end
                        else
                            DatiElab(:,index) = Control; % Tutti i dati dei sensori dell'Array n
                            RIF = rDE;
                        end
                        % Guardo le soglie
                        [rCheck,cCheck] = size(DatiElab);
                        if rCheck > 1 && cCheck > 1
                            % Da Ieri
                            index1 = find(datenum(Date(:,n))>(now-1));
                            [rID,~] = size(index1);
                            if isempty(index1) == 0 && rID ~= 1 % non posso fare la diff
                                Incrementi_1gg = abs(diff(cell2mat(DatiElab(index1(1):end,index))));
                                Date_1gg(1:RIF-index1(1),n) = Date(index1(2):index1(end),n);
                                % 15 gg
                                Incrementi_15gg = abs(diff(cell2mat(DatiElab(:,index))));
                                ST15 = std(Incrementi_15gg(1:index1(1),:)); % 1 Deviazione standard per i 15 giorni
                                MAX15 = max(Incrementi_15gg(1:index1(1),:));
                                % 7 gg
                                index7 = find(datenum(Date(:,n))>(now-7));
                                Incrementi_7gg = abs(diff(cell2mat(DatiElab(index7(1):index1(1),index))));
                                ST7 = 3*std(Incrementi_7gg); % 3 Deviazioni standard per i 7 giorni
                                MAX7 = max(Incrementi_7gg);
                                % 3 gg
                                index3 = find(datenum(Date(:,n))>(now-3));
                                Incrementi_3gg = abs(diff(cell2mat(DatiElab(index3(1):index1(1),index))));
                                ST3 = 5*std(Incrementi_3gg); % 5 Deviazioni standard per i 3 giorni
                                MAX3 = max(Incrementi_3gg);
                                [rI,cI] = size(Incrementi_1gg); % Dati per quel nodo
                                soglia3 = zeros(rI,cI);
                                soglia7 = zeros(rI,cI);
                                soglia15 = zeros(rI,cI);
                                for cc = 1:cI
                                    for s = 1:rI
                                        if Incrementi_1gg(s,cc) > ST15+MAX15
                                            soglia15(s,cc) = 1;
                                        end
                                        if Incrementi_1gg(s,cc) > ST7+MAX7
                                            soglia7(s,cc) = 1;
                                        end
                                        if Incrementi_1gg(s,cc) > ST3+MAX3
                                            soglia3(s,cc) = 1;
                                        end
                                        if soglia3(s,cc) == 1 && soglia7(s,cc) == 1 && soglia15(s,cc) == 1
                                            Alert_TLH(s,prog) = 3; % Allerta del nodo di Livello 3
                                            Date_Alert_TLH(s,prog) = Date_1gg(s,n);
                                            Node_Alert_TLH(s,prog) = cell2mat(NodoTiltLinkH(nn,n));
                                            ID_Alert_TLH(1,prog) = cellstr([char(chainID(n,2)) '-' char(chainID(n,4))]);
                                        elseif soglia3(s,cc) == 1 && soglia7(s,cc) == 1 || soglia3(s,cc) == 1 && soglia15(s,cc) == 1 || soglia15(s,cc) == 1 && soglia7(s,cc) == 1
                                            Alert_TLH(s,prog) = 2; % Allerta del nodo di Livello 2
                                            Date_Alert_TLH(s,prog) = Date_1gg(s,n);
                                            Node_Alert_TLH(s,prog) = cell2mat(NodoTiltLinkH(nn,n));
                                            ID_Alert_TLH(1,prog) = cellstr([char(chainID(n,2)) '-' char(chainID(n,4))]);
                                        elseif soglia3(s,cc) == 1 || soglia7(s,cc) == 1 || soglia15(s,cc) == 1
                                            Alert_TLH(s,prog) = 1; % Allerta del nodo di Livello 1
                                            Date_Alert_TLH(s,prog) = Date_1gg(s,n);
                                            Node_Alert_TLH(s,prog) = cell2mat(NodoTiltLinkH(nn,n));
                                            ID_Alert_TLH(1,prog) = cellstr([char(chainID(n,2)) '-' char(chainID(n,4))]);
                                        end
                                    end
                                end
                            end
                        end
                    end
                    index = index+1;
                    prog = prog+1;
                end
                text = ['Data of ' char(chainID(n,2)) '-' char(chainID(n,4)) ' Tilt Link H have been analyzed'];
                fprintf(fileID,fmt,text);
                index = 1;
            end
        end
        [num_TLH,~] = size(rTLH);
        ini = 1;
        fin = cumsum(rTLH);
        Num_Allarmi_TLH = zeros(1,num_TLH);
        for AL = 1:num_TLH
            if ini > fin(AL) % si va a quello dopo
            else
                Livello = max(max(Alert_TLH(:,ini:fin(AL))));
                if isempty(Livello) == 1
                    Livello = 0;
                end
                Num_Allarmi_TLH(1,AL) = Livello;
                ini = fin(AL)+1;
            end
        end
    end
    
    %% Tilt Link HR H
    if isempty(find(yesTLHRH)) == 1 % Non ho Tilt Link HR H
        text = 'Tilt Link HR H have not been analyzed during the execution of soglie function';
        fprintf(fileID,fmt,text);
        Num_Allarmi_TLHRH = 0;
    else
        clear Date_1gg
        TLHRH = cumsum(rTLHRH);
        Alert_TLHRH = zeros(1,TLHRH(end)); % Livello di Allerta
        Date_Alert_TLHRH = zeros(1,TLHRH(end)); % Data di Allerta
        Node_Alert_TLHRH = zeros(1,TLHRH(end)); % Numero di nodo in Allerta
        ID_Alert_TLHRH = cell(1,TLHRH(end)); % ID centralina - ID catena in Allerta
        index = 1;
        prog = 1;
        for n = 1:col % Ripeto per ogni Array
            DatiElab = cell(1);
            Date = zeros(1);
            if yesTLHRH(n) == 1
                date_rif = now-15; % 15 giorni
                for nn = 1:rTLHRH(n) % Ripeto per ogni nodo
                    comando = ['select EventDate, EventTime from ElabDataView where EventDate >= ''' ...
                        datestr(date_rif,'yyyy-mm-dd') ''' and  ToolNameID = ''' char(chainID(n,4))...
                        ''' and UnitName = ''' char(chainID(n,2)) ''' and NodeNum = ''' num2str(cell2mat(NodoTiltLinkHRH(nn,n))) ''' '];
                    curs = exec(conn,comando);
                    curs = fetch(curs);
                    DateElab = curs.Data;
                    % Modifico il formato di data e ora in DATini.
                    [rD,cD] = size(DateElab);
                    if rD ~= 1 && cD ~= 1
                        T = [cell2mat(DateElab(:,1)) repmat(' ', [rD,1]) cell2mat(DateElab(:,2))];
                        if nn == 1
                            Date(1:rD,n) = datenum(T); % scrivo lamatrice date usando il primo nodo
                        end
                        comando = ['select ZShift from ElabDataView where EventDate >= ''' ...
                            datestr(date_rif,'yyyy-mm-dd') ''' and  ToolNameID = ''' char(chainID(n,4))...
                            ''' and UnitName = ''' char(chainID(n,2)) ''' and NodeNum = ''' num2str(cell2mat(NodoTiltLinkHRH(nn,n))) ''' '];
                        curs = exec(conn,comando);
                        curs = fetch(curs);
                        Control = curs.Data;
                        [rCD,~] = size(Control);
                        [rDE,~] = size(DatiElab);
                        if rCD ~= rDE
                            if rCD > rDE
                                DatiElab(1:rCD,index) = Control;
                                RIF = rCD;
                            elseif rCD < rDE
                                DatiElab(1:rCD,index) = Control;
                                DatiElab(rCD+1:rDE,index) = Control(end,:);
                                RIF = rDE;
                            end
                        else
                            DatiElab(:,index) = Control; % Tutti i dati dei sensori dell'Array n
                            RIF = rDE;
                        end
                        % Guardo le soglie
                        [rCheck,cCheck] = size(DatiElab);
                        if rCheck > 1 && cCheck > 1
                            % Da Ieri
                            index1 = find(datenum(Date(:,n))>(now-1));
                            [rID,~] = size(index1);
                            if isempty(index1) == 0 && rID ~= 1 % non posso fare la diff
                                Incrementi_1gg = abs(diff(cell2mat(DatiElab(index1(1):end,index))));
                                Date_1gg(1:RIF-index1(1),n) = Date(index1(2):index1(end),n);
                                % 15 gg
                                Incrementi_15gg = abs(diff(cell2mat(DatiElab(:,index))));
                                ST15 = std(Incrementi_15gg(1:index1(1),:)); % 1 Deviazione standard per i 15 giorni
                                MAX15 = max(Incrementi_15gg(1:index1(1),:));
                                % 7 gg
                                index7 = find(datenum(Date(:,n))>(now-7));
                                Incrementi_7gg = abs(diff(cell2mat(DatiElab(index7(1):index1(1),index))));
                                ST7 = 3*std(Incrementi_7gg); % 3 Deviazioni standard per i 7 giorni
                                MAX7 = max(Incrementi_7gg);
                                % 3 gg
                                index3 = find(datenum(Date(:,n))>(now-3));
                                Incrementi_3gg = abs(diff(cell2mat(DatiElab(index3(1):index1(1),index))));
                                ST3 = 5*std(Incrementi_3gg); % 5 Deviazioni standard per i 3 giorni
                                MAX3 = max(Incrementi_3gg);
                                [rI,cI] = size(Incrementi_1gg); % Dati per quel nodo
                                soglia3 = zeros(rI,cI);
                                soglia7 = zeros(rI,cI);
                                soglia15 = zeros(rI,cI);
                                for cc = 1:cI
                                    for s = 1:rI
                                        if Incrementi_1gg(s,cc) > ST15+MAX15
                                            soglia15(s,cc) = 1;
                                        end
                                        if Incrementi_1gg(s,cc) > ST7+MAX7
                                            soglia7(s,cc) = 1;
                                        end
                                        if Incrementi_1gg(s,cc) > ST3+MAX3
                                            soglia3(s,cc) = 1;
                                        end
                                        if soglia3(s,cc) == 1 && soglia7(s,cc) == 1 && soglia15(s,cc) == 1
                                            Alert_TLHRH(s,prog) = 3; % Allerta del nodo di Livello 3
                                            Date_Alert_TLHRH(s,prog) = Date_1gg(s,n);
                                            Node_Alert_TLHRH(s,prog) = cell2mat(NodoTiltLinkHRH(nn,n));
                                            ID_Alert_TLHRH(1,prog) = cellstr([char(chainID(n,2)) '-' char(chainID(n,4))]);
                                        elseif soglia3(s,cc) == 1 && soglia7(s,cc) == 1 || soglia3(s,cc) == 1 && soglia15(s,cc) == 1 || soglia15(s,cc) == 1 && soglia7(s,cc) == 1
                                            Alert_TLHRH(s,prog) = 2; % Allerta del nodo di Livello 2
                                            Date_Alert_TLHRH(s,prog) = Date_1gg(s,n);
                                            Node_Alert_TLHRH(s,prog) = cell2mat(NodoTiltLinkHRH(nn,n));
                                            ID_Alert_TLHRH(1,prog) = cellstr([char(chainID(n,2)) '-' char(chainID(n,4))]);
                                        elseif soglia3(s,cc) == 1 || soglia7(s,cc) == 1 || soglia15(s,cc) == 1
                                            Alert_TLHRH(s,prog) = 1; % Allerta del nodo di Livello 1
                                            Date_Alert_TLHRH(s,prog) = Date_1gg(s,n);
                                            Node_Alert_TLHRH(s,prog) = cell2mat(NodoTiltLinkHRH(nn,n));
                                            ID_Alert_TLHRH(1,prog) = cellstr([char(chainID(n,2)) '-' char(chainID(n,4))]);
                                        end
                                    end
                                end
                            end
                        end
                    end
                    index = index+1;
                    prog = prog+1;
                end
                text = ['Data of ' char(chainID(n,2)) '-' char(chainID(n,4)) ' Tilt Link HR H have been analyzed'];
                fprintf(fileID,fmt,text);
                index = 1;
            end
        end
        [num_TLHRH,~] = size(rTLHRH);
        ini = 1;
        fin = cumsum(rTLHRH);
        Num_Allarmi_TLHRH = zeros(1,num_TLHRH);
        for AL = 1:num_TLHRH
            if ini > fin(AL) % si va a quello dopo
            else
                Livello = max(max(Alert_TLHRH(:,ini:fin(AL))));
                if isempty(Livello) == 1
                    Livello = 0;
                end
                Num_Allarmi_TLHRH(1,AL) = Livello;
                ini = fin(AL)+1;
            end
        end
    end
    
    %% Tunnel Link
    if isempty(find(yesTuL)) == 1 % Non ho Tunnel Link
        text = 'Tunnel Link have not been analyzed during the execution of soglie function';
        fprintf(fileID,fmt,text);
        Num_Allarmi_TuL = 0;
    else
        TuL = cumsum(rTuL);
        Alert_TuL = zeros(1,TuL(end)); % Livello di Allerta
        Date_Alert_TuL = zeros(1,TuL(end)); % Data di Allerta
        Node_Alert_TuL = zeros(1,TuL(end)); % Numero di nodo in Allerta
        ID_Alert_TuL = cell(1,TuL(end)); % ID centralina - ID catena in Allerta
        index = 1;
        prog = 1;
        for n = 1:col % Ripeto per ogni Array
            DatiElab = cell(1);
            Date = zeros(1);
            if yesTuL(n) == 1
                date_rif = now-15; % 15 giorni
                for nn = 1:rTuL(n) % Ripeto per ogni nodo
                    comando = ['select EventDate, EventTime from ElabDataView where EventDate >= ''' ...
                        datestr(date_rif,'yyyy-mm-dd') ''' and  ToolNameID = ''' char(chainID(n,4))...
                        ''' and UnitName = ''' char(chainID(n,2)) ''' and NodeNum = ''' ...
                        num2str(cell2mat(NodoTunnelLink(nn,n))) ''' '];
                    curs = exec(conn,comando);
                    curs = fetch(curs);
                    DateElab = curs.Data;
                    % Modifico il formato di data e ora in DATini.
                    [rD,cD] = size(DateElab);
                    if rD ~= 1 && cD ~= 1
                        T = [cell2mat(DateElab(:,1)) repmat(' ', [rD,1]) cell2mat(DateElab(:,2))];
                        if nn == 1
                            Date(1:rD,n) = datenum(T); % scrivo la matrice date usando il primo nodo
                        end
                        comando = ['select XShift, ZShift from ElabDataView where EventDate >= ''' ...
                            datestr(date_rif,'yyyy-mm-dd') ''' and  ToolNameID = ''' char(chainID(n,4))...
                            ''' and UnitName = ''' char(chainID(n,2)) ''' and NodeNum = ''' ...
                            num2str(cell2mat(NodoTunnelLink(nn,n))) ''' '];
                        curs = exec(conn,comando);
                        curs = fetch(curs);
                        Control = curs.Data;
                        [rCD,~] = size(Control); % Dati del nodo N dell'Array X
                        [rDE,~] = size(DatiElab);
                        if rCD ~= rDE
                            if rCD > rDE
                                DatiElab(1:rCD,index:index+1) = Control;
                                RIF = rCD;
                            elseif rCD < rDE
                                DatiElab(1:rCD,index:index+1) = Control;
                                DatiElab(rCD+1:rDE,index:index+1) = Control(end,:);
                                RIF = rDE;
                            end
                        else
                            DatiElab(:,index:index+1) = Control; % Tutti i dati dei sensori dell'Array n
                            RIF = rDE;
                        end
                        % Guardo le soglie
                        [rCheck,cCheck] = size(DatiElab);
                        if rCheck > 1 && cCheck > 1
                            % Da Ieri
                            index1 = find(datenum(Date(:,n))>(now-1));
                            [rID,~] = size(index1);
                            if isempty(index1) == 0 && rID ~= 1 % non posso fare la diff
                                Incrementi_1gg = sqrt((diff(cell2mat(DatiElab(index1(1):end,index))))...
                                    .^2+(diff(cell2mat(DatiElab(index1(1):end,index+1)))).^2);
                                Date_1gg(1:RIF-index1(1),n) = Date(index1(2):index1(end),n);                                
                                % 15 gg
                                Incrementi_15gg = sqrt((diff(cell2mat(DatiElab(:,index)))).^2+(diff(cell2mat(DatiElab(:,index+1)))).^2);
                                ST15 = std(Incrementi_15gg(1:index1(1),:)); % 1 Deviazione standard per i 15 giorni
                                MAX15 = max(Incrementi_15gg(1:index1(1),:));
                                % 7 gg
                                index7 = find(datenum(Date(:,n))>(now-7));
                                Incrementi_7gg = sqrt((diff(cell2mat(DatiElab(index7(1):index1(1),index)))).^2+(diff(cell2mat(DatiElab(index7(1):index1(1),index+1)))).^2);
                                ST7 = 3*std(Incrementi_7gg); % 3 Deviazioni standard per i 7 giorni
                                MAX7 = max(Incrementi_7gg);
                                % 3 gg
                                index3 = find(datenum(Date(:,n))>(now-3));
                                Incrementi_3gg = sqrt((diff(cell2mat(DatiElab(index3(1):index1(1),index)))).^2+(diff(cell2mat(DatiElab(index3(1):index1(1),index+1)))).^2);
                                ST3 = 5*std(Incrementi_3gg); % 5 Deviazioni standard per i 3 giorni
                                MAX3 = max(Incrementi_3gg);
                                [rI,cI] = size(Incrementi_1gg); % Dati per quel nodo
                                soglia3 = zeros(rI,cI);
                                soglia7 = zeros(rI,cI);
                                soglia15 = zeros(rI,cI);
                                for cc = 1:cI
                                    for s = 1:rI
                                        if Incrementi_1gg(s,cc) > ST15+MAX15
                                            soglia15(s,cc) = 1;
                                        end
                                        if Incrementi_1gg(s,cc) > ST7+MAX7
                                            soglia7(s,cc) = 1;
                                        end
                                        if Incrementi_1gg(s,cc) > ST3+MAX3
                                            soglia3(s,cc) = 1;
                                        end
                                        if soglia3(s,cc) == 1 && soglia7(s,cc) == 1 && soglia15(s,cc) == 1
                                            Alert_TuL(s,prog) = 3; % Allerta del nodo di Livello 3
                                            Date_Alert_TuL(s,prog) = Date_1gg(s,n);
                                            Node_Alert_TuL(s,prog) = cell2mat(NodoTunnelLink(nn,n));
                                            ID_Alert_TuL(1,prog) = cellstr([char(chainID(n,2)) '-' char(chainID(n,4))]);
                                        elseif soglia3(s,cc) == 1 && soglia7(s,cc) == 1 || soglia3(s,cc) == 1 && soglia15(s,cc) == 1 || soglia15(s,cc) == 1 && soglia7(s,cc) == 1
                                            Alert_TuL(s,prog) = 2; % Allerta del nodo di Livello 2
                                            Date_Alert_TuL(s,prog) = Date_1gg(s,n);
                                            Node_Alert_TuL(s,prog) = cell2mat(NodoTunnelLink(nn,n));
                                            ID_Alert_TuL(1,prog) = cellstr([char(chainID(n,2)) '-' char(chainID(n,4))]);
                                        elseif soglia3(s,cc) == 1 || soglia7(s,cc) == 1 || soglia15(s,cc) == 1
                                            Alert_TuL(s,prog) = 1; % Allerta del nodo di Livello 1
                                            Date_Alert_TuL(s,prog) = Date_1gg(s,n);
                                            Node_Alert_TuL(s,prog) = cell2mat(NodoTunnelLink(nn,n));
                                            ID_Alert_TuL(1,prog) = cellstr([char(chainID(n,2)) '-' char(chainID(n,4))]);
                                        end
                                    end
                                end
                            end
                        end
                    end
                    index = index+2;
                    prog = prog+1;
                end
                text = ['Data of ' char(chainID(n,2)) '-' char(chainID(n,4)) ' Tunnel Link have been analyzed'];
                fprintf(fileID,fmt,text);
                index = 1;
            end
        end
        [num_TuL,~] = size(rTuL);
        ini = 1;
        fin = cumsum(rTuL);
        Num_Allarmi_TuL = zeros(1,num_TuL);
        for AL = 1:num_TuL
            if ini > fin(AL) % si va a quello dopo
            else
                Livello = max(max(Alert_TuL(:,ini:fin(AL))));
                if isempty(Livello) == 1
                    Livello = 0;
                end
                Num_Allarmi_TuL(1,AL) = Livello;
                ini = fin(AL)+1;
            end
        end
    end
    
     %% Radial Link
    if isempty(find(yesRL)) == 1 % Non ho Radial Link
        text = 'Radial Link have not been analyzed during the execution of soglie function';
        fprintf(fileID,fmt,text);
        Num_Allarmi_RL = 0;
    else
        RL = cumsum(rRL);
        Alert_RL = zeros(1,RL(end)); % Livello di Allerta
        Date_Alert_RL = zeros(1,RL(end)); % Data di Allerta
        Node_Alert_RL = zeros(1,RL(end)); % Numero di nodo in Allerta
        ID_Alert_RL = cell(1,RL(end)); % ID centralina - ID catena in Allerta
        index = 1;
        prog = 1;
        for n = 1:col % Ripeto per ogni Array
            DatiElab = cell(1);
            Date = zeros(1);
            if yesRL(n) == 1
                date_rif = now-15; % 15 giorni
                for nn = 1:rRL(n) % Ripeto per ogni nodo
                    comando = ['select EventDate, EventTime from ElabDataView where EventDate >= ''' ...
                        datestr(date_rif,'yyyy-mm-dd') ''' and  ToolNameID = ''' char(chainID(n,4))...
                        ''' and UnitName = ''' char(chainID(n,2)) ''' and NodeNum = ''' ...
                        num2str(cell2mat(NodoRadialLink(nn,n))) ''' '];
                    curs = exec(conn,comando);
                    curs = fetch(curs);
                    DateElab = curs.Data;
                    % Modifico il formato di data e ora in DATini.
                    [rD,cD] = size(DateElab);
                    if rD ~= 1 && cD ~= 1
                        T = [cell2mat(DateElab(:,1)) repmat(' ', [rD,1]) cell2mat(DateElab(:,2))];
                        if nn == 1
                            Date(1:rD,n) = datenum(T); % scrivo la matrice date usando il primo nodo
                        end
                        comando = ['select XShift, YShift, ZShift from ElabDataView where EventDate >= ''' ...
                            datestr(date_rif,'yyyy-mm-dd') ''' and  ToolNameID = ''' char(chainID(n,4))...
                            ''' and UnitName = ''' char(chainID(n,2)) ''' and NodeNum = ''' ...
                            num2str(cell2mat(NodoRadialLink(nn,n))) ''' '];
                        curs = exec(conn,comando);
                        curs = fetch(curs);
                        Control = curs.Data;
                        [rCD,~] = size(Control); % Dati del nodo N dell'Array X
                        [rDE,~] = size(DatiElab);
                        if rCD ~= rDE
                            if rCD > rDE
                                DatiElab(1:rCD,index:index+2) = Control;
                                RIF = rCD;
                            elseif rCD < rDE
                                DatiElab(1:rCD,index:index+2) = Control;
                                DatiElab(rCD+1:rDE,index:index+2) = Control(end,:);
                                RIF = rDE;
                            end
                        else
                            DatiElab(:,index:index+2) = Control; % Tutti i dati dei sensori dell'Array n
                            RIF = rDE;
                        end
                        % Guardo le soglie
                        [rCheck,cCheck] = size(DatiElab);
                        if rCheck > 1 && cCheck > 1
                            % Da Ieri
                            index1 = find(datenum(Date(:,n))>(now-1));
                            [rID,~] = size(index1);
                            if isempty(index1) == 0 && rID ~= 1 % non posso fare la diff
                                Incrementi_1gg = sqrt((diff(cell2mat(DatiElab(index1(1):end,index))))...
                                    .^2+(diff(cell2mat(DatiElab(index1(1):end,index+1)))).^2+...
                                    +(diff(cell2mat(DatiElab(index1(1):end,index+2)))).^2);
                                Date_1gg(1:RIF-index1(1),n) = Date(index1(2):index1(end),n); 
                                % 15 gg
                                Incrementi_15gg = sqrt((diff(cell2mat(DatiElab(:,index)))).^2+...
                                    (diff(cell2mat(DatiElab(:,index+1)))).^2 ...
                                    +(diff(cell2mat(DatiElab(:,index+2)))).^2);
                                ST15 = std(Incrementi_15gg(1:index1(1),:)); % 1 Deviazione standard per i 15 giorni
                                MAX15 = max(Incrementi_15gg(1:index1(1),:));
                                % 7 gg
                                index7 = find(datenum(Date(:,n))>(now-7));
                                Incrementi_7gg = sqrt((diff(cell2mat(DatiElab(index7(1):index1(1),index)))).^2+...
                                    (diff(cell2mat(DatiElab(index7(1):index1(1),index+1)))).^2+...
                                    (diff(cell2mat(DatiElab(index7(1):index1(1),index+2)))).^2);
                                ST7 = 3*std(Incrementi_7gg); % 3 Deviazioni standard per i 7 giorni
                                MAX7 = max(Incrementi_7gg);
                                % 3 gg
                                index3 = find(datenum(Date(:,n))>(now-3));
                                Incrementi_3gg = sqrt((diff(cell2mat(DatiElab(index3(1):index1(1),index)))).^2+...
                                    (diff(cell2mat(DatiElab(index3(1):index1(1),index+1)))).^2+...
                                    (diff(cell2mat(DatiElab(index3(1):index1(1),index+2)))).^2);
                                ST3 = 5*std(Incrementi_3gg); % 5 Deviazioni standard per i 3 giorni
                                MAX3 = max(Incrementi_3gg);
                                [rI,cI] = size(Incrementi_1gg); % Dati per quel nodo
                                soglia3 = zeros(rI,cI);
                                soglia7 = zeros(rI,cI);
                                soglia15 = zeros(rI,cI);
                                for cc = 1:cI
                                    for s = 1:rI
                                        if Incrementi_1gg(s,cc) > ST15+MAX15
                                            soglia15(s,cc) = 1;
                                        end
                                        if Incrementi_1gg(s,cc) > ST7+MAX7
                                            soglia7(s,cc) = 1;
                                        end
                                        if Incrementi_1gg(s,cc) > ST3+MAX3
                                            soglia3(s,cc) = 1;
                                        end
                                        if soglia3(s,cc) == 1 && soglia7(s,cc) == 1 && soglia15(s,cc) == 1
                                            Alert_RL(s,prog) = 3; % Allerta del nodo di Livello 3
                                            Date_Alert_RL(s,prog) = Date_1gg(s,n);
                                            Node_Alert_RL(s,prog) = cell2mat(NodoTiltLink(nn,n));
                                            ID_Alert_RL(1,prog) = cellstr([char(chainID(n,2)) '-' char(chainID(n,4))]);
                                        elseif soglia3(s,cc) == 1 && soglia7(s,cc) == 1 || soglia3(s,cc) == 1 && soglia15(s,cc) == 1 || soglia15(s,cc) == 1 && soglia7(s,cc) == 1
                                            Alert_RL(s,prog) = 2; % Allerta del nodo di Livello 2
                                            Date_Alert_RL(s,prog) = Date_1gg(s,n);
                                            Node_Alert_RL(s,prog) = cell2mat(NodoTiltLink(nn,n));
                                            ID_Alert_RL(1,prog) = cellstr([char(chainID(n,2)) '-' char(chainID(n,4))]);
                                        elseif soglia3(s,cc) == 1 || soglia7(s,cc) == 1 || soglia15(s,cc) == 1
                                            Alert_RL(s,prog) = 1; % Allerta del nodo di Livello 1
                                            Date_Alert_RL(s,prog) = Date_1gg(s,n);
                                            Node_Alert_RL(s,prog) = cell2mat(NodoTiltLink(nn,n));
                                            ID_Alert_RL(1,prog) = cellstr([char(chainID(n,2)) '-' char(chainID(n,4))]);
                                        end
                                    end
                                end
                            end
                        end
                    end
                    index = index+3;
                    prog = prog+1;
                end
                text = ['Data of ' char(chainID(n,2)) '-' char(chainID(n,4)) ' Radial Link have been analyzed'];
                fprintf(fileID,fmt,text);
                index = 1;
            end
        end
        [num_RL,~] = size(rRL);
        ini = 1;
        fin = cumsum(rRL);
        Num_Allarmi_RL = zeros(1,num_RL);
        for AL = 1:num_RL
            if ini > fin(AL) % si va a quello dopo
            else
                Livello = max(max(Alert_RL(:,ini:fin(AL))));
                if isempty(Livello) == 1
                    Livello = 0;
                end
                Num_Allarmi_RL(1,AL) = Livello;
                ini = fin(AL)+1;
            end
        end
    end
    
        %% PreConv Link
    if isempty(find(yesPCL)) == 1 % Non ho PreConv Link
        text = 'PreConv Link have not been analyzed during the execution of soglie function';
        fprintf(fileID,fmt,text);
        Num_Allarmi_PCL = 0;
    else
        clear Date_1gg
        PCL = cumsum(rPCL);
        Alert_PCL = zeros(1,PCL(end)); % Livello di Allerta
        Date_Alert_PCL = zeros(1,PCL(end)); % Data di Allerta
        Node_Alert_PCL = zeros(1,PCL(end)); % Numero di nodo in Allerta
        ID_Alert_PCL = cell(1,PCL(end)); % ID centralina - ID catena in Allerta
        index = 1;
        prog = 1;
        for n = 1:col % Ripeto per ogni Array
            DatiElab = cell(1);
            Date = zeros(1);
            if yesPCL(n) == 1
                date_rif = now-15; % 15 giorni
                for nn = 1:rPCL(n) % Ripeto per ogni nodo
                    comando = ['select EventDate, EventTime from ElabDataView where EventDate >= ''' ...
                        datestr(date_rif,'yyyy-mm-dd') ''' and  ToolNameID = ''' char(chainID(n,4))...
                        ''' and UnitName = ''' char(chainID(n,2)) ''' and NodeNum = ''' ...
                        num2str(cell2mat(NodoPreConvLink(nn,n))) ''' '];
                    curs = exec(conn,comando);
                    curs = fetch(curs);
                    DateElab = curs.Data;
                    % Modifico il formato di data e ora in DATini.
                    [rD,cD] = size(DateElab);
                    if rD ~= 1 && cD ~= 1
                        T = [cell2mat(DateElab(:,1)) repmat(' ', [rD,1]) cell2mat(DateElab(:,2))];
                        if nn == 1
                            Date(1:rD,n) = datenum(T); % scrivo lamatrice date usando il primo nodo
                        end
                        comando = ['select ZShift from ElabDataView where EventDate >= ''' ...
                            datestr(date_rif,'yyyy-mm-dd') ''' and  ToolNameID = ''' char(chainID(n,4))...
                            ''' and UnitName = ''' char(chainID(n,2)) ''' and NodeNum = ''' ...
                            num2str(cell2mat(NodoPreConvLink(nn,n))) ''' '];
                        curs = exec(conn,comando);
                        curs = fetch(curs);
                        Control = curs.Data;
                        [rCD,~] = size(Control);
                        [rDE,~] = size(DatiElab);
                        if rCD ~= rDE
                            if rCD > rDE
                                DatiElab(1:rCD,index) = Control;
                                RIF = rCD;
                            elseif rCD < rDE
                                DatiElab(1:rCD,index) = Control;
                                DatiElab(rCD+1:rDE,index) = Control(end,:);
                                RIF = rDE;
                            end
                        else
                            DatiElab(:,index) = Control; % Tutti i dati dei sensori dell'Array n
                            RIF = rDE;
                        end
                        % Guardo le soglie
                        [rCheck,cCheck] = size(DatiElab);
                        if rCheck > 1 && cCheck > 1
                            % Da Ieri
                            index1 = find(datenum(Date(:,n))>(now-1));
                            [rID,~] = size(index1);
                            if isempty(index1) == 0 && rID ~= 1 % non posso fare la diff
                                Incrementi_1gg = abs(diff(cell2mat(DatiElab(index1(1):end,index))));
                                Date_1gg(1:RIF-index1(1),n) = Date(index1(2):index1(end),n);
                                % 15 gg
                                Incrementi_15gg = abs(diff(cell2mat(DatiElab(:,index))));
                                ST15 = std(Incrementi_15gg(1:index1(1),:)); % 1 Deviazione standard per i 15 giorni
                                MAX15 = max(Incrementi_15gg(1:index1(1),:));
                                % 7 gg
                                index7 = find(datenum(Date(:,n))>(now-7));
                                Incrementi_7gg = abs(diff(cell2mat(DatiElab(index7(1):index1(1),index))));
                                ST7 = 3*std(Incrementi_7gg); % 3 Deviazioni standard per i 7 giorni
                                MAX7 = max(Incrementi_7gg);
                                % 3 gg
                                index3 = find(datenum(Date(:,n))>(now-3));
                                Incrementi_3gg = abs(diff(cell2mat(DatiElab(index3(1):index1(1),index))));
                                ST3 = 5*std(Incrementi_3gg); % 5 Deviazioni standard per i 3 giorni
                                MAX3 = max(Incrementi_3gg);
                                [rI,cI] = size(Incrementi_1gg); % Dati per quel nodo
                                soglia3 = zeros(rI,cI);
                                soglia7 = zeros(rI,cI);
                                soglia15 = zeros(rI,cI);
                                for cc = 1:cI
                                    for s = 1:rI
                                        if Incrementi_1gg(s,cc) > ST15+MAX15
                                            soglia15(s,cc) = 1;
                                        end
                                        if Incrementi_1gg(s,cc) > ST7+MAX7
                                            soglia7(s,cc) = 1;
                                        end
                                        if Incrementi_1gg(s,cc) > ST3+MAX3
                                            soglia3(s,cc) = 1;
                                        end
                                        if soglia3(s,cc) == 1 && soglia7(s,cc) == 1 && soglia15(s,cc) == 1
                                            Alert_PCL(s,prog) = 3; % Allerta del nodo di Livello 3
                                            Date_Alert_PCL(s,prog) = Date_1gg(s,n);
                                            Node_Alert_PCL(s,prog) = cell2mat(NodoPreConvLink(nn,n));
                                            ID_Alert_PCL(1,prog) = cellstr([char(chainID(n,2)) '-' char(chainID(n,4))]);
                                        elseif soglia3(s,cc) == 1 && soglia7(s,cc) == 1 || soglia3(s,cc) == 1 && soglia15(s,cc) == 1 || soglia15(s,cc) == 1 && soglia7(s,cc) == 1
                                            Alert_PCL(s,prog) = 2; % Allerta del nodo di Livello 2
                                            Date_Alert_PCL(s,prog) = Date_1gg(s,n);
                                            Node_Alert_PCL(s,prog) = cell2mat(NodoPreConvLink(nn,n));
                                            ID_Alert_PCL(1,prog) = cellstr([char(chainID(n,2)) '-' char(chainID(n,4))]);
                                        elseif soglia3(s,cc) == 1 || soglia7(s,cc) == 1 || soglia15(s,cc) == 1
                                            Alert_PCL(s,prog) = 1; % Allerta del nodo di Livello 1
                                            Date_Alert_PCL(s,prog) = Date_1gg(s,n);
                                            Node_Alert_PCL(s,prog) = cell2mat(NodoPreConvLink(nn,n));
                                            ID_Alert_PCL(1,prog) = cellstr([char(chainID(n,2)) '-' char(chainID(n,4))]);
                                        end
                                    end
                                end
                            end
                        end
                    end
                    index = index+1;
                    prog = prog+1;
                end
                text = ['Data of ' char(chainID(n,2)) '-' char(chainID(n,4)) ' PreConv Link have been analyzed'];
                fprintf(fileID,fmt,text);
                index = 1;
            end
        end
        [num_PCL,~] = size(rPCL);
        ini = 1;
        fin = cumsum(rPCL);
        Num_Allarmi_PCL = zeros(1,num_PCL);
        for AL = 1:num_PCL
            if ini > fin(AL) % si va a quello dopo
            else
                Livello = max(max(Alert_PCL(:,ini:fin(AL))));
                if isempty(Livello) == 1
                    Livello = 0;
                end
                Num_Allarmi_PCL(1,AL) = Livello;
                ini = fin(AL)+1;
            end
        end
    end
    
        %% PreConv Link HR
    if isempty(find(yesPCLHR)) == 1 % Non ho PreConv Link HR
        text = 'PreConv Link HR have not been analyzed during the execution of soglie function';
        fprintf(fileID,fmt,text);
        Num_Allarmi_PCLHR = 0;
    else
        clear Date_1gg
        PCLHR = cumsum(rPCLHR);
        Alert_PCLHR = zeros(1,PCLHR(end)); % Livello di Allerta
        Date_Alert_PCLHR = zeros(1,PCLHR(end)); % Data di Allerta
        Node_Alert_PCLHR = zeros(1,PCLHR(end)); % Numero di nodo in Allerta
        ID_Alert_PCLHR = cell(1,PCLHR(end)); % ID centralina - ID catena in Allerta
        index = 1;
        prog = 1;
        for n = 1:col % Ripeto per ogni Array
            DatiElab = cell(1);
            Date = zeros(1);
            if yesPCLHR(n) == 1
                date_rif = now-15; % 15 giorni
                for nn = 1:rPCLHR(n) % Ripeto per ogni nodo
                    comando = ['select EventDate, EventTime from ElabDataView where EventDate >= ''' ...
                        datestr(date_rif,'yyyy-mm-dd') ''' and  ToolNameID = ''' char(chainID(n,4))...
                        ''' and UnitName = ''' char(chainID(n,2)) ''' and NodeNum = ''' ...
                        num2str(cell2mat(NodoPreConvLinkHR(nn,n))) ''' '];
                    curs = exec(conn,comando);
                    curs = fetch(curs);
                    DateElab = curs.Data;
                    % Modifico il formato di data e ora in DATini.
                    [rD,cD] = size(DateElab);
                    if rD ~= 1 && cD ~= 1
                        T = [cell2mat(DateElab(:,1)) repmat(' ', [rD,1]) cell2mat(DateElab(:,2))];
                        if nn == 1
                            Date(1:rD,n) = datenum(T); % scrivo lamatrice date usando il primo nodo
                        end
                        comando = ['select ZShift from ElabDataView where EventDate >= ''' ...
                            datestr(date_rif,'yyyy-mm-dd') ''' and  ToolNameID = ''' char(chainID(n,4))...
                            ''' and UnitName = ''' char(chainID(n,2)) ''' and NodeNum = ''' ...
                            num2str(cell2mat(NodoPreConvLinkHR(nn,n))) ''' '];
                        curs = exec(conn,comando);
                        curs = fetch(curs);
                        Control = curs.Data;
                        [rCD,~] = size(Control);
                        [rDE,~] = size(DatiElab);
                        if rCD ~= rDE
                            if rCD > rDE
                                DatiElab(1:rCD,index) = Control;
                                RIF = rCD;
                            elseif rCD < rDE
                                DatiElab(1:rCD,index) = Control;
                                DatiElab(rCD+1:rDE,index) = Control(end,:);
                                RIF = rDE;
                            end
                        else
                            DatiElab(:,index) = Control; % Tutti i dati dei sensori dell'Array n
                            RIF = rDE;
                        end
                        % Guardo le soglie
                        [rCheck,cCheck] = size(DatiElab);
                        if rCheck > 1 && cCheck > 1
                            % Da Ieri
                            index1 = find(datenum(Date(:,n))>(now-1));
                            [rID,~] = size(index1);
                            if isempty(index1) == 0 && rID ~= 1 % non posso fare la diff
                                Incrementi_1gg = abs(diff(cell2mat(DatiElab(index1(1):end,index))));
                                Date_1gg(1:RIF-index1(1),n) = Date(index1(2):index1(end),n);
                                % 15 gg
                                Incrementi_15gg = abs(diff(cell2mat(DatiElab(:,index))));
                                ST15 = std(Incrementi_15gg(1:index1(1),:)); % 1 Deviazione standard per i 15 giorni
                                MAX15 = max(Incrementi_15gg(1:index1(1),:));
                                % 7 gg
                                index7 = find(datenum(Date(:,n))>(now-7));
                                Incrementi_7gg = abs(diff(cell2mat(DatiElab(index7(1):index1(1),index))));
                                ST7 = 3*std(Incrementi_7gg); % 3 Deviazioni standard per i 7 giorni
                                MAX7 = max(Incrementi_7gg);
                                % 3 gg
                                index3 = find(datenum(Date(:,n))>(now-3));
                                Incrementi_3gg = abs(diff(cell2mat(DatiElab(index3(1):index1(1),index))));
                                ST3 = 5*std(Incrementi_3gg); % 5 Deviazioni standard per i 3 giorni
                                MAX3 = max(Incrementi_3gg);
                                [rI,cI] = size(Incrementi_1gg); % Dati per quel nodo
                                soglia3 = zeros(rI,cI);
                                soglia7 = zeros(rI,cI);
                                soglia15 = zeros(rI,cI);
                                for cc = 1:cI
                                    for s = 1:rI
                                        if Incrementi_1gg(s,cc) > ST15+MAX15
                                            soglia15(s,cc) = 1;
                                        end
                                        if Incrementi_1gg(s,cc) > ST7+MAX7
                                            soglia7(s,cc) = 1;
                                        end
                                        if Incrementi_1gg(s,cc) > ST3+MAX3
                                            soglia3(s,cc) = 1;
                                        end
                                        if soglia3(s,cc) == 1 && soglia7(s,cc) == 1 && soglia15(s,cc) == 1
                                            Alert_PCLHR(s,prog) = 3; % Allerta del nodo di Livello 3
                                            Date_Alert_PCLHR(s,prog) = Date_1gg(s,n);
                                            Node_Alert_PCLHR(s,prog) = cell2mat(NodoTiltLinkH(nn,n));
                                            ID_Alert_PCLHR(1,prog) = cellstr([char(chainID(n,2)) '-' char(chainID(n,4))]);
                                        elseif soglia3(s,cc) == 1 && soglia7(s,cc) == 1 || soglia3(s,cc) == 1 && soglia15(s,cc) == 1 || soglia15(s,cc) == 1 && soglia7(s,cc) == 1
                                            Alert_PCLHR(s,prog) = 2; % Allerta del nodo di Livello 2
                                            Date_Alert_PCLHR(s,prog) = Date_1gg(s,n);
                                            Node_Alert_PCLHR(s,prog) = cell2mat(NodoTiltLinkH(nn,n));
                                            ID_Alert_PCLHR(1,prog) = cellstr([char(chainID(n,2)) '-' char(chainID(n,4))]);
                                        elseif soglia3(s,cc) == 1 || soglia7(s,cc) == 1 || soglia15(s,cc) == 1
                                            Alert_PCLHR(s,prog) = 1; % Allerta del nodo di Livello 1
                                            Date_Alert_PCLHR(s,prog) = Date_1gg(s,n);
                                            Node_Alert_PCLHR(s,prog) = cell2mat(NodoTiltLinkH(nn,n));
                                            ID_Alert_PCLHR(1,prog) = cellstr([char(chainID(n,2)) '-' char(chainID(n,4))]);
                                        end
                                    end
                                end
                            end
                        end
                    end
                    index = index+1;
                    prog = prog+1;
                end
                text = ['Data of ' char(chainID(n,2)) '-' char(chainID(n,4)) ' PreConv Link HR have been analyzed'];
                fprintf(fileID,fmt,text);
                index = 1;
            end
        end
        [num_PCLHR,~] = size(rPCLHR);
        ini = 1;
        fin = cumsum(rPCLHR);
        Num_Allarmi_PCLHR = zeros(1,num_PCLHR);
        for AL = 1:num_PCLHR
            if ini > fin(AL) % si va a quello dopo
            else
                Livello = max(max(Alert_PCLHR(:,ini:fin(AL))));
                if isempty(Livello) == 1
                    Livello = 0;
                end
                Num_Allarmi_PCLHR(1,AL) = Livello;
                ini = fin(AL)+1;
            end
        end
    end
    
    %% Piezo Link
    if isempty(find(yesPL)) == 1 % Non ho Piezo Link
        text = 'Piezo Link have not been analyzed during the execution of soglie function';
        fprintf(fileID,fmt,text);
        Num_Allarmi_PL = 0;
    else
        clear Date_1gg
        PL = cumsum(rPL);
        Alert_PL = zeros(1,PL(end)); % Livello di Allerta
        Date_Alert_PL = zeros(1,PL(end)); % Data di Allerta
        Node_Alert_PL = zeros(1,PL(end)); % Numero di nodo in Allerta
        ID_Alert_PL = cell(1,PL(end)); % ID centralina - ID catena in Allerta
        index = 1;
        prog = 1;
        for n = 1:col % Ripeto per ogni Array
            DatiElab = cell(1);
            Date = zeros(1);
            if yesPL(n) == 1
                date_rif = now-15; % 15 giorni
                for nn = 1:rPL(n) % Ripeto per ogni nodo
                    comando = ['select EventDate, EventTime from ElabDataView where EventDate >= ''' ...
                        datestr(date_rif,'yyyy-mm-dd') ''' and  ToolNameID = ''' char(chainID(n,4))...
                        ''' and UnitName = ''' char(chainID(n,2)) ''' and NodeNum = ''' num2str(cell2mat(NodoPiezoLink(nn,n))) ''' '];
                    curs = exec(conn,comando);
                    curs = fetch(curs);
                    DateElab = curs.Data;
                    % Modifico il formato di data e ora in DATini.
                    [rD,cD] = size(DateElab);
                    if rD ~= 1 && cD ~= 1
                        T = [cell2mat(DateElab(:,1)) repmat(' ', [rD,1]) cell2mat(DateElab(:,2))];
                        if nn == 1
                            Date(1:rD,n) = datenum(T); % scrivo la matrice date usando il primo nodo
                        end
                        comando = ['select water_level from ElabDataView where EventDate >= ''' ...
                            datestr(date_rif,'yyyy-mm-dd') ''' and  ToolNameID = ''' char(chainID(n,4))...
                            ''' and UnitName = ''' char(chainID(n,2)) ''' and NodeNum = ''' num2str(cell2mat(NodoPiezoLink(nn,n))) ''' '];
                        curs = exec(conn,comando);
                        curs = fetch(curs);
                        Control = curs.Data;
                        [rCD,~] = size(Control);
                        [rDE,~] = size(DatiElab);
                        if rCD ~= rDE
                            if rCD > rDE
                                DatiElab(1:rCD,index) = Control;
                                RIF = rCD;
                            elseif rCD < rDE
                                DatiElab(1:rCD,index) = Control;
                                DatiElab(rCD+1:rDE,index) = Control(end,:);
                                RIF = rDE;
                            end
                        else
                            DatiElab(:,index) = Control; % Tutti i dati dei sensori dell'Array n
                            RIF = rDE;
                        end
                        % Guardo le soglie
                        [rCheck,cCheck] = size(DatiElab);
                        if rCheck > 1 && cCheck > 1
                            % Da Ieri
                            index1 = find(datenum(Date(:,n))>(now-1));
                            [rID,~] = size(index1);
                            if isempty(index1) == 0 && rID ~= 1 % non posso fare la diff
                                Incrementi_1gg = abs(diff(cell2mat(DatiElab(index1(1):end,index))));
                                Date_1gg(1:RIF-index1(1),n) = Date(index1(2):index1(end),n);
                                % 15 gg
                                Incrementi_15gg = abs(diff(cell2mat(DatiElab(:,index))));
                                ST15 = std(Incrementi_15gg(1:index1(1),:)); % 1 Deviazione standard per i 15 giorni
                                MAX15 = max(Incrementi_15gg(1:index1(1),:));
                                % 7 gg
                                index7 = find(datenum(Date(:,n))>(now-7));
                                Incrementi_7gg = abs(diff(cell2mat(DatiElab(index7(1):index1(1),index))));
                                ST7 = 3*std(Incrementi_7gg); % 3 Deviazioni standard per i 7 giorni
                                MAX7 = max(Incrementi_7gg);
                                % 3 gg
                                index3 = find(datenum(Date(:,n))>(now-3));
                                Incrementi_3gg = abs(diff(cell2mat(DatiElab(index3(1):index1(1),index))));
                                ST3 = 5*std(Incrementi_3gg); % 5 Deviazioni standard per i 3 giorni
                                MAX3 = max(Incrementi_3gg);
                                [rI,cI] = size(Incrementi_1gg); % Dati per quel nodo
                                soglia3 = zeros(rI,cI);
                                soglia7 = zeros(rI,cI);
                                soglia15 = zeros(rI,cI);
                                for cc = 1:cI
                                    for s = 1:rI
                                        if Incrementi_1gg(s,cc) > ST15+MAX15
                                            soglia15(s,cc) = 1;
                                        end
                                        if Incrementi_1gg(s,cc) > ST7+MAX7
                                            soglia7(s,cc) = 1;
                                        end
                                        if Incrementi_1gg(s,cc) > ST3+MAX3
                                            soglia3(s,cc) = 1;
                                        end
                                        if soglia3(s,cc) == 1 && soglia7(s,cc) == 1 && soglia15(s,cc) == 1
                                            Alert_PL(s,prog) = 3; % Allerta del nodo di Livello 3
                                            Date_Alert_PL(s,prog) = Date_1gg(s,n);
                                            Node_Alert_PL(s,prog) = cell2mat(NodoPiezoLink(nn,n));
                                            ID_Alert_PL(1,prog) = cellstr([char(chainID(n,2)) '-' char(chainID(n,4))]);
                                        elseif soglia3(s,cc) == 1 && soglia7(s,cc) == 1 || soglia3(s,cc) == 1 && soglia15(s,cc) == 1 || soglia15(s,cc) == 1 && soglia7(s,cc) == 1
                                            Alert_PL(s,prog) = 2; % Allerta del nodo di Livello 2
                                            Date_Alert_PL(s,prog) = Date_1gg(s,n);
                                            Node_Alert_PL(s,prog) = cell2mat(NodoPiezoLink(nn,n));
                                            ID_Alert_PL(1,prog) = cellstr([char(chainID(n,2)) '-' char(chainID(n,4))]);
                                        elseif soglia3(s,cc) == 1 || soglia7(s,cc) == 1 || soglia15(s,cc) == 1
                                            Alert_PL(s,prog) = 1; % Allerta del nodo di Livello 1
                                            Date_Alert_PL(s,prog) = Date_1gg(s,n);
                                            Node_Alert_PL(s,prog) = cell2mat(NodoPiezoLink(nn,n));
                                            ID_Alert_PL(1,prog) = cellstr([char(chainID(n,2)) '-' char(chainID(n,4))]);
                                        end
                                    end
                                end
                            end
                        end
                    end
                    index = index+1;
                    prog = prog+1;
                end
                text = ['Data of ' char(chainID(n,2)) '-' char(chainID(n,4)) ' Piezo Link have been analyzed'];
                fprintf(fileID,fmt,text);
                index = 1;
            end
        end
        [num_PL,~] = size(rPL);
        ini = 1;
        fin = cumsum(rPL);
        Num_Allarmi_PL = zeros(1,num_PL);
        for AL = 1:num_PL
            if ini > fin(AL) % si va a quello dopo
            else
                Livello = max(max(Alert_PL(:,ini:fin(AL))));
                if isempty(Livello) == 1
                    Livello = 0;
                end
                Num_Allarmi_PL(1,AL) = Livello;
                ini = fin(AL)+1;
            end
        end
    end
    
    %% Klino Link
    if isempty(find(yesKL)) == 1 % Non ho Klino Link
        text = 'Klino Link have not been analyzed during the execution of soglie function';
        fprintf(fileID,fmt,text);
        Num_Allarmi_KL = 0;
    else
        clear Date_1gg
        K = cumsum(rKL);
        Alert_KL = zeros(1,K(end)); % Livello di Allerta
        Date_Alert_KL = zeros(1,K(end)); % Data di Allerta
        Node_Alert_KL = zeros(1,K(end)); % Numero di nodo in Allerta
        ID_Alert_KL = cell(1,K(end)); % ID centralina - ID catena in Allerta
        index = 1;
        prog = 1;
        for n = 1:col % Ripeto per ogni Array
            DatiElab = cell(1);
            Date = zeros(1);
            if yesKL(n) == 1
                date_rif = now-15; % 15 giorni
                for nn = 1:rKL(n) % Ripeto per ogni nodo
                    comando = ['select EventDate, EventTime from ElabDataView where EventDate >= ''' ...
                        datestr(date_rif,'yyyy-mm-dd') ''' and  ToolNameID = ''' char(chainID(n,4))...
                        ''' and UnitName = ''' char(chainID(n,2)) ''' and NodeNum = ''' num2str(cell2mat(NodoKlinoLink(nn,n))) ''' '];
                    curs = exec(conn,comando);
                    curs = fetch(curs);
                    DateElab = curs.Data;
                    % Modifico il formato di data e ora in DATini.
                    [rD,cD] = size(DateElab);
                    if rD ~= 1 && cD ~= 1
                        T = [cell2mat(DateElab(:,1)) repmat(' ', [rD,1]) cell2mat(DateElab(:,2))];
                        if nn == 1
                            Date(1:rD,n) = datenum(T); % scrivo lamatrice date usando il primo nodo
                        end
                        comando = ['select XShift, YShift from ElabDataView where EventDate >= ''' ...
                            datestr(date_rif,'yyyy-mm-dd') ''' and  ToolNameID = ''' char(chainID(n,4))...
                            ''' and UnitName = ''' char(chainID(n,2)) ''' and NodeNum = ''' num2str(cell2mat(NodoKlinoLink(nn,n))) ''' '];
                        curs = exec(conn,comando);
                        curs = fetch(curs);
                        Control = curs.Data;
                        [rCD,~] = size(Control);
                        [rDE,~] = size(DatiElab);
                        if rCD ~= rDE
                            if rCD > rDE
                                DatiElab(1:rCD,index:index+1) = Control;
                                RIF = rCD;
                            elseif rCD < rDE
                                DatiElab(1:rCD,index:index+1) = Control;
                                DatiElab(rCD+1:rDE,index:index+1) = Control(end,:);
                                RIF = rDE;
                            end
                        else
                            DatiElab(:,index:index+1) = Control; % Tutti i dati dei sensori dell'Array n
                            RIF = rDE;
                        end
                        % Guardo le soglie
                        [rCheck,cCheck] = size(DatiElab);
                        if rCheck > 1 && cCheck > 1
                            % Da Ieri
                            index1 = find(datenum(Date(:,n))>(now-1));
                            [rID,~] = size(index1);
                            if isempty(index1) == 0 && rID ~= 1 % non posso fare la diff
                                Incrementi_1gg = abs(diff(cell2mat(DatiElab(index1(1):end,index:index+1))));
                                Date_1gg(1:RIF-index1(1),n) = Date(index1(2):index1(end),n);
                                % 15 gg
                                Incrementi_15gg = abs(diff(cell2mat(DatiElab(:,index:index+1))));
                                ST15 = std(Incrementi_15gg(1:index1(1),:)); % 1 Deviazione standard per i 15 giorni
                                MAX15 = max(Incrementi_15gg(1:index1(1),:));
                                % 7 gg
                                index7 = find(datenum(Date(:,n))>(now-7));
                                Incrementi_7gg = abs(diff(cell2mat(DatiElab(index7(1):index1(1),index:index+1))));
                                ST7 = 3*std(Incrementi_7gg); % 3 Deviazioni standard per i 7 giorni
                                MAX7 = max(Incrementi_7gg);
                                % 3 gg
                                index3 = find(datenum(Date(:,n))>(now-3));
                                Incrementi_3gg = abs(diff(cell2mat(DatiElab(index3(1):index1(1),index:index+1))));
                                ST3 = 5*std(Incrementi_3gg); % 5 Deviazioni standard per i 3 giorni
                                MAX3 = max(Incrementi_3gg);
                                [rI,cI] = size(Incrementi_1gg); % Dati per quel nodo
                                soglia3 = zeros(rI,cI);
                                soglia7 = zeros(rI,cI);
                                soglia15 = zeros(rI,cI);
                                for cc = 1:cI
                                    for s = 1:rI
                                        if Incrementi_1gg(s,cc) > ST15+MAX15
                                            soglia15(s,cc) = 1;
                                        end
                                        if Incrementi_1gg(s,cc) > ST7+MAX7
                                            soglia7(s,cc) = 1;
                                        end
                                        if Incrementi_1gg(s,cc) > ST3+MAX3
                                            soglia3(s,cc) = 1;
                                        end
                                        if soglia3(s,cc) == 1 && soglia7(s,cc) == 1 && soglia15(s,cc) == 1
                                            Alert_KL(s,prog) = 3; % Allerta del nodo di Livello 3
                                            Date_Alert_KL(s,prog) = Date_1gg(s,n);
                                            Node_Alert_KL(s,prog) = cell2mat(NodoKlinoLink(nn,n));
                                            ID_Alert_KL(1,prog) = cellstr([char(chainID(n,2)) '-' char(chainID(n,4))]);
                                        elseif soglia3(s,cc) == 1 && soglia7(s,cc) == 1 || soglia3(s,cc) == 1 && soglia15(s,cc) == 1 || soglia15(s,cc) == 1 && soglia7(s,cc) == 1
                                            Alert_KL(s,prog) = 2; % Allerta del nodo di Livello 2
                                            Date_Alert_KL(s,prog) = Date_1gg(s,n);
                                            Node_Alert_KL(s,prog) = cell2mat(NodoKlinoLink(nn,n));
                                            ID_Alert_KL(1,prog) = cellstr([char(chainID(n,2)) '-' char(chainID(n,4))]);
                                        elseif soglia3(s,cc) == 1 || soglia7(s,cc) == 1 || soglia15(s,cc) == 1
                                            Alert_KL(s,prog) = 1; % Allerta del nodo di Livello 1
                                            Date_Alert_KL(s,prog) = Date_1gg(s,n);
                                            Node_Alert_KL(s,prog) = cell2mat(NodoKlinoLink(nn,n));
                                            ID_Alert_KL(1,prog) = cellstr([char(chainID(n,2)) '-' char(chainID(n,4))]);
                                        end
                                    end
                                end
                            end
                        end
                    end
                    index = index+2;
                    prog = prog+1;
                end
                text = ['Data of ' char(chainID(n,2)) '-' char(chainID(n,4)) ' Klino Link have been analyzed'];
                fprintf(fileID,fmt,text);
                index = 1;
            end
        end
        [num_KL,~] = size(rKL);
        ini = 1;
        fin = cumsum(rKL);
        Num_Allarmi_KL = zeros(1,num_KL);
        for AL = 1:num_KL
            if ini > fin(AL) % si va a quello dopo
            else
                Livello = max(max(Alert_KL(:,ini:fin(AL))));
                if isempty(Livello) == 1
                    Livello = 0;
                end
                Num_Allarmi_KL(1,AL) = Livello;
                ini = fin(AL)+1;
            end
        end
    end
    
    %% Klino Link HR
    if isempty(find(yesKLHR)) == 1 % Non ho Klino Link HR
        text = 'Klino Link HR have not been analyzed during the execution of soglie function';
        fprintf(fileID,fmt,text);
        Num_Allarmi_KLHR = 0;
    else
        clear Date_1gg
        KHR = cumsum(rKLHR);
        Alert_KLHR = zeros(1,KHR(end)); % Livello di Allerta
        Date_Alert_KLHR = zeros(1,KHR(end)); % Data di Allerta
        Node_Alert_KLHR = zeros(1,KHR(end)); % Numero di nodo in Allerta
        ID_Alert_KLHR = cell(1,KHR(end)); % ID centralina - ID catena in Allerta
        index = 1;
        prog = 1;
        for n = 1:col % Ripeto per ogni Array
            DatiElab = cell(1);
            Date = zeros(1);
            if yesKLHR(n) == 1
                date_rif = now-15; % 15 giorni
                for nn = 1:rKLHR(n) % Ripeto per ogni nodo
                    comando = ['select EventDate, EventTime from ElabDataView where EventDate >= ''' ...
                        datestr(date_rif,'yyyy-mm-dd') ''' and  ToolNameID = ''' char(chainID(n,4))...
                        ''' and UnitName = ''' char(chainID(n,2)) ''' and NodeNum = ''' num2str(cell2mat(NodoKlinoLinkHR(nn,n))) ''' '];
                    curs = exec(conn,comando);
                    curs = fetch(curs);
                    DateElab = curs.Data;
                    % Modifico il formato di data e ora in DATini.
                    [rD,cD] = size(DateElab);
                    if rD ~= 1 && cD ~= 1
                        T = [cell2mat(DateElab(:,1)) repmat(' ', [rD,1]) cell2mat(DateElab(:,2))];
                        if nn == 1
                            Date(1:rD,n) = datenum(T); % scrivo lamatrice date usando il primo nodo
                        end
                        comando = ['select XShift, YShift from ElabDataView where EventDate >= ''' ...
                            datestr(date_rif,'yyyy-mm-dd') ''' and  ToolNameID = ''' char(chainID(n,4))...
                            ''' and UnitName = ''' char(chainID(n,2)) ''' and NodeNum = ''' num2str(cell2mat(NodoKlinoLinkHR(nn,n))) ''' '];
                        curs = exec(conn,comando);
                        curs = fetch(curs);
                        Control = curs.Data;
                        [rCD,~] = size(Control);
                        [rDE,~] = size(DatiElab);
                        if rCD ~= rDE
                            if rCD > rDE
                                DatiElab(1:rCD,index:index+1) = Control;
                                RIF = rCD;
                            elseif rCD < rDE
                                DatiElab(1:rCD,index:index+1) = Control;
                                DatiElab(rCD+1:rDE,index:index+1) = Control(end,:);
                                RIF = rDE;
                            end
                        else
                            DatiElab(:,index:index+1) = Control; % Tutti i dati dei sensori dell'Array n
                            RIF = rDE;
                        end
                        % Guardo le soglie
                        [rCheck,cCheck] = size(DatiElab);
                        if rCheck > 1 && cCheck > 1
                            % Da Ieri
                            index1 = find(datenum(Date(:,n))>(now-1));
                            [rID,~] = size(index1);
                            if isempty(index1) == 0 && rID ~= 1 % non posso fare la diff
                                Incrementi_1gg = abs(diff(cell2mat(DatiElab(index1(1):end,index:index+1))));
                                Date_1gg(1:RIF-index1(1),n) = Date(index1(2):index1(end),n);
                                % 15 gg
                                Incrementi_15gg = abs(diff(cell2mat(DatiElab(:,index:index+1))));
                                ST15 = std(Incrementi_15gg(1:index1(1),:)); % 1 Deviazione standard per i 15 giorni
                                MAX15 = max(Incrementi_15gg(1:index1(1),:));
                                % 7 gg
                                index7 = find(datenum(Date(:,n))>(now-7));
                                Incrementi_7gg = abs(diff(cell2mat(DatiElab(index7(1):index1(1),index:index+1))));
                                ST7 = 3*std(Incrementi_7gg); % 3 Deviazioni standard per i 7 giorni
                                MAX7 = max(Incrementi_7gg);
                                % 3 gg
                                index3 = find(datenum(Date(:,n))>(now-3));
                                Incrementi_3gg = abs(diff(cell2mat(DatiElab(index3(1):index1(1),index:index+1))));
                                ST3 = 5*std(Incrementi_3gg); % 5 Deviazioni standard per i 3 giorni
                                MAX3 = max(Incrementi_3gg);
                                [rI,cI] = size(Incrementi_1gg); % Dati per quel nodo
                                soglia3 = zeros(rI,cI);
                                soglia7 = zeros(rI,cI);
                                soglia15 = zeros(rI,cI);
                                for cc = 1:cI
                                    for s = 1:rI
                                        if Incrementi_1gg(s,cc) > ST15+MAX15
                                            soglia15(s,cc) = 1;
                                        end
                                        if Incrementi_1gg(s,cc) > ST7+MAX7
                                            soglia7(s,cc) = 1;
                                        end
                                        if Incrementi_1gg(s,cc) > ST3+MAX3
                                            soglia3(s,cc) = 1;
                                        end
                                        if soglia3(s,cc) == 1 && soglia7(s,cc) == 1 && soglia15(s,cc) == 1
                                            Alert_KLHR(s,prog) = 3; % Allerta del nodo di Livello 3
                                            Date_Alert_KLHR(s,prog) = Date_1gg(s,n);
                                            Node_Alert_KLHR(s,prog) = cell2mat(NodoKlinoLinkHR(nn,n));
                                            ID_Alert_KLHR(1,prog) = cellstr([char(chainID(n,2)) '-' char(chainID(n,4))]);
                                        elseif soglia3(s,cc) == 1 && soglia7(s,cc) == 1 || soglia3(s,cc) == 1 && soglia15(s,cc) == 1 || soglia15(s,cc) == 1 && soglia7(s,cc) == 1
                                            Alert_KLHR(s,prog) = 2; % Allerta del nodo di Livello 2
                                            Date_Alert_KLHR(s,prog) = Date_1gg(s,n);
                                            Node_Alert_KLHR(s,prog) = cell2mat(NodoKlinoLinkHR(nn,n));
                                            ID_Alert_KLHR(1,prog) = cellstr([char(chainID(n,2)) '-' char(chainID(n,4))]);
                                        elseif soglia3(s,cc) == 1 || soglia7(s,cc) == 1 || soglia15(s,cc) == 1
                                            Alert_KLHR(s,prog) = 1; % Allerta del nodo di Livello 1
                                            Date_Alert_KLHR(s,prog) = Date_1gg(s,n);
                                            Node_Alert_KLHR(s,prog) = cell2mat(NodoKlinoLinkHR(nn,n));
                                            ID_Alert_KLHR(1,prog) = cellstr([char(chainID(n,2)) '-' char(chainID(n,4))]);
                                        end
                                    end
                                end
                            end
                        end
                    end
                    index = index+2;
                    prog = prog+1;
                end
                text = ['Data of ' char(chainID(n,2)) '-' char(chainID(n,4)) ' Klino Link HR have been analyzed'];
                fprintf(fileID,fmt,text);
                index = 1;
            end
        end
        [num_KLHR,~] = size(rKLHR);
        ini = 1;
        fin = cumsum(rKLHR);
        Num_Allarmi_KLHR = zeros(1,num_KLHR);
        for AL = 1:num_KLHR
            if ini > fin(AL) % si va a quello dopo
            else
                Livello = max(max(Alert_KLHR(:,ini:fin(AL))));
                if isempty(Livello) == 1
                    Livello = 0;
                end
                Num_Allarmi_KLHR(1,AL) = Livello;
                ini = fin(AL)+1;
            end
        end
    end
    
    %% Load Link
    if isempty(find(yesLL)) == 1 % Non ho Load Link
        text = 'Load Link have not been analyzed during the execution of soglie function';
        fprintf(fileID,fmt,text);
        Num_Allarmi_LL = 0;
    else
        clear Date_1gg
        LL = cumsum(rLL);
        Alert_LL = zeros(1,LL(end)); % Livello di Allerta
        Date_Alert_LL = zeros(1,LL(end)); % Data di Allerta
        Node_Alert_LL = zeros(1,LL(end)); % Numero di nodo in Allerta
        ID_Alert_LL = cell(1,LL(end)); % ID centralina - ID catena in Allerta
        index = 1;
        prog = 1;
        for n = 1:col % Ripeto per ogni Array
            DatiElab = cell(1);
            Date = zeros(1);
            if yesLL(n) == 1
               status = system(['/usr/local/matlab_func/run_ATD_lnx.sh /usr/local/MATLAB/MATLAB_Runtime/v93 ' char(chainID(n,2)) ' ' char(chainID(n,4)) '']);
               if status == 1
                   break % se crasha il SW salto l'analisi
               end
               date_rif = now-15; % 15 giorni
               for nn = 1:rLL(n) % Ripeto per ogni nodo
                    comando = ['select EventDate, EventTime from ElabDataView where EventDate >= ''' ...
                        datestr(date_rif,'yyyy-mm-dd') ''' and  ToolNameID = ''' char(chainID(n,4))...
                        ''' and UnitName = ''' char(chainID(n,2)) ''' and NodeNum = ''' num2str(cell2mat(NodoLoadLink(nn,n))) ''' '];
                    curs = exec(conn,comando);
                    curs = fetch(curs);
                    DateElab = curs.Data;
                    % Modifico il formato di data e ora in DATini.
                    [rD,cD] = size(DateElab);
                    if rD ~= 1 && cD ~= 1
                        T = [cell2mat(DateElab(:,1)) repmat(' ', [rD,1]) cell2mat(DateElab(:,2))];
                        if nn == 1
                            Date(1:rD,n) = datenum(T); % scrivo lamatrice date usando il primo nodo
                        end
                        comando = ['select load_value from ElabDataView where EventDate >= ''' ...
                            datestr(date_rif,'yyyy-mm-dd') ''' and  ToolNameID = ''' char(chainID(n,4))...
                            ''' and UnitName = ''' char(chainID(n,2)) ''' and NodeNum = ''' num2str(cell2mat(NodoLoadLink(nn,n))) ''' '];
                        curs = exec(conn,comando);
                        curs = fetch(curs);
                        Control = curs.Data;
                        [rCD,~] = size(Control);
                        [rDE,~] = size(DatiElab);
                        if rCD ~= rDE
                            if rCD > rDE
                                DatiElab(1:rCD,index) = Control;
                                RIF = rCD;
                            elseif rCD < rDE
                                DatiElab(1:rCD,index) = Control;
                                DatiElab(rCD+1:rDE,index) = Control(end,:);
                                RIF = rDE;
                            end
                        else
                            DatiElab(:,index) = Control; % Tutti i dati dei sensori dell'Array n
                            RIF = rDE;
                        end
                        % Guardo le soglie
                        [rCheck,cCheck] = size(DatiElab);
                        if rCheck > 1 && cCheck > 1
                            % Da Ieri
                            index1 = find(datenum(Date(:,n))>(now-1));
                            [rID,~] = size(index1);
                            if isempty(index1) == 0 && rID ~= 1 % non posso fare la diff
                                Incrementi_1gg = abs(diff(cell2mat(DatiElab(index1(1):end,index))));
                                Date_1gg(1:RIF-index1(1),n) = Date(index1(2):index1(end),n);
                                % 15 gg
                                Incrementi_15gg = abs(diff(cell2mat(DatiElab(:,index))));
                                ST15 = std(Incrementi_15gg(1:index1(1),:)); % 1 Deviazione standard per i 15 giorni
                                MAX15 = max(Incrementi_15gg(1:index1(1),:));
                                % 7 gg
                                index7 = find(datenum(Date(:,n))>(now-7));
                                Incrementi_7gg = abs(diff(cell2mat(DatiElab(index7(1):index1(1),index))));
                                ST7 = 3*std(Incrementi_7gg); % 3 Deviazioni standard per i 7 giorni
                                MAX7 = max(Incrementi_7gg);
                                % 3 gg
                                index3 = find(datenum(Date(:,n))>(now-3));
                                Incrementi_3gg = abs(diff(cell2mat(DatiElab(index3(1):index1(1),index))));
                                ST3 = 5*std(Incrementi_3gg); % 5 Deviazioni standard per i 3 giorni
                                MAX3 = max(Incrementi_3gg);
                                [rI,cI] = size(Incrementi_1gg); % Dati per quel nodo
                                soglia3 = zeros(rI,cI);
                                soglia7 = zeros(rI,cI);
                                soglia15 = zeros(rI,cI);
                                for cc = 1:cI
                                    for s = 1:rI
                                        if Incrementi_1gg(s,cc) > ST15+MAX15
                                            soglia15(s,cc) = 1;
                                        end
                                        if Incrementi_1gg(s,cc) > ST7+MAX7
                                            soglia7(s,cc) = 1;
                                        end
                                        if Incrementi_1gg(s,cc) > ST3+MAX3
                                            soglia3(s,cc) = 1;
                                        end
                                        if soglia3(s,cc) == 1 && soglia7(s,cc) == 1 && soglia15(s,cc) == 1
                                            Alert_LL(s,prog) = 3; % Allerta del nodo di Livello 3
                                            Date_Alert_LL(s,prog) = Date_1gg(s,n);
                                            Node_Alert_LL(s,prog) = cell2mat(NodoLoadLink(nn,n));
                                            ID_Alert_LL(1,prog) = cellstr([char(chainID(n,2)) '-' char(chainID(n,4))]);
                                        elseif soglia3(s,cc) == 1 && soglia7(s,cc) == 1 || soglia3(s,cc) == 1 && soglia15(s,cc) == 1 || soglia15(s,cc) == 1 && soglia7(s,cc) == 1
                                            Alert_LL(s,prog) = 2; % Allerta del nodo di Livello 2
                                            Date_Alert_LL(s,prog) = Date_1gg(s,n);
                                            Node_Alert_LL(s,prog) = cell2mat(NodoLoadLink(nn,n));
                                            ID_Alert_LL(1,prog) = cellstr([char(chainID(n,2)) '-' char(chainID(n,4))]);
                                        elseif soglia3(s,cc) == 1 || soglia7(s,cc) == 1 || soglia15(s,cc) == 1
                                            Alert_LL(s,prog) = 1; % Allerta del nodo di Livello 1
                                            Date_Alert_LL(s,prog) = Date_1gg(s,n);
                                            Node_Alert_LL(s,prog) = cell2mat(NodoLoadLink(nn,n));
                                            ID_Alert_LL(1,prog) = cellstr([char(chainID(n,2)) '-' char(chainID(n,4))]);
                                        end
                                    end
                                end
                            end
                        end
                    end
                    index = index+1;
                    prog = prog+1;
                end
                text = ['Data of ' char(chainID(n,2)) '-' char(chainID(n,4)) ' Load Link have been analyzed'];
                fprintf(fileID,fmt,text);
                index = 1;
            end
        end
        [num_LL,~] = size(rLL);
        ini = 1;
        fin = cumsum(rLL);
        Num_Allarmi_LL = zeros(1,num_LL);
        for AL = 1:num_LL
            if ini > fin(AL) % si va a quello dopo
            else
                Livello = max(max(Alert_LL(:,ini:fin(AL))));
                if isempty(Livello) == 1
                    Livello = 0;
                end
                Num_Allarmi_LL(1,AL) = Livello;
                ini = fin(AL)+1;
            end
        end
    end
    
    %% Pressure Link
    if isempty(find(yesPrL)) == 1 % Non ho Pressure Link
        text = 'Pressure Link have not been analyzed during the execution of soglie function';
        fprintf(fileID,fmt,text);
        Num_Allarmi_PrL = 0;
    else
        clear Date_1gg
        PrL = cumsum(rPrL);
        Alert_PrL = zeros(1,PrL(end)); % Livello di Allerta
        Date_Alert_PrL = zeros(1,PrL(end)); % Data di Allerta
        Node_Alert_PrL = zeros(1,PrL(end)); % Numero di nodo in Allerta
        ID_Alert_PrL = cell(1,PrL(end)); % ID centralina - ID catena in Allerta
        index = 1;
        prog = 1;
        for n = 1:col % Ripeto per ogni Array
            DatiElab = cell(1);
            Date = zeros(1);
            if yesPrL(n) == 1
                status = system(['/usr/local/matlab_func/run_ATD_lnx.sh /usr/local/MATLAB/MATLAB_Runtime/v93 ' char(chainID(n,2)) ' ' char(chainID(n,4)) '']);
               if status == 1
                   break % se crasha il SW salto l'analisi
               end
                date_rif = now-15; % 15 giorni
                for nn = 1:rPrL(n) % Ripeto per ogni nodo
                    comando = ['select EventDate, EventTime from ElabDataView where EventDate >= ''' ...
                        datestr(date_rif,'yyyy-mm-dd') ''' and  ToolNameID = ''' char(chainID(n,4))...
                        ''' and UnitName = ''' char(chainID(n,2)) ''' and NodeNum = ''' num2str(cell2mat(NodoPressureLink(nn,n))) ''' '];
                    curs = exec(conn,comando);
                    curs = fetch(curs);
                    DateElab = curs.Data;
                    % Modifico il formato di data e ora in DATini.
                    [rD,cD] = size(DateElab);
                    if rD ~= 1 && cD ~= 1
                        T = [cell2mat(DateElab(:,1)) repmat(' ', [rD,1]) cell2mat(DateElab(:,2))];
                        if nn == 1
                            Date(1:rD,n) = datenum(T); % scrivo lamatrice date usando il primo nodo
                        end
                        comando = ['select pressure from ElabDataView where EventDate >= ''' ...
                            datestr(date_rif,'yyyy-mm-dd') ''' and  ToolNameID = ''' char(chainID(n,4))...
                            ''' and UnitName = ''' char(chainID(n,2)) ''' and NodeNum = ''' num2str(cell2mat(NodoPressureLink(nn,n))) ''' '];
                        curs = exec(conn,comando);
                        curs = fetch(curs);
                        Control = curs.Data;
                        [rCD,~] = size(Control);
                        [rDE,~] = size(DatiElab);
                        if rCD ~= rDE
                            if rCD > rDE
                                DatiElab(1:rCD,index) = Control;
                                RIF = rCD;
                            elseif rCD < rDE
                                DatiElab(1:rCD,index) = Control;
                                DatiElab(rCD+1:rDE,index) = Control(end,:);
                                RIF = rDE;
                            end
                        else
                            DatiElab(:,index) = Control; % Tutti i dati dei sensori dell'Array n
                            RIF = rDE;
                        end
                        % Guardo le soglie
                        [rCheck,cCheck] = size(DatiElab);
                        if rCheck > 1 && cCheck > 1
                            % Da Ieri
                            index1 = find(datenum(Date(:,n))>(now-1));
                            [rID,~] = size(index1);
                            if isempty(index1) == 0 && rID ~= 1 % non posso fare la diff
                                Incrementi_1gg = abs(diff(cell2mat(DatiElab(index1(1):end,index))));
                                Date_1gg(1:RIF-index1(1),n) = Date(index1(2):index1(end),n);
                                % 15 gg
                                Incrementi_15gg = abs(diff(cell2mat(DatiElab(:,index))));
                                ST15 = std(Incrementi_15gg(1:index1(1),:)); % 1 Deviazione standard per i 15 giorni
                                MAX15 = max(Incrementi_15gg(1:index1(1),:));
                                % 7 gg
                                index7 = find(datenum(Date(:,n))>(now-7));
                                Incrementi_7gg = abs(diff(cell2mat(DatiElab(index7(1):index1(1),index))));
                                ST7 = 3*std(Incrementi_7gg); % 3 Deviazioni standard per i 7 giorni
                                MAX7 = max(Incrementi_7gg);
                                % 3 gg
                                index3 = find(datenum(Date(:,n))>(now-3));
                                Incrementi_3gg = abs(diff(cell2mat(DatiElab(index3(1):index1(1),index))));
                                ST3 = 5*std(Incrementi_3gg); % 5 Deviazioni standard per i 3 giorni
                                MAX3 = max(Incrementi_3gg);
                                [rI,cI] = size(Incrementi_1gg); % Dati per quel nodo
                                soglia3 = zeros(rI,cI);
                                soglia7 = zeros(rI,cI);
                                soglia15 = zeros(rI,cI);
                                for cc = 1:cI
                                    for s = 1:rI
                                        if Incrementi_1gg(s,cc) > ST15+MAX15
                                            soglia15(s,cc) = 1;
                                        end
                                        if Incrementi_1gg(s,cc) > ST7+MAX7
                                            soglia7(s,cc) = 1;
                                        end
                                        if Incrementi_1gg(s,cc) > ST3+MAX3
                                            soglia3(s,cc) = 1;
                                        end
                                        if soglia3(s,cc) == 1 && soglia7(s,cc) == 1 && soglia15(s,cc) == 1
                                            Alert_PrL(s,prog) = 3; % Allerta del nodo di Livello 3
                                            Date_Alert_PrL(s,prog) = Date_1gg(s,n);
                                            Node_Alert_PrL(s,prog) = cell2mat(NodoPressureLink(nn,n));
                                            ID_Alert_PrL(1,prog) = cellstr([char(chainID(n,2)) '-' char(chainID(n,4))]);
                                        elseif soglia3(s,cc) == 1 && soglia7(s,cc) == 1 || soglia3(s,cc) == 1 && soglia15(s,cc) == 1 || soglia15(s,cc) == 1 && soglia7(s,cc) == 1
                                            Alert_PrL(s,prog) = 2; % Allerta del nodo di Livello 2
                                            Date_Alert_PrL(s,prog) = Date_1gg(s,n);
                                            Node_Alert_PrL(s,prog) = cell2mat(NodoPressureLink(nn,n));
                                            ID_Alert_PrL(1,prog) = cellstr([char(chainID(n,2)) '-' char(chainID(n,4))]);
                                        elseif soglia3(s,cc) == 1 || soglia7(s,cc) == 1 || soglia15(s,cc) == 1
                                            Alert_PrL(s,prog) = 1; % Allerta del nodo di Livello 1
                                            Date_Alert_PrL(s,prog) = Date_1gg(s,n);
                                            Node_Alert_PrL(s,prog) = cell2mat(NodoPressureLink(nn,n));
                                            ID_Alert_PrL(1,prog) = cellstr([char(chainID(n,2)) '-' char(chainID(n,4))]);
                                        end
                                    end
                                end
                            end
                        end
                    end
                    index = index+1;
                    prog = prog+1;
                end
                text = ['Data of ' char(chainID(n,2)) '-' char(chainID(n,4)) ' Pressure Link have been analyzed'];
                fprintf(fileID,fmt,text);
                index = 1;
            end
        end
        [num_PrL,~] = size(rPrL);
        ini = 1;
        fin = cumsum(rPrL);
        Num_Allarmi_PrL = zeros(1,num_PrL);
        for AL = 1:num_PrL
            if ini > fin(AL) % si va a quello dopo
            else
                Livello = max(max(Alert_PrL(:,ini:fin(AL))));
                if isempty(Livello) == 1
                    Livello = 0;
                end
                Num_Allarmi_PrL(1,AL) = Livello;
                ini = fin(AL)+1;
            end
        end
    end
    
    %% Crack Link
    if isempty(find(yesCrL)) == 1 % Non ho Crack Link
        text = 'Crack Link have not been analyzed during the execution of soglie function';
        fprintf(fileID,fmt,text);
        Num_Allarmi_CrL = 0;
    else
        clear Date_1gg
        C = cumsum(rCrL);
        Alert_CrL = zeros(1,C(end)); % Livello di Allerta
        Date_Alert_CrL = zeros(1,C(end)); % Data di Allerta
        Node_Alert_CrL = zeros(1,C(end)); % Numero di nodo in Allerta
        ID_Alert_CrL = cell(1,C(end)); % ID centralina - ID catena in Allerta
        index = 1;
        prog = 1;
        for n = 1:col % Ripeto per ogni Array
            DatiElab = cell(1);
            Date = zeros(1);
            if yesCrL(n) == 1
                status = system(['/usr/local/matlab_func/run_ATD_lnx.sh /usr/local/MATLAB/MATLAB_Runtime/v93 ' char(chainID(n,2)) ' ' char(chainID(n,4)) '']);
               if status == 1
                   break % se crasha il SW salto l'analisi
               end
                date_rif = now-15; % 15 giorni
                for nn = 1:rCrL(n) % Ripeto per ogni nodo
                    comando = ['select EventDate, EventTime from ElabDataView where EventDate >= ''' ...
                        datestr(date_rif,'yyyy-mm-dd') ''' and  ToolNameID = ''' char(chainID(n,4))...
                        ''' and UnitName = ''' char(chainID(n,2)) ''' and NodeNum = ''' num2str(cell2mat(NodoCrackLink(nn,n))) ''' '];
                    curs = exec(conn,comando);
                    curs = fetch(curs);
                    DateElab = curs.Data;
                    % Modifico il formato di data e ora in DATini.
                    [rD,cD] = size(DateElab);
                    if rD ~= 1 && cD ~= 1
                        T = [cell2mat(DateElab(:,1)) repmat(' ', [rD,1]) cell2mat(DateElab(:,2))];
                        if nn == 1
                            Date(1:rD,n) = datenum(T); % scrivo lamatrice date usando il primo nodo
                        end
                        comando = ['select XShift from ElabDataView where EventDate >= ''' ...
                            datestr(date_rif,'yyyy-mm-dd') ''' and  ToolNameID = ''' char(chainID(n,4))...
                            ''' and UnitName = ''' char(chainID(n,2)) ''' and NodeNum = ''' num2str(cell2mat(NodoCrackLink(nn,n))) ''' '];
                        curs = exec(conn,comando);
                        curs = fetch(curs);
                        Control = curs.Data;
                        [rCD,~] = size(Control);
                        [rDE,~] = size(DatiElab);
                        if rCD ~= rDE
                            if rCD > rDE
                                DatiElab(1:rCD,index) = Control;
                                RIF = rCD;
                            elseif rCD < rDE
                                DatiElab(1:rCD,index) = Control;
                                DatiElab(rCD+1:rDE,index) = Control(end,:);
                                RIF = rDE;
                            end
                        else
                            DatiElab(:,index) = Control; % Tutti i dati dei sensori dell'Array n
                            RIF = rDE;
                        end
                        % Guardo le soglie
                        [rCheck,cCheck] = size(DatiElab);
                        if rCheck > 1 && cCheck > 1
                            % Da Ieri
                            index1 = find(datenum(Date(:,n))>(now-1));
                            [rID,~] = size(index1);
                            if isempty(index1) == 0 && rID ~= 1 % non posso fare la diff
                                Incrementi_1gg = abs(diff(cell2mat(DatiElab(index1(1):end,index))));
                                Date_1gg(1:RIF-index1(1),n) = Date(index1(2):index1(end),n);
                                % 15 gg
                                Incrementi_15gg = abs(diff(cell2mat(DatiElab(:,index))));
                                ST15 = std(Incrementi_15gg(1:index1(1),:)); % 1 Deviazione standard per i 15 giorni
                                MAX15 = max(Incrementi_15gg(1:index1(1),:));
                                % 7 gg
                                index7 = find(datenum(Date(:,n))>(now-7));
                                Incrementi_7gg = abs(diff(cell2mat(DatiElab(index7(1):index1(1),index))));
                                ST7 = 3*std(Incrementi_7gg); % 3 Deviazioni standard per i 7 giorni
                                MAX7 = max(Incrementi_7gg);
                                % 3 gg
                                index3 = find(datenum(Date(:,n))>(now-3));
                                Incrementi_3gg = abs(diff(cell2mat(DatiElab(index3(1):index1(1),index))));
                                ST3 = 5*std(Incrementi_3gg); % 5 Deviazioni standard per i 3 giorni
                                MAX3 = max(Incrementi_3gg);
                                [rI,cI] = size(Incrementi_1gg); % Dati per quel nodo
                                soglia3 = zeros(rI,cI);
                                soglia7 = zeros(rI,cI);
                                soglia15 = zeros(rI,cI);
                                for cc = 1:cI
                                    for s = 1:rI
                                        if Incrementi_1gg(s,cc) > ST15+MAX15
                                            soglia15(s,cc) = 1;
                                        end
                                        if Incrementi_1gg(s,cc) > ST7+MAX7
                                            soglia7(s,cc) = 1;
                                        end
                                        if Incrementi_1gg(s,cc) > ST3+MAX3
                                            soglia3(s,cc) = 1;
                                        end
                                        if soglia3(s,cc) == 1 && soglia7(s,cc) == 1 && soglia15(s,cc) == 1
                                            Alert_CrL(s,prog) = 3; % Allerta del nodo di Livello 3
                                            Date_Alert_CrL(s,prog) = Date_1gg(s,n);
                                            Node_Alert_CrL(s,prog) = cell2mat(NodoCrackLink(nn,n));
                                            ID_Alert_CrL(1,prog) = cellstr([char(chainID(n,2)) '-' char(chainID(n,4))]);
                                        elseif soglia3(s,cc) == 1 && soglia7(s,cc) == 1 || soglia3(s,cc) == 1 && soglia15(s,cc) == 1 || soglia15(s,cc) == 1 && soglia7(s,cc) == 1
                                            Alert_CrL(s,prog) = 2; % Allerta del nodo di Livello 2
                                            Date_Alert_CrL(s,prog) = Date_1gg(s,n);
                                            Node_Alert_CrL(s,prog) = cell2mat(NodoCrackLink(nn,n));
                                            ID_Alert_CrL(1,prog) = cellstr([char(chainID(n,2)) '-' char(chainID(n,4))]);
                                        elseif soglia3(s,cc) == 1 || soglia7(s,cc) == 1 || soglia15(s,cc) == 1
                                            Alert_CrL(s,prog) = 1; % Allerta del nodo di Livello 1
                                            Date_Alert_CrL(s,prog) = Date_1gg(s,n);
                                            Node_Alert_CrL(s,prog) = cell2mat(NodoCrackLink(nn,n));
                                            ID_Alert_CrL(1,prog) = cellstr([char(chainID(n,2)) '-' char(chainID(n,4))]);
                                        end
                                    end
                                end
                            end
                        end
                    end
                    index = index+1;
                    prog = prog+1;
                end
                text = ['Data of ' char(chainID(n,2)) '-' char(chainID(n,4)) ' Crack Link have been analyzed'];
                fprintf(fileID,fmt,text);
                index = 1;
            end
        end
        [num_CrL,~] = size(rCrL);
        ini = 1;
        fin = cumsum(rCrL);
        Num_Allarmi_CrL = zeros(1,num_CrL);
        for AL = 1:num_CrL
            if ini > fin(AL) % si va a quello dopo
            else
                Livello = max(max(Alert_CrL(:,ini:fin(AL))));
                if isempty(Livello) == 1
                    Livello = 0;
                end
                Num_Allarmi_CrL(1,AL) = Livello;
                ini = fin(AL)+1;
            end
        end
    end
    
    %% 3D Crack Link
    if isempty(find(yes3DCrL)) == 1 % Non ho 3D Crack Link
        text = '3D Crack Link have not been analyzed during the execution of soglie function';
        fprintf(fileID,fmt,text);
        Num_Allarmi_3DCrL = 0;
    else
        clear Date_1gg
        CrL3D = cumsum(r3DCrL);
        Alert_3DCrL = zeros(1,CrL3D(end)); % Livello di Allerta
        Date_Alert_3DCrL = zeros(1,CrL3D(end)); % Data di Allerta
        Node_Alert_3DCrL = zeros(1,CrL3D(end)); % Numero di nodo in Allerta
        ID_Alert_3DCrL = cell(1,CrL3D(end)); % ID centralina - ID catena in Allerta
        index = 1;
        prog = 1;
        for n = 1:col % Ripeto per ogni Array
            DatiElab = cell(1);
            Date = zeros(1);
            if yes3DCrL(n) == 1
               status = system(['/usr/local/matlab_func/run_ATD_lnx.sh /usr/local/MATLAB/MATLAB_Runtime/v93 ' char(chainID(n,2)) ' ' char(chainID(n,4)) '']);
               if status == 1
                   break % se crasha il SW salto l'analisi
               end
                date_rif = now-15; % 15 giorni
                for nn = 1:r3DCrL(n) % Ripeto per ogni nodo
                    comando = ['select EventDate, EventTime from ElabDataView where EventDate >= ''' ...
                        datestr(date_rif,'yyyy-mm-dd') ''' and  ToolNameID = ''' char(chainID(n,4))...
                        ''' and UnitName = ''' char(chainID(n,2)) ''' and NodeNum = ''' num2str(cell2mat(Nodo3DCrackLink(nn,n))) ''' '];
                    curs = exec(conn,comando);
                    curs = fetch(curs);
                    DateElab = curs.Data;
                    % Modifico il formato di data e ora in DATini.
                    [rD,cD] = size(DateElab);
                    if rD ~= 1 && cD ~= 1
                        T = [cell2mat(DateElab(:,1)) repmat(' ', [rD,1]) cell2mat(DateElab(:,2))];
                        if nn == 1
                            Date(1:rD,n) = datenum(T); % scrivo lamatrice date usando il primo nodo
                        end
                        comando = ['select XShift, YShift, ZShift from ElabDataView where EventDate >= ''' ...
                            datestr(date_rif,'yyyy-mm-dd') ''' and  ToolNameID = ''' char(chainID(n,4))...
                            ''' and UnitName = ''' char(chainID(n,2)) ''' and NodeNum = ''' num2str(cell2mat(Nodo3DCrackLink(nn,n))) ''' '];
                        curs = exec(conn,comando);
                        curs = fetch(curs);
                        Control = curs.Data;
                        [rCD,~] = size(Control);
                        [rDE,~] = size(DatiElab);
                        if rCD ~= rDE
                            if rCD > rDE
                                DatiElab(1:rCD,index:index+2) = Control;
                                RIF = rCD;
                            elseif rCD < rDE
                                DatiElab(1:rCD,index:index+2) = Control;
                                DatiElab(rCD+1:rDE,index:index+2) = Control(end,:);
                                RIF = rDE;
                            end
                        else
                            DatiElab(:,index:index+2) = Control; % Tutti i dati dei sensori dell'Array n
                            RIF = rDE;
                        end
                        % Guardo le soglie
                        [rCheck,cCheck] = size(DatiElab);
                        if rCheck > 1 && cCheck > 1
                            % Da Ieri
                            index1 = find(datenum(Date(:,n))>(now-1));
                            [rID,~] = size(index1);
                            if isempty(index1) == 0 && rID ~= 1 % non posso fare la diff
                                Incrementi_1gg = abs(diff(cell2mat(DatiElab(index1(1):end,index:index+2))));
                                Date_1gg(1:RIF-index1(1),n) = Date(index1(2):index1(end),n);
                                % 15 gg
                                Incrementi_15gg = abs(diff(cell2mat(DatiElab(:,index:index+2))));
                                ST15 = std(Incrementi_15gg(1:index1(1),:)); % 1 Deviazione standard per i 15 giorni
                                MAX15 = max(Incrementi_15gg(1:index1(1),:));
                                % 7 gg
                                index7 = find(datenum(Date(:,n))>(now-7));
                                Incrementi_7gg = abs(diff(cell2mat(DatiElab(index7(1):index1(1),index:index+2))));
                                ST7 = 3*std(Incrementi_7gg); % 3 Deviazioni standard per i 7 giorni
                                MAX7 = max(Incrementi_7gg);
                                % 3 gg
                                index3 = find(datenum(Date(:,n))>(now-3));
                                Incrementi_3gg = abs(diff(cell2mat(DatiElab(index3(1):index1(1),index:index+2))));
                                ST3 = 5*std(Incrementi_3gg); % 5 Deviazioni standard per i 3 giorni
                                MAX3 = max(Incrementi_3gg);
                                [rI,cI] = size(Incrementi_1gg); % Dati per quel nodo
                                soglia3 = zeros(rI,cI);
                                soglia7 = zeros(rI,cI);
                                soglia15 = zeros(rI,cI);
                                for cc = 1:cI
                                    for s = 1:rI
                                        if Incrementi_1gg(s,cc) > ST15+MAX15
                                            soglia15(s,cc) = 1;
                                        end
                                        if Incrementi_1gg(s,cc) > ST7+MAX7
                                            soglia7(s,cc) = 1;
                                        end
                                        if Incrementi_1gg(s,cc) > ST3+MAX3
                                            soglia3(s,cc) = 1;
                                        end
                                        if soglia3(s,cc) == 1 && soglia7(s,cc) == 1 && soglia15(s,cc) == 1
                                            Alert_3DCrL(s,prog) = 3; % Allerta del nodo di Livello 3
                                            Date_Alert_3DCrL(s,prog) = Date_1gg(s,n);
                                            Node_Alert_3DCrL(s,prog) = cell2mat(Nodo3DCrackLink(nn,n));
                                            ID_Alert_3DCrL(1,prog) = cellstr([char(chainID(n,2)) '-' char(chainID(n,4))]);
                                        elseif soglia3(s,cc) == 1 && soglia7(s,cc) == 1 || soglia3(s,cc) == 1 && soglia15(s,cc) == 1 || soglia15(s,cc) == 1 && soglia7(s,cc) == 1
                                            Alert_3DCrL(s,prog) = 2; % Allerta del nodo di Livello 2
                                            Date_Alert_3DCrL(s,prog) = Date_1gg(s,n);
                                            Node_Alert_3DCrL(s,prog) = cell2mat(Nodo3DCrackLink(nn,n));
                                            ID_Alert_3DCrL(1,prog) = cellstr([char(chainID(n,2)) '-' char(chainID(n,4))]);
                                        elseif soglia3(s,cc) == 1 || soglia7(s,cc) == 1 || soglia15(s,cc) == 1
                                            Alert_3DCrL(s,prog) = 1; % Allerta del nodo di Livello 1
                                            Date_Alert_3DCrL(s,prog) = Date_1gg(s,n);
                                            Node_Alert_3DCrL(s,prog) = cell2mat(Nodo3DCrackLink(nn,n));
                                            ID_Alert_3DCrL(1,prog) = cellstr([char(chainID(n,2)) '-' char(chainID(n,4))]);
                                        end
                                    end
                                end
                            end
                        end
                    end
                    index = index+3;
                    prog = prog+1;
                end
                text = ['Data of ' char(chainID(n,2)) '-' char(chainID(n,4)) ' 3D Crack Link have been analyzed'];
                fprintf(fileID,fmt,text);
                index = 1;
            end
        end
        [num_3DCrL,~] = size(r3DCrL);
        ini = 1;
        fin = cumsum(r3DCrL);
        Num_Allarmi_3DCrL = zeros(1,num_3DCrL);
        for AL = 1:num_3DCrL
            if ini > fin(AL) % si va a quello dopo
            else
                Livello = max(max(Alert_3DCrL(:,ini:fin(AL))));
                if isempty(Livello) == 1
                    Livello = 0;
                end
                Num_Allarmi_3DCrL(1,AL) = Livello;
                ini = fin(AL)+1;
            end
        end
    end
    
    %% Rain Link
    if isempty(find(yesRaL)) == 1 % Non ho Rain Link
        text = 'Rain Link have not been analyzed during the execution of soglie function';
        fprintf(fileID,fmt,text);
        Num_Allarmi_RaL = 0;
    else
        clear Date_1gg
        RaL = cumsum(rRaL);
        Alert_RaL = zeros(1,RaL(end)); % Livello di Allerta
        Date_Alert_RaL = zeros(1,RaL(end)); % Data di Allerta
        Node_Alert_RaL = zeros(1,RaL(end)); % Numero di nodo in Allerta
        ID_Alert_RaL = cell(1,RaL(end)); % ID centralina - ID catena in Allerta
        index = 1;
        prog = 1;
        for n = 1:col % Ripeto per ogni Array
            DatiElab = cell(1);
            Date = zeros(1);
            if yesRaL(n) == 1
                date_rif = now-15; % 15 giorni
                for nn = 1:rRaL(n) % Ripeto per ogni nodo
                    comando = ['select EventDate, EventTime from ElabDataView where EventDate >= ''' ...
                        datestr(date_rif,'yyyy-mm-dd') ''' and  ToolNameID = ''' char(chainID(n,4))...
                        ''' and UnitName = ''' char(chainID(n,2)) ''' and NodeNum = ''' ...
                        num2str(cell2mat(NodoRainLink(nn,n))) ''' '];
                    curs = exec(conn,comando);
                    curs = fetch(curs);
                    DateElab = curs.Data;
                    % Modifico il formato di data e ora in DATini.
                    [rD,cD] = size(DateElab);
                    if rD ~= 1 && cD ~= 1
                        T = [cell2mat(DateElab(:,1)) repmat(' ', [rD,1]) cell2mat(DateElab(:,2))];
                        if nn == 1
                            Date(1:rD,n) = datenum(T); % scrivo lamatrice date usando il primo nodo
                        end
                        comando = ['select Z from ElabDataView where EventDate >= ''' ...
                            datestr(date_rif,'yyyy-mm-dd') ''' and  ToolNameID = ''' char(chainID(n,4))...
                            ''' and UnitName = ''' char(chainID(n,2)) ''' and NodeNum = '''...
                            num2str(cell2mat(NodoRainLink(nn,n))) ''' '];
                        curs = exec(conn,comando);
                        curs = fetch(curs);
                        Control = curs.Data;
                        [rCD,~] = size(Control);
                        [rDE,~] = size(DatiElab);
                        if rCD ~= rDE
                            if rCD > rDE
                                DatiElab(1:rCD,index) = Control;
                                RIF = rCD;
                            elseif rCD < rDE
                                DatiElab(1:rCD,index) = Control;
                                DatiElab(rCD+1:rDE,index) = Control(end,:);
                                RIF = rDE;
                            end
                        else
                            DatiElab(:,index) = Control; % Tutti i dati dei sensori dell'Array n
                            RIF = rDE;
                        end
                        % Guardo le soglie
                        [rCheck,cCheck] = size(DatiElab);
                        if rCheck > 1 && cCheck > 1
                            % Da Ieri
                            index1 = find(datenum(Date(:,n))>(now-1));
                            [rID,~] = size(index1);
                            if isempty(index1) == 0 && rID ~= 1 % non posso fare la diff
                                Incrementi_1gg = abs(diff(cell2mat(DatiElab(index1(1):end,index))));
                                Date_1gg(1:RIF-index1(1),n) = Date(index1(2):index1(end),n);
                                % 15 gg
                                Incrementi_15gg = abs(diff(cell2mat(DatiElab(:,index))));
                                ST15 = std(Incrementi_15gg(1:index1(1),:)); % 1 Deviazione standard per i 15 giorni
                                MAX15 = max(Incrementi_15gg(1:index1(1),:));
                                % 7 gg
                                index7 = find(datenum(Date(:,n))>(now-7));
                                Incrementi_7gg = abs(diff(cell2mat(DatiElab(index7(1):index1(1),index))));
                                ST7 = 3*std(Incrementi_7gg); % 3 Deviazioni standard per i 7 giorni
                                MAX7 = max(Incrementi_7gg);
                                % 3 gg
                                index3 = find(datenum(Date(:,n))>(now-3));
                                Incrementi_3gg = abs(diff(cell2mat(DatiElab(index3(1):index1(1),index))));
                                ST3 = 5*std(Incrementi_3gg); % 5 Deviazioni standard per i 3 giorni
                                MAX3 = max(Incrementi_3gg);
                                [rI,cI] = size(Incrementi_1gg); % Dati per quel nodo
                                soglia3 = zeros(rI,cI);
                                soglia7 = zeros(rI,cI);
                                soglia15 = zeros(rI,cI);
                                for cc = 1:cI
                                    for s = 1:rI
                                        if Incrementi_1gg(s,cc) > ST15+MAX15
                                            soglia15(s,cc) = 1;
                                        end
                                        if Incrementi_1gg(s,cc) > ST7+MAX7
                                            soglia7(s,cc) = 1;
                                        end
                                        if Incrementi_1gg(s,cc) > ST3+MAX3
                                            soglia3(s,cc) = 1;
                                        end
                                        if soglia3(s,cc) == 1 && soglia7(s,cc) == 1 && soglia15(s,cc) == 1
                                            Alert_RaL(s,prog) = 3; % Allerta del nodo di Livello 3
                                            Date_Alert_RaL(s,prog) = Date_1gg(s,n);
                                            Node_Alert_RLa(s,prog) = cell2mat(NodoRainLink(nn,n));
                                            ID_Alert_RaL(1,prog) = cellstr([char(chainID(n,2)) '-' char(chainID(n,4))]);
                                        elseif soglia3(s,cc) == 1 && soglia7(s,cc) == 1 || soglia3(s,cc) == 1 && soglia15(s,cc) == 1 || soglia15(s,cc) == 1 && soglia7(s,cc) == 1
                                            Alert_RaL(s,prog) = 2; % Allerta del nodo di Livello 2
                                            Date_Alert_RaL(s,prog) = Date_1gg(s,n);
                                            Node_Alert_RaL(s,prog) = cell2mat(NodoRainLink(nn,n));
                                            ID_Alert_RaL(1,prog) = cellstr([char(chainID(n,2)) '-' char(chainID(n,4))]);
                                        elseif soglia3(s,cc) == 1 || soglia7(s,cc) == 1 || soglia15(s,cc) == 1
                                            Alert_RaL(s,prog) = 1; % Allerta del nodo di Livello 1
                                            Date_Alert_RaL(s,prog) = Date_1gg(s,n);
                                            Node_Alert_RaL(s,prog) = cell2mat(NodoRainLink(nn,n));
                                            ID_Alert_RaL(1,prog) = cellstr([char(chainID(n,2)) '-' char(chainID(n,4))]);
                                        end
                                    end
                                end
                            end
                        end
                    end
                    index = index+1;
                    prog = prog+1;
                end
                text = ['Data of ' char(chainID(n,2)) '-' char(chainID(n,4)) ' Rain Link have been analyzed'];
                fprintf(fileID,fmt,text);
                index = 1;
            end
        end
        [num_RaL,~] = size(rRaL);
        ini = 1;
        fin = cumsum(rRaL);
        Num_Allarmi_RaL = zeros(1,num_RaL);
        for AL = 1:num_RaL
            if ini > fin(AL) % si va a quello dopo
            else
                Livello = max(max(Alert_RaL(:,ini:fin(AL))));
                if isempty(Livello) == 1
                    Livello = 0;
                end
                Num_Allarmi_RaL(1,AL) = Livello;
                ini = fin(AL)+1;
            end
        end
    end
    
    %% Extensometer Link
    if isempty(find(yesEL)) == 1 % Non ho Extensometer Link
        text = 'Extensometer Link have not been analyzed during the execution of soglie function';
        fprintf(fileID,fmt,text);
        Num_Allarmi_EL = 0;
    else
        clear Date_1gg
        EL = cumsum(rEL);
        Alert_EL = zeros(1,EL(end)); % Livello di Allerta
        Date_Alert_EL = zeros(1,EL(end)); % Data di Allerta
        Node_Alert_EL = zeros(1,EL(end)); % Numero di nodo in Allerta
        ID_Alert_EL = cell(1,EL(end)); % ID centralina - ID catena in Allerta
        index = 1;
        prog = 1;
        for n = 1:col % Ripeto per ogni Array
            DatiElab = cell(1);
            Date = zeros(1);
            if yesEL(n) == 1
                status = system(['/usr/local/matlab_func/run_ATD_lnx.sh /usr/local/MATLAB/MATLAB_Runtime/v93 ' char(chainID(n,2)) ' ' char(chainID(n,4)) '']);
               if status == 1
                   break % se crasha il SW salto l'analisi
               end
                date_rif = now-15; % 15 giorni
                for nn = 1:rEL(n) % Ripeto per ogni nodo
                    comando = ['select EventDate, EventTime from ElabDataView where EventDate >= ''' ...
                        datestr(date_rif,'yyyy-mm-dd') ''' and  ToolNameID = ''' char(chainID(n,4))...
                        ''' and UnitName = ''' char(chainID(n,2)) ''' and NodeNum = ''' num2str(cell2mat(NodoExtensometerLink(nn,n))) ''' '];
                    curs = exec(conn,comando);
                    curs = fetch(curs);
                    DateElab = curs.Data;
                    % Modifico il formato di data e ora in DATini.
                    [rD,cD] = size(DateElab);
                    if rD ~= 1 && cD ~= 1
                        T = [cell2mat(DateElab(:,1)) repmat(' ', [rD,1]) cell2mat(DateElab(:,2))];
                        if nn == 1
                            Date(1:rD,n) = datenum(T); % scrivo la matrice date usando il primo nodo
                        end
                        comando = ['select XShift from ElabDataView where EventDate >= ''' ...
                            datestr(date_rif,'yyyy-mm-dd') ''' and  ToolNameID = ''' char(chainID(n,4))...
                            ''' and UnitName = ''' char(chainID(n,2)) ''' and NodeNum = ''' num2str(cell2mat(NodoExtensometerLink(nn,n))) ''' '];
                        curs = exec(conn,comando);
                        curs = fetch(curs);
                        Control = curs.Data;
                        [rCD,~] = size(Control);
                        [rDE,~] = size(DatiElab);
                        if rCD ~= rDE
                            if rCD > rDE
                                DatiElab(1:rCD,index) = Control;
                                RIF = rCD;
                            elseif rCD < rDE
                                DatiElab(1:rCD,index) = Control;
                                DatiElab(rCD+1:rDE,index) = Control(end,:);
                                RIF = rDE;
                            end
                        else
                            DatiElab(:,index) = Control; % Tutti i dati dei sensori dell'Array n
                            RIF = rDE;
                        end
                        % Guardo le soglie
                        [rCheck,cCheck] = size(DatiElab);
                        if rCheck > 1 && cCheck > 1
                            % Da Ieri
                            index1 = find(datenum(Date(:,n))>(now-1));
                            [rID,~] = size(index1);
                            if isempty(index1) == 0 && rID ~= 1 % non posso fare la diff
                                Incrementi_1gg = abs(diff(cell2mat(DatiElab(index1(1):end,index))));
                                Date_1gg(1:RIF-index1(1),n) = Date(index1(2):index1(end),n);
                                % 15 gg
                                Incrementi_15gg = abs(diff(cell2mat(DatiElab(:,index))));
                                ST15 = std(Incrementi_15gg(1:index1(1),:)); % 1 Deviazione standard per i 15 giorni
                                MAX15 = max(Incrementi_15gg(1:index1(1),:));
                                % 7 gg
                                index7 = find(datenum(Date(:,n))>(now-7));
                                Incrementi_7gg = abs(diff(cell2mat(DatiElab(index7(1):index1(1),index))));
                                ST7 = 3*std(Incrementi_7gg); % 3 Deviazioni standard per i 7 giorni
                                MAX7 = max(Incrementi_7gg);
                                % 3 gg
                                index3 = find(datenum(Date(:,n))>(now-3));
                                Incrementi_3gg = abs(diff(cell2mat(DatiElab(index3(1):index1(1),index))));
                                ST3 = 5*std(Incrementi_3gg); % 5 Deviazioni standard per i 3 giorni
                                MAX3 = max(Incrementi_3gg);
                                [rI,cI] = size(Incrementi_1gg); % Dati per quel nodo
                                soglia3 = zeros(rI,cI);
                                soglia7 = zeros(rI,cI);
                                soglia15 = zeros(rI,cI);
                                for cc = 1:cI
                                    for s = 1:rI
                                        if Incrementi_1gg(s,cc) > ST15+MAX15
                                            soglia15(s,cc) = 1;
                                        end
                                        if Incrementi_1gg(s,cc) > ST7+MAX7
                                            soglia7(s,cc) = 1;
                                        end
                                        if Incrementi_1gg(s,cc) > ST3+MAX3
                                            soglia3(s,cc) = 1;
                                        end
                                        if soglia3(s,cc) == 1 && soglia7(s,cc) == 1 && soglia15(s,cc) == 1
                                            Alert_EL(s,prog) = 3; % Allerta del nodo di Livello 3
                                            Date_Alert_EL(s,prog) = Date_1gg(s,n);
                                            Node_Alert_EL(s,prog) = cell2mat(NodoExtensometerLink(nn,n));
                                            ID_Alert_EL(1,prog) = cellstr([char(chainID(n,2)) '-' char(chainID(n,4))]);
                                        elseif soglia3(s,cc) == 1 && soglia7(s,cc) == 1 || soglia3(s,cc) == 1 && soglia15(s,cc) == 1 || soglia15(s,cc) == 1 && soglia7(s,cc) == 1
                                            Alert_EL(s,prog) = 2; % Allerta del nodo di Livello 2
                                            Date_Alert_EL(s,prog) = Date_1gg(s,n);
                                            Node_Alert_EL(s,prog) = cell2mat(NodoExtensometerLink(nn,n));
                                            ID_Alert_EL(1,prog) = cellstr([char(chainID(n,2)) '-' char(chainID(n,4))]);
                                        elseif soglia3(s,cc) == 1 || soglia7(s,cc) == 1 || soglia15(s,cc) == 1
                                            Alert_EL(s,prog) = 1; % Allerta del nodo di Livello 1
                                            Date_Alert_EL(s,prog) = Date_1gg(s,n);
                                            Node_Alert_EL(s,prog) = cell2mat(NodoExtensometerLink(nn,n));
                                            ID_Alert_EL(1,prog) = cellstr([char(chainID(n,2)) '-' char(chainID(n,4))]);
                                        end
                                    end
                                end
                            end
                        end
                    end
                    index = index+1;
                    prog = prog+1;
                end
                text = ['Data of ' char(chainID(n,2)) '-' char(chainID(n,4)) ' Extensometer Link have been analyzed'];
                fprintf(fileID,fmt,text);
                index = 1;
            end
        end
        [num_EL,~] = size(rEL);
        ini = 1;
        fin = cumsum(rEL);
        Num_Allarmi_EL = zeros(1,num_EL);
        for AL = 1:num_EL
            if ini > fin(AL) % si va a quello dopo
            else
                Livello = max(max(Alert_EL(:,ini:fin(AL))));
                if isempty(Livello) == 1
                    Livello = 0;
                end
                Num_Allarmi_EL(1,AL) = Livello;
                ini = fin(AL)+1;
            end
        end
    end
    
    %% 3D Extensometer Link
    if isempty(find(yes3DEL)) == 1 % Non ho 3D Extensometer Link
        text = '3D Extensometer Link have not been analyzed during the execution of soglie function';
        fprintf(fileID,fmt,text);
        Num_Allarmi_3DEL = 0;
    else
        clear Date_1gg
        EL3D = cumsum(r3DEL);
        Alert_3DEL = zeros(1,EL3D(end)); % Livello di Allerta
        Date_Alert_3DEL = zeros(1,EL3D(end)); % Data di Allerta
        Node_Alert_3DEL = zeros(1,EL3D(end)); % Numero di nodo in Allerta
        ID_Alert_3DEL = cell(1,EL3D(end)); % ID centralina - ID catena in Allerta
        index = 1;
        prog = 1;
        for n = 1:col % Ripeto per ogni Array
            DatiElab = cell(1);
            Date = zeros(1);
            if yes3DEL(n) == 1
               status = system(['/usr/local/matlab_func/run_ATD_lnx.sh /usr/local/MATLAB/MATLAB_Runtime/v93 ' char(chainID(n,2)) ' ' char(chainID(n,4)) '']);
               if status == 1
                   break % se crasha il SW salto l'analisi
               end
                date_rif = now-15; % 15 giorni
                for nn = 1:r3DEL(n) % Ripeto per ogni nodo
                    comando = ['select EventDate, EventTime from ElabDataView where EventDate >= ''' ...
                        datestr(date_rif,'yyyy-mm-dd') ''' and  ToolNameID = ''' char(chainID(n,4))...
                        ''' and UnitName = ''' char(chainID(n,2)) ''' and NodeNum = ''' num2str(cell2mat(Nodo3DExtensometerLink(nn,n))) ''' '];
                    curs = exec(conn,comando);
                    curs = fetch(curs);
                    DateElab = curs.Data;
                    % Modifico il formato di data e ora in DATini.
                    [rD,cD] = size(DateElab);
                    if rD ~= 1 && cD ~= 1
                        T = [cell2mat(DateElab(:,1)) repmat(' ', [rD,1]) cell2mat(DateElab(:,2))];
                        if nn == 1
                            Date(1:rD,n) = datenum(T); % scrivo lamatrice date usando il primo nodo
                        end
                        comando = ['select XShift, YShift, ZShift from ElabDataView where EventDate >= ''' ...
                            datestr(date_rif,'yyyy-mm-dd') ''' and  ToolNameID = ''' char(chainID(n,4))...
                            ''' and UnitName = ''' char(chainID(n,2)) ''' and NodeNum = ''' num2str(cell2mat(Nodo3DExtensometerLink(nn,n))) ''' '];
                        curs = exec(conn,comando);
                        curs = fetch(curs);
                        Control = curs.Data;
                        [rCD,~] = size(Control);
                        [rDE,~] = size(DatiElab);
                        if rCD ~= rDE
                            if rCD > rDE
                                DatiElab(1:rCD,index:index+2) = Control;
                                RIF = rCD;
                            elseif rCD < rDE
                                DatiElab(1:rCD,index:index+2) = Control;
                                DatiElab(rCD+1:rDE,index:index+2) = Control(end,:);
                                RIF = rDE;
                            end
                        else
                            DatiElab(:,index) = Control; % Tutti i dati dei sensori dell'Array n
                            RIF = rDE;
                        end
                        % Guardo le soglie
                        [rCheck,cCheck] = size(DatiElab);
                        if rCheck > 1 && cCheck > 1
                            % Da Ieri
                            index1 = find(datenum(Date(:,n))>(now-1));
                            [rID,~] = size(index1);
                            if isempty(index1) == 0 && rID ~= 1 % non posso fare la diff
                                Incrementi_1gg = abs(diff(cell2mat(DatiElab(index1(1):end,index:index+2))));
                                Date_1gg(1:RIF-index1(1),n) = Date(index1(2):index1(end),n);
                                % 15 gg
                                Incrementi_15gg = abs(diff(cell2mat(DatiElab(:,index:index+2))));
                                ST15 = std(Incrementi_15gg(1:index1(1),:)); % 1 Deviazione standard per i 15 giorni
                                MAX15 = max(Incrementi_15gg(1:index1(1),:));
                                % 7 gg
                                index7 = find(datenum(Date(:,n))>(now-7));
                                Incrementi_7gg = abs(diff(cell2mat(DatiElab(index7(1):index1(1),index:index+2))));
                                ST7 = 3*std(Incrementi_7gg); % 3 Deviazioni standard per i 7 giorni
                                MAX7 = max(Incrementi_7gg);
                                % 3 gg
                                index3 = find(datenum(Date(:,n))>(now-3));
                                Incrementi_3gg = abs(diff(cell2mat(DatiElab(index3(1):index1(1),index:index+2))));
                                ST3 = 5*std(Incrementi_3gg); % 5 Deviazioni standard per i 3 giorni
                                MAX3 = max(Incrementi_3gg);
                                [rI,cI] = size(Incrementi_1gg); % Dati per quel nodo
                                soglia3 = zeros(rI,cI);
                                soglia7 = zeros(rI,cI);
                                soglia15 = zeros(rI,cI);
                                for cc = 1:cI
                                    for s = 1:rI
                                        if Incrementi_1gg(s,cc) > ST15+MAX15
                                            soglia15(s,cc) = 1;
                                        end
                                        if Incrementi_1gg(s,cc) > ST7+MAX7
                                            soglia7(s,cc) = 1;
                                        end
                                        if Incrementi_1gg(s,cc) > ST3+MAX3
                                            soglia3(s,cc) = 1;
                                        end
                                        if soglia3(s,cc) == 1 && soglia7(s,cc) == 1 && soglia15(s,cc) == 1
                                            Alert_3DEL(s,prog) = 3; % Allerta del nodo di Livello 3
                                            Date_Alert_3DEL(s,prog) = Date_1gg(s,n);
                                            Node_Alert_3DEL(s,prog) = cell2mat(Nodo3DExtensometerLink(nn,n));
                                            ID_Alert_3DEL(1,prog) = cellstr([char(chainID(n,2)) '-' char(chainID(n,4))]);
                                        elseif soglia3(s,cc) == 1 && soglia7(s,cc) == 1 || soglia3(s,cc) == 1 && soglia15(s,cc) == 1 || soglia15(s,cc) == 1 && soglia7(s,cc) == 1
                                            Alert_3DEL(s,prog) = 2; % Allerta del nodo di Livello 2
                                            Date_Alert_3DEL(s,prog) = Date_1gg(s,n);
                                            Node_Alert_3DEL(s,prog) = cell2mat(Nodo3DExtensometerLink(nn,n));
                                            ID_Alert_3DEL(1,prog) = cellstr([char(chainID(n,2)) '-' char(chainID(n,4))]);
                                        elseif soglia3(s,cc) == 1 || soglia7(s,cc) == 1 || soglia15(s,cc) == 1
                                            Alert_3DEL(s,prog) = 1; % Allerta del nodo di Livello 1
                                            Date_Alert_3DEL(s,prog) = Date_1gg(s,n);
                                            Node_Alert_3DEL(s,prog) = cell2mat(Nodo3DExtensometerLink(nn,n));
                                            ID_Alert_3DEL(1,prog) = cellstr([char(chainID(n,2)) '-' char(chainID(n,4))]);
                                        end
                                    end
                                end
                            end
                        end
                    end
                    index = index+3;
                    prog = prog+1;
                end
                text = ['Data of ' char(chainID(n,2)) '-' char(chainID(n,4)) ' 3D Extensometer Link have been analyzed'];
                fprintf(fileID,fmt,text);
                index = 1;
            end
        end
        [num_3DEL,~] = size(r3DEL);
        ini = 1;
        fin = cumsum(r3DEL);
        Num_Allarmi_3DEL = zeros(1,num_3DEL);
        for AL = 1:num_3DEL
            if ini > fin(AL) % si va a quello dopo
            else
                Livello = max(max(Alert_3DEL(:,ini:fin(AL))));
                if isempty(Livello) == 1
                    Livello = 0;
                end
                Num_Allarmi_3DEL(1,AL) = Livello;
                ini = fin(AL)+1;
            end
        end
    end
    
    %% Wire Extensometer Link
    if isempty(find(yesWEL)) == 1 % Non ho Wire Extensometer Link
        text = 'Wire Extensometer Link have not been analyzed during the execution of soglie function';
        fprintf(fileID,fmt,text);
        Num_Allarmi_WEL = 0;
    else
        clear Date_1gg
        WEL = cumsum(rWEL);
        Alert_WEL = zeros(1,WEL(end)); % Livello di Allerta
        Date_Alert_WEL = zeros(1,WEL(end)); % Data di Allerta
        Node_Alert_WEL = zeros(1,WEL(end)); % Numero di nodo in Allerta
        ID_Alert_WEL = cell(1,WEL(end)); % ID centralina - ID catena in Allerta
        index = 1;
        prog = 1;
        for n = 1:col % Ripeto per ogni Array
            DatiElab = cell(1);
            Date = zeros(1);
            if yesWEL(n) == 1
                status = system(['/usr/local/matlab_func/run_ATD_lnx.sh /usr/local/MATLAB/MATLAB_Runtime/v93 ' char(chainID(n,2)) ' ' char(chainID(n,4)) '']);
               if status == 1
                   break % se crasha il SW salto l'analisi
               end
                date_rif = now-15; % 15 giorni
                for nn = 1:rWEL(n) % Ripeto per ogni nodo
                    comando = ['select EventDate, EventTime from ElabDataView where EventDate >= ''' ...
                        datestr(date_rif,'yyyy-mm-dd') ''' and  ToolNameID = ''' char(chainID(n,4))...
                        ''' and UnitName = ''' char(chainID(n,2)) ''' and NodeNum = ''' num2str(cell2mat(NodoWireExtensometerLink(nn,n))) ''' '];
                    curs = exec(conn,comando);
                    curs = fetch(curs);
                    DateElab = curs.Data;
                    % Modifico il formato di data e ora in DATini.
                    [rD,cD] = size(DateElab);
                    if rD ~= 1 && cD ~= 1
                        T = [cell2mat(DateElab(:,1)) repmat(' ', [rD,1]) cell2mat(DateElab(:,2))];
                        if nn == 1
                            Date(1:rD,n) = datenum(T); % scrivo lamatrice date usando il primo nodo
                        end
                        comando = ['select XShift from ElabDataView where EventDate >= ''' ...
                            datestr(date_rif,'yyyy-mm-dd') ''' and  ToolNameID = ''' char(chainID(n,4))...
                            ''' and UnitName = ''' char(chainID(n,2)) ''' and NodeNum = ''' num2str(cell2mat(NodoWireExtensometerLink(nn,n))) ''' '];
                        curs = exec(conn,comando);
                        curs = fetch(curs);
                        Control = curs.Data;
                        [rCD,~] = size(Control);
                        [rDE,~] = size(DatiElab);
                        if rCD ~= rDE
                            if rCD > rDE
                                DatiElab(1:rCD,index) = Control;
                                RIF = rCD;
                            elseif rCD < rDE
                                DatiElab(1:rCD,index) = Control;
                                DatiElab(rCD+1:rDE,index) = Control(end,:);
                                RIF = rDE;
                            end
                        else
                            DatiElab(:,index) = Control; % Tutti i dati dei sensori dell'Array n
                            RIF = rDE;
                        end
                        % Guardo le soglie
                        [rCheck,cCheck] = size(DatiElab);
                        if rCheck > 1 && cCheck > 1
                            % Da Ieri
                            index1 = find(datenum(Date(:,n))>(now-1));
                            [rID,~] = size(index1);
                            if isempty(index1) == 0 && rID ~= 1 % non posso fare la diff
                                Incrementi_1gg = abs(diff(cell2mat(DatiElab(index1(1):end,index))));
                                Date_1gg(1:RIF-index1(1),n) = Date(index1(2):index1(end),n);
                                % 15 gg
                                Incrementi_15gg = abs(diff(cell2mat(DatiElab(:,index))));
                                ST15 = std(Incrementi_15gg(1:index1(1),:)); % 1 Deviazione standard per i 15 giorni
                                MAX15 = max(Incrementi_15gg(1:index1(1),:));
                                % 7 gg
                                index7 = find(datenum(Date(:,n))>(now-7));
                                Incrementi_7gg = abs(diff(cell2mat(DatiElab(index7(1):index1(1),index))));
                                ST7 = 3*std(Incrementi_7gg); % 3 Deviazioni standard per i 7 giorni
                                MAX7 = max(Incrementi_7gg);
                                % 3 gg
                                index3 = find(datenum(Date(:,n))>(now-3));
                                Incrementi_3gg = abs(diff(cell2mat(DatiElab(index3(1):index1(1),index))));
                                ST3 = 5*std(Incrementi_3gg); % 5 Deviazioni standard per i 3 giorni
                                MAX3 = max(Incrementi_3gg);
                                [rI,cI] = size(Incrementi_1gg); % Dati per quel nodo
                                soglia3 = zeros(rI,cI);
                                soglia7 = zeros(rI,cI);
                                soglia15 = zeros(rI,cI);
                                for cc = 1:cI
                                    for s = 1:rI
                                        if Incrementi_1gg(s,cc) > ST15+MAX15
                                            soglia15(s,cc) = 1;
                                        end
                                        if Incrementi_1gg(s,cc) > ST7+MAX7
                                            soglia7(s,cc) = 1;
                                        end
                                        if Incrementi_1gg(s,cc) > ST3+MAX3
                                            soglia3(s,cc) = 1;
                                        end
                                        if soglia3(s,cc) == 1 && soglia7(s,cc) == 1 && soglia15(s,cc) == 1
                                            Alert_WEL(s,prog) = 3; % Allerta del nodo di Livello 3
                                            Date_Alert_WEL(s,prog) = Date_1gg(s,n);
                                            Node_Alert_WEL(s,prog) = cell2mat(NodoWireExtensometerLink(nn,n));
                                            ID_Alert_WEL(1,prog) = cellstr([char(chainID(n,2)) '-' char(chainID(n,4))]);
                                        elseif soglia3(s,cc) == 1 && soglia7(s,cc) == 1 || soglia3(s,cc) == 1 && soglia15(s,cc) == 1 || soglia15(s,cc) == 1 && soglia7(s,cc) == 1
                                            Alert_WEL(s,prog) = 2; % Allerta del nodo di Livello 2
                                            Date_Alert_WEL(s,prog) = Date_1gg(s,n);
                                            Node_Alert_WEL(s,prog) = cell2mat(NodoWireExtensometerLink(nn,n));
                                            ID_Alert_WEL(1,prog) = cellstr([char(chainID(n,2)) '-' char(chainID(n,4))]);
                                        elseif soglia3(s,cc) == 1 || soglia7(s,cc) == 1 || soglia15(s,cc) == 1
                                            Alert_WEL(s,prog) = 1; % Allerta del nodo di Livello 1
                                            Date_Alert_WEL(s,prog) = Date_1gg(s,n);
                                            Node_Alert_WEL(s,prog) = cell2mat(NodoWireExtensometerLink(nn,n));
                                            ID_Alert_WEL(1,prog) = cellstr([char(chainID(n,2)) '-' char(chainID(n,4))]);
                                        end
                                    end
                                end
                            end
                        end
                    end
                    index = index+1;
                    prog = prog+1;
                end
                text = ['Data of ' char(chainID(n,2)) '-' char(chainID(n,4)) ' Wire Extensometer Link have been analyzed'];
                fprintf(fileID,fmt,text);
                index = 1;
            end
        end
        [num_WEL,~] = size(rWEL);
        ini = 1;
        fin = cumsum(rWEL);
        Num_Allarmi_WEL = zeros(1,num_WEL);
        for AL = 1:num_WEL
            if ini > fin(AL) % si va a quello dopo
            else
                Livello = max(max(Alert_WEL(:,ini:fin(AL))));
                if isempty(Livello) == 1
                    Livello = 0;
                end
                Num_Allarmi_WEL(1,AL) = Livello;
                ini = fin(AL)+1;
            end
        end
    end
    
    %% Multi Point Borehole Extensometer Link
    if isempty(find(yesMPBEL)) == 1 % Non ho In Place Link
        text = 'Multi Point Borehole Extensometer Link have not been analyzed during the execution of soglie function';
        fprintf(fileID,fmt,text);
        Num_Allarmi_MPBEL = 0;
    else
        clear Date_1gg
        MPBEL = cumsum(rMPBEL);
        Alert_MPBEL = zeros(1,MPBEL(end)); % Livello di Allerta
        Date_Alert_MPBEL = zeros(1,MPBEL(end)); % Data di Allerta
        Node_Alert_MPBEL = zeros(1,MPBEL(end)); % Numero di nodo in Allerta
        ID_Alert_MPBEL = cell(1,MPBEL(end)); % ID centralina - ID catena in Allerta
        index = 1;
        prog = 1;
        for n = 1:col % Ripeto per ogni Array
            DatiElab = cell(1);
            Date = zeros(1);
            if yesMPBEL(n) == 1
                status = system(['/usr/local/matlab_func/run_ATD_lnx.sh /usr/local/MATLAB/MATLAB_Runtime/v93 ' char(chainID(n,2)) ' ' char(chainID(n,4)) '']);
               if status == 1
                   break % se crasha il SW salto l'analisi
               end
                date_rif = now-15; % 15 giorni
                for nn = 1:rMPBEL(n) % Ripeto per ogni nodo
                    comando = ['select EventDate, EventTime from ElabDataView where EventDate >= ''' ...
                        datestr(date_rif,'yyyy-mm-dd') ''' and  ToolNameID = ''' char(chainID(n,4))...
                        ''' and UnitName = ''' char(chainID(n,2)) ''' and NodeNum = ''' num2str(cell2mat(NodoMultiPointExtensometerLink(nn,n))) ''' '];
                    curs = exec(conn,comando);
                    curs = fetch(curs);
                    DateElab = curs.Data;
                    % Modifico il formato di data e ora in DATini.
                    [rD,cD] = size(DateElab);
                    if rD ~= 1 && cD ~= 1
                        T = [cell2mat(DateElab(:,1)) repmat(' ', [rD,1]) cell2mat(DateElab(:,2))];
                        if nn == 1
                            Date(1:rD,n) = datenum(T); % scrivo lamatrice date usando il primo nodo
                        end
                        comando = ['select XShift, YShift, ZShift, X, Y, Z from ElabDataView where EventDate >= ''' ...
                            datestr(date_rif,'yyyy-mm-dd') ''' and  ToolNameID = ''' char(chainID(n,4))...
                            ''' and UnitName = ''' char(chainID(n,2)) ''' and NodeNum = ''' num2str(cell2mat(NodoMultiPointExtensometerLink(nn,n))) ''' '];
                        curs = exec(conn,comando);
                        curs = fetch(curs);
                        Control = curs.Data;
                        [rCD,~] = size(Control);
                        [rDE,~] = size(DatiElab);
                        if rCD ~= rDE
                            if rCD > rDE
                                DatiElab(1:rCD,index:index+5) = Control;
                                RIF = rCD;
                            elseif rCD < rDE
                                DatiElab(1:rCD,index:index+5) = Control;
                                DatiElab(rCD+1:rDE,index) = Control(end,1);
                                DatiElab(rCD+1:rDE,index+1) = Control(end,2);
                                DatiElab(rCD+1:rDE,index+2) = Control(end,3);
                                DatiElab(rCD+1:rDE,index+3) = Control(end,4);
                                DatiElab(rCD+1:rDE,index+4) = Control(end,5);
                                DatiElab(rCD+1:rDE,index+5) = Control(end,6);
                                RIF = rDE;
                            end
                        else
                            DatiElab(:,index:index+5) = Control; % Tutti i dati dei sensori dell'Array n
                            RIF = rCD;
                        end
                        % Guardo le soglie
                        [rCheck,cCheck] = size(DatiElab);
                        if rCheck > 1 && cCheck > 1
                            % Da Ieri
                            index1 = find(datenum(Date(:,n))>(now-1));
                            [rID,~] = size(index1);
                            if isempty(index1) == 0 && rID ~= 1 % non posso fare la diff
                                Incrementi_1gg = abs(diff(cell2mat(DatiElab(index1(1):end,index:index+5))));
                                Date_1gg(1:RIF-index1(1),n) = Date(index1(2):index1(end),n);
                                % 15 gg
                                Incrementi_15gg = abs(diff(cell2mat(DatiElab(:,index:index+5))));
                                ST15 = std(Incrementi_15gg(1:index1(1),:)); % 1 Deviazione standard per i 15 giorni
                                MAX15 = max(Incrementi_15gg(1:index1(1),:));
                                % 7 gg
                                index7 = find(datenum(Date(:,n))>(now-7));
                                Incrementi_7gg = abs(diff(cell2mat(DatiElab(index7(1):index1(1),index:index+5))));
                                ST7 = 3*std(Incrementi_7gg); % 3 Deviazioni standard per i 7 giorni
                                MAX7 = max(Incrementi_7gg);
                                % 3 gg
                                index3 = find(datenum(Date(:,n))>(now-3));
                                Incrementi_3gg = abs(diff(cell2mat(DatiElab(index3(1):index1(1),index:index+5))));
                                ST3 = 5*std(Incrementi_3gg); % 5 Deviazioni standard per i 3 giorni
                                MAX3 = max(Incrementi_3gg);
                                [rI,cI] = size(Incrementi_1gg); % Dati per quel nodo
                                soglia3 = zeros(rI,cI);
                                soglia7 = zeros(rI,cI);
                                soglia15 = zeros(rI,cI);
                                for cc = 1:cI
                                    for s = 1:rI
                                        if Incrementi_1gg(s,cc) > ST15+MAX15
                                            soglia15(s,cc) = 1;
                                        end
                                        if Incrementi_1gg(s,cc) > ST7+MAX7
                                            soglia7(s,cc) = 1;
                                        end
                                        if Incrementi_1gg(s,cc) > ST3+MAX3
                                            soglia3(s,cc) = 1;
                                        end
                                        if soglia3(s,cc) == 1 && soglia7(s,cc) == 1 && soglia15(s,cc) == 1
                                            Alert_MPBEL(s,prog) = 3; % Allerta del nodo di Livello 3
                                            Date_Alert_MPBEL(s,prog) = Date_1gg(s,n);
                                            Node_Alert_MPBEL(s,prog) = cell2mat(NodoMultiPointExtensometerLink(nn,n));
                                            ID_Alert_MPBEL(1,prog) = cellstr([char(chainID(n,2)) '-' char(chainID(n,4))]);
                                        elseif soglia3(s,cc) == 1 && soglia7(s,cc) == 1 || soglia3(s,cc) == 1 && soglia15(s,cc) == 1 || soglia15(s,cc) == 1 && soglia7(s,cc) == 1
                                            Alert_MPBEL(s,prog) = 2; % Allerta del nodo di Livello 2
                                            Date_Alert_MPBEL(s,prog) = Date_1gg(s,n);
                                            Node_Alert_MPBEL(s,prog) = cell2mat(NodoMultiPointExtensometerLink(nn,n));
                                            ID_Alert_MPBEL(1,prog) = cellstr([char(chainID(n,2)) '-' char(chainID(n,4))]);
                                        elseif soglia3(s,cc) == 1 || soglia7(s,cc) == 1 || soglia15(s,cc) == 1
                                            Alert_MPBEL(s,prog) = 1; % Allerta del nodo di Livello 1
                                            Date_Alert_MPBEL(s,prog) = Date_1gg(s,n);
                                            Node_Alert_MPBEL(s,prog) = cell2mat(NodoMultiPointExtensometerLink(nn,n));
                                            ID_Alert_MPBEL(1,prog) = cellstr([char(chainID(n,2)) '-' char(chainID(n,4))]);
                                        end
                                    end
                                end
                            end
                        end
                    end
                    index = index+6;
                    prog = prog+1;
                end
                fprintf(fileID,fmt,text);
                text = ['Data of ' char(chainID(n,2)) '-' char(chainID(n,4)) ' MultiPoint Extensometer Link have been analyzed'];
                index = 1;
            end
        end
        [num_MPBEL,~] = size(rMPBEL);
        ini = 1;
        fin = cumsum(rMPBEL);
        Num_Allarmi_MPBEL = zeros(1,num_MPBEL);
        for AL = 1:num_MPBEL
            if ini > fin(AL) % si va a quello dopo
            else
                Livello = max(max(Alert_MPBEL(:,ini:fin(AL))));
                if isempty(Livello) == 1
                    Livello = 0;
                end
                Num_Allarmi_MPBEL(1,AL) = Livello;
                ini = fin(AL)+1;
            end
        end
    end
    
    %% Valuto il numero di Array e Sensori che ho in sito
    % In questa parte del codice ogni sensore posto in una posizione conta "1".
    % Ad esempio due Vertical Array con 20 sensori Tilt Link V per ognuno conta
    % 2 Sensori, mentre 3 clinometri in una stessa catena contano 3
    Num_Sensori = cumsum(yesTL + yesTLHR + yesTLH + yesTLHRH + yesIPL + yesIPLHR + ...
        yesTuL + yesRL + yesPCL + yesPCLHR + rKL + rKLHR + rCrL + r3DCrL +...
        rEL + r3DEL + + rLL + rPrL + rMPBEL + yesPL + rRaL + rWEL);
    Num_Sensori = Num_Sensori(end);
    
    Num_Allarmi = cumsum(Num_Allarmi_TL) + cumsum(Num_Allarmi_TLHR) + cumsum(Num_Allarmi_TLH) +...
        cumsum(Num_Allarmi_TLHRH) + cumsum(Num_Allarmi_IPL) +  cumsum(Num_Allarmi_IPLHR) +...
        cumsum(Num_Allarmi_TuL) + cumsum(Num_Allarmi_RL) + cumsum(Num_Allarmi_PCL) +...
        cumsum(Num_Allarmi_PCLHR) + cumsum(Num_Allarmi_KL) + cumsum(Num_Allarmi_KLHR) +...
        cumsum(Num_Allarmi_CrL) + cumsum(Num_Allarmi_3DCrL) + cumsum(Num_Allarmi_PL) +...
        cumsum(Num_Allarmi_RaL) + cumsum(Num_Allarmi_MPBEL) + cumsum(Num_Allarmi_WEL) + ...
        cumsum(Num_Allarmi_3DEL) + cumsum(Num_Allarmi_EL) + cumsum(Num_Allarmi_PrL) +...
        cumsum(Num_Allarmi_LL);
    Num_Allarmi = Num_Allarmi(end);
    
    Codice_Allerta = Num_Allarmi*100/(Num_Sensori*3);
    if isnan(Codice_Allerta) == 1
        Codice_Allerta = 0;
    end
    
    alert = 0;
    alarm = 0;
    Code = 0;
    if Codice_Allerta <= 25
        Codex = 'White';
        Code = 1;
    elseif Codice_Allerta > 25 && Codice_Allerta <= 50
        Codex = 'Green';
        Code = 2;
    elseif Codice_Allerta > 50 && Codice_Allerta <= 75
        Codex = 'Yellow';
        Codice = 'Giallo';
        alert = 1;
        Code = 3;
    elseif Codice_Allerta > 75 && Codice_Allerta <= 90
        Codex = 'Orange';
        Codice = 'Arancione';
        alert = 1;
        Code = 4;
    elseif Codice_Allerta > 90
        Codex = 'Red';
        Codice = 'Rosso';
        if Num_Sensori < 5
           alarm = 0;
           alert = 1;
           Code = 4.5;
        else
            alarm = 1;
            Code = 5;
        end
    end
    
    comando = ['select name from sites where id = ''' num2str(cell2mat(siteID)) ''' '];
    curs = exec(conn,comando);
    curs = fetch(curs);
    sito = char(curs.Data);
    FileNameFIFA = ['' sito '.txt'];
    Date = importdata(FileNameFIFA);
    if now > Date(1,1) +1 || Code > Date(2,1)
        if alert == 1 || alarm == 1
            % Email
            setpref('Internet','E_mail','aseparma@gmail.com');
            setpref('Internet','SMTP_Server','smtp.gmail.com');
            setpref('Internet','SMTP_Username','aseparma@gmail.com');
            setpref('Internet','SMTP_Password','Mums@2016');
            props=java.lang.System.getProperties;
            pp=props.setProperty('mail.smtp.auth','true'); %#ok
            pp=props.setProperty('mail.smtp.socketFactory.class','javax.net.ssl.SSLSocketFactory'); %#ok
            pp=props.setProperty('mail.smtp.socketFactory.port','465'); %#ok
            % A chi mando la mail
            recipients_ITA{1,1} = 'alessandro.valletta@aseltd.eu';
            recipients_ITA{2,1} = 'andrea.carri@aseltd.eu';
            % Messaggio
            if alert == 1
                text = 'Alert procedure activated';
                fprintf(fileID,fmt,text);
                subject_ITA = ['ASE Alert: ALLERTA di codice ''' Codice ''' registrata nel sito di ''' sito ''' '];
                message_ITA = cellstr(['Gentile utente, si segnala un''allerta di codice ''' Codice...
                    ''' nel sito di ''' sito ''' con indice pari a ''' num2str(Codice_Allerta)...
                    ''' /100 .']);
            elseif alarm == 1
                text = 'Alarm procedure activated';
                fprintf(fileID,fmt,text);
                subject_ITA = ['ASE Alert: ALLARME di codice ''' Codice ''' registrato nel sito di ''' sito ''' '];
                message_ITA = cellstr(['Gentile utente, si segnala un''allarme di codice ''' Codice...
                    ''' nel sito di ''' sito ''' con indice pari a ''' num2str(Codice_Allerta)...
                    ''' /100 .']);
%                 Criterio = 'FIFA';
%                 SMS(IDcentralina,DTcatena,Sito,siteID,conn,Criterio,alert,alarm,FileName);
                fileID = fopen(FileName,'a');
                fmt = '%s \r';
            end
            message = cellstr('Il team di ASE S.r.l.');
            message_ITA = [message_ITA; message];
            % Mando la mail
            sendmail(recipients_ITA, subject_ITA, message_ITA)
        end
    end
    
    outdat = fopen(FileNameFIFA,'wt+');
    fileID_site = fopen(FileNameFIFA,'a');
    fmt_site = '%.10f \r';
    text = now;
    fprintf(fileID_site,fmt_site,text);
    text = Code;
    fprintf(fileID_site,fmt_site,text);
    fclose(fileID_site);
    
    text = 'soglie function worked correctly.';
    fprintf(fileID,fmt,text);
    fclose(fileID);
    
    catch
        text = 'soglie function CRASHED.';
        fprintf(fileID,fmt,text);
        fclose(fileID);
    end
else
    text = 'soglie function executed with no calculations.';
    fprintf(fileID,fmt,text);
    fclose(fileID);
end

end