> ## Documentation Index
> Fetch the complete documentation index at: https://developers.podero.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Solar Inverter Attributes

> Writable parameters for configuring solar inverters and battery systems

# Solar Inverter Attributes

Solar inverter attributes are writable parameters that control battery behavior, self-consumption optimization, and system configuration for photovoltaic installations.

## Required Parameters

<ParamField body="owner" type="string (UUID)" required>
  User ID that owns this solar inverter.

  **Example:** `016b78a7-0c7c-4241-a277-015c3ad3cb90`

  **Writable:** No (set at device creation)
</ParamField>

## Device Model

<ParamField body="device_model" type="object">
  The device model assigned to this inverter. Set during onboarding.

  **Writable:** No (set at device creation)

  <Expandable title="device_model fields">
    <ParamField body="manufacturer" type="string">
      Manufacturer name. **Example:** `Fronius`
    </ParamField>

    <ParamField body="model" type="string">
      Model name. **Example:** `Symo GEN24 10.0 Plus`
    </ParamField>

    <ParamField body="year" type="integer">
      Model year, if available. **Example:** `2022`
    </ParamField>

    <ParamField body="device_type" type="object">
      <Expandable title="device_type fields">
        <ParamField body="short_name" type="string">
          Machine-readable device type identifier. **Example:** `inverter`
        </ParamField>

        <ParamField body="long_name" type="string">
          Human-readable device type label. **Example:** `Solar Inverter`
        </ParamField>
      </Expandable>
    </ParamField>
  </Expandable>
</ParamField>

## Optimization Control

<ParamField body="is_smart_optimization_active" type="boolean">
  Flag indicating whether Podero's smart optimization is actively controlling this inverter.

  Set to `false` to pause optimization without disconnecting the device.

  **Example:** `true`

  **Writable:** Yes
</ParamField>

## Solar System Configuration

<ParamField body="solar_power_rating_kw" type="float">
  Currently installed peak power rating of the solar system in kilowatts.

  **Example:** `10.2`

  **Writable:** Yes
</ParamField>

## Battery Configuration

<ParamField body="is_battery_connected" type="boolean">
  Flag indicating whether the inverter has a storage battery connected.

  Set to `false` for solar-only installations without battery storage.

  **Example:** `true`

  **Writable:** Yes
</ParamField>

<ParamField body="battery_capacity_kwh" type="float">
  Currently installed battery capacity in kilowatt-hours.

  Required if `is_battery_connected` is `true`.

  **Example:** `10.0`

  **Writable:** Yes
</ParamField>

## Battery Charge Limits

<ParamField body="min_battery_charge" type="float">
  Minimum allowed battery charge level in percent.

  Battery will not discharge below this level, ensuring backup power availability.

  **Example:** `20`

  **Range:** 0-100

  **Writable:** Yes
</ParamField>

<ParamField body="max_battery_charge" type="float">
  Maximum allowed battery charge level in percent.

  Useful for battery longevity or to reserve capacity for grid services.

  **Example:** `90`

  **Range:** 0-100

  **Writable:** Yes
</ParamField>

## Usage Examples

### Configure Solar System with Battery

<CodeGroup>
  ```bash cURL theme={null}
  curl -X PUT \
    'https://app.podero.com/api/partners/v2.0/org/{org_id}/users/{user_id}/inverters/{device_id}' \
    -H 'Authorization: Bearer {auth_token}' \
    -H 'Content-Type: application/json' \
    -d '{
      "solar_power_rating_kw": 10.2,
      "is_battery_connected": true,
      "battery_capacity_kwh": 13.5,
      "min_battery_charge": 20,
      "max_battery_charge": 100
    }'
  ```

  ```python Python theme={null}
  response = requests.put(
      f'https://app.podero.com/api/partners/v2.0/org/{org_id}/users/{user_id}/inverters/{device_id}',
      headers={
          'Authorization': f'Bearer {auth_token}',
          'Content-Type': 'application/json'
      },
      json={
          'solar_power_rating_kw': 10.2,
          'is_battery_connected': True,
          'battery_capacity_kwh': 13.5,
          'min_battery_charge': 20,
          'max_battery_charge': 100
      }
  )
  ```
</CodeGroup>

### Configure Solar-Only System (No Battery)

<CodeGroup>
  ```bash cURL theme={null}
  curl -X PUT \
    'https://app.podero.com/api/partners/v2.0/org/{org_id}/users/{user_id}/inverters/{device_id}' \
    -H 'Authorization: Bearer {auth_token}' \
    -H 'Content-Type: application/json' \
    -d '{
      "solar_power_rating_kw": 8.5,
      "is_battery_connected": false
    }'
  ```

  ```python Python theme={null}
  response = requests.put(
      f'https://app.podero.com/api/partners/v2.0/org/{org_id}/users/{user_id}/inverters/{device_id}',
      headers={
          'Authorization': f'Bearer {auth_token}',
          'Content-Type': 'application/json'
      },
      json={
          'solar_power_rating_kw': 8.5,
          'is_battery_connected': False
      }
  )
  ```
</CodeGroup>

### Configure Battery Limits for Backup Reserve

<CodeGroup>
  ```bash cURL theme={null}
  # Reserve 30% battery for backup power
  curl -X PUT \
    'https://app.podero.com/api/partners/v2.0/org/{org_id}/users/{user_id}/inverters/{device_id}' \
    -H 'Authorization: Bearer {auth_token}' \
    -H 'Content-Type: application/json' \
    -d '{
      "min_battery_charge": 30,
      "max_battery_charge": 90
    }'
  ```

  ```python Python theme={null}
  response = requests.put(
      f'https://app.podero.com/api/partners/v2.0/org/{org_id}/users/{user_id}/inverters/{device_id}',
      headers={
          'Authorization': f'Bearer {auth_token}',
          'Content-Type': 'application/json'
      },
      json={
          'min_battery_charge': 30,
          'max_battery_charge': 90
      }
  )
  ```
</CodeGroup>

## Best Practices

<AccordionGroup>
  <Accordion title="Battery Limits">
    * Set `min_battery_charge` to 20-30% to ensure backup power availability
    * Set `max_battery_charge` to 90-95% for battery longevity
    * Adjust limits seasonally based on usage patterns
  </Accordion>

  <Accordion title="System Configuration">
    * Keep `solar_power_rating_kw` updated if panels are added or removed
    * Update `battery_capacity_kwh` if the battery is upgraded
    * Set `is_battery_connected` to `false` for solar-only installations
    * Review configuration after system maintenance
  </Accordion>
</AccordionGroup>

## Common Scenarios

<AccordionGroup>
  <Accordion title="New Installation Setup">
    ```python theme={null}
    # Configure newly installed 10kW system with 13.5kWh battery
    update_inverter({
        'solar_power_rating_kw': 10.0,
        'is_battery_connected': True,
        'battery_capacity_kwh': 13.5,
        'min_battery_charge': 20,
        'max_battery_charge': 100,
    })
    ```
  </Accordion>

  <Accordion title="Add Battery to Existing Solar">
    ```python theme={null}
    # Update system after battery retrofit
    update_inverter({
        'is_battery_connected': True,
        'battery_capacity_kwh': 10.0,
        'min_battery_charge': 20,
        'max_battery_charge': 90
    })
    ```
  </Accordion>

  <Accordion title="Emergency Backup Reserve">
    ```python theme={null}
    # Increase backup reserve for expected power outage
    update_inverter({
        'min_battery_charge': 50,  # Reserve 50% for backup
    })

    # After emergency passes, return to normal
    update_inverter({
        'min_battery_charge': 20
    })
    ```
  </Accordion>

  <Accordion title="Seasonal Adjustment">
    ```python theme={null}
    # Summer: more production, higher max charge
    update_inverter({
        'max_battery_charge': 100
    })

    # Winter: less production, reserve more battery
    update_inverter({
        'min_battery_charge': 30
    })
    ```
  </Accordion>
</AccordionGroup>

<CardGroup cols={2}>
  <Card title="Solar Inverter State" icon="chart-line" href="/partner-api/reference/inverters/state">
    Read-only state data and current readings
  </Card>

  <Card title="Setting Preferences" icon="sliders" href="/partner-api/user-journeys/end-user/setting-preferences">
    User workflow for configuring preferences
  </Card>
</CardGroup>
