{ "nodes": [ { "name": "SFTP zip file content", "type": "n8n-nodes-base.ftp", "position": [ 1520, 680 ], "parameters": { "path": "=zigbee_backups/zigbee_backup_{{ new Date().toISOString().replaceAll(':','_') }}.zip", "protocol": "sftp", "operation": "upload" }, "credentials": { "sftp": { "name": "SFTP Zigbee Backups" } }, "typeVersion": 1, "id": "baa114b6-43be-461e-9c00-eca4bf11f82a", "notes": "This ftp node performs automated tasks as part of the workflow." }, { "name": "CRON Monday 2:45 am", "type": "n8n-nodes-base.scheduleTrigger", "position": [ 860, 440 ], "parameters": { "rule": { "interval": [ { "field": "cronExpression", "expression": "45 2 * * 1" } ] } }, "typeVersion": 1.1, "id": "d8749285-9436-4381-b9d0-fdce91f059bc", "notes": "This scheduleTrigger node performs automated tasks as part of the workflow." }, { "name": "Send Zigbee2MQTT backup request", "type": "n8n-nodes-base.mqtt", "position": [ 1040, 440 ], "parameters": { "topic": "zigbee2mqtt/bridge/request/backup", "message": "getbackup", "options": {}, "sendInputData": false }, "credentials": { "mqtt": { "name": "MQTT account" } }, "typeVersion": 1, "id": "c0e4d72b-0cb2-4699-b2b4-936135b2fde2", "notes": "This mqtt node performs automated tasks as part of the workflow." }, { "name": "MQTT Trigger - Backup Response", "type": "n8n-nodes-base.mqttTrigger", "position": [ 860, 680 ], "parameters": { "topics": "zigbee2mqtt/bridge/response/backup", "options": {} }, "credentials": { "mqtt": { "name": "MQTT account" } }, "typeVersion": 1, "id": "6cc320b1-ad2f-467f-a2f1-bb4d46662d07", "notes": "This mqttTrigger node performs automated tasks as part of the workflow." }, { "name": "Parse JSON Object from Message Text", "type": "n8n-nodes-base.code", "position": [ 1080, 680 ], "parameters": { "mode": "runOnceForEachItem", "jsCode": "\nlet containerObject = JSON.parse($json.message);\nlet messageObject = containerObject.data;\nreturn messageObject;" }, "typeVersion": 2, "id": "71389cf8-278c-4104-8fe3-2933fcd0736d", "notes": "This code node performs automated tasks as part of the workflow." }, { "name": "Convert to File - base64 to binary", "type": "n8n-nodes-base.convertToFile", "position": [ 1300, 680 ], "parameters": { "options": {}, "operation": "toBinary", "sourceProperty": "zip" }, "typeVersion": 1, "id": "61ae5760-60ae-4d23-8004-eab93624088f", "notes": "This convertToFile node performs automated tasks as part of the workflow." }, { "id": "error-569c784c", "name": "Error Handler", "type": "n8n-nodes-base.stopAndError", "typeVersion": 1, "position": [ 1000, 400 ], "parameters": { "message": "Workflow execution error", "options": {} } } ], "connections": {}, "name": "Ftp Workflow", "description": "Automated workflow: Ftp Workflow. This workflow processes data and performs automated tasks.", "settings": { "executionOrder": "v1", "saveManualExecutions": true, "callerPolicy": "workflowsFromSameOwner", "errorWorkflow": null, "timezone": "UTC", "executionTimeout": 3600, "maxExecutions": 1000, "retryOnFail": true, "retryCount": 3, "retryDelay": 1000 }, "meta": { "instanceId": "workflow-4e294a2b", "versionId": "1.0.0", "createdAt": "2025-09-29T07:07:42.587272", "updatedAt": "2025-09-29T07:07:42.587284", "owner": "n8n-user", "license": "MIT", "category": "automation", "status": "active", "priority": "high", "environment": "production" }, "tags": [ "automation", "n8n", "production-ready", "excellent", "optimized" ], "notes": "Excellent quality workflow: Ftp Workflow. This workflow has been optimized for production use with comprehensive error handling, security, and documentation." }