fsaris / home-assistant-zonneplan-one

Unofficial Zonneplan integration for Home Assistant
https://github.com/fsaris/home-assistant-zonneplan-one
MIT License
104 stars 17 forks source link

Connect call failed #113

Open tieskuh opened 4 months ago

tieskuh commented 4 months ago

Alle sensoren van de integratie worden soms unavailable. In het logboek is de volgende error te vinden:

Error requesting zonneplan_one data: Cannot connect to host app-api.zonneplan.nl:443 ssl:default [Connect call failed ('52.18.96.60', 443)]

Lijkt dus een connectiefout te zijn. Wellicht iets bij Zonneplan. De sensors blijven echter unavailable tot ik de integratie herlaad (of ik ben niet geduldig genoeg).

Is er iets in te bouwen dat de integratie zichzelf herstelt na een connectiefout? Ik hoor het graag als ik iets meer aan kan leveren.

Paul1865 commented 4 months ago

Heb ik ook idd. Het is ook om de zoveel minuten wel data, geen data, wel data etc.

tieskuh commented 4 months ago

Inderdaad. Als je langer wacht herstelt de integratie zichzelf wel. Mogelijk is dit dan een non-issue. Het probleem zit duidelijk bij Zonneplan. De retry interval zou echter iets korter kunnen wellicht.

rootadmin1 commented 4 months ago

Dit probleem heb ik inderdaad ook al langer. Zou top zijn als dit gefixed kan worden.

tieskuh commented 4 months ago

Vanochtend is de gasprijs unavailable. Ik gok dat tijdens het updaten (gebeurt op een vast tijdstip toch?) de connectie met Zonneplan niet luktte. Deze sensor blijft echter unavailable totdat ik de integratie herlaad. Wellicht ook daarvoor een retry inbouwen?

image

mvzut commented 4 months ago

Bij mij hetzelfde probleem. Ik heb een melding ingesteld wanneer de stroomprijs negatief c.q. weer positief wordt, en die ging vannacht zo ongeveer elk uur af (blijkbaar triggert de voorwaarde "wordt hoger dan 0" ook als hij uit "unavailable" komt). Het is echt iets van de laatste dag(en) dus.

fsaris commented 4 months ago

Er zit een retry in maar pas bij de volgende interval (willen Zonneplan ook niet overbelasten want anders gaan ze ons verder limiteren). Als goed is wordt pas bij de 2de mislukte poging de sensor op unavailable gezet, kunnen jullie dit terug zien in de logs?

tieskuh commented 4 months ago

Er zit een retry in maar pas bij de volgende interval (willen Zonneplan ook niet overbelasten want anders gaan ze ons verder limiteren). Als goed is wordt pas bij de 2de mislukte poging de sensor op unavailable gezet, kunnen jullie dit terug zien in de logs?

Ik zal er even op letten of dat zo is. Het leek al te gebeuren bij de eerste mislukte poging. Kom ik op terug. Maar de retry lijkt verder inderdaad prima te werken. Behalve voor de gasprijssensor. Ik geloof dat je die maar 1x per dag bijwerkt toch? Het lijkt erop dat als op dat moment de connectie niet lukt, hiervoor geen retry is. Klopt dat? Hij bleef bij mij unavailable totdat ik de integratie herstartte.

tieskuh commented 4 months ago

Toevallig gaan de sensoren precies nu op unavailable. Ik zie de connection error maar één keer in het logboek staan. Ze lijken dus al direct op unavailable te gaan bij een mislukte poging. Als dat pas bij de tweede of derde poging zou gebeuren zou dit inderdaad beter zijn.

Het probleem is dan mijns inziens tweeledig:

Paul1865 commented 4 months ago

Er zit een retry in maar pas bij de volgende interval (willen Zonneplan ook niet overbelasten want anders gaan ze ons verder limiteren). Als goed is wordt pas bij de 2de mislukte poging de sensor op unavailable gezet, kunnen jullie dit terug zien in de logs?

Waarom eigenlijk zoveel intervallen? Je hebt in de forecast al alle prijzen voor de hele dag, dus je kunt adh daarvan dan de actuele stroomprijs bepalen. 1x per uur zou meer dan genoeg zijn denk ik. Op zich doe ik dat nu ook al omdat de current_electricity_tariff te vaak op unavailable staat :) .

(via automation): variables: current_hour: "{{ utcnow().strftime('%Y-%m-%dT%H:00:00.000000Z') }}" new_price: > {% for entry in state_attr('sensor.zonneplan_current_electricity_tariff_last_valid', 'forecast') %} {% if entry.datetime == current_hour %} {{ entry.electricity_price / 10000000 }} {% endif %} {% endfor %}

die sensor.zonneplan_current_electricity_tariff_last_valid wordt alleen gevuld als sensor.zonneplan_current_electricity_tariff bechikbaar is en de forecast is gevuld. En met die last_valid doe ik dan weer alles.
mvzut commented 4 months ago

Waarom zo vaak? Ik denk omdat ook het actuele verbruik etc. gelogd wordt. Zelf gebruik ik dat niet, ik heb een kabeltje naar de P1 poort van m'n meter. Maar anderen gebruiken deze info wellicht.

Bij het voor de eerst keer instellen van de Zonneplan integratie zou het op zich geen gek idee zijn om al die real-time verbruiksdata te kunnen disablen. Je kunt er op die manier voor kiezen om alleen entities voor de energieprijzen te laten maken, en die hoeven inderdaad lang niet zo vaak geüpdatet te worden.

Overigens, als het je echt alleen om de stroomprijzen gaat kan je ook overwegen om de Nordpool plugin te gebruiken, met een formule (percentage) voor de extra kosten die Zonneplan rekent. Helaas geeft Nordpool geen gasprijzen, anders had ik de Zonneplan plugin er waarschijnlijk al lang af gegooid.