Este é um aplicativo ESP32+LORA que recebe o sinal de RF de um termômetro remoto de fumaça X2 ou fumaça do Thermoworks e fumaça e publica as informações em um corretor MQTT. Isso funcionará ao lado de qualquer receptores de fumaça X2/X4 existentes (ou seja, todos os receptores emparelhados ainda funcionarão). Este projeto foi projetado especificamente para se integrar ao Assistente de casa, mas também pode ser usado com qualquer outro aplicativo baseado em MQTT. Além disso, este aplicativo pode operar de maneira independente (interface WLAN no modo AP sem MQTT ou assistente doméstico) para uso em campo.
Observe que este aplicativo não é compatível com os produtos originais do Thermoworks Smoke ou Thermoworks Signals.
A fumaça X é solidamente construída, precisa, tem uma ótima faixa de RF e não precisa da Internet para funcionar. Mas a unidade receptor fornecida mostra apenas as leituras atuais da sonda, sem meios de gravar ou rastrear tendências.

Este aplicativo permite que os usuários de fumaça X coletem os dados de temperatura do sinal de RF e visualizem o histórico de temperatura por meio de uma interface da web (servido pelo ESP32), um painel de assistente doméstico e/ou qualquer outra ferramenta de visualização de dados.



Todos os dados são adquiridos, processados e armazenados localmente, como mostrado abaixo:
Fluxograma LR
base -> | Lora rf | Esp32
MQCLIENT -> MQ
MQ -> ha
Web -> navegador (qualquer navegador da web)
Sub -fumaça x2/x4
Sondas -> base (estação base) -> | lora rf | RECV (receptor)
Ocurados -> Base
fim
SUBRAPILHO ESP32 [Smoke-X-Receiver]
MQClient (cliente MQTT)
Web (servidor HTTP)
fim
SUBGRAFIO MQTTB [MQTT Broker]
MQ (tópico homeissistente)
fim
Assistente de Subgraff
MQ_INT
fim
SUBRAPHE HA_DEV [dispositivo HA para x2/x4]
E1 (entidades do sensor binário)
E2 (entidades sensoras)
fim
SUBGRAPH MQ_INT [Integração MQTT]
HA (descoberta automática) -> ha_dev
ha_dev
fim
Mesmo se você não é um usuário de assistente doméstico, ainda pode usar a interface da web interna deste aplicativo para monitorar suas temperaturas e procurar tendências.
É necessário um FP32 com transceptor de semtech Lora anexado na banda ISM de 915 MHz. Um Conselho de Desenvolvimento Esp32+Lora combinado, como o Heltec Wifi Lora 32 V2 ou V3, é ideal, mas qualquer placa ESP32 com um SX1276 ou SX1262 conectado SPI deve funcionar.
$ source /path/to/esp-idf/export.sh$ git clone --recurse-submodules [email protected]:G-Two/smoke-x-receiver.git
$ cd smoke-x-receiverA configuração padrão para este projeto foi gravada para o Heltec Wifi Lora 32 V3 (com base no SX1262). Se você estiver usando esse hardware exato, provavelmente poderá pular esta seção. Se você estiver executando qualquer outro hardware, deseja personalizar a compilação ou se a construção padrão não funcionar, precisará executar o Menuconfig:
$ idf.py menuconfigNota: Se você estiver usando um SX1276 (como o heltec wifi lora 32 v2 ), deve selecionar o menu SX127X no menu "Smoke X Receiver HW/App Config" e configurar as atribuições SX127X SPI PIN
Alterações adicionais de configuração podem ser necessárias para apoiar seu hardware específico ou outras necessidades
$ idf.py set-target esp32s3 # If using a Heltec WiFi LoRa 32 v3, otherwise set target as appropriate to your hardware
$ idf.py flashO aplicativo e os ativos da Web serão construídos e gravados no Flash ESP32.
Depois que o ESP32 é exibido, vários itens precisam ser configurados e salvos para NVRAM. A configuração desses itens persistirá após a redefinição do ESP32, bem como as atualizações de software de aplicativos.
O dispositivo padrão no modo AP se as informações da WLAN não foram configuradas ou se a conexão falhar. As informações padrão do modo AP (configurável no menuconfig) é:
Conecte-se ao AP do ESP32 e use um navegador da web para navegar para http://192.168.4.1/wlan Você receberá uma interface da web auto-explicativa para configurar o dispositivo para sua rede doméstica. WPA2-PSK e WPA2-Enterprise (EAP-TTLS) são suportados. Depois de aplicar suas informações de autenticação de rede, o dispositivo redefinirá e tentará ingressar na sua rede doméstica. O ESP32 fornecerá uma solicitação de nome do host do cliente DHCP para smoke_x . Depois de encontrar o ESP32 em sua rede doméstica, você poderá prosseguir com o restante do processo de configuração. Se o ESP32 não ingressar na sua rede, ele será revertido para o modo AP padrão.
A guia "emparelhamento" da interface do usuário da web indicará que o dispositivo requer emparelhamento para uma unidade base de fumaça x. Se o dispositivo estiver em um estado não emparelhado, ele alternará o monitoramento dos dois canais de sincronização (920 MHz para X2, 915 MHz para X4) e combinará com a primeira transmissão de sincronização de fumaça X que recebe. Para emparelhar, coloque a unidade base da fumaça X no modo de sincronização, o que fará com que ela envie explosões de sincronização a cada três segundos. Depois que o ESP32 receber e analisar a explosão, ele transmitirá uma resposta de sincronização na frequência de destino e a unidade base retornará à operação normal. Neste ponto, você pode confirmar na interface do usuário da web que o dispositivo está emparelhado com um ID e frequência específicos do dispositivo. Esta é a única vez que o ESP32 transmitirá um sinal Lora. O dispositivo pode sempre ser não pareado através da interface do usuário da web. O emparelhamento/despar14 do ESP32 não afetará o status de emparelhamento de outros dispositivos.
Depois de emparelhado, a página de status exibirá um gráfico de temperatura.
A interface da web também é usada para configurar o dispositivo para se conectar a um corretor MQTT. O MQTT URI é o único campo obrigatório, o restante é opcional e dependerá da sua configuração específica de corretor MQTT. A autenticação do servidor MQTTS é suportada inserindo um CA PEM confiável através da interface do usuário da web. A autenticação do cliente PKI não é suportada no momento.
Se o MQTT estiver configurado e ativado, o aplicativo publicará mensagens de status após o recebimento de uma transmissão de RF da estação base Smoke X. A estação base transmite a cada trinta segundos. O conteúdo da mensagem publicado é:
{
"probe_1_attached" : " ON " ,
"probe_1_alarm" : " ON " ,
"probe_1_temp" : 70.4 ,
"probe_1_max" : 185 ,
"probe_1_min" : 32 ,
"billows_target" : " offline " ,
"probe_2_attached" : " ON " ,
"probe_2_alarm" : " ON " ,
"probe_2_temp" : 70.4 ,
"probe_2_max" : 91 ,
"probe_2_min" : 50 ,
"billows_attached" : " OFF "
}Nota: os dispositivos X4 também incluirão dados adicionais para as sondas 3 e 4
Este aplicativo suporta o assistente de casa MQTT Discovery. Se a sua instância de assistente domiciliar tiver a integração MQTT configurada para descoberta, os seguintes sensores de fumaça X serão adicionados automaticamente:
Após uma conexão bem -sucedida com o corretor MQTT, o dispositivo configurará cada sensor publicando mensagens de descoberta semelhantes às seguintes (uma para cada entidade):
{
"dev" : {
"name" : " Smoke X Receiver " ,
"identifiers" : " |ABC12 " ,
"sw_version" : " 0.1.0 " ,
"model" : " X2 " ,
"manufacturer" : " ThermoWorks "
},
"exp_aft" : 120 ,
"pl_not_avail" : " offline " ,
"stat_t" : " homeassistant/smoke-x/state " ,
"dev_cla" : " temperature " ,
"unit_of_meas" : " °F " ,
"uniq_id" : " smoke-x_probe_1_temp " ,
"name" : " Smoke X Probe 1 Temp " ,
"val_tpl" : " {{value_json.probe_1_temp}} "
}Além disso, o aplicativo assinará o tópico de status do assistente doméstico para anúncios de nascimento. Se o assistente doméstico reiniciar, o anúncio de nascimento sinalizará ao pedido para publicar novamente as mensagens de descoberta. Os nomes de tópicos de assistente doméstico padrão são usados, mas podem ser personalizados na interface do usuário da Web ESP32.
O aplicativo fornece uma API HTTP (usada pelo gráfico de histórico de temperatura da interface do usuário da web) que também pode ser usado por qualquer outro cliente capaz de enviar solicitações HTTP para o ESP32.
Resposta:
{
"probe_1" : {
"current_temp" : 95.3 ,
"alarm_max" : 185 ,
"alarm_min" : 32 ,
"history" : [ 95.1 , 95.2 , 95.3 ]
},
"probe_2" : {
"current_temp" : 165.9 ,
"alarm_max" : 91 ,
"alarm_min" : 50 ,
"history" : [ 165.7 , 165.8 , 165.9 ]
},
"billows" : false
}Nota: os dispositivos X4 também incluirão dados adicionais para as sondas 3 e 4
PRS para corrigir bugs ou aprimorar/adicionar funcionalidade são bem -vindos! Se você construiu o aplicativo com sucesso, você terá tudo o que é necessário para modificá -lo.
Pode ser útil monitorar os logs do ESP32 durante a configuração inicial do aplicativo para ajudar na depuração. Enquanto o ESP32 ainda está conectado ao seu computador, monitore os registros em execução:
$ idf.py monitor
Este aplicativo foi construído com o ESP-IDF V4 SDK e possui dependências externas com os seguintes drivers Lora Modem:
A interface da Web é gravada em Vue e é carregada no sistema de arquivos flash esp32 como ativos estáticos compactados, que são servidos pelo servidor da Web Esp32. Para ajudar no desenvolvimento e nos testes manuais, a interface da web pode ser visualizada com:
$ ./mock_web_ui.sh