Befehl von einer FHEM-Instanz zu einer anderen

Begonnen von herman, 19 Februar 2014, 15:32:04

Vorheriges Thema - Nächstes Thema

herman

Hallo,

aus Stabilitätsgründen habe ich eine zweite FHEM-Instanz am laufen bei der ich gerade mit Sonos experimentiere.
Beide Instanzen laufen auf dem gleichen RPI.

Aktuell sende ich per Kommandozeile Befehle von der ersten an die zweite.

z.B. system("perl /opt/fhem2/fhem.pl 7072 "set Sonos Play")

Leider ist dieser Aufruf nicht asynchron und führt dazu FHEM ein paar Sek hängt.

Ich weiß, dass es das Modul FHEM2FHEM gibt, jedoch habe ich die beiden Modus nicht verstanden. Ich möchte auch vermeiden, dass die zweite Instanz die erste zum Absturz bringt.

Faktisch übermittle ich aktuell den state von 3 Dummys an die zweite Instanz.
Wie würde man das mit FHEM2FHEM intelligent lösen?

Danke & Grüße,
Merhan



herman

Habe diesen Ansatz verfolgt.

http://forum.fhem.de/index.php/topic,16784.msg109752.html#msg109752

Das funktioniert soweit.

Hält eigentlich ein notify das vom Client-FHEM verarbeitet wird der "erste" FHEM auf?

rudolfkoenig

ZitatHält eigentlich ein notify das vom Client-FHEM verarbeitet wird der "erste" FHEM auf?

Normalerweise nicht, es sei denn der Client-FHEM mehr als 500kb+ an events nicht abnimmt.
Wenn es passieren sollte, bitte melden, dann stelle ich dies auch auf ganz-nonblocking um.

Zitatz.B. system("perl /opt/fhem2/fhem.pl 7072 "set Sonos Play")
"perl /opt/fhem2/fhem.pl 7072 "set Sonos Play" als FHEM-Befehl waere asynchron.

herman

Hallo Rudi,

Über Telnet oder die Kommandoeingabe funktioniert


"/opt/fhem2/fhem.pl 7073 "set TestDummy on""


Wie wäre die korrekte Syntax wenn ich das asynchrone Kommando in 99_myUtils.pm einbaue?

Vielen Dank!

rudolfkoenig

Vermutlich am einfachsten mit
  CommandAnalyze('"/opt/fhem2/fhem.pl 7073 "set TestDummy on""');
Oder
system('/opt/fhem2/fhem.pl 7073 "set TestDummy on" &');
wobei hier die Umleitung von STDOUT/STDERR fehlt.