Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

API-Abfrage per VBA
#1
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
Antworten Top
#2
Hallöchen,

Die Frage wurde auch dort gestellt ...
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#3
Stimmt, das war ich . Leider wurde oder konnte mir da nicht geholfen werden.
Da muss man  als "Neuer" alles gleich bringen und verstehen.
Antworten Top
#4
... 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
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#5
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.
Antworten Top
#6
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.
Antworten Top
#7
Danke für die Bemühungen. Hab "Alles" durch probiert. Ohne Erfolg.
Die URL wird immer als Fehler gemeldet. Ich werde mal weiter probieren.
Antworten Top
#8
Ich würde es mal bei powerfox direkt probieren Zumindest Anfragen per Mail kannst du an die senden.
Antworten Top
#9
Mach ich.
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste