let base = "homeassistant/sensor"; let device = { name: "Stromzähler", identifiers: ["vzlogger-sml"], manufacturer: "EFR GmbH", model: "SGM-D4-A920N", via_device: "vzlogger" }; // Alle Channels aus deiner vzlogger.conf let channels = [ { "uuid": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX", "measurement_name": "Zählerstand Bezug", "unit": "Wh", "device_class": "energy", "icon": "mdi:counter" }, { "uuid": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX", "measurement_name": "Zählerstand Lieferung", "unit": "Wh", "device_class": "energy", "icon": "mdi:counter" }, { "uuid": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX", "measurement_name": "Leistung gesamt", "unit": "W", "device_class": "power", "icon": "mdi:gauge" }, { "uuid": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX", "measurement_name": "Leistung L1", "unit": "W", "device_class": "power", "icon": "mdi:gauge" }, { "uuid": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX", "measurement_name": "Leistung L2", "unit": "W", "device_class": "power", "icon": "mdi:gauge" }, { "uuid": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX", "measurement_name": "Leistung L3", "unit": "W", "device_class": "power", "icon": "mdi:gauge" }, { "uuid": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX", "measurement_name": "Spannung U1", "unit": "V", "device_class": "voltage", "icon": "mdi:sine-wave" }, { "uuid": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX", "measurement_name": "Spannung U2", "unit": "V", "device_class": "voltage", "icon": "mdi:sine-wave" }, { "uuid": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX", "measurement_name": "Spannung U3", "unit": "V", "device_class": "voltage", "icon": "mdi:sine-wave" }, { "uuid": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX", "measurement_name": "Stromstärke I1", "unit": "A", "device_class": "current", "icon": "mdi:current-ac" }, { "uuid": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX", "measurement_name": "Stromstärke I2", "unit": "A", "device_class": "current", "icon": "mdi:current-ac" }, { "uuid": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX", "measurement_name": "Stromstärke I3", "unit": "A", "device_class": "current", "icon": "mdi:current-ac" }, { "uuid": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX", "measurement_name": "Phasenwinkel U2:U1", "unit": "°", "icon": "mdi:angle-acute" }, { "uuid": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX", "measurement_name": "Phasenwinkel U3:U1", "unit": "°", "icon": "mdi:angle-acute" }, { "uuid": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX", "measurement_name": "Phasenwinkel I1:U1", "unit": "°", "icon": "mdi:angle-acute" }, { "uuid": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX", "measurement_name": "Phasenwinkel I2:U2", "unit": "°", "icon": "mdi:angle-acute" }, { "uuid": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX", "measurement_name": "Phasenwinkel I3:U3", "unit": "°", "icon": "mdi:angle-acute" }, { "uuid": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX", "measurement_name": "Netzfrequenz", "unit": "Hz", "device_class": "frequency", "icon": "mdi:waveform" } ]; let msgs = []; channels.forEach((ch, index) => { let id = "vz_" + ch.uuid.replace(/-/g, ""); let config = { name: ch.measurement_name, state_topic: `vzlogger/chn${index}/raw`, // payload kommt von raw unique_id: id, unit_of_measurement: ch.unit, state_class: "measurement", device: device }; if (ch.device_class) config.device_class = ch.device_class; if (ch.icon) config.icon = ch.icon; msgs.push({ topic: `${base}/${id}/config`, payload: JSON.stringify(config), qos: 1, retain: true }); }); return [msgs];