Archivwerte übertragen zwischen Variablen verschiedenen Typs

Hallo,

ich möchte gerne die Archivwerte von einer Float-Variablen zu einer Integer Variablen transferieren.

Hat da vielleicht schon jemand ein Skript zu?

Burkhard

Ok, dann habe ich mich mal selber hingesetzt :slight_smile:

Folgendes ist dabei herausgekommen:

<?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' => (int) $item['Value']];
    }
    $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);

Vielleicht kann es mal jemand gebrauchen.

Burkhard

2 „Gefällt mir“

Vielen Dank,
konnte ich grade gut gebrauchen !
Sollte eigentlich Standard sein bei den Archivfunktionen :frowning: