Pārlūkot izejas kodu

1、增加断路器跳闸报警信息

liyuezong 1 gadu atpakaļ
vecāks
revīzija
befef1f0b5
4 mainītis faili ar 28 papildinājumiem un 3 dzēšanām
  1. 2 0
      pro/config/cfg.h
  2. 23 2
      pro/src/app.c
  3. 2 1
      pro/src/sqlite_handle.c
  4. 1 0
      pro/src/sqlite_handle.h

+ 2 - 0
pro/config/cfg.h

@@ -311,6 +311,8 @@
     #define PROD_POWER_TYPE                     0
 
     #define USE_CH_CTRL_CONFIG
+	
+	#define USE_BREAKER_ALARM
 
 #elif (defined PRJ_IP_AC_I3_O1)
     #define LANGUAGE                            0

+ 23 - 2
pro/src/app.c

@@ -33,7 +33,8 @@
 #include "wifi.h"
 #include <sys/msg.h>
 #include "stdlib.h"
-
+#include "led.h"
+#include "beep.h"
 
 
 static void* power_thread(void* arg)
@@ -1565,6 +1566,7 @@ static void* breaker_thread(void *arg)
     GlobalBreakerManager *temp = NULL;
     uint16_t value = 0;
     breaker_scanner_t* breaker_scann = get_breaker_scanner(); 
+    uint32_t        pre_breaker_status;
 
     while (h->quit==0)
     {
@@ -1574,7 +1576,7 @@ static void* breaker_thread(void *arg)
             if(h->quit) {
                 break;
             }
-
+            pre_breaker_status=temp->breaker_status ;
             // if(temp->breaker_gather_addr != 0)
             // {
             //     value = 0;
@@ -1711,6 +1713,25 @@ static void* breaker_thread(void *arg)
             {
                 hlw8110_read_Status(NULL,(int*)(&temp->breaker_status));
             }
+#ifdef USE_BREAKER_ALARM
+            if (pre_breaker_status && !temp->breaker_status)
+            {
+                time_t now;
+                time(&now);
+                struct tm *t;
+                t = localtime(&now);
+
+                char buffer[80];
+                strftime(buffer, sizeof(buffer), "%Y-%m-%d %H:%M:%S", t);
+                char AlarmText[256];
+                snprintf(AlarmText, sizeof(AlarmText), "断路器 %d 断开", temp->breaker_id);
+                log_i(AlarmText);
+
+                int nAlarmID = dev_insert_alarm_info(_globalDeviceManager->db, temp->product_id, 0, buffer, AlarmText);
+
+                set_led_beep(LED_MODE_WARN2, BEEP_MODE_WARN2);
+            }
+#endif
         }
         lock_s_release(LOCK_ID_BREAKER);
         sleep(1);

+ 2 - 1
pro/src/sqlite_handle.c

@@ -41,7 +41,7 @@ static int utc_to_time(uint32_t *utc, char *time)
 }
 
 
-static void set_led_beep(int led_mode, int beep_mode)
+void set_led_beep(int led_mode, int beep_mode)
 {
     led_set(led_mode);
     beep_set(beep_mode);
@@ -624,6 +624,7 @@ int dev_search_latest_power_All_info(GlobalDeviceManager* globalDeviceManger,_Ov
             _overChnPwrBackInfoTemp->productChName = _globalPowerMangerTemp->product_ch_name;
             _overChnPwrBackInfoTemp->productChId = _globalPowerMangerTemp->product_ch_id;
             _overChnPwrBackInfoTemp->status = _globalPowerMangerTemp->_PowerInfo.status;
+            _overChnPwrBackInfoTemp->OperAllowFlag=_globalPowerMangerTemp->_PowerInfo.OperAllowFlag;
             _overChnPwrBackInfoTemp->voltage = _globalPowerMangerTemp->_PowerInfo.voltage;
             _overChnPwrBackInfoTemp->current = _globalPowerMangerTemp->_PowerInfo.current;
             _overChnPwrBackInfoTemp->power = _globalPowerMangerTemp->_PowerInfo.power;

+ 1 - 0
pro/src/sqlite_handle.h

@@ -211,5 +211,6 @@ int dev_log_xport(int type, time_t from, time_t to, char *path);
 int dev_power_xport(time_t from, time_t to, char *path);
 int dev_clear_table(sqlite3 *db, int tab_id);
 
+void set_led_beep(int led_mode, int beep_mode);
 
 #endif