Um vollen Zugriff auf die Messdaten eines Stromzählers zu erhalten, wird in der Regel eine Pin benötigt. Diese kann beim zuständigen Netzbetreiber angefordert werden. Da die Netzbetreiber sich hiermit teilweise monatelang Zeit lassen, lässt sich alternativ ein Raspberry Pi programmieren, um den korrekten Zähler-Pin mittels Brute-Force Methode herauszufinden.
Dazu wird eine LED verwendet, die in einem präzisen Rhythmus ein- und ausgeschaltet wird. Zunächst muss die LED zweimal blinken, um den Eingabemodus des Zählers zu aktivieren. Anschließend kann das System die Zahlenkombinationen von 0000 bis 9999 systematisch durchlaufen. Dabei ist darauf zu achten, dass die LED nah genug am Sensor des Stromzählers fixiert wird, um Übertragungsfehler zu vermeiden. Zudem muss das Timing exakt auf das jeweilige Zählermodell abgestimmt sein, damit die Lichtsignale weder zu schnell noch zu langsam erfolgen. Bei erfolgreicher Eingabe werden in meinem Zählermodell die erweiterte Verbrauchsdatenübermittlung zum Betrieb eines Zählermesskopfes automatisch freigeschaltet.

import RPi.GPIO as GPIO
import time
LED_PIN = 17
GPIO.setmode(GPIO.BCM)
GPIO.setup(LED_PIN, GPIO.OUT)
def signal(sleeptime=0.1):
GPIO.output(LED_PIN, GPIO.HIGH)
time.sleep(0.01)
GPIO.output(LED_PIN, GPIO.LOW)
time.sleep(sleeptime)
try:
for index in range(0000,10000): # 0000 bis 9999
# Zahl als 4-stellige Zeichenkette formatieren
number_str = f"{index:04d}"
# In einzelne Ziffern umwandeln
digits = [int(d) for d in number_str]
print(f"Aktueller Index: {number_str} -> {digits}")
# Init Pin Mode
signal(0.2)
signal()
for digit in digits:
# LED für jede Ziffer kurz einschalten
print(digit)
for i in range(digit):
signal()
# Pause zwischen den Ziffern
time.sleep(3)
# 3 Sekunden Pause nach 4 Ziffern
time.sleep(1)
except KeyboardInterrupt:
print("Programm beendet")
finally:
GPIO.cleanup()