Gå til innhold
  • Bli medlem
Støtt hjemmeautomasjon.no!

Anbefalte innlegg

Skrevet

Jeg har satt meg ut på en ferd hvor målet er å få et par Device i Homeseer for å:

A) Se om Zaptec lader elbilen

B) Kunne stoppe og starte laderen fra HomeSeer

 

Utgangspunktet mitt er at jeg kan null om VB scripting, jeg kan svært lite powershell, jeg forstår ikke REST/JSON/API og har vanskeligheter for å lære meg ting.

 

That said, i powershell vet jeg i det minste hvordan jeg setter en variabel, så steg 1 i mesterplanen min er å prøve å lese av Zaptec API'et derfra.

 

Etter mye googling har jeg klart å sy sammen denne koden:

$TokenParams = @{
    "URI"     = "https://api.zaptec.com/oauth/token"
    "Body"    = "grant_type=password&username=*****.***@gmail.com&password=*******"
    "Method"  = 'POST'
    "Headers" = @{
        "Content-Type" = 'application/x-www-form-urlencoded'
    }
}
$response = Invoke-RestMethod @TokenParams

Den returnerer:

access_token                                                                                                                                               
------------
eyJhbGciOiJSUzI1NiIsImtpZCI6IjlGRjBCQzc2MTZBOUIzR****************zEiLCJ4NXQiOiJuX0M4ZGhhcHMtX0hqY3pyVF9yTmR6VUFKM0UiLCJ0eXAiOiJ*************hMTc0OTEzNi02OTczLTQwO***********2Ny00ND*********YmYiLCJuYW1lIjo...

 

So far so good.

 

Deretter stopper suksessen min.

 

$TokenParams = @{
    "URI"     = "https://api.zaptec.com/oauth/token"
    "Body"    = "grant_type=password&username=*****.***@gmail.com&password=********"
    "Method"  = 'POST'
    "Headers" = @{
        "Content-Type" = 'application/x-www-form-urlencoded'
    }
}
$response = Invoke-RestMethod @TokenParams
$token = $response.access_token

$headers = @{
    Authorization=Bearer $token
}

$Url = "https://api.zaptec.com/api/chargehistory"

$responseData = (Invoke-WebRequest -Uri $Url -Method Get -Headers $headers -UseBasicParsing -ContentType "application/json").Content

Invoke-WebRequest : The remote server returned an error: (401) Unauthorized.

 

Jeg har prøvd diverse metoder for å manipulere $token. Konvertere den til json, deretter både med og uten "" fnutter som kommer foran og bak.

Jeg har prøvd å bruke $response som den blir returnert fra token delen, formatere, vri, vende, og så mye forskjellig at jeg ikke lenger har noen anelse om hva jeg har prøvd og ikke prøvd.

Resultatet er stort sett det samme, men veksler mellom powershellfeilmeldinger eller (401) Unauthorized.

Virker som at jeg sliter med akkurat det samme karen her slet med: https://forum.fibaro.com/topic/58026-zaptec-api/

 

Det som er interessant er at om jeg bruker https://api.zaptec.com/help/index.html og kjører en test derfra, så får jeg opp hvilken token den bruker for å kjøre en GET.

curl -X GET "https://api.zaptec.com/api/chargers" -H  "accept: text/plain" -H  "Authorization: Bearer ***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************"

Hvis jeg tar en kopi av token etter "Bearer", og erstatter $token med den samme Zaptec API'er bruker - så fungerer det fra Powershell også.

$headers = @{
    Authorization=Bearer $token
}

 

Noen som har noen anelse om hva jeg gjør feil?

Skrevet

For å slippe å styre med om det er scriptet eller noe annet som er feil, så vil jeg anbefale Postman på det varmeste.

Når du får det til å fungere der, kan du generere ferdig kode for diverse språk, også Powershell:

 

image.png

Bli med i samtalen

Du kan publisere innhold nå og registrere deg senere. Hvis du har en konto, logg inn nå for å poste med kontoen din.

Gjest
Skriv svar til emnet...

×   Du har limt inn tekst med formatering.   Lim inn uten formatering i stedet

  Du kan kun bruke opp til 75 smilefjes.

×   Lenken din har blitt bygget inn på siden automatisk.   Vis som en ordinær lenke i stedet

×   Tidligere tekst har blitt gjenopprettet.   Tøm tekstverktøy

×   Du kan ikke lime inn bilder direkte. Last opp eller legg inn bilder fra URL.

×
×
  • Opprett ny...

Viktig informasjon

Vi har plassert informasjonskapsler/cookies på din enhet for å gjøre denne siden bedre. Du kan justere dine innstillinger for informasjonskapsler, ellers vil vi anta at dette er ok for deg.