Callmonitor für Anfänger

Begonnen von coolice, 25 Januar 2014, 13:07:36

Vorheriges Thema - Nächstes Thema

Franz Tenbrock

#45
wie hast du das denn mit den Icons gemacht
über die weboberfläche habe ich keine Möglichkeit gefunden
cubi3, Cul 868, ESA2000WZ, EM1000GZ,  FS20, dashboard, 1-Wire, Max Thermos, Max Wandthermo, Max Lan, Fritzbox callmonitor, , nanocul, HM Led16, HM Bewegungsmelder, HM Schalter, RPi, banana, ESP8266, DoorPi

holzwurm83

Zitat von: Franz Tenbrock am 14 Februar 2014, 20:03:39
wie hast du das denn mit den Icons gemacht
über die weboberfläche habe ich keine Möglichkeit gefunden

Das hier wäre eine Möglichkeit http://forum.fhem.de/index.php/topic,14425.msg133120.html#msg133120
- Fhem auf einem MacMini Server
- CUL; HMLAN; CUNO2 für FS20; HM-Wired RS485 LAN Gateway
- HMW_Sen_SC_12_FM; HMW_LC_Sw2_DR; HMW_LC_Bl1_DR; HMW_IO_12_Sw7; HMW_IO_12_Sw14_DR; HMW_IO_12_FM; HBW_1W_T10
- HM-TC-IT-WM-W-EU; HM-CC-RT-DN

Franz Tenbrock

supi

klappt prima,

in der Anzeige erscheinen dann aber erst die neuen Anrufe mit dem Icon, also nicht erschrecken, Testanruf und dann sind sie da.

Klasse !

Hier die geänderte 99_myUtilsTelefon.pm die beötigt wird

#################################################
# $Id: 99_myUtilsTelefon.pm 1932 2012-10-06 20:15:33Z ulimaass $
package main;

use strict;
use warnings;
use POSIX;
use FritzBoxUtils;


# fuer Telefonanrufe
our @A;
our @B;
our @C;
our @D;
our @E;
our %TelefonAktionsListe;


sub
myUtilsTelefon_Initialize($$)
{
  my ($hash) = @_;

 
  #...
 

}
################################################################
##
#
#sub SendSMS ($$)
#{
#  my $adress = $_[0].'@tenbrock.de';
#   my $body = $_[1];
#   Log (3,"SendSMS: $adress - $body");
#   FB_mail($adress,"",$body);
# end sub SendSMS
#}
#####################################
# Anruffunktionen ueber Fritzbox

sub
FBCall ($$)
{

my $callnr = $_[0];
my $duration = $_[1];

Log(3,"FBCall: $callnr mit Dauer $duration");


$callnr = "ATDT".$callnr."#";
my $ret = "ATD: " . `echo $callnr | nc 127.0.0.1 1011`;
InternalTimer(gettimeofday()+$duration, "FBHangOn", "", 0);
return;
}

sub FBHangOn ()
{
Log(3,"FBCallHangOn aufgerufen");

my $ret = " ATH: " . `echo "ATH" | nc 127.0.0.1 1011`;
$ret =~ s,[\r\n]*,,g;
return;
}

######################################

sub TelefonAktion($$)
{
# es wird der Name und die interne angerufene Nummer uebergeen

my ($caller) = split ('\(',$_[0]);
$caller = ltrim(rtrim($caller));

my $intern = $_[1];

# Log(3,"TelefonAktion: $caller $intern");
# Sound ausgeben

my $com = $main::TelefonAktionsListe{$caller};

if ($com)
{
    Log(3,"TelefonAktion: commando: $com");
   sig2_repeat($com,5,4);
} # falls commando vorhanden

} # end sub TelefonAktion

######################################
# EventZeit: Die Zeit wird nicht in der fhem-Reihenfolge, sondern für "human Interface" dargestellt
sub EventZeit()
{
my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time());
return sprintf ("%2d:%02d:%02d %2d.%02d.%4d", $hour,$min,$sec,$mday,($mon+1),($year+1900));
} # end sub EventZeit

######################################


sub TelefonMonitor($)
{
our $extnum;
our $intnum;
our $extname;
our $callID;
our $callDuration;
our $stat;
my $i; my $j;
our $ab;
my $Fritz_Box = $defs{"Fritz_Box"};

my ($event,$arg) = split (':',$_[0]);
$arg = ltrim($arg);

# Log(3,"TM: event: $event arg: $arg");
if ($event eq "event")
{
$stat = $arg;
if ($arg eq "disconnect")
  {
#    fhem("set msg2_TVMarina MUTE 0");
#    fhem("set msg2_TVWohnzimmer MUTE 0");
#    sig2_break(); fiedel: -> Funktion um Anrufername auf FS20SIG2 auszugeben (nicht genutzt)
#    sig2(70); # ringout
  } # if disconnect
    return;
} # end if event

if ($stat eq "ring")
{
if ($event eq"external_number")
  {
    $extnum = $arg;
return;
} # if external number


if ($event eq "external_name")
  {
    $extname = $arg;
   return;
}
if ($event eq "internal_number")
  {
    $intnum = $arg;
   return;
   } # end if intnum


if ($event eq "call_id")
{
   $callID = $arg;
# hier koennen wir eine anrufgesteuerte Aktion starten
TelefonAktion($extname, $intnum);

$A[$callID] = "in";
   $B[$callID] = EventZeit();
   $C[$callID] = $extname;
   $D[$callID] = $extnum;
# fiedel: Folgende Dummys bzw. Funktionen in der CFG einrichten, wenn Samsung TV vorhanden!
#    fhem("set msg2_TVMarina MUTE 1");
#    fhem("set msg2_TVWohnzimmer MUTE 1");
#    fhem("set msg1_TVMarina call Anruf von $extname $extnum");
#    fhem("set msg1_TVWohnzimmer call Anruf von $extname $extnum");
   return;
   } # end if callid
return;
} # end if ring loop

if ($stat eq "connect")
{
if (($event eq"internal_connection") &&
     ($arg =~m/Answering_Machine_.*/))
    {
    $ab = "ab";
    } # end if internal_connection
if ($event eq "call_id")
{
   $callID = $arg;
if ($ab && ($ab eq "AB")) {$A[$callID] = "AB"; $ab; }
   $ab = undef; # zuruecksetzen
   } # end if  callID
   } # end if connect


if ($stat eq "call")
{
if ($event eq"external_number")
  {
    $extnum = $arg;
#sig2(70); # ringout
return;   
} # if external number

if ($event eq "external_name")
  {
    $extname = $arg;
   return;
}
if ($event eq "call_id")
{
   $callID = $arg;
$A[$callID] = "out";
   $B[$callID] = EventZeit();
   $C[$callID] = $extname;
   $D[$callID] = $extnum;

   return;
   } # end if callid
return;
} # end if callloop



if ($stat eq "disconnect")
{


if ($event eq "call_duration")
{
  $callDuration = sprintf("%2d:%02d", ($arg/60),$arg%60);
  return;
} # if call_duration


if ($event eq "call_id")
   {
   $callID = $arg;
# shiften der alten Inhalte
   my $tt;
    readingsBeginUpdate($Fritz_Box);

    for ($i=4;$i>0; $i--)
    {
   foreach $j ('A'..'E')
   {
#   $defs{"Fritz_Box"}{READINGS}{$j.($i-1)}{VAL};

    $tt = ReadingsVal("Fritz_Box",$j.($i-1),"-");
   readingsBulkUpdate($Fritz_Box,$j.$i,$tt);
   } # end j
   } # end i
   $E[$callID] = $callDuration;
  readingsBulkUpdate($Fritz_Box,"A0",$A[$callID]);
  readingsBulkUpdate($Fritz_Box,"B0",$B[$callID]);
  readingsBulkUpdate($Fritz_Box,"C0",$C[$callID]);
  readingsBulkUpdate($Fritz_Box,"D0",$D[$callID]);
  readingsBulkUpdate($Fritz_Box,"E0",$E[$callID]);

  readingsEndUpdate($Fritz_Box, 1);
   $stat = "";

   return;
   } # end if callid


} # end if disconnect

##############################
} #end sub TelefonMonitor


und hier der Abschnitt der in die fhem.cfg muss
#########################################################################
############   Callmonitor mit rollierender Anruferliste:    ############
#########################################################################

###  http://forum.fhem.de/index.php/topic,19238.msg137848.html#msg137848

define FileLog_Fritz_Box FileLog ./log/Fritz_Box-%Y.log Fritz_Box
attr FileLog_Fritz_Box logtype text
attr FileLog_Fritz_Box room Telefon

define Fritz_Box FB_CALLMONITOR 192.168.178.1:1012
attr Fritz_Box local-area-code 02309
attr Fritz_Box reverse-search all
attr Fritz_Box reverse-search-cache 1
attr Fritz_Box reverse-search-cache-file ./log/Fritz_Box-%Y.log Fritz_Box
attr Fritz_Box reverse-search-phonebook-file ./log/Fritz_Box_Telefonbuch.xml
attr Fritz_Box room Telefon
attr Fritz_Box userReadings eing0 eing1 eing2 eing3 eing4 A0 A1 A2 A3 A4 B0 B1 B2 B3 B4 C0 C1 C2 C3 C4 D0 D1 D2 D3 D4 E0 E1 E2 E3 E4
attr Fritz_Box verbose 0


#########################################################################
############            Anrufliste generieren:               ############

#########################################################################

# Telefonevents für Anrufliste abfangen:

define Call_Notify notify Fritz_Box:.* { \
  TelefonMonitor ($EVENT);; \
}
attr Call_Notify room Telefon

# Anzeige der Anrufliste generieren:

define Anrufliste readingsGroup Fritz_Box:A0,B0,C0,D0,E0 Fritz_Box:A1,B1,C1,D1,E1 Fritz_Box:A2,B2,C2,D2,E2 Fritz_Box:A3,B3,C3,D3,E3 Fritz_Box:A4,B4,C4,D4,E4
attr Anrufliste group Telefonliste
attr Anrufliste nameStyle style="font-weight:bold"
attr Anrufliste noheading 0
attr Anrufliste nolinks 1
attr Anrufliste nostate 1
attr Anrufliste notime 1
attr Anrufliste room Telefon
attr Anrufliste style style="font-size:20px"
# Anzeige mit Icons
attr Anrufliste valueIcon {'A0.out' => 'phone_call@lightgreen', 'A0.in' => 'phone_call@red', 'A0.AB' => 'audio_volume_mid@lightgreen', 'A1.out' => 'phone_call@lightgreen', 'A1.in' => 'phone_call@red', 'A1.AB' => 'audio_volume_mid@lightgreen', 'A2.out' => 'phone_call@lightgreen', 'A2.in' => 'phone_call@red', 'A2.AB' => 'audio_volume_mid@lightgreen', 'A3.out' => 'phone_call@lightgreen', 'A3.in' => 'phone_call@red', 'A3.AB' => 'audio_volume_mid@lightgreen', 'A4.out' => 'phone_call@lightgreen', 'A4.in' => 'phone_call@red', 'A4.AB' => 'audio_volume_mid@lightgreen'}


cubi3, Cul 868, ESA2000WZ, EM1000GZ,  FS20, dashboard, 1-Wire, Max Thermos, Max Wandthermo, Max Lan, Fritzbox callmonitor, , nanocul, HM Led16, HM Bewegungsmelder, HM Schalter, RPi, banana, ESP8266, DoorPi

moonsorrox

Zitat von: Franz Tenbrock am 14 Februar 2014, 20:03:39
wie hast du das denn mit den Icons gemacht
über die weboberfläche habe ich keine Möglichkeit gefunden

OK genau dieses Beispiel von Holzwurm83 habe ich als Besipiel genutzt nur die Icons ausgetauscht
Intel-NUC i5: FHEM-Server 6.1 :: Perl v5.18.2

Homematic: HM-USB-CFG2,HM-CFG-LAN Adapter, HM-LC-BL1-FM, HM-LC-Sw1PBU-FM, HM-LC-Sw1-PI-2, HM-WDS10-TH-O, HM-CC-TC, HM-LC-SW2-FM

holzwurm83

Hallo zusammen,

hat einer von euch das mit dem AB getestet? Bei mir wir kein "AB" Reading geschrieben.
- Fhem auf einem MacMini Server
- CUL; HMLAN; CUNO2 für FS20; HM-Wired RS485 LAN Gateway
- HMW_Sen_SC_12_FM; HMW_LC_Sw2_DR; HMW_LC_Bl1_DR; HMW_IO_12_Sw7; HMW_IO_12_Sw14_DR; HMW_IO_12_FM; HBW_1W_T10
- HM-TC-IT-WM-W-EU; HM-CC-RT-DN

Paul

#50
Hallo kann auch nicht!!! nach deiner Frage habe ich etwas verändert und bei mir klappt es.

Änder mal

{
if (($event eq"internal_connection") &&
     ($arg =~m/Answering_Machine_.*/))
    {
    $ab = "ab";
    $A[$callID] = "AB";
    } # end if internal_connection


dann sollte es klappen.

Also einfügen

$A[$callID] = "AB";

Was $ab = "ab" bringt weiß ich auch nicht
Cubietruck, HM-USB, CUL, FS20, FHT, HUE, Keymatic

holzwurm83

irgendwas stimmt da noch nicht? Bekomme diese
Can't modify constant item in scalar assignment at /Users/mediaserver/fhem/FHEM/99_myUtilsTelefon.pm line 180, near "red]"
syntax error at /Users/mediaserver/fhem/FHEM/99_myUtilsTelefon.pm line 180, near "]$A"
syntax error at /Users/mediaserver/fhem/FHEM/99_myUtilsTelefon.pm line 226, near "$callDuration = sprintf("%2d:%02d", ($arg/60"
Missing right curly or square bracket at /Users/mediaserver/fhem/FHEM/99_myUtilsTelefon.pm line 306, at end of line

Fehlermeldung.
- Fhem auf einem MacMini Server
- CUL; HMLAN; CUNO2 für FS20; HM-Wired RS485 LAN Gateway
- HMW_Sen_SC_12_FM; HMW_LC_Sw2_DR; HMW_LC_Bl1_DR; HMW_IO_12_Sw7; HMW_IO_12_Sw14_DR; HMW_IO_12_FM; HBW_1W_T10
- HM-TC-IT-WM-W-EU; HM-CC-RT-DN

holzwurm83

- Fhem auf einem MacMini Server
- CUL; HMLAN; CUNO2 für FS20; HM-Wired RS485 LAN Gateway
- HMW_Sen_SC_12_FM; HMW_LC_Sw2_DR; HMW_LC_Bl1_DR; HMW_IO_12_Sw7; HMW_IO_12_Sw14_DR; HMW_IO_12_FM; HBW_1W_T10
- HM-TC-IT-WM-W-EU; HM-CC-RT-DN

der-Lolo

Hallo zusammen,
Ihr habt klasse Arbeit geleistet hier - ich werde auch demnächst den Callmonitor installieren... Ich habe aber noch fragen - ist es möglich den AB zu steuern? Ich möchte gerne bei Abwesenheit automatisch den AB anschalten. Stummschalten und per licht klingeln wenn der Nachwuchs schläft wäre auch toll...

Invers

Aber automatisch bei Abwesenheit ist doch völlig unnotig?
Wenn der AB so programmiert ist, dass er rangeht, wenn es z.B. 20 Sekunden klingelt, dann ist er doch bereits auf Automatik.
Programmierung macht da nur Sinn, wenn er sofort rangehen soll. Aber wirklich nötig sollte selbst das nicht sein, weil die Leute, welche nicht draufsprechen wollen, dies weder sofort, noch nach 20 Sekunden tun.

Solltest du da einen speziellen Anwendungsfall im Auge haben, dann sag mal.
Pi3B+ mit SSD/ Bullseye | FB7590 AX | 12 x Dect200 | CUL433+868 | SDuino | HM-LAN | 3 x Heizung FHT + FKontakte | KeyMatic + 4 FB | HM Wandtaster 2-fach m. LED | 6 x Türkont. TFK-TI | HM-Bew.-Melder innen | 3 x Smoked. HM-SEC-SD-2

der-Lolo

Es geht um meine Büronummer - wenn ich nicht zuhause bin soll es einfach nicht klingeln und auf den AB springen.
Meine Partnerin wird es mir danken...

Invers

#56
Ahhhhh. Verstehe. Gute Plan. :-)
Es gibt halt immer wieder Sachen, an die man einfach nicht denkt, und auf die man auch nicht kommt.
Aber ich denke, das kann man selber realisiern. Der AB lässt sich ja über Tastenkombinationen des Telefons steuern, also fast, wie eine Rufnummer. Man müsste nun diesen Anruf bei Abwesenheit auslösen.

Mist. Habe gerade gesucht. Es scheint keine Telefoncodes zur Steuerung des AB zu geben.
Trick gelesen:
In der Box eine Rufumleitung auf eine nicht existierende Nummer einrichten.
Diese Rufumleitung kann dann per Code geschalet werden.
Pi3B+ mit SSD/ Bullseye | FB7590 AX | 12 x Dect200 | CUL433+868 | SDuino | HM-LAN | 3 x Heizung FHT + FKontakte | KeyMatic + 4 FB | HM Wandtaster 2-fach m. LED | 6 x Türkont. TFK-TI | HM-Bew.-Melder innen | 3 x Smoked. HM-SEC-SD-2

Franz Tenbrock

Hallo, hier erst einmal wie es im Dashboard zB aussieht.
anhand der Zeiten des Anrufs kann man abschätzen ob wirklich eine Nachricht hinterlegt wurde
8)
(http://telefonliste1.jpg)

@invers
falls es bei dir klappt kanns du eine kurze Aneitung schreiben wie man das realisiert
cubi3, Cul 868, ESA2000WZ, EM1000GZ,  FS20, dashboard, 1-Wire, Max Thermos, Max Wandthermo, Max Lan, Fritzbox callmonitor, , nanocul, HM Led16, HM Bewegungsmelder, HM Schalter, RPi, banana, ESP8266, DoorPi

Invers

Oh, ich habe gar nicht die Absicht, so etwas zu realisieren, da kein Bedarf besteht.
ich würde es trotzdem probieren, aber in Kürze geht mein Flieger. Bin in den Reisevorbereitungen.
Pi3B+ mit SSD/ Bullseye | FB7590 AX | 12 x Dect200 | CUL433+868 | SDuino | HM-LAN | 3 x Heizung FHT + FKontakte | KeyMatic + 4 FB | HM Wandtaster 2-fach m. LED | 6 x Türkont. TFK-TI | HM-Bew.-Melder innen | 3 x Smoked. HM-SEC-SD-2

Absolute Beginner

Ich bitte nochmal um Hilfe, bin fast am Verzweifeln!
Bei mir taucht immer noch nicht eine Anrufliste auf. Die Anrufe werden aber alle geloggt.

2014.02.16 12:30:42 2: FB_CALLMONITOR: Fritz_Box found FritzBox phonebook /var/flash/phonebook
2014.02.16 12:30:42 2: FB_CALLMONITOR: Fritz_Box read 236 contacts from FritzBox phonebook
2014.02.16 12:30:42 3: FB_CALLMONITOR: loading cache file ./log/Fritz_Box-%Y.log Fritz_Box
2014.02.16 12:30:42 3: FB_CALLMONITOR: could not open cache file
2014.02.16 12:30:42 1: Including ./log/fhem.save


Die Datei Fritz_Box-2014.log wird auch angelegt.

Muß man die 99_myUtilsTelefon.pm noch gesondert aufrufen, wie? Habe jetzt wirklich alle Beispiele ausprobiert und FHEM selbst neu aufgesetzt -immer das gleiche Ergebnis.
Raspberry Pi 3 - CUL868 - Jessie - FHEM5.8 - MQTT - Node-RED
HM-TC-IT-WM-W-EU, HM-LC-BI1PBU-FM, HM-Sec-SCo, HM-WDS30-0T2-SM, SOMFY, Echo, ESP, SonOff