void handle_watt_value(const ZWay zway, ZWDataChangeType type, ZDataHolder data) { float current_watt_consumption; char *device; char nice_time[200]; time_t rawtime; struct tm *timeinfo; time(&rawtime); timeinfo = localtime(&rawtime); strftime(nice_time, sizeof(nice_time), "%F-%T", timeinfo); zdata_get_float(data, ¤t_watt_consumption); char *path = zdata_get_path(data); strtok(path, "."); device = strtok(NULL, "."); save_watt_value(nice_time, device, current_watt_consumption); free(path); }
void dump_data(const ZWay zway, ZDataHolder data) { char *path = zdata_get_path(data); ZWDataType type; zdata_get_type(data, &type); ZWBOOL bool_val; int int_val; float float_val; ZWCSTR str_val; const ZWBYTE *binary; const int *int_arr; const float *float_arr; const ZWCSTR *str_arr; size_t len, i; switch (type) { case Empty: zway_log(zway, Debug, ZSTR("DATA %s = Empty"), path); break; case Boolean: zdata_get_boolean(data, &bool_val); if (bool_val) zway_log(zway, Debug, ZSTR("DATA %s = True"), path); else zway_log(zway, Debug, ZSTR("DATA %s = False"), path); break; case Integer: zdata_get_integer(data, &int_val); zway_log(zway, Debug, ZSTR("DATA %s = %d (0x%08x)"), path, int_val, int_val); break; case Float: zdata_get_float(data, &float_val); zway_log(zway, Debug, ZSTR("DATA %s = %f"), path, float_val); break; case String: zdata_get_string(data, &str_val); zway_log(zway, Debug, ZSTR("DATA %s = \"%s\""), path, str_val); break; case Binary: zdata_get_binary(data, &binary, &len); zway_log(zway, Debug, ZSTR("DATA %s = byte[%d]"), path, len); zway_dump(zway, Debug, ZSTR(" "), len, binary); break; case ArrayOfInteger: zdata_get_integer_array(data, &int_arr, &len); zway_log(zway, Debug, ZSTR("DATA %s = int[%d]"), path, len); for (i = 0; i < len; i++) zway_log(zway, Debug, ZSTR(" [%02d] %d"), i, int_arr[i]); break; case ArrayOfFloat: zdata_get_float_array(data, &float_arr, &len); zway_log(zway, Debug, ZSTR("DATA %s = float[%d]"), path, len); for (i = 0; i < len; i++) zway_log(zway, Debug, ZSTR(" [%02d] %f"), i, float_arr[i]); break; case ArrayOfString: zdata_get_string_array(data, &str_arr, &len); zway_log(zway, Debug, ZSTR("DATA %s = string[%d]"), path, len); for (i = 0; i < len; i++) zway_log(zway, Debug, ZSTR(" [%02d] \"%s\""), i, str_arr[i]); break; } free(path); ZDataIterator child = zdata_first_child(data); while (child != NULL) { path = zdata_get_path(child->data); zway_log(zway, Debug, ZSTR("CHILD %s"), path); free(path); child = zdata_next_child(child); } //printf("intval : %d \n", int_val); }