API nutzung mit C#

Ich habe mir ein Programm in C# geschrieben, was meinen Stromzähler an der Photovoltaik Anlage ausliest und anzeigt. So weiß ich immer, was gerade an Strom erzeugt wird.
Nun würde ich auch gerne meinen aktuellen Verbrauch mit anzeigen. Alle Versuche, die API via C# anzusprechen, scheitern.
TokenValue und TokenSecret bekomme ich noch, aber der nächste Aufruf „request_token“ endet in einem 401.
Kennt jemand ein Beispiel für C# ?

Ich kenne leider keine c# Beispiele, schlage aber auch hier die Verwendung von Basic Authentication vor, um etwas die Komplexität zu reduzieren.

Tja, nichts anderes mache ich bzw. möchte ich machen. Aber wenn schon die Beispiele auf Discovergy API Documentation nicht funktionieren, nun ja. Dann wirds schwierig.
Auf dieser Seite unter OAuth1 gehe ich auf „POST /oauth1/consumer_token Authoriazion step 1“
TRY it out, gebe einen Client Namen ein und dann Execute.
Als Ergebnis erhalte ich:

{
  "key": "mykey",
  "secret": "ein Secret",
  "owner": "mein Clientname",
  "attributes": {},
  "principal": null
}

Das sieht ja gut aus, so weit komme ich mit meinem Programm auch.
Also weiter zu
POST /oauth1/request_token Authorisation step 2
Hier auch wieder "Try it out". Parameter sind ja keine Notwendig, also Execute
Hmmm, ich bekomme einen Response Header, aber keinen Respone Body.
Wozu dann dieser Schritt ?

Schauen wir uns nun GET /oauth1/authorize Authorisation step 3 an.
Da wird ein Parameter "oauth_token" aus Step 2 verlangt. Tja, nur hat Step 2 nichts zurück gegeben. Woher kommt also dieser Parameter ?

HTML ist nicht gerade meine bevorzugte Sprache

Daher meine Empfehlung nicht mit Oauth1 zu arbeiten, sondern mit Basic Authentication!

Dann Verstehe ich da was nicht.
Ich melde mich doch einmal an, um das Consumer Token zu bekommen. Das klappt ja auch.
Danach „muss“ ich mich aber doch via OAuth1 legitimieren, so wie ich das verstanden haben.
Wie genau soll dieses „Basic Authentication“ den aussehen ?

Basic Authentication ist etwas anderes als OAuth1. Sprich, da gibt es keine Tokens, sondern man gibt die Login-Informationen bei jedem Request mit und greift direkt auf die Endpunkte zu. Im Browser ist dies ein Popup, welches erscheint. Bei den meisten Clients kann man die Credentials direkt in die URL kodieren in der Form:

https://benutzername:passwort@api.discovergy.com/public/v1/meters

Codiert man die Credentials direkt in die URL, so muss man natürlich aufpassen, dass diese entsprechend den erlaubten Zeichen in einer URL kodiert werden (Sonderzeichen, Leerzeichen - und das „@“ im Benutzernamen).

Vielen lieben Dank, die Abfrage im Browser klappt damit schon mal. Dann sollte ich das auch nach C# übertragen bekommen.

Kurze Rückmeldung. Nach ein wenig probieren habe ich es nun auch endlich unter C# am laufen. Die Möglichkeiten, mit den so gewonnenen Daten, sind enorm. Damit seinen Verbrauch oder die Einspeisung auch über Wochen und Monate hinweg rückwirkend sichtbar machen zu können, ist schon klasse.
Nochmals vielen Dank für die Hilfe.

1 „Gefällt mir“

Wo findest Du den Verbrauch? Ich finde nur Bezug und Einspeisung, und wenn die Einspeisung zurückgeht, weiß ich nicht, ob sich ein Verbraucher eingeschaltet hat oder eine Wolke vor die Sonne gezogen ist.

Den reinen Verbrauch OHNE Einspeisung bekommst Du nicht. Das ist ja, soweit ich das erkannt habe, das Prinzip, warum die PV mit dem Stromzähler funktioniert, also dein Netzbezug um den Wert kleiner wird, den die PV liefert.
Das Smartmeter misst ja nur, was auf jeder einzelnen Phase los ist.

Mein Ansatzpunkt ist folgender.
Ich habe an der PV eine Smarte Steckdose von AVM. An der sehe ich, was die PV aktuell liefert.
Setzte ich das in Relation, was aktuell auf den 3 Phasen los ist, sollte ich den realen Verbrauch haben.
Oder anders. Meine PV läuft bei mir auf Phase 2, die natürlich bei Sonneneinstrahlung meist NEGATIV ist. Ziehe ich also den Wert von der AVM Smart Steckdose von dem Wert der Phase 2 ab, sollte wieder was positives raus kommen und das muß das sein, was ich aktuell auf Phase 2 an Strom verbrauche.

Mal in Zahlen.
Gemessen auf Phase 2: -600
Gemessen an der AVM Steckdose: 700

Heißt, die PV liefert 700 Watt und 100 Watt verbrauche ich aktuell mit irgendwelchen Geräten.
Dazu Phase 1 und Phase 3 addiert und Du hast deinen gesamtverbrauch.