<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type content="text/html; charset=utf-8"><meta name=Generator content="Microsoft Word 14 (filtered medium)"><style><!--
/* Font Definitions */
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:Tahoma;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";
        color:black;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
code
        {mso-style-priority:99;
        font-family:"Courier New";}
p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph
        {mso-style-priority:34;
        margin-top:0cm;
        margin-right:0cm;
        margin-bottom:0cm;
        margin-left:36.0pt;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";
        color:black;}
span.cm-keyword
        {mso-style-name:cm-keyword;}
span.cm-variable-2
        {mso-style-name:cm-variable-2;}
span.cm-number
        {mso-style-name:cm-number;}
span.cm-builtin
        {mso-style-name:cm-builtin;}
span.E-MailFormatvorlage22
        {mso-style-type:personal-reply;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:70.85pt 70.85pt 2.0cm 70.85pt;}
div.WordSection1
        {page:WordSection1;}
/* List Definitions */
@list l0
        {mso-list-id:288586828;
        mso-list-type:hybrid;
        mso-list-template-ids:-169846318 67567631 67567641 67567643 67567631 67567641 67567643 67567631 67567641 67567643;}
@list l0:level1
        {mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;}
@list l0:level2
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;}
@list l0:level3
        {mso-level-number-format:roman-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:right;
        text-indent:-9.0pt;}
@list l0:level4
        {mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;}
@list l0:level5
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;}
@list l0:level6
        {mso-level-number-format:roman-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:right;
        text-indent:-9.0pt;}
@list l0:level7
        {mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;}
@list l0:level8
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;}
@list l0:level9
        {mso-level-number-format:roman-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:right;
        text-indent:-9.0pt;}
@list l1
        {mso-list-id:1396976273;
        mso-list-type:hybrid;
        mso-list-template-ids:-1172164582 67567631 67567641 67567643 67567631 67567641 67567643 67567631 67567641 67567643;}
@list l1:level1
        {mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;}
@list l1:level2
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;}
@list l1:level3
        {mso-level-number-format:roman-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:right;
        text-indent:-9.0pt;}
@list l1:level4
        {mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;}
@list l1:level5
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;}
@list l1:level6
        {mso-level-number-format:roman-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:right;
        text-indent:-9.0pt;}
@list l1:level7
        {mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;}
@list l1:level8
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;}
@list l1:level9
        {mso-level-number-format:roman-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:right;
        text-indent:-9.0pt;}
ol
        {margin-bottom:0cm;}
ul
        {margin-bottom:0cm;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]--></head><body bgcolor=white lang=DE link=blue vlink=purple><div class=WordSection1><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>Moin Rupert,<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>vielen Dank auch für deinen Input.<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>Aktuell bin ich noch in der „wie-könnte-man-sowas-anstellen“-Phase.<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>Da ich ja vorhin festgestellt habe, das bei mir keine Aggregation läuft…..is das wohl die erste Baustelle. Vielleicht (oder wahrscheinlich) sieht die Welt danach völlig anders aus, mal abwarten und sehen.<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>Ich sehe zwei Szenarien:<o:p></o:p></span></p><p class=MsoListParagraph style='text-indent:-18.0pt;mso-list:l1 level1 lfo1'><![if !supportLists]><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><span style='mso-list:Ignore'>1.<span style='font:7.0pt "Times New Roman"'>       </span></span></span><![endif]><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>Entweder dumme S0 Impulse, so wie bei meiner Wasseruhr<o:p></o:p></span></p><p class=MsoListParagraph style='text-indent:-18.0pt;mso-list:l1 level1 lfo1'><![if !supportLists]><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><span style='mso-list:Ignore'>2.<span style='font:7.0pt "Times New Roman"'>       </span></span></span><![endif]><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>Oder eben Zählerstände.<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>Irgendwie gefallen mir die Zählerstände bis jetzt besser, auch wenn diese aufwendiger zu realisieren sind.<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>Bei den Zählerständen sehe ich wieder zwei Varianten:<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>2.a) Die Zählerstände werden nur in der Datenbank gespeichert. Dann muss ich den letzten Wert aus der Datenbank lesen, den aktuellen Wert dazu addieren und den neuen Wert wieder in die Datenbank schreiben.<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>2.b) Oder die Zählerstände selber zwischenspeichern und diese dann nur an die Middleware/Datenbank senden.<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>Hätte ich jetzt Zeit, hätte ich ne Menge auszuprobieren, aber leider hab ich da keine Zeit für. Deswegen erstmal als Trockenschwimmkurs alles durchdenken.<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>Beim Betriebsstundenzähler denke ich funktioniert das.<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>Bei Schaltspielzähler weiß ich noch nicht wie ich das anstelle, bzw. hab ich da noch keine Idee wie man das im Frontend darstellt<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal>2. Der aufgeweckte ESP sendet jede Sekunde (oder wie genau Du es halt willst) ein "Piep" an den Server, der fragt dann aus der DB den letzten Stand des Betriebsstundenzählers ab, den Du ebenfalls mit Typ AccumulatorInterpreter angelegt hast, und addiert eins (oder was immer die Zeit zwischen zwei Pieps ist) drauf. Diesen neuen Zählerstand schickst Du an die MW. Schläft der ESP ein, bleibt der Zähler mangels "Piep" stehen.<span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>Das würde doch aber bedeuten, das pro Schaltspiel und „Piep“ im Sekundentakt eben auch im Sekundentakt Datensätze in die Datenbank geschrieben werden, oder nicht?<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>Ich merke schon, das ist gar nicht mal so einfach wie ich mir das vorgestellt habe.<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>Was will ich eigentlich, bzw. was ist sinnvoll?!<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>Ein Licht geht an und nach ein paar Minuten wieder aus.<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>Was interessiert mich daran, und was soll dargestellt werden:<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p> </o:p></span></p><p class=MsoListParagraph style='text-indent:-18.0pt;mso-list:l0 level1 lfo2'><![if !supportLists]><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><span style='mso-list:Ignore'>1.<span style='font:7.0pt "Times New Roman"'>       </span></span></span><![endif]><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>Wann ging das Licht an<o:p></o:p></span></p><p class=MsoListParagraph style='text-indent:-18.0pt;mso-list:l0 level1 lfo2'><![if !supportLists]><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><span style='mso-list:Ignore'>2.<span style='font:7.0pt "Times New Roman"'>       </span></span></span><![endif]><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>Wann ging das Licht wieder aus<o:p></o:p></span></p><p class=MsoListParagraph style='text-indent:-18.0pt;mso-list:l0 level1 lfo2'><![if !supportLists]><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><span style='mso-list:Ignore'>3.<span style='font:7.0pt "Times New Roman"'>       </span></span></span><![endif]><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>Das wievielte Schaltspiel ist dies<o:p></o:p></span></p><p class=MsoListParagraph style='text-indent:-18.0pt;mso-list:l0 level1 lfo2'><![if !supportLists]><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><span style='mso-list:Ignore'>4.<span style='font:7.0pt "Times New Roman"'>       </span></span></span><![endif]><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>Wie viele Betriebsstunden (Betriebssekunden) hat die Lampe bereits gelaufen<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>Zu 1. und 2. stell ich mir die Darstellung wie ein Rechtecksignal vor.<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>Bei 1. steigt die Flanke bei einem timestamp von 0 auf 1.<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>Bei 2. fällt die Flanke bei einem timestamp von 1 auf 0.<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>Bei 3. wird bei der steigenden Flanke von 1. ein Schaltspiel hinzuaddiert.<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>Bei 4. …….öhm…….wie könnte das aussehen? Wenn man hier bei 1. die Betriebsstundenuhr weiterlaufen lässt und erst wieder bei 2. anhält, dann würden ja im Sekundentakt Datensätze in die Datenbank geschrieben werden. Das halte ich ja für falsch, weil es unnötige Datensätze erzeugt. Ich denke eine bessere Idee wäre bei 1. die Zählerstand der Uhr zu senden, und bei 2. noch einmal. Dazwischen nimmt der Betriebsstundenzähler ja einfach nur linear zu.<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>Somit muss man nur 1x bei Schaltspielbeginn und 1x bei Schaltspielende Daten an die Middleware schicken.<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>Das hört sich für mich nach dem richtigen Plan an.<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>Oder kann man sich 1., 2. und 3. sogar sparen und diese Information aus 4. ableiten?<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>Liebe Grüße,<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>Chris<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p> </o:p></span></p><div><div style='border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm 0cm 0cm'><p class=MsoNormal><b><span style='font-size:10.0pt;font-family:"Tahoma","sans-serif";color:windowtext'>Von:</span></b><span style='font-size:10.0pt;font-family:"Tahoma","sans-serif";color:windowtext'> Rupert Schöttler [mailto:rupert.schoettler@gmx.de] <br><b>Gesendet:</b> Donnerstag, 3. Mai 2018 20:17<br><b>An:</b> volkszaehler-users@demo.volkszaehler.org<br><b>Betreff:</b> Re: [vz-users] Schaltspiel- und Betriebsstundenzähler - Konzept gesucht<o:p></o:p></span></p></div></div><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Hallo Christian,<br><br>Dein hartnäckiges Insistieren, ohne Impulse auszukommen, und Deine Zusatzinfos aus der 2. Nachricht haben mich noch mal überlegen lassen, wie es vielleicht doch gehen könnte, <b>ohne das Standard-VZ-Konzept zu verbiegen</b>: M.E. musst Du außerhalb des VZ Zählerstände selbst bilden.<br><br>Nach wie vor bin ich zwar der Überzeugung, Impulse wären richtig, und die Performance sollte akzeptabel sein -- mit den Hinweisen von Frank. Der Request<br><a href="http://server/middleware.php/data/5f___c5.json?from=01-01-2010&to=now&tuples=1">http://server/middleware.php/data/5f___c5.json?from=01-01-2010&to=now&tuples=1</a> antwortet mir in 1,5 sec bei 9 Mio Datensätzen des Stromzählers -- mit Aggregation. Er liefert den Gesamtverbrauch und eine Durchschnittsleistung sowie die Anzahl der Zeilen. Gut, vielleicht rechnet die Middleware in Wahrheit nur die Differenz aus Anfangs- und Endzählerstand und ist deshalb so schnell. Aber dasselbe bei einer S0-Wasseruhr (siehe <a href="https://wiki.volkszaehler.org/hardware/channels/meters/water/wasserzaehler_ohne_s0">https://wiki.volkszaehler.org/hardware/channels/meters/water/wasserzaehler_ohne_s0</a> -- etwas Werbung in eigener Sache ;-) erledigt die MW in 6,6 sec bei 227.000 Datensätzen. Ich habe einen Pi3 mit einer SSD, keiner SD-Karte. Wie oft willst Du die aktuellsten Daten abfragen, dass die Performance so entscheidend ist?<br><br>Aber zurück zu meiner Idee für Deinen Ansatz:<br><br><b>Du musst Zählerstände selbst bilden, außerhalb des Volkszählers. </b>Dir helfen dazu weder die Middleware noch der vzlogger -- zumindest wüsste ich nicht, wie: Denn ich weiß nicht, wie man den letzten <b>Zählerstand</b> aus der MW rausbekommt. Ich habe zwar einen eHZ, der im Sekundentakt seinen Zählerstand in die Datenbank pumpt (daher die 9 Mio Datensätze ;-), der Request middleware.php/data/uuid.json?from=now liefert den aber nicht, nur die aktuelle Momentanleistung. Ein passender SQL-Befehl wäre <br><br><span class=cm-keyword><span style='font-size:10.0pt;font-family:"Courier New"'><a href="http://ras3/phpmyadmin/url.php?url=https://dev.mysql.com/doc/refman/5.5/en/select.html" target="mysql_doc">SELECT</a></span></span><code><span style='font-size:10.0pt'> * </span></code><span class=cm-keyword><span style='font-size:10.0pt;font-family:"Courier New"'>FROM</span></span><code><span style='font-size:10.0pt'> </span></code><span class=cm-variable-2><span style='font-size:10.0pt;font-family:"Courier New"'>`data`</span></span><code><span style='font-size:10.0pt'> </span></code><span class=cm-keyword><span style='font-size:10.0pt;font-family:"Courier New"'>where</span></span><code><span style='font-size:10.0pt'> channel_id=</span></code><span class=cm-number><span style='font-size:10.0pt;font-family:"Courier New"'>1</span></span><code><span style='font-size:10.0pt'> </span></code><span class=cm-keyword><span style='font-size:10.0pt;font-family:"Courier New"'>ORDER</span></span><code><span style='font-size:10.0pt'> </span></code><span class=cm-keyword><span style='font-size:10.0pt;font-family:"Courier New"'>by</span></span><code><span style='font-size:10.0pt'> </span></code><span class=cm-builtin><span style='font-size:10.0pt;font-family:"Courier New"'><a href="http://ras3/phpmyadmin/url.php?url=https://dev.mysql.com/doc/refman/5.5/en/date-and-time-types.html" target="mysql_doc">timestamp</a></span></span><code><span style='font-size:10.0pt'> </span></code><span class=cm-keyword><span style='font-size:10.0pt;font-family:"Courier New"'>desc</span></span><code><span style='font-size:10.0pt'> </span></code><span class=cm-keyword><span style='font-size:10.0pt;font-family:"Courier New"'>limit</span></span><code><span style='font-size:10.0pt'> </span></code><span class=cm-number><span style='font-size:10.0pt;font-family:"Courier New"'>1;</span></span><span style='font-size:10.0pt;font-family:"Courier New"'><br></span><br>Der geht auf der DB in Millisekunden -- dem Index sei Dank. <br><br>Also wenn Dich das nicht schreckt (oder Du eine bessere Lösung hast -- lass es uns wissen!), könnte es so gehen:<br><br>1. Bei jedem Aufwachen sendet der ESP ein "Hallo Welt" an Deinen Server, der fragt dann aus der DB den letzten Stand des Einschaltzählers ab, den Du vom Typ AccumulatorInterpreter angelegt hast (siehe Franks Antworten), und addiert eins drauf. Diesen neuen Zählerstand schickst Du an die MW (oder schreibst ihn direkt in die DB).<br><br>2. Der aufgeweckte ESP sendet jede Sekunde (oder wie genau Du es halt willst) ein "Piep" an den Server, der fragt dann aus der DB den letzten Stand des Betriebsstundenzählers ab, den Du ebenfalls mit Typ AccumulatorInterpreter angelegt hast, und addiert eins (oder was immer die Zeit zwischen zwei Pieps ist) drauf. Diesen neuen Zählerstand schickst Du an die MW. Schläft der ESP ein, bleibt der Zähler mangels "Piep" stehen.<br><br>Wenn Du's ganz genau brauchst oder das Boot-up des ESP signifikant ist, kannst Du zusätzlich bei 1. den Betriebsstundenzähler um die gemessene Verzögerung bis zum ersten "Piep" hochzählen.<br><br>Dies, wie gesagt, meine Idee -- weder ganz noch in Teilen getestet, ein reiner Trockenschwimmkurs. Mit dem Einspeichern der Zählerstände und dem richtigen Kanal-Typ dazu müsste auch das Frontend sinnvolles anzeigen.<br><br>Lass uns wissen, ob's funktioniert -- so oder anders!<br><br>Gruß, Rupert<o:p></o:p></p></div></body></html>