<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 30.04.2018 um 10:52 schrieb
Christian Wulff:<br>
</div>
<blockquote type="cite"
cite="mid:007101d3e060$9f522780$ddf67680$@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;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{margin:0cm;
margin-bottom:.0001pt;
font-size:11.0pt;
font-family:"Calibri","sans-serif";
mso-fareast-language:EN-US;}
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;}
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:11.0pt;
font-family:"Calibri","sans-serif";
mso-fareast-language:EN-US;}
span.E-MailFormatvorlage17
{mso-style-type:personal-compose;
font-family:"Calibri","sans-serif";
color:windowtext;}
.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;}
/* List Definitions */
@list l0
{mso-list-id:743601251;
mso-list-type:hybrid;
mso-list-template-ids:102239406 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;}
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">ich bin auf der Suche nach einem Konzept
für folgende Fragestellung:<o:p></o:p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Ich möchte die Schaltspiele und
Betriebsstunden einer Bewegungsmelder-gesteuerten Beleuchtung
über WLAN mit dem Volkszähler erfassen.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Die Schaltspiele möchte ich dabei nicht als
S0 Impulse, sondern als Zahl gespeichert haben. Das heißt
folgendermaßen: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, ........<o:p></o:p></p>
<p class="MsoNormal">Hintergrund ist, dass man so auf den ersten
Blick in die Datenbank die Schaltspiele ablesen kann, und
nicht bei einer Abfrage mühsam alle Impulse aufaddieren muss.
(Hab ich nämlich schon bei anderen Kanälen in der Datenbank
und dauert mir bei der späteren Abfrage leider zu lange).<o:p></o:p></p>
</div>
</blockquote>
<br>
Ich meine, dass das mit S0-Impulsen schon gut geht: Jedes
Einschalten (Wechsel 0 -> 1) erzeugt einen Impuls, den Du mit
vzlogger registrieren kannst. Die Auflösung ist 1. In der Grafik des
VZ bzw. der Tabelle darunter bekommst Du dann als "Verbrauch" die
Anzahl Schaltspiele im ausgewählten Zeitraum. Ok, 100% so wie Du Dir
das vorstellst, ist es nicht. Aber das Aufaddieren ist m.E. nicht
"mühsam", wie Du schreibst. <br>
Das wäre der 1. Kanal zum Mitzählen. <br>
<br>
<blockquote type="cite"
cite="mid:007101d3e060$9f522780$ddf67680$@gmx.de">
<div class="WordSection1">
<p class="MsoNormal">Bei den "Betriebsstunden" sollen die
"Betriebssekunden" aufaddiert werden. Diese können variieren,
weil der Bewegungsmelder innerhalb seiner Timerlaufzeit
mehrfach ausgelöst werden kann, oder das Licht auch manuell
angeschaltet werden kann.<o:p></o:p></p>
<p class="MsoNormal">Das heißt folgendermaßen (Beispiel pro
Schaltspiel 55 Sekunden, kann aber auch variieren): 55, 110 ,
165, 220, 652, 707, 762, 817, 1254, 1309, .....<o:p></o:p></p>
<p class="MsoNormal">Auch hier der gleiche Grund: Bei ersten
Blick in die Datenbank möchte ich die Betriebsstunden in
Sekunden auslesen.</p>
</div>
</blockquote>
<br>
Hierzu würde ich einen 2. Kanal einrichten, der auf dasselbe 1 /
0-Signal reagiert. Ich habe eine Photodiode, die registriert, ob im
Keller Licht an ist, und das an einen GPIO des Pi gibt. Der Kanal
ist ein allgemeiner "Sensor" mit Einheit "Ein" und Stil "states".
Hier sehe ich z.B. in der Tabelle, dass das Licht im Durchschnitt
eines Tages "0,037 Ein" war. Gut, das müsste ich in Stunden
umrechnen. Vermutlich geht es mit dem Kanaltyp
"Betriebsstundensensor" viel einfacher, ich habe damit aber keine
Erfahrung.<br>
<br>
Ich gebe zu, meine Lösungsvorschläge ignorieren Deinen Wunsch, "beim
ersten Blick in die DB" die Info zu bekommen. Ich kann den aber auch
nicht wirklich nachvollziehen: Wie würdest Du "in die DB"
hineinschauen? Per SQL? Auch dann muss, nach Tausenden
Schaltspielen, die je 1 Datensatz erzeugt haben, der richtige
=letzte herausgesucht werden. Geht das schneller als ein COUNT oder
SUM? Ich habe eine analoge Wasseruhr als S0-Zähler eingerichtet, die
hat nach 4 Monaten rd. 226.000 Datensätze in die DB gepumpt. Eine
Grafik über diesen Zeitraum aufzubauen dauert ein paar Sekunden,
liefert mir aber neben dem Gesamtverbrauch auch den zeitlichen
Verlauf. Würde ich diese Daten verdichten gemäß
<a class="moz-txt-link-freetext" href="https://wiki.volkszaehler.org/howto/datenmengen">https://wiki.volkszaehler.org/howto/datenmengen</a>, würde es vermutlich
noch deutlich schneller gehen.<br>
<br>
Direkt auf der DB (phpMyAdmin) geht's auch nicht viel schneller:<br>
<blockquote>Zeige Datensätze 0 - 0 (1 insgesamt, Die Abfrage
dauerte 3.7392 Sekunden.)<br>
<br>
SELECT count(*), Sum(value) FROM `data` WHERE channel_id=12<br>
225887 736725 <br>
</blockquote>
(Da fällt mir auf: 736.725 Impulse bei 60 Imp/l sind 12.278,75 l.
Die Tabelle sagt 12,2 m³ -- kann das Teil nicht richtig runden??)<br>
<br>
Brauchst Du bessere Performance, für die es sich lohnt, die
Standardkonzepte zu verbiegen?<br>
<br>
<blockquote type="cite"
cite="mid:007101d3e060$9f522780$ddf67680$@gmx.de">
<div class="WordSection1">
<p class="MsoNormal"><o:p></o:p></p>
Als Hardware dachte ich an einen ESP8266. Damit habe ich bereits
einige Projekte erfolgreich gemacht. Diesen könnte ich auch mit
einem FRAM Speichermodul kombinieren, um die Werte beim Sensor
zwischenzuspeichern.<o:p></o:p></div>
</blockquote>
Was soll der ESP8266 machen? M.E. reicht es, wenn Du Licht an/aus
als 1/0 an einen GPIO bekommst und das mit vzlogger an die
Middleware übertragen lässt.<br>
<o:p> <br>
</o:p>
<blockquote type="cite"
cite="mid:007101d3e060$9f522780$ddf67680$@gmx.de">
<div class="WordSection1">
<p class="MsoNormal">Warum will ich das haben? In erster Linie:
Just for fun! </p>
</div>
</blockquote>
Das ist die wichtigste Triebfeder! :-)<br>
<br>
Viele Grüße<br>
Rupert<br>
</body>
</html>