use crate::api_requests::DeviceType;
use crate::api_responses::{GetDevListData, GetDevRealKpiDataInverterItem, GetDevRealKpiResponse};
use crate::client::HuaweiClient;
use crate::client_impl::HuaweiClientImpl;
#[actix_rt::test]
async fn test_login() {
let cl = HuaweiClientImpl::default(env!("HUAWEI_USER"), env!("HUAWEI_PASSWORD"));
let token = cl.login().await.unwrap();
assert_eq!(cl.xsrf_token().unwrap(), token);
}
#[actix_rt::test]
async fn test_get_station_list() {
let cl = HuaweiClientImpl::default(env!("HUAWEI_USER"), env!("HUAWEI_PASSWORD"));
let result = cl.get_station_list().await.unwrap();
println!("{:?}", result);
}
#[actix_rt::test]
async fn test_get_realtime_station_data() {
let cl = HuaweiClientImpl::default(env!("HUAWEI_USER"), env!("HUAWEI_PASSWORD"));
let result = cl.get_realtime_station_data("NE=35201359").await.unwrap();
println!("{:?}", result);
}
#[actix_rt::test]
async fn test_get_realtime_inverter_device_data() {
let cl = HuaweiClientImpl::default(env!("HUAWEI_USER"), env!("HUAWEI_PASSWORD"));
let result = cl
.get_realtime_residential_inverter_data(1000000035201360)
.await
.unwrap();
println!("{:?}", result);
}
#[actix_rt::test]
async fn test_get_realtime_power_sensor_device_data() {
let cl = HuaweiClientImpl::default(env!("HUAWEI_USER"), env!("HUAWEI_PASSWORD"));
let result = cl
.get_realtime_power_sensor_data(1000000035210199)
.await
.unwrap();
println!("{:?}", result);
}
#[actix_rt::test]
async fn test_get_dev_list() {
let cl = HuaweiClientImpl::default(env!("HUAWEI_USER"), env!("HUAWEI_PASSWORD"));
let result = cl.get_device_list("NE=35201359").await.unwrap();
println!("{:?}", result);
}
#[actix_rt::test]
async fn test_full() {
let cl = HuaweiClientImpl::default(env!("HUAWEI_USER"), env!("HUAWEI_PASSWORD"));
let stations = cl.get_station_list().await.unwrap();
let station = stations.first().unwrap();
let realtime_data = cl.get_realtime_station_data(station.station_code.as_str()).await.unwrap();
println!("{:?}", realtime_data);
let devices = cl.get_device_list(station.station_code.as_str()).await.unwrap();
println!("{:?}", devices);
let power_sensor: &GetDevListData = devices.iter()
.filter(|device| device.dev_type_id == DeviceType::PowerSensor)
.collect::<Vec<&GetDevListData>>()
.first()
.unwrap();
let power_sensor_data = cl.get_realtime_power_sensor_data(power_sensor.id).await.unwrap();
println!("{:?}", power_sensor_data);
let inverter: &GetDevListData = devices.iter()
.filter(|device| device.dev_type_id == DeviceType::ResidentialInverter)
.collect::<Vec<&GetDevListData>>()
.first()
.unwrap();
let inverter_data = cl.get_realtime_residential_inverter_data(inverter.id).await.unwrap();
println!("{:?}", inverter_data);
}
#[test]
fn json_deserialize() {
let json = "{\"data\":[{\"devId\":1000000035201360,\"dataItemMap\":{\"pv1_u\":218.8,\"pv2_u\":0.0,\"pv3_u\":0.0,\"pv4_u\":0.0,\"pv5_u\":0.0,\"pv6_u\":0.0,\"power_factor\":1.0,\"pv7_u\":0.0,\"pv8_u\":0.0,\"open_time\":1661060871000,\"inverter_state\":512.0,\"a_i\":9.13,\"total_cap\":647.8,\"c_i\":0.0,\"mppt_3_cap\":0.0,\"b_i\":0.0,\"reactive_power\":-0.002,\"a_u\":118.3,\"temperature\":43.3,\"c_u\":0.0,\"b_u\":0.1,\"bc_u\":0.0,\"elec_freq\":50.01,\"mppt_4_cap\":0.0,\"efficiency\":98.03,\"day_cap\":6.95,\"mppt_power\":2.186,\"run_state\":1,\"mppt_1_cap\":660.69,\"close_time\":1661022686000,\"pv1_i\":10.02,\"pv2_i\":0.0,\"pv3_i\":0.0,\"mppt_2_cap\":0.0,\"pv4_i\":0.0,\"active_power\":2.149,\"pv5_i\":0.0,\"pv6_i\":0.0,\"ca_u\":0.0,\"ab_u\":236.5,\"pv7_i\":0.0,\"pv8_i\":0.0}}],\"failCode\":0,\"message\":null,\"params\":{\"currentTime\":1661080260970,\"devIds\":\"1000000035201360\",\"devTypeId\":38},\"success\":true}";
let result: GetDevRealKpiResponse<GetDevRealKpiDataInverterItem> =
serde_json::from_str(json).unwrap();
println!("{:?}", result);
}