GPX file generated from device tracker history (last 8 hours)

Dear all,
I’m in trouble with a script that I’ve tried to generate on my Raspi for Home Assistant.

Target: to generate manually with a Lovelace button a GPX file that contains the track of last 8 hours of a smartphone tracked via device tracker in Home Assistant.

Code used as follows:

FILE: /config/automations.yaml
CODE:

- id: generate_gpx_file
  alias: Generate GPX File
  trigger:
    platform: event
    event_type: call_service
    event_data:
      domain: automation
      service: trigger
      service_data:
        entity_id: automation.generate_gpx_file
  action:
    service: python_script.execute
    data:
      script_id: generate_gpx_script

FILE: /config/python_scripts/generate_gpx.yaml
CODE:

generate_gpx:
  sequence:
    - service: python_script.execute
      data:
        script_id: generate_gpx_script

FILE: /config/python_scripts/generate_gpx_script.py
CODE:

# Estrapola i dati dell'entità "device_tracker.smartphone"
device_tracker = hass.states.get("device_tracker.smartphone")
history = device_tracker.attributes.get("history")

# Calcola l'orario di 8 ore fa
end_time = datetime.datetime.now()
start_time = end_time - datetime.timedelta(hours=8)

# Crea il contenuto del file GPX
gpx_content = """<?xml version="1.0"?>
<gpx version="1.1" creator="Home Assistant">
  <trk>
    <name>Historical Track</name>
    <trkseg>
      {% for event in history %}
        {% if event[0] >= start_time and event[0] <= end_time %}
          <trkpt lat="{{ event[1][0] }}" lon="{{ event[1][1] }}">
            <time>{{ event[0].timestamp() | timestamp_local }}</time>
          </trkpt>
        {% endif %}
      {% endfor %}
    </trkseg>
  </trk>
</gpx>
"""

# Scrivi il contenuto nel file GPX
file_path = "/config/generated_track.gpx"
with open(file_path, "w", encoding="utf-8") as file:
    file.write(gpx_content)

FILE: /config/generated_track.gpx
No code here… it’s the file that should be overwritten with proper GPX content.

Please, could you help me to understand what happens? Thanks!

My log error:
Logger: homeassistant.components.shell_command
Source: /usr/src/homeassistant/homeassistant/components/shell_command/init.py:131
Integration: Shell Command (documentation, issues)
First occurred: 08:56:11 (2 occurrences)
Last logged: 08:56:29

Error running command: python3 /config/generate_gpx_script.py, return code: 1
NoneType: None

2 Likes

Hey, did you get your code working?
I was looking to store location data long-term, but this could actually an even nicer solution.

Cheers,
Daniel