Como enviar ações entre nodes (Esphome)

Boas a todos,

Para os que utilizam esphome isto pode ser interessante quanto têm um switch e uma lâmpada, ambos com esphome mas em ESP’s diferentes.

Vantagem disto? Como eles comunicam entre si, mesmo que o HA esteja indisponível, com um restart à máquina ou porque está com erros, a lâmpada não deixa de acender/apagar

Este tutorial vai ser sempre baseado num exemplo real: Switch + lâmpada com ESP’s diferentes

Basicamente isto funciona com o Esp do switch vai fazer um pedido via HTTP POST para o Esp da lâmpada que tem o web server ativo

NOTA MUITO IMPORTANTE:
Neste momento, 18/04/2020 o http_request presente no código do switch, só está disponivel na versão dev. Por isso têm de compilar o esp do switch no addon dev.
Ver mais aqui: https://next.esphome.io/components/http_request.html

Código para o switch:

esphome:
  name: switch
  # isto é conforme o vosso dispositivo
  platform: ESP8266
  board: esp01_1m

wifi:
  ssid: ssid
  password: password

logger:

api:

ota:

# isto é importante, faz parte do pedido
http_request:
  useragent: esphome/device

binary_sensor:
  - platform: gpio
    id: switch
    pin:
      number: GPIO12 #vosso gpio
      mode: INPUT_PULLUP
      inverted: True
    # isto é importante, faz parte do pedido
    on_state:
      - http_request.post:
          url: http://<ip_do_esp_da_lampada>/light/lampada/toggle

Código para a lâmpada:

esphome:
  name: lampada
  # isto é conforme o vosso dispositivo
  platform: ESP8266
  board: esp01_1m

wifi:
  ssid: ssid
  password: password

logger:

api:

ota:

# isto é importante, aqui é criado o interface web, que recebe o pedido
web_server:
  port: 80

# esta configuração da lampada é apenas um exemplo para uma fita led. Adaptem o código.
# Relembro que isto é apenas um exemplo

light:
  - platform: monochromatic
    name: "lampada"
    id: lampada
    output: pwm_output

output:
  - platform: esp8266_pwm
    pin: GPIO14
    id: pwm_output
4 Curtiram

Já andava à procura disto há algum tempo!

Obrigado pelo tutorial!! :smile: :smile:

1 Curtiu

Muito bom e útil! Aparentemente funciona um pouco como as rules do Tasmota, certo?

1 Curtiu

Sim, exatamente. Mas penso que só funcione com mqtt no tasmota, de qualquer das formas o fundamento acaba por ser o mesmo, mudando apenas o protocolo

No Tasmota podes usar MQTT ou Websend que envia comandos por http (e que é a base do TasmoAdmin por exemplo).

Porreiro, ainda melhor,
assim garante-se a ligação mesmo entre firmwares diferentes

Legal. Mas há como enviar essa requisição com login e senha?

Sim consegues

segue este url como exemplo
http://username:password@example.com

Sim. Obrigado pela dica.

sempre que tento dá o seguinte erro:
[D][switch:037]: ‘lae2’: Sending state ONe
[W][http_request:088]: HTTP Request failed; URL: http://username:passsword@172.16.1.34/switch/frentecam/toggle; Code: 401

username e password incorrectos

É-me estranho, pois a senha e usuário estão corretos. Mesmo se eu deixar sem login e senha no web_server do dispositivo que vou ligar, dá o mesmo erro.

Definitivamente não funcinoa.

Funciona assim:

ON_PRESS

on_press:
# para frente
  - http_request.post:
      headers:
        Authorization: !secret aut_ft_virtual
      url: http://192.168.2.107/switch/frente_virtual/turn_on
      id: http_request_id

o Authorization está esplicado aqui:
https://esphome.io/cookbook/http_request_sensor


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


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