Keine Skriptausführung mehr

Hallo da draussen,

in den letzten Tagen ist es mir des öfteren passiert, dass IP-SYMCON V 2.2 nach irgendeiner (scheinbar willkürlichen) Zeit die Abarbeitung von Skripten einstellte.
Laut Log werden Variablen (bzw. Messwerte) weiterhin empfangen, jedoch kein einziges Skript mehr bis zu einem Rechnerneustart mehr bearbeitet.
Auch bei manuellem Skriptstart taucht dieses nicht im Log auf und die letzte Ausführung wird im IPS Verzeichnisbaum nicht aktualiesert.
(Beispiel: ich habe ein Skript, das minütlich gestartet wird und in meinem Dashboard die Uhrzeit zeigt. Dieses wurde vorgestern zuletzt um 23:12 ausgeführt. Gestern im 10:25 startet ich es manuell. Die Uhrzeit verblieb auf 23:12, der Eintrag im Verzeichnisbeum ebenfalls.).

Kennt einer das?

Cheers,

Andreas

Wenn es wieder passiert… Kannst du mal nachsehen, welche PHP-Threads denn belegt sind?

Kannst du in der Konsole über „Ansicht hinzufügen“ -> „PHP Informationen“

paresy

Mache ich.

So, heute um 7:04 war es mal wieder so weit. Es erfolgte keine Skriptausführung mehr.
Ich habe eben „Ansicht hinzufügen“ -> „PHP Informationen“ gestartet.
Nun sehe ich schon seit 5 Minuten das Fenster „Lade…“ mit Inhalt „Lade Daten, Name: GetVariables, 434kb“. Es bewegt sich nichts mehr.

Gleiches übrigens, wenn ich „Logische Baumansicht“ aufrufe. Schliesse ich das Fenster, so schliesst sich gleich die ganze Konsole mit.

Das Log von heute ist mittlerweile 293 MByte (!) groß und wächst weiter rapide schnell an (jetzt schon 313 - nach ca 3 Minuten).
Der IPS Dienst lässt sich nicht beenden, nur Abschiessen geht.
Ich konnte das Log (jetzt schon 319 Mybte) bisher nicht öffnen (bin bei der Arbeit und greife per Fernzugriff auf meinen Rechner zu), das Ding lädt und lädt (in den Standard Windows Editor).

Nach Dienstneustart läuft alles wieder.

Ich werde heute Nachmittag, wenn ich wieder zu Hause bin, mir das Log mal ansehen.

Schon irgendwelche Ideen?
Gibt es schon ähnliche Probleme?

Cheers,

Andreas

Soetwas passiert z.B. häufig bei Endlosschleifen, wenn z.B. Scripte sich gegenseitig aufrufen. Oder wenn Informationen in Vars geschrieben werden die extrem lang sind.

Ok, ich werde mal dementsprechend auf die Suche gehen.

So, nun habe ich mal dieses Monsterlog ausgewertet.
Hier sind die letzten Sekunden bis zum Ausstieg:

29.03.2010 07:04:46.362 | 35725 | DEBUG | VariableManager | [Heizung\WC\Batterie] = False
29.03.2010 07:04:46.362 | 29397 | DEBUG | VariableManager | [Heizung\WC\Fenster] = False
29.03.2010 07:04:47.940 | 13834 | MESSAGE | VariableManager | [Wetter\WS300PC KombiSensor\Temperatur] = 6,8
29.03.2010 07:04:47.940 | 39925 | MESSAGE | VariableManager | [Wetter\WS300PC internal Sensor\Temperatur] = 20,1
29.03.2010 07:04:48.550 | 13375 | DEBUG | VariableManager | [Heizung\Schlafzimmer\Batterie] = False
29.03.2010 07:05:00.03 | 56298 | DEBUG | ExecuteThreadID #8 | Skriptausführung: 56298.ips.php ~ Absender: Ereignis #35184, Zeit Ereignis
29.03.2010 07:05:00.503 | 29636 | DEBUG | ExecuteThreadID #4 | Skriptausführung: 29636.ips.php ~ Absender: Ereignis #49232, Zeit Ereignis
29.03.2010 07:05:41.18 | 0 | ERROR | Kernel | Fehler beim Verarbeiten von Nachricht: 11105, Modul SOAPServer, Nachricht: Access violation at address 00402111 in module ‚ips.exe‘. Write of address 00480988
29.03.2010 07:05:41.18 | 0 | ERROR | Kernel | Fehler beim Verarbeiten von Nachricht: 11105, Modul SOAPServer, Nachricht: Access violation at address 0065E7BB in module ‚ips.exe‘. Read of address 20202028
29.03.2010 07:05:41.18 | 0 | ERROR | Kernel | Fehler beim Verarbeiten von Nachricht: 11105, Modul SOAPServer, Nachricht: Access violation at address 0065E7BB in module ‚ips.exe‘. Read of address 4F52524D
29.03.2010 07:05:41.18 | 0 | ERROR | Kernel | Fehler beim Verarbeiten von Nachricht: 11104, Modul SOAPServer, Nachricht: Access violation at address 0065E7BB in module ‚ips.exe‘. Read of address 4F52524D
29.03.2010 07:05:41.18 | 0 | ERROR | Kernel | Fehler beim Verarbeiten von Nachricht: 10205, Modul SOAPServer, Nachricht: Access violation at address 0065E7BB in module ‚ips.exe‘. Read of address 4F52524D
29.03.2010 07:05:41.18 | 0 | ERROR | Kernel | Fehler beim Verarbeiten von Nachricht: 11105, Modul SOAPServer, Nachricht: Access violation at address 0065E7BB in module ‚ips.exe‘. Read of address 4F52524D
29.03.2010 07:05:41.18 | 0 | ERROR | Kernel | Fehler beim Verarbeiten von Nachricht: 11104, Modul SOAPServer, Nachricht: Access violation at address 0065E7BB in module ‚ips.exe‘. Read of address 4F52524D
29.03.2010 07:05:41.34 | 0 | ERROR | Kernel | Fehler beim Verarbeiten von Nachricht: 10205, Modul SOAPServer, Nachricht: Access violation at address 0065E7BB in module ‚ips.exe‘. Read of address 4F52524D
29.03.2010 07:05:41.34 | 0 | ERROR | Kernel | Fehler beim Verarbeiten von Nachricht: 10205, Modul SOAPServer, Nachricht: Access violation at address 0065E7BB in module ‚ips.exe‘. Read of address 4F52524D
29.03.2010 07:05:41.34 | 0 | ERROR | Kernel | Fehler beim Verarbeiten von Nachricht: 10205, Modul SOAPServer, Nachricht: Access violation at address 0065E7BB in module ‚ips.exe‘. Read of address 4F52524D
29.03.2010 07:05:41.34 | 0 | ERROR | Kernel | Fehler beim Verarbeiten von Nachricht: 10205, Modul SOAPServer, Nachricht: Access violation at address 0065E7BB in module ‚ips.exe‘. Read of address 4F52524D
29.03.2010 07:05:41.34 | 0 | ERROR | Kernel | Fehler beim Verarbeiten von Nachricht: 10205, Modul SOAPServer, Nachricht: Access violation at address 0065E7BB in module ‚ips.exe‘. Read of address 4F52524D
29.03.2010 07:05:41.34 | 0 | ERROR | Kernel | Fehler beim Verarbeiten von Nachricht: 10205, Modul SOAPServer, Nachricht: Access violation at address 0065E7BB in module ‚ips.exe‘. Read of address 4F52524D

Danach folgen noch einmillionvierhunderzweitausend Zeilen, die der letzten zumeist identisch sind. Lediglich die „Read of address“ ändert sich ab und an mal.
Könnt ihr damit irgend etwas anfangen? Ich würde ja gerne das ganze Log hochladen, aber es ist mit 1.7 MByte (gezippt) immer noch zu groß.

Cheers,

Andreas

PS: Die letzten beiden Skripte, die vor dem Ausstieg ausgeführt wurden:

29636.ips.php: (ermittelt die aktuelle Zeit zur Darstellung auf dem Dashboard - Aufruf minütlich);

// ID des übergeordneten Objekts ermitteln
$parentID = IPS_GetObject($IPS_SELF);
$parentID = $parentID['ParentID'];
// IDs der einzelnen Objekte ermitteln
$currenttimeID = IPS_GetVariableIDByName("CurrentTime", $parentID);
SetValue($currenttimeID, date("d.m.y - H:i"));
?>

56298.ips.php: (bereitet Wetterdaten für WsWin auf - Aufruf 5minütlich)

<?
// ID des übergeordneten Objekts ermitteln
$parentID = IPS_GetObject($IPS_SELF);
$parentID = $parentID['ParentID'];
// IDs der einzelnen Objekte ermitteln
$ws300internID = IPS_GetObjectIDByName("WS300PC internal Sensor", $parentID);
$ws300externID = IPS_GetObjectIDByName("WS300PC KombiSensor", $parentID);
$ws300stationID = IPS_GetObjectIDByName("Wetterstation", $parentID);
// IDs der einzelnen Variablen ermitteln
$tempaID = IPS_GetVariableIDByName("Temperatur", $ws300externID);
$feuchteaID = IPS_GetVariableIDByName("Luftfeuchtigkeit", $ws300externID);
$luftdruckID = IPS_GetVariableIDByName("Pressure", $ws300internID);
$regenID = IPS_GetVariableIDByName("Zuwachs", $ws300externID);
$windID = IPS_GetVariableIDByName("Wind Geschwindigkeit", $ws300externID);

define("DateiName", "WetterAktuell.csv"); //Dateiname für WsWin Logdatei definieren
define("DateiHeader", ",,2,18,33,34,35"); //erste Zeile für neue Logdatei

//Daten holen
$tempa = GetValue($tempaID);
$feuchtea = GetValue($feuchteaID);
$luftdruck = GetValue($luftdruckID);
$regen = GetValue($regenID);
$wind = GetValue($windID);
$tag = date("d.m.y");
$zeit = date ("H:i");

//Eintrag erstellen
$ausgabe = sprintf ("%s,%s,%s,%s,%s,%s,%s", $tag, $zeit, $tempa, $feuchtea, $luftdruck, $regen, $wind);

//Datei vorhanden?
$dateifehlt = !file_exists(DateiName);

//Messung in Datei schreiben
$datei = fopen(DateiName, "a"); 
if ($dateifehlt) {
    fwrite ($datei, sprintf("%s\r",DateiHeader));//wenn die Datei neu angelegt wurde, muss der Index geschrieben werden
}
fwrite ($datei, sprintf("%s\r",$ausgabe)); //Messung in Datei schreiben

fclose($datei);
?>

Gibt’s denn gar keine Ideen seitens der Entwickler???
IPS läuft immer ca. 12 Stunden rund, dann kommt’s zu einem Einbruch. Letzte Nacht wieder:
31.03.2010 01:42:19.468 | 31543 | DEBUG | ExecuteThreadID #2 | Skriptausführung: 31543.ips.php ~ Absender: Ereignis #42702, Variable #40424, Auslöser: OnUpdate
31.03.2010 01:42:19.468 | 49005 | MESSAGE | VariableManager | [Energie\Energy Sensor Fernsehschrank\Verbrauch_Jahr] = 258,9471206671
31.03.2010 01:42:19.483 | 22959 | MESSAGE | VariableManager | [Energie\Energy Sensor Fernsehschrank\Verbrauch_Monat] = 21,5789267222583
31.03.2010 01:42:19.483 | 45926 | MESSAGE | VariableManager | [Energie\Energy Sensor Fernsehschrank\Verbrauch_Woche] = 4,96610916347862
31.03.2010 01:42:19.483 | 40775 | MESSAGE | VariableManager | [Energie\Energy Sensor Fernsehschrank\Verbrauch_Tag] = 0,709444166211232
31.03.2010 01:42:19.483 | 41393 | MESSAGE | VariableManager | [Energie\Energy Sensor Fernsehschrank\Kosten_Jahr] = 51,5304770127528
31.03.2010 01:42:19.483 | 44003 | MESSAGE | VariableManager | [Energie\Energy Sensor Fernsehschrank\Kosten_Monat] = 4,2942064177294
31.03.2010 01:42:19.499 | 43255 | MESSAGE | VariableManager | [Energie\Energy Sensor Fernsehschrank\Kosten_Woche] = 0,988255723532246
31.03.2010 01:42:19.499 | 37013 | MESSAGE | VariableManager | [Energie\Energy Sensor Fernsehschrank\Kosten_Tag] = 0,141179389076035
31.03.2010 01:42:19.499 | 31543 | DEBUG | ExecuteThreadID #2 | Ausgeführt, Resultat: 1, Erfolgreich: True, Zeit: 29 ms
31.03.2010 01:42:31.827 | 13834 | DEBUG | VariableManager | [Wetter\WS300PC KombiSensor\Temperatur] = 10,4
31.03.2010 01:42:31.827 | 22367 | MESSAGE | VariableManager | [Wetter\WS300PC KombiSensor\Luftfeuchtigkeit] = 82
31.03.2010 01:42:31.827 | 13107 | WARNING | TimerID #23, TimerThread #3 | [WS 300PC USB] = Access violation at address 00401D4F in module ‚ips.exe‘. Write of address 0052E28A

Ich habe das Gefühl, dass IPS seit dem letzten Update etwas wackelig auf den Beinden steht.

Gibt es hier schon neue Erkenntnisse ?

Habe seit dem Update von gestern auch das Problem. Muss mit der seriellen Schnittstelle (WDE1) zusammenhängen.

Gruß

Bruno

ohne externe Module läuft IPS durch.

So wie es aussieht, ist das eigentliche Problem auf der Prioritätenliste nicht sooo present, schliesslich besteht das Problem mit den SDK-Modulen schon seit letztem Jahr:mad:.

Tommi

Hallo Bruno,

wenn Du von Thommi eine dll laufen hast, nimm sie raus. Dann sollten auch deine Fehler beseitigt sein, es gibt da wohl ein Problem mit den Modulen.

Den WDE1 kannst Du auch so auslesen.

Hallo zusammen,

danke für die schnellen Antworten.

Habe nochmal das Logfile angeschaut, IPS hat Probleme mit der EM1010.dll. Diese habe ich mal rausgenommen, sollte IPS wieder abstürzen fliegt das WS…-Modul auch raus.

@rwn
Wie kann ich den WDE auslesen? Hab nichts anderes gefunden ?

Bitte kurze Info. Danke

Bruno

Hallo Rainer,

danke für den Link, hatte ich sogar schon angeschaut.

Mein Problem: Wie kann ich die S300TH-Sensoren (C… S555TH) damit auslesen?
Variablen für Luftfeuchtigkeit und Temp. … ok.
Aber welche Buffer sind das? Sind die fortlaufend von 00 bis 23 ? Zwei jeweils für die acht Sensoren und die letzten fünf für die KS300 ?

Vielleicht kannst Du mir weiterhelfen, sonst probiere ich es.

Gruß

Bruno

Hallo Bruno,

das müsste eigentlich jetzt rückwärts gehen. [18]…[15]…

Ansonsten Debug halt.

Hallo Bruno,

hier findest Du die S555TH- Sensoren:

SetValue(29189 /[ELV WDE1\Sensor_T_1]/, $buffer[3]);
SetValue(21134 /[ELV WDE1\Sensor_T_2]/, $buffer[4]);
SetValue(22476 /[ELV WDE1\Sensor_T_3]/, $buffer[5]);
SetValue(50564 /[ELV WDE1\Sensor_T_4]/, $buffer[6]);
SetValue(22873 /[ELV WDE1\Sensor_T_5]/, $buffer[7]);
SetValue(11553 /[ELV WDE1\Sensor_T_6]/, $buffer[8]);
SetValue(25864 /[ELV WDE1\Sensor_T_7]/, $buffer[9]);
SetValue(12427 /[ELV WDE1\Sensor_T_8]/, $buffer[10]);
SetValue(24680 /[ELV WDE1\Sensor_F_1]/, $buffer[11]);
SetValue(13713 /[ELV WDE1\Sensor_F_2]/, $buffer[12]);
SetValue(59814 /[ELV WDE1\Sensor_F_3]/, $buffer[13]);
SetValue(24612 /[ELV WDE1\Sensor_F_4]/, $buffer[14]);
SetValue(36934 /[ELV WDE1\Sensor_F_5]/, $buffer[15]);
SetValue(22264 /[ELV WDE1\Sensor_F_6]/, $buffer[16]);
SetValue(31767 /[ELV WDE1\Sensor_F_7]/, $buffer[17]);
SetValue(53773 /[ELV WDE1\Sensor_F_8]/, $buffer[18]);
SetValue(15484 /[ELV WDE1\KS200_Außentemperatur]/, $buffer[19]);
SetValue(58884 /[ELV WDE1\KS200_Windgeschwindigkeit\KS200_Außenfeuchte]/, $buffer[20]);
SetValue(29364 /[ELV WDE1\KS200_Windgeschwindigkeit]/, $buffer[21]);

Gruß Grandie

Guten Abend Grandie,

hätte früher mal reinschauen sollen … Kann Deine Angaben aber bestätigen. :smiley:
Danke für die Hilfe.

Weiss jemand für was die Buffer 0-2 und 24 sind? Bei 0 und 1 wird jedesmal eine 1 ausgegeben.

Schönen Abend

Bruno

Hallo Powerfreddy,

der Aufbau des Datensatzes für den USB-WDE1 findest Du in der Bedienungsanleitung oben auf Seite 4.

Das Gerät läuft bei mir übrigens mit dem Modul von www.tdressler.de und 8 Temp.Sensoren tadellos.

Gruß Stefan

Hallo Stefan,

es bestätigt sich immer wieder: Wer lesen kann … (und will)

Das Modul lief bei mir im Prinzip auch, nur IPS ist „eingeschlafen“ oder…? Nach letztem Versuch bis heute Morgen (wieder Neustart) habe ich das Dressler-Modul gelöscht und benutze jetzt den Vorschlag von Rainer. Seit heute morgen läuft IPS ohne Schwierigkeiten.

Woran es genau liegt? Keine Ahnung. Vielleicht mag IPS keine Fremdmodule mehr. Its a Bug or a feature ???

Gruß

Bruno