# Deye Charge Speed Monitor

A Flask-based application for monitoring Deye Inverters (and compatible models) using the Solarman V5 protocol. This tool connects directly to the inverter via Modbus over TCP to read real-time data including voltages, currents, battery status, and BMS information.

## Features

- **Real-time Monitoring**: Reads critical data such as Input/Output Voltage, Grid/Load Currents, Battery SOC, Temperature, and Power.
- **BMS Integration**: Retrieves detailed Battery Management System (BMS) data for up to two battery packs.
- **Web Interface**: Provides a user-friendly dashboard to view inverter status (served at `/`).
- **JSON API**: Exposes raw data via a RESTful endpoint (`/api/data`) for integration with other systems.
- **PDF Utility**: Includes a tool to extract register information from Deye Modbus PDF manuals.

## Prerequisites

- Python 3.x
- A Deye Inverter (or compatible) connected to the network.
- Inverter IP address, Serial Number, and Modbus Slave ID.

## Installation

1.  **Clone the repository:**

    ```bash
    git clone <repository-url>
    cd deyeChargeSpeed
    ```

2.  **Create and activate a virtual environment:**

    ```bash
    python -m venv venv
    # Windows
    .\venv\Scripts\activate
    # Linux/Mac
    source venv/bin/activate
    ```

3.  **Install dependencies:**

    ```bash
    pip install -r requirements.txt
    ```

4.  **Configuration:**

    Copy the example configuration file and update it with your inverter details:

    ```bash
    cp config.py.example config.py
    ```

    Edit `config.py`:
    ```python
    INVERTER_IP = "192.168.x.x"
    INVERTER_SERIAL = 1234567890
    INVERTER_PORT = 8899
    INVERTER_SLAVE_ID = 1
    ```

## Usage

1.  **Start the application:**

    ```bash
    python app.py
    ```

2.  **Access the dashboard:**

    Open your web browser and navigate to `http://localhost:5000`.

## Utilities

### PDF Register Extractor

Located in `docs/extract_pdf.py`, this script helps identify Modbus registers from Deye PDF manuals.

**Usage:**
1.  Place your PDF manual in the `docs/` folder.
2.  Update the filename in `docs/extract_pdf.py` if necessary (defaults to `Modbus储能-组串-微逆宁波德业V118-1.pdf`).
3.  Run the script:
    ```bash
    python docs/extract_pdf.py
    ```
4.  Check `pdf_output.txt` for the extracted register locations and context.

## Resources

- [PySolarmanV5 Documentation](https://pysolarmanv5.readthedocs.io/en/stable/)
- [PySolarmanV5 GitHub](https://github.com/jmccrohan/pysolarmanv5)