Hallo,
meine Internetverbindung ist dank Magenta Hybrid teilweise ordentlich instabil. Ich kann das manchmal optimieren, in dem ich die Fritzbox neu starte. Das habe ich auch schon teilweise automatisiert (nur wenn nicht gestreamt wird, TV nich läuft usw), aber: telefoniert die Frau gerade während die FB neu startet, dann habe ich ein ordentliches Problem. Kann ich irgendwie prüfen, ob gerade telefoniert wird? Eingehende Anrufe abfangen ist ja möglich.
FB_CALLMONITOR
Da siehst du ob gerade telefoniert wird
Dachte ich auch, nur leider tut sich nix, wenn ich wo anrufe. Eingehende Anrufe: OK, verarbeite ich schon lange.
Aber abgehende? Da kam nix rein. Oder habe ich was übersehen?
Internals:
CFGFN
DEF 192.168.240.254
DeviceName 192.168.240.254:1012
FD 10
NAME CallmonTuxNetDSL01
NOTIFYDEV global
NR 175
NTFY_ORDER 50-CallmonTuxNetDSL01
PARTIAL
STATE opened
TYPE FB_CALLMONITOR
READINGS:
2018-03-11 19:42:17 call_duration 458
2018-03-11 21:02:44 call_id 1
2018-03-11 21:02:44 direction outgoing
2018-03-11 21:02:44 event connect
2018-03-11 21:02:44 external_connection SIP10
2018-03-11 21:02:44 external_name Leon
2018-03-11 21:02:44 external_number 0176xxxxxx
2018-03-11 21:02:44 internal_connection DECT_1
2018-03-11 21:02:44 internal_number 63xxxxx
2018-03-02 08:55:34 missed_call 0176xxxxxx (Leon)
2018-03-11 17:50:30 state opened
helper:
Auch dann.
Du meinst
- notify FritzBox.Anrufe:event:.connect
Abgenommen oder angenommen
- notify FritzBox.Anrufe:event:.ring
Klineln, aber noch nicht abgenommen
- notify FritzBox.Anrufe:event:.disconnect
Ausgehend-oder-eingehend Ende
Du prüfst einfach nur event. Wenn connect dann finger weg. Wenn Du noch wissen willst ob der connect incoming oder outgoing ist dann wegen meiner noch direction
Event ist immer "connect", wenn der Hörer abgenommen ist und ein Telefonat läuft? Super, vielen Dank!
Hier mal eine kleine Funktion. Ein Notify übergibt der Funktion das Event
sub incomingCall($) {
my ($callevt) = @_;
if( $callevt eq "call" || $callevt eq "ring" ) {
if( $callevt eq "ring" ) {
my $incomingCall = ReadingsVal( "CallmonTuxNetDSL01", "external_name", "unbekannt" );
indoorMessage("Es ruft $incomingCall an","HandyIsabel","8") if( Value( "Kinder" ) eq "home" && Value( "Eltern") ne "home" );
indoorMessage("Es ruft $incomingCall an");
}
fhem "sleep 3; set TabletWohnzimmer volume 0";
fhem "set dummyLgTV control pause" if( Value('dummyLgTV') eq 'on' );
}
elsif( $callevt eq "disconnect" ) {
oldVolume('TabletWohnzimmer');
}
}
Danke!!
my $StatusFritz = ReadingsVal("FritzBox.Anrufe","event","-");
if(($StatusFritz ne "call")&&($StatusFritz ne "connect")&&($StatusFritz ne "ring"))
Oder
my $StatusFritz = ReadingsVal("FritzBox.Anrufe","event","-");
if($StatusFritz eq "disconnect")
Ich würde auf disconnect setzen
Und solltest Du $StatusFritz wirklich nur für die Bedingung brauchen, dann nimm das ReadingsVal einfach in die Bedingung.
if(ReadingsVal("FritzBox.Anrufe","event","-") eq "disconnect")