Home Assistant (docker) + mosquitto + shelly

Olá boa tarde,

Já uso à alguns meses shelly’s para controlar alguns dispositivos em casa, no entanto e a medida que me sinto mais à vontade gostava de deixar de depender da aplicação da shelly e passar a integrar os shelly’s no home assistant.

Estou a correr o home assistant em docker dentro de um qnap.

Até aqui tudo bem e até ja instalei o mosquitto de forma a integrar o mesmo no home assistant e assim comunicar com os shelly’s.

Consigo ver nos log’s no mosquitto ele a receber ligações dos shelly’s e do home assistant por isso essa parte parece estar ok. Note-se que ainda estou a trabalhar com anonymous para simplificar ao máximo as coisas.

Dúvida de iniciante agora:

como é que adiciono cada shelly ao home assistant? já tentei “n” templates e nada!

tentei também o shellyforhass e embora detecte os shelly’s não os detecta na sua totalidade… o que me deixa de pé atrás. já tentei também com discovery by ip e nada nesses que não me aparecem.

Estou sem ideias se puderem ajudar… agradeço!

configuration.yaml

#IP’s dos Shelly’s
shelly:
discover_by_ip:
- ‘192.168.1.164’ #shelly i3

no mosquitto.conf tenho apenas isto

allow_anonymous true
persistence true
persistence_location /mosquitto/data/
log_dest file /mosquitto/log/mosquitto.log

Viva Ricardo,

Tens 2 caminhos que eu conheça e tenha usado:
1- Mosquito Broker + MQTT
2- ShellyforHass

Resumidamente:
Pelo primeiro caminho, que é o que tenho porque aparenta ser mais fiavel:

  1. Instalar Mosquito Broker
  2. Aceder às Shellys por IP
  3. Configurar para usar MQTT
  4. Usar um programa estilo MQTT Explorer para veres se o Broker recebe as comunicações
  5. Configuar as shellys via YAML
    Fica aqui um expemplo:
switch:
  - platform: mqtt
    name: "Kitchen Lights"
    state_topic: "shellies/shelly1-E09806968033/relay/0"
    command_topic: "shellies/shelly1-E09806968033/relay/0/command"
    payload_on: "on"
    payload_off: "off"
    retain: "false"
    qos: 1

cover:
  - platform: mqtt
    name: "Living Room Blinds"
    state_topic: "shellies/shellyswitch25-E098069548D9/roller/0"
    command_topic: "shellies/shellyswitch25-E098069548D9/roller/0/command"
    position_topic: "shellies/shellyswitch25-E098069548D9/roller/0/pos"
    set_position_topic: "shellies/shellyswitch25-E098069548D9/roller/0/command/pos"
    #availability_topic: "shellies/shellyswitch25-E098069548D9/online"
    payload_available: "true"
    payload_not_available: "false"
    qos: 1
    retain: false
    payload_open: "open"
    payload_close: "close"
    payload_stop: "stop"
    position_open: 100
    position_closed: 0
    optimistic: false

binary_sensor:
  - platform: mqtt
    state_topic: "shellies/shellydw2-D8BFC01A7909/sensor/state"
    name: "Front Door Sensor"
    payload_on: 'open'
    payload_off: 'close'
    qos: 1
    device_class: door
  
sensor:
  - platform: mqtt
    name: "Front Door Lux"
    state_topic: "shellies/shellydw2-D8BFC01A7909/sensor/lux"
    value_template: '{{ value|round(0) }}'
    qos: 1
    device_class: illuminance
    unit_of_measurement: 'lux'

Para a segunda forma, ShellyforHass.

  1. Tens que instalar o HACS - https://www.youtube.com/watch?v=hdbYf36lfOc
  2. Tens que instalar o ShellyforHASS - https://www.youtube.com/watch?v=_TeJlUPoOTI&t=398s

é exactamente isso que eu pretendo… fiável…
por isso opção 1

esse exemplo que tu ai tens se eu pegar no exemplo e o copiar para o meu configuration.yaml

continuo sem apanhar nada!

espera… é suposto isto ser assim? shelly1-E09806968033??? não era só os ultimos 6 caracteres?

Tens que que trocar pelo teu ID esqueceu-me de referir isso

shelly1-[REPLACE_ID]

sim isso eu percebo mas estava a tentar assim

shellies/shellyswitch25-FB17AB/roller/0
em vez de
shellies/shellyswitch25-68C63AFB17AB/roller/0

mas mesmo pondo completo não trabalha!

  - platform: mqtt
    name: "Living Room Blinds"
    state_topic: "shellies/shellyswitch25-68C63AFB17AB/roller/0"
    command_topic: "shellies/shellyswitch25-68C63AFB17AB/roller/0/command"
    position_topic: "shellies/shellyswitch25-68C63AFB17AB/roller/0/pos"
    set_position_topic: "shellies/shellyswitch25-68C63AFB17AB/roller/0/command/pos"
    #availability_topic: "shellies/shellyswitch25-68C63AFB17AB/online"
    payload_available: "true"
    payload_not_available: "false"
    qos: 1
    retain: false
    payload_open: "open"
    payload_close: "close"
    payload_stop: "stop"
    position_open: 100
    position_closed: 0
    optimistic: false

Esse ID parece-me curto. Tenta usar o MQTT Explorer para ver os IDS.

Sim mas mesmo com o completo não consigo

@Ricardo_Rocha e @Carlos.Lourenco

Se esperarem pelo update do Home Assistant de hoje (17/09/2020) os Shelly vão passar a integrar directamente com o HA e deixa de ser necessário o MQTT ou o HACS.

Ui… Assim directo? Mas como ele tem que chegar a eles de alguma forma!!!

@j_assuncao Sim, estou a par. Mas pergunto-me que vantagens tenho em trocar de MQTT que sei que funciona para a integração…

Eu também gostava de independentemente de vir a ser suportado de integrar com mqtt quanto mais n fosse para bem da ciência

A integração já lá está e a funcionar perfeitamente.

@Ricardo_Rocha o MQTT não é a unica forma de o Shelly comunicar, existe também o HTTP e o CoAP.

Já testei a nova integração. Está a funcionar.
Testei 1 shelly1pm com 3 sensores de temperatura. Todos os dados estão coincidentes com os do MQTT.

Qdo tiver tempo vou adicionar mais.

Também já testei… Os i3 não reconhece qualquer entidade nos 2.5 configurados como estores parece estar OK.

Testei a nova integração mas com os shelly h&T com bateria não funciona muito bem.
Não actualiza o HA, mas vejo as actualizações na shelly cloud. Se fizer um wake up manual o HA actualiza bem.

Boas,

Tal como o Carlos começou por dizer, as opções mais óbvias eram estas:
1- Mosquito Broker + MQTT
2- ShellyforHass

Eu também testei as duas por uns tempos e também optei pela primeira.
Esta nova integração ainda não testei por isso não posso opinar.
No entanto, ao usar a opção MQTT, havia uma coisa que me aborrecia, que era ter de criar aquelas configurações gigantes de cada vez que adicionava um shelly novo. Então descobri um “atalho” que tem funcionado bastante bem:

Isto é basicamente uma versão melhorada da integração via MQTT. Já consegue identificar os vários tipos de shellies que existem e disponibilizar para o HA as funcionalidades de cada um.

Aqui o exemplo do início do meu ficheiro:

Por cada shelly novo só é mesmo preciso saber qual o seu ID (que é igual ao mac-address sem os “:”) e qual o tipo (cada tipo tem uma config ligeiramente diferente)

Ah, e é preciso configurar o Shelly, obviamente, mas como eu sou preguiçoso, tenho um “excel” que me gera 3 comandos para executar e fazer a configuração:

Para garantir que executo estes comandos e o IP do shelly não muda pelo meio, começo sempre por fixar o IP do novo shelly no router (no meu caso é um servidor DNS à parte - pihole). É um bocado redundante fixar o IP no shelly e no servidor dns, eu sei, mas assim não há mesmo maneira de dar asneira :blush:

Apesar da integração nova, acho que me vou manter com este tipo de configuração porque gosto de ter tudo a passar pelo Mosquitto. Permite-me fazer facilmente muitas outras coisas no nodered diretamente sem precisar de ir ao HA (é menos um ponto de falha).

PS: A integração via API dos shellies continua a ser a mais completa, mesmo o MQTT sendo suportado oficialmente pela Shelly, há features que se perdem (provavelmente não importantes para a maioria, mas que as há, há :slight_smile: ). Uma das coisas que se perde é o acesso via Cloud da Shelly, por exemplo.

Sobre a nova integração e os sensores de Temperatura e Humidade (shelly H&T) alimentados por bateria, é referida essa limitação na documentação:

E pelo que me apercebi so seu modo de funcionamento vai ser mesmo difícil que venha a melhorar (sem algum tipo de configuração que já explico a seguir).

Eu não sei fazer plugins HA, mas parece-me que nesta integração está a ser usada a API HTTP dos shellies para ir buscar a informação de 5 em 5 segundos.

Ora a Shelly diz que os sensores H&T acordam ao fim de X tempo (configuráve), ou quando os valores variam muito e, nessa altura, comunicam esses mesmos valores para depois se voltarem a desligar imediatamente. Ora como se deve imaginar tem que haver aqui uma coincidência do HA estar no período em que está a fazer a pergunta ao Shelly e o período em que o Shelly está a acordado (que é mínimo).
Isto tudo funciona quando se aciona o botão do Shelly manualmente porque aí o shelly fica acordado durante 3 min seguidos.

Ora, a única forma que estou a imaginar para este cenário funcionar com os H&T a bateria, seria usar o parâmetro “report_url” em que dizemos ao Shelly para onde é que este deve enviar a informação no momento em que “acorda”. Podíamos fazer isto com um webhook do HA ou do Nodered.

Aliás, qualquer um pode fazer isso já hoje, só não fica na integração oficial :smiley:

Sim é uma opção, mas continuo a perferir o MQTT com os shelly H&T de bateria é muito fiavel e rápido.
Mesmo fazendo um pequeno tweak a definição do sensor para não apresentar NaN em caso de restart do HA e não tiver nada to topico do MQTT.


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


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