Moin Moin alle zusammen,
ich möchte momentan ein Videoplayer automatisieren.
Dabei geht es um einen https://www.brightsign.biz player. Kennt man eher aus dem Eventbereich.
Die Player reagieren auf ein UDP befahl. Z.b. ein Datagram mit "Start".
Nun habe ich mich noch nicht so tief mit Perl beschäftigt,
zum anderen wird es auch einfach zu lange für mein Projekt dauern.
Also will ich das ganze ohne eigenes Modul lösen sondern viel lieber mit ein paar Zeilen Perl.
Kann mir da jemand helfen?
Grüße Gabel
sub UDP_Msg($$)
{
my ($dest,$cmd) = @_;
my $sock = IO::Socket::INET->new(
Proto => 'udp',
PeerPort => 6666,
PeerAddr => $dest
) or die "Could not create socket: $!\n";
$sock->send($cmd) or die "Send error: $!\n";
return "send $cmd";
}
als sub für die myUtils. Dann aufrufen per
UDP_Msg("HOST","MESSAGE");
Zitat von: marvin78 am 12 August 2016, 07:42:37
) or die "Could not create socket: $!\n";
"die" führt dazu, dass FHEM beendet wird. Keine gute Idee, mMn.
Und wie macht man es dann besser?
Grüße
Entweder $@ (falls gesetzt) auswerten oder die Rückgabe von $socket auswerten und dann return "geht nicht".
Du hast recht. Ist auch nur als Anregung gedacht. Ein bisschen denken setze ich voraus und mit "ich will nicht Perl lernen aber FHEM soll mir alle Wünsche erfüllen" kann ich ohnehin nichts anfangen.
Zitat von: dev0 am 12 August 2016, 09:07:22
Entweder $@ (falls gesetzt) auswerten oder die Rückgabe von $socket auswerten und dann return "geht nicht".
Ich danke Dir.
Grüße
Eigentlich wollte ich mich da jetzt gar nicht reindenken ;) Da ich mich jetzt aber schon eingemischt habe...
...würde ich es so versuchen (ungetestet):
sub UDP_Msg($$)
{
my ($dest,$cmd) = @_;
eval "require IO::Socket::INET";
if($@) {
Log 1, $@;
return "Can't load IO::Socket::INET"
}
my $sock = IO::Socket::INET->new(
Proto => 'udp',
PeerPort => 6666,
PeerAddr => $dest
);
if(!$sock) {
return "something went wrong"
}
$sock->send($cmd);
$sock->close();
return "send $cmd"
}
Edit: $sock->close(); ergänzt
Aus gegebener Anlass: $sock->close() fehlt :)
Ergänzt und jetzt sogar getestet:
{UDP_Msg("10.13.1.53","Hello")}
send Hello
fhem@odroid1:/opt/fhem$ nc -l 6666 -u
Hello
;)