Como tornar um desumidificador inteligente com sensor de temperatura e humidade – versão 2

Tema

O tema do projeto, como indica o título, é converter um desumidificador “Burro”, num desumidificador inteligente.

Vídeo no youtube com o funcionamento do desumidificador:

Resumo

O que me levou a criar este projeto foi a necessidade de poder controlar remotamente o meu desumidificador e monitorizar o mesmo; ou seja, ligá-lo e desligá-lo, saber o estado do tanque e adicionar um feature que não tinha (obter a temperatura e nível de humidade da divisão onde ele se encontra). Pretendia também que fossem enviadas alertas quando este fosse ligado, desligado ou o tanque estivesse cheio.

A vontade de desenvolver este projeto partiu também do facto do meu apartamento ser bastante húmido e necessitar de algum dispositivo que vá controlando a humidade do ar, sendo que não queria investir num inteligente, pois já tinha um desumidificador.

Também foi um desafio que me levou a testar os meus conhecimentos e adquirir novas competências na área da eletrónica, que eram muito básicas e limitadas e por isso tornaram este projeto mais difícil, mas ao mesmo tempo aliciante.

Este projeto foi baseado num tópico já criado por @ricreis394 em https://forum.cpha.pt/t/como-eu-iotizei-um-desumidificador/1486em que ele utilizou os optoacopladores 4n25, tentando saber o estado do desumidificador através da placa assim como os estados do led do menu.

Tal como o próprio comentou “A minha ideia inicial era ler os leds e controlar os botões do painel de controlo.” mas “A coisa começou a complicar-se quando tentava ligar o opto em paralelo ao LED, o 4N25 precisa de voltagem e acabava por não funcionar nem o led nem o opto”.

Tentou, portanto, usar LDRs para saber o estado dos LEDs, “tentativa falhada”, e a solução por ele encontrada foi: “ler o estado diretamente dos componentes” (do desumidificador).

Inicialmente e após alguma pesquisa / perguntas no fórum, foi-me proposto utilizar o projeto da página https://www.hackster.io/zvonko-bockaj/wemos-esp8266-remote-pc-switch-062c7a que consistia em ligar / desligar um pc remotamente com um wemos.

Para isto, bastava utilizar transístor e resistências, dai ter tentado adaptar esse projeto para o meu desumidificador inteligente utilizando apenas transístores e resistências, para este ligar e desligar.

Sobre este assunto, podem encontrar mais informações no seguinte tópico que me inspirou:

Como tornar um desumidificador inteligente?

A minha grande dor de cabeça concentrou-se no mesmo problema que o @ricreis394 : “A coisa começou a complicar-se quando tentava ligar o opto em paralelo ao LED, o 4N25 precisa de voltagem e acabava por não funcionar nem o led nem o opto”.

Aconteceu-me o mesmo, ou seja, com os led’s e transístores só conseguia ligar e desligar o desumidificador; a partir do momento em que tentava colocar a funcionar o circuito implementando, o circuito do power led, simplesmente deixava de funcionar e / ou o estado do tanque cheio, deixava de funcionar.

Então, após muitas tentativas e seguindo a sugestão do @Maddoctor, resolvi alterar todo o circuito para utilizar os optoacopladores (4n25).

Começa aí o meu novo projeto, a segunda parte da odisseia: a de colocar tudo a funcionar com optoacopladores.

Consegui com os 4n25, ligar e desligar o desumidificador e ler os estados dos led’s, através do painel principal do botão on / off e estado dos Led (verde para o power e vermelho quando o tanque do desumidificador está cheio).

Isto é, utilizar três Optoacopladores, cada um deles para saber cada um dos estados.

O primeiro Octo para ligar / desligar, um segundo Octo para saber o estado do power Led e o terceiro Octo para saber o estado do tanque, cheio ou ok.

Descrição

Como referido no tema, utilizei três opto acopladores, para ler cada estado do desumidificador.

Um opto acoplador é um dispositivo de emissão e receção que funciona como um interruptor, ativado através de uma luz (díodo emissor de infravermelho) que satura e faz conduzir um foto-transístor, fazendo com que o coletor do transístor faça passagem ao emissor (à terra GND), sendo que cada um dos dois circuitos são independentes (input e output), e não tem nada em comum em ambos.

Assim sendo, o opto acoplador permite evitar completamente o contato elétrico entre o circuito a controlar e o circuito controlado.

Google Photos

O pino 1 do Octo é o ânodo, ou seja, o positivo; o pino 2 é o cátodo, ou seja, o negativo do díodo. O pino 5 é o coletor do transístor, ou seja, o positivo da carga a controlar. Por sua vez, o pino 4 é o emissor que normalmente é o “ground” da carga a controlar.

Todos os optoacopladores tem dois lados: o lado da entrada (input) e o lado da saída (Output), onde um será o que controla o circuito (input) e o outro o circuito controlado (output).

Dessa forma, o lado que vai controlar o funcionamento do outro circuito será o lado da entrada (que é geralmente o lado conectado a um wemos, Arduíno, etc), isto porque, com este lado conectado ao wemos, podemos assim controlar o led que está localizado dentro do chip (foto díodo).

Quando fazemos passar corrente por esse led interno do chip, ele acende. Ao acender nós não conseguimos ver, mas a outra parte do chip irá detetar essa luz, e assim permitir que passe corrente no circuito localizado no lado da saída, fazendo com que o mesmo funcione.

Para o lado da entrada (input do Octo, onde está localizado o díodo), terá sempre de ser utilizado uma resistência no circuito antes, para que o díodo (led), não queime.

Para isso necessitamos de saber vários valores e realizar cálculos baseados na lei de ohm.

No caso do segundo Octo, o do power led, e o do led para o tanque cheio, o lado da entrada (input) é o lado que está ligado aos leds do desumidificador, pois são eles que vão ativar o led interno do Octo fazendo ativar o circuito do wemos, com isto conseguimos saber o estado do mesmo: on ou off (através de 0 v para low ou 3 v para high).

Sendo que os led’s do desumidificador serão o circuito que queremos controlar e o lado do wemos mini o circuito que será controlado (neste caso informado se o led estará on ou off).

Para o Octo do Circuito do power será o contrário, ou seja, o circuito que queremos controlar (input) será o wemos (neste caso dar o comando de ligar ou desligar). Mandar um sinal, estado high 3v para ligar e o estado low caso esteja desligado 0 v.
O lado do circuito a ser controlado (output) será o switch do desumidificador, que irá ligar e desligar.

Por exemplo:

  • Para realizar o cálculo da resistência para o Octo do botão do power, utilizamos os seguintes cálculos:

Sabemos que o wemos nos pinos, nos fornecem 3 v, que será a voltagem de entrada no Octo, ou seja, para calcularmos a resistência em Ohm a colocar antes do Octo, faz-se a voltagem de entrada (3 V) – 1.3 V (que é a voltagem recomendada a passar no Led para que conduza - Forward voltage Type (ver Datasheet 4n25)) = Voltagem da resistência (1.7v)

Então a resistência do led do Octo será calculada pela lei de Ohm:
R = V / I = (3 – 1.3 v) / I(F) 50 mA ou seja 1.7 / 0,050 = 34 Ohm valor mínimo da resistência para que não queime.

O I(F) é sempre de 50 mA (0,050 A) que é da corrente máxima do led do Octo (Datasheet 4n25)

Google Photos

Forward voltage TYP → isto é a tensão recomendada, que o led deve ter, caso este valor seja ultrapassado, estamos a colocar o led em stresse, este deve ser o valor utilizado.

FORWARD CURRENT I(F) → É o máximo de corrente que o led aguenta. A Forward Voltage Type é feita no teste com o Forward Current (I(F) = 50 mA, dai ser este utilizado no cálculo.

Google Photos

Para mais segurança e como não tinha uma resistência do mesmo valor, utilizei no meu projeto uma resistência de 47 Ohm, para o Octo do botão do Power.

Para os outros dois Octos foi utilizar a mesma fórmula e aplicar a lei de Ohm alterando para os valores correspondentes.

Datasheet do Octo 4n25: https://www.vishay.com/docs/83725/4n25.pdf

Para que o ligar / desligar do desumidificador, funcione, através do wemos, o ground, do wemos e do desumidificador têm de ser os mesmos (ou seja, tem de ser comuns e ter contacto com todo o circuito desde o wemos até ao desumidificador).

Foto:

  • (Fotos)

Esquema elétrico do circuito do desumidificador com os optoacopladores e o sensor de humidade e temperatura, para a construção do projeto:

Google Photos

Fotos da ligação do wemos e montagem no desumidificador:

  • Montagem do circuito, os Octo soldados na board:

Google Photos

  • Circuito de alimentação do wemos no desumidificador:

Google Photos

Soldei as pontas do transformador, na fase e neutro do desumidificador, e coloquei um cabo microusb, para alimentar o wemos d1.

  • Placa montada no desumidificador:

Google Photos

  • Ligações do conector da board dos leds (placa de cima), à placa principal do desumidificador

Google Photos

  • Soldas e montagem do wemos d1 mini no desumidificador:

Google Photos

  • Wemos já com a resistência do DTH11 (soldada – sensor de temperatura e humidade)

Google Photos

Tudo montado no desumidificador:

Google Photos

Antes de arrumar e fechar o desumidificador:

Google Photos

Aspeto final com cabos minimamente arrumados:

Google Photos

Desumidificador com as tampas / aspeto final:

Google Photos

Para a realização deste projeto decidi utilizar o Wemos d1 mini porque é baseado num esp32, e tem vários pins de input e output, que podem ser configurados / programados, com a grande vantagem de ser de tamanho reduzido.

Google Photos

Para não gastar tempo a programar e dado que já existem várias soluções open source, que já permitem fazer praticamente tudo sem ter que o programar, utilizei o software tasmota: https://github.com/arendst/Tasmota

Como flashar o wemos d1 mini:

Após a configuração da rede ssid, aceder ao ip do tasmota e configurar o módulo para genérico:

Google Photos

Fazer as seguintes alterações nos pinos:

  • O relay 1 do pin d6 é o que ira fazer ligar e desligar o desumidificador

  • O switch 1 do pino d2 é o pino através do qual iremos saber se o led do power está aceso ou desligado, ou seja, se o desumidificador está ligado / desligado

  • O switch 2 do pino d1 é o pino através do qual vamos saber se o led vermelho do tanque esta aceso (tanque cheio) ou desligado.

  • O DTH11 é configurado no pin d5; será através dele que iremos saber a temperatura e humidade do sensor.

  • (Código)

Em seguida vamos à consola e damos os seguintes comandos:

pulsetime1 10

SwitchMode1 2

Setoption73 1

Seriallog 0

weblog 2

switchmode 2

Rule1 on switch1#state do publish2 %topic%/stat/POWER_LED %value% endon
#Esta regra publica o estado como 1 ou 0

rule1 1

para o led vermelho tanque cheio:

switchmode2 2

Rule2 on switch2#state do publish2 %topic%/stat/TANQ_CHEIO_LED %value% endon

rule2 1

backlog TimeZone 99; TimeDST 0,0,3,1,1,60; TimeSTD 0,0,10,1,2,0; IPAddress4 8.8.8.8;

powerretain 1

O comando pulse time1 10 faz com que o botão do power seja de pressão, ou seja o botão do rele 1, seja pressionado apenas 1 segundo (10 milissegundos), simulando o pressionar físico do botão do power no desumidificador.

O SwitchMode serve para alterar o comportamento de um periférico de entrada física no GPIO do wemos, onde o 1 é o número do switch da configuração do GPIO no tasmota e o 2 serve para inverter o modo de atuar do switch ou seja 0 = On e 1 = OFF).

Assim sendo, quando o switch estiver ligado o relay estará desligado. Quando o output do octo esta a 0 V (a terra) o led do power está ligado, ficando com o estado 1 e desligado com 3 v, com estado 0.

Setoption73 1: desliga a associação direta dos botões aos relés

Weblog 2 : para o led verde detetar que o botão do power esta ligado

Rule1 on switch1#state do publish2 %topic%/stat/POWER_LED %value% endon → Utiliza-se esta regra para enviar o estado do power led por mqtt

rule1 1 → para ativar a regra.

backlog TimeZone 99; TimeDST 0,0,3,1,1,60; TimeSTD 0,0,10,1,2,0; IPAddress4 8.8.8.8;

O comando de backlog serve para o Timezone 99; é o de Portugal Continental, para assegurar a mudança de hora de Verão e Inverno e para atualizar a hora automaticamente na consola.

O IPAddress4 define o DNS (8.8.8.8 é da Google) e serve para resolver o NS ao servidor de NTP.

Powerretain 1 - Em caso de falha de luz elétrica, guarda o estado dos botões / switch no tasmota (se ligado / desligado)

Após estas configurações na consola, ir ao menu principal e aceder a configuração Other e dar o nome que queremos que apareça no tasmota, no meu caso (device name, desumidificador), e ativar a opção Emulation, Belkin WeMo single device, para que a Alexa consiga ligar e desligar o desumidificador.

Google Photos

Em seguida, voltar as configurações e colocar as configurações do nosso mqtt:

Google Photos

Configurações no Home Assistant:

- (**Configuração**)

Na pasta Packages:

Criar ficheiro desumidificador.yaml com o seguinte conteúdo:

# customização de entidades:

homeassistant:  
  customize:
    switch.desumidificador:
      friendly_name: "Ligar/Desligar"
      icon: "mdi:page-layout-footer"

switch:   #tomada:

- platform: mqtt   # switch wemos d1 mini desumidificador ligar /desligar:
    name: "desumidificador" 
    state_topic: "desumidificador/stat/POWER" 
    command_topic: "desumidificador/cmnd/POWER" 
    payload_on: "ON" 
    payload_off: "OFF" 
    retain: false # para que não vá buscar estados anteriores 

  
  - platform: mqtt             #switch wemos d1 desumidificador estado led Power (verde ligado 1)
    name: "estado_led_power"
    command_topic: "desumidificador/cmnd/Switch1"
    payload_on: "1"
    payload_off: "0"
    availability_topic: "desumidificador/tele/LWT"
    payload_available: "Online"     # se esta ligado ou desligado
    payload_not_available: "Offline"
    state_topic: "desumidificador/stat/POWER_LED"
    qos: 1
    retain: false # para que nao va buscar estados anteriores


  - platform: mqtt             #wemos d1 desumidificador estado do tanque
    name: "estado_tanque_desudimidificador"
    command_topic: "desumidificador/cmnd/Switch2"
    payload_on: "1"
    payload_off: "0"
    availability_topic: "desumidificador/tele/LWT"
    payload_available: "Online"     # se esta ligado ou desligado
    payload_not_available: "Offline"
    state_topic: "desumidificador/stat/TANQ_CHEIO_LED"
    qos: 1
    retain: false # para que não vá buscar estados anteriores

sensor:          ### SENSORES

# Wemos D1 mini sensor temperatura:
 
  - platform: mqtt
    state_topic: 'desumidificador/tele/SENSOR'
    name: 'Temperature sala desumidificador wemos'
    unit_of_measurement: '°C'
    value_template: '{{ value_json.DHT11.Temperature }}'
  - platform: mqtt
    state_topic: 'desumidificador/tele/SENSOR'
    name: 'Humidity sala desumidificador wemos'
    unit_of_measurement: '%'
    value_template: '{{ value_json.DHT11.Humidity }}'

#  template do sensor para o estado do power led, para alterar o valor de 0 e 1 para ligado ou desligado

  - platform: template
    sensors:
      estado_power_led:
        #friendly_name: "Led do power"
        friendly_name: "O Desumidificador está:"
        value_template: >
          {% if is_state('switch.estado_led_power', 'on') %}
            Ligado
          {% elif is_state('switch.estado_led_power', 'off') %}
            Desligado
          {% else %}
            Indisponível
          {% endif %}
        icon_template: >
          {% if is_state('switch.estado_led_power', 'on') %}
            mdi:led-on
          {% elif is_state('switch.estado_led_power', 'off') %}
            mdi:power-plug-off
          {% else %}
            mdi:alert
          {% endif %}


#  template do sensor para o tanque cheio, para alterar o valor de 0 e 1 para cheio ou vazio

  - platform: template
    sensors:
      estado_tanque_desudimidificador:
        friendly_name: "Estado do Tanque"
        value_template: >
          {% if is_state('switch.estado_tanque_desudimidificador', 'on') %}
            Cheio
          {% elif is_state('switch.estado_tanque_desudimidificador', 'off') %}
            OK
          {% else %}
            Indisponível
          {% endif %}
        icon_template: >
          {% if is_state('switch.estado_tanque_desudimidificador', 'on') %}
            mdi:cup-water
          {% elif is_state('switch.estado_tanque_desudimidificador', 'off') %}
            mdi:cup-off
          {% else %}
            mdi:alert
          {% endif %}

  • Adicionar no FrontEnd do Lovelace do Home Assistant:

    O seguinte código na entities Card:

entities:
  - entity: switch.desumidificador
  - entity: sensor.estado_power_led
  - entity: sensor.estado_tanque_desudimidificador
  - entity: sensor.temperature_sala_desumidificador_wemos
  - entity: sensor.humidity_sala_desumidificador_wemos
  - entity: switch.tz3000_g5xawfcq_ts0121_on_off
  - entity: sensor.tz3000_g5xawfcq_ts0121_electrical_measurement
show_header_toggle: false
title: Desumidificador
type: entities
state_color: true

Imagens no Front End do Home Assistant:

Desumidificador Ligado:

Google Photos

Desumidificador Desligado:

Google Photos

Desumidificador com o Tanque Cheio:

Google Photos

Desumidificador Indisponível:

Google Photos

Automações ligadas ao desumidificador:

  • Ao ligar o desumidificar envia notificação whatsApp / Telegram:
- id: '1599939490794'
  alias: Ao ligar o desumidificar envia notificação whatsApp / Telegram
  description: ''
  trigger:
  - entity_id: sensor.estado_power_led
    from: Desligado
    platform: state
    to: Ligado
  - entity_id: sensor.estado_power_led
    from: Indisponível
    platform: state
    to: Ligado
  condition: []
  action:
  - data:
      message: https://api.callmebot.com/whatsapp.php?phone=+35191xxxxxx&text=Desumidificador+Ligado.&apikey=xxxxxx
    service: notify.whatsapp
  - service: notify.whatsapp
    data:
      message: https://api.callmebot.com/whatsapp.php?phone=+35193xxxxx&text=Desumidificador+Ligado.&apikey=xxxxx
  - service: notify.geraltelegram
    data:
      message: Desumidificador Ligado.

Foto da notificação no WhatsApp:

Google Photos

Envia notificações para WhatsApp para dois números de telemóveis, e para dois telemóveis com o telegram, com a mesma conta.

Para que estas notificações funcionem, deve-se adicionar o seguinte código no ficheiro configuration.yaml:

telegram_bot:       ############# TELEGRAM BOT
  - platform: polling
    api_key: !secret telegramAPItoken    #meu bot
    allowed_chat_ids:
      - !secret telegram_chat_id_number #yourchatIDnumber
      - !secret telegram_chat_id_number_cris

notify:   #notificaçoes:

  - name: WhatsApp   #enviar sms via whatupp
    platform: command_line
    command: 'wget $(cat) -O /dev/null'

- platform: telegram       #   TELEGRAM
    name: telegram #!secret telegram_user_name  //mandar mensagem só para o meu telegram
    chat_id: !secret telegram_chat_id_number #telegram_user_id
  
  - platform: telegram      #   TELEGRAM cris  /mandar mensagens só para o telegrama da cris
    name: telegramcris #!secret telegram_user_name 
    chat_id: !secret telegram_chat_id_number_cris #telegram_user_id

  - name: geraltelegram     # para mandar serviçe: notify.geraltelegram mandar mensagem para os dois telegrams meu e da cris
    platform: group
    services:
      - service: telegram
      - service: telegramcris
  • Ao desligar o desumidificar envia notificação WhatsApp / Telegram
- id: '1599939910954'
  alias: Ao desligar o desumidificar envia notificação WhatsApp / Telegram
  description: ''
  trigger:
  - entity_id: sensor.estado_power_led
    from: Ligado
    platform: state
    to: Desligado
  condition: []
  action:
  - data:
      message: https://api.callmebot.com/whatsapp.php?phone=+351919370635&text=Desumidificador+Desligado.&apikey=224426
        hora=sensor.time
    service: notify.whatsapp
  - service: notify.whatsapp
    data:
      message: https://api.callmebot.com/whatsapp.php?phone=+351914977838&text=Desumidificador+Desligado.&apikey=470798
  - service: notify.geraltelegram
    data:
      message: Desumidificador Desligado.
  mode: single

Foto da notificação no telegram:

Google Photos

  • Se o tanque do desumidificar estiver cheio envia SMS para dois números de telemóveis
- id: '1608770107636'
  alias: Se o tanque do desumidificar estiver cheio envia sms para 2 telemóveis 
  description: ''
  trigger:
  - platform: state
    entity_id: sensor.estado_tanque_desudimidificador
    from: OK
    to: Cheio
  - platform: state
    entity_id: sensor.estado_tanque_desudimidificador
    to: Cheio
    from: Indisponível
  condition: []
  action:
  - service: notify.clicksend
    data:
      message: TANQUE DO DESUMIDIFICADOR CHEIO, POR FAVOR DESPEJE O TANQUE ;)
  mode: single

Para esta automação utilizei a plataforma Clicksend para enviar SMS grátis para dois números de telemóvel (configuração no config.yaml).

Fotos do resultado do SMS enviado:

Google Photos

notify:   #notificaçoes:
- platform: clicksend  # enviar sms gratis da clicksend
    name: clickSend
    username: !secret email_clicksend
    api_key: !secret api_clicksend
    recipient: [+35191xxxxxx, +35193xxxxxx]
    sender: "Henrique"
  • Se o tanque do desumidificar estiver cheio envia notificação WhatsApp / Telegram e Alexa
- id: '1599935539188'
  alias: Se o tanque do desumidificar estiver cheio envia notificação WhatsApp / Telegram e a ALEXA
  description: ''
  trigger:
  - entity_id: sensor.estado_tanque_desudimidificador
    from: OK
    platform: state
    to: Cheio
  - entity_id: sensor.estado_tanque_desudimidificador
    from: Indisponível
    platform: state
    to: Cheio
  condition: []
  action:
  - data:
      message: https://api.callmebot.com/whatsapp.php?phone=+35191xxxxxx&text=TANQUE+DO+DESUMIDIFICADOR+CHEIO,+POR+FAVOR+DESPEJE+O+TANQUE.&apikey=xxxx
    service: notify.whatsapp
  - service: media_player.volume_set
    data:
      volume_level: '0.9'
    entity_id: media_player.henrique_s_echo_dot
  - delay: '5'
  - data_template:
      data:
        type: announce
      message: <voice name='Ines'><lang xml:lang='pt-PT'><amazon:auto-breaths frequency='high'
        volume='soft' duration='x-short'> O Tanque do Desumidificador está Cheio!
        Por favor despeje o tanque. Desumidificador Desligado.  </amazon:auto-breaths></lang></voice>
      target: media_player.henrique_s_echo_dot
    service: notify.alexa_media_henrique_s_echo_dot
  - service: notify.whatsapp
    data:
      message: https://api.callmebot.com/whatsapp.php?phone=+35191xxxxx&text=TANQUE+DO+DESUMIDIFICADOR+CHEIO,+POR+FAVOR+DESPEJE+O+TANQUE.&apikey=xxxx
  - service: notify.twilio_sms
    data:
      data:
        delay: 1
        loop: 2
        voice: alice
        language: pt-PT
        speed: slow
      message: Tanque Cheio! Por favor esvazie a água. OFF. Terminado. Obrigado!
      target:
      - 35191xxxxxxx
  - service: notify.geraltelegram
    data:
      message: O Tanque do Desumidificador está cheio! Por favor despeje o tanque.
        Desumidificador Desligado.
  mode: single

Nesta automação utilizei também a Alexa para dizer que o tanque está cheio e a plataforma twilio, que faz uma chamada para o telemóvel a dizer que o tanque está cheio.

Configuração do ficheiro configuração.yaml:

twilio:
  account_sid: !secret twilio_account_sid
  auth_token: !secret twilio_auth_token

alexa_media:
  accounts:
    - email: !secret email_alexa_amaz
      password: !secret password_alexa
      url: amazon.com

- platform: alexa_media  # tts da alexa
    name: alexa_media

Notify:
- name: twilio_sms      #   twilio  sms
    platform: twilio_call
    from_number: +140872xxxx #Atenção, este número é o número
    #obtido na conta Twilio, e não do nosso telemóvel.
  • Se desumidificador chegar a baixo dos 50 % humidade desliga
- id: '1612818187332'
  alias: Se desumidificador chegar a baixo dos 48 % humidade desliga
  description: ''
  trigger:
  - platform: time_pattern
    minutes: /5
    seconds: '1'
  condition:
  - condition: and
    conditions:
    - condition: template
      value_template: '{% if states(''sensor.humidity_sala_desumidificador_wemos'')
        | int <= 50 %} true {% else %} false {% endif %}

        '
  - condition: and
    conditions:
    - condition: state
      entity_id: sensor.estado_power_led
      state: Ligado
  action:
  - service: switch.toggle
    entity_id: switch.desumidificador
  - service: notify.geraltelegram
    data:
      title: Desumidificador abaixo de 50 % humidade.
      message: desumidificador abaixo dos 50 % de humidade, desumidificador desligado!
  mode: single

Foto enviada para o telegram quando o nível de humidade do desumidificador está abaixo dos 50% :

Google Photos

Dificuldades sentidas na realização do projeto:

Tal como referido no tema, um dos grandes problemas que enfrentei surgiu durante os testes com a breadboard. O circuito do power funcionava, mas após colocar os outros optoacopladores, o mesmo deixava de funcionar.

Um dos meus grandes erros que me «roubou» bastante tempo e deu origem a várias tentativas foi utilizar jumper wires na breadboard de má qualidade. Que ao fim de algum tempo partiam por dentro, alterando a resistência do circuito ao ground ou mesmo interrompendo o circuito, fazendo com que o circuito deixasse de funcionar, e ficando assim sem saber o porquê.

Tive de perder muito tempo a fazer novamente e várias vezes todas as medições de voltagem. Até que, após «partir muita pedra», descobri onde estava a falha.

Foto do erro:

Google Photos

Outro erro que estava a cometer era que, no final de todo o circuito feito e testado na breadboard, parti para a solda do mesmo numa placa. Aí deparei-me novamente com grandes dificuldades, pois após soldar tudo e na parte dos testes deixava de funcionar novamente o circuito, sem que eu percebesse o porquê.

Mais tarde e após variadas tentativas e soldas na placa, soldando novamente todos os componentes de diferentes formas, descobri que era a própria eletricidade estática que estava a chegar ao 4n25 do botão do power e estava a fazer com que o relé «colasse» e «descolasse» rapidamente, de forma errática; é o chamado efeito de ghost switch.

Google Photos

Google Photos

Outra das dificuldades sentida foi tentar proteger todos os componentes soldados na board, ou seja, qual a melhor forma de colocar a placa dentro do desumidificador, dado que a mesma ficava perto do radiador e de componentes com humidade e água.

Pensei que se colocasse cola quente por cima dos mesmos, caso houvesse alguma humidade ou mesmo água, estes estariam protegidos, evitando assim um eventual curto-circuito.

Mas após este procedimento, o circuito deixava de funcionar novamente e, só após, muitas medições e «partir muita pedra», é que percebi que não poderia colocar cola quente pois a mesma para além de sair muito quente, isolava o circuito e componentes da temperatura e ambiente (ar) externo, alterando as suas propriedades de funcionamento.

Google Photos

Google Photos

Google Photos

Outra das dificuldades foi devida aos leds do desumidificador partilharem a parte positiva da pista entre os leds do power e o led do tanque cheio.

Isto fazia com que os leds no desumidificador não funcionassem. Consegui ultrapassar esta parte com a colocação de duas resistências de 150 ohm antes dos optoacopladores.

Lista de Material

2 Curtiram

Muito engraçado este projecto. Acho que vou fazer algo de similar com um aquecedor de parafina.

O meu desumidificador mantém-se em funcionamento após quebra de energia, portanto optei por uma tomada com medição de consumo (no meu caso uma Tapo P110) a fim de detectar quando é que está só o ventilador a funcionar (consumo 45W) ou está a desumidificar (235W) e um sensor de humidade externo, colocado noutro lado da sala. Isso permite-me saber quando o balde de água está cheio, e o sensor de “estar em casa” leva-me a concluir que esvasiei o balde (senão lá vêm novos alertas).

Já quanto ao aquecedor de parafina não liga após um “power recycle” e pode dar outro tipo de alarmes, pelo que este projecto me pode ser muito útil.

1 Curtiu

Boa noite.
Acho o projecto espectacular, principalmente para aprender, parabéns ao autor!
Eu sou muito leigo em electrónica, e acabei por fazer tudo com uma tomada inteligente e um sensor de humidade/temperatura.
Basicamente, ligo o desumificador durante o dia, se tenho energia de sobra e humidade acima de 55% (tenho painéis solares) e durante a noite apenas se chegar a mais de 70% de humidade, para aproveitar o horário económico da electricidade.
Para detectar se o desumificador está cheio, para mim é muito simples: se estiver a funcionar mais de 5 min sem consumir mais de 5W, está cheio, não falha. Tenho automações para me avisar logo (telemóvel se estivermos fora, nas colunas inteligentes se estivermos em casa e acordados e apenas nas divisões em que estiver alguém, para o desligar até a situação estar resolvida, para me relembrar à chegada a casa caso não esteja ninguém na altura, etc… Como também tenho um sensor de movimento perto, a primeira vez que alguém chega perto, volta a avisar no Google Home, e assume que a pessoa que lá foi o esvazia, e faz reset ao estado. Se por acaso não esvaziar, quando ele tentar ligar não vai consumir à mesma, e volta o alerta.
Tenho a coisa bastante perfeita para mim :blush:, está “no ponto” e não peço mais com o esforço e investimento que tive. Mas qualquer dia meto-me numa destas, e estes tutoriais são brutais, não só para o caso específico, mas mesmo para aprender, vejo utilidade em breve no meu caso, em outras ideias que tenho! Parabéns!!!

1 Curtiu

…essa é a diferença entre os makers e os plug and play … da-nos pica fazer, soldar, errar, queimar e no fim funcionar a nossa medida. :grin:

2 Curtiram

Compreendo claramente. Também gostava, e está nos meus planos aprofundar os meus conhecimentos nessa área (par não dizer iniciar). Por enquanto considero este meu “sistema” perto de perfeito, e não foi bem PnP para mim, pois tinha acabado de iniciar com o HA, um mundo gigantesco completamente novo para mim, do qual nada sabia. Usei o que tinha e adicionei uns quantos “saberes” ao meu portfólio mental para conseguir o que queria. Claramente, neste momento, sou mais de software do que hardware, um dia em breve vou ter de ir por aí, e mim deu-me essa pica fazer o mesmo em software :slight_smile:. Analisei, errei, esperimentei, medi, pesquisei e aprendi. Por isso mais uma vez agradeço o teu trabalho que, espero, algum dia consiga compreender melhor e ir por esse lado, pois não é de todo a minha formação.

1 Curtiu

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


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