Benutzer-Werkzeuge

Webseiten-Werkzeuge


infrastruktur:u300:stromzaehlung

Stromzaehlung u300 Foyer und Eingang C2

Das Setup ist WORK IN PROGRES!

Stets Rücksprache halten!

Deployed wurde als Prototyp ein Stromzähler S0 zu Ethernet Adapter.
Dieser zählt 100 Impulse pro kWh vom S0 Ausgang des Zwischenzählers.

Hersteller-URL: https://sms-guard.org
Hersteller-Type: IPswitch S0 mini
Manual: ipswitch-s0-mini-anleitung.pdf
Tools: IPswitches-update.zip memento

Aufgrund technischer Gegebenheiten wurde das Setup verändert
und hat jetzt einen RaspberryPi Seeed mit CM4 davor bekommen.

Das aktuelle neueste Setup ist NICHT DOKUMENTIERT, ich hab aufgrund schlechter Erfahrungen auch keine Lust das zu tun bevor ich sicher weiss, dass es für eine begrenzte Zeit so laufen kann.

Hostname-Raspi: shackpower.local\\
IPaddress-Raspi: TODO (derzeit: 10.42.21.1/22)

Nicht im Shack LAN erreichbar:

Hostname-Device: IPswitch\\
MAC-Device: 00:E0:67:C0:08:35\\

Count: http://<DEVICE>/cnt.html\\
CSV: http://<DEVICE>/csv.html

Das Device loggt (jetzt) per UDP Telegram alle Sekunde zum Raspberry
Dieser schreibt die Werte in eine MariaDB Datenbank
Ein UDP Datensatz hat 117 Zeichen und sieht so aus:

000 0.0 0.0 0.0V 003A00FF00FFFFFFFFFFFF640000000000000000FF005132B3B000000635000088000000001000000000000562000977

gesplittet in die Zählerdaten (am Ende)

000 0.0 0.0 0.0V 003A00FF00FFFFFFFFFFFF640000000000000000FF005132B3B 0000006350 00088 0000000010 00000 0000005620 00977

Datenbank ist erreichbar und aus dem Shack LAN lesbar:

Host: shackpower.local
Port: 3306
DBname: shackpower
Table: shackread
User: shackread
Pass: shackit

Datenbank Info:

+-------+---------+------+-----+---------+-------+
| Field | Type    | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
| epoch | int(11) | NO   | PRI | NULL    |       |
| z1    | int(11) | NO   |     | NULL    |       |
| p1    | int(11) | NO   |     | NULL    |       |
| z2    | int(11) | NO   |     | NULL    |       |
| p2    | int(11) | NO   |     | NULL    |       |
| z3    | int(11) | NO   |     | NULL    |       |
| p3    | int(11) | NO   |     | NULL    |       |
+-------+---------+------+-----+---------+-------+

epoch= Unix Timestamp
z1= Zählerstand 1 in Wh (Wattstunden)
p1= Aktuller Verbrauch 1 in W (Watt)
…und so weiter…

Somit ergibt sich folgende Datenlage:

epoch		z1		p1	z2	p2	z3		p3 	
1681597242 	33143050 	208 	0 	0 	25505100 	382
1681597243 	33143050 	208 	0 	0 	25505100 	382
1681597244 	33143050 	208 	0 	0 	25505100 	382
1681597245 	33143050 	208 	0 	0 	25505100 	382
1681597246 	33143050 	208 	0 	0 	25505100 	382  

Weiterhin gibt es eine Table „mateomat“ in welcher der Mate-O-Mat separat geloggt wird:

+--------+---------+------+-----+---------+-------+
| Field  | Type    | Null | Key | Default | Extra |
+--------+---------+------+-----+---------+-------+
| epoch  | int(11) | NO   | PRI | NULL    |       |
| volt   | int(11) | NO   |     | NULL    |       |
| power  | int(11) | NO   |     | NULL    |       |
| energy | int(11) | NO   |     | NULL    |       |
| temp   | int(11) | NO   |     | NULL    |       |
+--------+---------+------+-----+---------+-------+

epoch= Unix Timestamp
volt= Aktuelle Spannung in V (Volt) *1000 (letzte 3 Stellen sind Nachkomma)
power= Aktuelle Stromaufnahme in W (Watt) *1000 (letzte 3 Stellen sind Nachkomma)
energy= Gesamt Zähler Energieverbrauch in Wh (Wattstunden)
temp= Aktuelle Temperatur in °C (Grad Celsius) *10 (letze Stelle ist Nachkomma)

Somit ergibt sich folgende Datenlage:

epoch		volt	power	energy	temp 	
1681607881 	238106 	78530 	786801 	185
1681607941 	238382 	78740 	786804 	185

In der Tabelle hickup werden die Aussetzer im Datenstrom (fehlende Werte) dokumentiert:

+---------------+---------+------+-----+---------+-------+
| Field         | Type    | Null | Key | Default | Extra |
+---------------+---------+------+-----+---------+-------+
| epoch         | int(11) | NO   | PRI | NULL    |       |
| hickupseconds | int(11) | NO   |     | NULL    |       |
+---------------+---------+------+-----+---------+-------+

epoch= Unix Timestamp
hickupseconds= Hickup in seconds

Somit ergibt sich folgende Datenlage:

epoch           hickupseconds
1681964758      8
1681977164      3
1681994377      1681994377
1681996001      1681996001

Wenn der „hickup“ gleich dem Timestamp ist, handelt es sich um einen Restart des Service.

Die Energieanzeige läuft seit 176 Tagen oder weniger (TODO: nochmals berechnen mit Tageswerten)

Initialisierung IPswitch-S0-mini

Das Gerät ist nicht für komplexe Netzwerke geeignet. Statt ARP und Routing muss die Ziel-MAC fest einprogrammiert werden. Die weiteren Kommandos stellen auf 100 Impulse/kWh um und aktivieren das stündliche Speichern des Zählerstands.

IPswitches-set.exe 172.16.16.100 time
IPswitches-set.exe 172.16.16.100 write ee_ipoE2 172.16.16.254
IPswitches-set.exe 172.16.16.100 write ee_macoE2 2c:f7:f1:1b:eb:97
IPswitches-set.exe 172.16.16.100 write ee_oEd 00001000
IPswitches-set.exe 172.16.16.100 write ee_imp1 64
IPswitches-set.exe 172.16.16.100 write ee_imp2 64
IPswitches-set.exe 172.16.16.100 write ee_imp3 64
IPswitches-set.exe 172.16.16.100 write ee_security 11011000

Das Tool macht für jedes Kommando mehrere HTTP-Zugriffe, insgesamt:

GET 172.16.16.100/logout HTTP/1.1
GET 172.16.16.100/?Password= HTTP/1.1
GET 172.16.16.100/?SetTime=5-23:50:46 HTTP/1.1
GET 172.16.16.100/?SetDate=23.04.15 HTTP/1.1
GET 172.16.16.100/?w=00DAAC1010FE HTTP/1.1
GET 172.16.16.100/?w=00E42cf7f11beb97 HTTP/1.1
GET 172.16.16.100/?w=00EA08 HTTP/1.1
GET 172.16.16.100/?w=01006400 HTTP/1.1
GET 172.16.16.100/?w=01026400 HTTP/1.1
GET 172.16.16.100/?w=01046400 HTTP/1.1
GET 172.16.16.100/?w=0090D8 HTTP/1.1

„logout“ und „Password“ werden immer wiederholt aber vermutlich reicht einmal wie im Web-Interface. Die Schreibadressen sind auch in „IPswitches-set.pdf“ aus den Tools „dokumentiert“ und werden jeweils zurückgelesen, zum Beispiel:

GET 172.16.16.100/?r=0090 HTTP/1.1
GET 172.16.16.100/read.html HTTP/1.1

Die weiteren Tools verhalten sich noch problematischer und verschicken Ethernet-Frames mit magischen IP- und MAC-Adressen. Das scheitert aber z.B. am Routing von Wireguard. Außerdem erwarten sie im selben Subnet zu sein und suchen offenbar nach der Geräte-IP im Antwort-HTML. So funktionierte SSH-Forward letztlich nur, wenn der Virtualbox-Host die Geräte-IP hatte:

ip a a 172.16.16.100/24 dev vboxnet0
ssh -L 172.16.16.100:80:172.16.16.100:80

Dazu wird dann noch die sonst generierte IPswitches-ini.txt gebraucht:

IP: 172.16.16.100 - MAC: 00:E0:67:C0:08:35,

Das Setup ist „Work in Progress“

Initialer Zählerstand am 01.04.2023 um 00:10 Uhr
IPswitch: 0025435000 (Wh), Stromzählerähler: 00025435 (kWh)

Am 04.04.2023 wurde der Zähler Foyer ebenfalls angeschlossen.
Die Impulsrate ist leider nicht 1000, sondern 100 pro kWh.
Zähler Foyer ist: 33097(42) letzte 2 Stellen sind die Zählimpulse.
Zähler Flur C2 ist: 25446(42)

Am 16.04.2023 um 00:08 Uhr wurden die Zählerstände neu gesetzt.
Vorne: 33142
Hinten: 25505

Aktuelle Differenzrechnung:

Vorne:  (33142-33097)/(16-4) = 3.750 kWh/Tag
Hinten: (25505-25446)/(16-4) = 4.916 kWh/Tag

Impressionen in Photos…

infrastruktur/u300/stromzaehlung.txt · Zuletzt geändert: 2023-04-20 17:54 von kr4bat