wie trigger ich ein bash-script nach z.B. 10 Sekunden unter fhem richtig?

1,134 views
Skip to first unread message

lo4dro

unread,
Jun 17, 2012, 3:23:44 PM6/17/12
to fhem-...@googlegroups.com
Hallo Leute,

im Moment fehlt mir eine Idee.
Da das 10_EIB.pm einen kleinen Fehler hat (vielleicht liegt es nicht am 10_EIB.pm)
Es vergisst alle Rollopossitionen und setzt die Werte auf 0%

Nun kann ich manuell auf der bash mit dem Befehl "groupread ip:localhost 0/0/35" die Werte gezielh abfragen.
Und im fhem stehen die Werte wider korrekt.
Daher habe ich mir ein Script geschrieben das genau diese für alle 6 Rollos macht.

Nun möchte ich dieses Befehl ca. 10 Sekunden nach einem notify auslösen.
Nur wie mach ich das richtig,.
In Perl kann ich mit system (......) ein Script starten.
Ich könnte zwar diese 10 Sekunden ins Script schreiben, nur weis ich nicht ob der Ansatz überhaupt so richtig ist.

meine DEF sieht so aus:

(sv:currentPower.*) { 
my $hm = sprintf("%%02d:%%02d", $hour, $min);
if( $month ge "6" && $month le "9") {
 if ( $hm gt "09:00" && $hm  lt "19:00") { 
  if (%EVTPART1  < 4000 ) {
   if (ReadingsVal('du.sonnenlichtpersolarlow','state',0) == 0) {
    fhem('set Flur1 Auf');
    fhem('set RBUERO1 Auf');
    fhem('set RBUERO2 Auf');
    fhem('set KuecheOG Auf');
    fhem('set BadOG Auf');
    fhem('set du.sonnenlichtpersolarlow 1');
    fhem('set du.sonnenlichtpersolarhigh 0');
    system('/usr/share/fhem/FHEM/rollo_statuslesenknx.sh');
    }
   }else {
   if (%EVTPART1 > 8000 ) {
    if (ReadingsVal('du.sonnenlichtpersolarhigh','state',0) == 0) {
     fhem('set Flur1,Flur2,RBUERO1,RBUERO2 Ab');
     fhem('set KuecheOG,BadOG Pos3');
     fhem('set du.sonnenlichtpersolarlow 0');
     fhem('set du.sonnenlichtpersolarhigh 1');
     system('/usr/share/fhem/FHEM/rollo_statuslesenknx.sh');
     }
    }
   }
  }
 }
}


Rudolf Koenig

unread,
Jun 17, 2012, 5:52:57 PM6/17/12
to fhem-...@googlegroups.com
> In Perl kann ich mit system (......) ein Script starten.

oder mit `...`

> Ich k�nnte zwar diese 10 Sekunden ins Script schreiben, nur weis ich nicht
> ob der Ansatz �berhaupt so richtig ist.

Damit das gestartete Shellskript mit fhem interagieren kann, muss man es im
Hintergrund starten (sonst wartet fhem blockierend, bis es fertig ist):

system('/usr/share/fhem/FHEM/rollo_statuslesenknx.sh&');

Am besten leitet man auch die Ausgabe ins fhem-log um (Achtung, " statt '):

system("/usr/share/fhem/FHEM/rollo_statuslesenknx.sh >> $currlogfile 2>&1 &");

lo4dro

unread,
Jun 18, 2012, 1:37:38 AM6/18/12
to fhem-...@googlegroups.com
Danke für den Tipp.


Am Sonntag, 17. Juni 2012 23:52:57 UTC+2 schrieb Rudolf Koenig:
> In Perl kann ich mit system (......) ein Script starten.

oder mit `...`

> Ich k�nnte zwar diese 10 Sekunden ins Script schreiben, nur weis ich nicht
> ob der Ansatz �berhaupt so richtig ist.
Reply all
Reply to author
Forward
0 new messages