VDR mit FHEM bedienen - Leerzeichen werden nicht übermittelt

Begonnen von allgaier, 18 März 2016, 09:11:34

Vorheriges Thema - Nächstes Thema

allgaier

Servus,
vielleicht finde ich hier gleichgesinnte   ;)

Ich möchte meinen VDR mit der FHEM Fernbedienung "remotecontrol" steuern. http://www.fhemwiki.de/wiki/Remotecontrol
Die Befehle gehen per SVDRP an den VDR http://vdr-wiki.de/wiki/index.php/SVDRP

Mit einem notify kann ich auch Befehle an den VDR senden:
define VDR.kanal.hoch.notify notify VDR.kanal.hoch "echo CHAN + | nc 192.168.XXX.XXX 6419 "


Die definition von remotecontrol schaut nun so aus:

...
define FB.VDR remotecontrol
attr FB.VDR rc_iconpath icons/remotecontrol
attr FB.VDR rc_iconprefix black_btn_
...
attr FB.VDR row00 CHAN +:CHUP
...
define notify_rc1 notify FB.VDR "echo ""$EVENT"" | nc 192.168.XXX.XXX 6419 "
...


Problem ist dass das Leerzeichen in "CHAN +" nicht übermittelt wird und somit der VDR nichts damit anfangen kann.

Ein %20 funktioniert auch nicht https://forum.fhem.de/index.php/topic,20784.msg143412.html#msg143412

Weiß von euch jemand, wie ich fhem dazu bringe mit meinem vdr zu sprechen?

DANKE!

Gruß Markus

Reinerlein

Hallo Markus,

bist du dir denn sicher, dass Remotecontrol ein Leerzeichen im Befehl zulässt?
Ansonsten muss du dir da einen sicheren Platzhalter definieren (vielleicht ein ~ oder so), welches du im Notify dann entsprechend umwandelst...

Da fällt mir gerade dein Notify auf: du hast keine Perl-Sequenz mittels {} eingeleitet, und führst keinen Fhem-Befehl aus. Vielleicht ist das auch dein Problem...

Schreib mal

define notify_rc1 notify FB.VDR { print "echo ""$EVENT"" | nc 192.168.XXX.XXX 6419 " }


Grüße
Reiner

allgaier

Servus Reiner,
danke für die Antwort.

Das mit dem Klammern habe ich eingebaut, hat aber leider nichts gebracht.

Mit dem Platzhalter im Notify umwandeln klingt eher ziehlführend. Wie müsste ich denn das machen?

Mein Lösungsweg, mit dem ich nicht weiterkomme:
In der Variable $EVENT das ~ durch ein Leerzeichen umwandeln.
Das $EVENT müsste mit $EVENT =~ tr/~/ /; in derselben Zeile umgewandelt werden.
Nur wie bringe ich das in den notify befehl in die {} vor das print?

Gruß Markus

Reinerlein

Hallo Markus,

am Besten mit dem Def-Button in der Fhemweb-Oberfläche editieren.

Dort dann einfach:

FB.VDR {
  my $command = $EVENT; # Nur zur Sicherheit auf einer Kopie arbeiten...
  $command =~ s/~/ /g;
  print 'echo "'.$command.'" | nc 192.168.XXX.XXX 6419 ';
}
eingeben...

Grüße
Reiner

allgaier

Servus,
hab jetzt x verschiedene Varianten probiert. Er schneidet mir in der Variante dann das "+" von "CHAN +" ab.
weitergegeben wird immer das CHAN mit dem Trennzeichen.

Gruß

Hans Franz

Hallo,
Ich denke, dass das +-Zeichen (wie auch das &-Zeichen) nicht als Bestandteil des $EVENT auftauchen. Andere Zeichen gehen.
attr FB.VDR row00 CHUP
notify:
FB.VDR {
if ($EVENT eq "CHUP") {
    print 'echo CHAN + | nc 192.168.XXX.XXX 6419 ';
    }
}


Gruß
Hans
Raspi
CUL, Nano-CUL
FHT8V, FHT80B, S300TH
WM1000WZ, ELRO
LW12, LD382,DS18B20