Postei esse projeto num forum que ficou fora do ar, como teve alguns integrantes procurando por essa solução, vou postar aqui. Tenho uma cerca elétrica da JFL e consegui integrar no HA junto ao Alarmo e ficou bem eficiente. Utilizei ESP8266 para resolver tudo, segui a tela de como ficou.
Utilizei resistores de 3k3 para as duas ligações que requer.
Utilizo junto com uma integração do HACS chamado de Alarmo, tem opção de utilizar senha para armar e desarmar, como já usamos senha pra entrar no HA não vi necessidade de ativar essa camada extra.
Segui o yaml para o ESP8266 nodemcu, tem os comentários de como ligar
# Projeto para incorporar a cerca elétrica da JFL ECR-18 Plus
substitutions:
#Configurações:
Plataforma: ESP8266 #Altere para o modelo da sua placa
TipoPlaca: nodemcu #Altere para o tipo da sua placa
hostname: jflmonitor #Hostname do dispositivo na rede (não usar underline '_' pois atrapalha o funcionamento do mDNS).
Comment: "Monitor da cerca elétrica JFL ECR-18 Plus"
PrefixoNome: 'JFL-' #Texto que aparece no início de cada entidade e forma o id da entidade
#Configurações da rede
RedeWifi: !secret RedeWifi #Nome da rede wifi que o dispositivo irá se conectar
SenhaWifi: !secret SenhaWifi #Senha da rede wifi que o dispositivo irá se conectar
SenhaWifiReconfig: !secret SenhaWifiReconfig #Senha do AP Wifi para reconfiguração do wifi do dispositivo
EndConfig: ${hostname}.local # especialmente usado quando quer alterar o hostname via OTA
WifiOculto: 'False' #Se a rede wifi está oculta defina como 'True'
WifiFastConnect: 'False' #Se o esp realizará a conexão à rede wifi sem escanear as redes disponíveis defina como 'True'
#Senhas
SenhaAPI: !secret SenhaAPI #Senha para adicionar o esp no HA
SenhaOTA: !secret SenhaOTA #Senha para atualizar o firmware do esp via OTA
esphome:
name: $hostname
comment: ${Comment}
platform: ${Plataforma}
board: ${TipoPlaca}
project:
name: "marciomelo.jfl"
version: "1.0.0"
wifi:
networks:
- ssid: ${RedeWifi}
password: ${SenhaWifi}
hidden: ${WifiOculto}
fast_connect: ${WifiFastConnect}
use_address: ${EndConfig}
# Enable fallback hotspot (captive portal) in case wifi connection fails
ap:
ssid: ${hostname}_WIFI
password: ${SenhaWifiReconfig}
#Habilita um AP Wifi para reconfigurar em caso de perda de conexão com a rede configurada
captive_portal:
#Habilita a api para comunicar com o Home Assistant
api:
encryption:
key: ${SenhaAPI}
#Habilita a atualização de firmware por OTA
ota:
password: ${SenhaOTA}
#Habilita as mensagens de logs pela porta serial e via MQTT
logger:
binary_sensor:
#Status (conectado ou desconectado)
- platform: status
id: status_conexao
name: ${PrefixoNome} Status
device_class: connectivity
# ligar no pino Disp que é NF, ao abrir sinal de disparo da cerca elétrica
- platform: gpio
pin:
number: D5
mode:
input: true
pullup: true
inverted: false # false = Fechado = Ativa -> Aberto = Disparada
name: "Pino Disp ECR18-Plus NF"
device_class: door
filters:
- delayed_on: 10ms
# na configuração comentada o positivo que age e nas demais o negativo, alternativa a outros projetos
# pin:
# number: D0
# mode: INPUT_PULLDOWN
# inverted: true
# name: "Pino Disp ECR18-Plus NF"
# device_class: door
# filters:
# - delayed_on: 10ms
# ligar no ARME, indica cerca armada ou desarmada
- platform: gpio
pin:
number: D2
mode:
input: true
pullup: true
inverted: false # false = Fechado = Armado - Aberto = Desarmada
name: "Pino ARME ECR18-Plus"
device_class: door
filters:
- delayed_on: 10ms
button:
#Comando reinicilizar esp remotamente
- platform: restart
id: restart_button
name: ${PrefixoNome} Reiniciar
icon: mdi:restart
text_sensor:
#Informações da conexão wifi
- platform: wifi_info
#Endereço IP
ip_address:
id: IP
name: ${PrefixoNome} Endereço IP
icon: mdi:ip-network
#Nome da Rede
ssid:
id: SSID
name: ${PrefixoNome} Rede Wifi
icon: mdi:wifi
#Informação da versão da compilação
- platform: version
id: versao
name: ${PrefixoNome} Versão
icon: mdi:information
sensor:
#Sensor Intensidade Sinal Wifi
- platform: wifi_signal
id: wifi_sinal
name: ${PrefixoNome} Intensidade Wifi
icon: mdi:signal
update_interval: 10s
# monitora o estado da bateria da cerca elétrica
- platform: adc
pin: A0 # A0 ligar no dividor de tensão
name: "Estado da bateria"
icon: mdi:battery-charging
update_interval: 30s
filters:
- multiply: 2.55
# multiply deve esta entre 2.50 e 2.68, depende da saúde da bateria
- calibrate_linear:
# Map volts (from sensor) to % (for HA)
# valor no HA multimetro A0 x Fonte
- 1.78 -> 0.0 # 2.02 x 10,5
- 2.06 -> 50 # 2.35 x 12,2
- 2.34 -> 100 # 2.66 x 13,8 - na verdade esse 13,8 é da fonte, no multimetro deu 14,2
unit_of_measurement: "%"
accuracy_decimals: 0
# Rele pulsante
switch:
# liga e desliga a cerca elétrica, pulso de 2 segundo
- platform: gpio
pin: D1
id: relay_1
- platform: template
id: pulse_relay_1
name: "Liga/Desliga cerca"
turn_on_action:
- switch.turn_on: relay_1
- delay: 2s
- switch.turn_off: relay_1
- delay: 1s
# Botão pânico - ligar na zona Z1 dos sensores NF com fio
# Para habilitar o sensor com fio é necessário retirar o jumper " ZONA "
- platform: gpio
pin: D3
id: relay_2
- platform: template
id: pulse_relay_2
name: "Botão de Pânico"
turn_on_action:
- switch.turn_on: relay_2
- delay: 5s
- switch.turn_off: relay_2
- delay: 1s
Dicas, sugestões, etc são sempre bem vindas, já utilizo a mais de 6 meses sem nenhum problema, mais dífícil foi ajustar o estado da bateria.
Se você utilizar o ESP8266 nodemcu é só compilar, em outros ESP vai ter que adaptar, no início é assim mesmo, mas é bem melhor os ESP que tenha entrada da USB, sua cerca elétrica nem vai precisar do módulo de internet e o projeto sai mais barato, veja alguns vídeos no youtube de como fazer a gravação desse código no ESP, tem vários métodos, no futuro você também estará criando soluções simples e apresentando.