Hallo, ich suche etwas Hilfe ein notify einzurichten.
Ich würde gerne, wenn eine spezielle Telefonnummer ein bestimmte Numme (meiner Fritzbox) anruft ein Event schalten.
Geht dies besser über FB_Calllist oder FB_CallMonitor?
external_number 0XX249X8X1X3
.....
internal_number 97XX62
Kann mir jemand bei der Einrichtung helfen ?
Internals:
DEF 192.168.XXX.xxxx
DeviceName 192.168.XXX.xxxx:1012
FD 9
FUUID 5c4c98b1-f33f-a4d3-f843-edec1cb22fe23981
NAME Anrufe
NOTIFYDEV global
NR 192
NTFY_ORDER 50-Anrufe
PARTIAL
STATE opened
TYPE FB_CALLMONITOR
READINGS:
2019-03-18 19:15:02 call_duration 17
2019-03-18 19:15:02 call_id 1
2019-03-18 19:15:02 direction outgoing
2019-03-18 19:15:02 event disconnect
2019-03-18 19:15:02 external_connection SIP2
2019-03-18 19:15:02 external_name Müller
2019-03-18 19:15:02 external_number 0XX24XXX8123
2019-03-18 19:15:02 internal_connection DECT_1
2019-03-18 19:15:02 internal_number 9XX2XXX
2019-03-18 09:40:36 missed_call 0XX22X8XX
2019-03-12 20:56:32 state opened
helper:
Moin,
am Leichtesten geht es, wenn Du Den Eventmonitor öffnest, die Nummer z.B. vom Handy aus anrufst, die passende Zeile markierst und dann oben rechts auf Create/Modify Device klickst und Dir das Notify erstellen lässt. Dann nur noch die Anrufernummer austauschen und zwischen den geschweiften Klammern den Ausführungsteil eintragen.
LG
Andreas
Danke für die schnelle Antwort. Im Eventmonitor kann ich nur eine ganze Zeile markieren (internal_number und external_number sind in zwei aufeinanderfolgenden Zeilen). Ich hätte gerne das zwei Bedingungen zusammen erfüllt sind. Ich vermute ich kann die Verküpfung danach noch machen, oder?
Hi,
mein notify Beispiel für die DEF:
FBMon:internal_number:.xxxxx {
my $number=(ReadingsVal("FBMon","internal_number",99));
my $Anrufer=(ReadingsVal("FBMon","external_number",99));
if (($Anrufer eq "0xxxxx") or ($Anrufer eq "xxxxxx")){fhem "set Server on"};
}
Also Trigger auf die angerufene Nummer, dann Auswertung Anrufer und mache was...
Gruß Otto
Hallo Otto,
danke für den Code, werde ihn ausprobieren. Muß ich "FBMon" mit dem Namen meines FB-callMonitors ersetzen?
Eventmonitor gibt folgendes aus:
2019-03-18 21:56:36 FB_CALLMONITOR Anrufe event: ring
2019-03-18 21:56:36 FB_CALLMONITOR Anrufe direction: incoming
2019-03-18 21:56:36 FB_CALLMONITOR Anrufe call_id: 0
2019-03-18 21:56:36 FB_CALLMONITOR Anrufe external_name: Müller
2019-03-18 21:56:36 FB_CALLMONITOR Anrufe external_connection: SIP0
2019-03-18 21:56:36 FB_CALLMONITOR Anrufe internal_number: 91XXXX9
2019-03-18 21:56:36 FB_CALLMONITOR Anrufe external_number: 01xxxxxx75
Ja klar ;)
Vielen Dank, funktioniert.
Zu meinem Verständnis: Der Code greift auf das Readings vom meinem FB_CALLMONITOR zu, oder?
In dem Reading gibt es nur einen, den letzen Anruf, d.h. es sollte keine Probleme auftreten wenn die beiden Nummern in verschiedenen Anrufen auftauchen.
Müller ruft Nummer 1 an -> event auslösen
Mayer ruft Nummer 1 an und Müller ruft (danach) Nummer 2 -> Event soll nicht auslöst werden.
Mein obiges Beispiel macht genau folgendes:
Wenn ein bestimmter Anschluss im Haus von einer von zwei vorbestimmten Nummern anruft dann wird ein Gerät gestartet.
Dazu wird auf diesen bestimmten Anschluss getriggert -> FBMon:internal_number:.xxxxx
Dann wird die anrufende Nummer ermittelt -> my $Anrufer=(ReadingsVal("FBMon","external_number",99));
Es wird geschaut ob die anrufenden Nummer stimmt und wenn ja das Gerät gestartet, wenn nein passiert nichts ->
if (($Anrufer eq "0xxxxx") or ($Anrufer eq "xxxxxx")){fhem "set Server on"};
Diese Zeile ist nur zur Verwirrung -> my $number=(ReadingsVal("FBMon","internal_number",99));
Nein :) sie ist nur noch us diversen Versuchen/Ideen drin weil man es andersherum natürlich auch machen könnte: auf den Anrufer triggern, die interne Nummer abfragen (kann man auch weglassen) und dann das Gerät starten.
Die Abfrage der internen Nummer ist für mich noch eine zus. Sicherheit. Es ist eine von vorhandenen Nummern die nicht verwendet werden und die keiner kennt.
Man kann das sicher auch noch effektiver machen, das habe ich aber so seit langer Zeit.
ZitatMüller ruft Nummer 1 an -> event auslösen
Mayer ruft Nummer 1 an und Müller ruft (danach) Nummer 2 -> Event soll nicht auslöst werden.
wenn Du nur eine bestimmte Anrufernummer detektieren willst und sonst nichts, geht das sicher viel einfacher:
define MuellerRuftAn FB_CALLMONITOR:external_number:.xxMuellerSeinexxx set Server on
Gruß Otto
Hallo Otto,
danke für die Erklärung.
Ich werde deine komplizierte Version nehmen.
Grüße
Jochen