|
|
@@ -449,6 +449,8 @@ static void send_period(mqtt_conn_t *conn)
|
|
|
send_stat(conn, MQTT_PUB_STAT_POWER_CHN);
|
|
|
send_stat(conn, MQTT_PUB_STAT_SENSOR);
|
|
|
send_stat(conn, MQTT_PUB_STAT_SERVICE);
|
|
|
+ send_stat(conn, MQTT_PUB_INFO_DEVICE);
|
|
|
+ send_stat(conn, MQTT_PUB_STAT_NETWORK);
|
|
|
}
|
|
|
|
|
|
static void timer_conn_fn(void *arg)
|
|
|
@@ -739,44 +741,59 @@ static int send_stat(mqtt_conn_t *conn, int type)
|
|
|
int cnt=1;
|
|
|
pwrall_info_t *pall=websocket_get_pwrall();
|
|
|
|
|
|
- if(pall->ph3) {
|
|
|
+ if (pall->ph3)
|
|
|
+ {
|
|
|
cnt = 3;
|
|
|
}
|
|
|
+ cJSON *root = cJSON_CreateObject();
|
|
|
+ if (root)
|
|
|
+ {
|
|
|
+ cJSON *data_root_array = cJSON_CreateArray();
|
|
|
+ for (i = 0; i < cnt; i++)
|
|
|
+ {
|
|
|
+ _OverAllPwrAckInfo *info = &pall->ch[i];
|
|
|
|
|
|
- for(i=0; i<cnt; i++) {
|
|
|
- _OverAllPwrAckInfo *info=&pall->ch[i];
|
|
|
-
|
|
|
- cJSON* root=cJSON_CreateObject();
|
|
|
- if(root) {
|
|
|
- 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 *data_filed = cJSON_CreateObject();
|
|
|
+ if (data_filed)
|
|
|
{
|
|
|
- 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));
|
|
|
+ sprintf(buf, "L%d", i + 1);
|
|
|
+ if (cnt == 3)
|
|
|
+ cJSON_AddStringToObject(data_filed, "phase", buf);
|
|
|
+ cJSON_AddStringToObject(data_filed, "voltage", get_float_str(info->voltage));
|
|
|
+ cJSON_AddStringToObject(data_filed, "current", get_float_str(info->current));
|
|
|
+ cJSON_AddStringToObject(data_filed, "power", get_float_str(info->power / 1000));
|
|
|
+ cJSON_AddStringToObject(data_filed, "consumption", get_float_str(info->consumption));
|
|
|
+ if (h->dm->_globalDevInfo.product.pwr_type != SmartPDU_DC)
|
|
|
+ {
|
|
|
+ cJSON_AddStringToObject(data_filed, "power_factor", get_float_str(info->factor));
|
|
|
+ cJSON_AddStringToObject(data_filed, "power_freq", get_float_str(info->freq));
|
|
|
+ p1 = info->power;
|
|
|
+ p3 = (info->factor ? (p1 / info->factor) : 0.0f);
|
|
|
+ p2 = p3 - p1;
|
|
|
+ cJSON_AddStringToObject(data_filed, "pactive_power", get_float_str(p1));
|
|
|
+ cJSON_AddStringToObject(data_filed, "reactive_power", get_float_str(p2));
|
|
|
+ cJSON_AddStringToObject(data_filed, "apparent_power", get_float_str(p3));
|
|
|
+ }
|
|
|
+ cJSON_AddItemToObject(data_root_array, "power_status", data_filed);
|
|
|
}
|
|
|
+ }
|
|
|
+ cJSON_AddItemToObject(root, "power_status", data_root_array);
|
|
|
|
|
|
- get_date_time(date, time);
|
|
|
- cJSON_AddStringToObject(root,"date", date);
|
|
|
- cJSON_AddStringToObject(root,"time", time);
|
|
|
+ cJSON_AddStringToObject(root, "voltage_over", get_int_str(h->dm->_globalPowerManger._PowerWarninginfo.w_voltage_up));
|
|
|
+ cJSON_AddStringToObject(root, "voltage_low", get_int_str(h->dm->_globalPowerManger._PowerWarninginfo.w_voltage_down));
|
|
|
+ cJSON_AddStringToObject(root, "current_over", get_int_str(h->dm->_globalPowerManger._PowerWarninginfo.w_current));
|
|
|
+ cJSON_AddStringToObject(root, "power_over", get_int_str(h->dm->_globalPowerManger._PowerWarninginfo.w_power));
|
|
|
+ cJSON_AddStringToObject(root, "consumption_over", get_int_str(h->dm->_globalPowerManger._PowerWarninginfo.w_consumption));
|
|
|
|
|
|
- content = cJSON_Print(root);
|
|
|
- my_pub(conn, topic, content);
|
|
|
- cJSON_free(content);
|
|
|
+ get_date_time(date, time);
|
|
|
+ cJSON_AddStringToObject(root, "date", date);
|
|
|
+ cJSON_AddStringToObject(root, "time", time);
|
|
|
|
|
|
- cJSON_Delete(root);
|
|
|
- }
|
|
|
+ content = cJSON_Print(root);
|
|
|
+ my_pub(conn, topic, content);
|
|
|
+ cJSON_free(content);
|
|
|
+
|
|
|
+ cJSON_Delete(root);
|
|
|
}
|
|
|
}
|
|
|
break;
|
|
|
@@ -796,13 +813,26 @@ 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,"name", tmp->product_ch_name);
|
|
|
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, "consumption", get_float_str(tmp->_PowerInfo.consumption));
|
|
|
+
|
|
|
+ cJSON_AddStringToObject(root, "voltage_over", get_int_str(tmp->_PowerWarninginfo.w_voltage_up));
|
|
|
+ cJSON_AddStringToObject(root, "voltage_low", get_int_str(tmp->_PowerWarninginfo.w_voltage_down));
|
|
|
+ cJSON_AddStringToObject(root, "current_over", get_int_str(tmp->_PowerWarninginfo.w_current));
|
|
|
+ cJSON_AddStringToObject(root, "power_over", get_int_str(tmp->_PowerWarninginfo.w_power));
|
|
|
+ cJSON_AddStringToObject(root, "consumption_over", get_int_str(tmp->_PowerWarninginfo.w_consumption));
|
|
|
+
|
|
|
+ if (h->dm->_globalDevInfo.product.pwr_type == SmartPDU_Tree_AC_Tree)
|
|
|
+ {
|
|
|
+ cJSON_AddStringToObject(root, "phase_loss_L1", get_int_str(tmp->_PowerWarninginfo.w_phase_lossA));
|
|
|
+ cJSON_AddStringToObject(root, "phase_loss_L2", get_int_str(tmp->_PowerWarninginfo.w_phase_lossB));
|
|
|
+ cJSON_AddStringToObject(root, "phase_loss_L3", get_int_str(tmp->_PowerWarninginfo.w_phase_lossC));
|
|
|
+ }
|
|
|
+
|
|
|
if (h->dm->_globalDevInfo.product.pwr_type != SmartPDU_DC)
|
|
|
{
|
|
|
cJSON_AddStringToObject(root, "power_freq", get_float_str(tmp->_PowerInfo.freq));
|
|
|
@@ -831,7 +861,7 @@ static int send_stat(mqtt_conn_t *conn, int type)
|
|
|
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(data_root_array, "phase_data", data_filed);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
@@ -866,7 +896,7 @@ static int send_stat(mqtt_conn_t *conn, int type)
|
|
|
|
|
|
cJSON* root=cJSON_CreateObject();
|
|
|
if(root) {
|
|
|
- cJSON_AddStringToObject(root,"name", "temp sensor");
|
|
|
+ cJSON_AddStringToObject(root,"name", tmp->sensor_name);
|
|
|
cJSON_AddStringToObject(root,"type", get_int_str(tmp->sensor_type));
|
|
|
cJSON_AddStringToObject(root,"modbus_address", get_int_str(tmp->sensor_addr));
|
|
|
cJSON_AddStringToObject(root,"node", get_int_str(tmp->sensor_node_number));
|
|
|
@@ -874,7 +904,12 @@ static int send_stat(mqtt_conn_t *conn, int type)
|
|
|
cJSON_AddStringToObject(root,"value_num", get_int_str(tmp->sensor_val_count));
|
|
|
cJSON_AddStringToObject(root,"value1", get_float_str(tmp->Cur_sensor_info.val1));
|
|
|
cJSON_AddStringToObject(root,"value2", get_float_str(tmp->Cur_sensor_info.val2));
|
|
|
-
|
|
|
+
|
|
|
+ cJSON_AddStringToObject(root, "value1_over", get_int_str(tmp->warning_status.sensor_val1_upper));
|
|
|
+ cJSON_AddStringToObject(root, "value1_low", get_int_str(tmp->warning_status.sensor_val1_lower));
|
|
|
+ cJSON_AddStringToObject(root, "value2_over", get_int_str(tmp->warning_status.sensor_val2_upper));
|
|
|
+ cJSON_AddStringToObject(root, "value2_low", get_int_str(tmp->warning_status.sensor_val2_lower));
|
|
|
+
|
|
|
get_date_time(date, time);
|
|
|
cJSON_AddStringToObject(root,"date", date);
|
|
|
cJSON_AddStringToObject(root,"time", time);
|