DTSU666 in HomeAssistant einbinden

Hallo zusammen,

ich habe hier einen DTSU666 liegen den ich gerne mit HomeAssistant verbinden würde.

Jetzt ist der DTSU666 natürlich nicht an der gleichen räumlichen Position wie mein HomeAssistant-Rechner.

Als Lösung habe ich mir einen Elfin EW11 besorgt den ich direkt an den DTSU angeschlossen habe und so die Modbus quasi über WLAN zum HomeAssistant-Rechner verlängere.

In HomeAssistant habe ich mir dann einen Modbus-Adapter in der Config angelegt.

HomeAssistant verbindet sich auch mit dem Elfin EW11 aber ich bekomme keine Date ausgelesen.

Bevor ich jetzt hier genauere Daten einstelle wäre meine Frage ist mein Ansatz als Lösung überhaupt möglich und hat das eventuell einer schon so gemacht?

Danke und Gruß

dnwalker

Hallo zusammen,

die Anfrage hat sich erledigt da ich die Sache jetzt nach vielen Versuchen am laufen habe.

Ich habe jetzt alle Daten aus dem Stromzähler über den WLAN-Adapter in HA zur Verfügung und kann jetzt sehen was ich so verbrauche bzw. einspeise.

Schöne grüße

dnwalker

und wie hast du das gemacht?

Hallo,

hier mal mein Weg wie ich das Teil in HomeAssistant eingebunden habe.

Neben dem DTSU666 benötigt man einen Elfin-EW11A und eine Spannungsversorgung für das Teil.

Das Teil gibt es mit oder ohne externe Antenne für wenige Euro bei den bekannten Anbietern.

Ich habe den EW11 mit externen Antenne und dem Montageclip für eine Hutschiene bestellt.

Um das Gerät mit Strom zu versorgen muss wenn nicht schon irgendwie in der Unterverteilung vorhanden ist eine Gleichstromquelle angeschlossen werden.

Ich versorge das Gerät mit 5V aber es lässt wohl soweit ich weiß bis etwa 30V zu - aber da schaut mal lieber genau in die Anleitung!

Über die beiden Klemmen A & B an dem EW11 schließt man dann den DTSU666 an. Am DTSU666 sind das dann die Klemmen A = 24 und B = 25.

Hier muss auch A mit A und B mit B verbunden werden.

Beim ersten Einschalten des EW11 spannt der ein WLAN auf mit dem man sich verbinden kann und per Browser die Konfiguration durchführen kann.

Der EW11 ist unter der 10.10.100.254/24 zu erreichen. Login und Passwort war bei meinem Gerät "admin" & "admin"

Meine Einstellungen sehen wie folgt aus:

EW11_status.pdf (199 KB)

System settings.pdf (147 KB)

Bei den WAN-Settings ist eine IP-Adresse aus Eurem lokalen LAN gemeint. Keine Ahnung warum das hier als WAN Bezeichnet wird.

Ich habe hier eine feste IP gewählt.

Bei den LAN-Settings ist das IP Netz gemeint was der EW11 beim ersten Start aufspannt.

Nachher im Betrieb kann man beide Netzwerke quasi gleichzeitig verwenden.

Ob das Sinn macht das LAN eingeschaltet zu lassen muss dann jeder selber entscheiden.

Aktuell habe ich es zu Testzwecken noch aktiviert.

EW11-Serial Port Settings.pdf (93.2 KB)

Hier muss natürlich beim Punkt Protocol "Modbus" gewählt werden.

EW11-Communikation Settings.pdf (97.2 KB)

Hier muss der Local Port festgelegt werden über den die Modbus-Daten später von HomeAssistant abgefragt werden.

Jetzt überträgt der EW11 im Grunde alles was er über Modbus vom DTSU666 bekommt über den gewählten Port (in meinem Fall 502) in das eigene Netzwerk.

Soweit die Hardware - jetzt muss in der config.yaml von HomeAssistant ein virtuelles Modbus-Gerät angelegt werden.

modbus:
- type: tcp
name: "ew11"
host: 192.168.1.195
port: 502
timeout: 9
sensors:
- name: "DTSU666_Spannung_A"
unique_id: DTSU_Spannung_A
address: 0x2006
data_type: float32
slave: 01
unit_of_measurement: V
input_type: holding
scale: 0.1
precision: 2
scan_interval: 10
- name: "DTSU666_Spannung_B"
unique_id: DTSU_Spannung_B
address: 0x2008
data_type: float32
slave: 01
unit_of_measurement: V
input_type: holding
scale: 0.1
precision: 2
scan_interval: 10
- name: "DTSU666_Spannung_C"
unique_id: DTSU_Spannung_C
address: 0x200A
data_type: float32
slave: 01
unit_of_measurement: V
input_type: holding
scale: 0.1
precision: 2
scan_interval: 10
- name: "DTSU666_Strom_A"
unique_id: DTSU_Strom_A
address: 0x200C
data_type: float32
slave: 01
unit_of_measurement: A
input_type: holding
scale: 0.001
precision: 2
scan_interval: 10
- name: "DTSU666_Strom_B"
unique_id: DTSU_Strom_B
address: 0x200E
data_type: float32
slave: 01
unit_of_measurement: A
input_type: holding
scale: 0.001
precision: 2
scan_interval: 10
- name: "DTSU666_Strom_C"
unique_id: DTSU_Strom_C
address: 0x2010
data_type: float32
slave: 01
unit_of_measurement: A
input_type: holding
scale: 0.001
precision: 2
scan_interval: 10
- name: "DTSU666_Wirkleistung_A"
unique_id: DTSU_Wirkleistung_A
address: 0x2014
data_type: float32
slave: 01
unit_of_measurement: W
input_type: holding
scale: 0.1
precision: 2
scan_interval: 10
- name: "DTSU666_Wirkleistung_B"
unique_id: DTSU_Wirkleistung_B
address: 0x2016
data_type: float32
slave: 01
unit_of_measurement: W
input_type: holding
scale: 0.1
precision: 2
scan_interval: 10
- name: "DTSU666_Wirkleistung_C"
unique_id: DTSU_Wirkleistung_C
address: 0x2018
data_type: float32
slave: 01
unit_of_measurement: W
input_type: holding
scale: 0.1
precision: 2
scan_interval: 10
- name: "DTSU666_Wirkleistung_kombiniert"
unique_id: DTSU_Wirkleistung_kombiniert
address: 0x2012
data_type: float32
slave: 01
unit_of_measurement: W
input_type: holding
scale: 0.1
precision: 2
scan_interval: 10
- name: "DTSU666_Blindleistung_A"
unique_id: DTSU_Blindleistung_A
address: 0x201C
data_type: float32
slave: 01
unit_of_measurement: W
input_type: holding
scale: 0.1
precision: 2
scan_interval: 10
- name: "DTSU666_Blindleistung_B"
unique_id: DTSU_Bindleistung_B
address: 0x201E
data_type: float32
slave: 01
unit_of_measurement: W
input_type: holding
scale: 0.1
precision: 2
scan_interval: 10
- name: "DTSU666_Blindleistung_C"
unique_id: DTSU_Blindleistung_C
address: 0x2020
data_type: float32
slave: 01
unit_of_measurement: W
input_type: holding
scale: 0.1
precision: 2
scan_interval: 10
- name: "DTSU666_Blindleistung_kombiniert"
unique_id: DTSU_Blindleistung_kombiniert
address: 0x201A
data_type: float32
slave: 01
unit_of_measurement: W
input_type: holding
scale: 0.1
precision: 2
scan_interval: 10
- name: "DTSU666_Frequenz"
unique_id: DTSU_Frequenz
address: 0x2044
data_type: float32
slave: 01
unit_of_measurement: Hz
input_type: holding
scale: 0.01
precision: 2
scan_interval: 10
- name: "DTSU666_positive_Gesamtwirkenergier"
unique_id: DTSU_positive_Gesamtwirkenergier
address: 0x101E
data_type: float32
slave: 01
unit_of_measurement: KWh
input_type: holding
scale: 1
precision: 2
scan_interval: 10
- name: "DTSU666_negative_Gesamtwirkenergier"
unique_id: DTSU_negative_Gesamtwirkenergier
address: 0x1028
data_type: float32
slave: 01
unit_of_measurement: KWh
input_type: holding
scale: 1
precision: 2
scan_interval: 10

Wichtig hier ist natürlich die passende IP-Adresse vom EW11 und der genutzte Port - aber das dürfte ja eh klar sein.

Die Adressen unter der man die passenden Werte findet sind in der Bedienungsanleitung vom DTSU aufgeführt.

Ich habe nicht alle Sensoren in meiner Config - den Rest kann man sich ja dann selber noch aus der Anleitung zufügen.

So ich hoffe Ihr könnt mit der Beschreibung etwas anfangen.

Gruß

dnwalker

Ja eigentlich sollte hier meine Vorgehensweise stehen aber irgendwie wird das nicht in das Forum übertragen ????

Jetzt mal als PDF...

Daten von einem DTSU666 per WLAN zur SmartHome Steuerung.pdf (588 KB)

2 „Gefällt mir“

Hallo dnwalker,

vielen Dank für die ausführliche Anleitung :+1: Ich habe das Gleiche vor und möchte einen EW11 an den DTSU anschließen, der bereits im Schaltschrank verbaut ist.

Nun habe ich heute einen Blick auf den DTSU geworfen und festgestellt, das an Klemme 24 und 25 bereits etwas angeschlossen ist. Kann ich da den EW11 einfach dazu klemmen, oder kann man nicht mehrere Abnehmer gleichzeitig an den beiden Klemmen angeschlossen haben?

Danke und Grüße,
feldhuegel

@feldhuegel Die Frage habe ich auch. Hab selber eine Anlage von Enpal und dort ist DTU verbaut. Über deren Webserver kommen aber viel zu spät die Daten in mein Homeassistant. Ich würde wie du gerne direkt die Quelle anzapfen und die Daten dann weiterverarbeiten.

Hallo @dnwalker,

vielen Dank für deine Ausführungen.

Ich versuche ebenfalls einen Chint DTSU666 auszulesen. Allerdings habe ich mir dazu einen WaveShare RS485 zu ETH Adapter besorgt. Auf diesen bekomme ich per Homeassistant auch problemlos Zugriff. Allerdings bekomme ich vom DTSU666 keine Werte.

Ich bin bisher wie folgt vorgegangen:

Ich habe den Eintrag Modbus: !include modbus.yaml zu meiner configuration.yaml hinzugefügt.

meine modbus.yaml lautet:

- name: WaveShare
  type: rtuovertcp
  host: 192.168.168.133
  port: 502
  delay: 10
  message_wait_milliseconds: 30
  timeout: 10

eigentlich wollte ich hier mit dieser Integration arbeiten: GitHub - lmatula/ha_chint_pm: homeassistant Chint power meter integration

Die LED des Waveshare-Links wird für einige Sekunden blau, wenn man in der Integration auf „OK“ klickt, und wieder grün, nachdem in der Integration "unnoknown error" angezeigt wird.

Da ich bei dieser Integration somit keine Verbindung bekomme, habe ich in der modbus.yaml noch die ersten 3 Spannungseinträge unter sensors hinzugefügt. Wie gesagt bekommen diese aber auch keine Werte übermittelt.

Habe auch nur tcp als type ausprobiert. Habe den Modus in der Waveshare-Oberfläche geändert.

irgendeine Idee, was falsch sein könnte?

Hier noch der Eintrag aus dem Log, wenn ich über die Integration verbinden will. Wahrscheinlich ist es nur für die Integration relevant und hat keinen Einfluss auf das generelle Problem, aber wollte es der Vollständigkeit halber nennen.

'ModbusIOException' object has no attribute 'registers'

Traceback (most recent call last):
File "/config/custom_components/chint_pm/config_flow.py", line 387, in async_step_setup_network
info = await validate_network_setup(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/config/custom_components/chint_pm/config_flow.py", line 145, in validate_network_setup
decoder = BinaryPayloadDecoder.fromRegisters(rr.registers, byteorder=Endian.BIG)
^^^^^^^^^^^^
AttributeError: 'ModbusIOException' object has no attribute 'registers'

Hallo Sven,

zu dem WaveShare RS485 kann ich leider auch nichts sagen da ich so einen Umsetzer selber noch nicht getestet habe.

Ich habe in meiner config.yaml folgende Einträge

modbus:
  - type: tcp
    name: "ew11"
    host: 192.168.1.195
    port: 502
    timeout: 9

und nicht wie Du "rtuovertcp".

Hast Du bei dir mal nur tcp probiert?

Gruß
dnwalker

1 „Gefällt mir“

Hi @dnwalker,

sehe deine Antwort erst jetzt. Ja genau, hatte in der config auch tcp als type ausprobiert, was leider keinen Unterschied gemacht hat. Ich sehe am Waveshare auch nicht, dass es irgendwie von homeassistant angesprochen wird. Vielleicht muss ich doch über einen weiteren raspi und einen USB-Dongle nachdenken. Wollte eh mal EVCC für die Wallbox ausprobieren und könnte das dann direkt mit einbinden.

Danke dennoch für deine Hilfe.

Habe mir nun auch einen ew11 besorgt und wie von dir beschrieben eingerichtet.

Leider bekomme ich hier folgende Fehlermeldung. Hast du eine Idee, was es mit "address: 8198" auf sich hat?

Logger: homeassistant.components.modbus.modbus
Quelle: components/modbus/modbus.py:300
Integration: Modbus (Dokumentation, Probleme)
Erstmals aufgetreten: 11:46:18 (1 Vorkommnisse)
Zuletzt protokolliert: 11:46:18

Pymodbus: ew11: Error: device: 11 address: 8198 -> Modbus Error: [Connection] Not connected[AsyncModbusTcpClient 192.168.168.105:502]

Die 8198 in Dezimal ist die 2006 in HEX.

In der Konfig steht

  • name: "DTSU666_Spannung_A"
    unique_id: DTSU_Spannung_A
    address: 0x2006
    data_type: float32
    slave: 01
    unit_of_measurement: V
    input_type: holding
    scale: 0.1
    precision: 2
    scan_interval: 10

Bedeutet also das da über die Verbindung versucht wird die Spannung A aus dem Zähler zu lesen was aber nicht funktioniert weil da etwas mit der Verbindung nicht stimmt.

Warum das bei Dir nicht funktioniert kann ich auch nicht sagen.

Aktuell habe ich kaum Zeit mich mit dem Thema näher zu beschäftigen aber sobald ich wieder etwas Luft habe schaue ich mir die Sache bei mir noch mal an. Aktuell verwende ich den Zähler nicht und muss die Schaltung mit dem WLAn-Teil aufbauen um da mal genauer zu testen