Hallo an Alle,
in meinen Meldungen tauchen permanent die Results… auf.
Welcher Code löst das aus und wie kann ich es ausschalten?
VG Dirk
Hallo an Alle,
in meinen Meldungen tauchen permanent die Results… auf.
Welcher Code löst das aus und wie kann ich es ausschalten?
VG Dirk
Der Code in dem Ereignis 12345. Einfach schauen, dass dieser Code keine Ausgaben macht.
paresy
Macht er nicht. …sonst würde ich nicht fragen.
include(IPS_GetScriptIDByName("include_Mathematik",58036 /*[Scripts\Allgemein]*/ ).".ips.php");
$CalcHelligkeit = "CalcHelligkeit";
if (IPS_SemaphoreEnter($CalcHelligkeit,300)) {
$Offset = 77;
$ID_Helligkeit = 15936 /*[Systeminstanzen\Sensoren\Helligkeit Aussen\Helligkeit]*/ ;
$ID_Sensor = 23925 /*[Systeminstanzen\Sensoren\Helligkeit Aussen\VALUE]*/ ;
$ID_Schwelle_SonnenscheinErkennung = 49824 /*[Systeminstanzen\Variablen\Beschattung\Einstellungen für automatische Beschattung\Schwelle für Sonnenscheinerkennung (lx)]*/ ;
$ID_SonnenscheindauerSekunden = 39629 /*[Systeminstanzen\Sensoren\Helligkeit Aussen\SonnenscheindauerSekunden]*/ ;
$ID_SonnenscheindauerMinuten = 44733 /*[Systeminstanzen\Sensoren\Helligkeit Aussen\Sonnenscheindauer]*/ ;
$ID_SonnenscheindauerStatistik = 38002 /*[Systeminstanzen\Sensoren\Helligkeit Aussen\Sonnenscheindauer Statistisch]*/ ;
$ID_Beschattung_SonneScheint = 18614 /*[Systeminstanzen\Variablen\Beschattung\Einstellungen für automatische Beschattung\Beschattung_Sonne_scheint]*/ ;
$ID_Schwelle_SonnenscheinErkennung = 49824 /*[Systeminstanzen\Variablen\Beschattung\Einstellungen für automatische Beschattung\Schwelle für Sonnenscheinerkennung (lx)]*/;
$ID_ArchivHandler = 46855 /*[Archive Handler]*/;
$ID_AVG_Helligkeit = 40954 /*[Systeminstanzen\Sensoren\Helligkeit Aussen\Durchschnittliche Helligkeit]*/ ;
/*--------------------------------------*
| Werte des alten Messwertes holen |
*--------------------------------------*/
$ObjectInfoOld = IPS_GetVariable($ID_Helligkeit);
$HelligkeitOld = getvalueinteger($ID_Helligkeit);
$ZeitpunktLetzterMesswert = $ObjectInfoOld['VariableUpdated'];
// Neue Helligkeit berechnen
$VoltProLux = 0.01;
$Value = (int)($_IPS['VALUE'] - $Offset);
if ($Value < 0) $Value = 0;
$Value = ( $Value / $VoltProLux);
// Neue Helligkeit eintragen
setvalueinteger($ID_Helligkeit, $Value);
/*--------------------------------------*
| Werte des neuen Messwertes holen |
*--------------------------------------*/
$ObjectInfoNew = IPS_GetVariable($ID_Helligkeit);
$HelligkeitNew = getvalueinteger($ID_Helligkeit);
$ZeitpunktNeusterMesswert = $ObjectInfoNew['VariableUpdated'];
/*--------------------------------------*
| Zeitdauer der Sonneneinstrahlung |
| ermitteln |
*--------------------------------------*/
$SchwelleHelligkeit = getvalueinteger($ID_Schwelle_SonnenscheinErkennung);
$Zeitdifferenz = $ZeitpunktNeusterMesswert - $ZeitpunktLetzterMesswert; //Zeitdifferenz beider Messwerte in s (Sekunden)
$Sonnenscheindauer = getvalueinteger($ID_SonnenscheindauerSekunden); // Sonnenscheindauer in m (Minuten)
if ( ($HelligkeitOld >= $SchwelleHelligkeit) && ($HelligkeitNew >= $SchwelleHelligkeit) ){
$Sonnenscheindauer += (int) ($Zeitdifferenz);
} else if(($HelligkeitOld >= $SchwelleHelligkeit) || ($HelligkeitNew >= $SchwelleHelligkeit)){
if ($HelligkeitOld > $HelligkeitNew){
$Sonnenscheindauer += (int) ((($SchwelleHelligkeit - $HelligkeitOld) * $Zeitdifferenz)
/($HelligkeitNew - $HelligkeitOld));
} else {
$Sonnenscheindauer += (int) ( (($HelligkeitNew - $SchwelleHelligkeit)* $Zeitdifferenz)
/($HelligkeitNew-$HelligkeitOld));
}
}
if (date("d", $ZeitpunktNeusterMesswert) <> date("d",$ZeitpunktLetzterMesswert)) {
setvalueinteger($ID_SonnenscheindauerStatistik, getvalueinteger($ID_SonnenscheindauerMinuten));
$Sonnenscheindauer = 0;
}
//print_r ( date("d", $ZeitpunktNeusterMesswert));
//print_r ( date("d", $ZeitpunktLetzterMesswert));
setvalueinteger($ID_SonnenscheindauerSekunden,$Sonnenscheindauer);
setvalueinteger($ID_SonnenscheindauerMinuten,(int)($Sonnenscheindauer/60));
//Durchschnittliche Helligkeit der letzten x Minuten berechnen
$now = time();
$Start = time()- 300;
$End = time();
$dat = AC_GetLoggedValues($ID_ArchivHandler, $ID_Helligkeit , $Start , $End, 0);
foreach ($dat as $d) {
$data[] = $d['Value'];
}
if (isset($data)) {
$AVG_Helligkeit = getMittelwert($data);
} else {
$AVG_Helligkeit = 0;
}
setvalueinteger($ID_AVG_Helligkeit, $AVG_Helligkeit);
//Status Sonne scheint für beschattung setzen
setvalueboolean($ID_Beschattung_SonneScheint,($AVG_Helligkeit >= getvalueInteger($ID_Schwelle_SonnenscheinErkennung)));
IPS_SemaphoreLeave($CalcHelligkeit);
}
?>
@paresy
Ich hab noch einen Hinweis…
Wenn ich die includes entferne kommt die Meldung nicht mehr. Die Includes machen aber auch keine Ausgaben.
<?
//Diese Funktion berechnet die Standardabweichung
function getStandardabweichung(&$werte) {
$mittelwert = (array_sum($werte) / count($werte));
$delta = 0;
foreach ($werte as $wert)
$delta = $delta + pow(($mittelwert - $wert), 2);
return (round(sqrt($delta / count($werte)), 3));
}
function getMittelwert($werte) {
if ((count($werte) > 0) and isset($werte))
return (round((array_sum($werte) / count($werte)), 3));
else
return 0;
}
function getVarianz($werte) {
$mittelwert = (array_sum($werte) / count($werte));
$delta = 0;
foreach ($werte as $wert)
$delta = $delta + pow(($mittelwert - $wert), 2);
return(round($delta / count($werte), 3));
}
function getMedian($werte) {
sort($werte);
if (count($werte) % 2)
return ($werte[(count($werte) + 1) / 2]);
return (round(($werte[count($werte) / 2] +
$werte[((count($werte) / 2) + 1)]) / 2, 2));
}
?>
Dirk, hast du noch etwas gefunden?
Ich habe das gleiche Verhalten mit einem anderen Script, es gibt aus meiner Sicht keine Ausgaben, aber die Meldung der ScriptEngine kommt jedes mal und müllt das Log zu.
Ich habe kein include, aber leider etwas objektorientiertes, erkenne dort aber keinerlei Ausgaben.
Habt ihr evtl. nach dem ?> (also ganz am Ende) noch Leerzeichen oder Zeilen?
paresy
Michael , nein, natürlich nicht
Kann es bei mir sein, das „system“ etwas ausgibt, was eigentlich verarbeitet wird und in der jeweiligen Variablen landen soll.
Update:
Bei mir ist es system (PI), mit IPS_Execute gibt es die Ausgabe nicht.
Dirk, was hast du für eine Ausgabe?
Ich mache keine Ausgabe. Das Script ist oben im Post.
Wenn das Skript in Post #3 eine 1:1 Kopie ist dann entferne am Schluß mal das Leerzeichen hinter dem „?>“.
Alle Leerzeichen am Ende auch aus den Include Scripts entfernt. …jetzt sind die Meldungen weg.
Danke!!!
Mittlerweile ein echter Klassiker…
:d:d:d:d:d:d:d:d
Hi,
ich kann den Klassiker noch etwas erweitern. Wenn man vor dem ersten <? ein Leerzeichen hat bekommt man auch die netten Meldungen:-)
Ralf
Gerade das ruft irgendwie danach, es automatisch lösen, anstatt die Nutzer rumsuchen zu lassen
Das wäre sehr schlecht.
Es kann ja durchaus gewollt sein, das hier z.b. HTML ausgegeben wird und das Script über Webhook aufgerufen wird.
Michael
Mittlerweile ist der Schließen-Tag im initialen Skript ja deswegen auch gar nicht mehr drin. Damit sollte der Fehler auch hoffentlich deutlich seltener auftauchen.