ソースを参照

添加阈值页面状态刷新
更改时区后重启app

guohui 1 年間 前
親
コミット
718a60804c
共有8 個のファイルを変更した、224 個の追加 と 32 個の削除を含む
  1. 15 14
      pro/src/appweb_handle.c
  2. 34 11
      pro/src/common.c
  3. 6 5
      pro/src/common.h
  4. 143 0
      pro/src/json_handle.c
  5. 1 0
      pro/src/json_handle.h
  6. 8 1
      pro/src/sys.c
  7. 1 0
      pro/src/sys.h
  8. 16 1
      pro/src/websocket_handle.c

+ 15 - 14
pro/src/appweb_handle.c

@@ -4149,6 +4149,19 @@ static void serviceManagement(void *conn)
         {
             log_e("update ntp info err.");
         }
+
+        char temp[100];
+        if (0==_globalNTPManager.mode)
+        {
+           //sprintf(temp,"$设置$|$时间$|%s", _globalNTPManager.time);
+           sprintf(temp,"Set Date & Time %s", _globalNTPManager.time);
+        }
+        else{
+           // sprintf(temp,"$设置$|$时间$|NTP %s",  _globalNTPManager.ntpaddress);
+            sprintf(temp,"Set Date & Time sync from NTP %s", _globalNTPManager.ntpaddress);
+        }
+        dev_insert_alarm_ctrl(__globalDeviceManage.db,__globalDeviceManage._globalDevInfo.product.id, ALARM_TYPE_OPRATION, temp);
+
         if (_globalNTPManager.mode == 0)
         {
             char tempstr[10];
@@ -4224,25 +4237,13 @@ static void serviceManagement(void *conn)
         }
         else if (_globalNTPManager.mode == 1)
         {
-            set_zone(_globalNTPManager.tzone);
+            set_tzone(_globalNTPManager.tzone);
             sleep(1);
             extern int ntp_config(NTPManager *nm);
             ntp_config(&_globalNTPManager);
         }
 
-        char temp[100];
-        if (0==_globalNTPManager.mode)
-        {
-           //sprintf(temp,"$设置$|$时间$|%s", _globalNTPManager.time);
-           sprintf(temp,"Set Date & Time %s", _globalNTPManager.time);
-        }
-        else{
-           // sprintf(temp,"$设置$|$时间$|NTP %s",  _globalNTPManager.ntpaddress);
-            sprintf(temp,"Set Date & Time sync from NTP %s", _globalNTPManager.ntpaddress);
-        }
-        dev_insert_alarm_ctrl(__globalDeviceManage.db,__globalDeviceManage._globalDevInfo.product.id, ALARM_TYPE_OPRATION, temp);
-
-
+        
         ack_str = ctrl_sts_ack_to_json();
         if (_serviceManageRequestInfo._ntp_info.mode) free(_serviceManageRequestInfo._ntp_info.mode);
         if (_serviceManageRequestInfo._ntp_info.port) free(_serviceManageRequestInfo._ntp_info.port);

+ 34 - 11
pro/src/common.c

@@ -1,6 +1,8 @@
 #include "common.h"
 #include "elog.h"
 #include <unistd.h>
+#include <time.h>
+#include <sys/time.h>
 #include <sys/types.h>
 #include <sys/sysinfo.h>
 #include <sys/ioctl.h>
@@ -11,6 +13,7 @@
 #include <sys/ioctl.h>
 #include <linux/rtc.h>
 #include "cfg.h"
+#include "sys.h"
 
 #undef LOG_TAG
 #define LOG_TAG    "main"
@@ -325,7 +328,7 @@ static int my_month[12] = {
     MY_DAY*(31+29+31+30+31+30+31+31+30+31),
     MY_DAY*(31+29+31+30+31+30+31+31+30+31+30)
 };
-time_t mktime2(struct tm *t, int zone)
+time_t mktime2(struct tm *t, int tzone)
 {
     time_t res,year;
 
@@ -341,7 +344,7 @@ time_t mktime2(struct tm *t, int zone)
     res += MY_MINUTE*t->tm_min;
     res += t->tm_sec;
 
-    res -= zone*3600;
+    res -= tzone*3600;
 
     return res;
 }
@@ -359,14 +362,14 @@ time_t mktime0(void)
 }
 
 
-int set_time(struct tm *t, int zone)
+int set_time(struct tm *t, int tzone)
 {
     if(!t) {
         return -1;
     }
     t->tm_year -= 1900;
     t->tm_mon -= 1;
-    time_t utc = mktime2(t, zone);
+    time_t utc = mktime2(t, tzone);
     stime(&utc);
     set_rtc(utc);
     return 0;
@@ -387,10 +390,24 @@ int set_utctime(time_t t)
 }
 
 
-int set_zone(int zone)
+int get_tzone(void)
 {
+    int tz;
+    time_t now = time(NULL);
+    struct tm local_time = *localtime(&now);
+    time_t utc = mktime(&local_time);
+    tz = (now - utc)/3600;
+
+    return tz;
+}
+
+
+int set_tzone(int tzone)
+{
+    int r,tz;
     char buf[256];
 
+    tz = get_tzone();
 #if 0
     switch(zone) {
         case -11:
@@ -471,16 +488,22 @@ int set_zone(int zone)
 #else
 
 #if (CHIP_TYPE == CHIP_T113s)
-    sprintf(buf, "ln -sf /usr/share/zoneinfo/GMT%s%d /etc/localtime", (zone<0)?"+":"-", abs(zone));
+    sprintf(buf, "ln -sf /usr/share/zoneinfo/GMT%s%d /etc/localtime", (tzone<0)?"+":"-", abs(tzone));
 #else
 
-    sprintf(buf, "ln -sf /usr/share/zoneinfo/Etc/GMT%s%d /etc/localtime", (zone<0)?"+":"-", abs(zone));
+    sprintf(buf, "ln -sf /usr/share/zoneinfo/Etc/GMT%s%d /etc/localtime", (tzone<0)?"+":"-", abs(tzone));
 #endif
 
 #endif
 
     log_i("set_zone: %s", buf);
-    return system(buf);
+    system(buf);
+
+    if(tz!=tzone) {
+        sys_restart_app();
+    }
+    
+    return 0;
 }
 
 
@@ -507,9 +530,9 @@ int set_time_zone(struct tm *t, int zone)
         return -1;
     }
 
-    r = set_zone(zone);
+    r = set_tzone(zone);
     if(r) {
-        log_e("__1__ set_zone failed\n");
+        log_e("__1__ set_tzone failed\n");
     }
 
     //print_time("111", t);
@@ -527,7 +550,7 @@ int set_utctime_zone(time_t t, int zone)
 {
     int r;
 
-    r = set_zone(zone);
+    r = set_tzone(zone);
     if(r) {
         log_e("__2__ set_zone failed\n");
     }

+ 6 - 5
pro/src/common.h

@@ -1226,14 +1226,15 @@ char* getLocalIpAddress(char* dev);
 char* get_mac_address(const char *iface_name) ;
 void get_disk_occupy(char ** reused);
 
-int set_zone(int zone);
-int set_time(struct tm *t, int zone);
+int get_tzone(void);
+int set_tzone(int tzone);
+int set_time(struct tm *t, int tzone);
 int set_utctime(time_t t);
-int set_time_zone(struct tm *t, int zone);
-int set_utctime_zone(time_t t, int zone);
+int set_time_zone(struct tm *t, int tzone);
+int set_utctime_zone(time_t t, int tzone);
 
 time_t mktime0(void);
-time_t mktime2(struct tm *t, int zone);
+time_t mktime2(struct tm *t, int tzone);
 int get_time_str(char *s, int len, time_t t);
 int get_time_str2(char *s, int len, time_t t);
 int get_curtime_str(char *s, int len);

+ 143 - 0
pro/src/json_handle.c

@@ -3086,7 +3086,150 @@ char *breaker_status_ack_to_json(GlobalDeviceManager *gm,int slave)
     } 
     return strRet;
 }
+char *threshold_status_ack_to_json(GlobalDeviceManager *dm)
+{
+    char* str = NULL;
+    char temp[32] = {0};
+    char Closetemp[32] = {0};
+    char Alarmtemp[32] = {0};
+    GlobalPowerManger *tmp = NULL;
+
+    cJSON* root = cJSON_CreateObject();   
+    cJSON_AddNumberToObject(root, "code", 200); 
+    cJSON* data_root_array = cJSON_CreateArray();
+    
+    sprintf(Closetemp, "%d", ALARM_CTRL_CLOSE_CH);
+    sprintf(Alarmtemp, "%d", ALARM_CTRL_ALARM_ONLY);
+    // language_alarm_ctrl_Alarm[__globalDeviceManage._globalDevInfo.product.language]
+    // language_alarm_ctrl_CloseCH[__globalDeviceManage._globalDevInfo.product.language]
+
+    list_for_each_entry(tmp, &dm->_globalPowerManger.list, list)
+    {
+
+        cJSON* data_filed = cJSON_CreateObject();
+        cJSON_AddStringToObject(data_filed,"productChName",tmp->product_ch_name);
+        sprintf(temp,"%d",tmp->product_ch_id);
+        cJSON_AddStringToObject(data_filed,"productChId",temp);     
+        //cJSON_AddNumberToObject(data_filed,"dyType",tmp->product_ch_id);
+        cJSON_AddNumberToObject(data_filed,"dyType",1);
+        sprintf(temp, "%d", tmp->_PowerInfo.status);
+        cJSON_AddStringToObject(data_filed,"productChStatus",temp);
+        sprintf(temp,"%0.2f",tmp->global_over_manager.product_cur_upper_threshold);
+        cJSON_AddStringToObject(data_filed,"currentUpperValue",temp);
+        sprintf(temp,"%0.2f",tmp->global_over_manager.product_vol_upper_threshold); 
+        cJSON_AddStringToObject(data_filed,"voltageUpperValue",temp);
+        sprintf(temp,"%0.2f",tmp->global_over_manager.product_vol_lower_threshold);
+        cJSON_AddStringToObject(data_filed,"voltageDownValue",temp);
+        sprintf(temp,"%0.2f",tmp->global_over_manager.product_pwr_upper_threshold);
+        cJSON_AddStringToObject(data_filed,"powerUpperValue",temp);
+        sprintf(temp,"%0.2f",tmp->global_over_manager.product_pwrcon_upper_threshold);
+        cJSON_AddStringToObject(data_filed,"alarmContentUpperValue",temp);
+
+        if (tmp->global_over_manager.product_cur_over_upper_threshold_ctrl == ALARM_CTRL_CLOSE_CH)
+        {
+            cJSON_AddStringToObject(data_filed, "currentUpperAction",Closetemp);
+        }
+        else
+            cJSON_AddStringToObject(data_filed, "currentUpperAction", Alarmtemp);
+
+        if (tmp->global_over_manager.product_vol_over_upper_threshold_ctrl ==ALARM_CTRL_CLOSE_CH)
+        {
+            cJSON_AddStringToObject(data_filed, "voltageUpperAction", Closetemp);
+        }
+        else
+            cJSON_AddStringToObject(data_filed, "voltageUpperAction", Alarmtemp);
+
+        if (tmp->global_over_manager.product_vol_over_lower_threshold_ctrl == ALARM_CTRL_CLOSE_CH)
+        {
+            cJSON_AddStringToObject(data_filed, "voltageDownAction",Closetemp );
+        }
+        else
+            cJSON_AddStringToObject(data_filed, "voltageDownAction", Alarmtemp);
+
+        if (tmp->global_over_manager.product_pwr_over_upper_threshold_ctrl == ALARM_CTRL_CLOSE_CH)
+        {
+            cJSON_AddStringToObject(data_filed, "powerUpperAction", Closetemp);
+        }
+        else
+            cJSON_AddStringToObject(data_filed, "powerUpperAction", Alarmtemp);
+
+        if (tmp->global_over_manager.product_pwrcon_over_upper_threshold_ctrl == ALARM_CTRL_CLOSE_CH)
+        {
+            cJSON_AddStringToObject(data_filed, "alarmContentUpperAction", Closetemp);
+        }
+        else
+            cJSON_AddStringToObject(data_filed, "alarmContentUpperAction", Alarmtemp);
 
+        cJSON_AddItemToObject(data_root_array, "data", data_filed);       
+    }
+
+        cJSON* data_filed = cJSON_CreateObject();
+        cJSON_AddStringToObject(data_filed,"productChName",tmp->product_ch_name);
+        sprintf(temp,"%d",tmp->product_ch_id);
+        cJSON_AddStringToObject(data_filed,"productChId",temp);   
+        cJSON_AddNumberToObject(data_filed,"dyType",tmp->product_ch_id);
+        //sprintf(temp,"%d",_globalPowerMangerTemp->_PowerInfo.status);
+        cJSON_AddStringToObject(data_filed,"productChStatus","-1");//总通道状态不显示
+        sprintf(temp,"%0.2f",tmp->global_over_manager.product_cur_upper_threshold);
+        cJSON_AddStringToObject(data_filed,"currentUpperValue",temp);
+        sprintf(temp,"%0.2f",tmp->global_over_manager.product_vol_upper_threshold);
+        cJSON_AddStringToObject(data_filed,"voltageUpperValue",temp);
+        sprintf(temp,"%0.2f",tmp->global_over_manager.product_vol_lower_threshold);
+        cJSON_AddStringToObject(data_filed,"voltageDownValue",temp);
+        sprintf(temp,"%0.2f",tmp->global_over_manager.product_pwr_upper_threshold);
+        cJSON_AddStringToObject(data_filed,"powerUpperValue",temp);
+        sprintf(temp,"%0.2f",tmp->global_over_manager.product_pwrcon_upper_threshold);
+        cJSON_AddStringToObject(data_filed,"alarmContentUpperValue",temp);
+
+        if (tmp->global_over_manager.product_cur_over_upper_threshold_ctrl == ALARM_CTRL_CLOSE_CH)
+        {
+            cJSON_AddStringToObject(data_filed, "currentUpperAction",Closetemp);
+        }
+        else
+            cJSON_AddStringToObject(data_filed, "currentUpperAction",Alarmtemp);
+
+        if (tmp->global_over_manager.product_vol_over_upper_threshold_ctrl == ALARM_CTRL_CLOSE_CH)
+        {
+            cJSON_AddStringToObject(data_filed, "voltageUpperAction", Closetemp);
+        }
+        else
+            cJSON_AddStringToObject(data_filed, "voltageUpperAction", Alarmtemp);
+
+        if (tmp->global_over_manager.product_vol_over_lower_threshold_ctrl == ALARM_CTRL_CLOSE_CH)
+        {
+            cJSON_AddStringToObject(data_filed, "voltageDownAction", Closetemp);
+        }
+        else
+            cJSON_AddStringToObject(data_filed, "voltageDownAction", Alarmtemp);
+
+        if (tmp->global_over_manager.product_pwr_over_upper_threshold_ctrl == ALARM_CTRL_CLOSE_CH)
+        {
+            cJSON_AddStringToObject(data_filed, "powerUpperAction", Closetemp);
+        }
+        else
+            cJSON_AddStringToObject(data_filed, "powerUpperAction", Alarmtemp);
+
+        if (tmp->global_over_manager.product_pwrcon_over_upper_threshold_ctrl == ALARM_CTRL_CLOSE_CH)
+        {
+            cJSON_AddStringToObject(data_filed, "alarmContentUpperAction",Closetemp);
+        }
+        else
+            cJSON_AddStringToObject(data_filed, "alarmContentUpperAction", Alarmtemp);
+
+
+        cJSON_AddItemToObject(data_root_array, "data", data_filed);   
+
+
+    cJSON_AddItemToObject(root, "data", data_root_array);
+    cJSON_AddStringToObject(root, "msg", language_Operation_Success[__globalDeviceManage._globalDevInfo.product.language]);
+    cJSON_AddStringToObject(root, "socketIdx", "PDU-WebSocket");
+    cJSON_AddBoolToObject(root, "success",true);
+    cJSON_AddStringToObject(root, "type", "powerChannelStatusMonitoring");
+
+    str = cJSON_Print(root);    
+    cJSON_Delete(root);
+    return str;
+}
 
 
 /**

+ 1 - 0
pro/src/json_handle.h

@@ -659,6 +659,7 @@ char* over_breaker_product_list_info_to_json(GlobalDeviceManager *dm,_OverBackBr
 char* over_all_breaker_chn_info_to_json(_OverBreakerChnInfo* _over_all_breaker_back_info,int nWSType);
 char* over_all_breaker_switch_info_to_json(_OverBreakerSwitchInfo* _over_all_breaker_switch_info,int nWSType);
 char *breaker_status_ack_to_json(GlobalDeviceManager *gm,int slave);
+char *threshold_status_ack_to_json(GlobalDeviceManager *dm);
 char* upgrade_to_json(void);
 char* board_to_json(handle_t l, int is_ws);
 char *upg_chk_to_json(int r);

+ 8 - 1
pro/src/sys.c

@@ -1647,7 +1647,14 @@ int sys_kill(char *proc)
     waitpid(pid, &status, 0);
     return 0;
 }
-
+int sys_restart_app(void)
+{
+#if (CHIP_TYPE == CHIP_T113s)
+    return system("reboot -f");
+#else
+    return system("/etc/init.d/S90PDUApp restart");
+#endif
+}
 
 
 #include "ui.h"

+ 1 - 0
pro/src/sys.h

@@ -33,5 +33,6 @@ int sys_get_chip_id(int *id);
 int sys_ip_check(char *ip);
 int sys_get_prod(GlobalDeviceInfo *info);
 int sys_kill(char *proc);
+int sys_restart_app(void);
 
 #endif

+ 16 - 1
pro/src/websocket_handle.c

@@ -216,6 +216,18 @@ static int ws_breaker_update(ws_handle_t *h)
 
     return 0;
 }
+static int ws_threshold_update(ws_handle_t *h)
+{
+    char *json;
+    GlobalDeviceManager* dm= &__globalDeviceManage;
+    
+    if(cur_dev_addr==0) { 
+        json = threshold_status_ack_to_json(dm);
+        ws_send_data(h, json, strlen(json));
+        cJSON_free(json);
+    }
+    return 0;
+}
 
 static int ws_upg_update(ws_handle_t *h)
 {
@@ -246,9 +258,12 @@ static int ws_update(ws_handle_t *h)
     //sensor refresh
     r = ws_sensor_update(h);
     
-    // breaker refresh
+    //breaker refresh
     r = ws_breaker_update(h);
 
+    //threshold update
+    //r = ws_threshold_update();
+
     //upgrade refresh
     r = ws_upg_update(h);