<html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"></head><body dir="auto"><div>Soweit alles richtig! Jetzt musst Du in Deiner Enitity noch einstellen ab wieviel Sekunden ein gap erkannt werden soll, also analog Farbe, Darstellung, Kosten etc den Parameter anpassen.</div><div><br></div><div>Viele Grüße, Andreas</div><div><br></div><div><br>Am 05.06.2014 um 22:16 schrieb "Ludger Bremenkamp" <<a href="mailto:bremenkamp.ludger@t-online.de">bremenkamp.ludger@t-online.de</a>>:<br><br></div><blockquote type="cite"><div><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";}
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;}
span.hoenzb
        {mso-style-name:hoenzb;}
span.E-MailFormatvorlage18
        {mso-style-type:personal-reply;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
..MsoChpDefault
        {mso-style-type:export-only;
        mso-fareast-language:EN-US;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:70.85pt 70.85pt 2.0cm 70.85pt;}
div.WordSection1
        {page:WordSection1;}
--></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]--><div class="WordSection1"><p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:black">Hallo,<o:p></o:p></span></p><p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:black">hallo Andreas,<o:p></o:p></span></p><p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:black"><o:p> </o:p></span></p><p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:black">ich habe mal versucht das Ganze umzusetzen.<o:p></o:p></span></p><p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:black"><o:p> </o:p></span></p><p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:black">In der htdocs/frontend/javascripts/wui.js<o:p></o:p></span></p><p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:black"><o:p> </o:p></span></p><p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:black">Die Daten geändert!<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 lang="EN-US" style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">-                                             if (p)<o:p></o:p></span></p><p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"><o:p> </o:p></span></p><p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">+                                            if (p && series.data.last()[0] >= pos.x)<o:p></o:p></span></p><p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"><o:p> </o:p></span></p><p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">                                                               y = p[1];<o:p></o:p></span></p><p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"><o:p> </o:p></span></p><p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">                                               else<o:p></o:p></span></p><p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"><o:p> </o:p></span></p><p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">                                                               y = null;<o:p></o:p></span></p><p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"><o:p> </o:p></span></p><p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">                               } else { // no steps -> interpolate<o:p></o:p></span></p><p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"><o:p> </o:p></span></p><p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">                                               var p1 = series.data[j - 1], p2 = series.data[j];<o:p></o:p></span></p><p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"><o:p> </o:p></span></p><p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">-                                             if (p1 == null || p2 == null)<o:p></o:p></span></p><p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"><o:p> </o:p></span></p><p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">+                                            if (p1 == null || p2 == null || p1[0] == null)<o:p></o:p></span></p><p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"><o:p> </o:p></span></p><p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"><o:p> </o:p></span></p><p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri","sans-serif"">/var/www/<a href="http://volkszaehler.org/lib/Volkszaehler/Definition/">volkszaehler.org/lib/Volkszaehler/Definition/</a></span><span lang="EN-US"> </span><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri","sans-serif"">EntityDefinition.json<o:p></o:p></span></p><p class="MsoNormal"><span lang="EN-US" 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:black">Etwas Ziellos gesucht wo den “gaps” hinein gehört<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">                </span><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">"name" : "electric meter",<o:p></o:p></span></p><p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">"required"          : ["resolution"],<o:p></o:p></span></p><p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">"optional" : ["tolerance", "cost", "local", </span><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:red">“gaps”</span><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">],<o:p></o:p></span></p><p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">"icon"   : "bolt.png",<o:p></o:p></span></p><p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">"unit"    : "W",<o:p></o:p></span></p><p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">"interpreter"     : "Volkszaehler\\Interpreter\\CounterInterpreter",<o:p></o:p></span></p><p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">"style"  : "steps",<o:p></o:p></span></p><p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">"model"              : "Volkszaehler\\Model\\Channel",<o:p></o:p></span></p><p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">"hasConsumption"         : true,<o:p></o:p></span></p><p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">"translation"      : {<o:p></o:p></span></p><p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">"de" : "El. Energie (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">"en" : "El. Energy (absolute meter readings)"<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"">Aber ich glaube das war Falsch den im Frontend hat sich nichts geändert!<o:p></o:p></span></p><p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif""><o:p> </o:p></span></p><p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif"">Was mache ich falsch?<o:p></o:p></span></p><p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif""><o:p> </o:p></span></p><p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif"">Grüße Ludger<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"><b><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif"">Von:</span></b><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif""> <a href="mailto:volkszaehler-dev-bounces@demo.volkszaehler.org">volkszaehler-dev-bounces@demo.volkszaehler.org</a> [<a href="mailto:volkszaehler-dev-bounces@demo.volkszaehler.org">mailto:volkszaehler-dev-bounces@demo.volkszaehler.org</a>] <b>Im Auftrag von </b>Andreas Goetz<br><b>Gesendet:</b> Donnerstag, 5. Juni 2014 20:07<br><b>An:</b> <a href="http://volkszaehler.org">volkszaehler.org</a><br><b>Betreff:</b> Re: [vz-dev] Leistungswert bleibt stehen obwohl kein Verbrauch mehr (keine S0 Impulse mehr)<o:p></o:p></span></p><p class="MsoNormal"><o:p> </o:p></p><div><div><div><div><p class="MsoNormal" style="margin-bottom:12.0pt">Hallo Zusammen,<br><br>hier der versprochene Prototyp:<br><br><a href="https://github.com/andig/volkszaehler.org/tree/enhance-gaps">https://github.com/andig/volkszaehler.org/tree/enhance-gaps</a><o:p></o:p></p></div><p class="MsoNormal" style="margin-bottom:12.0pt">@Ludger: damit Du das für Dein BHKW anwenden kannst musst Du noch den Parameter "gaps" in der EntityDefinition.json hinzufügen und dann den Timeout in Sekunden im Frontend konfigurieren.<o:p></o:p></p></div><p class="MsoNormal">vg<o:p></o:p></p></div><p class="MsoNormal">Andreas<o:p></o:p></p><div><div><p class="MsoNormal"><o:p> </o:p></p></div></div></div><div><p class="MsoNormal" style="margin-bottom:12.0pt"><o:p> </o:p></p><div><p class="MsoNormal">2014-06-04 10:02 GMT+02:00 Andreas Goetz <<a href="mailto:cpuidle@gmail.com" target="_blank">cpuidle@gmail.com</a>>:<o:p></o:p></p><div><p class="MsoNormal">Moin Zusammen,<o:p></o:p></p><div><p class="MsoNormal"><o:p> </o:p></p><div><p class="MsoNormal">2014-06-04 1:22 GMT+02:00 Thorben Thuermer <<a href="mailto:r00t@constancy.org" target="_blank">r00t@constancy.org</a>>:<o:p></o:p></p><div><blockquote style="border:none;border-left:solid #CCCCCC 1.0pt;padding:0cm 0cm 0cm 6.0pt;margin-left:4.8pt;margin-right:0cm"><p class="MsoNormal"><o:p> </o:p></p><div><p class="MsoNormal">On Tue, 3 Jun 2014 20:50:00 +0200 Jan Tamm <<a href="mailto:vz@tamms.net" target="_blank">vz@tamms.net</a>> wrote:<br>> Am 2. Juni 2014 20:33 schrieb Ludger Bremenkamp <<br>> <a href="mailto:bremenkamp.ludger@t-online.de" target="_blank">bremenkamp.ludger@t-online.de</a>>:<br>> > Was ich als falsch empfinde, ist daß das BHKW   seit ca. 08:15 Uhr aus ist<br>> > und unten steht bei aktuell noch 5.4kW.<o:p></o:p></p></div></blockquote><div><p class="MsoNormal"><o:p> </o:p></p></div></div><div><p class="MsoNormal" style="margin-bottom:12.0pt">Das ist erstmal auch korrekt da 5.4kW immer noch der aktuelle (=letzte) Wert ist der gespeichert wurde. Die MW kann apriori nicht wissen, ab wann ein Wert nicht mehr "aktuell" ist- ggf. liest man ja nur 1x täglich Werte aus...<o:p></o:p></p></div><div><blockquote style="border:none;border-left:solid #CCCCCC 1.0pt;padding:0cm 0cm 0cm 6.0pt;margin-left:4.8pt;margin-right:0cm"><div><p class="MsoNormal">> ><br>> > Wenn man in der Tagesansicht schaut kann man natürlich sehen das die Kurve<br>> > nicht weiter verläuft (also BHKW aus).<o:p></o:p></p></div><p class="MsoNormal">[...]<o:p></o:p></p><div><p class="MsoNormal">> > Hier wäre es doch schön wenn keine Impulse mehr kommen, den aktuell Wert<br>> > mit 0 kW anzuzeigen.<o:p></o:p></p></div></blockquote><div><p class="MsoNormal"><o:p> </o:p></p></div></div><div><p class="MsoNormal">Eine ähnliche Lösung gibt es aktuell für das Frontend- die "gap"s. Bei gaps(=Lücken) wird die Darstellung unterbrochen. Denkbar wäre auch in diesem Fall den aktuellen Wert auf 0/leer/Wert in () zu setzen um einen veralteten Stand anzuzeigen. Das ließe sich vmtl. relativ schnell implementieren.<o:p></o:p></p></div><div><p class="MsoNormal"><br>Aber: bisher habe ich gaps nur für Kanäle ohne "Consumption" eingebaut da die Lücken dann eine reine Anzeigegeschichte sind. Hat ein Kanal verbrauch wird ja "unter der Kurve integriert", die Lücke würde also eine leicht andere Verbrauchsberechnung suggerieren als real auftritt. M.E. zu verschmerzen?<br> <o:p></o:p></p></div><div><blockquote style="border:none;border-left:solid #CCCCCC 1.0pt;padding:0cm 0cm 0cm 6.0pt;margin-left:4.8pt;margin-right:0cm"><div><p class="MsoNormal">> es ist noch keine neue Information geflossen, also kann die Middleware auch<br>> nichts neues anzeigen.<o:p></o:p></p></div></blockquote><div><p class="MsoNormal"><o:p> </o:p></p></div></div><div><p class="MsoNormal">So isses.<br> <o:p></o:p></p></div><div><blockquote style="border:none;border-left:solid #CCCCCC 1.0pt;padding:0cm 0cm 0cm 6.0pt;margin-left:4.8pt;margin-right:0cm"><div><p class="MsoNormal"><o:p> </o:p></p></div><p class="MsoNormal">mir erschiene es sinnvoller, das in der middleware zu loesen,<o:p></o:p></p></blockquote><div><p class="MsoNormal"><o:p> </o:p></p></div></div><div><p class="MsoNormal">Warum eigentlich? Ich speichere für meine Zähler z.B. alle 5min einen Wert- ob 0 oder nicht. Das liesse sich z.B. auch über ein Skript ala vzcompress realisieren welches die GAP-Logik nachbildet.<br> <o:p></o:p></p></div><div><blockquote style="border:none;border-left:solid #CCCCCC 1.0pt;padding:0cm 0cm 0cm 6.0pt;margin-left:4.8pt;margin-right:0cm"><p class="MsoNormal">bzw bei der berechnung im interpreter.<o:p></o:p></p></blockquote><div><p class="MsoNormal"><o:p> </o:p></p></div></div><div><p class="MsoNormal">Dieser Weg ist natürlich auch denkbar, packt aber nochmal mehr Komplexität in die MW. Das würde letztlich bedeuten, dass wir die Interpretation des "gaps" vom Frontend in die MW verlegen müssten. Damit wäre auch die Problematik der Verbauchsberechnung gelöst.<br> <o:p></o:p></p></div><div><blockquote style="border:none;border-left:solid #CCCCCC 1.0pt;padding:0cm 0cm 0cm 6.0pt;margin-left:4.8pt;margin-right:0cm"><p class="MsoNormal">das haette auch den vorteil, dass keine phantasie-daten in der db landen.<br>nach einem timeout, vielleicht abhaengig von der vorherigen leistung/abstand,<br>oder konfigurierbar pro kanal?<o:p></o:p></p></blockquote><div><p class="MsoNormal"><o:p> </o:p></p></div></div><div><p class="MsoNormal">Konfigurierbar pro Kanal, anderenfalls treffen wir zu viele Annahmen über die Messung.<br> <o:p></o:p></p></div><div><blockquote style="border:none;border-left:solid #CCCCCC 1.0pt;padding:0cm 0cm 0cm 6.0pt;margin-left:4.8pt;margin-right:0cm"><p class="MsoNormal">man koennte auch einigermassen korrekt eine obergrenze fuer die leistung liefern,<br>indem man annimmt, dass zum aktuellen zeitpunkt ein impuls vorliegt.<o:p></o:p></p></blockquote><div><p class="MsoNormal"><o:p> </o:p></p></div></div><div><p class="MsoNormal" style="margin-bottom:12.0pt">Die Frage ist obs wirklich notwendig ist und uns die einfache Frontendlösung nicht schon reichen würde, auch wenn's nur eine Approximation wäre.<br><br><o:p></o:p></p></div><div><p class="MsoNormal" style="margin-bottom:12.0pt">Wie wär's denn mit einem kleinen Prototypen? Dabei könnte ich auch gleich das Problem mitlösen dass aktuell in gefundenen "gaps" immer noch Zahlenwerte in der Legende angezeigt werden...<o:p></o:p></p></div><blockquote style="border:none;border-left:solid #CCCCCC 1.0pt;padding:0cm 0cm 0cm 6.0pt;margin-left:4.8pt;margin-right:0cm"><p class="MsoNormal"><br>> -- Jan<br><span style="color:#888888"><br>- Thorben</span><o:p></o:p></p></blockquote></div><p class="MsoNormal"><o:p> </o:p></p></div><div><p class="MsoNormal"><span style="color:#888888">Andreas<o:p></o:p></span></p></div></div></div><p class="MsoNormal"><o:p> </o:p></p></div></div>
<br><br>
<hr style="border:none; color:#909090; background-color:#B0B0B0; height: 1px; width: 99%;">
<table style="border-collapse:collapse;border:none;">
        <tbody><tr>
                <td style="border:none;padding:0px 15px 0px 8px">
                        <a href="http://www.avast.com/">
                                <img border="0" src="http://static.avast.com/emails/avast-mail-stamp.png">
                        </a>
                </td>
                <td>
                        <p style="color:#3d4d5a; font-family:"Calibri","Verdana","Arial","Helvetica"; font-size:12pt;">
                                Diese E-Mail ist frei von Viren und Malware, denn der <a href="http://www.avast.com/">avast! Antivirus</a> Schutz ist aktiv.
                        </p>
                </td>
        </tr>
</tbody></table>
<br>
</div></blockquote></body></html>