Rรผckgabe aus einer ...
 
Benachrichtigungen
Alles lรถschen

[Gelรถst] Rรผckgabe aus einer Aktion fรผr das Dashboard aufbereiten...

16 Beitrรคge
2 Benutzer
2 Reactions
224 Ansichten
0
Themenstarter

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

8 Antworten
1

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:

image

รœ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:

{1FF8F7A5 588B 48AB 96D0 CEA20AB2C03F}
1
Themenstarter

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:

Screenshot 2025 05 11 143124

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

ย 

ย 

0
Themenstarter

... 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"}]} %}
0

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:

image

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?

0
Themenstarter

Hallo Olli,

leider Nein!
Keine neue Sensoren, nur die Ausgabe รผber seventeentrack.get_packages

Viele GrรผรŸe

Gunter

ย 

0

รœ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?

Gunni Themenstarter 10/05/2025 9:29 pm

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

Olli 10/05/2025 10:35 pm

Also es gibt doch je Paketzustand einen eigenen Sensor:

Screenshot 20250510 223129

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.

Gunni Themenstarter 10/05/2025 10:41 pm

Hallo Olli,

ja, es gibt diese Sensoren, aber nur die Anzahl der Pakete.

ย 

Screenshot 2025 05 10 223820

Weiteren Datem sind nicht ersichtlich. keine Attribute.

Viele GrรผรŸe
Gunter

Olli 10/05/2025 10:58 pm

Doch klar, schau dir die Attribute mal in den Entwicklerwerkzeugen an. Wenn > 0, dann ist das Attribut gefรผllt:

Screenshot 20250510 225643
Gunni Themenstarter 10/05/2025 11:02 pm

Hallo Olli,

bei mir nicht.

Screenshot 2025 05 10 223820

Viele GrรผรŸe
Gunter

Gunni Themenstarter 10/05/2025 11:03 pm

Core Version: 2025.5.1

Olli 11/05/2025 11:50 am

Ja, mein Fehler... Das war eine Testumgebung mit 2025.4.x - Sorry!

0
Themenstarter

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

Olli 11/05/2025 2:41 pm

@gunni Bei meiner Lรถsung habe ich ergรคnzt, wie man auf die Attribut-Daten zugreift.

0
Themenstarter

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