Criar status para máquina de lavar

Precisava de uma ajuda para criar um sensor de status para máquina de lavar roupas e lavar louças, tipo de acordo com o wats saber em qual estágio está (enchendo, batendo, centrifugando e etc) alguém poderia me dar uma ajuda?
Estou com esse código e queria incluir mais segue:

  - platform: template
    sensors:
      maquina_lavar_status:
        friendly_name_template: Status Máquina de Lavar
        value_template: >-
          {% if states('sensor.watts_lava_e_seca')|float > 3 %}
            Lavando
          {% else %}
            Desligada
          {% endif %}
        icon_template: >-
          {% if states('sensor.watts_lava_e_seca')|float > 3 %}
            mdi:dishwasher
          {% else %}
            mdi:washing-machine
          {% endif %}

Primeiro você precisa criar uma entidade com as opções para máquina de lavar.
Assim a cada etapa você altera a opção atual da máquina de lavar.

Para isso crie um input select

input_select:
# Máquina de Lavar ################################
  opcoes_maquina_de_lavar:
    name: Opções da Máquina de Lavar
    options:
      - Desligada
      - Enchendo
      - Batendo
      - Molho
      - Esvaziando
      - Centrifugando
    initial: Desligada
    icon: mdi:washing-machine

Esse código acima vai dentro do configuration.yaml.

As opções você define de acordo com a sua máquina, ou com o que você deseja. Basta adicionar ou remover dentro da tag options: como o exemplo acima. Mesma coisa vale para o nome, eu coloquei opcoes_maquina_de_lavar, mas você pode colocar o nome que achar melhor.

Depois você precisa identificar a cada etapa da sua máquina, a quantidade watts. Mas já adianto que é chatinho fazer, pois as vezes você tem vários modos (modo curto, modo longo) de lavagem/secagem e isso da um trabalhinho.

Digo isso, porque as suas automações para mudar o status da sua máquina no INPUT SELECT, vai depender da etapa anterior que sua máquina se encontra, pois se não vai alterar para uma etapa que não deveria. Você precisará criar condições para trocar de etapa.

Exemplo:

# Etapa 1 - Máquina Ligada e Enchendo
- alias: 'Máquina de Lavar - Enchendo'
  initial_state: true
  trigger:
    - platform: numeric_state
      entity_id: sensor.maquina_de_lavar_wats
      above: 3 #acima
      below: 7 #abaixo
  condition:
    # Aqui uma condição, só vai trocar para a opção Enchendo se o opção atual dela for Desligada
    - condition: state
      entity_id: input_select.opcoes_maquina_de_lavar
      state: 'Desligada'         
  action:
    # aqui eu altero o valor da máquina no input que criei
    - service: input_select.select_option
      data:
        entity_id: input_select.opcoes_maquina_de_lavar
        option: 'Enchendo'
    # gh avisa - OPCIONAL
    - service: tts.google_translate_say
      data_template:
        entity_id: media_player.musics
        message: "Olá! A máquina de lavar foi ligada. Iniciando o primeiro processo, que é encher d'água."    

Para cada etapa você precisará fazer assim. Uma automação com condições.
Outro exemplo, a minha máquina sempre que termina o processo em todas os modos, ela faz a centrifugação antes de finalizar.

Então eu coloquei uma condição para que só altere a etapa para Desligada, se a etapa atual dela for “Centrifugando”

# etapa final
- alias: 'Máquina de Lavar - Finalizada'
  initial_state: true
  trigger:
    - platform: numeric_state
      entity_id: sensor.maquina_de_lavar_wats
      below: 1
   condition:  
    # Aqui é onde coloco a condição que para executar as ações, ela precisa estar no modo Centrifugando
    - condition: state
      entity_id: input_select.opcoes_maquina_de_lavar
      state: 'Centrifugando'             
  action:
    # Altera o valor do input
    - service: input_select.select_option
      data:
        entity_id: input_select.opcoes_maquina_de_lavar
        option: 'Desligada'
    # gh avisa
    - service: tts.google_translate_say
      data_template:
        entity_id: media_player.musics
        message: "Processo de lavação finalizou. Desliguei a máquina. Agora você pode recolher a roupa."   

Se você não colocar as condições baseado na etapa atual da máquina, as vezes sua automação vai trocar para molho e na verdade ela ta enchendo, pois as vezes a variação de watts é semelhante entre uma etapa e outra.

Outra dica é no gatilho trigger: colocar for: assim, ela só executa o gatilho se estiver por X tempo entre aquela situação (nesse caso watts), exemplo:

  trigger:
    - platform: numeric_state
      entity_id: sensor.maquina_de_lavar_wats
      below: 1
      for: '00:10:00' 

Nesse caso, só vai executar a ação se a máquina de lavar abaixo de 1 watt por 10 segundos. Isso também ajuda pois as vezes a máquina ou o sensor que monitora a energia dela, tem variação e de uma hora para outra vai para 0 em 1 segundo e acaba ativando sua automação.

No final você não vai utilizar o sensor.maquina_lavar_status para mostrar na tela (view), e sim o input_select.opcoes_maquina_de_lavar para mostrar o status dela.

Bom é isso, como eu disse, é chatinho, e tem que fazer bastante testes para conseguir chegar um resultado ideal, e além disso tem que ligar a máquina e verificar em cada etapa a variação de watts dela.

7 curtidas

Seria interessante aproveitar o sensor de fluxo de água (que já está mensurando o consumo de água específico da máquina) para auxiliar na percepção de qual estágio a máquina está realizando.

Eu não tenho sensor de fluxo de água, mas é uma boa ideia. Como vou morar em apartamento e já vi que é inviável colocar um sensor para o apartamento inteiro, pelo menos na máquina de lavar seja viável.

1 curtida

Oi Douglas, dúvida de iniciante. Sua maquina é smart? Ou pelo que entendi vc esta monitorando através do consumo de energia? Outra dúvida se é com o consumo de energia, o que vc esta usando pra monitorar?

Obrigado

Não é smart. Sim, pelo consumo de energia. Uso o Sonoff Pow R2.

Casa vez mais me surpreendo com o poder do HA, os componentes, integrações e imaginação da comunidade para resolver os problemas de domótica :clap:t3::clap:t3::clap:t3:

Caramba, e eu aqui quebrando a cabeça com a placa controladora para ler os leds de alerta de cada serviço e vocês vem com essa de POW R2. Já comprei até sensor de vibração para monitorar a vibração da maquina de acordo com o serviço…

Vou largar tudo e POW R2 :partying_face: :nerd_face:

2 curtidas

Ola Sou novo no assunto mas cada dia cada relato que vejo me apaixono cada vez mais
Parabéns pelos projetos
Como e ótimo ler seus relatos e viajar na imaginação do que e possível fazer

Caros, aproveitando o post e a ideia sensacional.
@douglas no HA, vc mostra o status da maquina, por meio da potencia de cada percurso isso? a ideia dessa integração é no sentido de mostrar o status da maquina certo?

Sim, é isso mesmo. Baseado no consumo atual.

Obrigado @douglas! Ainda persiste a indicação do Sonoff pow para essa ideia?

Se sim, seria o pow r2 ou o pow apenas ?

@douglas precisa por tasmota para pegar os dados ?

Boa tarde, da para integrar a máquina de lavar electrolux Wi-Fi modelo LWI13 ?

1 curtida

Eu faria de uma forma diferente, usaria 1 Shelly i4 para ler diretamente a corrente enviada aos equipamentos.

Por exemplo:
Bobina 1 da válvula d’água = enchendo lavar
Bobina 2 da válvula d’água = enchendo enxaguar
Bomba d’água = centrifugando
Motor = lavando

A ideia do @steniofilho também é boa, dá para usar um esp e ler os leds do painel.

Larga não irmão rsrsrs
Implementa essa parada ai com ESP…
Tenho uma placa largada aqui mas não entendo muito rsrsrsrsrs

Oi @douglas, muito bem explicado. Eu fiz algo parecido para a minha máquina de lavar. Estou buscando uma maneira de mostrar um TIMER para a duração da lavagem que começa quando a máquina começa a lavar e zera quando desliga. Tem alguma ideia de como fazer?

Fala pessoal…

Não sei se ainda terá validade, principalmente depois de tanto tempo, mas vai minha contribuição…
basta colocar o código dentro do template.yaml

sensor:
  - name: Washing Machine Status
    unique_id: sensor.washing_machine_status
    state: >
      {% if is_state('switch.washing_machine', 'off') %}
        Desligada
      {% elif states('sensor.washing_machine_power')|float > 500 %}
        Centrifugando
      {% elif states('sensor.washing_machine_power')|float > 150 %}
        Lavando Quente
      {% elif states('sensor.washing_machine_power')|float > 100 %}
        Lavando Morno
      {% elif states('sensor.washing_machine_power')|float > 20 %}
        Lavando Frio
      {% elif states('sensor.washing_machine_power')|float > 9 %}
        Enchendo/Secando
      {% else %}
        Standby
      {% endif %}

Estou usando um Smart Plug ZB da Zemismart com Z2M e está funcionando super de boa. Tenho isso para vários outros eletrodomésticos aqui também.

E aqui deixo também um card para exemplo da integração (com animação)

type: custom:mushroom-entity-card
entity: sensor.washing_machine_status
fill_container: true
primary_info: state
secondary_info: none
layout: vertical
card_mod:
  style:
    mushroom-shape-icon$: |
      ha-icon, .shape {
        --shape-color: none;
        --icon-symbol-size: 55px;
        {% if is_state('switch.washing_machine','on') %}
          --icon-color: rgb(var(--rgb-amber));
        {% endif %}
        {% if (states('sensor.washing_machine_power')|float > 500) %}
          --icon-animation: shake 400ms ease-in-out infinite, drum 1.5s ease infinite;
            transform-origin: 50% 110%;
          --icon-color: rgb(var(--rgb-red));
        {% endif %}
        {% if (states('sensor.washing_machine_power')|float > 20) %}
          --icon-animation: shake 800ms ease-in-out infinite, drum 3s ease infinite;
            transform-origin: 50% 110%;
          --icon-color: rgb(var(--rgb-orange));
        {% endif %}
        {% if (states('sensor.washing_machine_power')|float > 9) %}
          --icon-animation: drum 3s ease infinite;
            transform-origin: 50% 110%;
          --icon-color: rgb(var(--rgb-amber));
        {% endif %}
      }
      @keyframes drum {
        50%  { clip-path: polygon(0 0, 0 100%, 35% 100%, 34% 68%, 60% 41%, 71% 56%, 65% 74%, 47% 79%, 32% 69%, 35% 100%, 100% 100%, 100% 0); }
      }
      @keyframes shake {
        0%, 100% { transform: translate(0, 0) rotate(0); }
        20%  { transform: translate(0.4px, -0.4px) rotate(-4deg); }
        40%  { transform: translate(-0.4px, 0.4px) rotate(4deg); }
        60%  { transform: translate(0.4px, 0.4px) rotate(-4deg); }
        80%  { transform: translate(-0.4px, -0.4px) rotate(4deg); }
      }

Em tempo: simplifiquei as etapas para ser mais rápido, pois na verdade, o que me interessa é apenas saber se ela está funcionando.

Forte abraço

Show, eu comecei hj a fazer uma integração para a minha máquina de lavar.
Vou instalar na maquina um Esp e fazer a leitura dos leds para saber em qual status e programa ela está sendo usada.

No painel possui um conjunto de 8 leds, cada um deles informa um status atual da lavagem e algumas condições específicas (molho longo, enxágue extra, turbo, etc).

Ao escolher cada um dos programas da máquina, um conjunto específico de leds é acionado, indicando assim qual programa foi escolhido.

Vai ser um desafio programar tudo isso, mas no final acredito que ficará muito bom.

1 curtida

Certamente ficará top demais, mas no meu caso não funcionaria, pois tanto a lavadora de roupas quanto a de pratos é toda touch, apesar de não serem IoT, então não tenho LEDs para ler, apenas um display com todas as infos.

Mas se tivesse como, acharia bem melhor e mais confiável que apenas criando sensores baseado no consumo, pois como relatei, tenho vários programas na máquina que consomem os mesmos W