Meldung in der IPS-Konsole

Hallo.
Seit einiger Zeit habe ich die Meldung (siehe Anhang) in der Konsole.
Ich habe einen Raspberry, der die Haustür überwacht und über TCP Daten an IPS schickt.
Wird die Tür geöffnet oder wieder geschlossen schickt der PI Daten an IPS
ips

Es gibt nur 2 Scripte, in denen das geregelt wird.
ECHO, Print oder IPS_Logmessage sind nicht da drin.

Dann zeig doch mal deine Scripte, die offenbar mit RegVar_SetBuffer deren Buffer überfüllen.

Danke für die schnelle Antwort.
Der Pi schickt je nach Ereignis folgende Daten an IPS:
Die Kennung des verwendeten RFID-Chips 1234567890
Welche Klingel betätigt wurde - 16 on oder 20 on
Tür steht auf 23 on
Tür zu 23 off
Tür über Fritzfon geöffnet fritzfon
IPS triggert damit entsprechende Scripte.
hier das Script

$RegVarID = $_IPS[‚INSTANCE‘];

  • $newdata = $_IPS[‚VALUE‘];*
  • $data = RegVar_GetBuffer ( $RegVarID );*
  • $data .= $newdata;*
  • RegVar_SetBuffer($RegVarID, $data);*
  • IF ($newdata <> ‚‘)*
  • { SETVALUE(23985,$newdata);};*

23985 ist eine Stringvariable in der der vom PI geschickte Wert steht.

Bitte mal deinen Code oben in drei ` davor und dahinter einfassen.
Du setzt den Buffer nicht zurück.

if ($newdata <> '')
{ 
  SetValue(23985,$newdata);
  RegVar_SetBuffer($RegVarID, '');
}

Die Frage ist aber, wenn du nie prüfst, ob die Daten korrekt sind z.B.

if ( strlen($newdata)==20 && substr(4,14, $newdata)=='fritzfon')

warum setzt den den Buffer überhaupt?

Danke für deine Anregungen.
Ich habe den Buffer zurückgesetzt - und es geht.
Das Scipt habe ich vor min. 3-4 Jahren irgendwo kopiert.
Es hat funktioniert und ich habe mir keinen Kopf gemacht.
Jetzt habe ich den Buffer ganz rausgeworfen - hinter der Zeile stand ein Kommentar drin
dass der Buffer gesetzt wird falls man die Daten in einem anderen Script noch verwenden möchte.
Der „Fehler“ trat erst in letzter Zeit auf.
Ich denke das hängt mit meiner Pensionierung zusammen - bin immer zu Hause und da werden halt mehr Daten erzeugt :slight_smile:
Nochmals vielen Dank.

Mit einem der letzten Updates wurde diese Warnung eingeführt. Denn der Buffer ist für Daten bis sie weiterverarbeitet werden gedacht. Heißt ca. 1-10 Sekunden Daten, nicht JAHRE. Da du ihn nie geleert hast, ist er mehrere MB groß geworden. Das kann irgendwann negativ auf die Systemperformance schlagen. Und daher mittlerweile ab einer gewissen Größe eine Warnung.

@paresy: kann man diese Warnung umbauen, sodass hier auch steht ‚Buffer mit xy kb größer als 8kb‘? Die Größe muss ja schon im Speicher sein, sönst könnte man nicht mit ihr vergleichen.

Nachtrag: Wofür die String variable mit den Daten? Ich fürchte, du lagerst hier (unnötigerweise) die Prüfung der Daten an die falsche Stelle aus. Schick doch bitte noch etwas mehr von dem Script bzw. was dann mit der String Variable (Ereignis bei Änderung löst Script aus?) passiert.

Ich schreibe den Wert weg (in 23985) und verarbeite ihn dann weiter.
Ereignis 59555.


Script PI_schickt_was: (ist auch schon min. 5 Jahre alt, RFID wurde erst vor 3 Jahren eingebaut)

// IPS_LogMessage($IPS_SELF, ‚*** PI schickt was‘);
$wert = getvalue(23985);
//// Daten vom PI
$pos=stripos($wert,‚000‘);
if ($pos !== false)
{
setvalue(57669,$wert);
$leggo = FALSE;
$chip = $wert;
switch ($chip)
{

case ‚000xxxxxxx‘:
IPS_LogMessage($IPS_SELF, ‚CHIP Chris‘);
$leggo = TRUE;
setvalue(19470,‚CHRIS‘);
break;

case ‚000xxxxxxx‘:
IPS_LogMessage($IPS_SELF, ‚CHIP Chef‘);
setvalue(19470,‚CHEF‘);
$leggo = TRUE;
break;

case ‚000xxxxxxxxx‘:
IPS_LogMessage($IPS_SELF, ‚CHIP Chef-Handy‘);
setvalue(19470,‚CHEF-Handy-chip‘);
$leggo = TRUE;
break;

case ‚000xxxxxxxxx‘:
IPS_LogMessage($IPS_SELF, ‚CHIP Reserve1‘);
setvalue(19470,‚Reserve1‘);
$leggo = TRUE;
break;

case ‚000xxxxxxx‘:
IPS_LogMessage($IPS_SELF, ‚CHIP Reserve2‘);
setvalue(19470,‚Reserve2‘);
$leggo = TRUE;
}
if ($leggo ==FALSE)
{IPS_LogMessage($IPS_SELF, 'unbekannter CHIP '.$chip);
setvalue(19470,‚CHIP unbekannt‘);
}
ELSE
{IPS_RUNSCRIPT(39557);};

};

$pos=stripos($wert,‚16 on‘);
if ($pos !== false)
{
setvalue(56153,true);
IPS_LogMessage($IPS_SELF, ‚*** CuW - es klingelt‘);
HM_WriteValueString(23070 ,„SUBMIT“,„1,2,15,6“);
ips_runscript(59540);
};

$pos=stripos($wert,‚20 on‘);

if ($pos !== false)
{
setvalue(47950,true); // Klingel oben
// setvalue(56153,true);//Klingel CuW
IPS_LogMessage($IPS_SELF, ‚*** Es klingelt oben‘);

};

$pos=stripos($wert,‚23 on‘); // Haustürfalle = 23
if ($pos !== false)
{ setvalue(30214,true);
IPS_LogMessage($IPS_SELF, ‚*** PI-Tür auf‘);
ips_runscript(24344);

};

$pos=stripos($wert,‚23 off‘);
if ($pos !== false)
{ setvalue(30214,false);
IPS_LogMessage($IPS_SELF, ‚*** PI-Tür zu‘);
ips_runscript(25474);
};

$pos=stripos($wert,‚fritzfon‘);
if ($pos !== false)
{

 ips_runscript(21225);
;

}
//Echo $wert;

?>