Bugfixes and functionally tested

This commit is contained in:
Ziver Koc 2016-05-25 20:29:19 +02:00
parent 31ab57dec1
commit bc3a8b48f0

View file

@ -1,5 +1,6 @@
package zutil.osal.app.linux; package zutil.osal.app.linux;
import zutil.StringUtil;
import zutil.Timer; import zutil.Timer;
import zutil.log.LogUtil; import zutil.log.LogUtil;
@ -77,7 +78,7 @@ public class NutUPSClient {
sendListCommand(out, in, "UPS", tmp); sendListCommand(out, in, "UPS", tmp);
for (String upsId : tmp.keySet()){ for (String upsId : tmp.keySet()){
if(!upsDevices.contains(upsId)) { if(!upsDevices.contains(upsId)) {
logger.fine("Registering new UPS device"); logger.fine("Registering new UPS device: "+upsId);
upsDevices.add(new UPSDevice(upsId)); upsDevices.add(new UPSDevice(upsId));
} }
} }
@ -87,12 +88,11 @@ public class NutUPSClient {
ups.update(out, in); ups.update(out, in);
} }
} catch (IOException e){ } catch (Exception e){
logger.log(Level.WARNING, null, e); logger.log(Level.WARNING, null, e);
} }
// reset timer // reset timer
pollTimer.start(); pollTimer.start();
logger.fine("Refresh done");
} }
} }
@ -102,20 +102,31 @@ public class NutUPSClient {
private void sendListCommand(Writer out, BufferedReader in, String cmd, HashMap<String,String> parameters) throws IOException { private void sendListCommand(Writer out, BufferedReader in, String cmd, HashMap<String,String> parameters) throws IOException {
String request = "LIST " + cmd; String request = "LIST " + cmd;
out.write(request + "\n"); out.write(request + "\n");
out.flush();
String line = in.readLine(); String line = in.readLine();
if ( ! line.startsWith("BEGIN LIST")) if ( ! line.startsWith("BEGIN LIST"))
throw new IOException("Unexpected response from upsd: Request: '"+request+"' Response: '"+line+"'"); throw new IOException("Unexpected response from upsd: Request: '"+request+"' Response: '"+line+"'");
Pattern listKeyValuePatter = Pattern.compile("\\w* (\\w*) (.*) \"(.*)\""); Pattern listKeyValuePatter = Pattern.compile("\\w* (?:\\w* )?([\\w.]+) \"(.*)\"");
while ((line=in.readLine()) != null){ while ((line=in.readLine()) != null){
if (line.startsWith("END")) if (line.startsWith("END"))
break; break;
Matcher m = listKeyValuePatter.matcher(line); Matcher m = listKeyValuePatter.matcher(line);
m.matches();
parameters.put( parameters.put(
m.group(3), m.group(1),
m.group(4)); m.group(2));
} }
/*while ((line=in.readLine()) != null){
if (line.startsWith("END"))
break;
String[] strArr = line.split("\\W+", 3);
parameters.put(
strArr[1],
StringUtil.trim(strArr[2], '\"'));
}*/
} }
@ -132,6 +143,7 @@ public class NutUPSClient {
protected synchronized void update(Writer out, BufferedReader in) throws IOException { protected synchronized void update(Writer out, BufferedReader in) throws IOException {
if(pollTimer == null || pollTimer.hasTimedOut()){ if(pollTimer == null || pollTimer.hasTimedOut()){
parameters.clear(); parameters.clear();
logger.fine("Updating UPS parameters for: "+id);
sendListCommand(out, in, "VAR "+id, parameters); sendListCommand(out, in, "VAR "+id, parameters);
} }
} }