2 Variablen Subtrahieren

Hallo,
ich habe folgendes Script angelegt:

<?
$var1 = GetValue(13784); 
$var2 = AC_GetAggregatedValues(32088 /*[Archiv]*/ , 43333, 1, strtotime("today 00:00"), time(), 0);
$ergebnis = $var1 - $var2; 
// eventuell noch wegschreiben in eine IPS-Variable: 
SetValue (54182,$ergebnis) //Start writing your code here
?>

Es wirft folgenden fehler aus:

Fatal error: Uncaught Error: Unsupported operand types in /var/lib/symcon/scripts/23732.ips.php:4
Stack trace:
#0 {main}
thrown in /var/lib/symcon/scripts/23732.ips.php on line 4
Abort Processing during Fatal-Error: Uncaught Error: Unsupported operand types in /var/lib/symcon/scripts/23732.ips.php:4
Stack trace:
#0 {main}
thrown
Error in Script /var/lib/symcon/scripts/23732.ips.php on Line 4

Ich möchte damit 1 Wert minus den anderen Rechnen. Der 2. Wert soll nur vom aktuellen Tag sein.
Ich hoffe ihr könnt mir weiterhelfen

Merkwürdige Fehlermeldung. Aber zumindest hinter dem SetValue fehlt das Semikolon.

Habs ergänzt…das war aber nicht der Fehler… Vielleicht weis ja jemand woran es hängt…

AC_GetAggregatedValues liefert ein Array…
Michael

lass dir mal die Werte für $var1 und $var2 anzeigen!


<? 
$var1 = GetValue(13784);  
$var2 = AC_GetAggregatedValues(32088 /*[Archiv]*/ , 43333, 1, strtotime("today 00:00"), time(), 0); 
print_r ($var1);
echo("
");
print_r ($var2);
$ergebnis = $var1 - $var2;  

// eventuell noch wegschreiben in eine IPS-Variable:  
//SetValue (54182,$ergebnis) //Start writing your code here 
?>

und SetValue erst mal weglassen.

Gruß

richimaint

Hast du auch eine Idee wie ich mein Problem lösen kann?

Hallo,

was var1 für eine Variable ist, kann nicht erkannt werden, aber var2 ist ein ARRAY. Das scheint mir eine Subtraktion nicht möglich zu sein. Sollte im Array nur ein Wert stehen, müßtest Du ihn direkt ansprechen.

Grüße, Gerhard

Oh das war auf Nall Chan bezogen… Sorry…
hier das Ergebnis:

<?
$var1 = GetValue(13784);   
$var2 = AC_GetAggregatedValues(32088 /*[Archiv]*/ , 43333, 1, strtotime("today 00:00"), time(), 0);  
print_r ($var1); 
echo("
"); 
print_r ($var2); 
$ergebnis = $var1 - $var2;   
SetValue (54182,$ergebnis)
?>

0,078853111
Array
(
[0] => Array
(
[TimeStamp] => 1558476000
[Avg] => 3584,8
[MinTime] => 1558476000
[Min] => 3584,8
[MaxTime] => 1558476000
[Max] => 3584,8
[Duration] => 34030
)

)

Fatal error: Uncaught Error: Unsupported operand types in /var/lib/symcon/scripts/48036.ips.php:7
Stack trace:
#0 {main}
thrown in /var/lib/symcon/scripts/48036.ips.php on line 7
Abort Processing during Fatal-Error: Uncaught Error: Unsupported operand types in /var/lib/symcon/scripts/48036.ips.php:7
Stack trace:
#0 {main}
thrown
Error in Script /var/lib/symcon/scripts/48036.ips.php on Line 7

Hallo Tom,

was wolltest Du denn mit Deinem Script erreichen? Was steht in var1?

Grüße, Gerhard

Ich möchte meinen Eigenverbrauch anzeigen lassen.
Variable 1 ist Tagesertrag der PV in KW/h
Variable 2 ist Einspeisung ins Netz in KW/h

Von der Variable 2 möchte ich nur den heutigen Wert erhalten da dieser den Gesamtzählerstand abbildet.Geloggt im Archiv

Also Tagesertag minus Einspeisung ist Eigenverbrauch

In dem Fall probiere mal das:


$ergebnis = $var1 - $var2[avg];   

Gruß,

Toni

Das bringt diese Meldung:
Schreibt allerdings einen Wert in die gewünschte Variable!

Warning: Use of undefined constant avg - assumed ‚avg‘ (this will throw an Error in a future version of PHP) in /var/lib/symcon/scripts/48036.ips.php on line 7

Notice: Undefined index: avg in /var/lib/symcon/scripts/48036.ips.php on line 7

in einfachen Anführungszeichen natürlich - sorry

$ergebnis = $var1 - $var2['avg']; 

Jetzt kommt dieses:

Notice: Undefined index: avg in /var/lib/symcon/scripts/48036.ips.php on line 7

Ist bestimmt case-sensitiv. Also ‚Avg‘ und nicht ‚avg‘ :rolleyes:

Das kommt davon wenn man Tips nur aus dem Kopf heraus gibt ohne das Problem zuhause nachzustellen :o

Hat nichts an der Meldung geändert… Danke aber für eure Bemühungen :smiley:

$ergebnis = $var1 - $var2[0]['Avg']; 

Michael

Danke zusammen! Das war es… Funktioniert DOCH NICHT… Jetzt stimmt das Ergebnis nicht mehr!!!

$ergebnis = $var1 - $var2[0][‚Avg‘];

Hab aus der 0 eine 1 gemacht. JEtzt wird es im Webfront richtig angezeigt… Stimmt das so?

Danke Michael, das hatte ich übersehen.

Jetzt stimmt das Ergebnis nicht mehr!!!

Das Ergebnis ist natürlich direkt von den Zahlen abhängig, die du verwendest. :wink:

Edit:

wenn die Zahl, die du suchst, im Eintrag [1] steht, dann stimmt das. Bisher hast du uns verschwiegen, dass es so einen Eintrag gibt.