Hallo Ralf,
Bzgl. Aggregation schaue mal in die crontabs… standardmässig steht in der crontab des Benutzers pi in etwa so etwas drin: pi@avz:~:(3)> crontab -l | grep aggregate */10 * * * * php /var/www/volkszaehler.org/bin/aggregate run -m delta -l minute >/dev/null 1 * * * * php /var/www/volkszaehler.org/bin/aggregate run -m delta -l hour >/dev/null 0 1 * * * php /var/www/volkszaehler.org/bin/aggregate run -m delta -l day >/dev/null Dann hast Du die Aggregation aktiviert. Bzgl. mehrerer Kanäle/Sensoren – die kannst Du mit einem Befehl abfragen/löschen: DELETE FROM `volkszaehler`.`data` WHERE ((`channel_id` = x) OR (`channel_id` = y)) AND timestamp> (unix_timestamp(current_timestamp)-7*24*60*60)*1000 AND (VALUE <-5 or VALUE >40); Die channel_id stehen in der entities Tabelle. SELECT * FROM `volkszaehler`.`entities` ; Diese zeigt u.a. die Zuordnung von UUID und (channel_)id. Probiere die Abfragen aber auf jeden Fall aus, bevor Du ans Löschen gehst, dazu das „DELETE FROM“ durch ein „SELECT * FROM“ ersetzen, dann siehst Du genau die Zeilen, die Du ansonsten löschen würdest. Diese Zuordnung hättest Du automatisch, wenn Du die Abfragen über die Middleware machst, ich glaube das wäre wirklich der sauberere Weg, zumal wenn Du Dir mit SQL nicht sicher bist. Gruss, Alex From: volkszaehler-users [mailto:volkszaehler-users-boun...@demo.volkszaehler.org] On Behalf Of Ralf Wismann Sent: Monday, January 27, 2020 10:18 AM To: 'volkszaehler.org - users' Subject: Re: [vz-users] 1-Wire Messwerte Filtern/Löschen Hallo vielen Dank Alex und Thomas! Muss mir erst noch ein Backup/Testsystem aufsetzen und dann lass ich es mal laufen. Bzgl. Aggregation bin ich mir unsicher. In der vzlogger.conf ist hinterlegt, dass die Temperaturen alle 10 Minuten gemessen werden. Eine weitere/zusätzliche Verdichtung der Daten ist von mir nicht aktiviert. Somit nicht vorhanden? Du meinst z.B. dieses vzcompress oder so ähnlich wie es im Wiki steht? Noch eine Frage vom Einsteiger dazu: Ich habe ja mehrere Temperaturen und darunter machen 2,3 schon mal diese Probleme. Also würde ich jetzt mehre DELETE Befehle in das SQL Script einfügen wollen. Die Zeitspanne der Daten wollte ich möglichst „sinnvoll“ zum Zyklus des Crontab wählen, nichtsdestotrotz glaube ich, dass eine SQL-Abfrage/Befehl noch nicht fertig sein könnte, wenn der zweite Befehl ausgeführt wird. Gibt das irgendwelche Probleme (Überlast, undefinierte Ergebnis, Verworfene Befehle/Daten, etc.) oder kann eine/die Datenbank das handeln? Vielen Dank Ralf P.S.: Stelle mit Freude fest, dass die Wichtigkeit der Schreib/Zitierweise in der Mailingliste an Priorität verloren hat. Das war für mich als Outlook-Nutzer immer ein großer künstlicher Krampf es so hinzubiegen. Hoffe auch so können wir uns gut Verständigen. Danke! Von: volkszaehler-users <volkszaehler-users-boun...@demo.volkszaehler.org> Im Auftrag von r...@nord-com.net Gesendet: Sonntag, 26. Januar 2020 22:50 An: 'volkszaehler.org - users' <volkszaehler-users@demo.volkszaehler.org> Betreff: Re: [vz-users] 1-Wire Messwerte Filtern/Löschen Hallo Ralf, die Abfrage müsste so aussehen DELETE FROM `volkszaehler`.`data` WHERE channel_id = xxxxxx AND timestamp< (unix_timestamp(current_timestamp)-7*24*60*60)*1000 AND (VALUE <-5 or VALUE >40); Und das SQL Script darf dann nur den SQL Code enthalten aber nicht den Aufruf – sprich Du speicherst nur z.B. den o.g. Code in eine Datei und trägst in die Crontab dann folgendes ein: mysql –ubenutzername -ppasswort volkszaehler < /path/to/sql.script Ich würde für die DB auch nicht den Root-Account verwenden, der Standard User „vz“ (Password „demo“ falls es nicht geändert wurde) sollte reichen… Aber: Ich sehe da ein weiteres Problem – wenn bei dem genannten Kanal die Datenaggregation aktiviert ist, hast Du die falschen Werte da schon mit drin bevor Du sie löschen kannst. Und da dabei verschiedene Werte miteinander verrechnet werden, lässt sich das dann auch nicht mehr so leicht per Schema s.o. entfernen. Vielleicht kann das die Middleware-Anfrage, die Andreas empfohlen hat… ich weiss es nicht? Auf jeden Fall kannst Du auch Middleware Aufrufe z.B. über wget oder curl automatisch laufen lassen. Ansonsten bliebe Dir nur – entweder die Aggregation für den betroffenen Kanal ausschalten oder sie nach dem Lauf des Skriptes neu aufbauen – sinnvollerweise nur wenn auch wirklich falsche Werte aufgetreten sind. Sprich vor dem DELETE nochmal einen SELECT laufen lassen und den Rückgabewert abfragen. Gruss, Alex From: volkszaehler-users [ <mailto:volkszaehler-users-boun...@demo.volkszaehler.org> mailto:volkszaehler-users-boun...@demo.volkszaehler.org] On Behalf Of USER VZ Sent: Sunday, January 26, 2020 6:40 PM To: volkszaehler.org - users Subject: Re: [vz-users] 1-Wire Messwerte Filtern/Löschen Der SQL- Befehl wird nicht funktionieren. Die Abfrage nach Value muss mit ODER verknüpft werden. Z.b.: DELETE FROM `volkszaehler` WHERE and channel_id = 12 AND timestamp< (unix_timestamp(current_timestamp)-7*24*60*60)*1000 AND (value >-5 OR value <40) Ob der mysql Syntax stimmt kann ich sagen, aber die Richtung würde ich auch gehen. Thomas Mail: <mailto:tho...@thhoe.de> tho...@thhoe.de Am 26.01.2020 um 16:28 schrieb Ralf Wismann < <mailto:ralf.wism...@gmx.de> ralf.wism...@gmx.de>: Hallo Am Sonntag, 26. Januar 2020 15:04 schrieb Anrears Götz: „Die Middleware kann DELETE auch übers Api, dabei lässt sich auch ein Wertfilter angeben. Benutzung lässt sich auf der ML recherchieren. „ Danke Andreas. Schau ich mir auch gerne an. Durch den manuellen Eingriff scheint mir das hier weniger gut, da es nicht mein Volkszähler ist und der Besitzer nicht selber an der Datenbank arbeiten möchte. Ich habe / möchte auch nicht unbedingt manuell dort regelmäßig aktiv sein 😉 Am 26.01.2020 um 14:25 schrieb Rupert Schöttler < <mailto:rupert.schoett...@gmx.de> rupert.schoett...@gmx.de>: „Dein vergleichsweise einfaches Fehlerbild, nämlich 85°C = Fehler, kann man einfach auf der Datenbank reparieren: DELETE FROM `data` WHERE (channel_id IN (<Kanalliste>)) AND (value = 85). Diesen Befehl gelegentlich in phpMyAdmin absetzen oder z.B. 1x tgl. per cron laufen lassen und ausgeputzt ist's. Aber Achtung mit der Syntax und den Kanalnummern: Was weg ist ist weg! ;-)“ Danke Rupert. Hatte ich vermutet, wenn es keine Standardfehlerkorrekturoption gibt. Da ich so etwas noch nicht gemacht habe. Bitte um kurzen Quercheck. Also ich lege ein Bash-Script an „reinigung.sh“ Tippe dort rein: #!/bin/bash mysql --user=root -praspberry DELETE FROM `volkszaehler` WHERE and channel_id = 12 AND timestamp< (unix_timestamp(current_timestamp)-7*24*60*60)*1000 AND value >-5 AND value <40; Dies zB soll Werte für eine Innenraumtemperatur (Kanal 12) kleiner -5Grad and Größer 40 Grad der letzten 7 Tage. Dieses Bash Script lasse ich Täglich um 3h laufen mit cron: 00 3 * * * root /verzeichnis/script >/dev/null 2>&1 Geht das in die Richtung? Danke und Grüße Ralf