Gå til innhold
  • Bli medlem
Støtt hjemmeautomasjon! 🥇🥈🥉

Anbefalte innlegg

Skrevet

Borettslaget har byttet til disse. Ingen styring via nettside, kun app. Ikke mulighet for styring etter strømpris, men det er forsåvidt ikke noe problem å lage selv i HA. Utfordringen er å få satt opp start/stopp av lader når bilen ikke har denne funksjonen. Tidligere hadde vi Charge365 og der brukte jeg et CSS-script fra bash/debian for å starte lading. Noen smarte knoller som har tenkt på dette? 

  • 8 måneder senere...
Skrevet (endret)

Har tukla litt med dette dei siste dagane, og fått til å sette opp authentication flow, og trigge Zaptec-laderen gjennom Elaway sitt API frå lokalt testmiljø.

 

Brukte https://mitmproxy.org/ for å snappe ut endepunkt og header/body (inkludert client_secret) frå iPhone-appen.

 

Neste steg blir å forsøke å bygge ein custom integration for home assistant, men usikker på om eg har kompetanse eller kapasitet til å bygge noko brukbart.

Det ser forresten ut som om Elaway brukar Ampeco under panseret, som har ein whitelabel-divisjon.

 

APIet (med unntak av autentisering) ser ut til å vere godt dokumentert her

https://developers.ampeco.com/reference/

Endret av Jorgen
  • Like 1
Skrevet
Jorgen skrev (2 timer siden):

Det viste seg å vere vanskeleg å jobbe mot APIet til Elaway frå Home Assistant grunna oauth2 autentisering. Har laga eit enkelt gateway-API som kan køyre i docker, som kan handtere start/stopp.

 

https://github.com/jvik/elaway-gateway-api

  

curl https://no.eu-elaway.charge.ampeco.tech/api/v1/app/session/start \
--data "evseId=SECRET" \
--header "Authorization: Bearer REDACTED BEARER TOKEN">

 

Det er også mulig å kjøre en enkelt curl-kommando fra bash, men bearer token varer bare en måned dessverre.. 

 

Skrevet
14 hours ago, strutings said:

  

curl https://no.eu-elaway.charge.ampeco.tech/api/v1/app/session/start \
--data "evseId=SECRET" \
--header "Authorization: Bearer REDACTED BEARER TOKEN">

 

Det er også mulig å kjøre en enkelt curl-kommando fra bash, men bearer token varer bare en måned dessverre.. 

 

Ja, APIet eg har laga henter ut bearer tokens også, så lenge du har client secret på plass. Denne ser ut til å vere statisk. Eg har ikkje hatt hell med å bruke refresh token for å generere ny bearer token enno, så for no går den gjennom heile oauth-prosessen på nytt ved behov.

Skrevet
Feil ved handtering: TimeoutError: Waiting for selector `input[name="username"]` failed: Waiting failed: 30000ms exceeded

 

Får bare denne feilmeldingen. Kjører riktignok i docker run og ikke compoze, men det skal vel ikke ha noe å si

Skrevet (endret)
6 hours ago, strutings said:
Feil ved handtering: TimeoutError: Waiting for selector `input[name="username"]` failed: Waiting failed: 30000ms exceeded

 

Får bare denne feilmeldingen. Kjører riktignok i docker run og ikke compoze, men det skal vel ikke ha noe å si

 

Denne feilen får du fordi puppeteer aldri klarer å laste inn oauth-sida der den skal fylle inn brukarnamn og passord, sannsynlegvis fordi puppeteer får feil URL i auth.ts.

 

Skal få lagt på litt bedre validering på environment variables og bedre logging ved feil, men long story short trur eg du sender inn feil CLIENT_ID. Min er i alle fall på 32 teikn, men usikker på om den er lik for alle, eller om den er unikt generert. Fint om du kan gi meg litt info om korleis din ser ut.

 

 

Edit: Har forresten pusha ny versjon med betre logging og validering. Køyr docker pull for å hente siste versjon. Skal få på plass versjonering etterkvart.

Endret av Jorgen
  • 2 uker senere...
Skrevet
Jorgen skrev (På 22.12.2024 den 22.13):

 

Denne feilen får du fordi puppeteer aldri klarer å laste inn oauth-sida der den skal fylle inn brukarnamn og passord, sannsynlegvis fordi puppeteer får feil URL i auth.ts.

 

Skal få lagt på litt bedre validering på environment variables og bedre logging ved feil, men long story short trur eg du sender inn feil CLIENT_ID. Min er i alle fall på 32 teikn, men usikker på om den er lik for alle, eller om den er unikt generert. Fint om du kan gi meg litt info om korleis din ser ut.

 

 

Edit: Har forresten pusha ny versjon med betre logging og validering. Køyr docker pull for å hente siste versjon. Skal få på plass versjonering etterkvart.

 

No valid bearer token found. Starting OAuth flow.
Waiting for authorization code from redirect.
Found authorization code.
Exchanging authorization code for access token and ID token.
Requesting Elaway token with access token and ID token.
Successfully obtained Elaway token.
New bearer token saved
Server is running on http://localhost:5001
 

 

Dette kommer opp i den nyeste versjonen, men får ikke kontakt med localhost hverken via 172.17.0.1 (docker). Hva kan det være som gjør dette? Har aldri hatt problemer med dette tidligere. 

 

Skrevet
21 hours ago, strutings said:

 

No valid bearer token found. Starting OAuth flow.
Waiting for authorization code from redirect.
Found authorization code.
Exchanging authorization code for access token and ID token.
Requesting Elaway token with access token and ID token.
Successfully obtained Elaway token.
New bearer token saved
Server is running on http://localhost:5001
 

 

Dette kommer opp i den nyeste versjonen, men får ikke kontakt med localhost hverken via 172.17.0.1 (docker). Hva kan det være som gjør dette? Har aldri hatt problemer med dette tidligere. 

 


Dette er nok eit trivielt problem å løyse. Du må nok berre eksponere riktig port. Kan du poste kommandoen du bruker for å starte containeren? Utan secrets sjølvsagt.

Skrevet
Jorgen skrev (På 2.1.2025 den 12.38):


Dette er nok eit trivielt problem å løyse. Du må nok berre eksponere riktig port. Kan du poste kommandoen du bruker for å starte containeren? Utan secrets sjølvsagt.

 

Noe rart med forwarding fra docker ser det ut til ja. Når jeg kjører denne kommandoen, så svarer den på htttp, men kun med dette:

 

Cannot GET /

 

docker run --name=elaway -e ELAWAY_USER='[email protected]' -e ELAWAY_PASSWORD='XXXXXXXXX' -e ELAWAY_CLIENT_ID='1' -e ELAWAY_CLIENT_SECRET='SECRET' -e CLIENT_ID='SECRET' -e PORT=4000 -p 4000:4000 jvik/elaway-gateway-api:latest
 

Skrevet (endret)

Då høyres det faktisk ut som du har fått det til, men routeren heiter “charger”. Du må altså bruke GET mot localhost:4000/charger og eventuelt /charger/start eller /charger/stop. Merk at på dei to siste er det POST. Burde kanskje vore PATCH. 

 

Du kan sjå endepunkta i denne fila

 

https://github.com/jvik/elaway-gateway-api/blob/4a9066f13612faaac6fc0c7e192b124fe0cf46d1/src/charger/chargerRouter.ts

Endret av Jorgen
Skrevet
Jorgen skrev (22 timer siden):

Då høyres det faktisk ut som du har fått det til, men routeren heiter “charger”. Du må altså bruke GET mot localhost:4000/charger og eventuelt /charger/start eller /charger/stop. Merk at på dei to siste er det POST. Burde kanskje vore PATCH. 

 

Du kan sjå endepunkta i denne fila

 

https://github.com/jvik/elaway-gateway-api/blob/4a9066f13612faaac6fc0c7e192b124fe0cf46d1/src/charger/chargerRouter.ts

 

Fikk snubla det sammen etter mye om og men.. 🙂 Har også laget et python script som bruker MQTT for å lage to buttons for hhv. start og stop. Henter også ut timespris. Fikk ikke lest ut pris for hver session, men mulig den må stå og lade en stund først. Kanskje du får til å bruke dette direkte i docker? 

 

https://github.com/strutings/elaway-gateway-api/blob/master/elaway_charger.py

 

Skrevet
On 06/01/2025 at 19:18, strutings said:

 

Fikk snubla det sammen etter mye om og men.. 🙂 Har også laget et python script som bruker MQTT for å lage to buttons for hhv. start og stop. Henter også ut timespris. Fikk ikke lest ut pris for hver session, men mulig den må stå og lade en stund først. Kanskje du får til å bruke dette direkte i docker? 

 

https://github.com/strutings/elaway-gateway-api/blob/master/elaway_charger.py

 

 

Trur at eg i latskapen satte opp endepunktet /stop til å kun returnere 200 OK, utan data. Dette skal vere trivielt å fikse, men er på ferie utan laptop, så får ikkje sett på det før om eit par veker. Kan gi eit pling her når det er ordna.

Skrevet
Jorgen skrev (20 timer siden):

 

Trur at eg i latskapen satte opp endepunktet /stop til å kun returnere 200 OK, utan data. Dette skal vere trivielt å fikse, men er på ferie utan laptop, så får ikkje sett på det før om eit par veker. Kan gi eit pling her når det er ordna.

 

Endepunktet charger oppdateres med current session, så har hentet ut verdier derfra ved aktiv lading. Når lading ikke er aktiv pusher den verdi 0 på all session-data.

Oppdaterte fila med en del nye sensorer for session charging, datestamp og tariff. Laget en PR på din github, som du kan se på når du er tilbake fra ferie 🙂 

  • Thanks 1

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.