Files
matlab-python/ATD/Report_ASE.m

252 lines
9.6 KiB
Matlab
Executable File

function Report_ASE(IDcentralina,siteID,unitID,chainID,Chain_Scheme,num_nodi,...
alarms,Mail,Users_Report,activeEN,time,conn,FileName)
% Software per la generazione automatica di report sull'attività di
% monitoraggio ASE
try
diary on
fileID = fopen(FileName,'a');
fmt = '%s \r';
text = 'report_ASE function started';
fprintf(fileID,fmt,text);
fclose(fileID);
RPT_ON = 0; % parametro che regola la creazione o meno del report
NomeFile = strcat('Report',siteID,'.txt');
meseadesso = str2double(datestr(today,'mm'));
if isfile(NomeFile) == 1 % Esiste
% Scarico la frequenza del report
comando = ['select freq_report from sites where id like ''' siteID ''' '];
curs = exec(conn,comando);
curs = fetch(curs);
Freq = cell2mat(curs.Data);
numgiorni = Freq;
Filetesto = importdata(NomeFile);
[rTXT,~] = size(Filetesto);
if rTXT > 1
datainvio = Filetesto(1,1); % mese di invio OPPURE data di ultimo invio
attivaReport = Filetesto(2,1);
else % file txt vuoto
if numgiorni == 30
datainvio = str2double(datestr(today,'mm'))+1; % mese successivo
else
datainvio = now;
end
attivaReport = 1; % report disattivato
end
fileID = fopen(FileName,'a');
fmt = '%s \r';
text = ['Report frequency:' num2str(numgiorni) ' days'];
fprintf(fileID,fmt,text);
fclose(fileID);
if numgiorni == 30
adesso = str2double(datestr(today,'mm'));
if datainvio == adesso
RPT_ON = 1;
end
else
adesso = now;
if adesso >= datainvio + numgiorni
RPT_ON = 1;
end
end
if RPT_ON == 1 && attivaReport == 0
try
attivaReport = 1;
outdat = fopen(NomeFile,'wt+');
fopen(NomeFile,'wt');
fmt = '%d \r';
fileID = fopen(NomeFile,'a');
fprintf(fileID,fmt,meseadesso);
fprintf(fileID,fmt,attivaReport);
fclose(fileID);
% salvo variabili da caricare in Report
nomevar = ['variabili_RPT' siteID '.mat'];
save(nomevar, 'unitID', 'chainID', 'alarms', 'Chain_Scheme', 'num_nodi', 'Users_Report', 'Mail', ...
'time', 'meseadesso', 'adesso', 'datainvio', 'numgiorni', 'activeEN', 'FileName');
rilancio = ['/usr/local/matlab_func/run_Report_lnx.sh /usr/local/MATLAB/MATLAB_Runtime/v93 '...
siteID ''];
status = system(rilancio);
fileID = fopen(FileName,'a');
fmt = '%s \r';
fprintf(fileID,fmt,status);
catch err
FileErr = ['ErrorFile-Report-' siteID '-' datestr(today) '-' datestr(now,'hhMMss')];
fid = fopen(FileErr,'a+');
fprintf(fid, '%s', err.getReport('extended','hyperlinks','off'));
fclose(fid);
%% Email
setpref('Internet','E_mail','alert@aseltd.eu');
setpref('Internet','SMTP_Server','smtps.aruba.it');
setpref('Internet','SMTP_Username','alert@aseltd.eu');
setpref('Internet','SMTP_Password','Ase#2013!20@bat');
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
% Uso il siteID per identificare il nome del sito
comando = ['select name from sites where id like ''' siteID ''' '];
curs = exec(conn,comando);
curs = fetch(curs);
NomeSito = num2str(cell2mat(curs.Data));
subject_ITA = ('CRASH funzione Report');
testo = cellstr('Ciao Andrea e Alessandro,');
testobis = cellstr('');
testo2 = cellstr(['Il mostro biblico della funzione Report ha al proprio interno qualche minchiata '...
'per cui il SW crasha nel realizzare il report di ' NomeSito '. Vi prego di correggermi '...
'o continuer' char(243) ' a crashare e ad assillarvi con questa mail. BUAHAHAH! Troverete l''errore in allegato.']);
message_ITA = [testo; testobis; testo2];
message = cellstr('Tanti Blip e Blop a voi, ');
message2 = cellstr('Software ATD');
message_ITA = [message_ITA; message; message2];
recipients_ASE{1,1} = 'alessandro.valletta@aseltd.eu';
recipients_ASE{2,1} = 'andrea.carri@aseltd.eu';
allegato = FileErr;
sendmail(recipients_ASE, subject_ITA, message_ITA, allegato)
end
% Report(attivaReport,Mail,siteID,unitID,chainID,alarms,Chain_Scheme,...
% time,conn,num_nodi,meseadesso,adesso,datainvio,numgiorni,activeEN,Users_Report,...
% NomeFile,FileName);
end
else
datainvio = meseadesso+1;
if datainvio > 12
datainvio = datainvio-12;
end
end
%% --- Modifica file di testo --- %%%
if numgiorni == 30
if datainvio == 12
nuovofile = 1;
elseif datainvio == 13
nuovofile = 13;
else
nuovofile = adesso+1;
end
else
nuovofile = datainvio + numgiorni;
end
attivaReport = 0;
outdat = fopen(NomeFile,'wt+');
fopen(NomeFile,'wt');
fmt = '%d \r';
fileID = fopen(NomeFile,'a');
fprintf(fileID,fmt,nuovofile);
fprintf(fileID,fmt,attivaReport);
fclose(fileID);
catch err
FileErr = ['ErrorFile-' IDcentralina '-' datestr(today) '-' datestr(now,'hhMMss') '.txt'];
fid = fopen(FileErr,'a+');
fprintf(fid, '%s', err.getReport('extended','hyperlinks','off'));
fclose(fid);
% Scarico la frequenza del report
comando = ['select freq_report from sites where id like ''' siteID ''' '];
curs = exec(conn,comando);
curs = fetch(curs);
Freq = cell2mat(curs.Data);
numgiorni = Freq;
meseadesso = str2double(datestr(today,'mm'));
NomeFile = strcat('Report',siteID,'.txt');
if isfile(NomeFile) == 1 % Esiste
Filetesto = importdata(NomeFile);
[rTXT,~] = size(Filetesto);
if rTXT >1
datainvio = Filetesto(1,1); % mese di invio OPPURE data di ultimo invio
else % file txt vuoto
if numgiorni == 30
datainvio = meseadesso;
else
datainvio = now;
end
end
else
datainvio = meseadesso+1;
if datainvio > 12
datainvio = datainvio-12;
end
end
attivaReport = 0;
outdat = fopen(NomeFile,'wt+');
fopen(NomeFile,'wt');
fmt = '%d \r';
fileID = fopen(NomeFile,'a');
if numgiorni == 30
if datainvio == 12
nuovofile = 12;
elseif datainvio == 13
nuovofile = 13;
else
nuovofile = meseadesso;
end
else
nuovofile = datainvio;
end
fprintf(fileID,fmt,nuovofile);
fprintf(fileID,fmt,attivaReport);
fclose(fileID);
%% Email
setpref('Internet','E_mail','alert@aseltd.eu');
setpref('Internet','SMTP_Server','smtps.aruba.it');
setpref('Internet','SMTP_Username','alert@aseltd.eu');
setpref('Internet','SMTP_Password','Ase#2013!20@bat');
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
% Uso il siteID per identificare il nome del sito
comando = ['select name from sites where id like ''' siteID ''' '];
curs = exec(conn,comando);
curs = fetch(curs);
NomeSito = num2str(cell2mat(curs.Data));
subject_ITA = (['CRASH del Report Automatico - ' NomeSito '']);
testo = cellstr('Ciao Andrea e Alessandro,');
testobis = cellstr('');
testo2 = cellstr(['Nella funzione Report_ASE avete scritto qualche minchiata per cui il SW crasha. Vi prego di correggermi '...
'o continuer' char(243) ' a crashare e ad assillarvi con questa mail. Sono talmente stupido che non sono nemmeno '...
'riuscito a lanciare il software esterno Report =( .Troverete l''errore in allegato.']);
message_ITA = [testo; testobis; testo2; testobis];
message = cellstr('Tanti Blip e Blop a te, ');
message2 = cellstr('Software ATD');
message_ITA = [message_ITA; message; message2];
recipients_ASE{1,1} = 'alessandro.valletta@aseltd.eu';
recipients_ASE{2,1} = 'andrea.carri@aseltd.eu';
allegato = FileErr;
sendmail(recipients_ASE, subject_ITA, message_ITA, allegato)
end
fileID = fopen(FileName,'a');
fmt = '%s \r';
text = 'report_ASE function executed correctly';
fprintf(fileID,fmt,text);
fclose(fileID);
diary off
end