<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body text="#000000" bgcolor="#FFFFFF">
<p>Hallo Christian,<br>
</p>
<br>
<div class="moz-cite-prefix">Am 03.05.2018 um 23:15 schrieb
Christian Wulff:<br>
</div>
<blockquote type="cite"
cite="mid:008b01d3e323$d7677b00$86367100$@gmx.de">
<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]-->
<div class="WordSection1"><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 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>
</div>
</blockquote>
Ja, diesen Plan halte ich auch für den besten -- und er entspricht
genau dem, was ich in meiner ersten Antwort am 1.5. auf Deine
Anfrage geschrieben habe. Allerdings auch mit den Nachteilen, die
dort skizziert sind: Es gibt keinen Zählerstand, den Du direkt aus
der DB auslesen könntest, und die Darstellung des Schaltspielzählers
im Frontend ist nicht perfekt -- die wird es aber nie sein, egal
welche Daten (Zählerstand oder Impuls) Du erzeugst und
einspeicherst, denn so ein Kanaltyp müsste erst implementiert
werden. Ich würde aber erst mal anfangen, Daten zu sammeln, und mir
um die optimale Darstellung später Gedanken machen: Erstens "schaut
sich manches weg", wenn man sich daran gewöhnt hat, z.B. eine
unpassende Einheit, und Daten, die Du heute nicht sammelst, sind für
immer verloren.<br>
<br>
Ich würd's so versuchen (immer noch "Trockenschwimmkurs" ;-): <br>
<br>
1. Daten auf dem ständig laufenden Server erzeugen<br>
Ein Skript überwacht in Endlos-Schleife, ob der ESP "da" ist, z.B.
per Ping im 10-Sekundenraster, und schreibt das in eine Datei: 1 =
ESP an = Licht an, 0 = Aus.<br>
(Da gibt's vielleicht auch besseres, denn das Skript darf nicht
abstürzen, sonst ist der "Sensor" kaputt. Andererseits könntest Du
die Einschaltverzögerung des ESP "hinten" dran addieren, indem Du
die 0 nicht sofort, sondern erst ein paar Sekunden später in die
Datei schreibst.)<br>
Die Datei enthält entweder 1 oder 0, also nicht hinten anhängen,
sondern überschreiben. Ich meine zumindest, so funktioniert das
"file-meter".<br>
<br>
2. Datei mit vzlogger überwachen<br>
Dazu ein neues "meter" in die Aufzählung packen mit "protocol":
"file". vzlogger darf das ruhig in kurzem Intervall z.B. 1 sec
überwachen, denn Doubletten schickt er nicht an die Middleware,
außer man würde es ihm explizit befehlen.<br>
Dieses Meter befeuert 2 channels:<br>
- Den Schaltspielzähler vom Typ "Impulse" -- Gas, Wasser oder Strom:
Den idealen gibt es m.E. nicht, es müsste ein generischer
Impulszähler sein.<br>
- Den Betriebsstundensensor (siehe Franks Antwort vom 3.5 1:45h)<br>
<br>
Die Kanäle hast Du vorher im Frontend angelegt. <br>
<br>
Übrigens: Wenn Dir die Kanaldarstellung nicht gefällt, Du ihn vom
"falschen" Typ angelegt hast, kannst Du das problemlos auf der DB
ändern, ohne die Daten zu verlieren: Einfach in der Tabelle entities
den type ändern, id und uuid bleiben gleich --> Daten bleiben
erhalten, das Frontend stellt sie aber anders dar. Welche englischen
Einträge erlaubt sind und den deutschen Bezeichnungen entsprechen,
findest Du unter
<a class="moz-txt-link-freetext" href="https://github.com/volkszaehler/volkszaehler.org/blob/master/lib/Definition/EntityDefinition.json">https://github.com/volkszaehler/volkszaehler.org/blob/master/lib/Definition/EntityDefinition.json</a><br>
<br>
Viel Erfolg!<br>
Rupert<br>
</body>
</html>