Lista de compras no HA

Boas a todos,

Venho aqui dar a conhecer uma funcionalidade que possivelmente muita gente desconhece, e a meu ver é bastante útil. Para além disso é bastante simples de implementar.

shopping_list

A lista é partilhável para todos os utilizadores do HA.
Basta apenas colocar isto que está abaixo no configuration.yaml
shopping_list:

Depois de reiniciar o HA vai aparecer um carrinho de compras no lado esquerdo, é lá onde se atualiza a lista.

menu

Opcionalmente dá para colocar no vosso Lovelace card através do código:
type: shopping-list

Bonus

Nativamente no HA o carrinho não nos diz quantos items tem, e quais são. Não existe forma de saber através do HA. Mas os dados estão guardados num ficheiro no /config por isso, com código simples conseguimos obter esses valores. Deixo abaixo todo o conteúdo

Obter items e contagem

Exemplo de como implementei no meu lovelace:
Menu_LL

Criar um ficheiro .py. No meu caso usei a pasta /config/python_scripts/
nome: shopping_list_count.py

#!/usr/local/bin/python
# coding: utf8
import json
import sys

def main(argv):
    arg = argv[0]

    with open('/config/.shopping_list.json') as data_file:
        shoppingListData = json.load(data_file)

    content = u""
    count = 0
    for entry in shoppingListData:
        if not entry['complete']:
            content += u"\n- %s" % entry['name'].capitalize()
            count += 1

    if arg == "count":
        print(count)
    elif arg == "list":
        print(content)

if __name__ == "__main__":
    try:
    # ARGV
    # count or list
    # Example: python file.py count
        if len(sys.argv) == 2:
            if (sys.argv[1] == "count") or (sys.argv[1] == "list"):
                main(sys.argv[1:2])
            else:
                raise ValueError("Valid arguments: count, list")
        else:
            raise ValueError("Argument required")
    except IndexError:
        raise ValueError("Argument required")

No HA:

sensor:
  - platform: command_line
    name: shopping_list_count
    command: python3 /config/python_scripts/shopping_list_count.py count
  - platform: command_line
    name: shopping_list_items
    command: python3 /config/python_scripts/shopping_list_count.py list

automation:
  - alias: Update shopping list items number
    initial_state: true
    trigger:
      - platform: event
        event_type: shopping_list_updated
    action:
      - service: homeassistant.update_entity
        entity_id: sensor.shopping_list_count
      - service: homeassistant.update_entity
        entity_id: sensor.shopping_list_items

Enviar por notify

Imaginando que um familiar vai às compras e nos faz o favor de fazer as compras por nós, facilmente, envio a lista por notify para o meu telemóvel e reencaminho via mensagem para a pessoa.

lista

Código:

script:
  notify_shopping_list:
    description: "send shopping list"
    sequence:
      - service: notify.<vosso notify>
        data_template:
          title: Lista de compras
          message: >
            {{ states('sensor.shopping_list_items') }}
3 Likes

Bom dia
Obrigado pelo tutorial.
Quando faço a validação, no script está a dar o seguinte erro:
Configuração inválida

Error loading /config/configuration.yaml: invalid key: “OrderedDict([(“states(‘sensor.shopping_list_items’)”, None)])” in “/config/packages/shopping.yaml”, line 27, column 0

O código que tenho:

sensor:
  - platform: command_line
    name: shopping_list_count
    command: python3 /config/python_scripts/shopping_list_count.py count
  - platform: command_line
    name: shopping_list_items
    command: python3 /config/python_scripts/shopping_list_count.py list
automation:
  - alias: Update shopping list items number
    initial_state: true
    trigger:
      - platform: event
        event_type: shopping_list_updated
    action:
      - service: homeassistant.update_entity
        entity_id: sensor.shopping_list_count
      - service: homeassistant.update_entity
        entity_id: sensor.shopping_list_items
script:
  notify_shopping_list:
    sequence:
      - service: notify.telegram
        data_template:
          title: lista de compras
          message: {{ states('sensor.shopping_list_items') }}

Onde estará o problema?
Cumprimentos
Sebastião

Isto não está igual ao que eu meti

Obrigado. Está resolvido

Nice, eu estava ver se arranjava era uma solução com integração com o GH.

Que integrações procuras?

Confeso que ainda não procurei muito, estou focado em outras coisas mas eu uso uma app que se chama Bring e tem uma skill pra voice assitant mas o pessoal diz é uma treta…
Funcionalmente, eu diria:

  1. Funcionar em iOS e Android
  2. Funcionar com Google Home (Voice Assistant)
  3. Sync entre devices
  4. Lovelace (non blocker, vivo bem sem isso)

Obrigado @ricreis394 por acaso não percebo como de raiz o HA não permite registar os dados.

No meu já funciona :smiley:

Também uso a app Bring, é muito mais prático porque permite vários utilizadores poderem gerir a lista de compras. Já tenho integrado com o HA as quantidades, os produtos tenho problemas.

Não estou a entender…

  • O shopping_list funciona no HA, logo funciona em android e iOS.
  • Quase de certeza funciona com Google Home, desde que o tenhas integrado no HA. O HA tem um service para adicionar items, podes fazer o google home chamar esse service.
  • Sync: Como está no HA, quem acede está a aceder à informação atualizada

O Google Home já tem capacidade de criar Shopping Lists integrada, a questão é se dá ou não para integrar no HA.

Julgo que a lista da Alexa e a da Google nao permitem integraçao com o HA.
A do HA sempre achei muito fraca, pois nao permitia por exemplo usar os dados para automações.
Ha cerca de um mês conheci a app Bring que é muito boa pois tem sincronismo de produtos com outras pessoas da casa e tem produtos pre-definidos e permite quantidades, ainda só tenho a funcionar as quantidas no carrinho pois ai da não consegui trabalhar os produtos
Tambem testei um addon que permitr fazer a gestao de stock dos produtos em casa, mas achei completo de mais e pouca utilidade para o essencial.

1 Like

Eu uso o OurGroceries que tem versão para Android e iOS (também tem online via browser) com sincronização em tempo real em todos os dispositivos em simultâneo. A app é muito completa e permite associar fotos a produtos, ler códigos de barras, E descobri à poucos dias que tem integração com o HA, embora ainda não tenha tido tempo para testar, e inclui o serviço ourgroceries.add_to_list que permite adicionar produtos via HA (com jeitinho também dará por voz via GH ou Alexa).

https://www.ourgroceries.com/user-guide

1 Like

Fixe, vou checar…


Copyright © 2017-2020. Todos os direitos reservados
CPHA.pt - info@cpha.pt


FAQ | Termos de Serviço/Regras | Política de Privacidade