Inhaltsverzeichnis

LoRa-Ferraris-Zähler

Auch ein Projekt, dass ich in mehreren Iterationen aufgegriffen habe (und auch etwas Nerven gekostet hat 😅). Ein Sensor, der die guten, alten Ferraris-Stromzähler abgreifen kann. Die mit der Zählscheibe.

Der Stromverbrauch des Hauses sollte digital auf dem PC oder Smartphone als Diagramm angezeigt werden können.

Das sagt Wikipedia dazu:

Auszug von Wikipedia: Ferraris-Zähler

Der Ferraris-Zähler, benannt nach Galileo Ferraris, oder Induktionszähler ist ein elektromechanisches Messgerät für elektrische Energie, umgangssprachlich ein Stromzähler. Er wird zur Anzeige der konsumierten, selten auch der eingespeisten, elektrischen Energie bei ein- oder mehrphasiger Wechselspannung in Niederspannungsnetzen verwendet. Er besteht aus einer speziellen Form von Asynchronmotor, dem Ferrarisläufer (auch Ferraris-Scheibe genannt), der die Form einer kreisförmigen Aluminiumscheibe hat, in Verbindung mit einem mechanischen Zählwerk.

Sensor

Der Sensor besteht aus einer grünen 5 mm LED und einer 3 mm Fotodiode.

Unter grünem Licht wird die rote Markierung der Zählerscheibe dunkel, sie emmitiert also kaum Licht. Ansonsten reflektiert die metallene Scheibe das grüne Licht sehr gut. Also ist grünes Licht sehr gut geeignet für die Abtastung der Scheibe.

So ist das Prinzip:


Wichtig noch, dass Fotodiode und LED angewinkelt sind (EiInfallswinkel ist gleich Ausfallswinkel), damit das gut funktioniert.

Ansonsten habe ich ein schwarzes, nicht störendes Gehäuse gedruckt. Mit einem Schlitz in der Mitte, damit der Sensor exakt über der Scheibe ausgerichtet werden kann.

Schaltung

Für die Schaltung habe ich mir ein 5 V Schaltnetzteil im Zählerschrank eingebaut (Achtung: Netzspannung; Man sollte wissen, was man da tut…). Am Netzteil kann man die Spannung bis 4 V heruntersetzen (da das LoRa Modul ja offiziell keine 5 V unterstützt).

Verwendet wird ein Arduino-Nano, welcher über seinen USB-Port vom Netzteil versorgt wird.

Hier die Schaltung. Dieses mal in ASCII-Art. 😁

+---------------------------------------------------+
|                   +-----+     +-----------+       |
|                  +-+    |     | LED       |       |
|                  | |    |     | grün     +-+      |
|             1MOhm| |    |  +-----+       | |      |
|                  +-+    |   +   + +->    | | 50Ohm|
|       +-----------+     |    +-+  +-->   +-+      |
|       |  Photo    |     |   +---+         |       |
|       |  Diode +-----+  |     |           |       |
|       |     +-> +   +   |     |           |       |
|       |     +--> +-+    +-----+           |       |
|       |         +---+         |           |       |
+---------------------------------------------------+
        |           |           |           |
        |           |           |           |
        +           +           +           +
       ADC0        VCC         GND         VCC

Berechnung

Die Intervalle zwischen den Zählimpulsen können wie folgt in Watt umgerechnet werden:

$\frac{3600000}{75,0 \frac{u}{kwh} \cdot \frac{\color{red}{x} ms}{1000.0}} = \color{red}{y} W$

Bei meinem Zähler entsprechen 75 Umdrehungen einer Kilowattstunde.

Software

Die Software wurde in diesem Fall mit der Arduino-IDE erstellt. Als Library für LoRa ist Tinylora im Einsatz.

Prinzipiell ist die Software nichts besonderes. Der Analogwert des Sensors wird regelmäßig eingelesen. Dann wird ein gleitender Mittelwert über ca. 4 min gebildet. Als Stricherkennung dient dann der Unterschied zum Mittelwert. Da der Spannungsunterschied bei mir nicht sonderlich groß ist, habe ich da fix „4“ als Konstante hinterlegt. Der benötigte Wert wurde empirisch mit Messgerät ermittelt.

ttn_stromzaehler.ino

Hier noch die Berechnung in ioBroker, inklusive dem Anlegen der States:

ioBroker Script

Zuletzt noch der TTN-Decoder:

TTN-Decoder

Historie

Meine ersten Versuche waren batteriebetrieben und daher sehr auf Energieverbrauch optimiert.

Allerdings: Egal was ich gemacht hatte, ich bin nie über die Batterielebensdauer von einigen Wochen gekommen. Daher habe ich mich mit der LoRa-Variante dazu entschlossen auf ein Netzteil zurückzugreifen.

1. Versuch: MySensors

Der erste Versuch war mit MySensors. Ich habe das aber zum damaligen Zeitpunkt nie wirklich stabil hinbekommen.

Vermutlich war das Funktsignal im Zählerkasten zu instabil.

Source

Achtung: Keine Garantie auf Funktionstüchtigkeit!

program.ino

2. Versuch: ESP32

Die zweite Variante nutzte einen ESP32 (ohne „USB-Board“) und seinen stromsparenden ULP-Prozessor.

Daten werden über MQTT und WIFI versendet. Die Einstellungen (inklusive WLAN) werden über einen WIFI-Manager gemacht.

Die LED wird über den ULP angesteuert. Und auch der ADC und der Vergleich wird über den ULP gemacht. Erst, wenn der Strich auf der Scheibe kommt startet der „große“ Prozessor und sendet das Ergebnis per WLAN.

Hat sich aber dennoch nicht durchgesetzt, da hiermit auch nur eine Laufzeit von wenigen Wochen möglich war und das WLAN-Signal im Schaltschrank nicht sonderlich gut ist, weshelb mit WLAN öfter Pakete verloren gingen.

War aber dennoch sehr interessant die Programmierung des ULPs im ESP32 kennen zu lernen.

Source

Achtung: Keine Garantie auf Funktionstüchtigkeit!

program.ino

3. Versuch: LoRa

Der dritte Versuch war dann letztendlich mit LoRa. Die Gebäudedurchdringung (und Schaltschrankdurchdringung 😁) von LoRa ist deutlich besser als von den beiden anderen Varianten.

Ich betreibe mein eigenes Gateway (auf dem anderen Ende des Grundstücks), welches absolut problemlos die Funksignale aufgreifen kann. Die Daten werden über das TTN gesendet.

Das ist auch der Aufbau, den ich hier beschreibe.

Sicherheit

Daten über das TTN sind prinzipiell verschlüsselt. Aber da in diesem Fall (bei dem aktuellen Programm) ja die Sendeintervalle und der Sender mehr relevant, als die eigentlichen Daten sind, bringt das hier natürlich relativ wenig.

Man kann aufgrund ein paar Zusatzinformationen auf den Stromverbrauch schließen. Man braucht quasi nur den Umrechnungsfaktor (kann man ggf. auch schätzen) und die Device-ID. Damit kann man auch von außen die Daten abgreifen.

Das sollte einem bewusst sein. Ggf. die Sendeleistung so verringern, dass die Pakete nur noch vom eigenen Gateway empfangen werden können.

Bilder


Sensoraufbau
Bestehend aus Widerständen,
einer Fotodiode und einer LED


Stromzähler mit montierten Sensor


Stromversorgung

Screenshots


Darstellung in der ioBroker-
Lovelace-UI (webbasierend)


Test-Diagram in Grafana


Test-Heatmap in Grafana

3D-Modell

Sensor

Download