Jump to content
  • Sign Up
Støtt hjemmeautomasjon.no!

Drivstoffpriser i HA


Recommended Posts

NeoID skrev (På 14.2.2024 den 19.23):
command_line:
  - sensor:
      name: Gas Prices
      command: >
        app_id="com.raskebiler.drivstoff.appen.android";
        api_brands="https://api.drivstoffappen.no/api/v1/brands";
        api_sessions="https://api.drivstoffappen.no/api/v1/authorization-sessions";
        api_stations="https://api.drivstoffappen.no/api/v1/stations?stationTypeId=1&includeDeleted=true&includePending=true&minUpdatedAt={{ (now() - timedelta(days=2)).strftime('%Y-%m-%dT%H:%M:%S%z') | urlencode }}";
        
        auth_token=$(curl -s $api_sessions | jq -r ".token");
        api_key=$(python -c "import hashlib; auth_token = \"$auth_token\"; shifted_auth_token = bytearray(auth_token, 'utf-8')[1:] + bytearray(auth_token, 'utf-8')[:1]; print(hashlib.md5(shifted_auth_token).hexdigest())");
        stations=$(curl -s -H "X-API-KEY: $api_key" -H "X-CLIENT-ID: $app_id" $api_stations);
        brands=$(curl -s -H "X-API-KEY: $api_key" -H "X-CLIENT-ID: $app_id" $api_brands);
        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") }"
      json_attributes:
        - stations
      value_template: 'OK'
      scan_interval: 1800

 

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.

Link to comment
Share on other sites

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
Link to comment
Share on other sites

Sensor template for å lage egne sensorer for gitte stasjoner, kun navn, station_id og type_id som må tlpasses.
Selvfølgelig må station_id være med i spørringen til sensor.fuel_prices_command.

 

   circle_k_robsrud:
      friendly_name: "Circle K Robsrud 95 Oktan"
      icon_template: "mdi:gas-station"
      value_template: >
        {% set fuel_prices = state_attr('sensor.fuel_prices_command','verdi') %}
        {% set fuel_station_id = 716 %}
        {% set fuel_type_id = 1 %}
        {% set fuel_station = fuel_prices|selectattr('id','==', fuel_station_id)|list|first %}
        {% if fuel_station %}
         {% set price = fuel_station.prices|selectattr('fuelTypeId','==', fuel_type_id)|map(attribute='price')|list|first %}
         {{ price }}
        {% endif %}

 

Link to comment
Share on other sites

terjemath skrev (På 16.2.2024 den 15.15):

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)) ]') }"

 

Nydelig! Takk 🙂

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.