pub enum Variable {
DeviceModel(String),
DeviceManufacturer(String),
DeviceSerial(String),
DeviceType(DeviceType),
DeviceDescription(String),
DeviceContact(String),
DeviceLocation(String),
DevicePart(String),
DeviceMacAddress(String),
DeviceUptime(Duration),
Other((String, String)),
}
Expand description
Well-known variables for NUT UPS devices.
List retrieved from: https://networkupstools.org/docs/user-manual.chunked/apcs01.html
Variants§
DeviceModel(String)
Device model.
DeviceManufacturer(String)
Device manufacturer.
DeviceSerial(String)
Device serial number.
DeviceType(DeviceType)
Device type.
DeviceDescription(String)
Device description.
DeviceContact(String)
Device administrator name.
DeviceLocation(String)
Device physical location.
DevicePart(String)
Device part number.
DeviceMacAddress(String)
Device MAC address.
DeviceUptime(Duration)
Device uptime.
Other((String, String))
Any other variable. Value is a tuple of (key, value).
Implementations§
Source§impl Variable
impl Variable
Sourcepub fn name(&self) -> &str
pub fn name(&self) -> &str
Returns the NUT name of the variable.
Examples found in repository?
examples/blocking.rs (line 46)
7fn main() -> nut_client::Result<()> {
8 let host = env::var("NUT_HOST").unwrap_or_else(|_| "localhost".into());
9 let port = env::var("NUT_PORT")
10 .ok()
11 .map(|s| s.parse::<u16>().ok())
12 .flatten()
13 .unwrap_or(3493);
14
15 let username = env::var("NUT_USER").ok();
16 let password = env::var("NUT_PASSWORD").ok();
17 let auth = username.map(|username| Auth::new(username, password));
18
19 let config = ConfigBuilder::new()
20 .with_host((host, port).try_into().unwrap_or_default())
21 .with_auth(auth)
22 .with_debug(false) // Turn this on for debugging network chatter
23 .build();
24
25 let mut conn = Connection::new(&config)?;
26
27 // Get server information
28 println!("NUT server:");
29 println!("\tVersion: {}", conn.get_server_version()?);
30 println!("\tNetwork Version: {}", conn.get_network_version()?);
31
32 // Print a list of all UPS devices
33 println!("Connected UPS devices:");
34 for (name, description) in conn.list_ups()? {
35 println!("\t- Name: {}", name);
36 println!("\t Description: {}", description);
37 println!("\t Number of logins: {}", conn.get_num_logins(&name)?);
38
39 // Get list of mutable variables
40 let mutable_vars = conn.list_mutable_vars(&name)?;
41
42 // List UPS variables (key = val)
43 println!("\t Mutable Variables:");
44 for var in mutable_vars.iter() {
45 println!("\t\t- {}", var);
46 println!("\t\t {:?}", conn.get_var_type(&name, var.name())?);
47 }
48
49 // List UPS immutable properties (key = val)
50 println!("\t Immutable Properties:");
51 for var in conn.list_vars(&name)? {
52 if mutable_vars.iter().any(|v| v.name() == var.name()) {
53 continue;
54 }
55 println!("\t\t- {}", var);
56 println!("\t\t {:?}", conn.get_var_type(&name, var.name())?);
57 }
58
59 // List UPS commands
60 println!("\t Commands:");
61 for cmd in conn.list_commands(&name)? {
62 let description = conn.get_command_description(&name, &cmd)?;
63 println!("\t\t- {} ({})", cmd, description);
64 }
65 }
66
67 // Gracefully shut down the connection using the `LOGOUT` command
68 conn.close()
69}
More examples
examples/async.rs (line 50)
8async fn main() -> nut_client::Result<()> {
9 let host = env::var("NUT_HOST").unwrap_or_else(|_| "localhost".into());
10 let port = env::var("NUT_PORT")
11 .ok()
12 .map(|s| s.parse::<u16>().ok())
13 .flatten()
14 .unwrap_or(3493);
15
16 let username = env::var("NUT_USER").ok();
17 let password = env::var("NUT_PASSWORD").ok();
18 let auth = username.map(|username| Auth::new(username, password));
19
20 let config = ConfigBuilder::new()
21 .with_host((host, port).try_into().unwrap_or_default())
22 .with_auth(auth)
23 .with_debug(false) // Turn this on for debugging network chatter
24 .build();
25
26 let mut conn = Connection::new(&config).await?;
27
28 // Get server information
29 println!("NUT server:");
30 println!("\tVersion: {}", conn.get_server_version().await?);
31 println!("\tNetwork Version: {}", conn.get_network_version().await?);
32
33 // Print a list of all UPS devices
34 println!("Connected UPS devices:");
35 for (name, description) in conn.list_ups().await? {
36 println!("\t- Name: {}", name);
37 println!("\t Description: {}", description);
38 println!(
39 "\t Number of logins: {}",
40 conn.get_num_logins(&name).await?
41 );
42
43 // Get list of mutable variables
44 let mutable_vars = conn.list_mutable_vars(&name).await?;
45
46 // List UPS variables (key = val)
47 println!("\t Mutable Variables:");
48 for var in mutable_vars.iter() {
49 println!("\t\t- {}", var);
50 println!("\t\t {:?}", conn.get_var_type(&name, var.name()).await?);
51 }
52
53 // List UPS immutable properties (key = val)
54 println!("\t Immutable Properties:");
55 for var in conn.list_vars(&name).await? {
56 if mutable_vars.iter().any(|v| v.name() == var.name()) {
57 continue;
58 }
59 println!("\t\t- {}", var);
60 println!("\t\t {:?}", conn.get_var_type(&name, var.name()).await?);
61 }
62
63 // List UPS commands
64 println!("\t Commands:");
65 for cmd in conn.list_commands(&name).await? {
66 let description = conn.get_command_description(&name, &cmd).await?;
67 println!("\t\t- {} ({})", cmd, description);
68 }
69 }
70
71 // Gracefully shut down the connection using the `LOGOUT` command
72 conn.close().await
73}
Trait Implementations§
impl Eq for Variable
impl StructuralPartialEq for Variable
Auto Trait Implementations§
impl Freeze for Variable
impl RefUnwindSafe for Variable
impl Send for Variable
impl Sync for Variable
impl Unpin for Variable
impl UnwindSafe for Variable
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more