bem… algumas voltas depois, desisti de usar o rest: e passei a usar o sensor platform: rest. É parvo, mas funciona…
No exemplo abaixo, a primeira posição ([0]) do posto 66099 é o Gasóleo Simples, e a terceira ([2]) é a gasolina sem chumbo 95.
Inserindo na secção sensor a configuração abaixo, devolve o preço nesse posto:
sensor:
- platform: rest
resource: https://precoscombustiveis.dgeg.gov.pt/api/PrecoComb/GetDadosPostoMapa?id=66099&f=json
name: "fuel_posto_66099_bp_montijo_gasoleo_simples"
scan_interval: 3600
value_template: '{{ float(value_json.resultado.Combustiveis[0].Preco | regex_replace(find=" €/litro", replace="", ignorecase=True) | regex_replace(find=",", replace=".", ignorecase=True),default) }}'
unit_of_measurement: '€'
- platform: rest
resource: https://precoscombustiveis.dgeg.gov.pt/api/PrecoComb/GetDadosPostoMapa?id=66099&f=json
name: "fuel_posto_66099_bp_montijo_gasolina_95"
scan_interval: 3600
value_template: '{{ float(value_json.resultado.Combustiveis[2].Preco | regex_replace(find=" €/litro", replace="", ignorecase=True) | regex_replace(find=",", replace=".", ignorecase=True),default) }}'
unit_of_measurement: '€'
Não esquecer de no Server Controlo selecionar “REST entities and notify services” para recarregar os valores.
O que é feito no value_template:
- float: Converte o resultado do value_json num décimal
- | regex_replace: substitui o texto " €/litro" e “,”
Depois de costumizar o icon (mdi:fuel) e o nome das entidades fica com alguma apresentação.
