powercom-upsmonpro-state-parser

Crates.iopowercom-upsmonpro-state-parser
lib.rspowercom-upsmonpro-state-parser
version1.0.0
sourcesrc
created_at2020-09-15 10:38:40.27049
updated_at2020-09-15 10:38:40.27049
descriptionParser of POWERCOM UPS state provided by UPSMON Pro software
homepagehttps://gitlab.com/fedorkotov/powercom-upsmonpro-state-parser
repositoryhttps://gitlab.com/fedorkotov/powercom-upsmonpro-state-parser
max_upload_size
id288946
size24,734
Fedor Kotov (fedorkotov)

documentation

README

pipeline MIT

powercom-upsmonpro-state-parser

[[TOC]]

Overview

powercom-upsmonpro-state-parser is a parser of POWERCOM UPS state provided as plain text by Windows versions of UPSMON Pro via HTTP (by default on port 8000) and as a plain text file (C:\Program Files\UPSMONPRO\UPSMONWebSer\ups.txt).

The parser is published on crates.io. To use it, add the following to your Cargo.toml file:

[dependencies]
powercom-upsmonpro-state-parser = "1.0.0"

This library is unofficial and is not endorsed by POWERCOM.

Examples

This simplified example program reads UPS state from hardcoded URL using reqwest crate (blocking client for simplicity), formats and writes it to standard output.

extern crate powercom_upsmonpro_state_parser;
extern crate reqwest;

use std::str::FromStr;

use powercom_upsmonpro_state_parser::{UPSState};

// replace 127.0.0.1 with actual
// ip of the machine where UPSMON PRO is installed.
const UPS_STATE_URL: &str = 
    "http://127.0.0.1:8000/ups.txt";

fn main() {
    let ups_state_str = 
        reqwest::blocking::get(UPS_STATE_URL)
        .unwrap()
        .text()
        .unwrap();

    let ups_state = 
        UPSState::from_str(
            ups_state_str.as_str())
        .unwrap();

    println!("{}", ups_state);

    if let UPSState::Connected(state) = ups_state         
    {
        if state.battery_charge_percent < 20
        {
            println!("WARNING: battery charge too low")
        }
    }
}

Example output:

Connection status: Connected, UPS Mode: Normal, Mains state: Ok, Vin=228 V, Vout=228 V, f=50 Hz, chg=100 %, load=0 %, T=30 C
Commit count: 8

cargo fmt