<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">Hi Justin,<div class=""><br class=""><div class=""><div><blockquote type="cite" class=""><div class=""><br class=""><blockquote type="cite" class="">Am 13.01.2015 um 19:24 schrieb Matthias Behr <<a href="mailto:mbehr@mcbehr.de" class="">mbehr@mcbehr.de</a>>:<br class=""><br class=""><blockquote type="cite" class="">Features, die Du gerne sehen würdest?<br class=""></blockquote><br class="">Monitor-Daemon, der geloggte Werte „beobachtet“ und bei Abweichungen Mitteilungen/Warnungen verschicken kann (z.B. hoher Wasserverbrauch in der Nacht, langer, hoher Stromverbrauch,…<br class=""></blockquote><br class="">kennst Du vzmonitor [0]? Das verwende ich, um festzustellen<br class="">- wenn ein Kanal nicht mehr loggt<br class="">- wenn Werte eines Kanals ober- oder unterhalb der festgelegten Schwellenwerte liegen<br class=""><br class="">Das ist ein ganz rudimentäres Tool - m.E. aber eine gute Basis für komplexere Analysen („aktuelles Minutenmittel liegt um 1000% über dem aktuellen Tagesmittel“ o.ä.).<br class=""></div></blockquote><br class=""><div>Ja, kenne ich. War mir ein wenig zu rudimentär. Ich möchte das relativ oft (im Sekundentakt) laufen lassen und da später z.B. auch ein disaggregate (also welche Stromverbraucher laufen,…) integrieren. Habe daher vor 3 Tagen mal selber angefangen: siehe hier <a href="https://github.com/mbehr1/vzmonitor" class="">vzmonitor</a> [1]</div><div>Bisher implementiert:</div><div>per conf Daten definierbare Bedingungen mit den Funktionen: MINVALUE (min. channel value über einen best. Zeitraum), LASTTIME (letzte Zeit, wann der Channel Daten geschickt hat), ‚+‘ (Addition), AND/OR/NOT/GT/LTE/EQ als logische Operatoren.</div><div>Ausstehend ist „AVGVALUE“, das analog vzlogger bei nicht äquidistanten Timestamps und korrekter Betrachtung von Grenzfällen wie kein Wert im Zeitraum, nur 1 Wert im Zeitraum, aber welche vorher,... nicht ganz trivial ist.</div><div>Tool fragt nicht das Frontend ab, sondern kann direkt als „volkszaehler middleware Empfänger“ bei den Channels in vzlogger eingetragen werden (einfach als zusätzliche Channels).</div><div><br class=""></div><div>Die Lösung soll bei mir zusammen mit dem „MeterOCR“ automatisch erkennen, ob irgendwo ein Wasserhahn oder Warmwasser-Boiler offen/undicht ist (, was in meinem  priv. Umfeld grad jemandem passiert ist und sehr unschön ist, wenn es zu spät bemerkt wird). Regel für Erkennung hierzu lautet z.B.:</div><div><table class="js-file-line-container highlight tab-size-8" style="box-sizing: border-box; border-collapse: collapse; border-spacing: 0px; tab-size: 8; color: rgb(51, 51, 51); font-family: Helvetica, arial, freesans, clean, sans-serif, 'Segoe UI Emoji', 'Segoe UI Symbol'; font-size: 13px; line-height: 18px;"><tbody style="box-sizing: border-box;" class=""><tr style="box-sizing: border-box;" class=""><td id="LC29" class="js-file-line blob-code" style="box-sizing: border-box; padding: 0px 10px; position: relative; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; font-size: 12px; vertical-align: top; white-space: pre; overflow: visible;">{ <span class="pl-s1" style="box-sizing: border-box; color: rgb(223, 80, 0);"><span class="pl-pds" style="box-sizing: border-box;">"</span>name<span class="pl-pds" style="box-sizing: border-box;">"</span></span>: <span class="pl-s1" style="box-sizing: border-box; color: rgb(223, 80, 0);"><span class="pl-pds" style="box-sizing: border-box;">"</span>water draining?<span class="pl-pds" style="box-sizing: border-box;">"</span></span>,</td></tr><tr style="box-sizing: border-box;" class=""><td id="L30" class="blob-num js-line-number" data-line-number="30" style="box-sizing: border-box; padding: 0px 10px; width: 50px; min-width: 50px; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; font-size: 12px; color: rgba(0, 0, 0, 0.298039); vertical-align: top; text-align: right; border-style: solid; border-color: rgb(238, 238, 238); border-width: 0px 1px 0px 0px; cursor: pointer; -webkit-user-select: none;"></td><td id="LC30" class="js-file-line blob-code" style="box-sizing: border-box; padding: 0px 10px; position: relative; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; font-size: 12px; vertical-align: top; white-space: pre; overflow: visible;"><span class="pl-s1" style="box-sizing: border-box; color: rgb(223, 80, 0);"><span class="pl-pds" style="box-sizing: border-box;">"</span>condition<span class="pl-pds" style="box-sizing: border-box;">"</span></span>: {<span class="pl-s1" style="box-sizing: border-box; color: rgb(223, 80, 0);"><span class="pl-pds" style="box-sizing: border-box;">"</span>GT<span class="pl-pds" style="box-sizing: border-box;">"</span></span>:[{<span class="pl-s1" style="box-sizing: border-box; color: rgb(223, 80, 0);"><span class="pl-pds" style="box-sizing: border-box;">"</span>MINVALUE<span class="pl-pds" style="box-sizing: border-box;">"</span></span>:[<span class="pl-s1" style="box-sizing: border-box; color: rgb(223, 80, 0);"><span class="pl-pds" style="box-sizing: border-box;">"</span>water<span class="pl-pds" style="box-sizing: border-box;">"</span></span>, 900]},0]},</td></tr><tr style="box-sizing: border-box;" class=""><td id="L31" class="blob-num js-line-number" data-line-number="31" style="box-sizing: border-box; padding: 0px 10px; width: 50px; min-width: 50px; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; font-size: 12px; color: rgba(0, 0, 0, 0.298039); vertical-align: top; text-align: right; border-style: solid; border-color: rgb(238, 238, 238); border-width: 0px 1px 0px 0px; cursor: pointer; -webkit-user-select: none;"></td><td id="LC31" class="js-file-line blob-code" style="box-sizing: border-box; padding: 0px 10px; position: relative; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; font-size: 12px; vertical-align: top; white-space: pre; overflow: visible;"> <span class="pl-s1" style="box-sizing: border-box; color: rgb(223, 80, 0);"><span class="pl-pds" style="box-sizing: border-box;">"</span>action<span class="pl-pds" style="box-sizing: border-box;">"</span></span>: <span class="pl-s1" style="box-sizing: border-box; color: rgb(223, 80, 0);"><span class="pl-pds" style="box-sizing: border-box;">"</span>check water is draining for more than 15mins!"</span></td></tr><tr style="box-sizing: border-box;" class=""><td id="L32" class="blob-num js-line-number" data-line-number="32" style="box-sizing: border-box; padding: 0px 10px; width: 50px; min-width: 50px; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; font-size: 12px; color: rgba(0, 0, 0, 0.298039); vertical-align: top; text-align: right; border-style: solid; border-color: rgb(238, 238, 238); border-width: 0px 1px 0px 0px; cursor: pointer; -webkit-user-select: none;"></td><td id="LC32" class="js-file-line blob-code" style="box-sizing: border-box; padding: 0px 10px; position: relative; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; font-size: 12px; vertical-align: top; white-space: pre; overflow: visible;">},</td></tr></tbody></table><div class="">(zu lesen als: innerhalb der letzten 15min (900s) war der Wasserverbrauch nicht einmal auf 0) (und ja, könnte im Sommer beim Rasensprengen mal Fehlmeldungen generieren, aber lieber einmal zu oft gemeldet, als einmal zu spät)</div></div><div><br class=""></div><div>Als nächstes plane ich z.B. automatisches Twittern der „Regelverletzung“ oder z.B. Push-Notifications aufs iPhone per Prowl. (Bin da für Ideen/Anregungen offen.)</div><div><br class=""></div><br class=""><blockquote type="cite" class=""><div class=""><br class="">[0] <a href="https://github.com/volkszaehler/volkszaehler.org/blob/master/misc/tools/vzmonitor" class="">https://github.com/volkszaehler/volkszaehler.org/blob/master/misc/tools/vzmonitor</a><br class=""><br class=""></div></blockquote>[1] <a href="https://github.com/mbehr1/vzmonitor.git" class="">https://github.com/mbehr1/vzmonitor.git</a> </div><br class=""><div apple-content-edited="true" class="">
<span class="Apple-style-span" style="border-collapse: separate; border-spacing: 0px;"><div class="">Gruß</div><div class="">Matthias</div></span>
</div>
<br class=""></div></div></body></html>