[vz-dev] [vz-users] Betriebsstundenzähler über Schaltzustand Brennner

Justin Otherguy justin at justinotherguy.org
Sun Mar 10 22:58:17 CET 2013


Hi Carsten,

den Faden greif ich mal auf - das ist ne Baustelle, an der seit ner Weile nix passiert ist. Das Ganze ist daher noch in einem sehr frühen Stadium.

Am 09.03.2013 um 15:08 schrieb Carsten Schmidt:

> ich würde gerne den Brenner meiner Ölheizung auslesen.
> 
> Ich denke da an ein Relais, über das ich dann einen
> 
> Digital-Eingang am AVR-NET-IO schalte.
> 
> Schaltzusand 1 = Brenner an
> 
> Schaltzusand 0 = Brenner aus
> 
> - Kann ich dann in der Middleware die Betriebsstunden direkt ablesen?
> 
>   (Wie muss ich dann das Relais definieren? z.B. als Ventil?)
> 
> - Ich weiß wieviel Öl der Brenner Pro Minute durchjagt xy L/min
> 
>   Könnte dann ja gleich mit dem Brennwert multipliziert werden.

Hier der aktuelle Stand (aus meiner Sicht):
- Ziel: 
  - protokollieren der Laufzeit eines Geräts (z. B. Förderpumpe)
  - visualisieren via Frontend (Vergleich Nacht/Tag; Sommer/Winter, ...)
  - Möglichkeit zur numerischen Auswertung (Verbrauch, daraus ggf. Tankrestmenge)
  - ggf. Vergleich mit einem Schwellwert -> Alarmierung (der Teil lässt sich dann mit vzmonitor [1] machen *) )
- 1. Ansatz:
  - Schaltzeitpunkte (ein/aus) protokollieren
  - Differenz ergibt die Laufzeit
  - Probleme:
    - wie ordne ich bei der Auswertung die Schaltzeitpunkte einander zu? (lösbar, aber etwas lästig: ich nehm einen "aus"-Zeitpunkt und subtrahiere den letzten "ein"-Zeitstempel)
    - was, wenn ein Schaltzustand verloren geht? Dann wird die Berechnung ungenau, weil wir keine Aussage über den Zeitpunkt des fehlenden Schaltvorgangs machen können
- 2. Ansatz (getreu dem "if your only tool is a hammer, every problem looks like a nail):
  - können wir einen Impuls-Generator mit S0-Ausgang bauen?
  - einen mit 50 Hz gibt es in jedem Laden: Steckernetzteil (ohne Gleichrichter)
  -> allerdings sind 50 Impulse/Sekunde in der DB nicht das, was man haben will
- 3. Ansatz:
  - s.o - allerdings wird dabei die Frequenz in HW durch 50 geteilt (Zähler; aufgebaut mit 2 Zählerbausteinen - vielen Dank an Udo!) - voila: Udos Betriebsstundenzähler [2] 
  auch hier: 1 DB-Eintrag/Sekunde ist noch nicht das Optimum

Wenn man von hier aus weiter denkt, zeigt sich: wenn man den Takt einfach weiter teilt, wird auch der Fehler im gleichen Maß zunehmen (es geht ja in jeder Einschaltphase im Mittel ein halbes Intervall verloren...). Wenn wir hingegen die Teilung in Software vornehmen, können wir die Impulse zählen und den Zählerstand dann in das nächste Einschaltintervall übernehmen.

Noch dabei? Prima!

Um die Teilung also in Software vorzunehmen, gibt's zwei naheliegende Ansätze: mit ethersex oder Linux; mir liegt das ja mit Linux noch etwas näher (RPi...). 
Nächste Frage: wie loggen wir die Messwerte?
- wir könnten einen Impuls pro Betriebsstunde (oder -minute oder x Betriebsminuten) loggen; das wäre ja dann relativ genau zu machen, wenn wir intern immer schön die Sekunden zählen
- wir könnte aber auch über einen bestimmten Zeitraum (mir erscheinen 5 Minuten sinnvoll) die "Betriebssekunden" zählen und den Wert dann loggen - ähnlich wie das unsere EDLs ja zB auch tun. Den Interpreter "workinghours" haben wir schon; weiss aber nicht, was sich dahinter schon verbirgt.

Bleibt die Frage, welche Einheit wir hier wählen sollten:
- Prozent?
- h (Laufzeit)/h
- sonstige?
Auch dafür werden wir eine gute Lösung finden.

Ich habe die vz-dev-Liste in Kopie gesetzt, da ich die für solch konzeptionelle Fragen für die richtige Liste halte. Ich schlage vor, dass wir die Diskussion dort fortsetzen. Wer die Liste (noch) nicht abonniert hat, sollte das entsprechend nachholen.

Ich freu mich auf Kommentare und Ergänzungen.


Gruss, J.

*) z.B. so:
- für den Kanal werden die Eigenschaften "Füllmenge" sowie "letzter Tankzeitpunkt" angelegt
- vzmonitor erweitern wir so, dass - sofern dieser Modus genutzt wird - zuerst diese beiden Werte via Middleware aus der DB ausgelesen werden
- anschliessend lesen wir die verbrauchte Menge seit diesem Zeitpunkt aus und ziehen den Verbrauch von der Füllmenge ab
- ist das Resultat geringer als ein Schwellwert (den könnte man der Einfachheit halber in vzmonitor ablegen - schöner wär's, wenn auch der pro Kanal in der DB liegt), wird eine Meldung ausgegeben

[1] https://github.com/volkszaehler/volkszaehler.org/blob/master/misc/tools/vzmonitor
[2] http://wiki.volkszaehler.org/hardware/channels/meters/working_hours



More information about the volkszaehler-dev mailing list