Volkszähler und S0 über W&T Web-IO 2x Digital Input
Ich bin entzückt. Aus alten Bastelzeiten hatte ich noch 2 alte Web-IO von Wiesemann & Theis rumliegen. Erste Hürde war, ohne Windows Betriebssystem einen Firmware-Update hinzubekommen.
Ich wollte die S0 Zählersignale von Strom Zwischenzählern an die Eingänge legen, damit einen Alarm verknüpfen und über TCP-Kommandos direkt an die Middleware des Volkszählers weiterleiten.
Dank geduldiger Hilfe des Produktmanagers von Wiesemann und Theis ist mir das nach ungezählten Stunden gelungen. Meine Fehler habe ich hier aufgeschrieben.
Am Web-IO liegt auf Vdd eine Spannung von 24V an. Diese wird an den Zwischenzähler zum S0+ geführt. Vom S0- kommt der Impuls, den legen wir auf Input0 oder Input1
Am Wiesemann & Theis Web-IO digital müssen die Inputs und die Alarme konfiguriert werden. Der Alarm gibt dann eine TCP-Meldung an den Raspberry weiter. Dort fängt die middleware.php des Volkszählers diese Meldung ab und verarbeitet diese in einem S0-Zähler Kanal.
Zuerst konfiguriert ihr das Netzwerk für den Web-IO. Bei mir hängt es nach einer OPNSense Firewall, die die Leases per DHCP vergibt.
Dann stellt ihr am Web-IO noch den Output-Mode auf HTTP ein. Ich habe die internen 24V aktiviert:
Die Inputs werden ganz einfach konfiguriert. Die Eltako Zwischenzähler senden S0-Signale die nicht zeitkritisch sind. Es sind somit keine besonderen Aktionen anzuwählen:
Die Alarme reagieren auf Input0 oder Input1 als Trigger. Sonst keine Einstellungen. Unten wähle ich als Output TCP-Client:
Tricky ist die Kommunikation vom Wiesemann & Theis Web-IO mit der Volkszähler middleware.php.
Dazu braucht ihr auf jeden Fall die IP des Raspberry auf dem der Volkszähler läuft. Dort müsst ihr schon einen Kanal vorbereitet haben und dessen UUID kennen. Diese wird in die TCP-Meldung mit eingegeben:
Lange hat es nicht geklappt, dass die Alarmmeldungen am Raspberry TCP-Server angekommen sind. Da war ja der kleine Fehler mit dem 12V Netzteil. Das Web-IO digital möche gerne 24V-48V haben. Das habe ich korrigiert, es lief zuverlässiger, aber die Meldungen kamen immer noch nicht an.
Eine Handbuch-Recherche hat dann einen wichtigen Hinweis gegeben:
Fällt eine Alarmbedingung zurück in den Normalzustand, bevor das Web-IO die Alarmmeldung senden konnte, wird nur die Alarmclear-Meldung gesendet
Die S0-Impulsdauer ist so kurz, dass es natürlich nicht reicht, in der Zeit die TCP-Meldung abzusetzen. Erst als ich den Aufbau für die TCP-Meldung dann in das Alarm-Clear-Text Feld eingetragen hat, sind die Meldungen zuverlässig am Raspberry angekommen !
Am Schluss stellt ihr den Kanal noch richtig ein. Dazu müsst ihr wissen, wieviele Impulse pro kW euer Zwischenzähler schickt. Dies tragt ihr in die Auflösung mit ein (ohne Einheit).
Soweit so gut. Da ich zuerst im Labor die Funktionalität geprüft habe, hatte ich den Web-IO per PoE mit Strom versorgt und über die Outputs eine Selbstbefriedigungs-Situation erstellt.
Die Outputs waren mit den Inputs verdrahtet. Über ein Skript habe ich random-mässig die Outputs ein/ausgschaltet und so die Zähler simuliert.
Nachdem alles ging habe ich mit dem Elektriker einen Termin vereinbart und die Signale vom echten Zähler geholt. Dabei habe ich dann ein 12V-Netzteil an das Web-IO angeschlossen. Die Spezifikation sagt aber: 24V (vierundzwanzig).Das Web-IO ist auch mit den 12V hochgefahren, allerdings haben die Alarme nur sehr sporadisch reagiert.
Michael hat mich im Kommentar gefragt, wann es mehr Details gibt. Die wollte ich ihm zusammenstellen und dabei bin ich nochmal alles durchgegangen. So habe ich jetzt gerade den Fauxpas festgestellt.
Inzwischen habe ich ein 48V-Netzteil drangehängt und alles läuft wie geschmiert. Ich hatte mich schon gewundert, warum das Web-IO die Index-Seite nicht immer vollständig aufbaut….
Hier die Darstellung im Volkszähler.org:
Jetzt läuft die Erfassung der Verbräuche mit den beiden Zwischenzählern. Die nächsten Wochen werde ich das beobachten. Das Objekt des Monitorings ist ja eine Ferienwohnung, ein Studio, das wir über Airbnb vermarkten.
Nachhaltigkeit liegt mir am Herzen, vielleicht hänge ich noch einen Monitor rein, an dem der Gast seinen Verbrauch live sehen kann. Nur wer informiert ist, kann auch gegensteuern. Wenn ich 1*/Jahr oder 1*/Monat eine Abrechnung bekomme, kann ich den Einspareffekt einzelner Maßnahmen ja kaum sehen. Mit diesem Monitoring kann der Gast erkennen, wie unterschiedlich die Kosten für eine Kanne Tee vom Herd oder aus dem Wasserkocher sind.
Untenstehend, nochmal erklärt, worum es mir geht.
Das ist der Stromverbrauch des ganzen Gebäudes. Ab 16:00 Uhr wurde ein Elektroauto geladen und gegen 19:00 Uhr wurde zusätzlich noch gekocht. Diese ungünstige Kombination verbraucht erstmal über 6kW in den Spitzen und kostet natürlich auch Geld.
Rechts unten ist zu sehen, dass die Tageskosten bei fast 11,- Euro liegen. Man kann aber auch sehen, dass der Standby-Verbrauch nachts bei 173 Watt lag. Insgesamt wurden 39kWh verbraucht. Das ist viel. Würde jeder Tag so laufen, wären das >4.000,- Euro Energiekosten / Jahr.
Hinterlasst einen Kommentar, falls ihr mehr Details braucht. Ich habe mich Monate damit beschäftigt und kann euch gerne helfen.
Hallo Michael,
hier der Update des Blogs. Es funktioniert inzwischen hervorragend. Ich hoffe du kommst mit der Beschreibung zurecht.
geht das über die Aktion HTTP(S)-Request ? wenn mann das nach festen Zählerwerten verschickt ? Gibt es die Möglichkeit den Timestamp mitzuschicken ? Bringt das was im Volkszähler ?
Michael,
ich bin an den Alarmen verzweifelt. Als ich die Infos für dich zusammengesucht habe, habe ich dann entdeckt, dass ich das WebI/O nur mit 12V statt mit 24V versorgt habe. Es hat prinzipiell funktioniert. Im Laborversuch habe ich es mit PoE versorgt, da ging alles.
Ich werde mal sehen, ob ich dann mehr Erfolg habe mit 24v.
Auf jeden Fall verbindest du Vdd+ mit dem S0+ und den S0- bringst du auf Input0 oder Input1. Dort kommen die Impulse an.
Die Inputs lösen (sollen) Alarme aus. Auf der Input Seite ist nichts angehakt, Pulse polarity ist positve.
Alarme musst du so konfigurieren: Input Trigger Input0 ON und TCP-Client enable.
Im TCP-Client gibst du die IP und den Port des Volkszählers an. Port ist bei mir 80.
Im TCP Text-Feld gibst du ein:
GET /middleware.php/data/xxxxxUUIDxxxxx.json?operation=add&value=1 HTTP/1.1
Host: 192.168.200.207
Host ist die IP deines Volkszählers und nach data/ gibst du die UUID des Channels an, an dem die Daten ankommen sollen.
Im Kanal wählst du „El. Energie (S0-Impulse)“ und gibst die Auflösung an. Zum Beispiel 100/kWh
Zeitstempel brauchst du nicht, du schickst das ja direkt an die middleware und die berechnet die Zeit zwischen den Impulsen selber.
Es gibt keine Zählerwerte, nur den Zeitunterschied zwischen den Impulsen. Das reicht dem Volkszähler um den Verbrauch zu errechnen.
Soweit erstmal die schnelle Info.
Wenn alles läuft mach ich die Doku mit den Bildern.
gibt es hierfür nähere Infos ? Wäre super ich habe auch so eine Box
Ich schreibe die nächsten Tage was dazu. Im Labor hat alles geklappt, real life ist anders.
Ich bekomme die Signale am Input richtig, auch gezählt.
Allerdings reagiert der Alarm nicht zuverlässig und somit scheitert die Weitergabe per TCP an den Volkszähler.
Du kannst aber sehen, wie die I/O Box angeschlossen werden muss.