Posso usar um ESP8266 como um broker MQTT?


7

Estou fazendo um projeto de automação residencial com base em topologia em estrela. O que estou tentando conseguir é que um dos nodemcu / ESP8266 atue como um servidor acessível ao mundo externo e outro nodemcu / ESP8266 atue como clientes conectados a relés ou sensores.

Ao receber o comando do servidor, os relés devem ser acionados de acordo e atualizar o status novamente para o servidor. Eu li muitos tutoriais através de métodos diferentes. O MQTT parece bom, mas não quero usar nenhum corretor de terceiros como a Adafruit. Quero hospedar o servidor da web no meu nodemcu ou no meu host. A parte triste é que eu não possuo um Raspberry Pi.

Posso usar um dos meus dispositivos ESP8266 como um broker MQTT ou existe uma alternativa adequada?


2
Para usar o MQTT, você precisa de um broker e um esp8266 simplesmente não é capaz de agir como um broker. Você precisa de algo "maior"
hardillb

11
Você pode hospedar um corretor MQTT no seu PC / laptop, embora executá-lo em 0/24 possa aumentar um pouco a sua conta de eletricidade.
Bence Kaulics

11
@hardillb -> algo maior significa o próprio raspberry pi? ou Arduino mega também poderia ser utilizado para o mesmo propósito
Rohit Mathur

11
Isso significa que um computador real, então não é um mega Arduino, um Pi Zero seria suficiente
hardillb

11
@BenceKaulics -> posso usar minha hospedagem em vez de deixar meu laptop ligado por toda a vida. Eu tenho uma hospedagem compartilhada.
Rohit Mathur

Respostas:


9

Tecnicamente falando, sim, um ESP8266 poderia atuar como um intermediário MQTT. De fato, alguém já tentou ! No final de seu projeto , eles alegaram ter um broker que pode fazer a ponte para um broker MQTT em nuvem, com uma interface da web e uma quantidade razoável de tempo de atividade. Nos comentários, eles dizem que o código é proprietário, portanto você não poderá usá-lo exatamente, mas serve como prova de conceito se realmente quiser usar um ESP8266.

No entanto, o uso de um ESP8266 como corretor provavelmente será muito trabalhoso . Usar um Pi, como sugerido por MatsK , seria muito mais fácil e, embora as unidades Raspberry Pi sejam um pouco mais caras (entre £ 5 e £ 25 + postagem, dependendo do modelo escolhido), você economizará muito tempo . Com um Pi, você pode apenas usar um corretor estabelecido como o Mosquitto . Em um ESP8266, não há chance de o Mosquitto ser executado, e você provavelmente teria que escrever seu próprio corretor ou usar um bem menos confiável.

Como alternativa, você pode conectar todos os seus ESP8266s diretamente a um serviço de nuvem como o AWS IoT . Isso simplifica sua configuração, mas significa que todas as solicitações são roteadas pela Internet e você não pode controlar os dispositivos localmente. Se sua conexão à Internet for interrompida usando essa abordagem, você também não terá controle sobre os dispositivos.


11
Eu recomendaria usar "Node-red" uma interface gráfica da web onde você pode criar lógica para automação.
MatsK

@Aurora - Obrigado por explicar a coisa com tanta profundidade. Isso trouxe clareza ao meu pensamento. Entendo que o Pi é necessário para servidores autônomos. Mas se eu quiser levar isso para a nuvem. É necessário usar serviços de IoT de terceiros? Posso usar meu host para isso? Se não for muito difícil. Tenho apenas 14 anos. Portanto, não tenho muito conhecimento técnico.
Rohit Mathur

@RohitMathur Sim, você pode usar seu próprio host, dependendo do tipo de host que você possui - se for algo como um VPS ou um servidor dedicado, sim; se for apenas um host tradicional para páginas da web, não. Se você compartilhar qual host está usando, posso tentar apontar na direção certa. Leia também O que devo fazer quando alguém responder à minha pergunta? para que você possa recompensar qualquer resposta útil que receber.
Aurora0001

Eu tenho um host compartilhado. Por enquanto, acho que tenho que me comprometer com o Pi. O custo do VPS é alto. Quantos nós podem ser conectados a um Pi como clientes? Como o ESP8266, você pode gerenciar até 4 clientes. Meu projeto pode ser de n não. de nós. Alguns conectados a um relé, outros com sensores.
Rohit Mathur

@RohitMathur Não sei o número exato, mas imagino que um Pi provavelmente possa lidar com centenas de mensagens por segundo, principalmente o Pi 3, que é bastante poderoso. Certamente você não alcançará o limite dos recursos do Pi com seu caso de uso.
Aurora0001

8

Minha sugestão seria um corretor MQTT de mosquito em um Raspberry Pi.

Há um artigo aqui https://tech.scargill.net/a-christmas-script/ em que Peter Scargill criou um script que instala todos os componentes e dependências necessários.

Dê uma olhada no Node-red. Com ele, você pode criar uma lógica para complementar seu projeto.

Atualizações:

Acabei de encontrar um broker ESP8266 MQTT, disponível gratuitamente. Isso eu tenho que tentar ....

https://www.youtube.com/watch?v=0K9q4IuB_oA

https://github.com/martin-ger/esp_mqtt


Sim, acho que preciso comprar um Pi. E este artigo foi realmente útil. Você pode compartilhar mais alguns tutoriais para o meu projeto? Vou passar por eles assim que conseguir um Pi.
Rohit Mathur

Rui Santos tem muitos tutoriais legais, como: randomnerdtutorials.com/… e muitos mais, e seu livro "domótica" é recomendável.
MatsK

Eu tenho seguido um tutorial. randomnerdtutorials.com/… . Raspberry Pi está funcionando absolutamente bem. Mas acredito que esp8266 não está recebendo mensagens. Portanto, não posso controlar o relé conectado com esp8266.
Rohit Mathur 23/09

6

Além das respostas e comentários que recomendam o uso de um Raspberry Pi por causa dos recursos limitados do ESP8266, geralmente faria sentido usar o ESP32 , o sucessor não oficial do ESP8266. Por ser dual-core + 3x mais RAM, ele corrige problemas de conexão WiFi que aumentavam quando o tamanho dos programas do usuário.

Na faixa de preço, é apenas alguns dólares mais caro que o ESP8266 e significativamente mais barato que o do RaspberryPi (pelo menos até que o zero caia no preço). As outras respostas devem ser cobertas pelo lado do software.


5

Além do que as outras excelentes respostas já declararam, o uso de um ESP8266 como seu broker MQTT é menos do que o ideal pelo simples motivo de que não possui os requisitos do sistema para executar a velocidade. Alguém no Github estava tentando uma façanha semelhante, e disseram:

Não é impossível, mas não faz muito sentido. O broker precisa de alguns recursos, como CPU, memória e número de conexões TCP (uma para cada cliente), talvez armazenamento não volátil (para mensagens persistentes), configuração para direitos de acesso do usuário e muitos outros detalhes.

Repito as outras ótimas respostas: compre um Raspberry Pi ou outro computador barato para atuar como seu corretor. O ESP simplesmente não possui as especificações para um bom desempenho.


11
Sim. É muito claro agora que eu iria precisar de um Pi para realizar este projecto
Rohit Mathur

Esse é principalmente um problema de dimensionamento - ele realmente não aparece até o número de nós aumentar. O problema que está presente desde o início é que o software deve ser reescrito, provavelmente do zero, para criar a funcionalidade do intermediário com o mínimo de recursos.
21417 Chris Stratton

Um MCU maior seria adequado, mas não seria mais barato que um SBC de gama baixa?
Sean Houlihane


2

Você pode usar um ESP8266 como intermediário MQTT. Ele suporta 20 dispositivos, websockets e conexão de ponte a uma instância do MQTT na nuvem que fornece websockets e SSL do MQTT.

Em três minutos, você pode ter um broker MQTT totalmente funcional. Confira a plataforma iotcentral.eu. Faça uma conta e você está pronto.


obrigado pela sugestão Dan. Mas agora estou usando o Raspberry Pi como corretor do MQTT. mas agora o problema está no esp8266. Às vezes, ele se conecta ao Wifi, mas às vezes apenas diz "Conectando ................." e os pontos continuam. Eu tentei usar fonte de alimentação externa, assim não está funcionando. Alguma idéia de como fazer isso?
precisa
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.