Der SGM-D4 der EFR GmbH aus Münchgen kann über eine optische Datenschnittstelle IR-Schnittstelle ausgelesen werden.
Der Zähler ist als eigenständiges Gerät (moderne Messeinrichtung) einsetzbar. In Kombination mit dem Smart Meter Gateway bildet der SGM-D4 ein intelligentes Messsystem (iMSys). Beim Einsatz im Lastmanagement und bei der EEG-Einspeisung kann eine Steuerbox als zusätzliche Komponente, die über die CLS-Schnittstelle durch das Gateway zur Leitstelle angebunden wird, verwendet werden.
Der Zähler sendet SML-Datenpakete im Sekundentakt.
Die Kundenschnittstelle dafür befindet sich rechts neben dem Display und ist mit Metall umgeben, so dass ein Magnet haften bleibt. Man benötigt zum Auslesen den IR-Schreib-Lesekopf.
In der Schnittstellenöffnung sitzt die Sendediode rechts.
Außerdem besitzt der Zähler einen Impulsausgang der je nach Stromausführung 5000 oder 10000 Imp./kWh liefert.
Für den Endverbraucher steht eine frontseitige optische Datenschnittstelle zur Verfügung. Die Schnittstellen arbeiten im „PUSH“ Betrieb. Nach PIN-Eingabe mit einer Taschenlampe (das Gerät hat keine Taste), kann „InF On“ für den Betrieb mit vollständigem Datensatz gesetzt werden. Gesendet wird SML-Push nach FNN-Spezifikationen „Basiszähler“ mit einer Datenrate von 9600 Bd und 8N1 Zeichenkodierung.
Die INFO Schnittstelle liefert nach PIN-Eingabe und Aktivierung von „InF On“ die Werte
| SGM-D4 | ||||||
|---|---|---|---|---|---|---|
| A | Klasse A (2 gemäß IEC 62053-21) | |||||
| B | Klasse B (1 gemäß IEC 62053-21) | |||||
| 6 | Direktanschluss 5(60) A - Ausführung | |||||
| 9 | Direktanschluss 5(100) A - Ausführung | |||||
| 0 | Bezugszähler (+A mit Rücklaufsperre) | |||||
| 1 | Lieferzähler (-A mit Rücklaufsperre) | |||||
| 2 | Zweirichtungszähler (+A/-A Bezug und Lieferung) | |||||
| 3 | Saldierender Lieferzähler (-A saldierend ohne Rücklaufsperre) | |||||
| 0 | Einzeltarifausführung | |||||
| W | Doppeltarifausführung (gesteuert über Klemmen 13/15) | |||||
| N | mit Klemmendeckelkontakt |
Eine vzlogger.conf für alle 18 OBIS-Kennzahlen eines SGM-D4-A920N für die Verwendung von vzlogger mit HTTP-Dienst (local) und MQTT (z.B. für Home Assistant):
{
"retry" : 0,
"verbosity" : 3,
"log" : "/var/log/vzlogger/vzlogger.log",
"local" : {
"enabled" : true,
"port" : 8084,
"index" : true,
"timeout" : 0,
"buffer" : 0
},
"mqtt": {
"enabled": true,
"host": "192.168.0.30",
"port": 1883,
"keepalive": 30,
"topic": "vzlogger",
"id": "vzlogger",
"user": "ein-mqtt-user",
"pass": "ein-sicheres-passwort"
},
"meters" : [
{
"enabled" : true,
"allowskip" : true,
"interval" : -1,
"aggtime" : -1,
"aggfixedinterval": false,
"channels" : [
{
"api" : "null",
"uuid" : "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
"identifier" : "1-0:1.8.0*255",
"measurement_name": "Zählerstand Bezug",
"aggmode" : "none",
"middleware" : "null",
"duplicates" : 0
},
{
"api" : "null",
"uuid" : "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
"identifier" : "1-0:2.8.0*255",
"measurement_name": "Zählerstand Lieferung",
"aggmode" : "none",
"middleware" : "null",
"duplicates" : 0
},
{
"api" : "null",
"uuid" : "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
"identifier" : "1-0:16.7.0*255",
"measurement_name": "Leistung (Momentan)",
"aggmode" : "none",
"middleware" : "null",
"duplicates" : 0
},
{
"api" : "null",
"uuid" : "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
"identifier" : "1-0:36.7.0*255",
"measurement_name": "Leistung L1 (Momentan)",
"aggmode" : "none",
"middleware" : "null",
"duplicates" : 0
},
{
"api" : "null",
"uuid" : "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
"identifier" : "1-0:56.7.0*255",
"measurement_name": "Leistung L2 (Momentan)",
"aggmode" : "none",
"middleware" : "null",
"duplicates" : 0
},
{
"api" : "null",
"uuid" : "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
"identifier" : "1-0:76.7.0*255",
"measurement_name": "Leistung L3 (Momentan)",
"aggmode" : "none",
"middleware" : "null",
"duplicates" : 0
},
{
"api" : "null",
"uuid" : "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
"identifier" : "1-0:32.7.0*255",
"measurement_name": "Spannung L1",
"aggmode" : "none",
"middleware" : "null",
"duplicates" : 0
},
{
"api" : "null",
"uuid" : "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
"identifier" : "1-0:52.7.0*255",
"measurement_name": "Spannung L2",
"aggmode" : "none",
"middleware" : "null",
"duplicates" : 0
},
{
"api" : "null",
"uuid" : "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
"identifier" : "1-0:72.7.0*255",
"measurement_name": "Spannung L3",
"aggmode" : "none",
"middleware" : "null",
"duplicates" : 0
},
{
"api" : "null",
"uuid" : "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
"identifier" : "1-0:31.7.0*255",
"measurement_name": "Stromstärke L1",
"aggmode" : "none",
"middleware" : "null",
"duplicates" : 0
},
{
"api" : "null",
"uuid" : "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
"identifier" : "1-0:51.7.0*255",
"measurement_name": "Stromstärke L2",
"aggmode" : "none",
"middleware" : "null",
"duplicates" : 0
},
{
"api" : "null",
"uuid" : "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
"identifier" : "1-0:71.7.0*255",
"measurement_name": "Stromstärke L3",
"aggmode" : "none",
"middleware" : "null",
"duplicates" : 0
},
{
"api" : "null",
"uuid" : "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
"identifier" : "1-0:81.7.1*255",
"measurement_name": "Phasenwinkel UL2:UL1",
"aggmode" : "none",
"middleware" : "null",
"duplicates" : 0
},
{
"api" : "null",
"uuid" : "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
"identifier" : "1-0:81.7.2*255",
"measurement_name": "Phasenwinkel UL3:UL1",
"aggmode" : "none",
"middleware" : "null",
"duplicates" : 0
},
{
"api" : "null",
"uuid" : "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
"identifier" : "1-0:81.7.4*255",
"measurement_name": "Phasenwinkel IL1:UL1",
"aggmode" : "none",
"middleware" : "null",
"duplicates" : 0
},
{
"api" : "null",
"uuid" : "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
"identifier" : "1-0:81.7.15*255",
"measurement_name": "Phasenwinkel IL2:UL2",
"aggmode" : "none",
"middleware" : "null",
"duplicates" : 0
},
{
"api" : "null",
"uuid" : "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
"identifier" : "1-0:81.7.26*255",
"measurement_name": "Phasenwinkel IL3:UL3",
"aggmode" : "none",
"middleware" : "null",
"duplicates" : 0
},
{
"api" : "null",
"uuid" : "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
"identifier" : "1-0:14.7.0*255",
"measurement_name": "Netzfrequenz",
"aggmode" : "none",
"middleware" : "null",
"duplicates" : 0
}
],
"protocol" : "sml",
"device" : "/dev/ttyUSB0",
"baudrate" : 9600,
"parity" : "8n1",
"use_local_time" : true
}
]
}
Um die Werte als Sensoren in Home Assistant zu bekommen kann man Rest-Entitäten zu den JSON-Werten des lokalen HTTP-Dienstes oder MQTT-Entitäten erzeugen.
Um die configuration.yaml nicht zu unübersichtlich werden zu lassen, sollte spätestens jetzt als best practice darin per sensor: !include_dir_merge_list sensors/ Sensoren in extra Dateien ins anzulegende Unterverzeichnis sensors ausgelagert werden, so auch die vzlogger.yaml, die um die eigenen UUIDs und die IP des vzlogger zu ergänzen ist:
- platform: rest
resource: http://192.168.0.3:8084/
value_template: >
{% for i in value_json.data %}
{% if i.uuid == "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX" %}
{{ '%.3f'%(i.tuples[0][1] / 1000) | float }}
{% endif %}
{% endfor %}
method: GET
name: "Zählerstand Bezug"
unit_of_measurement: kWh
device_class: energy
icon: mdi:counter
- platform: rest
resource: http://192.168.0.3:8084/
value_template: >
{% for i in value_json.data %}
{% if i.uuid == "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX" %}
{{ '%.3f'%(i.tuples[0][1] / 1000) | float }}
{% endif %}
{% endfor %}
method: GET
name: "Zählerstand Lieferung"
unit_of_measurement: kWh
device_class: energy
icon: mdi:counter
- platform: rest
resource: http://192.168.0.3:8084/
value_template: >
{% for i in value_json.data %}
{% if i.uuid == "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX" %}
{{ '%.1f'%(i.tuples[0][1]) | float }}
{% endif %}
{% endfor %}
method: GET
name: "Leistung (Momentan)"
unit_of_measurement: W
device_class: power
icon: mdi:gauge
- platform: rest
resource: http://192.168.0.3:8084/
value_template: >
{% for i in value_json.data %}
{% if i.uuid == "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX" %}
{{ '%.1f'%(i.tuples[0][1]) | float }}
{% endif %}
{% endfor %}
method: GET
name: "Leistung L1 (Momentan)"
unit_of_measurement: W
device_class: power
icon: mdi:gauge
- platform: rest
resource: http://192.168.0.3:8084/
value_template: >
{% for i in value_json.data %}
{% if i.uuid == "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX" %}
{{ '%.1f'%(i.tuples[0][1]) | float }}
{% endif %}
{% endfor %}
method: GET
name: "Leistung L2 (Momentan)"
unit_of_measurement: W
device_class: power
icon: mdi:gauge
- platform: rest
resource: http://192.168.0.3:8084/
value_template: >
{% for i in value_json.data %}
{% if i.uuid == "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX" %}
{{ '%.1f'%(i.tuples[0][1]) | float }}
{% endif %}
{% endfor %}
method: GET
name: "Leistung L3 (Momentan)"
unit_of_measurement: W
device_class: power
icon: mdi:gauge
- platform: rest
resource: http://192.168.0.3:8084/
value_template: >
{% for i in value_json.data %}
{% if i.uuid == "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX" %}
{{ '%.1f'%(i.tuples[0][1]) | float }}
{% endif %}
{% endfor %}
method: GET
name: "Spannung L1"
unit_of_measurement: V
device_class: voltage
icon: mdi:gauge
- platform: rest
resource: http://192.168.0.3:8084/
value_template: >
{% for i in value_json.data %}
{% if i.uuid == "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX" %}
{{ '%.1f'%(i.tuples[0][1]) | float }}
{% endif %}
{% endfor %}
method: GET
name: "Spannung L2"
unit_of_measurement: V
device_class: voltage
icon: mdi:gauge
- platform: rest
resource: http://192.168.0.3:8084/
value_template: >
{% for i in value_json.data %}
{% if i.uuid == "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX" %}
{{ '%.1f'%(i.tuples[0][1]) | float }}
{% endif %}
{% endfor %}
method: GET
name: "Spannung L3"
unit_of_measurement: V
device_class: voltage
icon: mdi:gauge
- platform: rest
resource: http://192.168.0.3:8084/
value_template: >
{% for i in value_json.data %}
{% if i.uuid == "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX" %}
{{ '%.1f'%(i.tuples[0][1]) | float }}
{% endif %}
{% endfor %}
method: GET
name: "Stromstärke L1"
unit_of_measurement: A
device_class: current
icon: mdi:gauge
- platform: rest
resource: http://192.168.0.3:8084/
value_template: >
{% for i in value_json.data %}
{% if i.uuid == "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX" %}
{{ '%.1f'%(i.tuples[0][1]) | float }}
{% endif %}
{% endfor %}
method: GET
name: "Stromstärke L2"
unit_of_measurement: A
device_class: current
icon: mdi:gauge
- platform: rest
resource: http://192.168.0.3:8084/
value_template: >
{% for i in value_json.data %}
{% if i.uuid == "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX" %}
{{ '%.1f'%(i.tuples[0][1]) | float }}
{% endif %}
{% endfor %}
method: GET
name: "Stromstärke L3"
unit_of_measurement: A
device_class: current
icon: mdi:gauge
- platform: rest
resource: http://192.168.0.3:8084/
value_template: >
{% for i in value_json.data %}
{% if i.uuid == "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX" %}
{{ '%.1f'%(i.tuples[0][1]) | float }}
{% endif %}
{% endfor %}
method: GET
name: "Phasenwinkel UL2:UL1"
unit_of_measurement: °
state_class: MEASUREMENT_ANGLE
icon: mdi:gauge
- platform: rest
resource: http://192.168.0.3:8084/
value_template: >
{% for i in value_json.data %}
{% if i.uuid == "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX" %}
{{ '%.1f'%(i.tuples[0][1]) | float }}
{% endif %}
{% endfor %}
method: GET
name: "Phasenwinkel UL3:UL1"
unit_of_measurement: °
state_class: MEASUREMENT_ANGLE
icon: mdi:gauge
- platform: rest
resource: http://192.168.0.3:8084/
value_template: >
{% for i in value_json.data %}
{% if i.uuid == "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX" %}
{{ '%.1f'%(i.tuples[0][1]) | float }}
{% endif %}
{% endfor %}
method: GET
name: "Phasenwinkel IL1:UL1"
unit_of_measurement: °
state_class: MEASUREMENT_ANGLE
icon: mdi:gauge
- platform: rest
resource: http://192.168.0.3:8084/
value_template: >
{% for i in value_json.data %}
{% if i.uuid == "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX" %}
{{ '%.1f'%(i.tuples[0][1]) | float }}
{% endif %}
{% endfor %}
method: GET
name: "Phasenwinkel IL2:UL2"
unit_of_measurement: °
state_class: MEASUREMENT_ANGLE
icon: mdi:gauge
- platform: rest
resource: http://192.168.0.3:8084/
value_template: >
{% for i in value_json.data %}
{% if i.uuid == "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX" %}
{{ '%.1f'%(i.tuples[0][1]) | float }}
{% endif %}
{% endfor %}
method: GET
name: "Phasenwinkel IL3:UL3"
unit_of_measurement: °
state_class: MEASUREMENT_ANGLE
icon: mdi:gauge
- platform: rest
resource: http://192.168.0.3:8084/
value_template: >
{% for i in value_json.data %}
{% if i.uuid == "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX" %}
{{ '%.1f'%(i.tuples[0][1]) | float }}
{% endif %}
{% endfor %}
method: GET
name: "Netzfrequenz"
unit_of_measurement: Hz
device_class: frequency
icon: mdi:gauge
Komfortabler ist jedoch die Verwendung von MQTT - vor allem, wenn MQTT bereits anderweitig im Einsatz ist. Da vzlogger kein auto discovery bietet, müsste man jeden Sensor umständlich manuell anlegen. Abhilfe schafft hier das mächtige Node-RED Addon. Darin kann man folgenden Flow hinzufügen: Node-RED → „Import“ → einfügen → „Importieren“:
[
{
"id": "vz_start",
"type": "inject",
"z": "flow1",
"name": "Generate MQTT Discovery",
"props": [],
"repeat": "",
"crontab": "",
"once": true,
"onceDelay": "3",
"topic": "",
"x": 200,
"y": 140,
"wires": [["vz_prepare"]]
},
{
"id": "vz_prepare",
"type": "function",
"z": "flow1",
"name": "Build Discovery Messages",
"func": "",
"outputs": 1,
"noerr": 0,
"initialize": "",
"finalize": "",
"libs": [],
"x": 460,
"y": 140,
"wires": [["vz_mqtt"]]
},
{
"id": "vz_mqtt",
"type": "mqtt out",
"z": "flow1",
"name": "MQTT Discovery Out",
"topic": "",
"qos": "1",
"retain": "true",
"broker": "mqtt_broker",
"x": 770,
"y": 140,
"wires": []
},
{
"id": "mqtt_broker",
"type": "mqtt-broker",
"name": "HA MQTT",
"broker": "localhost",
"port": "1883",
"clientid": "",
"usetls": false,
"compatmode": false,
"keepalive": "60",
"cleansession": true,
"birthTopic": "",
"birthQos": "0",
"birthRetain": "false",
"birthPayload": "",
"closeTopic": "",
"closeQos": "0",
"closeRetain": "false",
"closePayload": "",
"willTopic": "",
"willQos": "0",
"willRetain": "false",
"willPayload": ""
}
]
Danach sind im Node „MQTT Discovery Out“ (→ Eigenschaften → Server-Eigenschaften → Sicherheit) Benuttzername und Passwort für den MQTT-Broker anzugeben. Außerdem muss als Kernstück das folgende Skript (wieder um die eingenen UUIDs ergänzt) in den Node „Build Discovery Messages“ (→ Eigenschaften → Funktion) eingefügt werden. Ggf ist das Modell zu korrigieren:
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];