Hi, alte Installation, Wiki passt zur neuen Struktur. Du brauchst misc/tools/aggregate.php
Gruß Frank Am 5. Mai 2018 um 19:48 schrieb Christian Wulff <christianwu...@gmx.de>: > Moin, > > > > ich muss nochmal an dieser Stelle einhaken. > > > > Vor der Aktivierung der Aggregation sah die Antwort der Abfrage > http://IP-ADRESSE/middleware.php/capabilities/database.json? so aus: > > {"version":"0.3","capabilities":{"database":{"data_rows":30461209,"data_ > size":2664267776,"aggregation_enabled":0}}} > > > > Ich habe jetzt die Aggregation aktiviert. > > > > Nach der Aktivierung der Aggregation sah die Antwort der Abfrage > http://IP-ADRESSE/middleware.php/capabilities/database.json? so aus: > > {"version":"0.3","capabilities":{"database":{"data_rows":30087708,"data_ > size":2674753536,"aggregation_enabled":1,"aggregation_rows": > 0,"aggregation_size":49152,"aggregation_ratio":0}}} > > > > Soweit so gut. > > > > Allerdings kann ich die Aggregation nicht starten. > > Ich habe folgenden Befehl aus dem Wiki probiert: > > php /var/www/volkszaehler.org/bin/aggregate run -m full -l day -l hour -l > minute > > > > Antwort: > > Could not open input file: /var/www/volkszaehler.org/bin/aggregate > > > > Das Problem ist, dass es in dem Ordner /var/www/volkszaehler.org/ keinen > Ordner „bin“ gibt. > > > > Nun weiß ich nicht mehr weiter. > > Wer weiß da Rat? > > > > Danke und lieben Gruß, > > Chris > > > > > > > > > > > > > > > > > > *Von:* Frank Richter [mailto:frank.richte...@gmail.com] > *Gesendet:* Mittwoch, 2. Mai 2018 22:02 > *An:* volkszaehler.org - users > *Betreff:* Re: [vz-users] Schaltspiel- und Betriebsstundenzähler - > Konzept gesucht > > > > Hi Christian, > > > > bei deinen lahmen Antwortzeiten hast du sicher keine Aggregation > aktiviert, oder? Bitte mal überprüfen (aggregation in der > volkszaehler.conf.php und Cronjobs für regelmäßige Aktualisierung der > Tabelle aggregate). > > > > Zählerstände sind sicherlich schicker, aber auch schwieriger in der > Handhabung: soll der ESP den laufenden Absolutwert speichern? > > > > Gruß > > Frank > > > > Christian Wulff <christianwu...@gmx.de> schrieb am Mi., 2. Mai 2018 21:49: > > Moin, > > > > ja, mit S0 Impulsen geht das, klar. Aber grottenlahm. > > Ich habe zum Beispiel einen Wasserzähler, der seit Oktober 2016 (sind ja > nur 1,5 Jahre, also noch nicht soooo viel) bis heute 458733 Datensätze > geloggt hat. > > > > Wenn ich mit der VZ App v9.7 den Wasserzähler abfrage, dann addiert er > glatte 46 Sekunden lang alle S0 Impulse zusammen, bis das Ergebnis kommt. > Das ist mir zu langsam. > > Wenn ich in die Datenbank schauen würde und den letzten Wert abfrage, und > dieser die Information enthält die ich suche, (nämlich zum Beispiel > 613390,5L) dann dauert die Abfrage des Wertes nur Millisekunden. > > Übrigens dauert es 38 Sekunden, wenn ich die aktuell 458733 Datensätze des > Wasserzählers in der Administration der Datenbank folgendermaßen abfrage: > > SELECT * FROM `data` WHERE channel_id = '16' > > Is ja auch kein Wunder, dass es dauert bis man ein paar hunderttausend > Datensätze abgefragt und aufaddiert hat. > > Aber warum muss man denn ein paar hunderttausend Werte abfragen und > aufaddieren, wenn man anstatt dummen S0 Bits auch die wirkliche Anzahl der > Impulse speichern kann? > > Statt hundertausende Daten abfragen und addieren zu müssen, reicht dann > die Abfrage von einem einzigen Datensatz. > > Will man einen Bereich wissen muss man nur zwei Datensätze abfragen und > die Differenz bilden. > > Das geht dann logischerweise Faktor mehrere hunderttausendfach schneller > > Und genau das ist der Grund ,warum ich von S0 Impulse nix halte und sie so > oft wie möglich versuche zu vermeiden. > > > > Ich schaue per http Abfrage über JSON über die API der Middleware in die > Datenbank. > > (Ich habe mir ein eigenes Hardwarefrontend gebaut. > > Das besteht aus einem ESP8266 und einem 2,8“ 320x200 Display für insgesamt > 20 Euro. > > Das geht dann immer mit der Beleuchtung im Gäste WC an, fragt die Daten > über WLAN ab und stellt sie dar. > > Leider hatte ich noch keine Zeit dies zum Nachbauen zu dokumentieren L > > Die nächste Stufe in 4“ mit 480x320 liegt hier vor mir, muss ich nur Zeit > für haben) > > > > Warum ich das über einen ESP8266 machen will? > > Weil ich schon 2 Stück ESP8266 laufen habe, die über WLAN Daten an den > Volkszähler senden. > > 1x drei Drehzahlen von der kontrollierten BE- und Entlüftung meiner > Wärmepumpe. Da musste ich selber die Software schreiben bis das klappte. > > 1x mit 15 Stück DS18b20 Temperatursensoren. Da konnte ich als Software > eine gepimpte Version von ESP Easy Mega nehmen. > > Und weil ich keine Kabelverbindung (außer der Stromleitung) zum Carport > liegen habe, aber selbiges locker in WLAN Reichweite liegt. > > Die galvanische Trennung auf der Signalebene ist sicherlich auch nicht > schlecht. Wer weiß schon was sich da draußen für böse Spannungen > rumtreiben, die meinen Raspi ärgern wollen. > > > > Den letzten Datensatz per http Request abzufragen ist sehr einfach: > > 192.168.178.xx/middleware.php/data/xxxxx--UUID--xxxxx.json?from=now > > Die Antwort ist ein JSON mit dem letzten timestamp und dem letzten Wert. > > > > Nun nochmal zu meinen Fragestellungen: > > 1. Hat schon mal jemand eine Betriebsstunden- und/oder > Schaltspielerfassung mit einem Volkszähler realisiert? Wenn ja, wie? > > 2. Wie stellt man die Betriebsstunden im Frontend dar? Wie > sieht das aus? „Betriebsstundenzähler (Impulse)“ und „Betriebsstundenzähler > (Zählerstand)“ gibt es ja, aber dann gibt es noch einen > „Betriebsstundenzähler“. Was ist das? > > 3. Wie stellt ich die Schaltspiele dar? Als Ventil? Welche > Daten braucht das Ventil? „1“ für „high“ und „0“ für „low“? Ist das > irgendwo dokumentiert? > > 4. Der Bewegungsmelder schaltet ja auch den ESP8266 mit ein und > aus. Die Bootverzögerung kann ich ignorieren oder mal messen und dann als > konstanten Wert zu jeder Messung dazu addieren. > > Aber wie schaffe ich es, dass der ESP8266 das Abschalten registriert und > dann noch den Wert an die Datenbank sendet? > > > > Hat vielleicht jemand ein paar gute Ideen wie man das umsetzen kann? > > > > Danke und liebe Grüße, > > Chris > > > > *Von:* Rupert Schöttler [mailto:rupert.schoett...@gmx.de] > *Gesendet:* Dienstag, 1. Mai 2018 12:46 > *An:* volkszaehler-users@demo.volkszaehler.org > *Betreff:* Re: [vz-users] Schaltspiel- und Betriebsstundenzähler - > Konzept gesucht > > > > Hallo Christian, > > > > Am 30.04.2018 um 10:52 schrieb Christian Wulff: > > ich bin auf der Suche nach einem Konzept für folgende Fragestellung: > > > > Ich möchte die Schaltspiele und Betriebsstunden einer > Bewegungsmelder-gesteuerten Beleuchtung über WLAN mit dem Volkszähler > erfassen. > > > > 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, ........ > > 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). > > > 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. > Das wäre der 1. Kanal zum Mitzählen. > > 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. > > Das heißt folgendermaßen (Beispiel pro Schaltspiel 55 Sekunden, kann aber > auch variieren): 55, 110 , 165, 220, 652, 707, 762, 817, 1254, 1309, ..... > > Auch hier der gleiche Grund: Bei ersten Blick in die Datenbank möchte ich > die Betriebsstunden in Sekunden auslesen. > > > 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. > > 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äß > https://wiki.volkszaehler.org/howto/datenmengen, würde es vermutlich noch > deutlich schneller gehen. > > Direkt auf der DB (phpMyAdmin) geht's auch nicht viel schneller: > > Zeige Datensätze 0 - 0 (1 insgesamt, Die Abfrage dauerte 3.7392 Sekunden.) > > SELECT count(*), Sum(value) FROM `data` WHERE channel_id=12 > 225887 736725 > > (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??) > > Brauchst Du bessere Performance, für die es sich lohnt, die > Standardkonzepte zu verbiegen? > > 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. > > 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. > > > Warum will ich das haben? In erster Linie: Just for fun! > > Das ist die wichtigste Triebfeder! :-) > > Viele Grüße > Rupert > >