Hello
I was on your forum and discovered that parcel had this integration. I was already using the iOS/macOS/web version with a €5 annual subscription.
For those who are interested, here is my card and its code.
There is a conditional function that displays nothing if no tracker
le code
type: vertical-stack
cards:
- type: vertical-stack
cards:
- type: markdown
content: |
# **{{ states('sensor.parcel_nb_de_paquet_actif') }}** colis en cours
visibility:
- condition: numeric_state
entity: sensor.parcel_nb_de_paquet_actif
above: 0
card_mod:
style: |
ha-card {
background: #C24444;
color: white;
text-align: center;
border: 1px solid rgba(100,100,100,0.4)
}
- type: markdown
content: >
## 🚚 En Route
{% set parcels = state_attr('sensor.parcel_raw_shipment_data',
'deliveries') or [] %}
{% set found_parcel = false %}
{% for parcel in parcels %}
{% if parcel.get('status_code') in [1, 2, 3, 4, 8] %}
{% set found_parcel = true %}
📦 **[{% set carrier = parcel.get('carrier_code', 'N/A')|upper %}{%
if carrier == 'LP' %}La Poste{% elif carrier == 'RELAY' %}Mondial
Relais{% else %}{{ carrier }}{% endif %}] {{parcel.get('description',
'Description inconnue') }}**
**• Statut :** {% set status = parcel.get('status_code') %}{% if
status == 1 %}Livraison bloquée. Il n'y a pas eu de mises à jour
depuis longtemps, ou quelque chose d'autre fait croire à l'application
qu'elle ne sera jamais mise à jour à l'avenir.{% elif status == 2 %}le
colis est en cours d'acheminement{% elif status == 3 %}le colis est
parti pour la livraison finale{% elif status == 4 %}Prêt pour
récupération ou Disponible en point relais{% elif status == 5
%}Livraison non trouvée.{% elif status == 6 %}Tentative de livraison
échouée.{% elif status == 7 %}Exception de livraison, quelque chose ne
vas pas et necessite votre attention.{% elif status == 8 %}le
transporteur a reçu des informations sur un colis, mais ne l'a pas
encore reçu physiquement.{% else %}Statut inconnu{% endif %}
**• N° Tracker :** {{ parcel.get('tracking_number', 'N/A') }}
{% if parcel.get('date_expected') %} **• Date attendue de livraison
le:** `{% set date_obj = strptime(parcel.date_expected, '%Y-%m-%d
%H:%M:%S') %}{{ date_obj.strftime('%A %d %B %Y')|replace('Monday',
'Lundi')|replace('Tuesday', 'Mardi')|replace('Wednesday',
'Mercredi')|replace('Thursday', 'Jeudi')|replace('Friday',
'Vendredi')|replace('Saturday', 'Samedi')|replace('Sunday',
'Dimanche')|replace('January', 'janvier')|replace('February',
'février')|replace('March', 'mars')|replace('April',
'avril')|replace('May', 'mai')|replace('June', 'juin')|replace('July',
'juillet')|replace('August', 'août')|replace('September',
'septembre')|replace('October', 'octobre')|replace('November',
'novembre')|replace('December', 'décembre') }}`{% endif %}
{% if parcel.get('events') and parcel.events|length > 0 %}**• Dernier
événement:** **<font color="#C24444">{{ parcel.events[0].get('event',
'Aucun événement') }}</font>**
{% if parcel.events[0].get('location') %}
**• Localisation:** [{{parcel.events[0].get('location')
}}](https://www.google.com/maps/search/?api=1&query={{
parcel.events[0].get('location')|urlencode }}){% elif
parcel.events|length > 1 and parcel.events[1].get('location') %}
**Retrait à:** [{{ parcel.events[1].get('location')
}}](https://www.google.com/maps/search/?api=1&query={{
parcel.events[1].get('location')|urlencode }}){% endif %}
{% if parcel.events[0].get('date') %}**• MàJ** {{
parcel.events[0].date[:10] }} {{ parcel.events[0].date[11:16] }}{%
endif %}
{% endif %}
---
{% endif %}
{% endfor %}
visibility:
- condition: numeric_state
entity: sensor.parcel_nb_de_paquet_actif
above: 0
- type: markdown
visibility:
- condition: state
entity: sensor.parcel_nb_de_aujourdhui
above: 0
content: >
## ✅ **Livrée**
{% set parcels = state_attr('sensor.parcel_raw_shipment_data',
'deliveries') or [] %}
{% set found_parcel = false %}
{% for parcel in parcels %}
{% if parcel.get('status_code') == 0 %}
{% set found_parcel = true %}
📦 **[{% set carrier = parcel.get('carrier_code', 'N/A')|upper %}{%
if carrier == 'LP' %}La Poste{% elif carrier == 'RELAY' %}Mondial
Relais{% else %}{{ carrier }}{% endif %}] {{parcel.get('description',
'Description inconnue') }}**
**• N° Tracker :** {{ parcel.get('tracking_number', 'N/A') }} {% if
parcel.get('events') and parcel.events|length > 0 %}
**• Dernier événement:** {{ parcel.events[0].get('event', 'Aucun
événement') }}
{% if parcel.events[0].get('date') %}**• MàJ** {{
parcel.events[0].date[:10] }} {{ parcel.events[0].date[11:16] }}{%
endif %}
{% endif %}
---
{% endif %}
{% endfor %}
(sorry, I’m French and the card is adapted to change date format etc…).