Re: [vz-users] Schaltspiel- und Betriebsstundenzähler - Konzept gesucht

2018-05-10 Diskussionsfäden Daniel Lauckner
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

2018-05-09 Diskussionsfäden Frank Richter
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

Udo1  schrieb 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

2018-05-07 Diskussionsfäden Christian Wulff
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

2018-05-07 Diskussionsfäden Frank Richter
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

2018-05-07 Diskussionsfäden Udo1



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

2018-05-05 Diskussionsfäden Stefan Bauer
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

2018-05-05 Diskussionsfäden Christian Wulff
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

2018-05-05 Diskussionsfäden Frank Richter
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
>
> tmpfs    30M     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

2018-05-05 Diskussionsfäden Christian Wulff
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

2018-05-05 Diskussionsfäden Frank Richter
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

2018-05-05 Diskussionsfäden Frank Richter
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

2018-05-05 Diskussionsfäden Christian Wulff
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

2018-05-05 Diskussionsfäden Frank Richter
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

2018-05-05 Diskussionsfäden Frank Richter
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

2018-05-05 Diskussionsfäden Christian Wulff
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

2018-05-05 Diskussionsfäden Frank Richter
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

2018-05-05 Diskussionsfäden Frank Richter
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

2018-05-05 Diskussionsfäden Christian Wulff
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

2018-05-05 Diskussionsfäden Rupert Schöttler
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

2018-05-05 Diskussionsfäden Rupert Schöttler
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

2018-05-03 Diskussionsfäden Daniel Lauckner
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

2018-05-03 Diskussionsfäden Christian Wulff
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

2018-05-03 Diskussionsfäden Frank Richter
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

2018-05-03 Diskussionsfäden Christian Wulff
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

2018-05-03 Diskussionsfäden Frank Richter
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

2018-05-03 Diskussionsfäden Christian Wulff
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

2018-05-03 Diskussionsfäden Christian Wulff
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

2018-05-03 Diskussionsfäden Frank Richter
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

2018-05-03 Diskussionsfäden Rupert Schöttler

  
  
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

2018-05-02 Diskussionsfäden Frank Richter
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

2018-05-02 Diskussionsfäden Frank Richter
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

2018-05-02 Diskussionsfäden Christian Wulff
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

2018-05-01 Diskussionsfäden Rupert Schöttler
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