skainz92 / wienernetze-smartmeter-php

PHP Class for reading energy-consumption from Wiener Netze Smart meters.
MIT License
4 stars 1 forks source link

$end wird bei getConsumption nicht berücksichtigt? #5

Closed berndy2001 closed 1 year ago

berndy2001 commented 1 year ago

$end in getConsumption($meterpoint, $start, $end) wird nicht berücksichtigt, es werden immer 24 Stunden ausgegeben.

Beispiel: $yesterday = date('Y-m-d',strtotime("-1 days")); $consumption = $sm->getConsumption($me->registration->zaehlpunkt, $yesterday." 10:00:00", $yesterday." 15:59:59");

Möglicherweise wurde die Api geändert: https://api.wstw.at/gateway/WN_SMART_METER_PORTAL_API_B2C/1.0/messdaten/xxx/ATxxx/verbrauch?dateFrom=2023-09-15T22%3A00%3A00.000Z&period=DAY&accumulate=false&offset=0&dayViewResolution=QUARTER-HOUR

Danke!

skainz92 commented 1 year ago

Hallo,

vielen Dank fürs Einmelden!

Ich habe es selbst grade getestet - und es scheint wirklich so zu sein dass der Parameter "dateTo" nicht mehr greift. Auch auf deren Homepage sehe ich in den Abfragen von "messdaten/zaehlpunkt/".$meterpoint."/verbrauch" keinen dateTo Parameter mehr. Bei anderen Abfragen wird auch manchmal der Parameter "dateUntil" verwendet - jedoch funktioniert der hier auch nicht.

Ich würde hier noch einige Tests machen wollen, aber das Einzige das mir als eine nachhaltige Lösung erscheint - wäre die Resultate von der API selbst nochmal zu überprüfen und nur die in der angegebenen Zeit mit getConsumption zurückzuliefern.

skainz92 commented 1 year ago

Es greift übrigens auch "dateFrom" nicht mehr. Es wird zwar von "dateFrom" gestartet, es werden die werte vor "dateFrom" aber scheinbar hinten angehängt.

Bsp.

dateFrom = ... 03:00:00 dateTo = ... 05:00:00

Resultat: Item1 - 03:00:00 Item2 - 03:15:00 ... ItemX - 23:45:00 ItemX+1 - 03:15:00 ItemX+2 - 03:30:00 ...

berndy2001 commented 1 year ago

vielen Dank fürs Einmelden!

vielen dank für das skript und den Support!

Es greift übrigens auch "dateFrom" nicht mehr. Es wird zwar von "dateFrom" gestartet, es werden die werte vor "dateFrom" aber scheinbar hinten angehängt.

das kann ich nicht nachvollziehen. from 2023-09-11 10:00:00 to 2023-09-11 12:00:00 ergibt genau 24 Stunden (über den Tageswechsel):

2023-09-11T10:00:00.000Z 2023-09-11T10:15:00.000Z 2023-09-11T10:30:00.000Z 2023-09-11T10:45:00.000Z 2023-09-11T11:00:00.000Z ... 2023-09-11T23:30:00.000Z 2023-09-11T23:45:00.000Z 2023-09-12T00:00:00.000Z 2023-09-12T00:15:00.000Z 2023-09-12T00:30:00.000Z ... 2023-09-12T09:15:00.000Z 2023-09-12T09:30:00.000Z 2023-09-12T09:45:00.000Z

skainz92 commented 1 year ago

ahh, seh schon - die Einträge sind am nächsten Tag - stimmt. dateFrom greift also.

Gut, ich hab mal deren Support geschrieben - erwarte hier aber nichts brauchbares zurück. Unterm Strich ist wahrscheinlich die Werte in der Klasse zu filtern, und nur die gewünschten zurückzuliefern der beste Ansatz.

Werde das so bald wie möglich updaten.

vielen Dank!

berndy2001 commented 1 year ago

Problem ist aber dann auch, dass bei einer Abfrage von mehr als 24 Stunden (zB 2 Tage) die Daten dann nur die ersten 24 Stunden enthalten.

Es gäbe auch die B2B-Api unter https://api.wstw.at/gateway/WN_SMART_METER_PORTAL_API_B2B/1.0/zaehlpunkte/messwerte?zaehlpunkt=AT001000000000000000xxx&datumVon=2023-09-18&datumBis=2023-09-20&wertetyp=QUARTER_HOUR welche volle Tage liefert. Vorteil wäre auch, dass man sich die Zeitzonenkonvertierung ersparen könnte.

Featurerequest: https://api.wstw.at/gateway/WN_SMART_METER_PORTAL_API_B2C/1.0/ als API-URL aufnehmen und getMeasurements($meterpoint, $start, $end, $type) bereitstellen. type ist 'QUARTER_HOUR', 'DAY' oder 'METER_READ'

Ich könnte mir vorstellen hier einen pull-request zu liefern, aber meine php-kenntnisse sind angestaubt, daher bin ich nicht sicher ob das gewünscht ist.

skainz92 commented 1 year ago

Ja, auf das Problem bin ich auch schon gestoßen ... Es ist eigentlich recht ungut das Ganze ... Ich habe auch bereits etwas gefunden - /verbrauchRaw - hier könnte man es auch tagweise auslesen ...

Freue mich natürlich über jede contribution - bei mir sind es jedoch die git-kenntnisse die angestaubt sind ( oder noch nie wirklich vorhanden waren ) Also gerne, muss nur wissen was für mich dabei zu tun ist :D

berndy2001 commented 1 year ago

Ich habe auch bereits etwas gefunden - /verbrauchRaw - hier könnte man es auch tagweise auslesen ...

da bekomme ich dann aber nur Tageswerte raus...

Freue mich natürlich über jede contribution

7

Also gerne, muss nur wissen was für mich dabei zu tun ist

testen ob ich keinen Mist gebaut habe 😉 und dann stashen+mergen (mit stash werden meine beiden commits in einen zusammengefasst)

skainz92 commented 1 year ago

Ok, ich glaub ich habs geschafft.

Erst Mal - vielen Dank! Meine Tests waren durchwegs positiv!

Ich lasse das Ticket mal offen, weil ich die getConsumption auch noch anpassen muss. So dass zumindest bei abfragen < 24h die richtigen Resultate kommen.

vielen Dank nochmal!

skainz92 commented 1 year ago

erl.