Hallo,
so nun ist es wieder soweit.
exec anstatt shell_exec verursacht nun diesen Fehler:
Warning: shell_exec(): Unable to execute 'echo "statclose"|nc 192.168.200.181 5123' in /var/lib/symcon/scripts/47250.ips.php on line 7
Und lsof liefert so viele offene File handles von Symcon:
lsof|grep symcon|wc -l
4946
30 Sekunden später
root@rpi-symcon:~# lsof|grep symcon|wc -l
4581
Und nach wie vor kein Thread der hängt also
Nun den symcon Dienst neu gestartet und wieder lsof ausgeführt:
root@rpi-symcon:~# service symcon restart
root@rpi-symcon:~# lsof|grep symcon|wc -l
1657
root@rpi-symcon:~# lsof|grep symcon|wc -l
1852
root@rpi-symcon:~# lsof|grep symcon|wc -l
1853
root@rpi-symcon:~# lsof|grep symcon|wc -l
1827
root@rpi-symcon:~# lsof|grep symcon|wc -l
1827
root@rpi-symcon:~# lsof|grep symcon|wc -l
4055
root@rpi-symcon:~# lsof|grep symcon|wc -l
4452
root@rpi-symcon:~# lsof|grep symcon|wc -l
4809
Und wenn ich nun das Script zum Auslesen der Heizkessel Werte Ausführe läuft es in 124ms durch ohne Feher…
Das Script sieht im ganzen so aus:
<?
include_once(IPS_GetScript(42011 /*[Program\Global\master_include]*/ )["ScriptFile"]);
$id_last_msg = 22868 /*[Datenpunkte\ETA Kessel\Kessel_Werte_Auslesen\last_msg]*/;
$ret = explode("
", shell_exec('echo "statclose"|nc 192.168.200.181 5123'));
if(count($ret) > 0){
#print_r($ret);
$id_status = 44976 /*[Datenpunkte\ETA Kessel\Status]*/;
$id_abgas = 25363 /*[Datenpunkte\ETA Kessel\Abgas]*/;
writeData($id_abgas, floatval(trim(substr($ret[10], (strpos($ret[10], ":")+1)))));
writeData(30358 /*[Datenpunkte\ETA Kessel\Kessel]*/, floatval(trim(substr($ret[8], (strpos($ret[8], ":")+1)))));
writeData(33582 /*[Datenpunkte\ETA Kessel\Puffer Ladezustand]*/, intval(trim(substr($ret[9], (strpos($ret[9], ":")+1)))));
writeData(55152 /*[Datenpunkte\ETA Kessel\Puffer Mitte]*/, floatval(trim(substr($ret[5], (strpos($ret[5], ":")+1)))));
writeData(35245 /*[Datenpunkte\ETA Kessel\Puffer Oben]*/, floatval(trim(substr($ret[4], (strpos($ret[4], ":")+1)))));
writeData(24213 /*[Datenpunkte\ETA Kessel\Puffer Unten]*/, floatval(trim(substr($ret[6], (strpos($ret[6], ":")+1)))));
writeData(53052 /*[Datenpunkte\ETA Kessel\Rücklauf]*/, floatval(trim(substr($ret[12], (strpos($ret[12], ":")+1)))));
if ((GetValue($id_abgas) > 120) and (GetValue($id_status) < 2)){
SetValue($id_status, 1); // In Betrieb
}
if (GetValue($id_abgas) < 120){
SetValue($id_status, 0); // Aus
}
} else {
if((time() - GetValue($id_last_msg)) > 3600){
// Eta Service auf Raspberry PI beim Kessel neu starten...
// Es muss der ssk key auf dem rpi-eta Rechner kopiert werden! (ss-copy-id)
exec("ssh rpi-eta killall -9 ETADat");
PK_sendTextNotification("peter", "Telegram", "Kessel Status Auslesen Fehlgeschlagen!");
SetValue($id_last_msg, time());
}
}
function writeData($id, $val){
if(GetValue($id) != $val){
SetValue($id, $val);
}
}
?>
Danke für die Hilfe im Voraus!
Liebe Grüße