Autostart symcon unter Ubuntu (Linux Mint 17.2 Rafaela 64-bit)

Danke für die Rückmeldung.
Das ist wohl der Knackpunkt, weswegen es nur per sudo funktioniert.
Ich werde mal einen Test mit einer reinen Ubuntu-Distro testen.

Ein erneuter Test mit Ubuntu 14.04 LTS hat auch keinen Verbesserung mit der Autostart-Funktion des symcon-Dienstes ergeben.
Nach dem Neustart des Systems läuft symcon nicht wieder an!!

Das Ausführen des Startbefehls als root (nach Eingabe von sudo -i) hat auch keine Verbesserung ergeben.
siehe unten

ips@NENsIPS:~$ sudo ps x | grep symcon
[sudo] password for ips:
ips@NENsIPS:~$ sudo -i
root@NENsIPS:~# ps x | grep symcon
2174 pts/9 S+ 0:00 grep --color=auto symcon
root@NENsIPS:~# /etc/init.d/symcon start
IP-Symcon started with PID 2187
root@NENsIPS:~# ps x | grep symcon
2187 ? Ssl 0:00 /usr/bin/symcon service
2220 pts/9 S+ 0:00 grep --color=auto symcon

Hat noch jemand eine Idee??

Das ist echt merkwürdig…Hast du die Server oder Desktop Version?

Die rc scripts hast du geprüft, wie oben beschrieben? Bitte mal rebooten und die logs anschauen. Steht was im IPS log?

Gruß

Hallo,

ich habe das mal nachgestellt (mit Ubuntu 14.04 LTS Server).

der Autostart nach einem Reboot funktioniert, jedoch stürzt der Dienst direkt wieder ab. Die letzte Meldung im Log ist

14:28:25 | 20315 | MESSAGE | Module Control | Creating...

24-07-2015 12-34-17.jpg

Apport meldet einen Crash:

Scheint also ein Bug in der Ubuntu bzw. x86 Version zu sein?

Gruß

Ist bei mit Identisch, auch der Absturz beim Laden des Modul Control nachdem das System gestartet ist.
Anschließend kann IPS jedoch per Hand starten und es läuft.

Das Apport einen Crash meldet, hatte ich hier schon mal gepostet… aber das ist ja schon ein ‚paar‘ Versionen her.
IP-Symcon Community Forum

Michael

Hallo,

ich habe das mit der Desktop-Version festgestellt.
Mit der Server-Version wollte ich das auch noch testen.

Unter LinuxMint 17.2 bekomme ich eine Fehlermeldung.
Ich kann damit noch nicht viel anfangen, ich muss mich mit den Meldungen erst noch auseinander setzen.

Sobald ich näheres weis, melde ich mich.

Vielen Dank auch für Deine Bemühungen.
Ich frage mich nur, was machen die anderen Ubuntu-User??
Bei denen müsste das doch auch aufgefallen sein. :rolleyes:

Hi,

ich habe bei meinem 6 Raspis das gleiche Problem festgestellt.

Vermutlich bedingt dadurch, dass ich auf die aktuelle Beta nicht mittels „sudo apt-get upgrade“ sondern nur mittels „sudo apt-get install symcon“ kam, sind die Verzeichnisrechte alle von PI auf ROOT geändert worden.

Folgende zwei Befehle beheben das Problem:


cd /usr/share
sudo chown pi:pi symcon -R

Beste Grüße
herbertf

Auch wenn nun SYMCON bei den Reboots startet, hat die aktuellste BETA doch solche Probleme, sie stürzt ja ständig ab. :(:(:frowning:

Gehe jetzt wieder mit einigen Installs auf den 23.06. zurück (symcon_0.1-200_armhf.deb)

Hast du da mehr Infos für mich? Da wir einiges geändert haben (=ändern mussten) kann es gut sein, dass die Stabilität zur Zeit noch schlechter ist als in den Vorversionen. Ich würde aber gerne die Verursacher finden und eliminieren :slight_smile:

paresy

Hi Paresy,

würde ich auch gern.

Habe derzeit noch ein System auf der aktuellen Beta - stürzt nach ca. 5 - 30 Minuten ab (nur der SYMCON Dienst). Ich kann Dir gern Logs senden, im SYMCON Log steht aber nix.

Debugging für Experten habe ich auch schon gemacht, da erscheint:

(gdb) run
Starting program: /usr/bin/symcon
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/arm-linux-gnueabihf/libthread_db.so.1".

Program received signal SIGILL, Illegal instruction.
0x76e3b608 in ?? () from /usr/lib/arm-linux-gnueabihf/libcrypto.so.1.0.0
(gdb)

Hilft Dir dies?

Hi Paresy,

anbei die Anzahl Abstürze anhand der Log-Files. Ich starte remote den IPS-Dienst neu, bei Ausfall größer 5 Minuten. Die aktuelle Version ist faktisch nicht einsetzbar:

abstuerze_raspi_php_neu_1.PNG

Soll ich einen extra Thread aufmachen, thematisch sind wir ja hier eher falsch?

herbert

Hm. Hast du eine Möglichkeit ein „frisches“ oder kleines System bei dir aufzusetzen, damit wir eingrenzen können woran es liegt?

paresy

Mache ich jetzt für Dich …

Danke! Bisher scheint es nämlich nur bei dir so oft abzustürzen. :frowning:
Wobei evtl. dieses Problem hier passend sein könnte: IP-Symcon Community Forum

paresy

Hi Paresy,

ich bin an dem Thema noch dran, der erste TEST-Raspberry läuft, die I/O-Schnittstellen (GPIO/I2C) kann ich aber nicht wirklich nachbilden …
Ich werde jetzt noch einen meiner AKTIVEN wieder auf die aktuelle Beta nehmen.

Melde mich auf alle Fälle.

herbertf

Hi Paresy,

ich konnte den Fehler jetzt mehrfach (nicht immer!) reproduzieren !!!

Auf meinem Hauptsystem (Win) starte ich zyklisch ein Script,welches ein Script auf dem Remotesystem (Raspi) startet:

<?
$Par_ID=IPS_GetParent($_IPS['SELF']);
$Name=IPS_GetName($Par_ID);
IPS_LogMessage("$Name", "Generalabfrage durchführen");
$rpc=new JSONRPC("http://xxx@yyyyy:zzzzz@192.168.4.56:3777/api/");
$rpc->IPS_RunScript(36875);
?>

Dies führt bei den Versionen mit dem geänderten PHP fast immer zum Absturz des IPS-Dienstes!

Ob dies am Inhalt des Scriptes (Generalabfrage aller Werte welche uebertragen werden sollen) auf dem PI liegt habe ich noch nicht untersucht, dieser ist:


<?
// GA ausfuehren fuer alle Variablen im Ordner
$Par_ID=IPS_GetParent($_IPS['SELF']);
$variablen_array=IPS_GetChildrenIDs($Par_ID);
$var_ids = array();
foreach ($variablen_array as $value)        //durchsucht alle Objekte unter PAR_ID
{
    $var_object_type=IPS_GetObject($value);
    $ObjTyp=$var_object_type['ObjectType'];
    $Name=IPS_GetName($value);
    // Ermittlung Variable
   If ($ObjTyp==2)     {  //Prüfung ob Objekt Variable
        //echo $Name;
        $Variable=IPS_GetVariable ($value);
        $ObjInfo=$var_object_type['ObjectInfo'];
        $Nummer= (int) substr($ObjInfo, -2);
        //echo " $ObjInfo $Nummer ";
        $wert=(int) shell_exec("/usr/local/bin/gpio read $Nummer");
        if ($wert==0) $wert=false;
           else $wert=true;
        //echo " $value - $wert
";
        If (GetValueBoolean($value)!=$wert) SetValueBoolean($value,$wert);
    }
}
IPS_Sleep(1000);
//Variablen übertragen
$variablen_array=IPS_GetChildrenIDs($Par_ID);
$var_ids = array();
foreach ($variablen_array as $value)        //durchsucht alle Objekte unter PAR_ID
{
    $var_object_type=IPS_GetObject($value);
    $ObjTyp=$var_object_type['ObjectType'];
    $Name=IPS_GetName($value);
    // Ermittlung Variable
   If ($ObjTyp==2)     {  //Prüfung ob Objekt Variable
       $Variable=IPS_GetVariable ($value);
       $ObjID=$var_object_type['ObjectID'];
        //echo "Object $ObjID
";
        $ScriptID=@IPS_GetScriptIDByName("uebertragen",$ObjID);
        if (@IPS_ScriptExists($ScriptID)) {
           IPS_RunScript($ScriptID);
           //echo "Script=$ScriptID gestartet
";
        }
    }
}
?>

Bitte beheb diesen Fehler - geht in den alten Versionen tadellos.

herbertf

Ich kann dies leider bisher hier nicht nachstellen. Kannst du den Absturz auch provozieren, wenn du das Skript direkt auf dem Pi ausführst?

paresy

auf einem Testsystem ja - auf einem nein
Bin jetzt gerade dabei SYMCON neu zu installieren und auch ein Raspi FW-Update zu machen - melde mich nochmals

Hallo Paresy,

ich hatte mir ja bereits vorgestern einen jungfräulichen PI1 neu aufgesetzt, auf diesen habe ich gestern die „am häufigsten abstürzende SYMCON-Installation“ aufgespielt - und keinen Absturz gehabt seit gestern Abend (ca. 24h).

Auf meinen aktiven PI2 konnte ich den Fehler ja relativ sicher auslösen (vorhergehende Beiträge). Ich habe mir nun jetzt die Mühe gemacht ein Produktivsystem ebenfalls ganz jungfräulich aufzusetzen. Diesmal habe ich die seit 24h funktionierende Symcon Installation des 1.Testsystems aufgespielt.

Hier ist der Fehler da.

Ich habe nun folgendes Script auf dem „jungfräulichen PI1“ und dem „jungfräulichen PI2“ gestestet und bin überzeugt, der FEHLER TRITT NUR AM PI2 auf!

Ich habe „quick and dirty“ relativ weit unten im folgenden Script ein „Goto“ kommentiert, damit kann man den IPS-Absturz zu- und abschalten ;-))) (Spätestens beim 5.Versuch)

Wenn Du das nicht bei euch nachstellen kannst - spring ich aus dem Fenster …


<?
// GA ausfuehren fuer alle Variablen im Ordner
//
//
//
$Par_ID=IPS_GetParent($_IPS['SELF']);
//
//Auslesen I2C Bus und Umrechnung
$dezzahl= 123; //hexdec( shell_exec("i2cget -y 1 $I2C_Adresse"));
//echo "
Dezzahl $dezzahl";
$i2c_arr=array();
if ($dezzahl>=128) $i2c_arr[7] =1; else $i2c_arr[7] =0;
if ($dezzahl%128>=64) $i2c_arr[6] =1; else $i2c_arr[6] =0;
if ($dezzahl%64>=32) $i2c_arr[5] =1; else $i2c_arr[5] =0;
if ($dezzahl%32>=16) $i2c_arr[4] =1; else $i2c_arr[4] =0;
if ($dezzahl%16>=8) $i2c_arr[3] =1; else $i2c_arr[3] =0;
if ($dezzahl%8>=4) $i2c_arr[2] =1; else $i2c_arr[2] =0;
if ($dezzahl%4>=2) $i2c_arr[1]  =1; else $i2c_arr[1]  =0;
if ($dezzahl%2>=1) $i2c_arr[0] =1; else $i2c_arr[0] =0;
//
//
$variablen_array=IPS_GetChildrenIDs($Par_ID);
$var_ids = array();
foreach ($variablen_array as $value)        //durchsucht alle Objekte unter PAR_ID
{
    $var_object_type=IPS_GetObject($value);
    $ObjTyp=$var_object_type['ObjectType'];
    $Name=IPS_GetName($value);
    // Ermittlung Variable
   If ($ObjTyp==2)     {  //Pruefung ob Objekt Variable
        //echo $Name;
        $Variable=IPS_GetVariable ($value);
        $ObjInfo=$var_object_type['ObjectInfo'];
        $Nummer= (int) substr($ObjInfo, -2);
        $wert=$i2c_arr[$Nummer];
        if ($wert==0) $wert=false;
           else $wert=true;
        //echo "
$ObjInfo $Nummer $wert";
        If (GetValueBoolean($value)==$wert)    SetValueBoolean($value,!$wert);
    }
}
//IPS_Sleep(1000);
//Variablen übertragen
$variablen_array=IPS_GetChildrenIDs($Par_ID);
$var_ids = array();
foreach ($variablen_array as $value)        //durchsucht alle Objekte unter PAR_ID
{
    $var_object_type=IPS_GetObject($value);
    $ObjTyp=$var_object_type['ObjectType'];
    $Name=IPS_GetName($value);
    // Ermittlung Variable
   If ($ObjTyp==2)     {  //Prüfung ob Objekt Variable
       $Variable=IPS_GetVariable ($value);
       $ObjID=$var_object_type['ObjectID'];
        //echo "Object $ObjID
";
        $ScriptID=IPS_GetScriptIDByName("uebertragen",$ObjID);
        //Goto Ende_Script;  //folgende Zeilen führen auf einem RASPI PI2 zum Absturz von IPS, auf dem PI1 nicht
        //eindeutig reproduzierbar - spätestens beim 5. Ausführen des Scripts
        if (IPS_ScriptExists($ScriptID)) {
           IPS_RunScript($ScriptID);
           //echo "Script=$ScriptID gestartet
";
        }
    }
}
Ende_Script:
?>

[b]Hi Paresy,

vielen DANK - scheinbar war es dies in 350c1269.[/b]

Es scheint noch einen anderen Fehler zu geben - der mit dem Script ist bei mir scheinbar weg …

Schönen SONNTAG

herbertf