Closed schulti closed 4 months ago
Hallo,
habs grade getestet - bei mir liefert die getMeterPoints mehrere Zählpunkte. Ich habe eigentlich nur einen Messpunkt, aber scheinbar werden auch kürzlich gekündigte Messpunkte noch aufgelistet.
Könntest du kurz den relevanten Code posten? Ich habe das ungute Gefühl dass WN schon wieder etwas geändert hat.
Hallo,
danke für deine rasche Antwort.
Ich habe gerade das Repo in ein neues Verzeichnis gecloned, um auszuschließen, dass irgendwo was Altes im Verzeichnis bei mir herumliegt.
Dann hab' ich einfach deine index.php genommen, Username & Passwort ausgefüllt und gestartet.
Es erscheint dann nur 1 Messpunkt beim - obwohl im Account 3 hinterlegt sind. Das gleiche habe ich auch bei einem anderen Account, bei dem 2 Zählpunkte/Standorte hinterlegt sind.
(die Zahlen / Accountnummern / Zählpunkt habe ich durch 1234... ersetzt)
scripts-test20231230/wienernetze-smartmeter-php$ php index.php
PHP Warning: Undefined property: stdClass::$error in /opt/smartmeter_wien/scripts-test20231230/wienernetze-smartmeter-php/smartmeter-vienna.class.php on line 120
stdClass Object
(
[id] => 12345
[salutation] => Herr
[lastname] => Schultheis
[firstname] => Stefan
[email] => meine@email.at
[defaultGeschaeftspartnerRegistration] => stdClass Object
(
[id] => 12345
[registrationKey] => 123456788900
[zaehlpunkt] => AT0010000000000000001000001234567
[status] => CONFIRMED
[geschaeftspartner] => 1234567890
[completedAt] => 2023-02-13T16:31:20.639Z
)
[isZpsDonee] =>
[registration] => stdClass Object
(
[zaehlpunkt] => AT0010000000000000001000001234567
)
)
[...]
PHP Version:
$ php --version
PHP 8.1.2-1ubuntu2.14 (cli) (built: Aug 18 2023 11:41:11) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.1.2, Copyright (c) Zend Technologies
with Zend OPcache v8.1.2-1ubuntu2.14, Copyright (c), by Zend Technologies
Das Ganze läuft bei mir in einer VM unter
$ cat /etc/issue
Ubuntu 22.04.3 LTS
Danke!
Hallo,
in der default index.php fehlt aber die getMeterPoints(). Die getProfile liefert auch bei mir nur einen Zählpunkt.
Könntest du das mal ausführen?
$meterpoints = $sm->getMeterPoints(); print_r($meterpoints);
Hier müssten doch alle Zählpunkte angezeigt werden oder?
lg
Hi,
das ist aber spannend.
Ich habe drei Accounts zur Verfügung: s, k und m. Bei allen sind jeweils 3 aktive Zählpunkte hinterlegt und auch über https://smartmeter-web.wienernetze.at einsehbar. Im Webportal habe ich für jeden Account einen Zählpunkt jeweils als Favorit mit (*) markiert.
Das Ergebnis ist je Account immer das gleiche (reproduzierbar), auch wenn ich in beliebiger Reihenfolge die Accounts abfrage.
Danke, LG!
Das ist wirklich komisch.
Also auf der Seite: https://smartmeter-web.wienernetze.at/#/anlagedaten sind die Zählpunkte sichtbar?
Ich hätte auf obiger Seite etwas interessantes gefunden:
Es wird einmal "zaehlpunkte" aufgerufen und einmal "getHiddenZaehlpunkte". Bei mir ist getHiddenZaehlpunkte zwar leer, ich könnte mir aber vorstellen dass es nicht bei jedem so ist.
Könntest du vielleicht mal schauen ob der getHiddenZaehlpunkte bei dir auch leer ist?
Also, einfach auf der Seite https://smartmeter-web.wienernetze.at/#/anlagedaten rechte Maustaste -> Inspizieren/Inspect Dann in der Sidebar auf Netzwerk/Network klicken und dann die Seite nochmal neu laden. Dann müssten ganz viele Einträge in der Liste sein. getHiddenZaehlpunkte müsste eher weiter unten in der Liste sein. Dann einfach auf den unteren ( es müssten zwei sein ) "getHiddenZaehlpunkte" klicken, und rechts davon dann auf Vorschau/Preview.
Bei mir zeigt er dann [], also ein leeres JSON an.
Hallo,
ich glaube, jetzt weiß ich, was es ist! Es hat nichts mit den hidden-Zählpunkten zu tun, sondern damit, ob mehrere Kundenobjekte mit Zählpunkten darunter im JSON enthalten sind.
https://service.wienernetze.at/sm/api/user/getHiddenZaehlpunkte
gibt bei mir auch nur []
zurück.
In meinem User s wird mir nur der erste Zählpunkt gezeigt:
In meinem User k wurden mir die ersten beiden gezeigt:
Das Object selbst scheint also ein Array zu sein, das wir durchkraxeln müssen, weil dahinter unter anderen Kundennummern noch weitere Zählpunkte versteckt sind...
Sorry, das json ... ist das das Resultat von getMeterPoints? Ich kann das grade nicht richtig zuordnen. Oder meinst du dass getMeterPoints etwas zurückliefert das nicht alles beinhaltet?
Weil getMeterPoints retourniert $result = $result[0]->zaehlpunkte; Vielleicht ohne das ->zaehlpunkte?
lg
Hallo!
Das JSON war aus dem Firefox (Inspect) kopiert, der Ouput vom Webinterface der Wiener Netze.
Ich glaube, das Problem ist, dass getMeterPoints() wirklich nur den ersten (0) Eintrag aus dem $results-Array ausliest:
$result = $result[0]->zaehlpunkte;
Wenn aber im Account mehrere Kundennummern hinterlegt sind, dann holt er nur die SmartMeter zur ersten Kundennummer.
Ich hab' grad folgendes in der smartmeter-vienna.class.php geändert und dann liefert er mir die fehlenden Zählpunkte:
$result = $result[1]->zaehlpunkte;
und
$result = $result[2]->zaehlpunkte;
Man müsste also das $result für alle Werte durchgehen.
Ich glaube, dass man das auch beim getConsumptionByDay() irgendwo beachten muss, weil ich da keine Daten von Zählpunkten krieg, außer von der ersten Kundennummer im Account (wie oben)...
Danke!
Wenn jetzt mehrere Kunden im Ergebnis sind, gebe ich das gesamte resultat zurück, sonst wie gehabt die zaehlpunkte vom ersten. Zwecks Rückwärtskomp.
Könntest du nochmal neu runterladen und testen?
Weils vielleicht ein wenig umständlich ist alle kunden und zaehlpunkte durchzugehen: Neue Funktion getMeterPointIds - liefert wirklich nur die Zählpunktnummern.
Servus & alles Gute im neuen Jahr!
Beide Funktionen liefern nun alle Zählpunkte zurück! die getMeterPoints() in einem Array mit der vollständigen Struktur, inkl. aller Kundennummern. Die getMeterPointIds() liefert ein Array mit eine Lister der vollständigen Zählpunkte!
Ich hab's noch nicht endgültig probiert/verstanden, weil die Zeit grad nicht reicht, aber ich habe das Gefühl, dass für die anderen Funktionen weiterhin nur der erste Zählpunkt abfragbar ist. bzw. angezeigt wird. Liegt das daran, dass über ->defaultGeschaeftspartnerRegistration->
dort nur das Objekt vom "ersten Kunden" betrachtet wird? Betrifft aus meiner Sicht:
Vielen Dank!
Hallo,
vielen Dank! Ebenso!
hab mir die getProfile & getMeasurements angesehen:
1) getProfile() lieftert generell nur den zählpunkt vom defaultgeschaeftspartner, verwendet wird der nirgends. 2) geMeasurements() - stimmt, da war noch $profile drinnen.
Hab das jetzt geändert. getMeasurements nimmt jetzt statt $profile - $meterpoint & $customerid.
Damit müsste es jetzt funktionieren.
lg
Hallo, danke für die rasche Umsetzung von dir, wie immer - ich wollte mich nur schnell melden; ich komme im Moment wg. Arbeit + Famile nicht zum Testen, erst vmtl. Mitte der Woche. Wollte nur ein kurzes Lebenszeichen hinterlassen. LG
kein Stress :)
danke!
Hallo,
ich komme leider nicht zum Ziel... Liegt aber vmtl. an meinen Programmierkenntnissen.
$me->defaultGeschaeftspartnerRegistration->geschaeftspartner
, aber ich weiß nicht, wie ich von einer zweiten Kundennummer die Zählpunkte abfragen kann.public function getMeasurements($meterpoint, $customerid, $start, $end, $type)
defaultGeschaeftspartnerRegistration
nehme. Mit registration
komme ich nicht weiter, wenn ich versuche den String/Integer direkt einzugeben, geht's auch nicht.Fazit:
Danke!
Hallo,
Werden die Zählpunkte ( also auch die von der zweiten Kundennummer ) mit getMeterPoints() oder getMeterPointIds() zurückgeliefert? Sieht man die Zählpunkte der zweiten Kundennummer im Web-gui von WE?
$type kann eines von diesen sein: //Type: QUARTER_HOUR, DAY, METER_READ
Der return von getMeasurements ist wahrscheinlich deshalb leer. Ich würds mal mit QUARTER_HOUR versuchen - obwohl das aktiviert sein muss. ( Viertelstunden-intervall )
Hallo,
sorry für die lange Wartezeit.
Für mich funktioniert es nun für meine Anwendung (per Script die Zähler auslesen mit getConsumptionByDay()
).
Allerdings muss ich meinen $zaehlpunkt und die $customerid hardcoded angeben, die müssen ja zusammenpassen. Das automatische Ermitteln über getProfile() funktioniert nicht. (Ist für mich aber nicht wichtig, ich starte das Script einfach für jeden Zählpunkt separat und gebe im Cronjob den Zählpunkt und die entsprechende Kundennummer als Argument dazu, no problem).
Dennoch liefert getMeterPointIds()
alle Zählpunkte (hinter allen Kundennummern) in meinem Account zurück.
Danke für die Arbeit!
Wenn ich noch was testen soll, lass' es mich bitte wissen!
LG!
ok, vielen Dank!
Ich hätte leider nirgends ( ausser im getProfile ) gesehen dass man zu allen Kundennummern + deren Zählpunkten kommt. Leider nur im Format von getMeterPointIds(), ohne die dazugehörige customerid.
Gut, lassen wirs mal so, muss in naher Zukunft sowieso nochmal die GUI von denen ansehen und eventuell die Aufrufe aktualisieren. Vielleicht finde ich da was.
vielen Dank! :)))
Hallo,
ich habe seit den letzten Anpassungen (weiterhin) nur die Möglichkeit einen Zählpunkt auszulesen.
Auch getMeterPoints() liefert bei mir ein Array mit nur einem Wert zurück. Ich habe 3 Zählpunkte an meinem Account und kann nur den ersten abfragen...
Ich hab' jetzt ein bißerl probiert, weil ihr ja geschrieben habt, dass es (wieder) geht, aber nun mach' ich doch ein Issue auf weil ich nicht weiterkomme...
Vielen Dank!