Czujnik odległości - jak zmienić wartość odczytu?

Cześć
Zainstalowałem sobie ultradźwiękowy czujnik odległości do pomiaru ilości ekogroszku w zasobniku.
W HA wygląda to tak:

mqtt:
  sensor:
    - name: "Groszek"
      state_topic: "home/OpenMQTTGatewayRFIR/DISTtoMQTT/sr04"
      value_template: '{{value_json.distance}}'
      state_class: 'measurement'
      unit_of_measurement: 'cm'
      device_class: 'distance'
      qos: '0'
      force_update: 'True'

Otrzymuję poprawne odczyty (w cm) ale zależy mi na czymś innym:
<20cm - 100%
70cm i więcej - 0% (lub inna podana wartość w cm)
Czy jest to wykonalne? Jak?
Wskazania procentowe będą później wykorzystywał w automatyzacjach.

Template?

Jestem przekonany, że rozwiązanie znajdziesz szukając po tagu, którym obdzieliłem ten wątek.

Znalazłem cos takiego i u mnie wg tego działa
# tank height: 200cm
# height from full to sensor: 22cm (essentially sensors minimum distance)
# full tank: 180cm
# current reading: x
# ergo: used = (x - 22)
# ergo: remaining = (180 - used)
# ergo: percent = (remaining / 100) * 100

filters:
  - lambda: return (1-((x-.22)/1.8))*100;
  - filter_out: nan

Dziękuję szopenowi i Krzysztofowi za naprowadzenie mnie na dobry kierunek
Dla chcących wykonać coś podobnego podaję sprawdzony kod:

    - sensor:    
      - name: "Ilosc groszku"
        unit_of_measurement: '%'
        state: >
          {% set odczyt = states('sensor.groszek') | float %}
          {% set minodczytsensora = 19 | float %}
          {% set maxglebokosc = 50 - minodczytsensora | float %}
          {{ (((maxglebokosc - (odczyt - minodczytsensora)) / maxglebokosc) *100) | round(1, default=0) }} 

Zastosowany czujnik to HC-SR 04T (wodoodporny) gdzie minimalny odczyt to w moim przypadku 19cm i on określa pełny zasobnik.
50 to odległość od czujnika do dna zbiornika.
Pozdrawiam

ciekawe rozwiązanie, ja to obliczałem inaczej