Esta es una aplicación ESP32+Lora que recibe la señal de RF de un termómetro remoto de Smoke X2 o Smoke X4 y publica la información a un corredor MQTT. Esto funcionará junto con los receptores de humo x2/x4 existentes (es decir, todos los receptores emparejados seguirán funcionando). Este proyecto fue diseñado específicamente para integrarse con Home Assistant, pero también puede usarse con cualquier otra aplicación basada en MQTT. Además, esta aplicación puede funcionar de manera independiente (interfaz WLAN en modo AP sin MQTT o Asistente de inicio) para el uso de campo.
Nota Esta aplicación no es compatible con los productos originales de Smoke o Thermoworks Signals.
El Smoke X es sólidamente construido, preciso, tiene un gran rango de RF y no necesita Internet para funcionar. Pero la unidad receptor proporcionada solo muestra las lecturas de sondas actuales, sin medios de grabación o tendencias de seguimiento.

Esta aplicación permite a los usuarios de Smoke X recopilar los datos de temperatura de la señal de RF y visualizar el historial de temperatura a través de una interfaz de usuario web (servida por el ESP32), un tablero de asistentes doméstico y/o cualquier otra herramienta de visualización de datos.



Todos los datos se adquieren, procesan y almacenan localmente como se muestra a continuación:
diagrama de flujo LR
Base -> | Lora RF | ESP32
mqclient -> mq
MQ -> HA
web -> navegador (cualquier navegador web)
Subgraph Smoke x2/x4
PONDIDAS -> Base (estación base) -> | Lora RF | Recv (receptor)
OBILLO -> BASE
fin
Subgraph ESP32 [Smoke-X-Recleiver]
MQClient (Cliente MQTT)
web (servidor HTTP)
fin
Subgraph MQTTB [MQTT Broker]
MQ (tema de Homeassistant)
fin
subgraph Asistente de casa
mq_int
fin
Subgraph ha_dev [dispositivo HA para x2/x4]
E1 (entidades de sensor binario)
E2 (entidades sensores)
fin
Subgraph MQ_int [Integración MQTT]
ha (descubrimiento automático) -> ha_dev
HA_DEV
fin
Incluso si no es un usuario de asistente de origen, aún puede usar la interfaz web incorporada de esta aplicación para monitorear sus temperaturas y observar las tendencias.
Se requiere un ESP32 con transceptor Semtech Lora adjunto que opere en la banda ISM de 915 MHz. Una placa combinada de desarrollo ESP32+Lora, como el Heltec Wifi Lora 32 V2 o V3, es ideal, pero cualquier placa ESP32 con un SPI SX1276 o SX1262 conectado debería funcionar.
$ source /path/to/esp-idf/export.sh$ git clone --recurse-submodules [email protected]:G-Two/smoke-x-receiver.git
$ cd smoke-x-receiverLa configuración predeterminada para este proyecto se escribió para el Heltec Wifi Lora 32 V3 (basado en el SX1262). Si está utilizando este hardware exacto, probablemente pueda omitir esta sección. Si se ejecuta en cualquier otro hardware, desea personalizar la compilación o si la compilación predeterminada no funciona, deberá ejecutar Menuconfig:
$ idf.py menuconfigNota: Si está utilizando un SX1276 (como el Heltec Wifi Lora 32 V2 ), debe seleccionar el controlador SX127X en el menú "Smoke X Receptor HW/App Config" y configurar las asignaciones de pin SPI SX127X
Es posible que se necesiten cambios de configuración adicionales para admitir su hardware específico u otras necesidades
$ idf.py set-target esp32s3 # If using a Heltec WiFi LoRa 32 v3, otherwise set target as appropriate to your hardware
$ idf.py flashLa aplicación y los activos web se construirán y se escribirán en el Flash ESP32.
Después de que se muestre el ESP32, se deben configurar y guardar varios elementos en NVRAM. La configuración de estos elementos persistirá después del reinicio ESP32, así como las actualizaciones de software de la aplicación.
El dispositivo predeterminará el modo AP si la información WLAN no se ha configurado, o si la conexión falla. La información de modo AP predeterminada (configurable en menuconfig) es:
Conéctese al AP del ESP32 y use un navegador web para navegar a http://192.168.4.1/wlan, se le presentará una interfaz de usuario web autoexplantada para configurar el dispositivo en su red doméstica. Se admiten WPA2-PSK y WPA2-Enterprise (EAP-TTLS). Una vez que aplique su información de autenticación de red, el dispositivo se restablecerá e intentará unirse a su red doméstica. El ESP32 suministrará una solicitud de nombre de host del cliente DHCP para smoke_x . Una vez que encuentre el ESP32 en su red doméstica, puede continuar con el resto del proceso de configuración. Si el ESP32 no se une a su red, volverá al modo AP predeterminado.
La pestaña "Emparejamiento" de la interfaz de usuario web indicará que el dispositivo requiere emparejarse con una unidad base Smoke X. Si el dispositivo está en un estado no apartado, alternará el monitoreo de los dos canales de sincronización (920 MHz para X2, 915 MHz para X4), y se combinará con la primera transmisión de sincronización de Smoke X que recibe. Para emparejar, coloque la unidad base Smoke X en modo sincronizado, lo que hará que envíe ráfagas de sincronización cada tres segundos. Una vez que el ESP32 recibe y analiza la explosión, transmitirá una respuesta de sincronización en la frecuencia de destino, y la unidad base volverá al funcionamiento normal. En este punto, puede confirmar en la interfaz de usuario web que el dispositivo está emparejado con una ID y frecuencia específicas del dispositivo. Esta es la única vez que el ESP32 transmitirá una señal Lora. El dispositivo siempre puede no apartarse a través de la interfaz de usuario web. El emparejamiento/no emparejamiento del ESP32 no afectará el estado de emparejamiento de ningún otro dispositivo.
Una vez emparejado, la página de estado mostrará un gráfico de temperatura.
La interfaz de usuario web también se utiliza para configurar el dispositivo para conectarse a un corredor MQTT. El URI MQTT es el único campo obligatorio, el resto es opcional y dependerá de su configuración específica de MQTT Broker. La autenticación del servidor MQTTS se admite ingresando un CA PEM de confianza a través de la interfaz de usuario web. PKI Client Auth no es compatible actualmente.
Si MQTT está configurado y habilitado, la aplicación publicará mensajes de estado al recibir una transmisión de RF desde la estación base Smoke X. La estación base transmite cada treinta segundos. Los contenidos del mensaje publicado son:
{
"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: Los dispositivos X4 también incluirán datos adicionales para las sondas 3 y 4
Esta solicitud admite el descubrimiento de MQTT Assistant MQTT. Si su instancia de asistente de inicio tiene la integración MQTT configurada para el descubrimiento, los siguientes sensores de Smoke X se agregarán automáticamente:
Después de una conexión exitosa al corredor MQTT, el dispositivo configurará cada sensor publicando mensajes de descubrimiento similares a los siguientes (uno para cada entidad):
{
"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}} "
}Además, la solicitud se suscribirá al tema de estado del asistente doméstico para los anuncios de nacimiento. Si el asistente de origen se reinicia, el anuncio de nacimiento indicará a la solicitud para volver a publicar los mensajes de descubrimiento. Se utilizan nombres de temas de asistente de inicio predeterminados, pero se pueden personalizar en la interfaz de usuario web ESP32.
La aplicación proporciona una API HTTP (utilizada por el gráfico de historial de temperatura de la interfaz de usuario de la web) que también puede ser utilizado por cualquier otro cliente que pueda enviar solicitudes HTTP al ESP32.
Respuesta:
{
"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: Los dispositivos X4 también incluirán datos adicionales para las sondas 3 y 4
¡PRS para arreglar los errores o mejorar/agregar la funcionalidad son bienvenidos! Si ha creado con éxito la aplicación, tiene todo lo necesario para modificarla.
Puede ser útil monitorear los registros ESP32 durante la configuración de la aplicación inicial para ayudar en la depuración. Mientras que el ESP32 todavía está conectado a su computadora, monitoree los registros ejecutando:
$ idf.py monitor
Esta aplicación está construida con el SDK ESP-IDF V4 y tiene dependencias externas con los siguientes controladores de módem Lora:
La interfaz web está escrita en Vue y se carga en el sistema de archivos flash ESP32 como activos web estáticos comprimidos que son atendidos por el servidor web ESP32. Para ayudar en el desarrollo y las pruebas manuales, la interfaz web se puede ver con:
$ ./mock_web_ui.sh