#temperature-humidity #mini #co2 #airco2ntrol #tfa #dostmann #coach

bin+lib aircontrol

This Rust module provides a high-level interface for interacting with Dostmann TFA AIRCO2NTROL Mini and Coach devices, focusing on monitoring environmental parameters like CO2 levels, temperature, and humidity. It utilizes the hidapi library for cross-platform HID communication, ensuring a structured and multithreaded approach to data acquisition and event handling.

1 stable release

1.0.0 Feb 4, 2024

#1307 in Embedded development

MIT license

120KB
114 lines

AirControl: a Rust Library for Dostmann TFA AIRCO2NTROL Devices

AirControl Logo

This Rust module provides a high-level interface for interacting with Dostmann TFA AIRCO2NTROL Mini and Coach devices, focusing on monitoring environmental parameters like CO2 levels, temperature, and humidity. It utilizes the hidapi library for cross-platform HID communication, ensuring a structured and multithreaded approach to data acquisition and event handling.

Features

  • Real-Time Monitoring: Track CO2 levels, temperature, and humidity in real-time.
  • Cross-Platform: Built on top of the hidapi library, ensuring compatibility across different operating systems.
  • Event-Driven: Utilizes callbacks to handle new data, making it easy to integrate with other systems or UIs.
  • Multithreaded Design: Ensures non-blocking data acquisition and processing.

Installation

To add this module in your project, use the following command:

cargo add aircontrol

Usage

Here is a simple example of how to use this interface to monitor environmental parameters:

use aircontrol::AirControl;

fn main() {
    let mut air_control = AirControl::new().expect("Failed to initialize the AirControl interface");

    // The new result will be printed with every update.
    air_control.register_callback(Box::new(|time, co2, temperature, humidity| {
        println!("{} - CO2: {} ppm, Temp: {}°C, Humidity: {}%", time, co2, temperature, humidity);
    }));

    // The monitoring runs on a separate thread and will invoke the callback with new data.
    air_control.start_monitoring();
    

    // Remember to gracefully stop the monitoring when your application is closing or when you need to stop it.
    air_control.stop_monitoring();
}

Contributing

Contributions to this project are welcome. Please adhere to the following guidelines:

  • Fork the repository and create a new branch for your feature or bug fix.
  • Write clean and documented code.
  • Ensure your changes do not break existing functionality.
  • Submit a pull request with a comprehensive description of your changes.

License

This project is licensed under the MIT License - see the LICENSE file for details.

Acknowledgments

This library is developed by @DJE98. Thanks to the hidapi library developers and contributors for providing a robust cross-platform HID communication solution.

Dependencies

~1–11MB
~74K SLoC