Skript zum Löschen von ausgewählten Daten aus dem Archiv

Hallo Zusammen.

Ich habe mir einen Treiber für einen STECA Solarregler geschrieben. Funktioniert eigentlich vom Prinzip her ganz gut. Leider gab es bei der Auswertung einiger Strings im Datenstrom Fehler, die dazu geführt haben, dass mir bei bestimmten Betriebszuständen der Solaranlage Temperaturwerte von 32768 in das Archiv geschrieben wurden.
Jetzt wird ja hier als Mittel der Lösung immer vorgeschlagen diese fehlerhaften Werte über den Archivhandler raus zu löschen. Das ist aber leider in der Praxis nicht praktikabel, da dieser sich über eine Filterfunktion verfügt. Ich müsste mir also alle Datensätze manuell suchen und dann einzeln löschen, da der Archivhandler kein Multiselect von Datensätzen zulässt. Bei einzelnen Ausreißern geht das noch, aber wenn es viele sind wird das zu einer unsäglichen Geduldsprobe.

Dummerweise bin ich mit PHP nicht ganz so gut beieinander, sodass ich nicht weiß wie ich mir da ein passendes Script schreiben könnte, welches mir alle Werte einer Variable mit einem bestimmten vorgegebenen Wert aus dem Archiv löscht und hinterher vielleicht neu aggregiert.
Wer kann mir da helfen bzw. Tipps geben.

Hallo ThomasWest69,

wie kommen denn die Daten in IPS?

Also ich hab eine UVR1611. Die wurde via nativer IPS-Instanz eingebunden. In den automatisch angelegten Variablen hatte ich z.T. auch Temperaturausreisser die niemals sein können.
Festgestellt habe ich, dass alle Variablen zur selben Zeit Ausreisser haben.
Daher hab ich für alle UVR-Variablen die Aussreisser bringen eine 2. Variable angelegt die die Werte über folgendes Script bekommt und die ich dann auswerte. Das Script verringert mit die Datenmenge, da mir Temperaturunterschiede von 0.5° (anpassbar) ausreichen, und prüft ob der Wert aus der UVR realistisch ist (>0 u <100).

<?
// Ziel ist, die WerteMenge der Temperatursensoren aus UVR1611 zu verringern und
// Das Script soll, wenn sich der Wert der oberen SpeichterTemperatur ändert,
// prüfen ob der aktuelle Wert gleich einem Rundungswert ist, und den dann in eine Variable schreiben.
// zusätzlich wird noch die Plausibilität der Werte aus der Anlage geprüft und der Wert ggf verworfen.

// Werte die die Steuerung liefert ---------------------------------------------
$SpeicherObenIst  = round(getvalue(37503 /*[Logisch\Heizung\Anlage\UVR1611-1\Sensor (1)]*/),2);
$SpeicherUntenIst = round(getvalue(47772 /*[Logisch\Heizung\Anlage\UVR1611-1\Sensor (2)]*/),2);
$DateX = "'".date("Y-m-d H:i:s",time())."'";

// Einmalig Startwerte für die eigenen Variablen setzen. Oder zur Korrektur ----
//$SpeicherOben     = setvalue(19429 /*[Logisch\Heizung\Anlage\UVR nach Variablen\Speicher oben]*/, 32.8);
//$SpeicherUnten    = setvalue(46986 /*[Logisch\Heizung\Anlage\UVR nach Variablen\Speicher unten]*/, 31.6);


// Variablendeclarierung zum spielen
//$SpeicherObenIst = 0;

// This function will let you round to an arbitrary non-zero number.  Zero of course causes a division by zero.
// http://www.php.net/manual/de/function.round.php#93747
$to = 0.5;
function roundTo($number, $to)
    {
    return round($number/$to, 0)* $to;
    }

//wenn die aktuelle Temperatur <=0 oder >= 100 ist wird von eineem Fehler ausgegangen und das Script beendet
if ($SpeicherObenIst <= 0 or $SpeicherObenIst >= 100)
    {echo "Vermutlich Fehlerwert. Temperatur = 0 oder 100 ist so gut wie unmöglich.";
    exit;}

else
    {
        $SpeicherObenVar     = roundTo($SpeicherObenIst,$to)."
";
        if ($SpeicherObenIst == $SpeicherObenVar) // wenn der gerundete wert gleich dem analgenwert dann schreiben
             {
              SetValue(19429 /*[Logisch\Heizung\Anlage\MySQL\Variablen\UVR nach Variablen\Speicher oben]*/ ,$SpeicherObenVar*1); //wenn man den wert nicht irgend wie mathematisch bearbeitet verschluckt er das komma
              SetValue(46986 /*[Logisch\Heizung\Anlage\MySQL\Variablen\UVR nach Variablen\Speicher unten]*/ ,$SpeicherUntenIst);
             }
     }
?>


Die Anlage wird alle 2 Min ausgelesen. Diese vielen Daten werden via RS-DBAnalyzer nur für 1 Mon vorgehalten.
Eigentlich schreib ich die Daten dann in eine MySQL. Hab das Schript mal angepasst um in IPS zu schreiben.
Anbei noch ein Screenshoot wies dann im Chart aussieht. Die blaue Linie sind die Orignalen Daten.
OT: Das mit den Anhängen blick ich noch immer nicht. Manchmal funktioniert mit den kleinen Vorschaubildern, manchmal nicht.