Il s'agit d'une application ESP32 + LORA qui reçoit le signal RF à partir d'un thermomètre à distance Thermoworks Smoke X2 ou Smoke X4 et publie les informations à un courtier MQTT. Cela fonctionnera aux côtés de tous les récepteurs de fumée x2 / x4 existants (c'est-à-dire que tous les récepteurs appariés fonctionneront toujours). Ce projet a été conçu spécifiquement pour s'intégrer à Home Assistant, mais peut également être utilisé avec toute autre application basée sur MQTT. De plus, cette application peut fonctionner de manière autonome (interface WLAN en mode AP sans MQTT ou assistant domestique) pour une utilisation sur le terrain.
Remarque Cette application n'est pas compatible avec les produits d'origine Thermoworks Smoke ou Thermoworks.
La fumée X est solidement construite, précise, a une excellente gamme RF et n'a pas besoin d'Internet pour fonctionner. Mais l'unité réceptrice fournie montre uniquement les lectures de sonde actuelles, sans moyen d'enregistrer ou de suivre les tendances.

Cette application permet aux utilisateurs de fumée X de collecter les données de température du signal RF et de visualiser l'historique de la température via une interface utilisateur Web (desservie par l'ESP32), un tableau de bord assistant à domicile et / ou tout autre outil de visualisation de données.



Toutes les données sont acquises, traitées et stockées localement comme indiqué ci-dessous:
Organigramme LR
base -> | Lora RF | ESP32
MQCIENT -> MQ
MQ -> ha
Web -> navigateur (tout navigateur Web)
Sub-Graph Smoke X2 / X4
Sondes -> base (station de base) -> | Lora RF | Recv (récepteur)
Bidlows -> base
fin
Sub-Graph ESP32 [Smoke-X-Receiver]
MQClient (client MQTT)
Web (serveur HTTP)
fin
Sub-Graph MQTTB [courtier MQTT]
MQ (sujet homeSSistant)
fin
Assistant à domicile Sub-Graph
MQ_INT
fin
Sub-Graph ha_dev [appareil ha pour x2 / x4]
E1 (entités de capteurs binaires)
E2 (entités capteurs)
fin
subgraph mq_int [intégration MQTT]
ha (découverte automatique) -> ha_dev
ha_dev
fin
Même si vous n'êtes pas un utilisateur d'assistant à domicile, vous pouvez toujours utiliser l'interface Web intégrée de cette application pour surveiller vos températures et surveiller les tendances.
Un ESP32 avec un émetteur-récepteur SEMTECH LORA attaché fonctionnant dans la bande ISM à 915 MHz est nécessaire. Une carte de développement ESP32 + LORA combinée telle que l'Heltec WiFi LORA 32 V2 ou V3 est idéale, mais toute carte ESP32 avec un SPI connecté SX1276 ou SX1262 devrait fonctionner.
$ source /path/to/esp-idf/export.sh$ git clone --recurse-submodules [email protected]:G-Two/smoke-x-receiver.git
$ cd smoke-x-receiverLa configuration par défaut de ce projet a été écrite pour l'Heltec WiFi LORA 32 V3 (basée sur le SX1262). Si vous utilisez ce matériel exact, vous pouvez probablement ignorer cette section. Si vous utilisez un autre matériel, souhaitez personnaliser la construction, ou si la version par défaut ne fonctionne pas, vous devrez exécuter Menuconfig:
$ idf.py menuconfigRemarque: Si vous utilisez un SX1276 (comme l'Heltec WiFi Lora 32 V2 ), vous devez sélectionner le pilote SX127X dans le menu "Smoke X Receiver HW / App Config" et configurer les affectations de broches SX127X SPI
Des modifications de configuration supplémentaires peuvent être nécessaires pour répondre à votre matériel spécifique ou à d'autres besoins
$ idf.py set-target esp32s3 # If using a Heltec WiFi LoRa 32 v3, otherwise set target as appropriate to your hardware
$ idf.py flashL'application et les actifs Web seront construits et écrits sur le flash ESP32.
Une fois l'ESP32 flashé, plusieurs éléments doivent être configurés et enregistrés sur NVRAM. La configuration de ces éléments persistera après la réinitialisation ESP32 ainsi que les mises à jour du logiciel d'application.
Le périphérique sera par défaut en mode AP si les informations WLAN n'ont pas été configurées ou si la connexion échoue. Les informations par défaut du mode AP (configurables dans Menuconfig) sont:
Connectez-vous à l'AP ESP32 et utilisez un navigateur Web pour accéder à http://192.168.4.1/wlan, vous serez présenté avec une interface utilisateur Web auto-explicative pour configurer l'appareil sur votre réseau domestique. WPA2-PSK et WPA2-ENTERprise (EAP-TTLS) sont pris en charge. Une fois que vous appliquez vos informations d'authentification réseau, l'appareil réinitialise et tentera de rejoindre votre réseau domestique. L'ESP32 fournira une demande d'hôte DHCP client pour smoke_x . Une fois que vous avez trouvé l'ESP32 sur votre réseau domestique, vous pouvez procéder au reste du processus de configuration. Si l'ESP32 ne parvient pas à rejoindre votre réseau, il reviendra en mode AP par défaut.
L'onglet "jumelage" de l'interface utilisateur Web indiquera que l'appareil nécessite un couple à une unité de base Smoke X. Si l'appareil est à l'état non apparié, il alternera la surveillance des deux canaux de synchronisation (920 MHz pour X2, 915 MHz pour X4) et s'associera à la première transmission de synchronisation X Smoke X qu'il reçoit. Pour coupler, placez l'unité de base de fumée x en mode synchronisé qui le fera envoyer des rafales de synchronisation toutes les trois secondes. Une fois que l'ESP32 reçoit et analyse l'éclatement, il transmettra une réponse de synchronisation sur la fréquence cible et l'unité de base reviendra au fonctionnement normal. À ce stade, vous pouvez confirmer dans l'interface utilisateur Web que l'appareil est associé à un ID de périphérique et à une fréquence spécifique. C'est la seule fois où l'ESP32 transmettra un signal LORA. L'appareil peut toujours être non apparié via l'interface utilisateur Web. L'appariement / non-apparition de l'ESP32 n'affectera pas l'état de couplage des autres appareils.
Une fois apparié, la page d'état affichera un graphique de température.
L'interface utilisateur Web est également utilisée pour configurer l'appareil pour se connecter à un courtier MQTT. L'URI MQTT est le seul champ obligatoire, le reste est facultatif et dépendra de votre configuration de courtier MQTT spécifique. L'authentification MQTTS Server est prise en charge en entrant un CA PEM de confiance via l'interface utilisateur Web. PKI Client Auth n'est pas actuellement pris en charge.
Si MQTT est configuré et activé, l'application publiera des messages d'état à la réception d'une transmission RF à partir de la station de base Smoke X. La station de base transmet toutes les trente secondes. Le contenu du message publié est:
{
"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 "
}Remarque: les appareils X4 comprendront également des données supplémentaires pour les sondes 3 et 4
Cette application prend en charge l'assistant à domicile MQTT Discovery. Si votre instance d'assistant à domicile a l'intégration MQTT configurée pour la découverte, les capteurs de fumée suivants seront automatiquement ajoutés:
Après une connexion réussie au courtier MQTT, l'appareil configurera chaque capteur en publiant des messages de découverte similaires à ce qui suit (un pour chaque entité):
{
"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}} "
}De plus, la demande souscrira à la rubrique de statut d'assistant à domicile pour les annonces de naissance. Si l'assistant à domicile redémarre, l'annonce de naissance signalera la demande de recul des messages de découverte. Les noms de sujets d'assistant à domicile par défaut sont utilisés, mais peuvent être personnalisés dans l'interface utilisateur Web ESP32.
L'application fournit une API HTTP (utilisée par le graphique de l'historique de la température de l'interface utilisateur) qui peut également être utilisée par tout autre client capable d'envoyer des demandes HTTP à l'ESP32.
Réponse:
{
"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
}Remarque: les appareils X4 comprendront également des données supplémentaires pour les sondes 3 et 4
Les PRS pour corriger les bogues ou améliorer / ajouter les fonctionnalités sont les bienvenus! Si vous avez construit avec succès l'application, vous avez tout nécessaire pour le modifier.
Il peut être utile de surveiller les journaux ESP32 lors de la configuration initiale de l'application pour faciliter le débogage. Alors que l'ESP32 est toujours branché sur votre ordinateur, surveillez les journaux en exécutant:
$ idf.py monitor
Cette application est construite avec le SDK ESP-IDF V4 et possède des dépendances externes avec les pilotes de modem LORA suivants:
L'interface Web est écrite en Vue et est chargée sur le système de fichiers flash ESP32 en tant qu'actifs Web statiques compressés qui sont desservis par le serveur Web ESP32. Pour aider au développement et aux tests manuels, l'interface Web peut être prévisualisée avec:
$ ./mock_web_ui.sh