Automatisation IoT avec n8n : surveillance de capteurs à distance
Ce workflow n8n est conçu pour automatiser la surveillance de capteurs IoT à distance en utilisant MQTT et InfluxDB. Dans un contexte où la collecte de données en temps réel est cruciale, ce système permet aux entreprises de suivre l'état de leurs capteurs sans intervention manuelle. Les cas d'usage incluent la gestion de l'environnement, la surveillance de la production et le suivi des équipements.
- Étape 1 : le workflow démarre avec un déclencheur MQTT qui capte les données des capteurs.
- Étape 2 : les données reçues sont ensuite préparées grâce à un nœud de traitement qui utilise du code JavaScript pour formater les informations.
- Étape 3 : enfin, les données sont envoyées à un bucket InfluxDB via une requête HTTP, garantissant ainsi leur stockage pour une analyse ultérieure. Ce processus permet non seulement de gagner du temps, mais aussi de réduire les erreurs humaines dans la collecte des données. En intégrant ce workflow, les entreprises peuvent améliorer leur réactivité face aux anomalies détectées par les capteurs, optimisant ainsi leur efficacité opérationnelle et leur prise de décision.
Workflow n8n IoT, MQTT, InfluxDB : vue d'ensemble
Schéma des nœuds et connexions de ce workflow n8n, généré à partir du JSON n8n.
Workflow n8n IoT, MQTT, InfluxDB : détail des nœuds
Inscris-toi pour voir l'intégralité du workflow
Inscription gratuite
S'inscrire gratuitementBesoin d'aide ?{
"id": "6pOGYw5O3iOY1Gc6",
"meta": {
"instanceId": "7221598654c32899e94731aab144bdcd338735c2ac218dc0873131caa0be0ef8",
"templateCredsSetupCompleted": true
},
"name": "Remote IOT Sensor monitoring via MQTT and InfluxDB",
"tags": [],
"nodes": [
{
"id": "4997f226-f236-4d27-bea4-904744d9ff07",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
-700,
-360
],
"parameters": {
"width": 340,
"height": 120,
"content": "MQTT trigger subscribed to a topic called wokwi-weather via a Mosquitto MQTT broker. The trigger receives the temperature and humidity payloads from a DHT22 sensor connected to a remote ESP32 microcontroller "
},
"typeVersion": 1
},
{
"id": "9d4f1da6-fda3-4312-a6b1-bd0ac499dde7",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-240,
-360
],
"parameters": {
"height": 100,
"content": "Javascript code to extract the temperature and humidity values to ensure correct JSON format for the database"
},
"typeVersion": 1
},
{
"id": "d8f01dba-5019-457e-8c1a-99c802282fdf",
"name": "Sticky Note3",
"type": "n8n-nodes-base.stickyNote",
"position": [
140,
-360
],
"parameters": {
"width": 260,
"height": 120,
"content": "HTTP request node posts temperature and humidity data from the DHT22 sensor to the InfluxDB data bucket running on a local host http://localhost:8086"
},
"typeVersion": 1
},
{
"id": "020858a6-7771-4322-8eb6-b83e99b3563d",
"name": "Remote Sensor MQTT Trigger",
"type": "n8n-nodes-base.mqttTrigger",
"position": [
-580,
-220
],
"parameters": {
"topics": "wokwi-weather",
"options": {}
},
"credentials": {
"mqtt": {
"id": "xtd75tjk1hKlQOba",
"name": "MQTT account"
}
},
"typeVersion": 1
},
{
"id": "51e6f59f-9b93-4121-8db4-7f47b929fdf5",
"name": "Data ingest to InfluxDB bucket",
"type": "n8n-nodes-base.httpRequest",
"position": [
200,
-220
],
"parameters": {
"url": "http://localhost:8086/api/v2/write?orgID=<Organization ID>&bucket=<InfluxDB bucket name>&precision=s",
"body": "={{ $json.payload }}",
"method": "POST",
"options": {},
"sendBody": true,
"contentType": "raw",
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "Authorization",
"value": "Token <API Token value generated in InfluxDB>"
}
]
}
},
"notesInFlow": true,
"typeVersion": 4.2
},
{
"id": "6abe1212-b128-492f-b485-401a4315fcbc",
"name": "Payload data preparation node",
"type": "n8n-nodes-base.code",
"position": [
-180,
-220
],
"parameters": {
"jsCode": "// Try to parse the incoming message as JSON\nlet data;\ntry {\n data = JSON.parse($json.message); // $json.message is expected to be a JSON string\n} catch (e) {\n // If parsing fails, throw an error\n throw new Error(\"Invalid JSON in MQTT message\");\n}\n\n// Get the topic from the input, or use a default value\nconst topic = $json.topic || \"unknown-topic\";\n\n// Make sure humidity and temp are numbers\nif (typeof data.humidity !== \"number\" || typeof data.temp !== \"number\") {\n throw new Error(\"Missing or invalid humidity/temp in MQTT message\");\n}\n\n// Create a formatted string like: \"topic_name humidity=45,temp=22\"\nconst line = `${topic} humidity=${data.humidity},temp=${data.temp}`;\n\n// Return the result in the expected format\nreturn [\n {\n json: {\n payload: line\n }\n }\n];"
},
"typeVersion": 2
}
],
"active": false,
"pinData": {},
"settings": {
"executionOrder": "v1"
},
"versionId": "d1311dca-5edf-4f14-86b9-629937cd3416",
"connections": {
"Remote Sensor MQTT Trigger": {
"main": [
[
{
"node": "Payload data preparation node",
"type": "main",
"index": 0
}
]
]
},
"Payload data preparation node": {
"main": [
[
{
"node": "Data ingest to InfluxDB bucket",
"type": "main",
"index": 0
}
]
]
}
}
}Workflow n8n IoT, MQTT, InfluxDB : pour qui est ce workflow ?
Ce workflow s'adresse aux entreprises technologiques, aux équipes de développement IoT et aux professionnels de la data qui cherchent à automatiser la collecte de données à partir de capteurs. Un niveau technique intermédiaire est recommandé pour sa mise en place.
Workflow n8n IoT, MQTT, InfluxDB : problème résolu
Ce workflow résout le problème de la collecte manuelle des données des capteurs IoT, qui peut être chronophage et sujet à des erreurs. En automatisant ce processus, il élimine les frustrations liées à la surveillance manuelle et réduit le risque de perte de données critiques. Les utilisateurs bénéficient d'une surveillance en temps réel et d'une meilleure gestion des ressources, ce qui leur permet d'optimiser leurs opérations.
Workflow n8n IoT, MQTT, InfluxDB : étapes du workflow
Étape 1 : le workflow est déclenché par un événement MQTT qui capte les données des capteurs.
- Étape 1 : les données sont ensuite traitées par un nœud de code qui prépare le payload pour l'envoi.
- Étape 2 : enfin, les données formatées sont envoyées à InfluxDB via une requête HTTP pour stockage et analyse.
Workflow n8n IoT, MQTT, InfluxDB : guide de personnalisation
Pour personnaliser ce workflow, vous pouvez modifier les paramètres du nœud MQTT pour ajuster les sujets que vous souhaitez surveiller. Il est également possible d'adapter le code JavaScript dans le nœud de préparation des données pour répondre à vos besoins spécifiques en matière de formatage. Assurez-vous de configurer correctement l'URL du bucket InfluxDB pour garantir que les données sont stockées au bon endroit. Vous pouvez également intégrer d'autres outils ou services en ajoutant des nœuds supplémentaires selon vos besoins.