====== Stromzaehlung u300 Foyer und Eingang C2 ====== {{tag> infrastructure strom zaehler verbrauch kWh}} ======= 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: {{ :infrastruktur:u300:stromzaehlung:ipswitch-s0-mini-anleitung.pdf |}}\\ Tools: [[https://sms-guard.org/downloads/IPswitches-update.zip|IPswitches-update.zip]] [[https://web.archive.org/web/*/https://sms-guard.org/downloads/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:///cnt.html\\ CSV: http:///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:img_20230331_080020r.jpg?50|}} {{:infrastruktur:u300:stromzaehlung:img_20230401_211734r.jpg?50|}} {{:infrastruktur:u300:stromzaehlung:img_20230331_080033r.jpg?50|}} {{:infrastruktur:u300:stromzaehlung:img_20230401_221545r.jpg?50|}} {{:infrastruktur:u300:stromzaehlung:img_20230401_232144r.jpg?50|}} {{:infrastruktur:u300:stromzaehlung:img_20230401_232211r.jpg?50|}} {{:infrastruktur:u300:stromzaehlung:img_20230401_235453r.jpg?50|}} {{:infrastruktur:u300:stromzaehlung:img_20230401_235505r.jpg?50|}} {{:infrastruktur:u300:stromzaehlung:img_20230401_235514r.jpg?50|}} {{:infrastruktur:u300:stromzaehlung:img_20230402_000425r.jpg?50|}} {{:infrastruktur:u300:stromzaehlung:img_20230402_000449r.jpg?50|}} {{:infrastruktur:u300:stromzaehlung:img_20230402_000453r.jpg?50|}} {{:infrastruktur:u300:stromzaehlung:img_20230402_000503r.jpg?50|}} {{:infrastruktur:u300:stromzaehlung:img_20230402_001856r.jpg?50|}}