Callmonitor: Angepasste notify funktioniert nicht

Begonnen von onkel-tobi, 02 März 2015, 11:14:28

Vorheriges Thema - Nächstes Thema

onkel-tobi

Hallo zusammen,

ich habe mir den Callmonitor eingebunden, der funktioniert (bis auf das einlsesen des TElefonbuches auch).
Nun habe ich die Beispiel notify angepasst, da ich gerne meinen TV / mein enigma Receiver bei eingehendem Anruf leiser machen würde + die Nummer anzeigen lassen möchte:

# Wenn Telefon klingelt, wechsle zum FP "Telefon",zeige und sage Anrufer an:
define Func_TelMon_Show_N notify my_callmonitor:event:.ring { \
my $extnum = ReadingsVal("my_callmonitor", "external_number", undef);;\
my $extname = ReadingsVal("my_callmonitor", "external_name", undef);;\
{fhem "set eg_wz_quad volume 35"};
{fhem "set eg_wz_quad showText Anruf von: $extname ($extnum)};
}

Packe ich nur einen Befehl in die notify funktioniert sie, z.B.:
define Func_TelMon_Show_N notify my_callmonitor:event:.ring {fhem "set eg_wz_quad volume 35"}
Sobald ich mehrere BEfehle absetzen möchte kriege ich es nicht hin.
Vielleicht sieht ja jemand von euch direkt, was ich hier falsch mache? Eigtl. wollte ich noch eine ABfrage machen, ob der Receiveran ist um dann entweder TV(wenn man gerade mal einen Film schaut) oder Receiver zu schalten, aber das hab ich erst mal rausgenommen.

Gruß,
Tobi

jojoja

Hallo Tobi,
bei der letzten Zeile fehlt ein " zum Schluss.
Ich setzt die fhem-Befehle immer in Klammer, also fhem(" "), ist aber wohl nicht zwingend notwendig.
FHEM 6.0 @ IntelNUC6CAYH;  Unifi USG, Switch, AP AC Pro; HM-MOD-UART;  Sonos Play 1 & 3, One, Beam; Philips Hue

onkel-tobi

#2
Hi jojoja,

danke für deine Antwort, die sind wohl bei einem der letzten Tests von mir unterschlagen worden...
Trotzdem geht es leider nicht. Habe die fhem AUfrufe noch in geschweifte Klammern gesetzt (s. code oben).
Im log kriege ich nun die Meldung:

2015.03.02 11:34:20 2: FB_CALLMONITOR (my_callmonitor) - read 5 contacts from Cache
Variable "$extname" is not imported at (eval 118) line 1, <> line 35.
Variable "$extnum" is not imported at (eval 118) line 1, <> line 35.
2015.03.02 11:34:20 1: Including ./log/fhem.save
2015.03.02 11:34:22 1: configfile: Global symbol "$extname" requires explicit package name at (eval 118) line 1, <> line 35.
Global symbol "$extnum" requires explicit package name at (eval 118) line 1, <> line 35.

Unknown command }, try help.

Lese aber gerade, dass das auch an inkompatiblen Versionen (fhem und call monitor) liegen kann.
Das würde auch erklären, wieso ich mir einbilde, dass meine ersten Tests von vor ein paar Tagen noch besser aussahen.
In der Zwischenzeit habe ich nämlich ein Update eingespielt...

Update: Update ist durch, Fehlermeldung bleibt :(

jojoja

Ich habe ein ziemlich ähnliches Szenario:

define Anruf notify FritzFon:event:.ring {\
  my $extname = (ReadingsVal("FritzFon","external_name","abc"));;\
  my $extnum = (ReadingsVal("FritzFon","external_number",123456789));;\
  my $intnum = (ReadingsVal("FritzFon","internal_number",123456789));;\
  fhem("set PushBullet message Anruf auf Festnetz von $extname ($extnum) | Haus");;\
  $extname =~ tr/ /_/;;\
  fhem("set SamsungTV call $extname $extnum $intnum");;\
}


wobei du die vorletzte Zeile missachten kannst/solltest.

Die Fehlermeldungen würde ich jetzt auf ein Problem beim Einlesen der Variablen zurückführen, was falsch ist weiß ich allerdings nicht.

Gruß Johannes
FHEM 6.0 @ IntelNUC6CAYH;  Unifi USG, Switch, AP AC Pro; HM-MOD-UART;  Sonos Play 1 & 3, One, Beam; Philips Hue

onkel-tobi

#4
Besten Dank für deinen Code.
Vielleicht lag es daran, dass die Var's bei mir undef status hatten, dein Code angepasst bei mir klappt auf jd. Fall :)
Sobald ich alles drin habe, stelle ich ihn ihr natürlich noch mal zur Verfügung.

Gruß,
Tobi

Update:
Hier der code.# Wenn Telefon klingelt, wechsle zum FP "Telefon",zeige und sage Anrufer an:
define TV_leise notify my_callmonitor:event:.ring {\
  my $extname = (ReadingsVal("my_callmonitor","external_name","abc"));;\
  my $extnum = (ReadingsVal("my_callmonitor","external_number",123456789));;\
  my $intnum = (ReadingsVal("my_callmonitor","internal_number",123456789));;\
  fhem("set eg_wz_quad volume 35");;\
  fhem("set eg_wz_quad showText Anruf von: $extname ($extnum)");;\
}
# Wenn Telefon aufgelegt, wechsle zum Haupt-FP:
define TV_laut notify my_callmonitor:event:.disconnect { \
fhem("set eg_wz_quad volume 80");;\
}

Schöner wäre natürlich, wenn ich vorher auf den state vom Receiver prüfe (wenn der aus ist stelle ich den TV leiser), aber mit der if Abfrage habe ich nur Probleme, insofern bin ich so erst mal zufrieden.
UPDATE:
Hier der Code mit Unterscheidung, ob Receiver an oder nicht:
define TV_leise notify my_callmonitor:event:.ring {\
my $extname = (ReadingsVal("my_callmonitor","external_name","abc"));;\
my $extnum = (ReadingsVal("my_callmonitor","external_number",123456789));;\
my $intnum = (ReadingsVal("my_callmonitor","internal_number",123456789));;\
if (Value("eg_wz_quad") eq "on") {\
fhem ("set eg_wz_quad volume 35");;\
fhem ("set eg_wz_quad showText Anruf von: $extname ($extnum)");;}\
else {\
fhem ("set eg_wz_tv volume 5");;\
fhem ("set eg_wz_tv pause");;}\
}