Archiv Aufgezeichnete Werte umkehren

Guten Abend,

mir ist vor einem Jahr mit einem aufgezeichneten Wert ein Missgeschickt passiert. Zumindest klang es da noch schlau von mir :sweat_smile: lag aber falsch.

Ich habe eine geloggte Float Variable mit reinweg umgekehrten Werten (also *-1). Nun bräuchte ich das aber genau andersherum zur Auswertung. Am Liebsten hätte ich einen Button im Archiv Control wo draufsteht „Werte umkehren“. Hat da jemand einen Workaround für?

Grüße

Vielleicht hilft dir mein kleines Skript weiter

Besten dank! Das hat mir weitergeholfen :slight_smile:

<?php

const VARIABLE_ID_FROM = 42406;
const VARIABLE_ID_TO = 38173;
const MAX = 1000;

$archiveID = IPS_GetInstanceListByModuleID('{43192F0B-135B-4CE7-A0A7-1475603F3060}')[0];

AC_SetLoggingStatus($archiveID, VARIABLE_ID_TO, true);
AC_SetAggregationType($archiveID, VARIABLE_ID_TO, AC_GetAggregationType($archiveID, VARIABLE_ID_FROM));

$endtime = 0;
$count = 0;

do {
    $items = AC_GetLoggedValues($archiveID, VARIABLE_ID_FROM, 0, $endtime, MAX);
    $values = [];

    foreach ($items as $item) {
        $endtime = $item['TimeStamp'] - 1;
        // hier erfolgt die Konvertierung nach Integer
        $values[] = ['TimeStamp' => $item['TimeStamp'], 'Value' => $item['Value'] *-1];
    }
    $count += count($values);
    AC_AddLoggedValues($archiveID, VARIABLE_ID_TO, $values);

} while (count($items) === MAX);

AC_ReAggregateVariable($archiveID, VARIABLE_ID_TO);

echo sprintf('Es wurden %s Datensätze übertragen.', $count);