El måler (ECHELON/NES) fra KONSTANT i Homey

Konstant er transportør af el i østjylland.

Inde på https://www.dabbler.dk/ roder de med at få data ud af el målere, det har ført til et blog indlæg fra Ulrik NES/ECHELON electrical meter connect to MQTT (Home Assistant) via IR
Og når det kan komme ind i HA med MQTT, kan det selvfølgelig også komme ind i Homey :grinning:

Så med udgangspunkt i Ulriks blog indlæg, har jeg skrevet en lille vejledning til hvordan jeg har gjort.

Hardware brugt:
Raspberry Pi Zero W inkl 8GB kort
IR Probe købt ved Amazon
USB OTG adapter

For at kunne læse data’en ud af el måleren, skal man have en læse nøgle fra konstant
Jeg skrev til “kontakt @ konstant dk” for denne nøgle.

Hej,

Er blevet informeret om at jeg skal henvende mig her for at få udleveret læse-nøglen til min el måler.
Den såkaldte “MEP Basic Key” som skulle give mig skrivebeskyttet læse adgang.

Lidt data vedrørende måler:

Aftagenummer: 12345678912
Installationsnummer: 123456
Installationsadresse:
Adresse her

Med venlig hilsen
... ...

Følgende er opsætningen jeg lavede på min RPI med “Raspberry Pi OS Lite”
Nemmeste måde er at oprette SD kortet med Raspberry Pi Imager, eksemplet er oprettet med brugeren “pi”

Opret ram disk, rediger fstab

	sudo nano /etc/fstab

Tilføj følgende linje (fandt efterfølgende ud af at programmet termineter som logger data, skriver en del debug data i “.termineter” mappen i home mappen, og eftersom jeg ikke lige ved hvordan man stopper dette, lavede jeg blot et ram drev til denne også)

	tmpfs /var/tmp tmpfs nodev,nosuid,size=100M 0 0
	tmpfs /home/pi/.termineter tmpfs nodev,nosuid,size=10M 0 0

Opret “.termineter” mappen i home

	mkdir $HOME/.termineter

Anvend ændringerne

	sudo mount -a

Installer Node-RED

	bash <(curl -sL https://raw.githubusercontent.com/node-red/linux-installers/master/deb/update-nodejs-and-nodered)

Sæt Node-RED til at køre som en service

	sudo systemctl enable nodered.service

Installer python

	sudo apt-get -y install python3 python3-pip

Installer python pakker

	pip install smoke-zephyr crcelk pyserial pluginbase tabulate termcolor

Under installationen kommer der muligvis en advarsel om en sti der ikke er i “PATH” ret dette med følgende:

	export PATH="$HOME/.local/bin:$PATH"

Nu skal termineter installeres, her vælger jeg blot at bruge de filer der ligger på dabbler.dk, ellers henvises til blog indlægget hvis man selv vil lave ændringerne.

	wget https://www.dabbler.dk/wp-content/uploads/2022/02/termineter.zip

Udpak filerne

	unzip termineter.zip -d $HOME/

tilpas rettigheder

	sudo chmod 755 termineter -R

Tilføj den nøgle du har fået fra KONSTANT

	nano $HOME/termineter/lib/termineter/core.py

Gå til linje 96 (ctrl + _) og indsæt din nøgle hvor der står " <your decryptkey here!>"

self.options.add_string('SERIAL_CONNECTION', 'serial connection string',default='**/dev/ttyUSB0**') self.options.add_string('PASSWORD', 'serial c12.18 password', default='**<your decryptkey here!>**') self.advanced_options.add_integer('C1218_PACKET_SIZE', 'c12.18 maximum packet size', default=**64**)

Hvis ikke man vil teste først, hop da over de to næste punkter

Start Termineter

	python $HOME/termineter/termineter

Og start med at logge data

	run get_data

For at starte med at logge automatisk når termineter starter, laves en “resource” fil

	nano $HOME/.termineter/console.rc

I denne fil skrive blot de kommandoer man ønsker der skal køres når termineter starter

	run get_data

Kopier denne fil til hjemme mappen for at det virker efter genstart

	cp $HOME/.termineter/console.rc $HOME/console.rc

Igen tester vi lige at det virker,
start termineter med følgende kommando

	python $HOME/termineter/termineter -r console.rc

For at få termineter til at starte automatisk efter genstart, laver vi et “cron job”

	nano $HOME/startlog.sh

tilføj følgende:

	#!/bin/bash
	cp $HOME/console.rc $HOME/.termineter/console.rc
	python $HOME/termineter/termineter -r console.rc

og tilpas rettigheder

	chmod 755 startlog.sh

Rediger crontab

	crontab -e

og tilføj scriptet

	@reboot /bin/bash $HOME/startlog.sh

Ekstra

Hvis det ønskes kan man deaktivere system logning

Stop rsyslog med følgende kommando

	sudo service rsyslog stop

Og deaktiver servicen så den ikke starter igen

	sudo systemctl disable rsyslog

for at aktivere den igen

	sudo systemctl enable rsyslog

Genstart enheden, og den burde nu begynde at læse data automatisk, og starte Node-RED “http://ip:1880

I Node-RED, gå til “Manage palette” og installer “node-red-contrib-buffer-parser”

1 Like

Ulrik var så flink at dele hans Node-RED flow,
Tilpas MQTT indstillingerne så de passer med dit setup,
Og ændre SN:XXXXXXXX så det matcher serie nummeret på din el måler.

[
    {
        "id": "4b1bea36b7dd8584",
        "type": "tab",
        "label": "NES_El_Meter",
        "disabled": false,
        "info": "",
        "env": []
    },
    {
        "id": "e46932e5e7544d35",
        "type": "file in",
        "z": "4b1bea36b7dd8584",
        "name": "",
        "filename": "/var/tmp/BT23",
        "filenameType": "str",
        "format": "utf8",
        "chunk": false,
        "sendError": false,
        "encoding": "none",
        "allProps": false,
        "x": 420,
        "y": 60,
        "wires": [
            [
                "48c84b39e679e5d2"
            ]
        ]
    },
    {
        "id": "7b4137e10f4123b7",
        "type": "inject",
        "z": "4b1bea36b7dd8584",
        "name": "",
        "props": [
            {
                "p": "payload"
            },
            {
                "p": "topic",
                "vt": "str"
            }
        ],
        "repeat": "10",
        "crontab": "",
        "once": false,
        "onceDelay": "10",
        "topic": "",
        "payload": "",
        "payloadType": "date",
        "x": 110,
        "y": 60,
        "wires": [
            [
                "e46932e5e7544d35",
                "9a4d7d33704d4e7b"
            ]
        ]
    },
    {
        "id": "b0c656868e9b7268",
        "type": "debug",
        "z": "4b1bea36b7dd8584",
        "name": "",
        "active": false,
        "tosidebar": true,
        "console": false,
        "tostatus": false,
        "complete": "payload",
        "targetType": "msg",
        "statusVal": "",
        "statusType": "auto",
        "x": 1230,
        "y": 20,
        "wires": []
    },
    {
        "id": "9a4d7d33704d4e7b",
        "type": "file in",
        "z": "4b1bea36b7dd8584",
        "name": "",
        "filename": "/var/tmp/BT28",
        "filenameType": "str",
        "format": "utf8",
        "chunk": false,
        "sendError": false,
        "encoding": "none",
        "allProps": false,
        "x": 420,
        "y": 120,
        "wires": [
            [
                "8f0e4d2205140705"
            ]
        ]
    },
    {
        "id": "bf22e526b7e230ae",
        "type": "mqtt out",
        "z": "4b1bea36b7dd8584",
        "name": "",
        "topic": "",
        "qos": "",
        "retain": "",
        "respTopic": "",
        "contentType": "",
        "userProps": "",
        "correl": "",
        "expiry": "",
        "broker": "9dd179a5661933fc",
        "x": 1330,
        "y": 60,
        "wires": []
    },
    {
        "id": "1a4069141545a2f7",
        "type": "inject",
        "z": "4b1bea36b7dd8584",
        "name": "config fwd_Total",
        "props": [
            {
                "p": "topic",
                "vt": "str"
            },
            {
                "p": "payload"
            }
        ],
        "repeat": "",
        "crontab": "00 00 * * *",
        "once": false,
        "onceDelay": "1",
        "topic": "homeassistant/sensor/ELM_Main_fwd_Total/config",
        "payload": "{\"name\":\"ELM_Main_fwd_Total\",\"dev\":{\"ids\":\"SN:XXXXXXXX\",\"mf\":\"NES\",\"model\":\"NES_83334\",\"name\":\"ELM_Main\",\"suggested_area\":\"EL_Meter\"},\"stat_t\":\"nodered/sensor/ELM_Main_fwd_Total\",\"uniq_id\":\"ELM_Main_fwd_Total\",\"dev_cla\":\"energy\",\"unit_of_meas\":\"kWh\",\"icon\":\"mdi:home-import-outline\",\"state_class\":\"total_increasing\"}",
        "payloadType": "json",
        "x": 130,
        "y": 200,
        "wires": [
            [
                "88c36857335ec902"
            ]
        ]
    },
    {
        "id": "88c36857335ec902",
        "type": "mqtt out",
        "z": "4b1bea36b7dd8584",
        "name": "",
        "topic": "",
        "qos": "",
        "retain": "true",
        "respTopic": "",
        "contentType": "",
        "userProps": "",
        "correl": "",
        "expiry": "",
        "broker": "9dd179a5661933fc",
        "x": 370,
        "y": 380,
        "wires": []
    },
    {
        "id": "c0a79ffe9fbfcf08",
        "type": "inject",
        "z": "4b1bea36b7dd8584",
        "name": "config fwd_Now",
        "props": [
            {
                "p": "topic",
                "vt": "str"
            },
            {
                "p": "payload"
            }
        ],
        "repeat": "",
        "crontab": "00 00 * * *",
        "once": false,
        "onceDelay": "1",
        "topic": "homeassistant/sensor/ELM_Main_fwd_Now/config",
        "payload": "{\"name\":\"ELM_Main_fwd_Now\",\"dev\":{\"ids\":\"SN:XXXXXXXX\",\"mf\":\"NES\",\"model\":\"NES_83334\",\"name\":\"ELM_Main\",\"suggested_area\":\"EL_Meter\"},\"stat_t\":\"nodered/sensor/ELM_Main_fwd_Now\",\"uniq_id\":\"ELM_Main_fwd_Now\",\"dev_cla\":\"power\",\"unit_of_meas\":\"W\",\"state_class\":\"measurement\"}",
        "payloadType": "json",
        "x": 130,
        "y": 280,
        "wires": [
            [
                "88c36857335ec902"
            ]
        ]
    },
    {
        "id": "e2d682aa0dbdd432",
        "type": "inject",
        "z": "4b1bea36b7dd8584",
        "name": "config rev_Total",
        "props": [
            {
                "p": "topic",
                "vt": "str"
            },
            {
                "p": "payload"
            }
        ],
        "repeat": "",
        "crontab": "00 00 * * *",
        "once": false,
        "onceDelay": "1",
        "topic": "homeassistant/sensor/ELM_Main_rev_Total/config",
        "payload": "{\"name\":\"ELM_Main_rev_Total\",\"dev\":{\"ids\":\"SN:XXXXXXXX\",\"mf\":\"NES\",\"model\":\"NES_83334\",\"name\":\"ELM_Main\",\"suggested_area\":\"EL_Meter\"},\"stat_t\":\"nodered/sensor/ELM_Main_rev_Total\",\"uniq_id\":\"ELM_Main_rev_Total\",\"dev_cla\":\"energy\",\"unit_of_meas\":\"kWh\",\"icon\":\"mdi:home-export-outline\",\"state_class\":\"total_increasing\"}",
        "payloadType": "json",
        "x": 130,
        "y": 240,
        "wires": [
            [
                "88c36857335ec902"
            ]
        ]
    },
    {
        "id": "88b3bc2c9b34ecb9",
        "type": "change",
        "z": "4b1bea36b7dd8584",
        "name": "fwd_Total",
        "rules": [
            {
                "t": "set",
                "p": "topic",
                "pt": "msg",
                "to": "nodered/sensor/ELM_Main_fwd_Total",
                "tot": "str"
            },
            {
                "t": "set",
                "p": "payload",
                "pt": "msg",
                "to": "payload.Fwd_KWh",
                "tot": "msg"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 960,
        "y": 60,
        "wires": [
            [
                "bf22e526b7e230ae"
            ]
        ]
    },
    {
        "id": "02e6081042e5ce59",
        "type": "change",
        "z": "4b1bea36b7dd8584",
        "name": "rev_Total",
        "rules": [
            {
                "t": "set",
                "p": "topic",
                "pt": "msg",
                "to": "nodered/sensor/ELM_Main_rev_Total",
                "tot": "str"
            },
            {
                "t": "set",
                "p": "payload",
                "pt": "msg",
                "to": "payload.Rev_KWh",
                "tot": "msg"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 960,
        "y": 100,
        "wires": [
            [
                "bf22e526b7e230ae"
            ]
        ]
    },
    {
        "id": "b57fa75cd651bec7",
        "type": "change",
        "z": "4b1bea36b7dd8584",
        "name": "fwd_Now",
        "rules": [
            {
                "t": "set",
                "p": "topic",
                "pt": "msg",
                "to": "nodered/sensor/ELM_Main_fwd_Now",
                "tot": "str"
            },
            {
                "t": "set",
                "p": "payload",
                "pt": "msg",
                "to": "payload.Fwd_KW",
                "tot": "msg"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 1100,
        "y": 160,
        "wires": [
            [
                "f893c213b438b1fd"
            ]
        ]
    },
    {
        "id": "f893c213b438b1fd",
        "type": "mqtt out",
        "z": "4b1bea36b7dd8584",
        "name": "",
        "topic": "",
        "qos": "",
        "retain": "",
        "respTopic": "",
        "contentType": "",
        "userProps": "",
        "correl": "",
        "expiry": "",
        "broker": "9dd179a5661933fc",
        "x": 1330,
        "y": 320,
        "wires": []
    },
    {
        "id": "e864da4a2b45800e",
        "type": "change",
        "z": "4b1bea36b7dd8584",
        "name": "rev_Now",
        "rules": [
            {
                "t": "set",
                "p": "topic",
                "pt": "msg",
                "to": "nodered/sensor/ELM_Main_rev_Now",
                "tot": "str"
            },
            {
                "t": "set",
                "p": "payload",
                "pt": "msg",
                "to": "payload.Rev_KW",
                "tot": "msg"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 1100,
        "y": 200,
        "wires": [
            [
                "f893c213b438b1fd"
            ]
        ]
    },
    {
        "id": "34306870cce63f41",
        "type": "inject",
        "z": "4b1bea36b7dd8584",
        "name": "config rev_Now",
        "props": [
            {
                "p": "topic",
                "vt": "str"
            },
            {
                "p": "payload"
            }
        ],
        "repeat": "",
        "crontab": "00 00 * * *",
        "once": false,
        "onceDelay": "1",
        "topic": "homeassistant/sensor/ELM_Main_rev_Now/config",
        "payload": "{\"name\":\"ELM_Main_rev_Now\",\"dev\":{\"ids\":\"SN:XXXXXXXX\",\"mf\":\"NES\",\"model\":\"NES_83334\",\"name\":\"ELM_Main\",\"suggested_area\":\"EL_Meter\"},\"stat_t\":\"nodered/sensor/ELM_Main_rev_Now\",\"uniq_id\":\"ELM_Main_rev_Now\",\"dev_cla\":\"power\",\"unit_of_meas\":\"W\",\"state_class\":\"measurement\"}",
        "payloadType": "json",
        "x": 130,
        "y": 320,
        "wires": [
            [
                "88c36857335ec902"
            ]
        ]
    },
    {
        "id": "be02ccf6fdeefee3",
        "type": "inject",
        "z": "4b1bea36b7dd8584",
        "name": "config L1_Amp",
        "props": [
            {
                "p": "topic",
                "vt": "str"
            },
            {
                "p": "payload"
            }
        ],
        "repeat": "",
        "crontab": "00 00 * * *",
        "once": true,
        "onceDelay": "1",
        "topic": "homeassistant/sensor/ELM_Main_L1_Amp/config",
        "payload": "{\"name\":\"ELM_Main_L1_Amp\",\"dev\":{\"ids\":\"SN:XXXXXXXX\",\"mf\":\"NES\",\"model\":\"NES_83334\",\"name\":\"ELM_Main\",\"suggested_area\":\"EL_Meter\"},\"stat_t\":\"nodered/sensor/ELM_Main_L1_Amp\",\"uniq_id\":\"ELM_Main_L1_Amp\",\"dev_cla\":\"current\",\"unit_of_meas\":\"A\",\"state_class\":\"measurement\"}",
        "payloadType": "json",
        "x": 120,
        "y": 360,
        "wires": [
            [
                "88c36857335ec902"
            ]
        ]
    },
    {
        "id": "b413bc13a2eda78f",
        "type": "inject",
        "z": "4b1bea36b7dd8584",
        "name": "config L1_Volt",
        "props": [
            {
                "p": "topic",
                "vt": "str"
            },
            {
                "p": "payload"
            }
        ],
        "repeat": "",
        "crontab": "00 00 * * *",
        "once": true,
        "onceDelay": "1",
        "topic": "homeassistant/sensor/ELM_Main_L1_Volt/config",
        "payload": "{\"name\":\"ELM_Main_L1_Volt\",\"dev\":{\"ids\":\"SN:XXXXXXXX\",\"mf\":\"NES\",\"model\":\"NES_83334\",\"name\":\"ELM_Main\",\"suggested_area\":\"EL_Meter\"},\"stat_t\":\"nodered/sensor/ELM_Main_L1_volt\",\"uniq_id\":\"ELM_Main_L1_volt\",\"dev_cla\":\"voltage\",\"unit_of_meas\":\"V\",\"state_class\":\"measurement\"}",
        "payloadType": "json",
        "x": 120,
        "y": 400,
        "wires": [
            [
                "88c36857335ec902"
            ]
        ]
    },
    {
        "id": "5e6bc139645a8852",
        "type": "change",
        "z": "4b1bea36b7dd8584",
        "name": "L1_A",
        "rules": [
            {
                "t": "set",
                "p": "topic",
                "pt": "msg",
                "to": "nodered/sensor/ELM_Main_L1_Amp",
                "tot": "str"
            },
            {
                "t": "set",
                "p": "payload",
                "pt": "msg",
                "to": "payload.L1_A",
                "tot": "msg"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 1090,
        "y": 240,
        "wires": [
            [
                "f893c213b438b1fd"
            ]
        ]
    },
    {
        "id": "130fa5bd3255b943",
        "type": "change",
        "z": "4b1bea36b7dd8584",
        "name": "L1_V",
        "rules": [
            {
                "t": "set",
                "p": "topic",
                "pt": "msg",
                "to": "nodered/sensor/ELM_Main_L1_volt",
                "tot": "str"
            },
            {
                "t": "set",
                "p": "payload",
                "pt": "msg",
                "to": "payload.L1_V",
                "tot": "msg"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 1090,
        "y": 280,
        "wires": [
            [
                "f893c213b438b1fd"
            ]
        ]
    },
    {
        "id": "38366f5b0a911f05",
        "type": "inject",
        "z": "4b1bea36b7dd8584",
        "name": "config L2_Amp",
        "props": [
            {
                "p": "topic",
                "vt": "str"
            },
            {
                "p": "payload"
            }
        ],
        "repeat": "",
        "crontab": "00 00 * * *",
        "once": true,
        "onceDelay": "1",
        "topic": "homeassistant/sensor/ELM_Main_L2_Amp/config",
        "payload": "{\"name\":\"ELM_Main_L2_Amp\",\"dev\":{\"ids\":\"SN:XXXXXXXX\",\"mf\":\"NES\",\"model\":\"NES_83334\",\"name\":\"ELM_Main\",\"suggested_area\":\"EL_Meter\"},\"stat_t\":\"nodered/sensor/ELM_Main_L2_Amp\",\"uniq_id\":\"ELM_Main_L2_Amp\",\"dev_cla\":\"current\",\"unit_of_meas\":\"A\",\"state_class\":\"measurement\"}",
        "payloadType": "json",
        "x": 120,
        "y": 440,
        "wires": [
            [
                "88c36857335ec902"
            ]
        ]
    },
    {
        "id": "f50b3b3209c40047",
        "type": "inject",
        "z": "4b1bea36b7dd8584",
        "name": "config L2_Volt",
        "props": [
            {
                "p": "topic",
                "vt": "str"
            },
            {
                "p": "payload"
            }
        ],
        "repeat": "",
        "crontab": "00 00 * * *",
        "once": true,
        "onceDelay": "1",
        "topic": "homeassistant/sensor/ELM_Main_L2_Volt/config",
        "payload": "{\"name\":\"ELM_Main_L2_Volt\",\"dev\":{\"ids\":\"SN:XXXXXXXX\",\"mf\":\"NES\",\"model\":\"NES_83334\",\"name\":\"ELM_Main\",\"suggested_area\":\"EL_Meter\"},\"stat_t\":\"nodered/sensor/ELM_Main_L2_volt\",\"uniq_id\":\"ELM_Main_L2_volt\",\"dev_cla\":\"voltage\",\"unit_of_meas\":\"V\",\"state_class\":\"measurement\"}",
        "payloadType": "json",
        "x": 120,
        "y": 480,
        "wires": [
            [
                "88c36857335ec902"
            ]
        ]
    },
    {
        "id": "8525223bb3dab9c8",
        "type": "inject",
        "z": "4b1bea36b7dd8584",
        "name": "config L3_Amp",
        "props": [
            {
                "p": "topic",
                "vt": "str"
            },
            {
                "p": "payload"
            }
        ],
        "repeat": "",
        "crontab": "00 00 * * *",
        "once": true,
        "onceDelay": "1",
        "topic": "homeassistant/sensor/ELM_Main_L3_Amp/config",
        "payload": "{\"name\":\"ELM_Main_L3_Amp\",\"dev\":{\"ids\":\"SN:XXXXXXXX\",\"mf\":\"NES\",\"model\":\"NES_83334\",\"name\":\"ELM_Main\",\"suggested_area\":\"EL_Meter\"},\"stat_t\":\"nodered/sensor/ELM_Main_L3_Amp\",\"uniq_id\":\"ELM_Main_L3_Amp\",\"dev_cla\":\"current\",\"unit_of_meas\":\"A\",\"state_class\":\"measurement\"}",
        "payloadType": "json",
        "x": 120,
        "y": 520,
        "wires": [
            [
                "88c36857335ec902"
            ]
        ]
    },
    {
        "id": "0ab8d96cf700c57a",
        "type": "change",
        "z": "4b1bea36b7dd8584",
        "name": "L2_A",
        "rules": [
            {
                "t": "set",
                "p": "topic",
                "pt": "msg",
                "to": "nodered/sensor/ELM_Main_L2_Amp",
                "tot": "str"
            },
            {
                "t": "set",
                "p": "payload",
                "pt": "msg",
                "to": "payload.L2_A",
                "tot": "msg"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 1090,
        "y": 320,
        "wires": [
            [
                "f893c213b438b1fd"
            ]
        ]
    },
    {
        "id": "f48433f7fae8a20c",
        "type": "change",
        "z": "4b1bea36b7dd8584",
        "name": "L2_V",
        "rules": [
            {
                "t": "set",
                "p": "topic",
                "pt": "msg",
                "to": "nodered/sensor/ELM_Main_L2_volt",
                "tot": "str"
            },
            {
                "t": "set",
                "p": "payload",
                "pt": "msg",
                "to": "payload.L2_V",
                "tot": "msg"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 1090,
        "y": 360,
        "wires": [
            [
                "f893c213b438b1fd"
            ]
        ]
    },
    {
        "id": "4de8de343e055c68",
        "type": "change",
        "z": "4b1bea36b7dd8584",
        "name": "L3_A",
        "rules": [
            {
                "t": "set",
                "p": "topic",
                "pt": "msg",
                "to": "nodered/sensor/ELM_Main_L3_Amp",
                "tot": "str"
            },
            {
                "t": "set",
                "p": "payload",
                "pt": "msg",
                "to": "payload.L3_A",
                "tot": "msg"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 1090,
        "y": 400,
        "wires": [
            [
                "f893c213b438b1fd"
            ]
        ]
    },
    {
        "id": "12c832ab07c97a51",
        "type": "change",
        "z": "4b1bea36b7dd8584",
        "name": "L3_V",
        "rules": [
            {
                "t": "set",
                "p": "topic",
                "pt": "msg",
                "to": "nodered/sensor/ELM_Main_L3_volt",
                "tot": "str"
            },
            {
                "t": "set",
                "p": "payload",
                "pt": "msg",
                "to": "payload.L3_V",
                "tot": "msg"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 1090,
        "y": 440,
        "wires": [
            [
                "f893c213b438b1fd"
            ]
        ]
    },
    {
        "id": "6002807b0e30e6e3",
        "type": "inject",
        "z": "4b1bea36b7dd8584",
        "name": "config L3_Volt",
        "props": [
            {
                "p": "topic",
                "vt": "str"
            },
            {
                "p": "payload"
            }
        ],
        "repeat": "",
        "crontab": "00 00 * * *",
        "once": false,
        "onceDelay": "1",
        "topic": "homeassistant/sensor/ELM_Main_L3_Volt/config",
        "payload": "{\"name\":\"ELM_Main_L3_Volt\",\"dev\":{\"ids\":\"SN:XXXXXXXX\",\"mf\":\"NES\",\"model\":\"NES_83334\",\"name\":\"ELM_Main\",\"suggested_area\":\"EL_Meter\"},\"stat_t\":\"nodered/sensor/ELM_Main_L3_volt\",\"uniq_id\":\"ELM_Main_L3_volt\",\"dev_cla\":\"voltage\",\"unit_of_meas\":\"V\",\"state_class\":\"measurement\"}",
        "payloadType": "json",
        "x": 120,
        "y": 560,
        "wires": [
            [
                "88c36857335ec902"
            ]
        ]
    },
    {
        "id": "c10a2ab2bf5a5a33",
        "type": "function",
        "z": "4b1bea36b7dd8584",
        "name": "decimalpoint",
        "func": "msg.payload.Fwd_KWh = parseFloat(msg.payload.Fwd_KWh.toFixed(3)) \n\nreturn msg;",
        "outputs": 1,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 750,
        "y": 60,
        "wires": [
            [
                "88b3bc2c9b34ecb9"
            ]
        ]
    },
    {
        "id": "6d270160263cc40b",
        "type": "function",
        "z": "4b1bea36b7dd8584",
        "name": "decimalpoint",
        "func": "msg.payload.Rev_KWh = parseFloat(msg.payload.Rev_KWh.toFixed(3)) \n\nreturn msg;",
        "outputs": 1,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 750,
        "y": 100,
        "wires": [
            [
                "02e6081042e5ce59"
            ]
        ]
    },
    {
        "id": "45c6e2edfd4b1e16",
        "type": "function",
        "z": "4b1bea36b7dd8584",
        "name": "decimalpoint",
        "func": "msg.payload.L3_V = parseFloat(msg.payload.L3_V.toFixed(1)) \n\nreturn msg;",
        "outputs": 1,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 930,
        "y": 440,
        "wires": [
            [
                "12c832ab07c97a51"
            ]
        ]
    },
    {
        "id": "72e25875e361ba21",
        "type": "function",
        "z": "4b1bea36b7dd8584",
        "name": "decimalpoint",
        "func": "msg.payload.L3_A = parseFloat(msg.payload.L3_A.toFixed(1)) \n\nreturn msg;",
        "outputs": 1,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 930,
        "y": 400,
        "wires": [
            [
                "4de8de343e055c68"
            ]
        ]
    },
    {
        "id": "1507b567c048198a",
        "type": "function",
        "z": "4b1bea36b7dd8584",
        "name": "decimalpoint",
        "func": "msg.payload.L2_V = parseFloat(msg.payload.L2_V.toFixed(1)) \n\nreturn msg;",
        "outputs": 1,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 930,
        "y": 360,
        "wires": [
            [
                "f48433f7fae8a20c"
            ]
        ]
    },
    {
        "id": "f76a5e5f50d7206e",
        "type": "function",
        "z": "4b1bea36b7dd8584",
        "name": "decimalpoint",
        "func": "msg.payload.L2_A = parseFloat(msg.payload.L2_A.toFixed(1)) \n\nreturn msg;",
        "outputs": 1,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 930,
        "y": 320,
        "wires": [
            [
                "0ab8d96cf700c57a"
            ]
        ]
    },
    {
        "id": "86fc3962fc3b34fc",
        "type": "function",
        "z": "4b1bea36b7dd8584",
        "name": "decimalpoint",
        "func": "msg.payload.L1_A = parseFloat(msg.payload.L1_A.toFixed(1)) \n\nreturn msg;",
        "outputs": 1,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 930,
        "y": 240,
        "wires": [
            [
                "5e6bc139645a8852"
            ]
        ]
    },
    {
        "id": "ccc99cec8855b094",
        "type": "function",
        "z": "4b1bea36b7dd8584",
        "name": "decimalpoint",
        "func": "msg.payload.L1_V = parseFloat(msg.payload.L1_V.toFixed(1)) \n\nreturn msg;",
        "outputs": 1,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 930,
        "y": 280,
        "wires": [
            [
                "130fa5bd3255b943"
            ]
        ]
    },
    {
        "id": "48c84b39e679e5d2",
        "type": "buffer-parser",
        "z": "4b1bea36b7dd8584",
        "name": "BT23",
        "data": "payload",
        "dataType": "msg",
        "specification": "spec",
        "specificationType": "ui",
        "items": [
            {
                "type": "int32be",
                "name": "Fwd_KWh",
                "offset": 0,
                "length": 1,
                "offsetbit": 0,
                "scale": "0.001",
                "mask": ""
            },
            {
                "type": "int32be",
                "name": "Rev_KWh",
                "offset": 4,
                "length": 1,
                "offsetbit": 0,
                "scale": "0.001",
                "mask": ""
            }
        ],
        "swap1": "swap32",
        "swap2": "",
        "swap3": "",
        "swap1Type": "swap",
        "swap2Type": "swap",
        "swap3Type": "swap",
        "msgProperty": "payload",
        "msgPropertyType": "str",
        "resultType": "keyvalue",
        "resultTypeType": "return",
        "multipleResult": false,
        "fanOutMultipleResult": false,
        "setTopic": true,
        "outputs": 1,
        "x": 570,
        "y": 60,
        "wires": [
            [
                "c10a2ab2bf5a5a33",
                "6d270160263cc40b",
                "b0c656868e9b7268"
            ]
        ]
    },
    {
        "id": "8f0e4d2205140705",
        "type": "buffer-parser",
        "z": "4b1bea36b7dd8584",
        "name": "BT28",
        "data": "payload",
        "dataType": "msg",
        "specification": "spec",
        "specificationType": "ui",
        "items": [
            {
                "type": "int32be",
                "name": "Fwd_KW",
                "offset": 0,
                "length": 1,
                "offsetbit": 0,
                "scale": "1",
                "mask": ""
            },
            {
                "type": "int32be",
                "name": "Rev_KW",
                "offset": 4,
                "length": 1,
                "offsetbit": 0,
                "scale": "1",
                "mask": ""
            },
            {
                "type": "int32be",
                "name": "L1_A",
                "offset": 16,
                "length": 1,
                "offsetbit": 0,
                "scale": "0.001",
                "mask": ""
            },
            {
                "type": "int32be",
                "name": "L2_A",
                "offset": 20,
                "length": 1,
                "offsetbit": 0,
                "scale": "0.001",
                "mask": ""
            },
            {
                "type": "int32be",
                "name": "L3_A",
                "offset": 24,
                "length": 1,
                "offsetbit": 0,
                "scale": "0.001",
                "mask": ""
            },
            {
                "type": "int32be",
                "name": "L1_V",
                "offset": 28,
                "length": 1,
                "offsetbit": 0,
                "scale": "0.001",
                "mask": ""
            },
            {
                "type": "int32be",
                "name": "L2_V",
                "offset": 32,
                "length": 1,
                "offsetbit": 0,
                "scale": "0.001",
                "mask": ""
            },
            {
                "type": "int32be",
                "name": "L3_V",
                "offset": 36,
                "length": 1,
                "offsetbit": 0,
                "scale": "0.001",
                "mask": ""
            }
        ],
        "swap1": "swap32",
        "swap2": "",
        "swap3": "",
        "swap1Type": "swap",
        "swap2Type": "swap",
        "swap3Type": "swap",
        "msgProperty": "payload",
        "msgPropertyType": "str",
        "resultType": "keyvalue",
        "resultTypeType": "return",
        "multipleResult": false,
        "fanOutMultipleResult": false,
        "setTopic": true,
        "outputs": 1,
        "x": 570,
        "y": 120,
        "wires": [
            [
                "b57fa75cd651bec7",
                "e864da4a2b45800e",
                "45c6e2edfd4b1e16",
                "72e25875e361ba21",
                "1507b567c048198a",
                "f76a5e5f50d7206e",
                "86fc3962fc3b34fc",
                "ccc99cec8855b094"
            ]
        ]
    },
    {
        "id": "9dd179a5661933fc",
        "type": "mqtt-broker",
        "name": "",
        "broker": "192.168.1.10",
        "port": "1883",
        "clientid": "",
        "autoConnect": true,
        "usetls": false,
        "protocolVersion": "4",
        "keepalive": "60",
        "cleansession": true,
        "birthTopic": "",
        "birthQos": "0",
        "birthPayload": "",
        "birthMsg": {},
        "closeTopic": "",
        "closeQos": "0",
        "closePayload": "",
        "closeMsg": {},
        "willTopic": "",
        "willQos": "0",
        "willPayload": "",
        "willMsg": {},
        "userProps": "",
        "sessionExpiry": ""
    }
]

Installer MQTT Client og konfigurer den til din MQTT Broker

Følgende billeder er blot for at vise min konfiguration

Installer MQTT Hub


Tilføj MQTT Hub device

02-mqtt-device

Navngiv dit nye device

Vælg et ikon

Tilføj de forskellige sensorer fra MQTT (Jeg bruger aktuel effekt ind/ud, samt total ind/ude, der er også info om de enkelte faser)





Når disse 4 sensorer er tilføjet skulle det gerne se sådan her ud

Og hvis ellers alt andet virker, er der nu et device der viser info fra el måleren.

Desvære er der vist en fejl i MQTT Hub der gør at det ikke er altid at “navne tags” på de enkelte sensorer kommer på, det lykkedes mig at fjerne og tilføje device igen et par gange, så kom de frem.