Re: [vz-users] Schaltspiel- und Betriebsstundenzähler - Konzept gesucht
Hallo, am Donnerstag, 10. Mai 2018 um 12:34 hat Christian Wulff geschrieben: > Und die verliert immer wieder mal ein paar Impulse habe ich das > Gefühl, jedenfalls läuft die manuelle Anzeige und der Volkszähler > Wert über S0 immer mal wieder ein wenig auseinander über die Zeit. [...] > Mal gucken, vielleicht bau ich mir aus der S0 Wasseruhr nochmal > einen Sensor mit Zählerständen. (Die S0 Wasseruhr würde dann von > einem ESP8266 mit zusätzlichem FRAM Speicher die S0 Impulse > aufaddieren und im FRAM nicht flüchtig speichern. Und dann sendet > der ESP8266 diese als Zählerstand an den Volkszähler. Dann hab ich > in der Datenbank echte Zählerstände.) Hab ich geringe Zweifel, das Problem liegt bei S0 meist schon in der Erfassung. Ob nun der VZ oder ein ESP die Impulse zu Zählerständen umbaut (Summe Impulse = Zählerstand) kommt aufs gleiche raus. mfg Daniel
Re: [vz-users] Schaltspiel- und Betriebsstundenzähler - Konzept gesucht
Hi Christian, MySQL braucht temporären Speicher für große Transaktionen. Bei Aggregation von großen Datenbanken sind die 30MB wohl zu knapp bemessen. Das S0-Problem tritt vor allem dann auf, wenn vzlogger gleichzeitig ein Logfile schreiben muss. Im Produktivsystem sollte verbosity auf 0 stehen, also unproblematisch. Fazit: so lassen wie es jetzt ist, bei SSD erst recht. Hat es was gebracht, d.h. läuft dein Frontend jetzt schneller? Gruß Frank Udo1schrieb am Mi., 9. Mai 2018 15:02: > > > Am 09.05.2018 um 13:48 schrieb Christian Wulff: > > Das heisst die Aggregation benutzt den /tmp Ordner? > Keine Ahnung, mit der Agg kenne ich moch nicht aus. > Der /tmp-Ordner im jetzigen Image wird wie von rasbian vorgesehen genutzt. > > > Wie merke ich denn, das S0 Impulse nicht mehr sauber erfasst werden > können? > Da sind dann Lücken in der Grafik. > > > Gruß > Udo >
Re: [vz-users] Schaltspiel- und Betriebsstundenzähler - Konzept gesucht
Moin Udo, meinst du mich? Ich weiss von nix. Lieben Gruß, Chris -Ursprüngliche Nachricht- Von: Udo1 [mailto:u...@gmx.net] Gesendet: Montag, 7. Mai 2018 09:50 An: volkszaehler-users@demo.volkszaehler.org Betreff: Re: [vz-users] Schaltspiel- und Betriebsstundenzähler - Konzept gesucht Am 05.05.2018 um 23:27 schrieb Stefan Bauer: > tmpfs30M 0 30M 0% /tmp Die Ramdisk wird gar nicht genutzt. Irgendwer hat unter /run/user/1000 eine Ramdisk? angelegt? Gruß Udo
Re: [vz-users] Schaltspiel- und Betriebsstundenzähler - Konzept gesucht
Moin Udo, wahrscheinlich hat MySQL seine Temp-Files nach Fehlermeldung und Abbruch wieder gelöscht. Nachdem /tmp wieder auf der SSD lag, schien es ja zumindest länger zu laufen. @Christian: fertig mittlerweile? Grüße Frank Am 7. Mai 2018 um 09:49 schrieb Udo1: > > > Am 05.05.2018 um 23:27 schrieb Stefan Bauer: > >> tmpfs30M 0 30M 0% /tmp >> > > > Die Ramdisk wird gar nicht genutzt. > Irgendwer hat unter /run/user/1000 eine Ramdisk? angelegt? > > Gruß > Udo >
Re: [vz-users] Schaltspiel- und Betriebsstundenzähler - Konzept gesucht
Am 05.05.2018 um 23:27 schrieb Stefan Bauer: tmpfs 30M 0 30M 0% /tmp Die Ramdisk wird gar nicht genutzt. Irgendwer hat unter /run/user/1000 eine Ramdisk? angelegt? Gruß Udo
Re: [vz-users] Schaltspiel- und Betriebsstundenzähler - Konzept gesucht
Das legt aus dem Hauptspeicher eine 30MB „Partition“ an, und diese wird als /tmp eingebunden. Da dort temporäre Daten gespeichert werden erfolgen hier öfters Schreibzugriffe. Würde also ne SD-Karte belasten, bei ner SSD mit 128GB sollte es unkritisch sein. Kannste also eigentlich auskommentiert lassen. Stefan Von meinem iPad gesendet > Am 05.05.2018 um 23:15 schrieb Christian Wulff <christianwu...@gmx.de>: > > Bis jetzt läuft es. > Was ist denn das und was tut es? (tmpfs /tmp tmpfs > nodev,nosuid,mode=1777,size=30M 0 0) > Muss ich das danach wieder zurückstellen? > LG > Chris > > > Von: Frank Richter [mailto:frank.richte...@gmail.com] > Gesendet: Samstag, 5. Mai 2018 23:13 > An: volkszaehler.org - users > Betreff: Re: [vz-users] Schaltspiel- und Betriebsstundenzähler - Konzept > gesucht > > Und was sagt aggregate.php jetzt? > > Christian Wulff <christianwu...@gmx.de> schrieb am Sa., 5. Mai 2018 22:51: > Dann sieht es so aus: > > df -h > Filesystem Size Used Avail Use% Mounted on > /dev/root 118G 53G 59G 48% / > devtmpfs459M 0 459M 0% /dev > tmpfs 463M 0 463M 0% /dev/shm > tmpfs 463M 6.3M 457M 2% /run > tmpfs 5.0M 4.0K 5.0M 1% /run/lock > tmpfs 463M 0 463M 0% /sys/fs/cgroup > /dev/mmcblk0p1 63M 21M 43M 33% /boot > tmpfs93M 0 93M 0% /run/user/1000 > > > Lieben Gruß, > Chris > > Von: Frank Richter [mailto:frank.richte...@gmail.com] > Gesendet: Samstag, 5. Mai 2018 20:38 > An: volkszaehler.org - users > Betreff: Re: [vz-users] Schaltspiel- und Betriebsstundenzähler - Konzept > gesucht > > Vermutlich ist das diese Zeile in der /etc/fstab: > > tmpfs /tmp tmpfs nodev,nosuid,mode=1777,size=30M 0 0 > > Kommentier' die mal aus (mit #), starte neu und schau nochmal was df -h dann > sagt. > > > > > Am 5. Mai 2018 um 20:33 schrieb Frank Richter <frank.richte...@gmail.com>: > Dann hast du die Version vom Image, wo /tmp als Ramdisk eingerichtet ist. > Vermutlich reicht dort der Platz nicht für so umfangreiche DB-Akrobatik. > Vielleicht kann Udo kurz erklären, wie du /tmp zurück auf die Platte bekommst. > > Grüße > Frank > > Am 5. Mai 2018 um 20:28 schrieb Christian Wulff <christianwu...@gmx.de>: > Moin Frank, > > Das Systemlaufwerk ist eine 128GB SSD > > /tmp $ df -h > Filesystem Size Used Avail Use% Mounted on > /dev/root 118G 53G 59G 48% / > devtmpfs459M 0 459M 0% /dev > tmpfs 463M 0 463M 0% /dev/shm > tmpfs 463M 6.3M 457M 2% /run > tmpfs 5.0M 4.0K 5.0M 1% /run/lock > tmpfs 463M 0 463M 0% /sys/fs/cgroup > tmpfs30M 0 30M 0% /tmp > /dev/mmcblk0p1 63M 21M 43M 33% /boot > tmpfs 93M 0 93M 0% /run/user/1000 > > Lieben Gruß, > Chris > > > > Von: Frank Richter [mailto:frank.richte...@gmail.com] > Gesendet: Samstag, 5. Mai 2018 20:23 > > An: volkszaehler.org - users > Betreff: Re: [vz-users] Schaltspiel- und Betriebsstundenzähler - Konzept > gesucht > > Wie voll ist dein /tmp (df - h)? > > Am 5. Mai 2018 um 20:16 schrieb Frank Richter <frank.richte...@gmail.com>: > Kein Plan, hatte ich noch nie. Speicherkarte oder was besseres als > Systemlaufwerk? > > Am 5. Mai 2018 um 20:13 schrieb Christian Wulff <christianwu...@gmx.de>: > …..lief leider nicht s lange. Fehlermeldung: > > Performing 'full' aggregation on 'day' level. > > > [Doctrine\DBAL\Exception\DriverException] > An exception occurred while executing 'REPLACE INTO aggregate (channel_id, > type, timestamp, value, count) SELECT channel_id, ? AS type, > MAX(agg.timestamp) > AS timestamp, COALESCE( SUM(agg.val_by_time) / (MAX(agg.timestamp) - > MIN(agg.prev_timestamp)), AVG(agg.value)) AS value, COUNT(agg.value) AS count > FROM ( S > ELECT channel_id, timestamp, value, value * (timestamp - @prev_timestamp) > AS val_by_time, GREATEST(0, IF(@prev_timestamp = NULL, NULL, > @prev_timestamp)) AS >prev_timestamp, @prev_timestamp := timestamp FROM data CROSS JOIN (SELECT > @prev_timestamp := NULL) AS vars WHERE channel_id = ? AND timestamp < > UNIX_TIMES > TAMP(DATE_FORMAT(NOW(), "%Y-%m-%d")) * 1000 ORDER BY timestamp ) AS agg > GROUP BY channel_id, YEAR(FROM_UNIXTIME(timestamp/1000)), > DAYOFYEAR(FROM_UNIXTIME(t > imestamp/1000))' with params [3, "15"]: > SQLSTATE[HY000]: General error: 126 Incorrect key file for table > '/tmp/#sql_49e_1.MYI'; try to repair it > > > > [Doctrine\DBAL\Dr
Re: [vz-users] Schaltspiel- und Betriebsstundenzähler - Konzept gesucht
Bis jetzt läuft es. Was ist denn das und was tut es? (tmpfs /tmp tmpfs nodev,nosuid,mode=1777,size=30M 0 0) Muss ich das danach wieder zurückstellen? LG Chris Von: Frank Richter [mailto:frank.richte...@gmail.com] Gesendet: Samstag, 5. Mai 2018 23:13 An: volkszaehler.org - users Betreff: Re: [vz-users] Schaltspiel- und Betriebsstundenzähler - Konzept gesucht Und was sagt aggregate.php jetzt? Christian Wulff <christianwu...@gmx.de> schrieb am Sa., 5. Mai 2018 22:51: Dann sieht es so aus: df -h Filesystem Size Used Avail Use% Mounted on /dev/root 118G 53G 59G 48% / devtmpfs459M 0 459M 0% /dev tmpfs 463M 0 463M 0% /dev/shm tmpfs 463M 6.3M 457M 2% /run tmpfs 5.0M 4.0K 5.0M 1% /run/lock tmpfs 463M 0 463M 0% /sys/fs/cgroup /dev/mmcblk0p1 63M 21M 43M 33% /boot tmpfs93M 0 93M 0% /run/user/1000 Lieben Gruß, Chris Von: Frank Richter [mailto:frank.richte...@gmail.com] Gesendet: Samstag, 5. Mai 2018 20:38 An: volkszaehler.org - users Betreff: Re: [vz-users] Schaltspiel- und Betriebsstundenzähler - Konzept gesucht Vermutlich ist das diese Zeile in der /etc/fstab: tmpfs /tmp tmpfs nodev,nosuid,mode=1777,size=30M 0 0 Kommentier' die mal aus (mit #), starte neu und schau nochmal was df -h dann sagt. Am 5. Mai 2018 um 20:33 schrieb Frank Richter <frank.richte...@gmail.com>: Dann hast du die Version vom Image, wo /tmp als Ramdisk eingerichtet ist. Vermutlich reicht dort der Platz nicht für so umfangreiche DB-Akrobatik. Vielleicht kann Udo kurz erklären, wie du /tmp zurück auf die Platte bekommst. Grüße Frank Am 5. Mai 2018 um 20:28 schrieb Christian Wulff <christianwu...@gmx.de>: Moin Frank, Das Systemlaufwerk ist eine 128GB SSD /tmp $ df -h Filesystem Size Used Avail Use% Mounted on /dev/root 118G 53G 59G 48% / devtmpfs459M 0 459M 0% /dev tmpfs 463M 0 463M 0% /dev/shm tmpfs 463M 6.3M 457M 2% /run tmpfs 5.0M 4.0K 5.0M 1% /run/lock tmpfs 463M 0 463M 0% /sys/fs/cgroup tmpfs30M 0 30M 0% /tmp /dev/mmcblk0p1 63M 21M 43M 33% /boot tmpfs93M 0 93M 0% /run/user/1000 Lieben Gruß, Chris Von: Frank Richter [mailto:frank.richte...@gmail.com] Gesendet: Samstag, 5. Mai 2018 20:23 An: volkszaehler.org - users Betreff: Re: [vz-users] Schaltspiel- und Betriebsstundenzähler - Konzept gesucht Wie voll ist dein /tmp (df - h)? Am 5. Mai 2018 um 20:16 schrieb Frank Richter <frank.richte...@gmail.com>: Kein Plan, hatte ich noch nie. Speicherkarte oder was besseres als Systemlaufwerk? Am 5. Mai 2018 um 20:13 schrieb Christian Wulff <christianwu...@gmx.de>: …..lief leider nicht s lange. Fehlermeldung: Performing 'full' aggregation on 'day' level. [Doctrine\DBAL\Exception\DriverException] An exception occurred while executing 'REPLACE INTO aggregate (channel_id, type, timestamp, value, count) SELECT channel_id, ? AS type, MAX(agg.timestamp) AS timestamp, COALESCE( SUM(agg.val_by_time) / (MAX(agg.timestamp) - MIN(agg.prev_timestamp)), AVG(agg.value)) AS value, COUNT(agg.value) AS count FROM ( S ELECT channel_id, timestamp, value, value * (timestamp - @prev_timestamp) AS val_by_time, GREATEST(0, IF(@prev_timestamp = NULL, NULL, @prev_timestamp)) AS prev_timestamp, @prev_timestamp := timestamp FROM data CROSS JOIN (SELECT @prev_timestamp := NULL) AS vars WHERE channel_id = ? AND timestamp < UNIX_TIMES TAMP(DATE_FORMAT(NOW(), "%Y-%m-%d")) * 1000 ORDER BY timestamp ) AS agg GROUP BY channel_id, YEAR(FROM_UNIXTIME(timestamp/1000)), DAYOFYEAR(FROM_UNIXTIME(t imestamp/1000))' with params [3, "15"]: SQLSTATE[HY000]: General error: 126 Incorrect key file for table '/tmp/#sql_49e_1.MYI'; try to repair it [Doctrine\DBAL\Driver\PDOException] SQLSTATE[HY000]: General error: 126 Incorrect key file for table '/tmp/#sql_49e_1.MYI'; try to repair it [PDOException] SQLSTATE[HY000]: General error: 126 Incorrect key file for table '/tmp/#sql_49e_1.MYI'; try to repair it run [-l|--level LEVEL] [-m|--mode MODE] [-p|--period PERIOD] [--] []... Was muss ich nun tun? Lieben Gruß, Chris Von: Christian Wulff [mailto:christianwu...@gmx.de] Gesendet: Samstag, 5. Mai 2018 20:04 An: 'volkszaehler.org - users' Betreff: Re: [vz-users] Schaltspiel- und Betriebsstundenzähler - Konzept gesucht Moin, alles klaro, läuft jetzt mit: php /var/www/volkszaehler.org/misc/tools/aggregate.php run -m full -l day -l hour Vielen Dank! ….mal sehen wie lange es dauert…. Lieben Gruß, Chris Von: Frank Richter [mailto:frank.richte...@gmail.com] Gesendet: Samstag, 5. Mai 2018 19:53 An: volkszaehler.org - users Betreff:
Re: [vz-users] Schaltspiel- und Betriebsstundenzähler - Konzept gesucht
Und was sagt aggregate.php jetzt? Christian Wulff <christianwu...@gmx.de> schrieb am Sa., 5. Mai 2018 22:51: > Dann sieht es so aus: > > > > df -h > > Filesystem Size Used Avail Use% Mounted on > > /dev/root 118G 53G 59G 48% / > > devtmpfs459M 0 459M 0% /dev > > tmpfs 463M 0 463M 0% /dev/shm > > tmpfs 463M 6.3M 457M 2% /run > > tmpfs 5.0M 4.0K 5.0M 1% /run/lock > > tmpfs 463M 0 463M 0% /sys/fs/cgroup > > /dev/mmcblk0p1 63M 21M 43M 33% /boot > > tmpfs93M 0 93M 0% /run/user/1000 > > > > > > Lieben Gruß, > > Chris > > > > *Von:* Frank Richter [mailto:frank.richte...@gmail.com] > *Gesendet:* Samstag, 5. Mai 2018 20:38 > *An:* volkszaehler.org - users > *Betreff:* Re: [vz-users] Schaltspiel- und Betriebsstundenzähler - > Konzept gesucht > > > > Vermutlich ist das diese Zeile in der /etc/fstab: > > > > tmpfs /tmp tmpfs nodev,nosuid,mode=1777,size=30M 0 0 > > > > Kommentier' die mal aus (mit #), starte neu und schau nochmal was df -h > dann sagt. > > > > > > > > > > Am 5. Mai 2018 um 20:33 schrieb Frank Richter <frank.richte...@gmail.com>: > > Dann hast du die Version vom Image, wo /tmp als Ramdisk eingerichtet ist. > Vermutlich reicht dort der Platz nicht für so umfangreiche DB-Akrobatik. > Vielleicht kann Udo kurz erklären, wie du /tmp zurück auf die Platte > bekommst. > > > > Grüße > > Frank > > > > Am 5. Mai 2018 um 20:28 schrieb Christian Wulff <christianwu...@gmx.de>: > > Moin Frank, > > > > Das Systemlaufwerk ist eine 128GB SSD > > > > /tmp $ df -h > > Filesystem Size Used Avail Use% Mounted on > > /dev/root 118G 53G 59G 48% / > > devtmpfs459M 0 459M 0% /dev > > tmpfs 463M 0 463M 0% /dev/shm > > tmpfs 463M 6.3M 457M 2% /run > > tmpfs 5.0M 4.0K 5.0M 1% /run/lock > > tmpfs 463M 0 463M 0% /sys/fs/cgroup > > tmpfs30M 0 30M 0% /tmp > > /dev/mmcblk0p1 63M 21M 43M 33% /boot > > tmpfs93M 0 93M 0% /run/user/1000 > > > > Lieben Gruß, > > Chris > > > > > > > > *Von:* Frank Richter [mailto:frank.richte...@gmail.com] > *Gesendet:* Samstag, 5. Mai 2018 20:23 > > > *An:* volkszaehler.org - users > *Betreff:* Re: [vz-users] Schaltspiel- und Betriebsstundenzähler - > Konzept gesucht > > > > Wie voll ist dein /tmp (df - h)? > > > > Am 5. Mai 2018 um 20:16 schrieb Frank Richter <frank.richte...@gmail.com>: > > Kein Plan, hatte ich noch nie. Speicherkarte oder was besseres als > Systemlaufwerk? > > > > Am 5. Mai 2018 um 20:13 schrieb Christian Wulff <christianwu...@gmx.de>: > > …..lief leider nicht s lange. Fehlermeldung: > > > > Performing 'full' aggregation on 'day' level. > > > > > > [Doctrine\DBAL\Exception\DriverException] > > An exception occurred while executing 'REPLACE INTO aggregate > (channel_id, type, timestamp, value, count) SELECT channel_id, ? AS type, > MAX(agg.timestamp) > > AS timestamp, COALESCE( SUM(agg.val_by_time) / (MAX(agg.timestamp) - > MIN(agg.prev_timestamp)), AVG(agg.value)) AS value, COUNT(agg.value) AS > count FROM ( S > > ELECT channel_id, timestamp, value, value * (timestamp - > @prev_timestamp) AS val_by_time, GREATEST(0, IF(@prev_timestamp = NULL, > NULL, @prev_timestamp)) AS > >prev_timestamp, @prev_timestamp := timestamp FROM data CROSS JOIN > (SELECT @prev_timestamp := NULL) AS vars WHERE channel_id = ? AND timestamp > < UNIX_TIMES > > TAMP(DATE_FORMAT(NOW(), "%Y-%m-%d")) * 1000 ORDER BY timestamp ) AS agg > GROUP BY channel_id, YEAR(FROM_UNIXTIME(timestamp/1000)), > DAYOFYEAR(FROM_UNIXTIME(t > > imestamp/1000))' with params [3, "15"]: > > SQLSTATE[HY000]: General error: 126 Incorrect key file for table > '/tmp/#sql_49e_1.MYI'; try to repair it > > > > > > > > [Doctrine\DBAL\Driver\PDOException] > > SQLSTATE[HY000]: General error: 126 Incorrect key file for table > '/tmp/#sql_49e_1.MYI'; try to repair it > > > > > > > > [PDOException] > > SQLSTATE[HY000]: General error: 126 Incorrect key file for table > '/tmp/#sql_49e_1.MYI'; try to repair it > > > > > > run [-l|--level LEVEL] [-m|--mode MODE] [-p|--period PERIOD] [--] > []... > > > > > > Was muss ich nun tun? > > > > Lieben Gruß, > > Chris >
Re: [vz-users] Schaltspiel- und Betriebsstundenzähler - Konzept gesucht
Dann sieht es so aus: df -h Filesystem Size Used Avail Use% Mounted on /dev/root 118G 53G 59G 48% / devtmpfs459M 0 459M 0% /dev tmpfs 463M 0 463M 0% /dev/shm tmpfs 463M 6.3M 457M 2% /run tmpfs 5.0M 4.0K 5.0M 1% /run/lock tmpfs 463M 0 463M 0% /sys/fs/cgroup /dev/mmcblk0p1 63M 21M 43M 33% /boot tmpfs93M 0 93M 0% /run/user/1000 Lieben Gruß, Chris Von: Frank Richter [mailto:frank.richte...@gmail.com] Gesendet: Samstag, 5. Mai 2018 20:38 An: volkszaehler.org - users Betreff: Re: [vz-users] Schaltspiel- und Betriebsstundenzähler - Konzept gesucht Vermutlich ist das diese Zeile in der /etc/fstab: tmpfs /tmp tmpfs nodev,nosuid,mode=1777,size=30M 0 0 Kommentier' die mal aus (mit #), starte neu und schau nochmal was df -h dann sagt. Am 5. Mai 2018 um 20:33 schrieb Frank Richter <frank.richte...@gmail.com>: Dann hast du die Version vom Image, wo /tmp als Ramdisk eingerichtet ist. Vermutlich reicht dort der Platz nicht für so umfangreiche DB-Akrobatik. Vielleicht kann Udo kurz erklären, wie du /tmp zurück auf die Platte bekommst. Grüße Frank Am 5. Mai 2018 um 20:28 schrieb Christian Wulff <christianwu...@gmx.de>: Moin Frank, Das Systemlaufwerk ist eine 128GB SSD /tmp $ df -h Filesystem Size Used Avail Use% Mounted on /dev/root 118G 53G 59G 48% / devtmpfs459M 0 459M 0% /dev tmpfs 463M 0 463M 0% /dev/shm tmpfs 463M 6.3M 457M 2% /run tmpfs 5.0M 4.0K 5.0M 1% /run/lock tmpfs 463M 0 463M 0% /sys/fs/cgroup tmpfs30M 0 30M 0% /tmp /dev/mmcblk0p1 63M 21M 43M 33% /boot tmpfs93M 0 93M 0% /run/user/1000 Lieben Gruß, Chris Von: Frank Richter [mailto:frank.richte...@gmail.com] Gesendet: Samstag, 5. Mai 2018 20:23 An: volkszaehler.org - users Betreff: Re: [vz-users] Schaltspiel- und Betriebsstundenzähler - Konzept gesucht Wie voll ist dein /tmp (df - h)? Am 5. Mai 2018 um 20:16 schrieb Frank Richter <frank.richte...@gmail.com>: Kein Plan, hatte ich noch nie. Speicherkarte oder was besseres als Systemlaufwerk? Am 5. Mai 2018 um 20:13 schrieb Christian Wulff <christianwu...@gmx.de>: …..lief leider nicht s lange. Fehlermeldung: Performing 'full' aggregation on 'day' level. [Doctrine\DBAL\Exception\DriverException] An exception occurred while executing 'REPLACE INTO aggregate (channel_id, type, timestamp, value, count) SELECT channel_id, ? AS type, MAX(agg.timestamp) AS timestamp, COALESCE( SUM(agg.val_by_time) / (MAX(agg.timestamp) - MIN(agg.prev_timestamp)), AVG(agg.value)) AS value, COUNT(agg.value) AS count FROM ( S ELECT channel_id, timestamp, value, value * (timestamp - @prev_timestamp) AS val_by_time, GREATEST(0, IF(@prev_timestamp = NULL, NULL, @prev_timestamp)) AS prev_timestamp, @prev_timestamp := timestamp FROM data CROSS JOIN (SELECT @prev_timestamp := NULL) AS vars WHERE channel_id = ? AND timestamp < UNIX_TIMES TAMP(DATE_FORMAT(NOW(), "%Y-%m-%d")) * 1000 ORDER BY timestamp ) AS agg GROUP BY channel_id, YEAR(FROM_UNIXTIME(timestamp/1000)), DAYOFYEAR(FROM_UNIXTIME(t imestamp/1000))' with params [3, "15"]: SQLSTATE[HY000]: General error: 126 Incorrect key file for table '/tmp/#sql_49e_1.MYI'; try to repair it [Doctrine\DBAL\Driver\PDOException] SQLSTATE[HY000]: General error: 126 Incorrect key file for table '/tmp/#sql_49e_1.MYI'; try to repair it [PDOException] SQLSTATE[HY000]: General error: 126 Incorrect key file for table '/tmp/#sql_49e_1.MYI'; try to repair it run [-l|--level LEVEL] [-m|--mode MODE] [-p|--period PERIOD] [--] []... Was muss ich nun tun? Lieben Gruß, Chris Von: Christian Wulff [mailto:christianwu...@gmx.de] Gesendet: Samstag, 5. Mai 2018 20:04 An: 'volkszaehler.org - users' Betreff: Re: [vz-users] Schaltspiel- und Betriebsstundenzähler - Konzept gesucht Moin, alles klaro, läuft jetzt mit: php /var/www/volkszaehler.org/misc/tools/aggregate.php run -m full -l day -l hour Vielen Dank! ….mal sehen wie lange es dauert…. Lieben Gruß, Chris Von: Frank Richter [mailto:frank.richte...@gmail.com] Gesendet: Samstag, 5. Mai 2018 19:53 An: volkszaehler.org - users Betreff: Re: [vz-users] Schaltspiel- und Betriebsstundenzähler - Konzept gesucht Frank Richter <frank.richte...@gmail.com> Und lass -l minute erstmal weg, das bringt nicht viel und dauert ewig. 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.
Re: [vz-users] Schaltspiel- und Betriebsstundenzähler - Konzept gesucht
Vermutlich ist das diese Zeile in der /etc/fstab: tmpfs /tmp tmpfs nodev,nosuid,mode=1777,size=30M 0 0 Kommentier' die mal aus (mit #), starte neu und schau nochmal was df -h dann sagt. Am 5. Mai 2018 um 20:33 schrieb Frank Richter <frank.richte...@gmail.com>: > Dann hast du die Version vom Image, wo /tmp als Ramdisk eingerichtet ist. > Vermutlich reicht dort der Platz nicht für so umfangreiche DB-Akrobatik. > Vielleicht kann Udo kurz erklären, wie du /tmp zurück auf die Platte > bekommst. > > Grüße > Frank > > Am 5. Mai 2018 um 20:28 schrieb Christian Wulff <christianwu...@gmx.de>: > >> Moin Frank, >> >> >> >> Das Systemlaufwerk ist eine 128GB SSD >> >> >> >> /tmp $ df -h >> >> Filesystem Size Used Avail Use% Mounted on >> >> /dev/root 118G 53G 59G 48% / >> >> devtmpfs459M 0 459M 0% /dev >> >> tmpfs 463M 0 463M 0% /dev/shm >> >> tmpfs 463M 6.3M 457M 2% /run >> >> tmpfs 5.0M 4.0K 5.0M 1% /run/lock >> >> tmpfs 463M 0 463M 0% /sys/fs/cgroup >> >> tmpfs30M 0 30M 0% /tmp >> >> /dev/mmcblk0p1 63M 21M 43M 33% /boot >> >> tmpfs93M 0 93M 0% /run/user/1000 >> >> >> >> Lieben Gruß, >> >> Chris >> >> >> >> >> >> >> >> *Von:* Frank Richter [mailto:frank.richte...@gmail.com] >> *Gesendet:* Samstag, 5. Mai 2018 20:23 >> >> *An:* volkszaehler.org - users >> *Betreff:* Re: [vz-users] Schaltspiel- und Betriebsstundenzähler - >> Konzept gesucht >> >> >> >> Wie voll ist dein /tmp (df - h)? >> >> >> >> Am 5. Mai 2018 um 20:16 schrieb Frank Richter <frank.richte...@gmail.com >> >: >> >> Kein Plan, hatte ich noch nie. Speicherkarte oder was besseres als >> Systemlaufwerk? >> >> >> >> Am 5. Mai 2018 um 20:13 schrieb Christian Wulff <christianwu...@gmx.de>: >> >> …..lief leider nicht s lange. Fehlermeldung: >> >> >> >> Performing 'full' aggregation on 'day' level. >> >> >> >> >> >> [Doctrine\DBAL\Exception\DriverException] >> >> An exception occurred while executing 'REPLACE INTO aggregate >> (channel_id, type, timestamp, value, count) SELECT channel_id, ? AS type, >> MAX(agg.timestamp) >> >> AS timestamp, COALESCE( SUM(agg.val_by_time) / (MAX(agg.timestamp) - >> MIN(agg.prev_timestamp)), AVG(agg.value)) AS value, COUNT(agg.value) AS >> count FROM ( S >> >> ELECT channel_id, timestamp, value, value * (timestamp - >> @prev_timestamp) AS val_by_time, GREATEST(0, IF(@prev_timestamp = NULL, >> NULL, @prev_timestamp)) AS >> >>prev_timestamp, @prev_timestamp := timestamp FROM data CROSS JOIN >> (SELECT @prev_timestamp := NULL) AS vars WHERE channel_id = ? AND timestamp >> < UNIX_TIMES >> >> TAMP(DATE_FORMAT(NOW(), "%Y-%m-%d")) * 1000 ORDER BY timestamp ) AS agg >> GROUP BY channel_id, YEAR(FROM_UNIXTIME(timestamp/1000)), >> DAYOFYEAR(FROM_UNIXTIME(t >> >> imestamp/1000))' with params [3, "15"]: >> >> SQLSTATE[HY000]: General error: 126 Incorrect key file for table >> '/tmp/#sql_49e_1.MYI'; try to repair it >> >> >> >> >> >> >> >> [Doctrine\DBAL\Driver\PDOException] >> >> SQLSTATE[HY000]: General error: 126 Incorrect key file for table >> '/tmp/#sql_49e_1.MYI'; try to repair it >> >> >> >> >> >> >> >> [PDOException] >> >> SQLSTATE[HY000]: General error: 126 Incorrect key file for table >> '/tmp/#sql_49e_1.MYI'; try to repair it >> >> >> >> >> >> run [-l|--level LEVEL] [-m|--mode MODE] [-p|--period PERIOD] [--] >> []... >> >> >> >> >> >> Was muss ich nun tun? >> >> >> >> Lieben Gruß, >> >> Chris >> >> >> >> >> >> >> >> *Von:* Christian Wulff [mailto:christianwu...@gmx.de] >> *Gesendet:* Samstag, 5. Mai 2018 20:04 >> >> >> *An:* 'volkszaehler.org - users' >> *Betreff:* Re: [vz-users] Schaltspiel- und Betriebsstundenzähler - >> Konzept gesucht >> >> >> >> Moin, >> >> >> >> alles klaro, läuft jetzt mit: >> >> >> >> php /var/www/volkszaehler.org/misc/tools/aggregate.php run -m full -l >> day -l
Re: [vz-users] Schaltspiel- und Betriebsstundenzähler - Konzept gesucht
Dann hast du die Version vom Image, wo /tmp als Ramdisk eingerichtet ist. Vermutlich reicht dort der Platz nicht für so umfangreiche DB-Akrobatik. Vielleicht kann Udo kurz erklären, wie du /tmp zurück auf die Platte bekommst. Grüße Frank Am 5. Mai 2018 um 20:28 schrieb Christian Wulff <christianwu...@gmx.de>: > Moin Frank, > > > > Das Systemlaufwerk ist eine 128GB SSD > > > > /tmp $ df -h > > Filesystem Size Used Avail Use% Mounted on > > /dev/root 118G 53G 59G 48% / > > devtmpfs459M 0 459M 0% /dev > > tmpfs 463M 0 463M 0% /dev/shm > > tmpfs 463M 6.3M 457M 2% /run > > tmpfs 5.0M 4.0K 5.0M 1% /run/lock > > tmpfs 463M 0 463M 0% /sys/fs/cgroup > > tmpfs30M 0 30M 0% /tmp > > /dev/mmcblk0p1 63M 21M 43M 33% /boot > > tmpfs93M 0 93M 0% /run/user/1000 > > > > Lieben Gruß, > > Chris > > > > > > > > *Von:* Frank Richter [mailto:frank.richte...@gmail.com] > *Gesendet:* Samstag, 5. Mai 2018 20:23 > > *An:* volkszaehler.org - users > *Betreff:* Re: [vz-users] Schaltspiel- und Betriebsstundenzähler - > Konzept gesucht > > > > Wie voll ist dein /tmp (df - h)? > > > > Am 5. Mai 2018 um 20:16 schrieb Frank Richter <frank.richte...@gmail.com>: > > Kein Plan, hatte ich noch nie. Speicherkarte oder was besseres als > Systemlaufwerk? > > > > Am 5. Mai 2018 um 20:13 schrieb Christian Wulff <christianwu...@gmx.de>: > > …..lief leider nicht s lange. Fehlermeldung: > > > > Performing 'full' aggregation on 'day' level. > > > > > > [Doctrine\DBAL\Exception\DriverException] > > An exception occurred while executing 'REPLACE INTO aggregate > (channel_id, type, timestamp, value, count) SELECT channel_id, ? AS type, > MAX(agg.timestamp) > > AS timestamp, COALESCE( SUM(agg.val_by_time) / (MAX(agg.timestamp) - > MIN(agg.prev_timestamp)), AVG(agg.value)) AS value, COUNT(agg.value) AS > count FROM ( S > > ELECT channel_id, timestamp, value, value * (timestamp - > @prev_timestamp) AS val_by_time, GREATEST(0, IF(@prev_timestamp = NULL, > NULL, @prev_timestamp)) AS > >prev_timestamp, @prev_timestamp := timestamp FROM data CROSS JOIN > (SELECT @prev_timestamp := NULL) AS vars WHERE channel_id = ? AND timestamp > < UNIX_TIMES > > TAMP(DATE_FORMAT(NOW(), "%Y-%m-%d")) * 1000 ORDER BY timestamp ) AS agg > GROUP BY channel_id, YEAR(FROM_UNIXTIME(timestamp/1000)), > DAYOFYEAR(FROM_UNIXTIME(t > > imestamp/1000))' with params [3, "15"]: > > SQLSTATE[HY000]: General error: 126 Incorrect key file for table > '/tmp/#sql_49e_1.MYI'; try to repair it > > > > > > > > [Doctrine\DBAL\Driver\PDOException] > > SQLSTATE[HY000]: General error: 126 Incorrect key file for table > '/tmp/#sql_49e_1.MYI'; try to repair it > > > > > > > > [PDOException] > > SQLSTATE[HY000]: General error: 126 Incorrect key file for table > '/tmp/#sql_49e_1.MYI'; try to repair it > > > > > > run [-l|--level LEVEL] [-m|--mode MODE] [-p|--period PERIOD] [--] > []... > > > > > > Was muss ich nun tun? > > > > Lieben Gruß, > > Chris > > > > > > > > *Von:* Christian Wulff [mailto:christianwu...@gmx.de] > *Gesendet:* Samstag, 5. Mai 2018 20:04 > > > *An:* 'volkszaehler.org - users' > *Betreff:* Re: [vz-users] Schaltspiel- und Betriebsstundenzähler - > Konzept gesucht > > > > Moin, > > > > alles klaro, läuft jetzt mit: > > > > php /var/www/volkszaehler.org/misc/tools/aggregate.php run -m full -l day > -l hour > > > > Vielen Dank! > > > > ….mal sehen wie lange es dauert…. > > > > Lieben Gruß, > > Chris > > > > *Von:* Frank Richter [mailto:frank.richte...@gmail.com] > *Gesendet:* Samstag, 5. Mai 2018 19:53 > *An:* volkszaehler.org - users > *Betreff:* Re: [vz-users] Schaltspiel- und Betriebsstundenzähler - > Konzept gesucht > > Frank Richter <frank.richte...@gmail.com> > > Und lass -l minute erstmal weg, das bringt nicht viel und dauert ewig. > > > > 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,&quo
Re: [vz-users] Schaltspiel- und Betriebsstundenzähler - Konzept gesucht
Moin Frank, Das Systemlaufwerk ist eine 128GB SSD /tmp $ df -h Filesystem Size Used Avail Use% Mounted on /dev/root 118G 53G 59G 48% / devtmpfs459M 0 459M 0% /dev tmpfs 463M 0 463M 0% /dev/shm tmpfs 463M 6.3M 457M 2% /run tmpfs 5.0M 4.0K 5.0M 1% /run/lock tmpfs 463M 0 463M 0% /sys/fs/cgroup tmpfs30M 0 30M 0% /tmp /dev/mmcblk0p1 63M 21M 43M 33% /boot tmpfs93M 0 93M 0% /run/user/1000 Lieben Gruß, Chris Von: Frank Richter [mailto:frank.richte...@gmail.com] Gesendet: Samstag, 5. Mai 2018 20:23 An: volkszaehler.org - users Betreff: Re: [vz-users] Schaltspiel- und Betriebsstundenzähler - Konzept gesucht Wie voll ist dein /tmp (df - h)? Am 5. Mai 2018 um 20:16 schrieb Frank Richter <frank.richte...@gmail.com>: Kein Plan, hatte ich noch nie. Speicherkarte oder was besseres als Systemlaufwerk? Am 5. Mai 2018 um 20:13 schrieb Christian Wulff <christianwu...@gmx.de>: …..lief leider nicht s lange. Fehlermeldung: Performing 'full' aggregation on 'day' level. [Doctrine\DBAL\Exception\DriverException] An exception occurred while executing 'REPLACE INTO aggregate (channel_id, type, timestamp, value, count) SELECT channel_id, ? AS type, MAX(agg.timestamp) AS timestamp, COALESCE( SUM(agg.val_by_time) / (MAX(agg.timestamp) - MIN(agg.prev_timestamp)), AVG(agg.value)) AS value, COUNT(agg.value) AS count FROM ( S ELECT channel_id, timestamp, value, value * (timestamp - @prev_timestamp) AS val_by_time, GREATEST(0, IF(@prev_timestamp = NULL, NULL, @prev_timestamp)) AS prev_timestamp, @prev_timestamp := timestamp FROM data CROSS JOIN (SELECT @prev_timestamp := NULL) AS vars WHERE channel_id = ? AND timestamp < UNIX_TIMES TAMP(DATE_FORMAT(NOW(), "%Y-%m-%d")) * 1000 ORDER BY timestamp ) AS agg GROUP BY channel_id, YEAR(FROM_UNIXTIME(timestamp/1000)), DAYOFYEAR(FROM_UNIXTIME(t imestamp/1000))' with params [3, "15"]: SQLSTATE[HY000]: General error: 126 Incorrect key file for table '/tmp/#sql_49e_1.MYI'; try to repair it [Doctrine\DBAL\Driver\PDOException] SQLSTATE[HY000]: General error: 126 Incorrect key file for table '/tmp/#sql_49e_1.MYI'; try to repair it [PDOException] SQLSTATE[HY000]: General error: 126 Incorrect key file for table '/tmp/#sql_49e_1.MYI'; try to repair it run [-l|--level LEVEL] [-m|--mode MODE] [-p|--period PERIOD] [--] []... Was muss ich nun tun? Lieben Gruß, Chris Von: Christian Wulff [mailto:christianwu...@gmx.de] Gesendet: Samstag, 5. Mai 2018 20:04 An: 'volkszaehler.org - users' Betreff: Re: [vz-users] Schaltspiel- und Betriebsstundenzähler - Konzept gesucht Moin, alles klaro, läuft jetzt mit: php /var/www/volkszaehler.org/misc/tools/aggregate.php run -m full -l day -l hour Vielen Dank! ….mal sehen wie lange es dauert…. Lieben Gruß, Chris Von: Frank Richter [mailto:frank.richte...@gmail.com] Gesendet: Samstag, 5. Mai 2018 19:53 An: volkszaehler.org - users Betreff: Re: [vz-users] Schaltspiel- und Betriebsstundenzähler - Konzept gesucht Frank Richter <frank.richte...@gmail.com> Und lass -l minute erstmal weg, das bringt nicht viel und dauert ewig. 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ähle
Re: [vz-users] Schaltspiel- und Betriebsstundenzähler - Konzept gesucht
Wie voll ist dein /tmp (df - h)? Am 5. Mai 2018 um 20:16 schrieb Frank Richter <frank.richte...@gmail.com>: > Kein Plan, hatte ich noch nie. Speicherkarte oder was besseres als > Systemlaufwerk? > > Am 5. Mai 2018 um 20:13 schrieb Christian Wulff <christianwu...@gmx.de>: > >> …..lief leider nicht s lange. Fehlermeldung: >> >> >> >> Performing 'full' aggregation on 'day' level. >> >> >> >> >> >> [Doctrine\DBAL\Exception\DriverException] >> >> An exception occurred while executing 'REPLACE INTO aggregate >> (channel_id, type, timestamp, value, count) SELECT channel_id, ? AS type, >> MAX(agg.timestamp) >> >> AS timestamp, COALESCE( SUM(agg.val_by_time) / (MAX(agg.timestamp) - >> MIN(agg.prev_timestamp)), AVG(agg.value)) AS value, COUNT(agg.value) AS >> count FROM ( S >> >> ELECT channel_id, timestamp, value, value * (timestamp - >> @prev_timestamp) AS val_by_time, GREATEST(0, IF(@prev_timestamp = NULL, >> NULL, @prev_timestamp)) AS >> >>prev_timestamp, @prev_timestamp := timestamp FROM data CROSS JOIN >> (SELECT @prev_timestamp := NULL) AS vars WHERE channel_id = ? AND timestamp >> < UNIX_TIMES >> >> TAMP(DATE_FORMAT(NOW(), "%Y-%m-%d")) * 1000 ORDER BY timestamp ) AS agg >> GROUP BY channel_id, YEAR(FROM_UNIXTIME(timestamp/1000)), >> DAYOFYEAR(FROM_UNIXTIME(t >> >> imestamp/1000))' with params [3, "15"]: >> >> SQLSTATE[HY000]: General error: 126 Incorrect key file for table >> '/tmp/#sql_49e_1.MYI'; try to repair it >> >> >> >> >> >> >> >> [Doctrine\DBAL\Driver\PDOException] >> >> SQLSTATE[HY000]: General error: 126 Incorrect key file for table >> '/tmp/#sql_49e_1.MYI'; try to repair it >> >> >> >> >> >> >> >> [PDOException] >> >> SQLSTATE[HY000]: General error: 126 Incorrect key file for table >> '/tmp/#sql_49e_1.MYI'; try to repair it >> >> >> >> >> >> run [-l|--level LEVEL] [-m|--mode MODE] [-p|--period PERIOD] [--] >> []... >> >> >> >> >> >> Was muss ich nun tun? >> >> >> >> Lieben Gruß, >> >> Chris >> >> >> >> >> >> >> >> *Von:* Christian Wulff [mailto:christianwu...@gmx.de] >> *Gesendet:* Samstag, 5. Mai 2018 20:04 >> >> *An:* 'volkszaehler.org - users' >> *Betreff:* Re: [vz-users] Schaltspiel- und Betriebsstundenzähler - >> Konzept gesucht >> >> >> >> Moin, >> >> >> >> alles klaro, läuft jetzt mit: >> >> >> >> php /var/www/volkszaehler.org/misc/tools/aggregate.php run -m full -l >> day -l hour >> >> >> >> Vielen Dank! >> >> >> >> ….mal sehen wie lange es dauert…. >> >> >> >> Lieben Gruß, >> >> Chris >> >> >> >> *Von:* Frank Richter [mailto:frank.richte...@gmail.com] >> *Gesendet:* Samstag, 5. Mai 2018 19:53 >> *An:* volkszaehler.org - users >> *Betreff:* Re: [vz-users] Schaltspiel- und Betriebsstundenzähler - >> Konzept gesucht >> >> Frank Richter <frank.richte...@gmail.com> >> >> Und lass -l minute erstmal weg, das bringt nicht viel und dauert ewig. >> >> >> >> 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_enable >> d":1,"aggregation_rows":0,"aggregation_size":49152,"aggre >> gation_ratio":0}}} >> >> >> >> Soweit so gut. >> >> >> >> Allerdings kann ich die Aggregation nicht s
Re: [vz-users] Schaltspiel- und Betriebsstundenzähler - Konzept gesucht
Kein Plan, hatte ich noch nie. Speicherkarte oder was besseres als Systemlaufwerk? Am 5. Mai 2018 um 20:13 schrieb Christian Wulff <christianwu...@gmx.de>: > …..lief leider nicht s lange. Fehlermeldung: > > > > Performing 'full' aggregation on 'day' level. > > > > > > [Doctrine\DBAL\Exception\DriverException] > > An exception occurred while executing 'REPLACE INTO aggregate > (channel_id, type, timestamp, value, count) SELECT channel_id, ? AS type, > MAX(agg.timestamp) > > AS timestamp, COALESCE( SUM(agg.val_by_time) / (MAX(agg.timestamp) - > MIN(agg.prev_timestamp)), AVG(agg.value)) AS value, COUNT(agg.value) AS > count FROM ( S > > ELECT channel_id, timestamp, value, value * (timestamp - > @prev_timestamp) AS val_by_time, GREATEST(0, IF(@prev_timestamp = NULL, > NULL, @prev_timestamp)) AS > >prev_timestamp, @prev_timestamp := timestamp FROM data CROSS JOIN > (SELECT @prev_timestamp := NULL) AS vars WHERE channel_id = ? AND timestamp > < UNIX_TIMES > > TAMP(DATE_FORMAT(NOW(), "%Y-%m-%d")) * 1000 ORDER BY timestamp ) AS agg > GROUP BY channel_id, YEAR(FROM_UNIXTIME(timestamp/1000)), > DAYOFYEAR(FROM_UNIXTIME(t > > imestamp/1000))' with params [3, "15"]: > > SQLSTATE[HY000]: General error: 126 Incorrect key file for table > '/tmp/#sql_49e_1.MYI'; try to repair it > > > > > > > > [Doctrine\DBAL\Driver\PDOException] > > SQLSTATE[HY000]: General error: 126 Incorrect key file for table > '/tmp/#sql_49e_1.MYI'; try to repair it > > > > > > > > [PDOException] > > SQLSTATE[HY000]: General error: 126 Incorrect key file for table > '/tmp/#sql_49e_1.MYI'; try to repair it > > > > > > run [-l|--level LEVEL] [-m|--mode MODE] [-p|--period PERIOD] [--] > []... > > > > > > Was muss ich nun tun? > > > > Lieben Gruß, > > Chris > > > > > > > > *Von:* Christian Wulff [mailto:christianwu...@gmx.de] > *Gesendet:* Samstag, 5. Mai 2018 20:04 > > *An:* 'volkszaehler.org - users' > *Betreff:* Re: [vz-users] Schaltspiel- und Betriebsstundenzähler - > Konzept gesucht > > > > Moin, > > > > alles klaro, läuft jetzt mit: > > > > php /var/www/volkszaehler.org/misc/tools/aggregate.php run -m full -l day > -l hour > > > > Vielen Dank! > > > > ….mal sehen wie lange es dauert…. > > > > Lieben Gruß, > > Chris > > > > *Von:* Frank Richter [mailto:frank.richte...@gmail.com] > *Gesendet:* Samstag, 5. Mai 2018 19:53 > *An:* volkszaehler.org - users > *Betreff:* Re: [vz-users] Schaltspiel- und Betriebsstundenzähler - > Konzept gesucht > > Frank Richter <frank.richte...@gmail.com> > > Und lass -l minute erstmal weg, das bringt nicht viel und dauert ewig. > > > > 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äh
Re: [vz-users] Schaltspiel- und Betriebsstundenzähler - Konzept gesucht
Moin, alles klaro, läuft jetzt mit: php /var/www/volkszaehler.org/misc/tools/aggregate.php run -m full -l day -l hour Vielen Dank! ….mal sehen wie lange es dauert…. Lieben Gruß, Chris Von: Frank Richter [mailto:frank.richte...@gmail.com] Gesendet: Samstag, 5. Mai 2018 19:53 An: volkszaehler.org - users Betreff: Re: [vz-users] Schaltspiel- und Betriebsstundenzähler - Konzept gesucht Frank Richter <frank.richte...@gmail.com> Und lass -l minute erstmal weg, das bringt nicht viel und dauert ewig. 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 s 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 gepim
Re: [vz-users] Schaltspiel- und Betriebsstundenzähler - Konzept gesucht
Und lass -l minute erstmal weg, das bringt nicht viel und dauert ewig. 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 s 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 h
Re: [vz-users] Schaltspiel- und Betriebsstundenzähler - Konzept gesucht
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 s 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 ic
Re: [vz-users] Schaltspiel- und Betriebsstundenzähler - Konzept gesucht
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 s 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/x--UUID--x.json?from=now Die Antwort ist ein JSON mit dem letzten timestamp und dem letzten Wert. Nun nochmal zu meinen Fragestellu
Re: [vz-users] Schaltspiel- und Betriebsstundenzähler - Konzept gesucht
Hallo Christian, Am 03.05.2018 um 23:15 schrieb Christian Wulff: > Was will ich eigentlich, bzw. was ist sinnvoll?! > > > > Ein Licht geht an und nach ein paar Minuten wieder aus. > > Was interessiert mich daran, und was soll dargestellt werden: > > > > 1. Wann ging das Licht an > > 2. Wann ging das Licht wieder aus > > 3. Das wievielte Schaltspiel ist dies > > 4. Wie viele Betriebsstunden (Betriebssekunden) hat die Lampe > bereits gelaufen > > > > Zu 1. und 2. stell ich mir die Darstellung wie ein Rechtecksignal vor. > > Bei 1. steigt die Flanke bei einem timestamp von 0 auf 1. > > Bei 2. fällt die Flanke bei einem timestamp von 1 auf 0. > > Bei 3. wird bei der steigenden Flanke von 1. ein Schaltspiel hinzuaddiert. > > 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. > > > > Somit muss man nur 1x bei Schaltspielbeginn und 1x bei Schaltspielende > Daten an die Middleware schicken. > > Das hört sich für mich nach dem richtigen Plan an. > > > 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. Ich würd's so versuchen (immer noch "Trockenschwimmkurs" ;-): 1. Daten auf dem ständig laufenden Server erzeugen 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. (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.) Die Datei enthält entweder 1 oder 0, also nicht hinten anhängen, sondern überschreiben. Ich meine zumindest, so funktioniert das "file-meter". 2. Datei mit vzlogger überwachen 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. Dieses Meter befeuert 2 channels: - 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. - Den Betriebsstundensensor (siehe Franks Antwort vom 3.5 1:45h) Die Kanäle hast Du vorher im Frontend angelegt. Ü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 https://github.com/volkszaehler/volkszaehler.org/blob/master/lib/Definition/EntityDefinition.json Viel Erfolg! Rupert smime.p7s Description: S/MIME Cryptographic Signature
Re: [vz-users] Schaltspiel- und Betriebsstundenzähler - Konzept gesucht
Danke, Frank! Am 03.05.2018 um 21:54 schrieb Frank Richter: > > Denn ich weiß nicht, wie man den letzten *Zählerstand* aus der MW > rausbekommt. > > > versuch's mal mit =raw > Again what learnt! Es lohnt sich doch, die Wiki-Seiten bis zum Ende durchzulesen :-) Schönen Tag Rupert smime.p7s Description: S/MIME Cryptographic Signature
Re: [vz-users] Schaltspiel- und Betriebsstundenzähler - Konzept gesucht
Hallo, am Donnerstag, 3. Mai 2018 um 22:20 hat Christian Wulff geschrieben: > Die Aggregation hab ich noch nicht sicher verstanden. > Wenn ich es richtig verstehe, werden keine Daten gelöscht oder > ausgedünnt, sondern nur zusätzliche Daten erzeugt, was nur Zeit und > Speicherplatz kostet. Platz: Ja, wobei wir da von /Cent Beträgen sprechen. Zeit: Im Gegenteil. Bei Bedarf greifen wir nicht nicht auf die Originalen, sondern die zusammengfeassten Daten zurück was wesentlich schnell geht. > Was passiert wenn die Initialaggregation unterbrochen wird? Kein Problem. Die Aggregation läuft ja nicht ständig sondern wird immer wieder aufgerufen. Du kannst auch mal 5 Tage gar nix aggregieren und dann alles auf einmal. Der Perfomancevorteil für die 5 Tage ist halt dahin. > Stromausfall oder plötzlich anspringendes Backup aus einem cronjob, > das die Services vom Volkszähler stoppt? Da Aggregation seinerseits als cronjob definerit ist seh ich das Problem nicht. Wenn du die DB abstellst um einen mysqldump zu ziehen solltest du das halt schon entsprechend planen das sich nix in die Quere kommt. > Ist das ein Problem, oder kann man die Aggregation später einfach > nochmal neu starten und die läuft dann dort weiter wo sie unterbrochen wurde? Sie nimmt die Arbeit immer da auf wo sie zuletzt beendet wurde. Wenns die Agg mal doch verhageln sollte ist es aber auch kein Problem sie zu löschen und einfach neu aufzusetzen. Ich mach mein inkrementelles Backup z.B. ganz ohne Aggregation. > Was ist das mit dem day / hour und minute? Verschiedene Tabellen für Zusammenfassunge in Unterschiedlicher Auflösung. > Ich stelle mir das so vor: Die Rohdaten werden im Sekundentakt in der > Datenbank gespeichert. Kommt auf deine Konfig an. > Schaut man sich jetzt die Daten im Frontend voll hineingezoomt an, > sieht man die Werte mit dem Sekundenintervall. > Zoomt man jetzt heraus, so kommt irgendwann der Punkt an dem so > viele Sekundenintervalle dargestellt werden sollen die man > garnichtmehr auf einer Pixelbreite darstellen kann. Dann ist dies > auch sinnlos und man kann auf die aggregierten Daten zugreifen. Genau. Wenn du zB. über Frontend ein ganzes Jahr aufrufts werden hour, minute nicht abgefragt weil wegen der grafischen Auflösung nicht relevant. Nur die Zet für die es keine Agg gibt wird auf die Originaldaten zurückgegriffen. > Die > aggregierten Daten sind dann ein Mittelwert aus den Sekundenintervallen. Hängt von der Art der Daten zusammen. Für Impulse wäre es eine Summe. mfg Daniel
Re: [vz-users] Schaltspiel- und Betriebsstundenzähler - Konzept gesucht
Moin Rupert, vielen Dank auch für deinen Input. Aktuell bin ich noch in der „wie-könnte-man-sowas-anstellen“-Phase. 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. Ich sehe zwei Szenarien: 1. Entweder dumme S0 Impulse, so wie bei meiner Wasseruhr 2. Oder eben Zählerstände. Irgendwie gefallen mir die Zählerstände bis jetzt besser, auch wenn diese aufwendiger zu realisieren sind. Bei den Zählerständen sehe ich wieder zwei Varianten: 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. 2.b) Oder die Zählerstände selber zwischenspeichern und diese dann nur an die Middleware/Datenbank senden. 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. Beim Betriebsstundenzähler denke ich funktioniert das. Bei Schaltspielzähler weiß ich noch nicht wie ich das anstelle, bzw. hab ich da noch keine Idee wie man das im Frontend darstellt 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. 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? Ich merke schon, das ist gar nicht mal so einfach wie ich mir das vorgestellt habe. Was will ich eigentlich, bzw. was ist sinnvoll?! Ein Licht geht an und nach ein paar Minuten wieder aus. Was interessiert mich daran, und was soll dargestellt werden: 1. Wann ging das Licht an 2. Wann ging das Licht wieder aus 3. Das wievielte Schaltspiel ist dies 4. Wie viele Betriebsstunden (Betriebssekunden) hat die Lampe bereits gelaufen Zu 1. und 2. stell ich mir die Darstellung wie ein Rechtecksignal vor. Bei 1. steigt die Flanke bei einem timestamp von 0 auf 1. Bei 2. fällt die Flanke bei einem timestamp von 1 auf 0. Bei 3. wird bei der steigenden Flanke von 1. ein Schaltspiel hinzuaddiert. 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. Somit muss man nur 1x bei Schaltspielbeginn und 1x bei Schaltspielende Daten an die Middleware schicken. Das hört sich für mich nach dem richtigen Plan an. Oder kann man sich 1., 2. und 3. sogar sparen und diese Information aus 4. ableiten? Liebe Grüße, Chris Von: Rupert Schöttler [mailto:rupert.schoett...@gmx.de] Gesendet: Donnerstag, 3. Mai 2018 20:17 An: volkszaehler-users@demo.volkszaehler.org Betreff: Re: [vz-users] Schaltspiel- und Betriebsstundenzähler - Konzept gesucht Hallo Christian, 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, ohne das Standard-VZ-Konzept zu verbiegen: M.E. musst Du außerhalb des VZ Zählerstände selbst bilden. 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 http://server/middleware.php/data/5f___c5.json?from=01-01-2010 <http://server/middleware.php/data/5f___c5.json?from=01-01-2010=now=1> =now=1 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 https://wiki.volkszaehler.org/hardware/channels/meters/water/wasserzaehler_ohne_s0 -- 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? Aber zurück zu meiner Idee für Deinen Ansatz: Du musst Zählerstände selbst bilden, außerhalb des Volkszähle
Re: [vz-users] Schaltspiel- und Betriebsstundenzähler - Konzept gesucht
Am 3. Mai 2018 um 22:53 schrieb Christian Wulff: > > Gibt es denn eine Indizierung der Datenbank? > Klaro!
Re: [vz-users] Schaltspiel- und Betriebsstundenzähler - Konzept gesucht
Okay, Gibt es denn eine Indizierung der Datenbank? Das würde die Datenbank ja auch performant machen. Lieben Gruß, Christian Von: Frank Richter [mailto:frank.richte...@gmail.com] Gesendet: Donnerstag, 3. Mai 2018 22:37 An: volkszaehler.org - users Betreff: Re: [vz-users] Schaltspiel- und Betriebsstundenzähler - Konzept gesucht Ne, eine zusätzliche Tabelle mit zusammengefassten Daten. Gruß Frank Christian Wulff <christianwu...@gmx.de> schrieb am Do., 3. Mai 2018 22:30: Moin, kurze Zwischenfrage: Ist die Aggregation sowas wie eine Indizierung? Lieben Gruß, Christian 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 s 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/x--UUID--x.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 d
Re: [vz-users] Schaltspiel- und Betriebsstundenzähler - Konzept gesucht
Ne, eine zusätzliche Tabelle mit zusammengefassten Daten. Gruß Frank Christian Wulff <christianwu...@gmx.de> schrieb am Do., 3. Mai 2018 22:30: > Moin, kurze Zwischenfrage: > > > > Ist die Aggregation sowas wie eine Indizierung? > > > > Lieben Gruß, > > Christian > > > > *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 s 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/x--UUID--x.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 >
Re: [vz-users] Schaltspiel- und Betriebsstundenzähler - Konzept gesucht
Moin, kurze Zwischenfrage: Ist die Aggregation sowas wie eine Indizierung? Lieben Gruß, Christian 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 s 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/x--UUID--x.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
Re: [vz-users] Schaltspiel- und Betriebsstundenzähler - Konzept gesucht
Hallo Frank, >>>>>>>>Zählerstände sind sicherlich schicker, aber auch schwieriger in der >>>>>>>>Handhabung: soll der ESP den laufenden Absolutwert speichern? <<<<<<<< So hab ich mir das bisher gedacht: Der ESP soll den Absolutwert in einem FRAM Baustein speichern. Vielleicht noch mehrfach redundant und mit etwas Logik die Fehler rausfiltern (z.B. 5x den gleichen Wert speichern. Bei den Schaltspielen darf der neue Wert nur 1 größer sein als der alte. Bei den Betriebsstunden darf der neue Wert nur größer sein als der alte, aber auch nicht sehr viel größer. Und so weiter.) Ich hatte auch die Idee jedesmal die letzten Werte aus der Datenbank abfragen, aber wenn es dann zu Problemen kommt mit dem Zugriff, dann kriegt man das nicht mit oder kriegt ständig Fehler. Bei so einem nicht flüchtigem FRAM soll jedes Byte mehrere Billionen mal beschrieben werden können. Ich denke das reicht erstmal ne Weile J https://www.adafruit.com/product/1895 https://www.adafruit.com/product/1897 Zum Thema Aggregation habe ich folgendes im Wiki gefunden, ich denke das meinst du: https://wiki.volkszaehler.org/howto/datenmengen?#performance_der_middleware_erhoehendatenaggregationcache Wie ich sehe ist die Aggregation bei mir aus. Der aktuellen Zustand meiner (nicht vorhandenen) Aggregation (aktiv, Anzahl der Datensätze, Ratio) habe ich mit folgender Middleware-Abfrage geprüft: http://IP-ADRESSE/middleware.php/capabilities/database.json? Ergebnis: {"version":"0.3","capabilities":{"database":{"data_rows":30461209,"data_size":2664267776,"aggregation_enabled":0}}} Wenn ich das richtig interpretiere sind es knapp 30,5 Mio. Datensätze mit 2,66GB Größe, Aggregation ist aus. Die Aggregation hab ich noch nicht sicher verstanden. Wenn ich es richtig verstehe, werden keine Daten gelöscht oder ausgedünnt, sondern nur zusätzliche Daten erzeugt, was nur Zeit und Speicherplatz kostet. Was passiert wenn die Initialaggregation unterbrochen wird? Stromausfall oder plötzlich anspringendes Backup aus einem cronjob, das die Services vom Volkszähler stoppt? Ist das ein Problem, oder kann man die Aggregation später einfach nochmal neu starten und die läuft dann dort weiter wo sie unterbrochen wurde? Was ist das mit dem day / hour und minute? Ich stelle mir das so vor: Die Rohdaten werden im Sekundentakt in der Datenbank gespeichert. Schaut man sich jetzt die Daten im Frontend voll hineingezoomt an, sieht man die Werte mit dem Sekundenintervall. Zoomt man jetzt heraus, so kommt irgendwann der Punkt an dem so viele Sekundenintervalle dargestellt werden sollen die man garnichtmehr auf einer Pixelbreite darstellen kann. Dann ist dies auch sinnlos und man kann auf die aggregierten Daten zugreifen. Die aggregierten Daten sind dann ein Mittelwert aus den Sekundenintervallen. Für „Minute“ wurden 60 Sekundendatensätze zu einem Datensatz/Datenpunkt zusammengefasst. Für „Hour“ wurden 60x60 = 3600 Sekundendatensätze zu einem Datensatz/Datenpunkt zusammengefasst. Für „Day“ wurden 24x60x60 = 86400 Sekundendatensätze zu einem Datensatz/Datenpunkt zusammengefasst. Stimmt das soweit? Im Wiki habe ich gelesen, dass das Frontend dafür gerüstet ist. Ist denn die Volkszähler App dafür auch gerüstet?` Und wie sieht es mit http requests aus. Können die das auch nutzen? Lieben Gruß, Chris Von: Frank Richter [mailto:frank.richte...@gmail.com] Gesendet: Donnerstag, 3. Mai 2018 01:46 An: volkszaehler.org - users Betreff: Re: [vz-users] Schaltspiel- und Betriebsstundenzähler - Konzept gesucht Am 2. Mai 2018 um 21:49 schrieb Christian Wulff <christianwu...@gmx.de>: (...) Nun nochmal zu meinen Fragestellungen: 1.Hat schon mal jemand eine Betriebsstunden- und/oder Schaltspielerfassung mit einem Volkszähler realisiert? Wenn ja, wie? Ich nicht. 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? Du meinst den "Betriebsstundensensor". Das ist halt ein Betriebsstundenzähler mit der Logik des SensorInterpreters. Wenn dort 1h lang der Wert 1 anliegt, kommt 1 Betriebsstunde raus. Es gibt also für alle 3 Interpreter-Logiken einen passenden Kanaltyp, genau wie bei elektrischer Energie (Impulse/Zählerstände/Leistung). Für das was du haben willst, brauchst du Zählerstände. Wenn du Sekunden in die DB schreibst, musst du Auflösung auf 3600 setzen, 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? Ventil nutzt SensorInterpreter, dass passt nicht für deine angedachten Absolutwerte. I
Re: [vz-users] Schaltspiel- und Betriebsstundenzähler - Konzept gesucht
Hi Rupert, Am 3. Mai 2018 um 20:16 schrieb Rupert Schöttler: > (...) > Denn ich weiß nicht, wie man den letzten *Zählerstand* 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. > versuch's mal mit =raw Allerdings ändert das nichts daran, dass Christian seine Zählerstände selbst generieren muss. Grüße Frank
Re: [vz-users] Schaltspiel- und Betriebsstundenzähler - Konzept gesucht
Hallo Christian, 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, ohne das Standard-VZ-Konzept zu verbiegen: M.E. musst Du außerhalb des VZ Zählerstände selbst bilden. 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 http://server/middleware.php/data/5f___c5.json?from=01-01-2010=now=1 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 https://wiki.volkszaehler.org/hardware/channels/meters/water/wasserzaehler_ohne_s0 -- 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? Aber zurück zu meiner Idee für Deinen Ansatz: Du musst Zählerstände selbst bilden, außerhalb des Volkszählers. Dir helfen dazu weder die Middleware noch der vzlogger -- zumindest wüsste ich nicht, wie: Denn ich weiß nicht, wie man den letzten Zählerstand 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 SELECT * FROM `data` where channel_id=1 ORDER by timestamp desc limit 1; Der geht auf der DB in Millisekunden -- dem Index sei Dank. Also wenn Dich das nicht schreckt (oder Du eine bessere Lösung hast -- lass es uns wissen!), könnte es so gehen: 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). 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. 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. 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. Lass uns wissen, ob's funktioniert -- so oder anders! Gruß, Rupert smime.p7s Description: S/MIME Cryptographic Signature
Re: [vz-users] Schaltspiel- und Betriebsstundenzähler - Konzept gesucht
Am 2. Mai 2018 um 21:49 schrieb Christian Wulff <christianwu...@gmx.de>: > (...) > > Nun nochmal zu meinen Fragestellungen: > > 1.Hat schon mal jemand eine Betriebsstunden- und/oder > Schaltspielerfassung mit einem Volkszähler realisiert? Wenn ja, wie? > Ich nicht. > 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? > > Du meinst den "Betriebsstundensensor". Das ist halt ein Betriebsstundenzähler mit der Logik des SensorInterpreters. Wenn dort 1h lang der Wert 1 anliegt, kommt 1 Betriebsstunde raus. Es gibt also für alle 3 Interpreter-Logiken einen passenden Kanaltyp, genau wie bei elektrischer Energie (Impulse/Zählerstände/Leistung). Für das was du haben willst, brauchst du Zählerstände. Wenn du Sekunden in die DB schreibst, musst du Auflösung auf 3600 setzen, > 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? > Ventil nutzt SensorInterpreter, dass passt nicht für deine angedachten Absolutwerte. Im Zweifelsfall hilft immer ein Blick in lib/Definition/EntityDefinition.json. Dort kannst du dir auch einen eigenen Kanaltyp für Schaltspiele definieren. Du brauchst hierfür ebenfalls den AccumulatorInterpreter (für absolute Zählerstände). 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? > ESP durchlaufen lassen (evt. mit Deepsleep und wecken beim Einschaltvorgang)? Oder jede Sekunde/alle 5 Sekunden einen Datensatz erzeugen und damit leben, dass der letzte verloren geht? Oder mit MQTT realisieren und Ausschaltung als last will realisieren? Pufferkondensator/akku würde ich eher nicht machen. Grüße Frank > *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,
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 s 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/x--UUID--x.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] > *Gesend
Re: [vz-users] Schaltspiel- und Betriebsstundenzähler - Konzept gesucht
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 s 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/x--UUID--x.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) erze
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 smime.p7s Description: S/MIME Cryptographic Signature
[vz-users] Schaltspiel- und Betriebsstundenzähler - Konzept gesucht
Moin, 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). 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. Das bedeutet, dass man aus den Schaltspielen nicht auf die Betriebsstunden schließen kann, und auch nicht aus den Betriebsstunden auf die Schaltspiele. 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. Nun aber zu den 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? Warum will ich das haben? In erster Linie: Just for fun! Und ich bin gespannt welche Lebensdauer die Beleuchtung erreicht. Den Herstellerangaben glaube ich ja nicht wirklich (100.000 Schaltzyklen und 30.000h Lebensdauer). Hat vielleicht jemand ein paar gute Ideen wie man das umsetzen kann? Liebe Grüße, Chris