FB_CALLMONITOR, neues Reading mit Anzahl der laufenden Gespräche

Begonnen von Raymund, 31 März 2020, 21:22:05

Vorheriges Thema - Nächstes Thema

Raymund

Für meine Automatisierungen benötige ich die Anzahl der gerade laufenden Gespräche als Reading. Die einzige Lösung, die mir das ermöglicht hat, ist die Erweiterung des aktuellen Moduls hinter Zeile 554 um:

readingsSingleUpdate ($hash, 'call_cnt', (grep { /^\d+/ } keys %{$hash->{helper}{TEMP}}), 0);

Das funktioniert soweit. Oder weiß jemand eine Lösung, wie man das auch mit "Bordmitteln" lösen kann, ohne den Code anzutasten?

Raymund

Habe meine Erweiterungen (zusätzliche Readings mit der Anzahl der ein- und ausgehenden Gespräche ) erfolgreich in der 99_Utils.pm implementieren können. Thema somit geschlossen.

Markus Bloch

Hallo Raymund,

ich habe soeben eine neue Version von FB_CALLMONITOR eingecheckt mit einem neuen Reading "calls_count". Dieses gibt die Anzahl aller aktiven Gespräche an.

Gibts ab morgen via update.

Viele Grüße

Markus
Developer für Module: YAMAHA_AVR, YAMAHA_BD, FB_CALLMONITOR, FB_CALLLIST, PRESENCE, Pushsafer, LGTV_IP12, version

aktives Mitglied des FHEM e.V. (Technik)

Raymund

Hallo Markus,

vielen Dank für Dein Osterei ;-) Nur noch zum Hintergrund meines Wunsches: mein Ziel war, bei Anrufen meine Audiogeräte auf MUTE zu stellen und beim Auflegen entsprechend auf UNMUTE. Leider verfügen einige meiner Geräte nur über eine Toggle-Funktion dazu. Wenn jetzt also mehrere Anrufe gleichzeitig kommen, klappt das natürlich nicht mehr. Dann gehen die Geräte beim zweiten Anruf wieder auf "laut".

Um das "sauber" hinzubekommen benötige ich jetzt also eigentlich zwei Readings zum Zählen einkommender UND ausgehender Calls. Ich habe dazu meine 99_Utils um diese Funktion erweitert:

sub GetMoreCallReadings {

my ($dev) = @_; my $hash = $defs{$dev};

my $count_incoming = 0; my $count_outgoing = 0; my $dirtype;

foreach my $key (keys %{$hash->{helper}{TEMP}}) {
$dirtype = $hash->{helper}{TEMP}{$key}{'direction'};
$count_incoming ++ if ($dirtype && $dirtype eq 'incoming');
$count_outgoing ++ if ($dirtype && $dirtype eq 'outgoing');
}
readingsBeginUpdate($hash);
readingsBulkUpdate ($hash, 'call_count_incoming', $count_incoming);
readingsBulkUpdate ($hash, 'call_count_outgoing', $count_outgoing);
readingsEndUpdate  ($hash, 1);

return undef;
}


Allerdings muss diese Funktion immer etwas zeitverzögert ausgeführt werden (1 Sek.), bis FB_CALLMONITOR das Hash aktualisiert hat. Funktioniert soweit.

Ideal wären also zwei neue Readings oder einen zusätzlichen Trigger ganz am Ende von FB_CALLMONITOR_Read(), wenn alles erledigt ist.

Soweit mal mein Stand.

Noch einen schönen Ostermontag
Raymund

Raymund

#4
... ich überlege gerade: den Trigger hätte ich ja jetzt mit Deinem neuen Reading "calls_count". Den Rest kann ich mir ja dann zurecht basteln. Ist ja super, wenn ich damit das "sleep" nicht mehr brauche. Also, alles OK für mich so. Vielen Dank.

det.

Zitat von: Markus Bloch am 13 April 2020, 11:10:46

ich habe soeben eine neue Version von FB_CALLMONITOR eingecheckt mit einem neuen Reading "calls_count". Dieses gibt die Anzahl aller aktiven Gespräche an.

Gibts ab morgen via update.

Viele Grüße

Markus
Hallo Markus,
wäre es möglich bestimmte eigene Rufnummern von der Überwachung durch FB_CALLMONITOR auszuklammern?
LG
det.

Markus Bloch

Zitat von: Raymund am 13 April 2020, 11:25:12
Allerdings muss diese Funktion immer etwas zeitverzögert ausgeführt werden (1 Sek.), bis FB_CALLMONITOR das Hash aktualisiert hat. Funktioniert soweit.

Ideal wären also zwei neue Readings oder einen zusätzlichen Trigger ganz am Ende von FB_CALLMONITOR_Read(), wenn alles erledigt ist.


Zitat von: Raymund am 13 April 2020, 11:33:27
... ich überlege gerade: den Trigger hätte ich ja jetzt mit Deinem neuen Reading "calls_count".

Der Trigger hat sich ja jetzt dahingehend verschoben, dass alle Events getriggert werden NACHDEM $hash->{helper}{TEMP} entsprechend gelöscht wurde. Der Aufruf von readingsEndUpdate() erfolgt ja nun ganz zum Schluss. Damit passt auch der Trigger für deine Logik nun direkt, ohne sleep().

Gruß
Markus
Developer für Module: YAMAHA_AVR, YAMAHA_BD, FB_CALLMONITOR, FB_CALLLIST, PRESENCE, Pushsafer, LGTV_IP12, version

aktives Mitglied des FHEM e.V. (Technik)

Raymund

Zitatohne sleep()

Hab's schon ausprobiert. Klappt wunderbar ...  :D Nochmals danke.

Markus Bloch

Zitat von: det. am 13 April 2020, 11:47:21
Hallo Markus,
wäre es möglich bestimmte eigene Rufnummern von der Überwachung durch FB_CALLMONITOR auszuklammern?

Ja klar, das sollte kein Thema sein. Ich mach erstmal Mittag, dann schau ich mir das an.

Gruß
Markus
Developer für Module: YAMAHA_AVR, YAMAHA_BD, FB_CALLMONITOR, FB_CALLLIST, PRESENCE, Pushsafer, LGTV_IP12, version

aktives Mitglied des FHEM e.V. (Technik)

Markus Bloch

Die Mittagspause hat zwar etwas länger gedauert, aber jetzt ist es fertig.

Gibts ab morgen via update.

Viele Grüße

Markus
Developer für Module: YAMAHA_AVR, YAMAHA_BD, FB_CALLMONITOR, FB_CALLLIST, PRESENCE, Pushsafer, LGTV_IP12, version

aktives Mitglied des FHEM e.V. (Technik)

det.

LG
det.