FHEM Forum

FHEM - Hausautomations-Systeme => Unterstützende Dienste => Thema gestartet von: bt25 am 24 April 2015, 09:52:15

Titel: Callmonitor: Notification auf XBMC
Beitrag von: bt25 am 24 April 2015, 09:52:15
Moin,
mein Ziel ist es eine Notification auf mein XBMC/Kodi zu schicken wenn Jemand anruft.
Dies habe ich gefunden:

## Anruf-Monitor
define TelefonAnruf notify FritzBoxMonitor:event:.(connect|ring) { \
my $internalNumber = (ReadingsVal("FritzBoxMonitor","internal_number",99));;\
my $externalNumber = (ReadingsVal("FritzBoxMonitor","external_number",99));;\
my $externalName = (ReadingsVal("FritzBoxMonitor","external_name",99));;\
if ($EVTPART1 eq "ring")\
{ \
fhem 'set WoZi msg "Anruf von '.$externalNumber.'" "'.$externalName .'" 5000 info';;\
}\
}


aber der Syntax scheint mit dem aktuellen FHEM nicht mehr zu funktionieren:

ZitatTelefonAnruf return value: Unknown command :event:.(connect|ring), try help.

Kann man das so lösen oder brauche ich unbedingt eine 99_myUtilsTelefon.pm?
Titel: Antw:Callmonitor: Notification auf XBMC
Beitrag von: Otto123 am 24 April 2015, 10:01:24
Hallo,

bei mir funktioniert FBMon:.*ring set ... nach wie vor im notify.

Gruß Otto
Titel: Antw:Callmonitor: Notification auf XBMC
Beitrag von: bt25 am 24 April 2015, 10:31:23
Also dann so?

## Anruf-Monitor
define TelefonAnruf notify FritzBoxMonitor:.*ring { \
my $internalNumber = (ReadingsVal("FritzBoxMonitor","internal_number",99));;\
my $externalNumber = (ReadingsVal("FritzBoxMonitor","external_number",99));;\
my $externalName = (ReadingsVal("FritzBoxMonitor","external_name",99));;\
if ($EVTPART1 eq "ring")\
{ \
fhem 'set WoZi msg "Anruf von '.$externalNumber.'" "'.$externalName .'" 5000 info';;\
}\
}


Das funktioniert bei mir ins soweit das kein Fehler mehr kommt... aber auch keine Notification und das Log ist auch leer :-/
Titel: Antw:Callmonitor: Notification auf XBMC
Beitrag von: Paul am 24 April 2015, 10:37:53
Nehme mal das if raus
Titel: Antw:Callmonitor: Notification auf XBMC
Beitrag von: bt25 am 24 April 2015, 19:07:07
Okay dass gar nichts im Log stand war mein Fehler...
Jetzt bekomme ich folgendes:

Zitat
2015.04.24 16:31:54 5: Triggering TelefonAnruf
2015.04.24 16:31:54 4: TelefonAnruf exec {
   my $internalNumber = (ReadingsVal("AnrufMonitor","internal_number",99));;
   my $externalNumber = (ReadingsVal("AnrufMonitor","external_number",99));;
   my $externalName = (ReadingsVal("AnrufMonitor","external_name",99));;
   Fhem 'set WoZi msg "Anruf von '.$externalNumber.'" "'.$externalName .'" 5000 info';;
   Fhem 'set XBMC msg "Anruf von '.$externalNumber.'" "'.$externalName .'" 5000 info';;
}
2015.04.24 16:31:54 1: PERL WARNING: String found where operator expected at (eval 1501) line 5, near "Fhem 'set WoZi msg "Anruf von '"
2015.04.24 16:31:54 3: eval: {
   my $internalNumber = (ReadingsVal("AnrufMonitor","internal_number",99));
   my $externalNumber = (ReadingsVal("AnrufMonitor","external_number",99));
   my $externalName = (ReadingsVal("AnrufMonitor","external_name",99));
   Fhem 'set WoZi msg "Anruf von '.$externalNumber.'" "'.$externalName .'" 5000 info';
   Fhem 'set XBMC msg "Anruf von '.$externalNumber.'" "'.$externalName .'" 5000 info';
}
2015.04.24 16:31:54 1: PERL WARNING:    (Do you need to predeclare Fhem?)
2015.04.24 16:31:54 1: PERL WARNING: String found where operator expected at (eval 1501) line 6, near "Fhem 'set XBMC msg "Anruf von '"
2015.04.24 16:31:54 3: eval: {
   my $internalNumber = (ReadingsVal("AnrufMonitor","internal_number",99));
   my $externalNumber = (ReadingsVal("AnrufMonitor","external_number",99));
   my $externalName = (ReadingsVal("AnrufMonitor","external_name",99));
   Fhem 'set WoZi msg "Anruf von '.$externalNumber.'" "'.$externalName .'" 5000 info';
   Fhem 'set XBMC msg "Anruf von '.$externalNumber.'" "'.$externalName .'" 5000 info';
}
2015.04.24 16:31:54 3: TelefonAnruf return value: syntax error at (eval 1501) line 5, near "Fhem 'set WoZi msg "Anruf von '"
Titel: Antw:Callmonitor: Notification auf XBMC
Beitrag von: anfichtn am 25 April 2015, 17:37:24
die funktion heisst "fhem". nicht "Fhem" oder irgendwie anders.

:)

Grüße

anfichtn
Titel: Antw:Callmonitor: Notification auf XBMC
Beitrag von: carzl am 13 März 2018, 13:04:56
Ich grab das Thema mal wieder aus... Die Anrufinfo von Fhem nach Kodi klappt bei mir gut, ein Notify auf den FB_Callmonitor macht bei mir

Anrufmonitor:event:.ring {my $name=(ReadingsVal("Anrufmonitor","external_name",0));my $nummer=(ReadingsVal("Anrufmonitor","external_number",0));fhem ("set WZ_Kodi msg 'Anruf von' '$name ($nummer)' 20000 http://192.168.178.28:8083/fhem/www/pictures/Telefon.jpg");}

Statt des "info"-Symbols lasse ich in Kodi also ein Foto meines Festnetztelefons anzeigen, was physisch auf dem RPi liegt, soweit so gut.

Nun würde ich aber das Foto gern dynamisch machen und durch ein Foto des Anrufers ersetzen. Man könnte also die Kontaktfotos in einen Ordner kippen (bei mir "fhem/www/pictures") und mit den selben Namen benennen, wie sie der Callmonitor als "external_name" rausgibt. Nur - wie kann ich den Aufruf der .jpg dynamisch bauen, dort müsste ja dann entweder direkt "external_name" rein oder eine Variable, die man immer mit dem gerade reinkommenden "external_Name" betankt.

Hat jemand eine Idee oder sowas mal gebaut?

Danke!
Carsten
Titel: Antw:Callmonitor: Notification auf XBMC
Beitrag von: nils_ am 13 März 2018, 14:46:29
du setzt doch den $name schon in deinem notify (ganz am anfang)

jetzt kannst du dir doch den string/pfad zu dem bild zusammenbauen.
versuch mal:
Anrufmonitor:event:.ring {my $name=(ReadingsVal("Anrufmonitor","external_name",0));my $nummer=(ReadingsVal("Anrufmonitor","external_number",0));fhem ("set WZ_Kodi msg 'Anruf von' '$name ($nummer)' 20000 http://192.168.178.28:8083/fhem/www/pictures/". $name .".jpg");}

bild muss dann unter fhem/www/pictures mit entsprechendem $name.jpg liegen

ausnahmefälle für nicht gesetzten external-name und damit evtl. nicht vorhandenes bild musst du noch einbauen.
Titel: Antw:Callmonitor: Notification auf XBMC
Beitrag von: carzl am 16 März 2018, 17:15:46
Hallo nils,

danke für deine Hilfe! Klappt aber leider nicht  :(

Ein Leerzeichen im dynamischen Dateinamen führt dazu, dass statt "Anruf von" der Teil "http://192~" als Titel in der Kodi-Benachrichtigung durch. Bist du sicher, dass ". $name .".jpg die richtige Def ist, um den Dateinamen zu generieren?

Danke.
Titel: Antw:Callmonitor: Notification auf XBMC
Beitrag von: nils_ am 19 März 2018, 08:18:50
nein sicher bin ich mir natürlich nicht :D


bei $name hab ich nicht an leerzeichen gedacht. sorry.
vielleicht legst du die dateien mit der nummer ab.

dann musst du natürlich $nummer.jpg zusammen bauen im notify.

so?
Anrufmonitor:event:.ring {my $name=(ReadingsVal("Anrufmonitor","external_name",0));my $nummer=(ReadingsVal("Anrufmonitor","external_number",0));fhem ("set WZ_Kodi msg 'Anruf von' '$name ($nummer)' 20000 http://192.168.178.28:8083/fhem/www/pictures/". $nummer.".jpg");}


//edit
letztlich ginge der name natürlich auch. da muss dann halt nur was gemacht werden wegen den leerzeichen (ersetzen, escapen, ...).