Cerca elétrica JFL ECR18 Plus - controlar e monitorar

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.

Vou colocar imagens do manual com os pinos da placa ECR18

Segue imagem do manual da ligação entre módulos e as ligações dos terminais.


Utilizei resistores de 3k3 para as duas ligações que requer.

Tela pronta

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.

1 Like

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.

Esse código yaml que voce apresentou é para ser colocado no Home Assistant certo? Pode disponibilizar o código do esp8266?

1 Like

Não sou familiar com ESP, estou começando agora, acabei de ver que esse código é do ESPHome, obrigado, vou tentar adaptar a minha central.

1 Like

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.