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