From c0be2af16f2cc1296272b90ec6193a00b702ffd8 Mon Sep 17 00:00:00 2001 From: Thomas Equeter Date: Tue, 23 Sep 2025 19:49:21 +0200 Subject: [PATCH] deduplicate the discovery JavaScript Move the code that makes a discovery JSON from the latest data JSON to a master item, rather than duplicated in every discovery. --- template_sensors_7.4.xml | 207 +++++++++++++++------------------------ 1 file changed, 79 insertions(+), 128 deletions(-) diff --git a/template_sensors_7.4.xml b/template_sensors_7.4.xml index 84cb222..8e95e9c 100644 --- a/template_sensors_7.4.xml +++ b/template_sensors_7.4.xml @@ -31,6 +31,54 @@ + + 898f731c944446d4b895a6282c229a08 + Sensors discovery JSON + DEPENDENT + sensors.discovery + 0 + TEXT + + + JAVASCRIPT + + var inp = JSON.parse(value); +var out = []; +function isNumeric(x) { return /^-?\d+(\.\d+)?$/.test(String(x)); } + +Object.keys(inp).forEach(function (drv) { + var v = inp[drv]; + Object.keys(v).forEach(function (sens) { + var s = v[sens]; + var label = s.label ? s.label : sens; + var type = s.sensor_type; // "temp", "in", "fan", "power", etc. + if (!type) return; + + // mimic the current temp filter: only include temps with numeric input + if (type === "temp" && !isNumeric(s.input)) return; + + out.push({ + "{#DRIVER}": drv, + "{#SENSOR}": sens, + "{#LABEL}": label, + "{#TYPE}": type + }); + }); +}); +return JSON.stringify(out); + + + + + sensors + + + + component + raw + + + @@ -38,6 +86,14 @@ Discover Fans DEPENDENT sensors.discovery.fan + + + + {#TYPE} + ^fan$ + + + DISABLE_NEVER @@ -85,44 +141,22 @@ - sensors + sensors.discovery - - - JAVASCRIPT - - var inp = JSON.parse(value); -var out = []; - -Object.keys(inp).forEach(function(drv) { - var v = inp[drv]; - - Object.keys(v).forEach(function(sens) { - var v2 = v[sens]; - var label = sens; - if (v2.label) { - label = v2.label; - } - if (v2.sensor_type == "fan") { - out.push({ - "{#DRIVER}": drv, - "{#SENSOR}": sens, - "{#LABEL}": label - }) - } - }) -}) - -return JSON.stringify(out); - - - acd8137d037a4ae390660a23374a56c9 Discover Power DEPENDENT sensors.discovery.power + + + + {#TYPE} + ^power$ + + + DISABLE_NEVER @@ -163,38 +197,8 @@ return JSON.stringify(out); - sensors + sensors.discovery - - - JAVASCRIPT - - var inp = JSON.parse(value); -var out = []; - -Object.keys(inp).forEach(function(drv) { - var v = inp[drv]; - - Object.keys(v).forEach(function(sens) { - var v2 = v[sens]; - var label = sens; - if (v2.label) { - label = v2.label; - } - if (v2.sensor_type == "power") { - out.push({ - "{#DRIVER}": drv, - "{#SENSOR}": sens, - "{#LABEL}": label - }) - } - }) -}) - -return JSON.stringify(out); - - - 393379127d0f48f4bb3763c00273ba43 @@ -202,11 +206,11 @@ return JSON.stringify(out); DEPENDENT sensors.discovery.temp + AND - {#VALUE} - ^-?\d+$ - A + {#TYPE} + ^temp$ @@ -288,45 +292,22 @@ return JSON.stringify(out); - sensors + sensors.discovery - - - JAVASCRIPT - - var inp = JSON.parse(value); -var out = []; - -Object.keys(inp).forEach(function(drv) { - var v = inp[drv]; - - Object.keys(v).forEach(function(sens) { - var v2 = v[sens]; - var label = sens; - if (v2.label) { - label = v2.label; - } - if (v2.sensor_type == "temp") { - out.push({ - "{#DRIVER}": drv, - "{#SENSOR}": sens, - "{#LABEL}": label, - "{#VALUE}": v2.input - }) - } - }) -}) - -return JSON.stringify(out); - - - d19dbbd218514acc9ae77c19cb1f9c44 Discover Voltage DEPENDENT sensors.discovery.voltage + + + + {#TYPE} + ^in$ + + + DISABLE_NEVER @@ -393,38 +374,8 @@ return JSON.stringify(out); - sensors + sensors.discovery - - - JAVASCRIPT - - var inp = JSON.parse(value); -var out = []; - -Object.keys(inp).forEach(function(drv) { - var v = inp[drv]; - - Object.keys(v).forEach(function(sens) { - var v2 = v[sens]; - var label = sens; - if (v2.label) { - label = v2.label; - } - if (v2.sensor_type == "in") { - out.push({ - "{#DRIVER}": drv, - "{#SENSOR}": sens, - "{#LABEL}": label - }) - } - }) -}) - -return JSON.stringify(out); - - -