Sensor de Corrente e Tensão Ac 127v/220v para Esp8266 e Esp32

esphome

Nesse tutorial você aprenderá a utilizar o Sensor de Tensão AC 127/220V no EspHome para detectar se uma carga em rede alternada está ligada ou desligada.

O sensor/detector de Tensão AC 127/220V é comumente utilizado em projetos de automação residencial, onde é necessário fazer a verificação de status de saídas, tais como lâmpadas ou motores.

Um exemplo de utilização:

  • Suponha que você tenha um relê. Quando o relê é ativado no Home Assistant, o estado dele fica “On” e quando é desativado, ele fica “Off”. Até aqui tudo normal, mas se você deseja colocar um interruptor paralelo para ligar/desligar fisicamente o relê, o estado do relê no Home Assistant não será verdadeiro, porque esta ação não passou pelo circuito do ESP.

Então, para simular e solucionar essa questão, iremos utilizar os seguintes dispositivos:

  1. Uma placa Esp8266 ou seus afiliados.
  2. Um Relê, com a opção liga/desliga (o comum/normal).
  3. Um Sensor de tensão AC 127/220V para Arduino. Link para compra do sensor ou similar: https://produto.mercadolivre.com.br/MLB-1540305326-sensor-de-tenso-ac-127v220v-para-arduino-esp8266-esp32-_JM
  • OBS: Isso ambém pode ser feito no Esp32. Para isso, ligue o sinal digital do relê numa porta digital do Esp32 e o sinal analógico do sensor de tensão numa porta analógica do Esp32 (pesquise sobre o diagrama do Esp32 e troque a porta do pin de ambos no código fonte abaixo)

Foto do sensor que utilizei (também pode ser um sensor de tensão 110/220V similar):
sensor01

Esquema da ligação do interruptor paralelo ao relê:

Esquema de ligação do sensor de tensão com a lâmpada/motor:

rele01

Note que o Sensor de Tensão AC é ligado em paralelo na lâmpada/motor. Logo, a corrente do circuito é irrelevante para o sensor.
Dessa forma, só vai existir presença de tensão quando o circuito estiver fechado através do módulo relé ou pelo interruptor paralelo.

Instalação:

Crie um novo dispositivo no ESPHome com o nome que você deseja.

Para saber mais como instalar e configurar o ESPHome no Home Assistant, veja aqui: EspHome

Realizada esta etapa, desligue o Esp8266 do cabo de programação e faça as ligações do dispositivo no Esp8266

Feito o esquema de ligação, basta carregar o código no EspHome:

sensor:
  #interruptor
  - platform: adc
    pin: A0
    name: "Interruptor OnOff"
    update_interval: 15s     

switch:
  #relê
  - platform: gpio
    pin: GPIO05
    id: lampada_teste
    name: "Lâmpada Teste"
    inverted: true    

Agora salve o código, ligue novamente o ESPHome no cabo e instale as alterações.

Após esta etapa, você poderá verificar no log do console do EspHome os valores de tensão do pino A0.

Ligue o interruptor e desligue e veja que haverá no console a mudança de tensão quando a lâmpada é acesa ou desligada.

Log do sensor:

Agora podemos no Home Assistant criar, por exemplo, uma entidade auxiliar “input_boolean” que mostre o real estado do relê. Chamaremos de “bt_motorfiltro”.

Para fazer isso, deveremos ir no menu Configurações do Home Assistant e depois em Automações/Cenas e clicar na aba superior “Entidades Auxiliares”. Clique no botão Adicionar Entidade Auxiliar, selecione o tipo “botão” e informe o nome do botão.

Agora você pode usar o Node-Red por exemplo para tratar o estado on/off desse botão auxiliar e também para acionar o relê através desse mesmo botão auxiliar.

No meu caso, utilizei para ligar/desligar o filtro da piscina num determinado horário e também caso o piscineiro precise desligar o filtro, ele terá o interruptor físico dentro da case de máquinas.

Na figura abaixo temos o fluxo no Node-Red:

Código do fluxo:

[{"id":"fb02189c0c0b2ac4","type":"tab","label":"Motor Filtro","disabled":false,"info":"","env":[]},{"id":"4391da49cd4750eb","type":"server-state-changed","z":"fb02189c0c0b2ac4","name":"Bt. Motor Filtro","server":"5e34cdb.2f12b34","version":3,"exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"entityidfilter":"input_boolean.bt_motorfiltro","entityidfiltertype":"exact","outputinitially":false,"state_type":"str","haltifstate":"on","halt_if_type":"str","halt_if_compare":"is","outputs":2,"output_only_on_state_change":true,"for":0,"forType":"num","forUnits":"minutes","ignorePrevStateNull":false,"ignorePrevStateUnknown":false,"ignorePrevStateUnavailable":false,"ignoreCurrentStateUnknown":false,"ignoreCurrentStateUnavailable":false,"outputProperties":[{"property":"payload","propertyType":"msg","value":"","valueType":"entityState"},{"property":"data","propertyType":"msg","value":"","valueType":"eventData"},{"property":"topic","propertyType":"msg","value":"","valueType":"triggerId"}],"x":120,"y":100,"wires":[["1e84d141c98fad32"],["1f7e09d7e526ecef"]]},{"id":"1e84d141c98fad32","type":"api-current-state","z":"fb02189c0c0b2ac4","name":"Sensor Tensão = 0","server":"5e34cdb.2f12b34","version":3,"outputs":2,"halt_if":"1","halt_if_type":"num","halt_if_compare":"lt","entity_id":"sensor.filtro_onoff","state_type":"num","blockInputOverrides":false,"outputProperties":[{"property":"payload","propertyType":"msg","value":"","valueType":"entityState"},{"property":"data","propertyType":"msg","value":"","valueType":"entity"}],"for":0,"forType":"num","forUnits":"minutes","override_topic":false,"state_location":"payload","override_payload":"msg","entity_location":"data","override_data":"msg","x":350,"y":60,"wires":[["f55311ea120326a2"],[]]},{"id":"b7746860a5daa817","type":"server-state-changed","z":"fb02189c0c0b2ac4","name":"Sensor Tensão = 0/1","server":"5e34cdb.2f12b34","version":3,"exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"entityidfilter":"sensor.filtro_onoff","entityidfiltertype":"exact","outputinitially":false,"state_type":"num","haltifstate":"1","halt_if_type":"num","halt_if_compare":"lt","outputs":2,"output_only_on_state_change":true,"for":0,"forType":"num","forUnits":"minutes","ignorePrevStateNull":false,"ignorePrevStateUnknown":false,"ignorePrevStateUnavailable":false,"ignoreCurrentStateUnknown":false,"ignoreCurrentStateUnavailable":false,"outputProperties":[{"property":"payload","propertyType":"msg","value":"","valueType":"entityState"},{"property":"data","propertyType":"msg","value":"","valueType":"eventData"},{"property":"topic","propertyType":"msg","value":"","valueType":"triggerId"}],"x":130,"y":380,"wires":[["5ce51a3f34dc9123"],["eed25a7139c5ec22"]]},{"id":"cc3c9451634e03c9","type":"api-call-service","z":"fb02189c0c0b2ac4","name":"Desliga Filtro","server":"5e34cdb.2f12b34","version":3,"debugenabled":false,"service_domain":"switch","service":"turn_off","entityId":"switch.motor_do_filtro","data":"","dataType":"jsonata","mergecontext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":830,"y":40,"wires":[[]]},{"id":"1f7e09d7e526ecef","type":"api-current-state","z":"fb02189c0c0b2ac4","name":"Sensor Tensão = 1","server":"5e34cdb.2f12b34","version":3,"outputs":2,"halt_if":"1","halt_if_type":"num","halt_if_compare":"gte","entity_id":"sensor.filtro_onoff","state_type":"num","blockInputOverrides":false,"outputProperties":[{"property":"payload","propertyType":"msg","value":"","valueType":"entityState"},{"property":"data","propertyType":"msg","value":"","valueType":"entity"}],"for":0,"forType":"num","forUnits":"minutes","override_topic":false,"state_location":"payload","override_payload":"msg","entity_location":"data","override_data":"msg","x":350,"y":180,"wires":[["89b5994c934c8ddd"],[]]},{"id":"5ce51a3f34dc9123","type":"api-current-state","z":"fb02189c0c0b2ac4","name":"Bt. Motor Filtro = on","server":"5e34cdb.2f12b34","version":3,"outputs":2,"halt_if":"on","halt_if_type":"str","halt_if_compare":"is","entity_id":"input_boolean.bt_motorfiltro","state_type":"str","blockInputOverrides":false,"outputProperties":[{"property":"payload","propertyType":"msg","value":"","valueType":"entityState"},{"property":"data","propertyType":"msg","value":"","valueType":"entity"}],"for":0,"forType":"num","forUnits":"minutes","override_topic":false,"state_location":"payload","override_payload":"msg","entity_location":"data","override_data":"msg","x":360,"y":340,"wires":[["5a674308cdbf6fae"],[]]},{"id":"5a674308cdbf6fae","type":"api-call-service","z":"fb02189c0c0b2ac4","name":"Desliga Bt. Motor Filtro","server":"5e34cdb.2f12b34","version":3,"debugenabled":false,"service_domain":"input_boolean","service":"toggle","entityId":"input_boolean.bt_motorfiltro","data":"","dataType":"jsonata","mergecontext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":610,"y":340,"wires":[[]]},{"id":"eed25a7139c5ec22","type":"api-current-state","z":"fb02189c0c0b2ac4","name":"Bt. Motor Filtro = off","server":"5e34cdb.2f12b34","version":3,"outputs":2,"halt_if":"off","halt_if_type":"str","halt_if_compare":"is","entity_id":"input_boolean.bt_motorfiltro","state_type":"str","blockInputOverrides":false,"outputProperties":[{"property":"payload","propertyType":"msg","value":"","valueType":"entityState"},{"property":"data","propertyType":"msg","value":"","valueType":"entity"}],"for":0,"forType":"num","forUnits":"minutes","override_topic":false,"state_location":"payload","override_payload":"msg","entity_location":"data","override_data":"msg","x":360,"y":420,"wires":[["457153a8cfa4bb72"],[]]},{"id":"457153a8cfa4bb72","type":"api-call-service","z":"fb02189c0c0b2ac4","name":"Liga Bt. Motor Filtro","server":"5e34cdb.2f12b34","version":3,"debugenabled":false,"service_domain":"input_boolean","service":"toggle","entityId":"input_boolean.bt_motorfiltro","data":"","dataType":"jsonata","mergecontext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":600,"y":420,"wires":[[]]},{"id":"f55311ea120326a2","type":"api-current-state","z":"fb02189c0c0b2ac4","name":"Motor Filtron on/off","server":"5e34cdb.2f12b34","version":3,"outputs":2,"halt_if":"on","halt_if_type":"str","halt_if_compare":"is","entity_id":"switch.motor_do_filtro","state_type":"str","blockInputOverrides":false,"outputProperties":[{"property":"payload","propertyType":"msg","value":"","valueType":"entityState"},{"property":"data","propertyType":"msg","value":"","valueType":"entity"}],"for":0,"forType":"num","forUnits":"minutes","override_topic":false,"state_location":"payload","override_payload":"msg","entity_location":"data","override_data":"msg","x":590,"y":60,"wires":[["cc3c9451634e03c9"],["8ef06b0ef6bb9d3c"]]},{"id":"8ef06b0ef6bb9d3c","type":"api-call-service","z":"fb02189c0c0b2ac4","name":"Liga Filtro","server":"5e34cdb.2f12b34","version":3,"debugenabled":false,"service_domain":"switch","service":"turn_on","entityId":"switch.motor_do_filtro","data":"","dataType":"jsonata","mergecontext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":820,"y":100,"wires":[[]]},{"id":"89b5994c934c8ddd","type":"api-current-state","z":"fb02189c0c0b2ac4","name":"Motor Filtron on/off","server":"5e34cdb.2f12b34","version":3,"outputs":2,"halt_if":"on","halt_if_type":"str","halt_if_compare":"is","entity_id":"switch.motor_do_filtro","state_type":"str","blockInputOverrides":false,"outputProperties":[{"property":"payload","propertyType":"msg","value":"","valueType":"entityState"},{"property":"data","propertyType":"msg","value":"","valueType":"entity"}],"for":0,"forType":"num","forUnits":"minutes","override_topic":false,"state_location":"payload","override_payload":"msg","entity_location":"data","override_data":"msg","x":590,"y":180,"wires":[["0a27d6c3bb52b71c"],["0bdc1f2e8bca1c1b"]]},{"id":"0bdc1f2e8bca1c1b","type":"api-call-service","z":"fb02189c0c0b2ac4","name":"Liga Filtro","server":"5e34cdb.2f12b34","version":3,"debugenabled":false,"service_domain":"switch","service":"turn_on","entityId":"switch.motor_do_filtro","data":"","dataType":"jsonata","mergecontext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":820,"y":220,"wires":[[]]},{"id":"0a27d6c3bb52b71c","type":"api-call-service","z":"fb02189c0c0b2ac4","name":"Desliga Filtro","server":"5e34cdb.2f12b34","version":3,"debugenabled":false,"service_domain":"switch","service":"turn_off","entityId":"switch.motor_do_filtro","data":"","dataType":"jsonata","mergecontext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":830,"y":160,"wires":[[]]},{"id":"b8866a339147fa86","type":"inject","z":"fb02189c0c0b2ac4","name":"Liga Filtro 10:00","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"00 10 * * *","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":150,"y":560,"wires":[["ac1a876ad1508321"]]},{"id":"ac1a876ad1508321","type":"api-call-service","z":"fb02189c0c0b2ac4","name":"Liga Bt. Motor Filtro","server":"5e34cdb.2f12b34","version":3,"debugenabled":false,"service_domain":"input_boolean","service":"turn_on","entityId":"input_boolean.bt_motorfiltro","data":"","dataType":"jsonata","mergecontext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":400,"y":560,"wires":[[]]},{"id":"93580e0ce9665044","type":"inject","z":"fb02189c0c0b2ac4","name":"Desliga Filtro 13:00","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"00 13 * * *","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":160,"y":620,"wires":[["887a9d4db86c1d7f"]]},{"id":"887a9d4db86c1d7f","type":"api-call-service","z":"fb02189c0c0b2ac4","name":"Desliga Bt. Motor Filtro","server":"5e34cdb.2f12b34","version":3,"debugenabled":false,"service_domain":"input_boolean","service":"turn_off","entityId":"input_boolean.bt_motorfiltro","data":"","dataType":"jsonata","mergecontext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":410,"y":620,"wires":[[]]},{"id":"5e34cdb.2f12b34","type":"server","name":"Home Assistant","version":2,"addon":true,"rejectUnauthorizedCerts":true,"ha_boolean":"y|yes|true|on|home|open","connectionDelay":true,"cacheJson":true,"heartbeat":false,"heartbeatInterval":"30"}]

Pronto, é isso pessoal. Gostou deste tutorial? Então deixa seu comentário, dúvida ou sugestão aí embaixo!

!

6 curtidas