Hallo,
ย
mit der neuen Version 2025.05 hat sich die Intergration "17Track" (Dokumentation) geรคndert.
Leider wurde die Doku nicht angepasst (siehe auch).
Ich habe zuvor meine Pakete wie unter "Examples/Dashboard summary card" beschrieben, in meinem Dashboard angezeigt.
Jetzt gibt es nur noch die Aktion "seventeentrack.get_packages"
Diese gibt folgendes Zurรผck:
packages: - destination_country: Germany origin_country: Poland package_type: Registered Parcel tracking_info_language: Unknown tracking_number: 1ZXXXXXXXXXXXXX location: Ort, DE status: In Transit info_text: Arrived at Facility friendly_name: Lieferung timestamp: "2025-05-10T04:36:00+00:00"
oder als Template:
{% set action_response = {"packages":[{"destination_country":"Germany","origin_country":"Poland","package_type":"Registered Parcel","tracking_info_language":"Unknown","tracking_number":"1ZXXXXXXXXXXXXX","location":"Ort, DE","status":"In Transit","info_text":"Arrived at Facility","friendly_name":"Lieferung","timestamp":"2025-05-10T04:36:00+00:00"}]} %}
ย
Wie kann ich diese Rรผckgabe so aufbereiten, so das ich diese in meinem Dashboard anzeigen kann?
Viele Grรผรe
Gunter
Erstelle eine Template-Sensor, die wie folgt aussehen kann:
- trigger: - platform: time_pattern minutes: "/15" action: - action: seventeentrack.get_packages data: config_entry_id: DEINE_ID_AUS_ENTWICKLERWERKZEUGEN response_variable: tmp_packages sensor: - name: Paketlieferungen unique_id: my_packages state: "{{ now().isoformat() }}" icon: mdi:calendar-range attributes: packages: "{{ tmp_packages.packages }}"
ย
Die config_entry_id kannst du in den Entwicklerwerkzeugen auslesen, wenn du die Aktion ausfรผhrst und in den YAML-Modus wechselst. Der Template-Sensor wird alle 15 Minuten die Aktion ausfรผhren und deine Daten aktualisieren.
Als Ergebnis bekommst du einen neuen Sensor sensor.paketlieferungen, der alle gem. Aktion definierten Pakete (in meinem Beispiel keine Einschrรคnkungen) enthรคlt:
รber die Aktion kannst du bei Bedarf noch definieren, welche Stati in dem Sensor enthalten sein sollen.
รber die Attribute kann man dann iterieren, bspw. auch in einer Markdown-Card. Hierfรผr kรถnnte der Code wie folgt aussehen:
{% for package in states.sensor.paketlieferungen.attributes.packages %} {{ package.friendly_name }} ({{ package.tracking_number }}): {{ package.info_text }} {% endfor %}
Und das Ergebnis ist dann:
Hallo Olli,
Danke fรผr deine Hilfe ich habe nun wieder die "alte" Funktionaltitรคt.
Falls das jemand auch nachbauen muss bzw. will, stelle ich hier meine Arbeit Online:
So sieht das Dasboard dafรผr aus:
Dazu habe ich vier Template-Sensoren erstellt die alle fรผnf Minuten den Zustand abfragen:
- trigger: - platform: time_pattern minutes: "/5" action: - action: seventeentrack.get_packages data: config_entry_id: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX package_state: - in_transit response_variable: pakete_unterwegs sensor: - name: SevTrackPaketeUnterwegs unique_id: seventeentrack_packages_in_transit state: "{{ now().isoformat() }}" icon: mdi:truck-delivery-outline attributes: packages: "{{ pakete_unterwegs.packages }}" - trigger: - platform: time_pattern minutes: "/5" action: - action: seventeentrack.get_packages data: config_entry_id: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX package_state: - not_found response_variable: pakete_not_found sensor: - name: SevTrackPaketeNichtgefunden unique_id: seventeentrack_packages_not_found state: "{{ now().isoformat() }}" icon: mdi:package-variant-closed attributes: packages: "{{ pakete_not_found.packages }}" - trigger: - platform: time_pattern minutes: "/5" action: - action: seventeentrack.get_packages data: config_entry_id: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX package_state: - delivered response_variable: pakete_geliefert sensor: - name: SevTrackPaketeGeliefert unique_id: seventeentrack_packages_delivered state: "{{ now().isoformat() }}" icon: mdi:checkbox-marked-circle-outline attributes: packages: "{{ pakete_geliefert.packages }}" - trigger: - platform: time_pattern minutes: "/5" action: - action: seventeentrack.get_packages data: config_entry_id: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX package_state: - ready_to_be_picked_up response_variable: pakete_pickup sensor: - name: SevTrackPaketeBereitzurAbholung unique_id: seventeentrack_packages_pickup state: "{{ now().isoformat() }}" icon: mdi:package-variant-closed attributes: packages: "{{ pakete_pickup.packages }}"
ย
Fรผr das Dashboard habe ich Markups erstellt mit der Prรผfung ob Pakete vorhanden sind (>0):
ย
type: conditional conditions: - entity: sensor.seventeentrack_packages_in_transit state_not: "0" card: type: markdown content: >- <h1><font color="#f0c216"><ha-icon icon="mdi:truck-delivery-outline"></ha-icon> Pakete auf dem Weg </font></h1> {% for package in states.sensor.sevtrackpaketeunterwegs.attributes.packages %} *** >- **{{ package.friendly_name }} ({{ package.tracking_number }}):** {{ package.info_text }} **Stand:** {{ (package.timestamp | as_datetime).strftime('%d.%m.%Y - %H:%M Uhr') }} **Wo ist das Paket derzeit:** {{ package.location }} {% endfor %} *** type: conditional conditions: - entity: sensor.seventeentrack_packages_ready_to_be_picked_up state_not: "0" card: type: markdown content: >- <h1><font color="#3358ff"><ha-icon icon="mdi:package-variant-closed"></ha-icon> Pakete in Zustellung </font></h1> {% for package in states.sensor.sevtrackpaketebereitzurabholung.attributes.packages %} *** >- **{{ package.friendly_name }} ({{ package.tracking_number }}):** {{ package.info_text }} {% endfor %} *** type: conditional conditions: - entity: sensor.seventeentrack_packages_not_found state_not: "0" card: type: markdown content: >- <h1><font color="#800080"><ha-icon icon="mdi:package-variant-closed"></ha-icon> Pakete unbekannt </font></h1> {% for package in states.sensor.sevtrackpaketenichtgefunden.attributes.packages %} >- **{{ package.friendly_name }}** ({{ package.tracking_number }}) {% endfor %} *** type: conditional conditions: - entity: sensor.seventeentrack_packages_delivered state_not: "0" card: type: markdown content: >- <h1> <h1><font color="#30a414"><ha-icon icon="mdi:checkbox-marked-circle-outline"></ha-icon> Pakete geliefert </font></h1> {% for package in states.sensor.sevtrackpaketegeliefert.attributes.packages %} *** >- **{{ package.friendly_name }} ({{ package.tracking_number }}):** {{ package.info_text }} {% endfor %} ***
Viele Grรผรe
Gunter
ย
ย
... mit zwei Pakten erhalte ich folgende Ausgaben:
packages: - destination_country: Unknown origin_country: Germany package_type: Registered Parcel tracking_info_language: Unknown tracking_number: "0034043XXXXXX" location: "" status: Not Found info_text: null friendly_name: Lieferung 2 - destination_country: Germany origin_country: Poland package_type: Registered Parcel tracking_info_language: Unknown tracking_number: 1ZXXXXXXXXXXXXX location: Ort, DE status: In Transit info_text: Arrived at Facility friendly_name: Lieferung timestamp: "2025-05-10T04:36:00+00:00"
oder als Template:
{% set action_response = {"packages":[{"destination_country":"Unknown","origin_country":"Germany","package_type":"Registered Parcel","tracking_info_language":"Unknown","tracking_number":"0034043XXXXXX","location":"","status":"Not Found","info_text":null,"friendly_name":"Lieferung 1"},{"destination_country":"Germany","origin_country":"Poland","package_type":"Registered Parcel","tracking_info_language":"Unknown","tracking_number":"1ZXXXXXXXXXXXXX","location":"Ort, DE","status":"In Transit","info_text":"Arrived at Facility","friendly_name":"Lieferung 1","timestamp":"2025-05-10T04:36:00+00:00"}]} %}
Ich selbst nutze die Integration nicht, aber die Response mรผsste man zwischenspeichern und dann parsen.
In der 2025.5 Release-Note steht dazu ja folgendes:
https://www.home-assistant.io/blog/2025/05/07/release-20255/#backward-incompatible-changes
Das liest sich fรผr mich so, als wรผrde es dedizierte Sensoren nun geben?
Hallo Olli,
leider Nein!
Keine neue Sensoren, nur die Ausgabe รผber seventeentrack.get_packages
Viele Grรผรe
Gunter
ย
รber einen Template-Sensor und die Aktion seventeentrack.get_packages mรผsste man sich die Response doch aufbereiten kรถnnen, รคhnlich wie bei den Wetterdaten. Dort macht man ja bspw. folgendes:
template: - trigger: - platform: time_pattern hours: "/1" action: - action: weather.get_forecasts target: entity_id: - weather.forecast_home data: type: daily response_variable: vorhersage sensor: - name: Wettervorhersage unique_id: weather_entity_forecast state: "{{ now().isoformat() }}" icon: mdi:calendar-range attributes: forecast: "{{ vorhersage['weather.forecast_home'].forecast }}"
ย
Also bspw. alle 15 Minuten das Ding triggern, als action halt seventeentrack.get_packages und die Response in einen neuen Sensor packen und dort die eigentliche Response als Attribute speichern. Weiรt du, wie es meine?
Hallo Olli,
leider nein.
Ich benรถtige aus den Daten:
tracking_number: 1ZXXXXXXXXXXXXX
location: Ort, DE
status: In Transit
info_text: Arrived at Facility
friendly_name: Lieferung
Diese Daten habe ich zuvor in einem Markup angezeigt.
Viele Grรผรe
Gunter
Also es gibt doch je Paketzustand einen eigenen Sensor:
Und sofern ein Sensor >0 ist steht in dem Attribut die Paket-Liste. In einer Markdown-Karte kann man nun prรผfen, ob der jeweilige Zustandssensor > 0 ist und wenn ja durch das Attribut iterieren.
Hallo Olli,
ja, es gibt diese Sensoren, aber nur die Anzahl der Pakete.
ย
Weiteren Datem sind nicht ersichtlich. keine Attribute.
Viele Grรผรe
Gunter
Doch klar, schau dir die Attribute mal in den Entwicklerwerkzeugen an. Wenn > 0, dann ist das Attribut gefรผllt:
Hallo Olli,
kannst du mir erklรคren wie ich den Template-Sensor aufbauen muss, z.B. fรผr die Eintrรคge "tracking_number" die von der Rรผckgabe zurรผckgegeben werden?
Danke und viele Grรผรe
Gunter
Hallo Olli,
ich habe jetzt mal einen Template Sendor zum Test aufgebaut, ich denke ich komme so mal einen Schritt weiter. Danke.
- trigger: - platform: time_pattern minutes: "/1" action: - action: seventeentrack.get_packages data: config_entry_id: XXXXXXX response_variable: pakete sensor: - name: 17TrackPakete unique_id: seventeentrack_packages state: "{{ now().isoformat() }}" icon: mdi:package-variant-closed attributes: rueckgabe: "{{ pakete.packages }}"
ย
Viele Grรผรe
Gunter
Produktempfehlungen