CCU reagiert nach Debug-Script nicht mehr

Einrichtung, Anschluss und Programmierung der HomeMatic CCU

Moderator: Co-Administratoren

Antworten
saschahb
Beiträge: 124
Registriert: 27.04.2009, 21:39

CCU reagiert nach Debug-Script nicht mehr

Beitrag von saschahb » 15.06.2009, 16:57

Moin,

ich schreibe gerade an einem Debug-Script, welches alle Zustände und Werte eines Devices in eine Logdatei schreiben soll...
Sobald das Script einmal läuft reagiert jedoch die CCU nicht mehr. SSH auf der BOX läuft weiter, jedoch ist ein Arbeiten via WebIF nicht mehr möglich. Hat jemand eine Idee, was da passiert?

Code: Alles auswählen

string name = "HM-Sec-MDIR FEQ00XXXXX";

string text = "";

var item = dom.GetObject(name);
text = "--- OBJECT: " # name # " ---\n";
text = text # "Name: " # item.Name() # "\n";
text = text # "ID: " # item.ID() # "\n\n";

text = text # "CHANNELS with Datapoints:\n";
string chnID;
foreach ( chnID, item.Channels() )
{
  var channel = dom.GetObject(chnID);
  text = text # "Address: " # channel.Address() # "\n";

  string dpID;
  foreach ( dpID, channel.DPs() )
  {
    var dp = dom.GetObject(dpID);
    text = text # "- Name: " # dp.Name() # "\n";
    text = text # "- State: " # dp.State() # "\n";
    text = text # "- Value: " # dp.Value() # "\n";
  }
}
system.Exec("/usr/local/addons/smsc/log.sh " # text );
Das log.sh Script nimmt ganz simpel den Input und schreibt Ihn in eine Datei.

Code: Alles auswählen

#!/bin/sh

STRING=$*
IFS="\n"

for item in $STRING; do
  echo $item >>/usr/local/addons/smsc/log.txt
done
 
exit 0

saschahb
Beiträge: 124
Registriert: 27.04.2009, 21:39

Re: CCU reagiert nach Debug-Script nicht mehr

Beitrag von saschahb » 15.06.2009, 17:31

Ich konnte herausfinden, dass beim Überschreiten einer maximalen Parameterlänge ein Prozess auf der CCU die Biege macht. Ok, nun dachte ich mir, teile halt einfach die Logmeldungen auf und rufe öfter mal das Log-Script auf.

Das funktioniert jedoch nicht. Bei mehreren system.Exec in einem Script spielt die CCU nicht mit. Ich habe mal ein Beispielscript vom Homematic-Inside Blog genommen:

Code: Alles auswählen

system.Exec("logger -t script -p user.debug [DEBUG_STRING]");
Beim Aufruf des Scripts wird der String nach /var/log/messages geschrieben.

Jun 15 17:30:22 (none) user.debug script: [DEBUG_STRING]

Versucht man nun jedoch 2 Logging-Aufrufe erzeugt dieses eine Fehlermeldung:

Jun 15 17:30:22 (none) user.debug script: [DEBUG_STRING]
Jun 15 17:30:22 (none) local0.err ReGaHss: Error: IseESP::ExecError= Execution failed: [-1] 0 0x00 [0] 160 0xa0 [1] 0 0x00 [2] 97 0x61 [3] 0 0x00 [4] 49 0x31 [../Platform/DOM/iseESPexec.cpp (12045)]


Hoffe da hat jemand eine Idee...

Viele Grüße
Sascha

saschahb
Beiträge: 124
Registriert: 27.04.2009, 21:39

Re: CCU reagiert nach Debug-Script nicht mehr

Beitrag von saschahb » 07.07.2009, 15:01

Hat es jemand hinbekommen mehr als ein system.Exec() in einem Script zu nutzen? Es wird immer nur einmal aufgerufen. Ein zweites Mal funktioniert nicht. Gibt es hierfür einen Grund?

Grüße
Sascha

Christoph
Beiträge: 283
Registriert: 28.07.2007, 13:12

Re: CCU reagiert nach Debug-Script nicht mehr

Beitrag von Christoph » 07.07.2009, 18:13

ich habe ein Script mit zwei system.Exec()-Aufrufen. Allerdings funktioniert es nicht. Ich hatte nicht nach dem Fehler gesucht, da das Script nur bei Neustart der CCU ausgeführt werden muss. Da habe ich dann einfach von Hand eingegriffen.

Könnte also durchaus sein, dass nur ein system.Exec() funktioniert.
Ciao, Christoph.

dirch
Beiträge: 579
Registriert: 24.10.2008, 03:26
Hat sich bedankt: 1 Mal
Danksagung erhalten: 2 Mal

Re: CCU reagiert nach Debug-Script nicht mehr

Beitrag von dirch » 08.07.2009, 22:53

Ich hab mir das gerade angeschaut, in der Tat gibt es ein Problem wenn man Exec() keine Variablen uebergibt wo es STDOUT und STDERR hinschreiben kann. Bislang dachte ich die beiden Parameter waeren optional, offenbar ist dem aber nicht so. Also so gehts nicht:

Code: Alles auswählen

string stdout;
string stderr;
var t1 = system.Exec("touch /tmp/test1");
var t2 = system.Exec("touch /tmp/test2");
var t3 = system.Exec("ls -la /tmp/", &stdout, &stderr);
WriteLine(stdout);
So aber schon:

Code: Alles auswählen

string stdout;
string stderr;
var t1 = system.Exec("touch /tmp/test1", &stdout, &stderr);
var t2 = system.Exec("touch /tmp/test2", &stdout, &stderr);
var t3 = system.Exec("ls -la /tmp/", &stdout, &stderr);
WriteLine(stdout);

Gruss,
Dirch
Neun von zehn Stimmen in meinen Kopf sagen ich bin nicht verrückt. Die andere summt die Melodie von Tetris . ...

matheversum
Beiträge: 287
Registriert: 27.04.2009, 13:46

Re: CCU reagiert nach Debug-Script nicht mehr

Beitrag von matheversum » 09.07.2009, 15:48

Hallo

wohin schreibt denn das WriteLine(...)?

dirch
Beiträge: 579
Registriert: 24.10.2008, 03:26
Hat sich bedankt: 1 Mal
Danksagung erhalten: 2 Mal

Re: CCU reagiert nach Debug-Script nicht mehr

Beitrag von dirch » 10.07.2009, 09:44

Das WriteLine() macht nur auf der post.htm Seite Sinn: http://homematic-forum.de/forum/viewtop ... 25&p=13515
Neun von zehn Stimmen in meinen Kopf sagen ich bin nicht verrückt. Die andere summt die Melodie von Tetris . ...

Antworten

Zurück zu „HomeMatic Zentrale (CCU / CCU2 / CCU3 / Charly)“