Zonneplan ONE custom component

Vraag: hoe werkt de zonneplan_p1_electricity_consumption_today_cost sensor?

Als ik het goed heb, toont deze sensor de kosten in euro’s qua stroomkosten van vandaag. Houdt hij ook rekening met de teruglevering zoals in de app gebeurt? De sensor lijkt overeen te komen met de gemelde Stroomkosten in de Zonneplan app, alleen wordt deze waarde in de app meer bijgewerkt. Bovengenoemde sensor wordt (vermoed ik) eens per uur bijgewerkt, maar misschien ook minder.

Probleem met deze sensor is dat de waarde naar 0,0 euro springt zodra ik HA een keer herstart. De waarde voor de herstart is dan voor de rest van de dag lager, dan wat het daadwerkelijk zou moeten zijn.

Is er een mogelijkheid om de waarde van de sensor een herstart te laten overleven?

Mvg,
Alexander

de trigger is de verandering van sensor sensor.zonneplan_current_electricity_tariff en dat is elk uur. Maar goed punt dat bij herstart de waarde nul is.

Je kunt deze aanpassing proberen:

trigger:
  - platform: state
    entity_id: sensor.zonneplan_current_electricity_tariff
    initial_state: true  # Voeg deze regel toe om de trigger initieel te activeren bij het herstarten

Hey Pelikano,

Dankjewel voor je hulp.

Het is me nog niet helemaal duidelijk waar ik deze configuratie moet plaatsen. Als ik hem 1-op-1 overneem en in configuration.yaml plaatst, dan geeft HA een fout bij de configuratie controle.

Hoort dit thuis in een automatisering?

Yes indeed

Sorry, ik had het erbij moeten vermelden. Er is een sensor code die eerst in de configuration.yml gezet moet worden zodat de sensororen tijd en prijs beschikbaar komen als entiteiten. Daarna kun je met de automation code gebruik maken van deze sensoren/entiteiten. Het makkelijkst kun je een nieuwe automatisering toevoegen en dan de code in de yaml editor plakken. Als je dan terug schakelt naar de visuele editor staan de dingen er weer herkenbaar in en kun je je eigen entiteiten aanpassen.

Ik maak gebruik van studio code server voor het aanpassen van de configuration.yml
hopelijk kom je zo een stap verder.

Wat voor switch is dit precies? Is dit gewoon een boolean helper die je aan/uit zet?

Hello, I just run into this component with a couple search’s looking to get the Self Consumed meter to work in home assistant energy.

I get these logs when I try and enter my email address for Login -

Logger: custom_components.zonneplan_one.zonneplan_api.api Source: custom_components/zonneplan_one/zonneplan_api/api.py:57
integration: zonneplan_one ([documentation](https://github.com/fsaris/home-assistant-zonneplan-one), issues)
First occurred: 10:15:07 AM (4 occurrences) Last logged: 11:24:10 AM

</>Timeout calling ZonneplanAPI to request login email

Is there a place I need to create an account and API?

deze regel zal je in configuration.yaml moeten zetten dan zal moeten werken

  - platform: template
    sensors:
      zonneplan_cheapest_hours:
        friendly_name: zonneplan cheapest hours
        unique_id: zonneplan_cheapest_hours
        value_template: >
          {% set cheapest_hour_next_ten_hours = state_attr('sensor.zonneplan_current_electricity_tariff', 'forecast')
                    | selectattr('datetime', '>', utcnow().isoformat())
                    | selectattr('datetime', '<', (utcnow() + timedelta(hours = 40)).isoformat())
                    | sort(attribute='electricity_price')
                    | first %}
          {{ (cheapest_hour_next_ten_hours.electricity_price /10000000)| float }}

Als ik het goed heb is “cheapest_hour_next_ten_hours.electricity_price” een var geheugen dat elke naam geven die je zelf wil.

ik gebruik integraties Variables+History https://github.com/enkama/hass-variables bij Hacs met deze regels bij automatiseringen word elke keer om middennacht het goedkoopste uur van de 24 uur opgeslagen of bij een restart van home assistant.

alias: Dag Opslaan Goedkoopste Uur
description: Opslaan van het goedkoopste uur stroom prijs
trigger:
  - platform: time
    at: "23:59:00"
  - platform: homeassistant
    event: start
condition: []
action:
  - service: variable.update_sensor
    data:
      replace_attributes: false
      value: "{{ states('sensor.zonneplan_cheapest_hours_24_2')  }}"
    target:
      entity_id: sensor.var_goedkoopste_uur
mode: singletype or paste code here

misschien heeft iemand er wat aan ?
succes

You need to install this integration;

This looks very nice.

Related question. What logic did you use to alter the colors (red/grey/green).

Reason why I’m asking is that I’m trying to mimic the state in the ZP app for other sensors too. And this seems to mimic the behavior closely (right?)

I am going to add to your mess, by adding the relevant zonneplan components :slight_smile: Double checked on my end with the zonneplan app numbers and spot on :sunglasses:

I am only not getting the colors on my end yet. I managed to get the colors working with the card-mod frontend hacs :slight_smile:

Screenshot 2024-05-24 133402

Here’s the code:

type: custom:stack-in-card
cards:
  - type: horizontal-stack
    cards:
      - square: false
        type: grid
        cards:
          - type: custom:mushroom-title-card
            title: Stroomkosten
            subtitle: vandaag
          - type: custom:mushroom-title-card
            title: >
              € {{
              ((states.sensor.zonneplan_electricity_delivery_costs_today.state |
              float) -
              (states.sensor.zonneplan_electricity_production_costs_today.state
              | float)) | round(2) }}
            card_mod:
              style: |
                .title {
                  text-align: right;
                  font-size: 50px!important;
                  }
        columns: 2
        style: |
          ha-card {
            border: none;
          }
  - type: horizontal-stack
    cards:
      - square: false
        type: grid
        cards:
          - type: custom:mushroom-title-card
            title: VERBRUIK
            subtitle: >-
              {{ states('sensor.zonneplan_electricity_consumption_today') }} kWh
              x {{
              (((states.sensor.zonneplan_electricity_delivery_costs_today.state
              | float) /
              (states.sensor.zonneplan_electricity_consumption_today.state |
              float)) * 100) | round(2) }} ct
            card_mod:
              style: |
                .title {
                  font-size: 12px!important;
                  color: rgba(255, 255, 255,0.5)!important;
                  font-weight: 300!important;
                  }
          - type: custom:mushroom-title-card
            title: TERUGLEVERING
            subtitle: >
              {{ states ('sensor.zonneplan_electricity_returned_today') }} kWh
              x  {{ (((
              states.sensor.zonneplan_electricity_production_costs_today.state |
              float) / (states.sensor.zonneplan_electricity_returned_today.state
              | float)) * 100) | round(2)}} ct
            card_mod:
              style: |
                .title {
                  font-size: 12px!important;
                  color: rgba(255, 255, 255,0.5)!important;
                  text-align: right;
                  font-weight: 300!important;
                  }
                .subtitle { 
                  text-align: right!important;
                  color: rgba(255, 255, 255,0.5)!important;
                  }
        columns: 2
        style: |
          ha-card {
            border: none;
          }
card_mod:
  style: |
    ha-card {
      background-color: #00A964;
      --primary-text-color: #FFFFFF;
      --secondary-text-color: #FFFFFF;
      border-radius: 20px;
      padding: 5px 5px;
        }
1 Like

Looking very good! Thanks for sharing.

I wonder how the total Costs are calculated as the tarief for each hour is different? Now it seems it takes only 1 tarif multiplied by total kwh.

For me Zonneplan Current electricity tariff updates a couple of minutes past the hour, and the delay seems to increase the longer HA is running. Anyone else experiencing this? Is there a way to trigger an update at the hour mark?
Alternatively I could create a template sensor, which used now() and pulls the correct rate from the forecast.

1 Like

I got the same issue. The price is updated after 4 minutes…

The integration only polls every 5min for new/updated data. This can indeed walk a little out of sync but that’s more or less intended to prevent that everyone calls the Zonneplan API on the same moment and there servers get to much requests at the same time (see API not working? Blocked by Zonneplan · fsaris/home-assistant-zonneplan-one · Discussion #89 · GitHub)

2 Likes

Thanks. Understandable. Maybe the tariff can be updated using the cached data from the forecast at the full hour? In that way, no extra API call is required.

A quick 'n dirty template sensor to do it outside of the integration could be something like this:

template:
  - sensor:
      - name: Zonneplan Current Hour Electricity Tariff
        unique_id: zonneplan_current_hour_electricity_tariff
        device_class: monetary
        unit_of_measurement: €/kWh
        attributes: 
          metadata: >
            {{ (state_attr('sensor.zonneplan_current_electricity_tariff', 'forecast')
                | selectattr('datetime', '==', utcnow().replace(minute=0, second=0).strftime('%Y-%m-%dT%H:%M:%S.000000Z') )
                | first )
            }}
        state: > 
          {{ (state_attr('sensor.zonneplan_current_electricity_tariff', 'forecast')
            | selectattr('datetime', '==', utcnow().replace(minute=0, second=0).strftime('%Y-%m-%dT%H:%M:%S.000000Z') )
            | first ).electricity_price | float / 10000000
          }}

Hi, I can’t get this code working. Most values are empty.
I don’t know what to change.

hi @BasPost
you can debug by start checking the sensor results;

If sensors are working cut&paste the template in the template editor;

I hope this will help you to find your issue.