-
Innlegg
4 -
Ble med
-
Besøkte siden sist
Innholdstype
Profiler
Forum
Blogger
Nedlastninger
Artikler
Regler
Hendelser
Galleri
Store
Innlegg skrevet av terjemath
-
-
Chrulf skrev (15 timer siden):
Konge! Takk 🙂
Det stemmer. For å fullføre koden til terjemath så legger du "command_line:" helt i starten av koden.
Ja, om du ikke har opprettet en folder command_line.yaml i HA. Om du legger koden i cofiguration.yaml så må nok "command_line:" legges til.
Filteret | jq -c '[ .[] | select( .id | contains(33, 34, 35, 62, 67, 89, 105, 126, 1083, 4456, 5887)) ]' må endres til hver enkelt sine preferanser da dette er mine lokale stasjoner. Du får opp alle stasjoner dersom filteret droppes i koden.
Da api-et er noe forandret så kommer ikke "brandID" opp som "merkenavn" (Shell, Esso Uno-X osv.) i klartekst, men kun et ID nr. Har derfor laget et eget api-kall for å få opp dette. Gir egentlig bare en "link" mellom "brandID" og merkenavn samt link til "pictureUrl"
- sensor:
name: fuel_brands_command
scan_interval: 604800
command: >
petrolDataTokenResponse=$(curl -s "https://api.drivstoffappen.no/api/v1/authorization-sessions") &&
petrolDataToken=$(echo "$petrolDataTokenResponse" | jq -r '.token') &&
tokenBytes=$(echo -n "$petrolDataToken" | xxd -p -c 256) &&
first=$(echo -n "$tokenBytes" | head -c 2) &&
rest=$(echo -n "$tokenBytes" | tail -c +3) &&
tokenBytesShifted="${rest}${first}" &&
tokenShifted=$(echo -n "$tokenBytesShifted" | xxd -r -p) &&
md5Hash=$(echo -n "$tokenShifted" | md5sum -b | awk '{print $1}') &&
md5Hash=$(echo "$md5Hash" | tr '[:upper:]' '[:lower:]') &&
X_API_KEY="$md5Hash" &&
X_CLIENT_ID="com.raskebiler.drivstoff.appen.ios" &&
petrolData=$(echo "$petrolDataResponse" | jq -c '.') &&
echo "{\"brand\":" $(
curl -s -H "X-API-KEY: $X_API_KEY" -H "X-CLIENT-ID: $X_CLIENT_ID" "https://api.drivstoffappen.no/api/v1/brands"
| jq -c '[ .[] | select( .id | contains(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)) ]'
) "}"
value_template: >
{{ value_json.brand | length }}
json_attributes:
- brandDenne dataen er relativt ganske statisk så ingen grunn til å trigge denne ofte. Derfor scan intervall på 604800 (i gang i uka).
Har også her filtrert på de 10 første "barndID". Mulig dette filteret må endres for å plukke ut de som faktisk er aktuelle.
-
## Drivstoffpris ##
- sensor:
name: fuel_prices_command
scan_interval: 3600
command: >
petrolDataTokenResponse=$(curl -s "https://api.drivstoffappen.no/api/v1/authorization-sessions") &&
petrolDataToken=$(echo "$petrolDataTokenResponse" | jq -r '.token') &&
tokenBytes=$(echo -n "$petrolDataToken" | xxd -p -c 256) &&
first=$(echo -n "$tokenBytes" | head -c 2) &&
rest=$(echo -n "$tokenBytes" | tail -c +3) &&
tokenBytesShifted="${rest}${first}" &&
tokenShifted=$(echo -n "$tokenBytesShifted" | xxd -r -p) &&
md5Hash=$(echo -n "$tokenShifted" | md5sum -b | awk '{print $1}') &&
md5Hash=$(echo "$md5Hash" | tr '[:upper:]' '[:lower:]') &&
X_API_KEY="$md5Hash" &&
X_CLIENT_ID="com.raskebiler.drivstoff.appen.ios" &&
petrolData=$(echo "$petrolDataResponse" | jq -c '.') &&
echo "{\"verdi\":" $(
curl -s -H "X-API-KEY: $X_API_KEY" -H "X-CLIENT-ID: $X_CLIENT_ID" "https://api.drivstoffappen.no/api/v1/stations?stationTypeId=1"
| jq -c '[ .[] | select( .id | contains(33, 34, 35, 62, 67, 89, 105, 126, 1083, 4456, 5887)) ]'
) "}"
value_template: >
{{ value_json.verdi | length }}
json_attributes:
- verdikristianml skrev (På 6.2.2024 den 14.20):#konventer til Byte-array (Det viser seg kun at første siffer flyttes til siste posisjon. Kunne trolig vært løst med strengmanipulasjon fremfor å konvertere til byte-array) $tokenBytes = [System.Text.Encoding]::UTF8.GetBytes($petrolDataToken) #splitt ut første element i array, for en shift left $first, $rest = $tokenBytes #shift left $tokenBytes = $rest + $first #konventer til String. $tokenShifted = [System.Text.Encoding]::UTF8.GetString($tokenBytes)
- 2
-
Fungerer det fremdeles å hente ut data fra drivstoffappen? Jeg får bare
"You are not authorized."
Drivstoffpriser i HA
i Home Assistant
Skrevet
Siste commando før "json_attributes:" kan da f.eks være med en jq filtrering:
merged=$(jq -s '[.[0][] as $stations | .[1][] as $brands | select($stations.brandId == $brands.id) | $stations | .brand = $brands]' <(echo "$stations") <(echo "$brands"));
echo "{\"stations\": $(echo "$merged" | jq -c '[ .[] | select( .id | contains(33, 34, 35, 62, 67, 89, 105, 126, 1083, 4456, 5887)) ]') }"
Der du legger inn dine stasjons ID'er i stedet for mine selvfølgelig.