Sync from remote server: 2025-10-12 18:56:41
This commit is contained in:
215
checkBattery.m
Executable file
215
checkBattery.m
Executable file
@@ -0,0 +1,215 @@
|
||||
function checkBattery(Batteria,Batteria_LoRa,IDcentralina,DTcatena,Unit,Mail,conn,FileName)
|
||||
|
||||
text = 'checkBattery function started';
|
||||
fileID = fopen(FileName,'a');
|
||||
fmt = '%s \r';
|
||||
fprintf(fileID,fmt,text);
|
||||
fclose(fileID);
|
||||
|
||||
% Centralina
|
||||
if strcmp(Unit,'GEI G801') == 1 || strcmp(Unit,'GEI G802') == 1 || strcmp(Unit,'GEI G201') == 1 ...
|
||||
|| strcmp(Unit,'GEI G301') == 1 % G801, G802, G201, G301
|
||||
Batt = 12;
|
||||
Threshold = 11;
|
||||
Dato = cellstr('12 V');
|
||||
elseif strcmp(Unit,'GEI D2W') == 1
|
||||
Batt = 6;
|
||||
Threshold = 5.6;
|
||||
Dato = cellstr('6 V');
|
||||
elseif strcmp(Unit,'Nesa') == 1
|
||||
Batt = 3.4;
|
||||
Threshold = 3;
|
||||
Dato = cellstr('3.4 V');
|
||||
elseif strcmp(Unit,'Nesa evolution') == 1
|
||||
Batt = 12.2;
|
||||
Threshold = 11.8;
|
||||
Dato = cellstr('12.2 V');
|
||||
elseif strcmp(Unit,'Campbell CRX1000') == 1
|
||||
Batt = 12;
|
||||
Threshold = 10;
|
||||
Dato = cellstr('12 V');
|
||||
elseif strcmp(Unit,'SISGEO WR-GW-868') == 1
|
||||
Batt = 5;
|
||||
Threshold = 4.5;
|
||||
Dato = cellstr('5 V');
|
||||
end
|
||||
|
||||
% Modulo LoRa
|
||||
if isempty(Batteria_LoRa) == 0
|
||||
if strcmp(Unit,'GEI G802') == 1
|
||||
Threshold_LoRa = 6.5;
|
||||
Dato_LoRa = cellstr('7.2 V');
|
||||
elseif strcmp(Unit,'SISGEO WR-GW-868') == 1
|
||||
Threshold_LoRa = 3;
|
||||
Dato_LoRa = cellstr('5 V');
|
||||
end
|
||||
else
|
||||
Threshold_LoRa = [];
|
||||
Dato_LoRa = [];
|
||||
end
|
||||
|
||||
FileNameBattery = strcat(IDcentralina,'-Batteria.txt');
|
||||
if isfile(FileNameBattery) == 0 % NON Esiste
|
||||
outdat = fopen(FileNameBattery,'wt+');
|
||||
fileID_site = fopen(FileNameBattery,'a');
|
||||
fmt = '%f \r';
|
||||
fprintf(fileID_site,fmt,Batt);
|
||||
fmt = '%.10f \r';
|
||||
text = now;
|
||||
fprintf(fileID_site,fmt,text);
|
||||
fclose(fileID_site);
|
||||
end
|
||||
|
||||
% Scarico dati di riferimento
|
||||
FileNameBattery = ['' IDcentralina '-Batteria.txt'];
|
||||
Dati = importdata(FileNameBattery);
|
||||
[rA,~] = size(Dati);
|
||||
if rA == 0
|
||||
Livello_Rif = 0;
|
||||
Data_Rif = 0;
|
||||
elseif rA == 1
|
||||
Livello_Rif = Dati(1,1);
|
||||
Data_Rif = 0;
|
||||
else
|
||||
Livello_Rif = Dati(1,1);
|
||||
Data_Rif = Dati(2,1);
|
||||
end
|
||||
|
||||
if strcmp(Unit,'Nesa evolution') == 1
|
||||
Level = str2double(cell2mat(Batteria(end,2)));
|
||||
else
|
||||
Level = cell2mat(Batteria(end,3));
|
||||
end
|
||||
activate = 0;
|
||||
Centralina = 0;
|
||||
LoRa = 0;
|
||||
|
||||
% Check Centralina
|
||||
if Level < Threshold
|
||||
if Level > 0
|
||||
if now-Data_Rif > 1 % || Level < Livello_Rif
|
||||
Data_Rif = now;
|
||||
activate = 1;
|
||||
Centralina = 1;
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
% Check Modulo LoRa
|
||||
if isnan(cell2mat(Batteria_LoRa(end,3))) == 0
|
||||
Level_LoRa = cell2mat(Batteria_LoRa(end,3));
|
||||
if Level_LoRa < Threshold_LoRa
|
||||
if Level_LoRa > 0
|
||||
if now-Data_Rif > 1
|
||||
Data_Rif = now;
|
||||
activate = 1;
|
||||
LoRa = 1;
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
if activate == 0
|
||||
Mail = 0;
|
||||
end
|
||||
|
||||
if Mail == 1
|
||||
sms = 0;
|
||||
% Centralina
|
||||
if Centralina == 1
|
||||
DATAinsert = cell(1,6);
|
||||
if strcmp(Unit,'Nesa evolution') == 1
|
||||
Data = datestr(datenum(Batteria(end,1)),'yyyy-mm-dd HH:MM:SS');
|
||||
else
|
||||
Data = datestr(strjoin([Batteria(end,1) Batteria(end,2)]),'yyyy-mm-dd HH:MM:SS');
|
||||
end
|
||||
desc = Dato;
|
||||
DATAinsert{1,1} = 2; % Allarme tipologia batteria
|
||||
DATAinsert{1,2} = IDcentralina;
|
||||
DATAinsert{1,3} = Data;
|
||||
DATAinsert{1,4} = Level;
|
||||
DATAinsert{1,5} = sms;
|
||||
DATAinsert{1,6} = desc;
|
||||
|
||||
% Cerco se il dato è già presente
|
||||
comando = ['select id, type_id, date_time from alarms where unit_name = ''' ...
|
||||
IDcentralina ''' and date_time = ''' Data ''' and type_id = ''' DATAinsert{1,1} ...
|
||||
''' and registered_value = ''' Level ''' and description like ''' desc ''' order by date_time'];
|
||||
curs = exec(conn,comando);
|
||||
curs = fetch(curs);
|
||||
idDate = curs.Data;
|
||||
[~,cI] = size(idDate);
|
||||
if cI == 1
|
||||
idElabData = 0; % 0 indica che il dato non è presente su DB
|
||||
else
|
||||
idElabData = cell2mat(idDate(:,1));
|
||||
end
|
||||
tablename = 'alarms';
|
||||
colnames = {'type_id','unit_name','date_time','battery_level','send_sms','description'};
|
||||
data = [DATAinsert(1,1),DATAinsert(1,2),DATAinsert(1,3),DATAinsert(1,4),...
|
||||
DATAinsert(1,5),DATAinsert(1,6)];
|
||||
if idElabData == 0 % Scrivo
|
||||
fastinsert(conn,tablename,colnames,data);
|
||||
text = ['ALERT was written in the DB by checkBattery function for date: ''' Data ''' '];
|
||||
end
|
||||
end
|
||||
|
||||
if LoRa == 1
|
||||
DATAinsert = cell(1,7);
|
||||
Data = datestr(strjoin([Batteria_LoRa(end,1) Batteria_LoRa(end,2)]),'yyyy-mm-dd HH:MM:SS');
|
||||
desc = Dato_LoRa;
|
||||
DATAinsert{1,1} = 2; % Allarme tipologia batteria
|
||||
DATAinsert{1,2} = IDcentralina;
|
||||
DATAinsert{1,3} = DTcatena;
|
||||
DATAinsert{1,4} = Data;
|
||||
DATAinsert{1,5} = Level_LoRa;
|
||||
DATAinsert{1,6} = sms;
|
||||
DATAinsert{1,7} = desc;
|
||||
|
||||
% Cerco se il dato è già presente
|
||||
comando = ['select id, type_id, date_time from alarms where unit_name = ''' ...
|
||||
IDcentralina ''' and tool_name = ''' DTcatena ''' and date_time = ''' Data ...
|
||||
''' and type_id = ''' DATAinsert{1,1} ''' and registered_value = ''' Level ...
|
||||
''' and description like ''' desc ''' order by date_time'];
|
||||
curs = exec(conn,comando);
|
||||
curs = fetch(curs);
|
||||
idDate = curs.Data;
|
||||
[~,cI] = size(idDate);
|
||||
if cI == 1
|
||||
idElabData = 0; % 0 indica che il dato non è presente su DB
|
||||
else
|
||||
idElabData = cell2mat(idDate(:,1));
|
||||
end
|
||||
tablename = 'alarms';
|
||||
colnames = {'type_id','unit_name','tool_name','date_time','battery_level','send_sms','description'};
|
||||
data = [DATAinsert(1,1),DATAinsert(1,2),DATAinsert(1,3),DATAinsert(1,4),...
|
||||
DATAinsert(1,5),DATAinsert(1,6),DATAinsert(1,6)];
|
||||
if idElabData == 0 % Scrivo
|
||||
fastinsert(conn,tablename,colnames,data);
|
||||
text = ['ALERT was written in the DB by checkBattery function for date: ''' Data ''' '];
|
||||
end
|
||||
end
|
||||
|
||||
fileID = fopen(FileName,'a');
|
||||
fmt = '%s \r';
|
||||
fprintf(fileID,fmt,text);
|
||||
fclose(fileID);
|
||||
end
|
||||
|
||||
outdat = fopen(FileNameBattery,'wt+');
|
||||
fileID_site = fopen(FileNameBattery,'a');
|
||||
text_B = Level;
|
||||
fmt = '%f \r';
|
||||
fprintf(fileID_site,fmt,text_B);
|
||||
fmt = '%.10f \r';
|
||||
text = Data_Rif;
|
||||
fprintf(fileID_site,fmt,text);
|
||||
fclose(fileID_site);
|
||||
|
||||
text = 'checkBattery function worked correctly';
|
||||
fileID = fopen(FileName,'a');
|
||||
fmt = '%s \r';
|
||||
fprintf(fileID,fmt,text);
|
||||
fclose(fileID);
|
||||
|
||||
end
|
||||
Reference in New Issue
Block a user