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

**URL:** https://community.homey.app/t/el-maler-echelon-nes-fra-konstant-i-homey/69045
**Category:** 🇩🇰 Dansk (Danish)
**Tags:** mqtt, homey-pro
**Created:** [September 18, 2022, 9:29am UTC](https://community.homey.app/t/el-maler-echelon-nes-fra-konstant-i-homey/69045 "2022-09-18T09:29:16Z")
**Posts on this page:** 4
**Page:** 1

<div class="post-metadata">

### Author: ![MVester](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/mvester/32/26410_2.png) [@MVester](https://community.homey.app/u/MVester)
#### Post date: [September 18, 2022, 9:29am UTC](https://community.homey.app/t/el-maler-echelon-nes-fra-konstant-i-homey/69045/1 "2022-09-18T09:29:16Z")

</div>

[Konstant](https://konstant.dk/) er transportør af el i østjylland.

Inde på [https://www.dabbler.dk/](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](https://www.dabbler.dk/index.php/2022/02/27/guest-writer-echelon-nes-smart-meters-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 😀

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](https://www.raspberrypi.com/products/raspberry-pi-zero-w/) inkl 8GB kort  
[IR Probe](https://www.weidmann-elektronik.de/Produkt_IR-Kopf.html) købt ved [Amazon](https://www.amazon.de/-/en/Weidmann-Elektronik-Electricity-infrared-optohead/dp/B01B8N0ASY/ref=sr_1_1?crid=2EFSAPM1TQNPN&keywords=IR+schreiben%2Flesekopf+usb+%28optokopf%29&qid=1663490543&sprefix=ir+schreib%2Flesekopf+usb+optokopf+%2Caps%2C59&sr=8-1)  
[USB OTG adapter](https://www.google.com/search?q=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.

```auto
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](https://www.raspberrypi.com/software/), eksemplet er oprettet med brugeren “pi”

Opret ram disk, rediger fstab

```auto
	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å)

```auto
	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

```auto
	mkdir $HOME/.termineter

```

Anvend ændringerne

```auto
	sudo mount -a

```

Installer Node-RED

```auto
	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

```auto
	sudo systemctl enable nodered.service

```

Installer python

```auto
	sudo apt-get -y install python3 python3-pip

```

Installer python pakker

```auto
	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:

```auto
	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.

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

```

Udpak filerne

```auto
	unzip termineter.zip -d $HOME/

```

tilpas rettigheder

```auto
	sudo chmod 755 termineter -R

```

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

```auto
	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!\>**"

```auto
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

```auto
	python $HOME/termineter/termineter

```

Og start med at logge data

```auto
	run get_data

```

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

```auto
	nano $HOME/.termineter/console.rc

```

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

```auto
	run get_data

```

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

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

```

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

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

```

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

```auto
	nano $HOME/startlog.sh

```

tilføj følgende:

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

```

og tilpas rettigheder

```auto
	chmod 755 startlog.sh

```

Rediger crontab

```auto
	crontab -e

```

og tilføj scriptet

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

```

## Ekstra

Hvis det ønskes kan man deaktivere system logning

Stop rsyslog med følgende kommando

```auto
	sudo service rsyslog stop

```

Og deaktiver servicen så den ikke starter igen

```auto
	sudo systemctl disable rsyslog

```

for at aktivere den igen

```auto
	sudo systemctl enable rsyslog

```

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

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

---

<div class="post-metadata">

### Author: ![MVester](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/mvester/32/26410_2.png) [@MVester](https://community.homey.app/u/MVester)
#### Post date: [September 18, 2022, 9:29am UTC](https://community.homey.app/t/el-maler-echelon-nes-fra-konstant-i-homey/69045/2 "2022-09-18T09:29:36Z")

</div>

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.

```auto
[
    {
        "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": ""
    }
]

```

---

<div class="post-metadata">

### Author: ![MVester](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/mvester/32/26410_2.png) [@MVester](https://community.homey.app/u/MVester)
#### Post date: [September 18, 2022, 9:29am UTC](https://community.homey.app/t/el-maler-echelon-nes-fra-konstant-i-homey/69045/3 "2022-09-18T09:29:50Z")

</div>

Installer [MQTT Client](https://homey.app/da-dk/app/nl.scanno.mqtt/MQTT-Client/) og konfigurer den til din MQTT Broker

**Følgende billeder er blot for at vise min konfiguration**

> ![mqtt-client-settings](https://us1.discourse-cdn.com/flex025/uploads/athom/original/3X/7/0/70f0e73e07e9f5c37ebbc32dd9e1550f8a93a6bc.jpeg)

**Installer [MQTT Hub](https://homey.app/da-dk/app/nl.hdg.mqtt/MQTT-Hub/)**

> ![mqtt-hub-settings1](https://us1.discourse-cdn.com/flex025/uploads/athom/original/3X/9/5/95f68e0f230619d1122dfa3d8d694bb964140150.jpeg)  
> ![mqtt-hub-settings2](https://us1.discourse-cdn.com/flex025/uploads/athom/original/3X/f/f/ff5a14eb9bfff4e01058620f2d55bce7a6807ae4.jpeg)

**Tilføj MQTT Hub device**

> ![01-add-device](https://us1.discourse-cdn.com/flex025/uploads/athom/original/3X/3/e/3ed54bad436477167eb15f20f14ac8a1978dea28.png)
> 
> ![02-mqtt-device](https://us1.discourse-cdn.com/flex025/uploads/athom/original/3X/2/2/22e5a60c2843ea3cd159d4616a8413a6a951ff27.png)

**Navngiv dit nye device**

> ![03-device-name](https://us1.discourse-cdn.com/flex025/uploads/athom/original/3X/5/4/54ef166a404a2b9409b2f0fe445fc2faa098ec10.png)

**Vælg et ikon**

> ![04-device-icon](https://us1.discourse-cdn.com/flex025/uploads/athom/original/3X/4/3/434d08d9fda351600feb9764bb630e1d29446354.png)

**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)**

> ![05-device-funktion1](https://us1.discourse-cdn.com/flex025/uploads/athom/original/3X/f/0/f04064723947f3f8969d302f6a2d67d85d890fbe.png)  
> ![06-device-funktion2](https://us1.discourse-cdn.com/flex025/uploads/athom/original/3X/8/c/8c69041adb1c7ba94246263509febaa53103b083.png)  
> ![07-device-funktion3](https://us1.discourse-cdn.com/flex025/uploads/athom/original/3X/c/d/cd667845af910bea6e4c3c12f01ca11a813809d9.png)  
> ![08-device-funktion4](https://us1.discourse-cdn.com/flex025/uploads/athom/original/3X/a/3/a384b5acdc8194fd4d6378ec97910db54ed40d7b.png)  
> **Når disse 4 sensorer er tilføjet skulle det gerne se sådan her ud**

> ![09-device-overview](https://us1.discourse-cdn.com/flex025/uploads/athom/original/3X/d/c/dc7759ab632ebc9b9d4f1fb05901b629b8709eff.png)

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

> ![10-device-final](https://us1.discourse-cdn.com/flex025/uploads/athom/original/3X/d/8/d83e80e6a9a19ba7d832aef7e198e1227a7d2afc.png)

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.

---

<div class="post-metadata">

### Author: ![jkiddo](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/jkiddo/32/148837_2.png) [@jkiddo](https://community.homey.app/u/jkiddo)
#### Post date: [December 23, 2025, 12:43pm UTC](https://community.homey.app/t/el-maler-echelon-nes-fra-konstant-i-homey/69045/4 "2025-12-23T12:43:45Z")

</div>

Det er SÅ lækkert … efter at have taget tilløb til at få sat et lignende setup i snart 1.5 år, er det endelig lykkedes. Guiden her var fantastisk. Jeg ender nok med at samle det som scripts og smide det på Github.
