Ich habe mir neulich gedacht ich habe ja einen Smartmeter bekommen, wieso lese ich dort nicht die Daten aus. Gesagt, getan, ... oder doch nicht? Es war gar nicht so leicht Informationen zu finden wie das ganze funktionieren kann.

Ich habe mit der Recherche mit dem Zähler selbst begonnen. Bei mir wurde ein T210-D-r von der Französischen Firma Sagemcom verbaut. Dieser ist mit einer P1 Schnittstelle ausgestattet. Diese sollte eigentlich Standartisiert sein laut diesem Dokument P1 Companion Standard. Was allerdings aus dem Smartmeter kommt ist etwas anderes. Alle 20 Sekunden kommt ein Datenpaket welches ich nicht lesen oder entschlüsseln kann. Aber mal zurück zum Anfang und der Verbindung zum Smartmeter. Unter der gelben Abdeckung befindet sich eine RJ12 Buchse mit folgender Pinbelegung.

Um die Daten vom Smartmeter zu Empfangen benötigt man allerdings einen Adapter.

Sagemcom T210-D-r

Auswertung

Ich habe mich dazu entschlossen Node Red und einen Raspberry zu verwenden um die Daten des Smartmeters auszulesen. Als ersten Schritt habe ich einen Raspberry mit einer Lite Version von Raspbian aufgesetzt und am Netzwerk angeschlossen.

Node Red war auch sehr schnell installiert und auch die anderen Pakete die gebraucht wurden.

apt-get install aptitute vim nodered

Folgende Nodes benötigt man für die Auswertung: node-red-dashboard, node-red-contrib-pythonshell, node-red-contrib-sqlitedb, node-red-contrib-sqlite

Für das Python Script werden einige Bibliothen benötigt. Diese werden mit PIP installiert.

pip install pyserial pycryptodome

Das Script:

import serial
import sys
from Crypto.Cipher import AES
import json

def format_content(content):
    content = content.replace('\r', '')
    # Split by lines
    lines = content.split('\n')
    # Remove empty lines
    lines = list(filter(None, lines))
    # Remove unused lines
    lines = lines[2:len(lines)-1]
    return lines

def format_lines(lines):
    data = {}

    for line in lines:
        key = line.split('(')[0]
        full_value = line.split('(')[1].replace(')', '')
        full_value = full_value.replace('*', '')
        value = "".join([c for c in full_value if c in ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']])
        metric = full_value.replace(value, '')
        data[key] = {
            "value": value,
            "metric": metric
        }

    return json.dumps(data)

ser = serial.Serial('/dev/ttyUSB0', 115200)

try:
    while True:
        s = ser.read(511)
        enc_data = s[18:499]
        system_title = s[2:10]
        frame_counter = s[14:18]
        tag = s[-12:]

        # The Encryption Key
        K = bytes.fromhex('C3DB997F8B85282D0C01FF284E376AA4')
        
        # The data to encrypt (can be null for authentication)
        P = enc_data

        # Additional Authenticated Data
        A = bytes.fromhex('303E64987516665F30A23ADB894C89AB39')

        # Initialization Vector
        IV = system_title + frame_counter

        cipher = AES.new(K, AES.MODE_GCM, IV)
        EINGELESEN   = cipher.decrypt(P)

        formated_content = format_content(EINGELESEN.decode())
        data = format_lines(formated_content)
        print(data)

except KeyboardInterrupt:
    print("Programm terminated")
    ser.close()
    raise SystemExit

Um die Drehzahl einer Spindel zu messen habe ich mir einen IR Abstandssensor bestellt. Zusammen mit meinem Multimeter möchte ich damit die Drehzahl meiner Frässpindel messen.

Nachdem ich mit meinem ersten Spotwelder nicht so viel Glück hatte habe ich versucht einen neuen zu bauen. Diesmel kommt der Strom nicht aus der Steckdose sondern auf einer Autobatterie.

Aus meinem Spotwelder Projekt hat sich dieses Milliohmmeter entwickelt. Nachdem ich auch mit dem zweiten Spotwelder keine ganz sauberen Schweißpunkte zusammengebracht habe, musste ich mal den Widerstand meiner Elektroden messen.

Grundsätzlich besteht es aus einer Konstatntstromquelle und einem Verstärker für das gemessene Signal.

Konstantstromquelle

Die Konstantstromquelle besteht aus nur einer Handvoll Teilen.

Kostantstromquelle

Ich habe mir dieses Teil über Amazon bestellt.

 

In Youtube findet man einige Projekte mit diesem oder ähnlichen Modulen die alle ganz gut zu funktionieren scheinen. Ich habe es trotz eines sauberen Aufbaus nicht zum laufen gebracht.