From 93356cef90089c17132c3975f3e99363064b5270 Mon Sep 17 00:00:00 2001 From: Michael Scheidel Date: Sat, 27 Dec 2025 19:09:57 +0100 Subject: [PATCH] Dateien nach "workflow/n8n/workflows" hochladen --- .../workflows/Wärmepumpe_ Tagesverbrauch.json | 576 ++++++++++++++++++ 1 file changed, 576 insertions(+) create mode 100644 workflow/n8n/workflows/Wärmepumpe_ Tagesverbrauch.json diff --git a/workflow/n8n/workflows/Wärmepumpe_ Tagesverbrauch.json b/workflow/n8n/workflows/Wärmepumpe_ Tagesverbrauch.json new file mode 100644 index 0000000..d747c79 --- /dev/null +++ b/workflow/n8n/workflows/Wärmepumpe_ Tagesverbrauch.json @@ -0,0 +1,576 @@ +{ + "name": "Wärmepumpe: Tagesverbrauch", + "nodes": [ + { + "parameters": { + "jsCode": "// INPUT: items = [{ json: { data: \"
...
\" } }]\n// OUTPUT: items = [{ json: { Adresse, Bezeichnung, Wert, Einheit, Waehrung, Raw, Key } }, ...]\n\n// kleine Helfer\nfunction slug(s) {\n return String(s)\n .normalize('NFD').replace(/[\\u0300-\\u036f]/g, '')\n .replace(/ä/g,'ae').replace(/ö/g,'oe').replace(/ü/g,'ue')\n .replace(/Ä/g,'Ae').replace(/Ö/g,'Oe').replace(/Ü/g,'Ue')\n .replace(/ß/g,'ss')\n .replace(/[^A-Za-z0-9]+/g,'_')\n .replace(/^_+|_+$/g,'')\n .toLowerCase();\n}\n\nfunction parseNumUnit(raw) {\n if (!raw) return { value: null, unit: null, currency: null };\n let t = raw.replace(/ /g, ' ').trim();\n\n // Währung vorne oder hinten (€, $, £)\n let currency = null;\n const curLead = t.match(/^[€$£]/);\n const curTrail = t.match(/[€$£]$/);\n if (curLead) { currency = curLead[0]; t = t.slice(1).trim(); }\n else if (curTrail) { currency = curTrail[0]; t = t.slice(0, -1).trim(); }\n\n // Zahl (Komma oder Punkt)\n const numMatch = t.match(/-?\\d+(?:[.,]\\d+)?/);\n const value = numMatch ? parseFloat(numMatch[0].replace(',', '.')) : null;\n const unit = numMatch ? (t.replace(numMatch[0], '').trim() || null) : null;\n\n return { value, unit, currency };\n}\n\n// 1) HTML einsammeln (idR nur ein Item)\nconst html = items.map(i => i.json?.data ?? i.json?.body ?? i.json?.html ?? '').join('\\n');\n\n// 2) VALUE-Blöcke parsen\nconst re = /
\\s*