Bei negatives Ergebniss ( - ) entfernen?

Hallo zusammen,

ich hab mal eine Frage an euch.
Errechne bei meiner Wärmepumpe die Wärmemenge, jedoch hab ich bei der Variable für Kälteenergie natürlich immer ein „-“ davor stehen ( VL kälter als der RL ).

Kann ich das ändern das ich das „-“ nicht angezeigt bekomme bei der Berechnung?
Hier ein Bsp.:

Käleenergie : Float -5,2 kWh möchte aber das „-“ nicht dabei haben.

Danke!

Eine Möglichkeit wäre: „Variable“ * (-1)

Gruß K.-H.

<?
$wert = -5.2;

if ($wert < 0) // wenn wert kleiner 0
{$wert *= -1;} // dann Vorzeichen entfernen, sonst nicht

echo $wert;
?>

abs
$value = abs(GetValue(12345));

Danke!
Wenn ich jetzt das Bsp. mit dem „abs“ Absolutwert verwende, dann müsste ich das abs nach dem SetValueFloat einbauen?



$Kühlenergie = ($Kühlenergie + ($waerme / 60 / 1000)); //Kwh
        SetValueFloat (56052 /*[Wärme - Kälteenergie Verbrauch Akuell\Wärme/Kälte Test\Kälte\Kühlenergie]*/, $Kühlenergie);


oder so?
mit -1 am Ende



$Kühlenergie = ($Kühlenergie + ($waerme / 60 / 1000)); //Kwh
        SetValueFloat (56052 /*[Wärme - Kälteenergie Verbrauch Akuell\Wärme/Kälte Test\Kälte\Kühlenergie]*/, $Kühlenergie * (-1));



PHP: abs - Manual

Oh, Fonzo war schneller…



$Kühlenergie = ($Kühlenergie + ($waerme / 60 / 1000)); //Kwh
        SetValueFloat (56052 /*[Wärme - Kälteenergie Verbrauch Akuell\Wärme/Kälte Test\Kälte\Kühlenergie]*/, abs($Kühlenergie));


1 Stunde 20 Minuten später:D :smiley:

Klar, passiert wenn man zwischendurch was anderes macht, und dann ca 1 Std später auf absenden drückt.:smiley:

Abend zusammen,

also ich hab momentan folgendes Problem das die „Kühlenergie“ nicht mitgezählt ( addiert ) wird?
Der Wert bleibt immer bei Null, bzw. 0,04 dann wieder Null??
habe jeweils beim Script das „abs“ zugefügt um den Negativen Wert zu entfernen ( - ).

Das mit der Wärmeenergie funktioniert :slight_smile:
Anbei die Auswertung:



if ($waerme <0) { 
        SetValueFloat(21250 /*[Wärme - Kälteenergie Verbrauch Akuell\Kälteenergie]*/, abs($waerme/1000)); 
		SetValueFloat(41091 /*[Wärme - Kälteenergie Verbrauch Akuell\Wärmeenergie]*/,0);
		
		$Kühlenergie = ($Kühlenergie + ($waerme / 60 / 1000)); //Kwh 
        SetValueFloat (56052 /*[Wärme - Kälteenergie Verbrauch Akuell\Wärme/Kälte Test\Kälte\Kühlenergie]*/, abs($Kühlenergie));
		
    } else { 
       SetValueFloat(41091 /*[Wärme - Kälteenergie Verbrauch Akuell\Wärmeenergie]*/, ($waerme/1000));
	   SetValueFloat(21250 /*[Wärme - Kälteenergie Verbrauch Akuell\Kälteenergie]*/,0);
	   
	       
	   $Heizenergie = ($Heizenergie + ($waerme / 60 / 1000)); //Kwh 
       SetValueFloat (41161 /*[Wärme - Kälteenergie Verbrauch Akuell\Wärme/Kälte Test\Wärme\Heizenergie]*/, $Heizenergie);
	   
    } 




Hallo Michl,

wenn ich unterstelle, dass die Ausgangsgröße $Kühlenergie = GeValue(56052) ist, dann ergibt sich folgender „Kreislauf“:

Runde 1 (Ausgangsgrößen: Kühlenergie =0 und $wärme=-2400)
1 .$Kühlenergie = GeValue(56052) // Kühlenergie=0
2. $Kühlenergie = ($Kühlenergie + ($waerme / 60 / 1000)); // Kühlenergie = -0,04
3. SetValueFloat (56052, abs($Kühlenergie)); // Variable 56052 = 0,04

Runde 2 (unterstellt $wärme ist wieder -2400)
1 .$Kühlenergie = GeValue(56052) // Kühlenergie= 0,04
2. $Kühlenergie = ($Kühlenergie + ($waerme / 60 / 1000)); // Kühlenergie = 0,04 + -0,04 = 0
3. SetValueFloat (56052, abs($Kühlenergie)); // Variable 56052 = 0

:rolleyes:

Gruß

Swifty

Also ich steh auf dem schlauch - wo ist der Fehler???
Habe dem Wert der bei Kühlenergie errechnet wird, mit „abs“ gesagt das er positiv ( kein - vor der Zahl ) ´werden soll.

Ah, verstehe:
$waerme ist natürlich noch negativ :slight_smile: + und - ergibt 0

Wie kann ich das am besten lösen?

:confused:

Angenommen du liest über $waerme eienen negativen Wert ein.

Hier wandelst du deinen negativen Wert aus $waerme um in einen positiven.

        SetValueFloat(21250 /*[Wärme - Kälteenergie Verbrauch Akuell\Kälteenergie]*/, abs($waerme/1000)); 

Zwei Zeilen später rechnest du wieder mit dem negativen Ursprungswert $waerme weiter.

 $Kühlenergie = ($Kühlenergie + ($waerme / 60 / 1000)); //Kwh 

Ich verstehe auch den Sinn nicht, besitze jedoch auch keine Wärmepumpe, evtl. fehlen auch ein paar ergänzende Angaben um das ganze zu verstehen.
Warum denn „if“, wenn doch?

hab ich bei der Variable für Kälteenergie natürlich immer ein "-" davor stehen

Warum kann die Variable nicht sofort beim Einlesen in eine positive umgewandelt werden? Anschließend dann die weiteren Berechnungen.

mein Vorschlag:

if ($waerme <0) {
        $waerme=abs($waerme); 
        SetValueFloat(21250 /*[Wärme - Kälteenergie Verbrauch Akuell\Kälteenergie]*/, $waerme/1000); 
        SetValueFloat(41091 /*[Wärme - Kälteenergie Verbrauch Akuell\Wärmeenergie]*/,0);
        
        $Kühlenergie = ($Kühlenergie + ($waerme / 60 / 1000)); //Kwh 
        SetValueFloat (56052 /*[Wärme - Kälteenergie Verbrauch Akuell\Wärme/Kälte Test\Kälte\Kühlenergie]*/, $Kühlenergie));
        
    } else { 
       SetValueFloat(41091 /*[Wärme - Kälteenergie Verbrauch Akuell\Wärmeenergie]*/, ($waerme/1000));
       SetValueFloat(21250 /*[Wärme - Kälteenergie Verbrauch Akuell\Kälteenergie]*/,0);
       
           
       $Heizenergie = ($Heizenergie + ($waerme / 60 / 1000)); //Kwh 
       SetValueFloat (41161 /*[Wärme - Kälteenergie Verbrauch Akuell\Wärme/Kälte Test\Wärme\Heizenergie]*/, $Heizenergie);
       
    }  

Danke für die Info!
Ich werde deinen Tipp testen :slight_smile:

Sollte aber passen, da du den Wert $Waerme vorher „positiv“ schreibst.

Hier mal das Fertige Script, aktuell läuft es ganz gut, dank der mithilfe von euch :slight_smile:

Es dient zur Erfassung des der Wärmemenge/Kältemenge ( Heizen Kühlen ) für die Wärmepumpe.


<?
 
 $Durchfluss = GetValueFloat(17461 /*[Hardware IPS\EKM-868 Volumenstrom Heizung\Durchfluss]*/);
 $Heizenergie = GetValueFloat(41161 /*[Wärme - Kälteenergie Verbrauch Akuell\Wärme Kälteenergie Gesamt\Heizenergie]*/);
 $Kühlenergie = GetValueFloat(56052 /*[Wärme - Kälteenergie Verbrauch Akuell\Wärme Kälteenergie Gesamt\Kühlenergie]*/);
 
 // Script verlassen, wenn kein Durchfluss und setzen einer 0 bei Wärme-Kältemenge
 if ($Durchfluss == 0) {
 
 SetValueFloat(33361, 0);
 SetValueFloat(41091, 0);
 SetValueFloat(21250, 0);
 Return;
 }

 $Vorlauf = GetValueFloat(20059 /*[Hardware IPS\JKM-868 (ThermoJET)\VL Fubo + Boilerladung]*/);
 $Ruecklauf = GetValueFloat(59719 /*[Hardware IPS\JKM-868 (ThermoJET)\RL Fussbodenheizung]*/);

 $Durchfluss = GetValueFloat(17461 /*[Hardware IPS\EKM-868 Volumenstrom Heizung\Durchfluss]*/); //Durchfluss grösser als 1
 $c = 4182; // Wasser

 if ($Durchfluss > 1)
{
   $Menge = $Durchfluss;
       // Berechnung der Wärmeleistung
   $delta_T = $Vorlauf - $Ruecklauf;                
   $waerme = ($c * $Menge * $delta_T) / 3600; // Wh
   

}  


if ($waerme <0) { 
        $waerme=abs($waerme); 
        SetValueFloat(21250 /*[Wärme - Kälteenergie Verbrauch Akuell\Kälteenergie aktuell]*/, ($waerme/1000)); 
		SetValueFloat(41091 /*[Wärme - Kälteenergie Verbrauch Akuell\Wärmeenergie aktuell]*/,0);
		
	
		$Kühlenergie = ($Kühlenergie + ($waerme / 60 / 1000)); //Kwh 
        SetValueFloat (56052 /*[Wärme - Kälteenergie Verbrauch Akuell\Wärme Kälteenergie Gesamt\Kühlenergie]*/, ($Kühlenergie));
		
    } else { 
       SetValueFloat(41091 /*[Wärme - Kälteenergie Verbrauch Akuell\Wärmeenergie aktuell]*/, ($waerme/1000));
	   SetValueFloat(21250 /*[Wärme - Kälteenergie Verbrauch Akuell\Kälteenergie aktuell]*/,0);
	   
	       
	   $Heizenergie = ($Heizenergie + ($waerme / 60 / 1000)); //Kwh 
       SetValueFloat (41161 /*[Wärme - Kälteenergie Verbrauch Akuell\Wärme Kälteenergie Gesamt\Heizenergie]*/, $Heizenergie);
	   
    } 



?>