WMBUS Sagemcom T210-D

Begonnen von chopsor, 09 August 2019, 13:48:19

Vorheriges Thema - Nächstes Thema

Arminz

hallo,
wir sind auch bei der Energie Steiermark und bekommen noch im Juni den Smartmeter installiert.
wir möchten via P1-Schnittstelle die Leistungsdaten auslesen und so Verbrauchsprofile erstellen.
@ Reisbaus: wir wären an deiner Lösung interessiert (da lokal mit uns übereinstimmend) und ersuchen dich, ob du hier mehr dazu posten könntest.
Beste Güße
Armin
Schnittstellen sind Stellen, wo man sich gelegentlich in den Finger schneidet ...

Reisbaua

Ich gehe mal nicht auf die Basics wie udev Rules, oder Docker Image bauen ein, das setze ich hier voraus.

Zuallererst musst du um die Keys anfragen. Bei Energie Graz ist es wohl kompliziert, bei Energienetze Steiermark kannst du es sogar selbst in deinem Kundenportal erledigen.
Wichtig ist dass du einen GUEK=Global Unicast Encryption Key und einen AAD=Global Authentication Key=GAK erhältst. In Österreich hast du ein Recht darauf deinen eigenen Smartmeter auszulesen und der Netzbetreiber muss dir diese Daten zur Verfügung stellen.
Außerdem brauchst du ein RJ11 zu USB Kabel welches du am Smartmeter in den P1 Port steckst.

Ich arbeite mit dem smarty_dsmr_proxy, welcher nun auch den, für Österreicher wichtigen, AAD entgegennehmen kann.
Bei mir läuft alles über Docker, von daher habe ich folgendes docker-compose File gemacht, welches ich hier auf das Wesentliche einkürze:

version: "3"

networks:
  web:
    external: true

services:

  ####
  # HINT: use only ONE of the example "fhem:" service
  # definitions below !
  #

  # Minimum example w/o any custom environment variables
  fhem:
    image: fhem/fhem:latest
    restart: always
    networks:
      - web
    labels:
    ports:
      - 8083:8083
    environment:
      FHEM_UID: 998
      FHEM_GID: 20
      TIMEOUT: 10
      RESTART: 1
    volumes:
      - "./fhem/:/opt/fhem/"
    devices:
      - "/dev/ttyUSB_JEELINK:/dev/ttyUSB_JEELINK"
      - "/dev/ttyACM0:/dev/ttyACM0"
    depends_on:

  dsmr:
    image: dsmr
    restart: always
    networks:
      - web
    devices:
      - "/dev/ttyUSB_SMARTMETER:/dev/ttyUSB_SMARTMETER"


Der wichtige Teil ist der dsmr Service. Hier hab ich im Host Betriebssystem eine fixe udev Regel erstellt welche mir dieses USB Kabel, welches am Smartmeter hängt, immer auf den selben Namen hängt:
ttyUSB_SMARTMETER
Ich könnte natürlich auf ttyUSB0/1/2 usw verwenden, aber das ändert sich eben manchmal wenn man mehrere USB Sticks hängen hat.

Das dsmr Dockerfile welches ich gebaut habe sieht folgendermaßen aus:
Dockerfile

FROM python

LABEL maintainer="some@email.at"

COPY ./smarty_dsmr_proxy /src
COPY ./entry.sh /src

WORKDIR /src

RUN apt update
RUN apt install -y socat python3-cryptography python3-serial python3-pip
RUN pip install pyserial cryptography

EXPOSE 2001

ENTRYPOINT ["bash", "./entry.sh"]


smarty_dsmr_proxy ist der unveränderte git clone von mweimerskirch/smarty_dsmr_proxy
entry.sh habe ich folgendermaßen geschrieben:

socat -d -d pty,raw,echo=0,link=./ttyUSB_SM_in TCP-LISTEN:2001 &
python3 decrypt.py -i /dev/ttyUSB_SMARTMETER --serial-output-port=./ttyUSB_SM_in -a 30hierkommtderAAD hierkommtderGUEK


Wichtig! Vor dem AAD muss fix eine 30 stehen. Alle Keys sind ohne irgendwelcher Anführungszeichen hinzuschreiben
/dev/ttyUSB_SMARTMETER muss im Docker container vorhanden sein. Das docker-compose vom FHEM übergibt dieses Device (siehe oben).
socat gibt den dsmr Port nach außen auf Port 2001

Nachdem also das dsmr Image lokal gebaut wurde, und docker-compose beides angestartet hat, sollte es möglich sein im FHEM auf den dsmr service zuzugreifen:
define SmartMeterP1 SmartMeterP1 dsmr:2001
Wenn das Docker Netzwerk korrekt eingestellt ist und FHEM und DSMR im gleichen network sind, kann man Docker Container über deren Namen ansprechen, also "dsmr".

Bei Problemen, oder um überhaupt mal ETWAS zu sehen, kann man ganz ohne Docker mal den dsmr Proxy clonen und laufen lassen:
python3 decrypt.py -i /dev/ttyUSB0 -a 301234ABCD 1234ABCD
der sollte dann alle 10s die Smartmeter Werte ausspucken.

Reisbaua

Damit alle was davon haben, möchte ich hier meine Antwort auf eine Privatmitteilung reinposten, wo ich um mehr Details zu meinem Lösungsweg gefragt wurde.

Zitat
Ich nutze ein ausgewachsenes Linux Debian, also kein Raspberry, da ich alles in Docker mache.

Du musst smarty_dsmr_proxy runterladen/clonen, der wiederum benötigt dann die apt Pakete python3-cryptography und python3-serial um laufen zu können.

Der Kern des Ganzen ist dann der folgende Befehl:
python3 decrypt.py -i /dev/ttyUSB_SMARTMETER -a 30A88D5xxxx -p 182xxx

/dev/ttyUSB_SMARTMETER könnte bei dir ttyUSB0 oder ttyUSB1 sein, je nachdem als was dein USB Kabel erkannt wurde. Ich habe mein Device per udev Regel fix auf ttyUSB_SMARTMETER gemappt.

-a ist der AAD. Das bekommst du von der Energie Stmk als Global Authentication Key (GAK)
Achtung hier! Du musst deinem GAK die Zahl 30 voranstellen!
-p ist dann der GUEK, den du ebenfalls von der Energie Stmk bekommen hast.

Tomhri

Hallo,

falls jemand Interesse an einem ESP8266 Modul zur Anbindung des Stromzählers hat, bitte melden, habe welche zum Selbstkostenpreis abzugeben.


TheTrumpeter

Zitat von: Tomhri am 02 September 2021, 11:27:04
Hallo,

falls jemand Interesse an einem ESP8266 Modul zur Anbindung des Stromzählers hat, bitte melden, habe welche zum Selbstkostenpreis abzugeben.
Wenn ich oben richtig gelesen habe, dann läuft das Teil in der Steiermark?
Lt. dieser Übersicht: https://oesterreichsenergie.at/fileadmin/user_upload/Smart_Meter-Plattform/20200201_Konzept_Kundenschnittstelle_SM.pdf hat der Zähler in der Steiermark eine P1-Schnittstelle, wohingegen z.B. in Niederösterreich MBUS zum Einsatz kommen soll?
Umgekehrt beschreibt Netz-NÖ die Schnittstelle als "P1"-Schnittstelle https://www.netz-noe.at/Download-(1)/Smart-Meter/218_9_SmartMeter_Kundenschnittstelle_lektoriert_14.aspx sagt aber auf Seite 4, dass nur die Pins 3+4 verbunden werden sollen?

Bin verwirrt, wird das Teil denn auch in NÖ funktionieren?
FHEM auf RPi3, THZ (LWZ404SOL), RPII2C & I2C_MCP342x (ADCPiZero), PowerMap, CustomReadings, RPI_GPIO, Twilight, nanoCUL (WMBus für Diehl Wasserzähler & Regenerationszähler für BWT AqaSmart), ESPEasy, TPLinkHS110

Tomhri

#20
Hallo,

Mein Stromzähler entspricht https://www.netbeheernederland.nl/_upload/Files/Slimme_meter_15_32ffe3cc38.pdf bzw. https://www.netbeheernederland.nl/_upload/Files/Slimme_meter_15_91e8f3e526.pdf
Lt. Pinbelegung ist eine Doppelbelegung der Funktionen nicht möglich. Der Hersteller wird wohl ein anderes Kommunikationsmodul verbaut haben.

LG
Thomas

Manfi

Habe hier https://github.com/gskjold/AmsToMqttBridge ein interessantes Projekt gefunden.
Die Software läuft auf meiner selbst gebastelten Hardware mit einem TSS721 mbus>ttl Umsetzer + Wemos d1 mini an einem Sagemcom T210-D der Netz NÖ und schickt mir die Daten via MQTT zu FHEM. Habe auch vor, das (ohne TSS721)  mit einem steirischen Zähler zu testen.


Gruß
Manfi
Hardware: Raspberry Pi2, SignalDuino 433, Sonoff/Tasmota, NodeMCU/ESPEasy, FS10

TheTrumpeter

#22
Zitat von: Manfi am 09 Januar 2022, 15:17:47
TSS721 mbus>ttl Umsetzer + Wemos d1 mini an einem Sagemcom T210-D der Netz NÖ und schickt mir die Daten via MQTT zu FHEM.
Wemos D1 Mini klingt schonmal gut, so einer zählt grad noch die Umdrehungen vom Stromzähler, wenn dann der Sagemcom montiert wurde, ist der nutzlos.
Und als Umsetzer hätt' ich einfach auf den zurückgegriffen, der verwendet auch einen TSS721A: https://at.rs-online.com/web/p/entwicklungstools-kommunikation-und-drahtlos/2167484

Hätte ja gehofft was auf ESPEasy-Basis zu finden, da ich bisher erfolgreich an MQTT vorbeigekommen bin. Ev. lässt sich der Code vom Link ja entsprechend portieren...

EDIT: Habe übrigens was ähnliches gefunden, das auch funktionieren müsste: https://github.com/saghonfly/shrdzm/wiki
FHEM auf RPi3, THZ (LWZ404SOL), RPII2C & I2C_MCP342x (ADCPiZero), PowerMap, CustomReadings, RPI_GPIO, Twilight, nanoCUL (WMBus für Diehl Wasserzähler & Regenerationszähler für BWT AqaSmart), ESPEasy, TPLinkHS110

Manfi

Warum hast du Angst vor MQTT?
Das Teil aus #18 funktioniert mit den Zählern der Netz NÖ definitiv nicht, da es kein mbus Interface hat.

LG
Manfi
Hardware: Raspberry Pi2, SignalDuino 433, Sonoff/Tasmota, NodeMCU/ESPEasy, FS10

TheTrumpeter

Zitat von: Manfi am 10 Januar 2022, 12:29:41
Warum hast du Angst vor MQTT?
Keine Angst, aber würd' gerne ein weiteres Interface vermeiden. Dafür scheint die SW, das Du gefunden hast, aber zumindest einfacher zu konfigurieren zu sein als die, die ich gefunden habe.

Zitat von: Manfi am 10 Januar 2022, 12:29:41
Das Teil aus #18 funktioniert mit den Zählern der Netz NÖ definitiv nicht, da es kein mbus Interface hat.
Ja soweit war ich auch schon.
FHEM auf RPi3, THZ (LWZ404SOL), RPII2C & I2C_MCP342x (ADCPiZero), PowerMap, CustomReadings, RPI_GPIO, Twilight, nanoCUL (WMBus für Diehl Wasserzähler & Regenerationszähler für BWT AqaSmart), ESPEasy, TPLinkHS110

networker

@Manfi hast du für deine selbstgebastelte Hardware Unterlagen die mir weiterhelfen könnten?
Ich bin auch in NÖ und habe einen Sagemcom T210-D

lG Networker

djbone92

#26
Hey Leute, Hey @Manfi
läuft das Teil jetzt bei dir? Ich habe auch den Zähler von Netz NÖ und suche eine "Bridge" auf MQTT.
Da sieht mir die Lösung von dir sehr vielversprechend aus :)#

edit:
Hab mir gerade mal den "TSS721 Modul M-BUS Zu TTL mit RX TX Anzeige STM32 Entwicklung Bord" bestellt :D

mfg
Mike

networker

#27
Ich habe mein Schnittstellenmodul für meinen Smartmeter (NÖ) über diesen Link besorgt und bin damit sehr zufrieden.
https://www.willhaben.at/iad/kaufen-und-verkaufen/d/smartmeter-kundenschnittstelle-modul-zur-einbindung-in-eigene-home-automation-553352409/

djbone92

Hallo networker,

Danke erstmal für die Info.
Sieht bei dir die Setup seite auch so aus?

Ich bekomm die Verbindung zum Zähler einfach nicht hin...
Hast du bei der NÖ-Netz noch was freischalten lassen, nachdem du den Code erhaltem hast?

mfg
Mike

networker

#29
Ja, habe eine E-Mail an smartmeter@netz-noe.at geschrieben mit der Bitte um Zusendung der Keys für die P1 Schnittstelle.

Zusätzlich Zählernummer, Kundennummer, Zählerstandort und Vor- und Zunahme.

Am nächsten Tag die Antwort mit den Keys.