# RUUF Solar for Home Assistant (REST, no custom integration needed).
#
# 1. Save this file as /config/packages/ruuf_solar.yaml and make sure configuration.yaml has:
#      homeassistant:
#        packages: !include_dir_named packages
# 2. Add your token to /config/secrets.yaml (keep the word Bearer):
#      ruuf_solar_token: "Bearer ruuf_sk_..."
# 3. Restart Home Assistant. Sensors start with "RUUF".
# 4. Settings > Dashboards > Energy: solar production -> "RUUF Solar production";
#    grid consumption -> "RUUF Grid import"; return to grid -> "RUUF Grid export".
#    With a battery: energy going in -> "RUUF Battery charge", out -> "RUUF Battery discharge".
#
# Data comes from your inverter through RUUF's servers every 5 minutes, about 2 minutes late.
# Energy sensors are lifetime counters (kWh); power sensors are the average of the last 5 minutes.
# If you have more than one plant, use https://solar-api.ruuf.cl/v1/plants/<station>/now
# (station codes are listed at /v1/me).

rest:
  - resource: https://solar-api.ruuf.cl/v1/now
    scan_interval: 300
    timeout: 30
    headers:
      Authorization: !secret ruuf_solar_token
    sensor:
      - name: "RUUF Solar production"
        unique_id: ruuf_solar_solar_production
        icon: mdi:solar-power
        value_template: "{{ value_json.energy_kwh.solar_production }}"
        availability: "{{ value_json.energy_kwh.solar_production is number }}"
        unit_of_measurement: kWh
        device_class: energy
        state_class: total_increasing
      - name: "RUUF Grid import"
        unique_id: ruuf_solar_grid_import
        icon: mdi:transmission-tower-import
        value_template: "{{ value_json.energy_kwh.grid_import }}"
        availability: "{{ value_json.energy_kwh.grid_import is number }}"
        unit_of_measurement: kWh
        device_class: energy
        state_class: total_increasing
      - name: "RUUF Grid export"
        unique_id: ruuf_solar_grid_export
        icon: mdi:transmission-tower-export
        value_template: "{{ value_json.energy_kwh.grid_export }}"
        availability: "{{ value_json.energy_kwh.grid_export is number }}"
        unit_of_measurement: kWh
        device_class: energy
        state_class: total_increasing
      - name: "RUUF Home consumption"
        unique_id: ruuf_solar_home_consumption
        icon: mdi:home-lightning-bolt
        value_template: "{{ value_json.energy_kwh.home_consumption }}"
        availability: "{{ value_json.energy_kwh.home_consumption is number }}"
        unit_of_measurement: kWh
        device_class: energy
        state_class: total_increasing
      - name: "RUUF Solar power"
        unique_id: ruuf_solar_power_solar
        value_template: "{{ value_json.power_w.solar }}"
        availability: "{{ value_json.power_w.solar is number }}"
        unit_of_measurement: W
        device_class: power
        state_class: measurement
      - name: "RUUF Home power"
        unique_id: ruuf_solar_power_home
        value_template: "{{ value_json.power_w.home }}"
        availability: "{{ value_json.power_w.home is number }}"
        unit_of_measurement: W
        device_class: power
        state_class: measurement
      - name: "RUUF Grid power (import +, export -)"
        unique_id: ruuf_solar_power_grid
        value_template: "{{ value_json.power_w.grid }}"
        availability: "{{ value_json.power_w.grid is number }}"
        unit_of_measurement: W
        device_class: power
        state_class: measurement
      - name: "RUUF Data updated"
        unique_id: ruuf_solar_collected_at
        value_template: "{{ value_json.collected_at }}"
        device_class: timestamp
    binary_sensor:
      - name: "RUUF Data stale"
        unique_id: ruuf_solar_stale
        value_template: "{{ value_json.stale }}"
        device_class: problem

# Battery (only if your system has one): uncomment and paste these under `sensor:` above.
#      - name: "RUUF Battery charge"
#        unique_id: ruuf_solar_battery_charge
#        icon: mdi:battery-arrow-up
#        value_template: "{{ value_json.energy_kwh.battery_charge }}"
#        availability: "{{ value_json.energy_kwh.battery_charge is number }}"
#        unit_of_measurement: kWh
#        device_class: energy
#        state_class: total_increasing
#      - name: "RUUF Battery discharge"
#        unique_id: ruuf_solar_battery_discharge
#        icon: mdi:battery-arrow-down
#        value_template: "{{ value_json.energy_kwh.battery_discharge }}"
#        availability: "{{ value_json.energy_kwh.battery_discharge is number }}"
#        unit_of_measurement: kWh
#        device_class: energy
#        state_class: total_increasing
#      - name: "RUUF Battery power (charge +, discharge -)"
#        unique_id: ruuf_solar_power_battery
#        value_template: "{{ value_json.power_w.battery }}"
#        availability: "{{ value_json.power_w.battery is number }}"
#        unit_of_measurement: W
#        device_class: power
#        state_class: measurement
#      - name: "RUUF Battery level"
#        unique_id: ruuf_solar_battery_soc
#        value_template: "{{ value_json.battery_soc }}"
#        availability: "{{ value_json.battery_soc is number }}"
#        unit_of_measurement: "%"
#        device_class: battery
#        state_class: measurement
