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

terjemath

Medlemmer
  • Innlegg

    4
  • Ble med

  • Besøkte siden sist

Innlegg skrevet av terjemath

  1. Chrulf skrev (2 timer siden):

     

    Topp! Mulig å slenge på en JQ her et sted så sensoren ikke blir så stor? Enten med stasjons IDer eller et visst område den skal hente fra? Er ikke så stødig på dette så usikker på hvor jeg skulle ha plassert JQen.

    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.

    • Like 1
  2. 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: 
            - brand

     

    Denne 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.

  3. ## 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: 
            - verdi

    kristianml 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)

     

    • Like 2
×
×
  • 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.