Jak zapamiętać dwie kolejne wartości encji?

Zainspirowany kompasem z Integracja Burze_dzis_net, odczytująca ilość wyładowań w pobliżu - Node-RED - ArturHome
próbuję zrobić prawie to samo, ale korzystając z integracji.
Do określenia informacji czy burza się zbliża czy oddala potrzebuję zapamiętać dwie wartości encji: aktualną i poprzednią. Niestety nie mam pomysłu jak to ugryźć.
Odczytuję atrybut:

      unit_of_measurement: km
      state: >
        {{ state_attr('binary_sensor.burze_dzis_net_wyladowania_w_poblizu', 'distance') | float(100) }}
      attributes:
        last_value: "{{ states('sensor.burza_odleglosc') }}"

ale nie mam pojęcia jak i gdzie zapisać poprzednią wartość bo last_value przyjmie wartość state encji ?
Potem chciałem to wstawić do szablonu:

   #   unit_of_measurement: km
      state: >
        {% set distance = states('sensor.burza_odleglosc') | int %}
        {% set last_distance = states('sensor.burza_odleglosc', 'last_value') | int %}
        {% set dist = last_distance-distance  %}
        {% if (dist < 0 ) %}
             -1
        {% elif (dist > 0 ) %}
             1
        {% else  %}
             0   
        {% endif %}   

Ktoś podpowie jak to ogarnąć ? W NR myślę, że wiem jak, ale nie chcę tam tworzyć encji.

Może to pomoże mi pokazuje odległość w km

type: conditional
conditions:
  - entity: binary_sensor.burze_dzis_net_wyladowania_w_poblizu
    state: 'on'
card:
  type: entity-filter
  entities:
    - entity: binary_sensor.burze_dzis_net_wyladowania_w_poblizu
      type: attribute
      attribute: distance
      secondary_info: true
      style:
        hui-generic-entity-row:
          $: |
            .text-content {
              font-size: 10px;
            }
            .text-content.pointer:not(.info)::before {
              content: "Odległość:";
              color: black;
            }
            .info .secondary {
              color: black;
            }
            .info .secondary::before {
              content: "Kierunek: ";
              color: black;
              font-size: 10px;
            }
            .info .secondary::after {
              content: "{{state_attr(config.entity,'direction')}}";
              color: black;
              font-size: 10px;
            }
        card_mod: null
        style: |
          :host {
            --paper-item-icon-color: #00afff;
          }
    - entity: binary_sensor.burze_dzis_net_ostrzezenie_aktywne_traba
      type: attribute
      attribute: description
      secondary_info: true
      style:
        hui-generic-entity-row:
          $: |
            .text-content {
              font-size: 10px;
            }
            .info .secondary {
              color: black;
            }
            .info .secondary::before {
              content: "Poziom: ";
              color: black;
              font-size: 10px;
            }
            .info .secondary::after {
              content: "{{state_attr(config.entity,'level')}}";
              color: black;
              font-size: 10px;
            }
        style: |
          :host {
            --paper-item-icon-color: black;
          }
  state_filter:
    - 'on'
  card:
    type: entities
    title: null
    card_mod:
      style: |
        ha-card {
          background: #32323200;
          box-shadow: none;
        }

W przytoczonym wątku kolega @RobinI30 w NR liczył czy burza się zbliża czy oddala (odległość maleje lub rośnie) i na tej podstawie wyświetlał strzałkę do wewnątrz lub na zewnątrz.
Będę kombinował z dodaniem atrybutu czasu i zapamiętywaniem dwóch wartości encji, a tymczasem liczę gradient odległości: jak jest ujemny to burza się zbliża, jak dodatni to oddala:

    sensors:
      burza_trend:
        entity_id: sensor.burza_odleglosc
        sample_duration: 1800
        max_samples: 5

Może coś takiego w NR:

[
    {
        "id": "process_storm_data",
        "type": "function",
        "z": "75a368fecd04c615",
        "name": "Przetwórz dane o burzy",
        "func": "const data = msg.payload.return;\nconst record = {\n    liczba: data.liczba.$value,\n    odleglosc: parseFloat(data.odleglosc.$value),\n    kierunek: data.kierunek.$value,\n    okres: data.okres.$value,\n    timestamp: Date.now()\n};\n\n// Pobierz poprzednie dane z kontekstu\nlet stormData = context.get('stormData') || [];\n\n// Dodaj nowe dane\nstormData.push(record);\n\n// Zachowaj tylko ostatnie 6 zapisów (ostatnia godzina)\nif (stormData.length > 6) {\n    stormData.shift();\n}\n\n// Zapisz dane w kontekście\ncontext.set('stormData', stormData);\n\nmsg.payload = stormData;\nreturn msg;",
        "outputs": 1,
        "timeout": "",
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 850,
        "y": 80,
        "wires": [
            [
                "af74adccd16db17b",
                "4f329dff26e49519"
            ]
        ]
    },
    {
        "id": "af74adccd16db17b",
        "type": "function",
        "z": "75a368fecd04c615",
        "name": "Analizuj dane o burzy",
        "func": "let stormData = msg.payload;\nif (stormData.length < 2) {\n    msg.payload = {status: 'Zbyt mało danych do analizy'};\n    return msg;\n}\n\nlet latest = stormData[stormData.length - 1];\nlet previous = stormData[stormData.length - 2];\n\nlet trend = {\n    liczba: latest.liczba - previous.liczba,\n    odleglosc: latest.odleglosc - previous.odleglosc,\n    kierunek: latest.kierunek,\n    okres: latest.okres\n};\n\nlet status = '';\n\nif (trend.liczba > 0) {\n    status += 'Więcej wyładowań. ';\n} else if (trend.liczba < 0) {\n    status += 'Mniej wyładowań. ';\n} else {\n    status += 'Liczba wyładowań stabilna. ';\n}\n\nif (trend.odleglosc < 0) {\n    status += 'Burza się zbliża. ';\n} else if (trend.odleglosc > 0) {\n    status += 'Burza się oddala. ';\n} else {\n    status += 'Odległość do burzy stabilna. ';\n}\n\nmsg.payload = {trend: trend, status: status};\nreturn msg;",
        "outputs": 1,
        "noerr": 0,
        "x": 1100,
        "y": 80,
        "wires": [
            [
                "4f329dff26e49519"
            ]
        ]
    }
]

W jednym node zbiera do 6 pomiarów z burze net (pobieram po soap), a w drugim mam analizę czy się zbliza, czy oddala oraz czy wyładowań jest wiecej/mniej

Niestety nie dałem rady zrobić na samych pomocnikach. Dodatkowa encja z platformy statystyki robi robotę.
Ale aby mieć obecną i poprzednią wartość encji zrobiłem dwa pomocniki typu tekst i w automatyzacji przepisuję wartości:

- alias: Zapis stanu encji
  trigger:
    platform: state
    entity_id: sensor.sonoff_do_pompy_co_ds18b20_1_temperature  
  action:
  - service: input_text.set_value
    data_template:
      entity_id: input_text.saved_state_2
      value: "{{ states('input_text.saved_state_1') }}"       
  - service: input_text.set_value
    data_template:
      entity_id: input_text.saved_state_1
      value: "{{ trigger.to_state.state }}"