Clever-Excel-Forum

Normale Version: API-Abfrage per VBA
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo,
hab ein Problem mit einer API-Abfrage per VBA.
Ich möchte aus meinem Stromzähler über das Zählermodul von "Powerfox" die kWh auslesen.
Das Zählermodul ist über API auslesbar. Das Problem ist, das vom Modul Username und Passwort
verlangt werden.
Gebe ich die URL

https://bsche@t-online.de:ehb21bxxxx@bac...t?unit=kwh

direkt in den Browser ein kommt als Ergebnis:

{"outdated":false,"watt":264,"timestamp":1709996595,"a_Plus":6689.116,"a_Minus":400.307}

Bei Nutzung VBA
Code:
Sub js_json_api_powerfox()

    Dim req As MSXML2.ServerXMLHTTP60
    Dim apiURL, ret As String
   
    Set req = New MSXML2.ServerXMLHTTP60
   
    ' Example API: Powerfox
    apiURL = "https://bsche@t-online.de:ehb21bxxx@backend.powerfox.energy/api/2/my/main/current?unit=wh"
   
    ' Verbindung herstellen
    req.Open "", apiURL, False
    req.send
   
    ' Status in Zelle A1 ausgeben
    Range("a9").Value = req.Status & " - " & req.statusText
   
    ' JSON unformatiert in A2 ausgeben
    ret = req.responseText
    Range("a10").Value = ret
   
    ' JSON parsen
    Dim jsonObject As Object
    Set jsonObject = JsonConverter.ParseJson(ret)
   
    ' Variable Temp ausgeben (in Watt)
    Range("a11").Value = Round(jsonObject("main")("a_Plus"))
   
End Sub

kommt aber der Fehler:  Laufzeitfehler -2147012891 (80072ee5)
Systemfehler:  -2147012891

Hab gelesen das es an den "@" Zeichen liegen könnte???
Kann mir da jemand weiterhelfen?
Danke
Hallöchen,

Die Frage wurde auch dort gestellt ...
Stimmt, das war ich . Leider wurde oder konnte mir da nicht geholfen werden.
Da muss man  als "Neuer" alles gleich bringen und verstehen.
... die Abfragen gehen auf unterschiedliche Server mit unterschiedlicher Software usw. Entsprechend wird das ausschlaggebend sein, dass eine Abfrage funktioniert und die andere nicht. Ein Browseraufruf ist nicht unbedingt zu 100% identisch mit einer Codeabfrage. Aber ansonsten, beides sind lt. API-Beschreibung http-requests, das MSXML2.ServerXMLHTTP60 usw. sollte also zumindestens passen.

Anregungen gibt es auch dort:
github (ist ein anderer als Deiner)
it-und-hausautomation-blog.de/energie-dashboard
stackoverflow-how-can-i-send-an-http-post-request-to-a-server-from-excel-using-vba

Ich bin allerdings nur "Fernwärmenutzer". Aber eventuell findet sich hier ein Nutzer mit entsprechenden Erfahrungen.

Hier noch ein Tipp bei Fragestellungen in mehreren Foren:
Crossposting
Danke für deine Antwort. Hab mir das angeschaut. Das ist ja für  "Home Assistant" zugeschnitten.
Keine Ahnung wie ich das für mich nutzen könnte. Wie " YAML" funktioniert ????.
Du hast auch Recht, dass das zwei verschieden Server sind. Der eine ist mein Wechselrichter. Von dem bekommt man eine Token-ID zum 
einloggen. Das klappt. Für den anderen braucht man eben E-Mail und Passwort. da meckert VBA. 
Der akzeptiert die URL nicht.
Und danke für den Tipp wegen Crossposting. Werd ich mich dran halten.
Man kann (und muss) die Zeichen außerhalb des 64er Zeichensatzes "maskieren". Wenn man z.B. ein Leerzeichen darstellen möchte, nimmt man %20. Das @ dürfte %40 lauten.
Danke für die Bemühungen. Hab "Alles" durch probiert. Ohne Erfolg.
Die URL wird immer als Fehler gemeldet. Ich werde mal weiter probieren.
Ich würde es mal bei powerfox direkt probieren Zumindest Anfragen per Mail kannst du an die senden.
Mach ich.