use serde::{Serialize, Deserialize};
#[derive(Serialize)]
pub(crate) struct Login {
pub(crate) username: String,
#[serde(rename(serialize = "userpwd"))]
pub(crate) password: String,
}
#[derive(Deserialize)]
pub struct LoginResponse {
pub code: i8,
pub success: bool,
pub token: String,
pub(crate) user: UserInfo,
}
#[derive(Deserialize)]
pub(crate) struct UserInfo {
pub id: u64,
#[serde(rename(deserialize = "loginName"))]
pub username: String,
pub email: String,
pub country: String,
}
#[derive(Deserialize)]
pub(crate) struct SiteResponse {
#[serde(rename(deserialize = "ratedPower"))]
pub rated_power: f32,
#[serde(rename(deserialize = "gridPower"))]
pub grid_power: f32,
#[serde(rename(deserialize = "totalYield"))]
pub total_yield: f64,
#[serde(rename(deserialize = "totalEpsEnergy"))]
pub total_eps_energy: f32,
#[serde(rename(deserialize = "monthEpsEnergy"))]
pub month_eps_energy: f32,
#[serde(rename(deserialize = "monthYield"))]
pub month_yield: f32,
#[serde(rename(deserialize = "siteName"))]
pub site_name: String,
#[serde(rename(deserialize = "inverterNum"))]
pub inverter_num: i16,
#[serde(rename(deserialize = "todayYield"))]
pub today_yield: f32,
#[serde(rename(deserialize = "yearYield"))]
pub year_yield: f64,
#[serde(rename(deserialize = "yearEpsEnergy"))]
pub year_eps_energy: f32,
#[serde(rename(deserialize = "todayEpsEnergy"))]
pub today_eps_energy: f32,
}
#[derive(Deserialize)]
pub(crate) struct InverterStateResponse {
#[serde(rename(deserialize = "batVoltage1"))]
pub battery_voltage: Option<f32>,
#[serde(rename(deserialize = "batteryCapacity"))]
pub battery_capacity: Option<f32>,
#[serde(rename(deserialize = "batteryCellTemperatureHigh"))]
pub battery_temperature_high: Option<f32>,
#[serde(rename(deserialize = "batteryCellTemperatureLow"))]
pub battery_temperature_low: Option<f32>,
#[serde(rename(deserialize = "feedinpower"))]
pub grid_power: f32,
#[serde(rename(deserialize = "powerdc1"))]
pub first_array_power: f32,
#[serde(rename(deserialize = "powerdc2"))]
pub second_array_power: f32,
}
#[derive(Deserialize)]
pub(crate) struct InvertersResponse {
pub rows: Vec<InverterInfo>
}
#[derive(Deserialize)]
pub(crate) struct InverterInfo {
#[serde(rename = "wifiSN")]
pub wifi_sn: String,
pub sn: String,
}