function [ATTIVA,FIG,FIG_ENG] = report_BL(rBL,m,NodoBaroLink,tipoCU,toolrif,unitrif,datarif,... Font_caption,Font_tools,siteID,DT,DT_ENG,FIG,FIG_ENG,br,status,ATTIVA,activeEN,... conn,FileName) fileID = fopen(FileName,'a'); fmt = '%s \r'; text = 'report_BL function started'; fprintf(fileID,fmt,text); import mlreportgen.dom.* import mlreportgen.report.* % Make sure DOM is compilable makeDOMCompilable() titolo = 1; if status(m,1) == 1 if ATTIVA == 1 testo = Paragraph('Catena non ancora installata o inattiva.'); ATTIVA = 0; add(DT,testo); if activeEN == 1 testo = Paragraph('Array not installed or inactive.'); add(DT_ENG,testo); end end elseif status(m,1) == 3 if ATTIVA == 1 testo = Paragraph(['Monitoraggio completato. Invitiamo a visitare la '... 'piattaforma web per la visione dei dati storici.']); ATTIVA = 0; add(DT,testo); if activeEN == 1 testo = Paragraph(['Monitoring completed. Please log into the web-based platform '... 'to access the complete dataset.']); add(DT_ENG,testo); end end else SE = Section(); if activeEN == 1 SE_ENG = Section(); end for b = 1:rBL(m,1) NodeNum = num2str(NodoBaroLink(b,m)); if tipoCU == 9 % Nesa Evo comando = ['select EventTimestamp, JSON_VALUE(dataJSON,"$.pressureAvg") from elabdatanesaview where EventTimestamp >= ''' ... datarif ''' and ToolNameID = ''' char(toolrif) ''' and UnitName = ''' char(unitrif) ... ''' and NodeNum = ''' NodeNum ''' ']; curs = exec(conn,comando); curs = fetch(curs); Dati = curs.Data; else comando = ['select EventDate, EventTime, pressure from ElabDataView where EventDate >= ''' ... datarif ''' and ToolNameID = ''' char(toolrif) ''' and UnitName = ''' char(unitrif) ... ''' and NodeNum = ''' NodeNum ''' ']; curs = exec(conn,comando); curs = fetch(curs); Dati = curs.Data; end % Modifico il formato di data e ora [rD,rC] = size(Dati); if rC ~= 1 if rC == 2 % Nesa Evo Date = datenum(Dati(:,1)); pressatm = str2num(char(Dati(:,2))); % altezza di pioggia locale else T = [cell2mat(Dati(:,1)) repmat(' ', [rD,1]) cell2mat(Dati(:,2))]; Date = datenum(T); % Data pressatm = cell2mat(Dati(:,3)); % pressione atmosferica end % grafico pressione atmosferica NELL'ULTIMO MESE figure(4) atm = plot(Date,pressatm); title('Pressione atmosferica'); xlabel('Data [gg/mm/aaaa]'); ylabel('Pressione [Pa]'); h = gca; h.XAxis.MinorTick = 'on'; datetick('x','dd/mm/yyyy','keepticks','keeplimits'); xtickangle(15); grid on grid minor hold off TempName = char(strcat('Report',siteID,'-', char(toolrif),'-Baro.png')); saveas(atm,TempName); ChartBL = Image(TempName); ChartBL.Style = {Height('8cm'),HAlign('center')}; ChartBL_cap = Paragraph(['Fig. ' num2str(FIG) ' - Andamento della '... 'pressione atmosferica misurata dal barometro nel periodo temporale di riferimento']); FIG = FIG+1; ChartBL_cap.Style = {HAlign('center'),FontSize(Font_caption),Italic(1),Color('midnightblue')}; testo = Paragraph('Il grafico seguente riporta i valori relativi alla pressione atmosferica misurati dal sensore barometrico nel periodo temporale di riferimento.'); testo.HAlign = 'justify'; if titolo == 1 sezBaro = Heading3('Baro Link'); sezBaro.Style = {OuterMargin('0in','0in','0.15in','0in'),FontSize(Font_tools),Bold(1),Italic(1)}; SE.Title = sezBaro; add(DT,sezBaro); if activeEN == 0 titolo = 0; end end add(DT,testo); add(DT,ChartBL); add(DT,ChartBL_cap); add(DT,br); close(figure(4)); if activeEN == 1 figure(4) atm = plot(Date,pressatm); title('Atmospheric pressure'); xlabel('Date [dd/mm/yyyy]'); ylabel('Pressure [Pa]'); h = gca; h.XAxis.MinorTick = 'on'; datetick('x','dd/mm/yyyy','keepticks','keeplimits'); xtickangle(15); grid on grid minor hold off TempName = char(strcat('Report',siteID,'-', char(toolrif),'-Baro_ENG.png')); saveas(atm,TempName); ChartBL = Image(TempName); ChartBL.Style = {Height('8cm'),HAlign('center')}; ChartBL_cap = Paragraph(['Fig. ' num2str(FIG_ENG) ' - Atmospheric pressure recorded during '... 'the reference time period']); FIG_ENG = FIG_ENG+1; ChartBL_cap.Style = {HAlign('center'),FontSize(Font_caption),Italic(1),Color('midnightblue')}; testo = Paragraph(['The following graph shows the atmospheric pressure recorded by the '... 'Barometer sensor during the reference monitoring period.']); testo.HAlign = 'justify'; if titolo == 1 sezBaro = Heading3('Baro Link'); sezBaro.Style = {OuterMargin('0in','0in','0.15in','0in'),FontSize(Font_tools),Bold(1),Italic(1)}; SE_ENG.Title = sezBaro; add(DT_ENG,sezBaro); titolo = 0; end add(DT_ENG,testo); add(DT_ENG,ChartBL); add(DT_ENG,ChartBL_cap); add(DT_ENG,br); close(figure(4)); end %pulisco variabili da riutilizzare per catena successiva clear pressatm; else if ATTIVA == 1 testo = Paragraph('Non sono presenti dati relativi al periodo temporale considerato.'); ATTIVA = 0; add(DT,testo); if activeEN == 1 testo = Paragraph('No data available for the reference time period.'); add(DT_ENG,testo); end end end end end text = 'report_BL function executed correctly'; fprintf(fileID,fmt,text); fclose(fileID); end