Отслеживаем письма и посылки в Home Assistant

Отслеживаем письма и посылки в Home Assistant

Как связаны Home Assistant и посылки? Home Asssitant это система умного дома и посылку тоже можно доставить на дом.

Смекаешь? (мем)

На самом деле никак не связаны. Просто я бы хотел держать информацию о посылках всегда перед глазами, чтобы не нужно было постоянно заходить на сайт почты. А так как я часто заглядываю в панель управления Home Assistant, то почему бы не выводить статус посылок туда?

Если интересно, то сейчас расскажу, как сделать такие же карточки:

Отображение посылок в Home Assistant

Итак, интеграция с 17TRACK

В Home Assistant из коробки есть интеграция с сервисом отслеживания посылок 17TRACK. Поэтому для начала нужно зарегистрироваться в 17TRACK, добавить нужные посылки и дать им имена:

Список посылок в 17TRACK

Затем, чтобы подключить 17TRACK к Home Assistant, нужно добавить в configuration.yaml следующее:

sensor:
  - platform: seventeentrack
    username: "<логин_в_17track>"
    password: "<пароль_в_17track>"

Логин и пароль желательно вынести в secrets.yaml.

После перезапуска Home Assistant добавятся несколько сенсоров. Нас в первую очередь интересуют вот эти три:

  • sensor.seventeentrack_packages_in_transit — посылки в пути;
  • sensor.seventeentrack_packages_ready_to_be_picked_up — посылки, готовые к получению;
  • sensor.seventeentrack_packages_undelivered — по сути, тоже готовые к получению, только со статусом «Неудачная попытка вручения».

Карточки в Lovelace

Осталось красиво вывести это все на панель управления. Для этого нам понадобится добавить как минимум по одной карточке на каждый из трех сенсоров.

Вот, например, конфиг для отображения первой посылки из списка «В пути»:

type: custom:mushroom-template-card
entity: sensor.seventeentrack_packages_in_transit
primary: "{{ state_attr(entity, 'packages')[0].friendly_name }}"
secondary: >-
  {{ state_attr(entity, 'packages')[0].info_text }} • {{ state_attr(entity, 'packages')[0].timestamp.strftime('%d.%m') }}
icon: mdi:package
icon_color: var(--rgb-blue)
badge_icon: mdi:flag
badge_color: var(--rgb-green)

Я использую кастомные карточки Mushroom, которые можно скачать через HACS.

Но что, если в данный момент нет никаких посылок в пути? А что, если их больше одной? В этом случае просто нужно добавить по карточке под каждую посылку и обернуть каждую карточку в условие (conditional).

В итоге конфиг целиком выглядит следующим образом:

type: grid
columns: 1
square: false
cards:
  - type: conditional
    conditions:
      - condition: numeric_state
        entity: sensor.seventeentrack_packages_ready_to_be_picked_up
        above: 0
    card:
      type: custom:mushroom-template-card
      entity: sensor.seventeentrack_packages_ready_to_be_picked_up
      primary: "{{ state_attr(entity, 'packages')[0].friendly_name }}"
      icon: mdi:package
      icon_color: var(--rgb-blue)
      badge_icon: mdi:flag
      badge_color: var(--rgb-green)
  - type: conditional
    conditions:
      - condition: numeric_state
        entity: sensor.seventeentrack_packages_undelivered
        above: 0
    card:
      type: custom:mushroom-template-card
      entity: sensor.seventeentrack_packages_undelivered
      primary: "{{ state_attr(entity, 'packages')[0].friendly_name }}"
      icon: mdi:package
      icon_color: var(--rgb-blue)
      badge_icon: mdi:flag
      badge_color: var(--rgb-orange)
  - type: conditional
    conditions:
      - condition: numeric_state
        entity: sensor.seventeentrack_packages_in_transit
        above: 0
    card:
      type: custom:mushroom-template-card
      entity: sensor.seventeentrack_packages_in_transit
      primary: "{{ state_attr(entity, 'packages')[0].friendly_name }}"
      secondary: >-
        {{ state_attr(entity, 'packages')[0].timestamp.strftime('%d.%m') }} • {{ state_attr(entity, 'packages')[0].info_text }}
      icon: mdi:package
      icon_color: var(--rgb-blue)
      badge_icon: mdi:airplane
      badge_color: var(--rgb-accent-color)
  - type: conditional
    conditions:
      - condition: numeric_state
        entity: sensor.seventeentrack_packages_in_transit
        above: 1
    card:
      type: custom:mushroom-template-card
      entity: sensor.seventeentrack_packages_in_transit
      primary: "{{ state_attr(entity, 'packages')[1].friendly_name }}"
      secondary: >-
        {{ state_attr(entity, 'packages')[1].timestamp.strftime('%d.%m') }} • {{ state_attr(entity, 'packages')[1].info_text }}
      icon: mdi:package
      icon_color: var(--rgb-blue)
      badge_icon: mdi:airplane
      badge_color: var(--rgb-accent-color)

YAML выше достаточно скопировать и добавить как карточку с ручной настройкой:

0:00
/0:18

В итоговом виджете получим:

  • По одной карточке для посылок со статусом «Готово к выдаче» и «Неудачная попытка вручения»;
  • И не больше двух карточек для посылок в пути.

Если нужно отслеживать большее количество посылок, то дополнительные карточки можно добавить по аналогии.

Удачных вам покупок! 🙂

Была ли статья полезна?

Хотите сказать спасибо? Кофе автору — ваша благодарность.

На кофе
Подписка на новые статьи

Уведомления, как только в блоге появится что-нибудь интересненькое.

Подписываясь, вы даете согласие на обработку персональных данных.