pzem004t 0.1.7

An embedded-hal driver for the PZEM004T energy monitor.
Documentation
pzem004t
====
[![crates.io](https://img.shields.io/crates/v/pzem004t.svg)](https://crates.io/crates/pzem004t)
[![docs.rs](https://docs.rs/pzem004t/badge.svg)](https://docs.rs/pzem004t/)
[![license](http://img.shields.io/badge/license-MIT-blue.svg)](LICENSE-MIT)
[![license](https://img.shields.io/badge/license-Apache%202.0-blue.svg)](LICENSE-APACHE)
[![Rust](https://github.com/iostapyshyn/pzem004t/workflows/Rust/badge.svg)](https://github.com/iostapyshyn/pzem004t/actions?query=workflow%3ARust)

An embedded-hal driver for the PZEM004T energy monitor.

A [CLI](https://github.com/iostapyshyn/pzem-cli) for the library is available and can be
run on all major operating systems (uses [serialport](https://crates.io/crates/serialport) crate).

## Examples
Examples can be found in the [`examples/`](https://github.com/iostapyshyn/pzem004t/tree/master/examples) directory.

### Read the measurements off the sensor every second
```rust
let mut pzem = pzem004t::Pzem::new(serial, None).unwrap();
let mut m = pzem004t::Measurement::default();
loop {
    match pzem.read(&mut m, Some((&mut tim, TIMEOUT))) {
        Err(e) => hprintln!("Could not read PZEM004T: {}", e).unwrap(),
        Ok(()) => {
            hprintln!("Voltage: {:.1} V", m.voltage).unwrap();
            hprintln!("Current: {:.3} A", m.current).unwrap();
            hprintln!("Power: {:.1} W", m.power).unwrap();
            hprintln!("Energy: {:.3} kWh", m.energy).unwrap();
            hprintln!("Frequency: {:.1} Hz", m.frequency).unwrap();
            hprintln!("Power factor: {:.2}", m.pf).unwrap();
            hprintln!("Alarm: {}\n", m.alarm).unwrap();
        }
    }

    tim.start(1.hz());
    block!(tim.wait()).unwrap();
}
```

## License

This project is licensed under either of

 * Apache License, Version 2.0, ([LICENSE-APACHE]LICENSE-APACHE or
   http://www.apache.org/licenses/LICENSE-2.0)
 * MIT license ([LICENSE-MIT]LICENSE-MIT or
   http://opensource.org/licenses/MIT)

at your option.


### Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted
for inclusion in hexi by you, as defined in the Apache-2.0 license, shall be
dual licensed as above, without any additional terms or conditions.