|
|
@@ -34,7 +34,7 @@
|
|
|
|
|
|
|
|
|
#define CONN_PERIOD 5000 //ms
|
|
|
-#define SEND_PERIOD 5000 //ms
|
|
|
+#define SEND_PERIOD 3000 //ms
|
|
|
|
|
|
|
|
|
#define BGET(flag,mask) ((flag)&(1<<(mask)))
|
|
|
@@ -441,14 +441,14 @@ static int send_once(mqtt_conn_t *conn)
|
|
|
{
|
|
|
send_stat(conn, MQTT_PUB_INFO_DEVICE);
|
|
|
send_stat(conn, MQTT_PUB_STAT_NETWORK);
|
|
|
- send_stat(conn, MQTT_PUB_STAT_SENSOR);
|
|
|
- send_stat(conn, MQTT_PUB_STAT_SERVICE);
|
|
|
return 0;
|
|
|
}
|
|
|
static void send_period(mqtt_conn_t *conn)
|
|
|
{
|
|
|
send_stat(conn, MQTT_PUB_STAT_POWER_ALL);
|
|
|
send_stat(conn, MQTT_PUB_STAT_POWER_CHN);
|
|
|
+ send_stat(conn, MQTT_PUB_STAT_SENSOR);
|
|
|
+ send_stat(conn, MQTT_PUB_STAT_SERVICE);
|
|
|
}
|
|
|
|
|
|
static void timer_conn_fn(void *arg)
|
|
|
@@ -748,19 +748,24 @@ static int send_stat(mqtt_conn_t *conn, int type)
|
|
|
|
|
|
cJSON* root=cJSON_CreateObject();
|
|
|
if(root) {
|
|
|
- sprintf(buf, "L%d", i+1);
|
|
|
- cJSON_AddStringToObject(root,"phase", buf);
|
|
|
- cJSON_AddStringToObject(root,"voltage", get_float_str(info->voltage));
|
|
|
- cJSON_AddStringToObject(root,"current", get_float_str(info->current));
|
|
|
- cJSON_AddStringToObject(root,"power", get_float_str(info->power/1000));
|
|
|
- cJSON_AddStringToObject(root,"consumption", get_float_str(info->consumption));
|
|
|
-
|
|
|
- p1 = info->power;
|
|
|
- p3 = (info->factor?(p1/info->factor):0.0f);
|
|
|
- p2 = p3 - p1;
|
|
|
- cJSON_AddStringToObject(root,"pactive_power", get_float_str(p1));
|
|
|
- cJSON_AddStringToObject(root,"reactive_power", get_float_str(p2));
|
|
|
- cJSON_AddStringToObject(root,"apparent_power", get_float_str(p3));
|
|
|
+ sprintf(buf, "L%d", i + 1);
|
|
|
+ if (cnt == 3)
|
|
|
+ cJSON_AddStringToObject(root, "phase", buf);
|
|
|
+ cJSON_AddStringToObject(root, "voltage", get_float_str(info->voltage));
|
|
|
+ cJSON_AddStringToObject(root, "current", get_float_str(info->current));
|
|
|
+ cJSON_AddStringToObject(root, "power", get_float_str(info->power / 1000));
|
|
|
+ cJSON_AddStringToObject(root, "consumption", get_float_str(info->consumption));
|
|
|
+ if (h->dm->_globalDevInfo.product.pwr_type != SmartPDU_DC)
|
|
|
+ {
|
|
|
+ cJSON_AddStringToObject(root, "power_factor", get_float_str(info->factor));
|
|
|
+ cJSON_AddStringToObject(root, "power_freq", get_float_str(info->freq));
|
|
|
+ p1 = info->power;
|
|
|
+ p3 = (info->factor ? (p1 / info->factor) : 0.0f);
|
|
|
+ p2 = p3 - p1;
|
|
|
+ cJSON_AddStringToObject(root, "pactive_power", get_float_str(p1));
|
|
|
+ cJSON_AddStringToObject(root, "reactive_power", get_float_str(p2));
|
|
|
+ cJSON_AddStringToObject(root, "apparent_power", get_float_str(p3));
|
|
|
+ }
|
|
|
|
|
|
get_date_time(date, time);
|
|
|
cJSON_AddStringToObject(root,"date", date);
|
|
|
@@ -790,23 +795,47 @@ static int send_stat(mqtt_conn_t *conn, int type)
|
|
|
|
|
|
cJSON* root=cJSON_CreateObject();
|
|
|
if(root) {
|
|
|
+ cJSON_AddStringToObject(root,"id", get_int_str(tmp->product_ch_id));
|
|
|
sprintf(buf, "CH%d", tmp->product_ch_id);
|
|
|
cJSON_AddStringToObject(root,"name", buf);
|
|
|
cJSON_AddStringToObject(root,"status", get_int_str(tmp->_PowerInfo.status));
|
|
|
cJSON_AddStringToObject(root,"voltage", get_float_str(tmp->_PowerInfo.voltage));
|
|
|
- cJSON_AddStringToObject(root,"current", get_float_str(tmp->_PowerInfo.current));
|
|
|
- cJSON_AddStringToObject(root,"power", get_float_str(tmp->_PowerInfo.power));
|
|
|
- cJSON_AddStringToObject(root,"power_freq", get_float_str(tmp->_PowerInfo.freq));
|
|
|
- cJSON_AddStringToObject(root,"consumption", get_float_str(tmp->_PowerInfo.consumption));
|
|
|
- cJSON_AddStringToObject(root,"power_factor", get_float_str(tmp->_PowerInfo.factor));
|
|
|
-
|
|
|
-
|
|
|
- p1 = tmp->_PowerInfo.power;
|
|
|
- p3 = p1 / tmp->_PowerInfo.factor;
|
|
|
- p2 = p3 - p1;
|
|
|
- cJSON_AddStringToObject(root,"pactive_power", get_float_str(p1));
|
|
|
- cJSON_AddStringToObject(root,"reactive_power", get_float_str(p2));
|
|
|
- cJSON_AddStringToObject(root,"apparent_power", get_float_str(p3));
|
|
|
+ cJSON_AddStringToObject(root, "current", get_float_str(tmp->_PowerInfo.current));
|
|
|
+ cJSON_AddStringToObject(root, "power", get_float_str(tmp->_PowerInfo.power));
|
|
|
+ cJSON_AddStringToObject(root, "consumption", get_float_str(tmp->_PowerInfo.consumption));
|
|
|
+ if (h->dm->_globalDevInfo.product.pwr_type != SmartPDU_DC)
|
|
|
+ {
|
|
|
+ cJSON_AddStringToObject(root, "power_freq", get_float_str(tmp->_PowerInfo.freq));
|
|
|
+ cJSON_AddStringToObject(root, "power_factor", get_float_str(tmp->_PowerInfo.factor));
|
|
|
+ p1 = tmp->_PowerInfo.power;
|
|
|
+ p3 = p1 / tmp->_PowerInfo.factor;
|
|
|
+ p2 = p3 - p1;
|
|
|
+ cJSON_AddStringToObject(root, "pactive_power", get_float_str(p1));
|
|
|
+ cJSON_AddStringToObject(root, "reactive_power", get_float_str(p2));
|
|
|
+ cJSON_AddStringToObject(root, "apparent_power", get_float_str(p3));
|
|
|
+ }
|
|
|
+
|
|
|
+ cJSON* data_root_array = cJSON_CreateArray();
|
|
|
+ if (h->dm->_globalDevInfo.product.pwr_type == TREE_AC_TYPE|| h->dm->_globalDevInfo.product.pwr_type==DOUBLE_AC_TYPE|| h->dm->_globalDevInfo.product.pwr_type==SmartPDU_Tree_AC_One_B)
|
|
|
+ {
|
|
|
+ GlobalTreeACManager *_TreeACTemp = NULL;
|
|
|
+ // 判断是否三相单输出情况下
|
|
|
+ int phnum = 0;
|
|
|
+ list_for_each_entry(_TreeACTemp, &tmp->list_Tree_AC, list_Tree_AC)
|
|
|
+ {
|
|
|
+ if(_TreeACTemp->product_ph_outputStatus == 1 &&_TreeACTemp->product_ph_type >= 0 && _TreeACTemp->product_ph_type < 3)
|
|
|
+ {
|
|
|
+ cJSON *data_filed = cJSON_CreateObject();
|
|
|
+ cJSON_AddStringToObject(data_filed, "phase_type", g_product_t_ac_type_str[_TreeACTemp->product_ph_type]);
|
|
|
+ cJSON_AddStringToObject(data_filed, "phase_voltage", get_float_str(_TreeACTemp->_PowerInfo.voltage));
|
|
|
+ cJSON_AddStringToObject(data_filed, "phase_current", get_float_str(_TreeACTemp->_PowerInfo.current));
|
|
|
+ cJSON_AddStringToObject(data_filed, "phase_power", get_float_str(_TreeACTemp->_PowerInfo.power));
|
|
|
+ cJSON_AddStringToObject(data_filed, "phase_consumption", get_float_str(_TreeACTemp->_PowerInfo.consumption));
|
|
|
+ cJSON_AddItemToObject(data_root_array, "phase_data", data_filed);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ cJSON_AddItemToObject(root, "phase_data", data_root_array);
|
|
|
|
|
|
get_date_time(date, time);
|
|
|
cJSON_AddStringToObject(root,"date", date);
|