TropiskNektar Skrevet 29. januar 2023 Skrevet 29. januar 2023 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? Siter
Moskus Skrevet 3. februar 2023 Skrevet 3. februar 2023 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: Siter
Anbefalte innlegg
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.