Como saber o estado real dos Sonoff ou de outros equipamentos

Continuando nessa ideia, para quem realizar uma programação manual para o arduino e deseja ter o memso tipo de informação basta realizar o seguinte:
switch:
- platform: mqtt
name: “Relais”
state_topic: “ha/switch1/status”
command_topic: “ha/switch1/set”
availability_topic: “ha/switch1/lwt”
payload_on: “ON”
payload_off: “OFF”
payload_available: “ONLINE”
payload_not_available: “OFFLINE”
optimistic: false
qos: 1
retain: true

Na parte de programação do arduino:

const char* ha_command = "ha/switch1/set";
const char* ha_state = "ha/switch1/status";
const char* ha_availability = "ha/switch1/lwt";
const char* payload_on = "ON";
const char* payload_off = "OFF";
const char* payload_available = "ONLINE";
const char* payload_not_available = "OFFLINE";

E a parte de ligação ao mqtt:

void reconnect() {
  // Loop until we're reconnected
  while (!client.connected()) {
    Serial.print("Attempting MQTT connection...");
    if (client.connect(mqtt_id, mqtt_username, mqtt_password, ha_availability, 0, true, payload_not_available )) {
      Serial.println("connected");
      client.subscribe(ha_command);
      client.subscribe(ha_state);
    client.publish(ha_availability, payload_available, true);
    } else {
      Serial.print("failed, rc=");
      Serial.print(client.state());
      Serial.println(" try again in 5 seconds");
      // Wait 5 seconds before retrying
      delay(5000);
    }  
  }
}

@ricain coloca o codigo todo do arduino. Usa o icone <> sempre que colocares um código.

1 Curtiu

è possivel criar um sensor para mostrar se o sonoff esta ligado ou desligado ?
Estou tentando com o codigo abaixo, mas ele só mostra como LIGADO.

sensor:
  - platform: mqtt
    name: "Sonoff Luz"
    state_topic: "tele/sonoff/LWT"
    value_template: "{{ value }}"
    payload_on: "Online"
    payload_off: "Offline"

Podes usar assim:

sensor:
  - platform: mqtt
    name: "Luz de Fundo (TV)"
    state_topic: "home/indoor/switch/SONOFF_BASIC_B440BD/relay/0"
    command_topic: "home/indoor/switch/SONOFF_BASIC_B440BD/relay/0"
    availability_topic: "home/indoor/switch/SONOFF_BASIC_B440BD/status"
    qos: 1
    payload_on: 1
    payload_off: 0
    payload_available: 1
    payload_not_available: 0
    optimistic: false
    retain: true

Apenas troquei o nome do SONOFF para o meu, e nao funcionou.
Oq seria home/indoor/switch/ ?

O que tens de escrever depende do firmware que utilizas e como está configurado.

No meu caso ficou assim, e nao funcionou:

  - platform: mqtt
    name: "Sonoff Bia"
    state_topic: "stat/sonoffBia/POWER"
    command_topic: "cmnd/sonoffBia/power"
    availability_topic: "tele/sonoffBia/LWT"
    qos: 1
    payload_on: 1
    payload_off: 0
    payload_available: 1
    payload_not_available: 0
    optimistic: false
    retain: true

O Switch funciona perfeitamente.

E o payload qual é? 0/1, Ligado/Desligado, Online/Offline…

1 Curtiu

Funcionou :slight_smile:

  - platform: mqtt
    name: "Sonoff Bia"
    state_topic: "stat/sonoffBia/POWER"
    command_topic: "cmnd/sonoffBia/power"
    availability_topic: "tele/sonoffBia/LWT"
    qos: 1
    payload_on: "ON"
    payload_off: "OFF"
    payload_available: "Online"
    payload_not_available: "Offline"
    optimistic: false
    retain: true
1 Curtiu

Boa! Marca a resposta certa como solução para que todos saibam que existe resposta à tua questão.

Como o topico nao foi criado por mim, nao aparece a opcao para marcar como resolvido.
Ja informei isso para o @RodolfoVieira

Eu alterei essa opção. Podes confirmar se, no tópico onde está a resposta correcta, ao clicares nos três pontos (...) no fundo da publicação aparece a opção de marcar como solução (um quadrado com um visto dentro)?

Ainda nao aparece a opcao para marcar como resolvido.

Vou ver isso melhor. Entretanto já marquei eu.

Aqui tenho 2 sonoff com essa config:

platform: mqtt
name: "sonoff2"
command_topic: "cmnd/sonoff2/power"
state_topic: "stat/sonoff2/POWER"
qos: 1
payload_on: "ON"
payload_off: "OFF"
retain: true
availability_topic: "tele/sonoff2/LWT"
payload_available: "Online"
payload_not_available: "Offline"

Estão funcionando OK. Porem quando o HA é reiniciado os sonoffs não voltam com o estado correto.

Por exemplo:

Sonoff 1 - Ligado
Reboot no HA
Status do Sonoff 1 - Desligado

Update: Está as vezes entra em “Indisponivel” e volta… :frowning:

É tasmota que tens no sonoff?

Se sim vai a consola pela pagina web do sonoff e escreve isso e faz enter:
PowerRetain 1

1 Curtiu

Sim é tasmota. @ricain

CMD: PowerRetain 1
MQT: stat/cob/RESULT = {“PowerRetain”:“ON”}

Cria essa automação q em todo Reboot ele vai “reler” os status dos sonoff.

INICIALIZACAO

 - alias: Atualizar sonoffs ao reiniciar HA
   hide_entity: True
   trigger:
   - platform: homeassistant
     event: start
   action:
    - service: mqtt.publish
      data:
        payload: ""
        topic: "cmnd/sonoffs/power"
        qos: 0
        retain: 0
    - service: mqtt.publish
      data:
        topic: "cmnd/sonoffs/power1"
        payload: ""
        qos: 0
        retain: 0
    - service: mqtt.publish
      data:
        topic: "cmnd/sonoffs/power2"
        payload: ""
        qos: 0
        retain: 0

@CarlosMartins para publicares código, deves seleccionar o texto e depois clicar no ícone </>


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


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