|
@@ -10,6 +10,7 @@
|
|
|
#include "megatec.h"
|
|
|
#include "log.h"
|
|
|
#include "snmp_api.h"
|
|
|
+#include "settings_api.h"
|
|
|
#ifdef PRINTF_STDLIB
|
|
|
#include <stdio.h>
|
|
|
#endif
|
|
@@ -20,7 +21,10 @@
|
|
|
#include <string.h>
|
|
|
#include <math.h>
|
|
|
|
|
|
-
|
|
|
+
|
|
|
+ * @brief Общая структура настроек
|
|
|
+ */
|
|
|
+extern SETTINGS_t sSettings;
|
|
|
|
|
|
#define UPS_PDU_MAX_LEN 50
|
|
|
|
|
@@ -179,6 +183,7 @@ void ups_status_response(char *data)
|
|
|
{
|
|
|
uint8_t i;
|
|
|
char value[10];
|
|
|
+ float tmp;
|
|
|
uint8_t len = 0;
|
|
|
DBG printf("ups_status_response: %s\r\n", data);
|
|
|
if(data[0] != '(')
|
|
@@ -199,8 +204,13 @@ void ups_status_response(char *data)
|
|
|
|
|
|
len = get_ups_param(data, " ", value);
|
|
|
data += (len + 1);
|
|
|
- if(len > 0)
|
|
|
- UPS.VAC_in = atof(value);
|
|
|
+ if(len > 0){
|
|
|
+ tmp =atof(value);
|
|
|
+ if(tmp > 20)
|
|
|
+ UPS.VAC_in = tmp;
|
|
|
+ else
|
|
|
+ UPS.VAC_in = 0;
|
|
|
+ }
|
|
|
|
|
|
|
|
|
len = get_ups_param(data, " ", value);
|
|
@@ -224,9 +234,17 @@ void ups_status_response(char *data)
|
|
|
|
|
|
len = get_ups_param(data, " ", value);
|
|
|
data += (len + 1);
|
|
|
- if(len > 0)
|
|
|
- UPS.SOC = 100*((atof(value)) - 1.6)/0.7;
|
|
|
-
|
|
|
+ if(len > 0){
|
|
|
+
|
|
|
+
|
|
|
+ tmp = atof(value);
|
|
|
+ if(tmp < 10){
|
|
|
+ UPS.SOC = round(100*(tmp - sSettings.UPS_Setting.Ucellmin)/(sSettings.UPS_Setting.Ucellmax - sSettings.UPS_Setting.Ucellmin));
|
|
|
+ }
|
|
|
+ else{
|
|
|
+ UPS.SOC = round(100*(tmp/6 - sSettings.UPS_Setting.Ucellmin)/(sSettings.UPS_Setting.Ucellmax - sSettings.UPS_Setting.Ucellmin));
|
|
|
+ }
|
|
|
+ }
|
|
|
len = get_ups_param(data, " ", value);
|
|
|
data += (len + 1);
|
|
|
if(len > 0)
|