Rückwärtssuche bei Anruf

Mach dein Zuhause schlau! Finde heraus, wer dich anruft, bevor du abhebst.

Rückwärtssuche bei Anruf
Photo by Annie Spratt / Unsplash

Ich habe bereits mein kleines Infodisplay vorgestellt. Es zeigt normalerweise Statusinformationen zum Haus an. Dazu zählen Daten der PV-Anlage, der Solarthermie oder die Wettererwartungen.

Hausautomation: Wie alles anfing
Als Kind habe ich bereits Lampen und LDR-Sensoren an einem C64 betrieben. Damals habe ich Texte oder BASIC-Programme per Morse-Code zum Nachbarn gesendet oder von dort empfangen. Aber ein smartes Haus zu haben... das war aus meiner damaligen Sicht ein viel zu großes Projekt. Wie ich es dennoch mit sehr

Neue Aufgabe für das Infodisplay

Wenn ein Anruf eingeht, soll ioBroker im Internet nach der Herkunft der Nummer suchen. Diese Information wird dann auf den Infodisplays im Haus angezeigt. Gleichzeitig wird sie an meinen Push-Server gesendet, sodass sie auf meinen Telefonen, Tablets und der SmartWatch angezeigt wird. Bevor man das Gespräch entgegennimmt, hat man in der Regel bereits gesehen, wer anruft, und kann entscheiden, wie man auf den Anrufer reagieren möchte.

Informationsbeschaffung

Um den Anrufer zu ermitteln, ziehe ich ein Script heran, das ich bereits zu Zeiten von freetz und Asterisk genutzt habe:

invers_suche() {
    # JSON-Daten von "Das Örtliche" abrufen und handlerData extrahieren
    JSON=$(wget -qO- "http://www.dasoertliche.de/Controller?form_name=search_inv&ph=$1" |
        sed -n -e 's/.*handlerData =\(.*\)..$/\1/p')

    # Überprüfung, ob die JSON-Daten leer oder ungültig sind
    if [[ -z "$JSON" || "$JSON" == "null" ]]; then
        echo "Keine Daten für die Telefonnummer gefunden."
        return 1
    fi

    # Direkt alle relevanten Felder extrahieren
    NAME=$(echo "$JSON" | jq -r '.[0][14] // "Unbekannt"')
    STRASSE=$(echo "$JSON" | jq -r '.[0][9] // "Unbekannt"')
    HAUSNUMMER=$(echo "$JSON" | jq -r '.[0][10] // ""')
    ORT=$(echo "$JSON" | jq -r '.[0][8] // "Unbekannt"')
    PLZ=$(echo "$JSON" | jq -r '.[0][4] // ""')

    # Score von Tellows abrufen und extrahieren
    SCORE=$(wget -qO- "https://www.tellows.de/num/$1" |
        sed -n -e 's/.* : Score \(.*\)".*/\1/p')

    # Standardwert für den Score setzen, falls nicht verfügbar
    SCORE=${SCORE:-"Nicht verfügbar"}

    # Die extrahierten Informationen ausgeben
    echo "Name    : $NAME"
    echo "Strasse : $STRASSE $HAUSNUMMER"
    echo "Ort     : $ORT $PLZ"
    echo "Score   : $SCORE"
}

Übergibt man eine Telefonnummer so erhält man den Besitzer, sofern er einen Telefonbucheintrag hat:

$ invers-suche 0615122222
Name    : Sitte Restaurant
Strasse : Karlstr. 15
Ort     : 64283 Darmstadt
Score   : 5

Darüber hinaus erhält man Informationen darüber, ob die Nummer mit Spam-Anrufen in Verbindung steht. Liegt der Spam-Score bei über 5, deutet dies auf lästige Werbeanrufe oder ähnliches hin. Ein Wert unter 5 bedeutet, dass die Nummer in der Regel für legitime Anrufe verwendet wird. Der Wert 5 selbst weist darauf hin, dass bisher keine Beschwerden über diese Nummer eingegangen sind.

Diese Informationen sind also durchaus nützlich.

Integration in die Hausautomation

Um Informationen über einen Anrufer auf das Smartphone oder die Smartwatch zu senden, empfehle ich, meinen Artikel über die Einrichtung eines eigenen Push-Servers noch einmal zu lesen. Alternativ gibt es auch andere Ansätze, die möglicherweise bereits in ioBroker verwendet werden.

Eigener Push-Notification-Service
Selbstgehostete Push-Benachrichtigungen mit ntfy.

Ich habe mich dafür entschieden, die Aktionen in Blockly nachzubauen. Dabei kam dieser Aufbau heraus:

Ausgelöst wird dieser Block durch eine Veränderung dieses Datenpunktes:

Eine Veränderung ist dabei bereits die Uhrzeit. Somit wird also bei jedem Anruf der Block durchlaufen.

Fazit

Dies ist erneut ein äußerst unkompliziertes Projekt. Selbst wenn ich nicht zu Hause bin, werde ich darüber informiert, wer versucht hat, mich zu erreichen, und kann bei Bedarf zurückrufen.

Falls ich jedoch erkenne, dass es sich lediglich um einen Werbeanruf handelt, kann ich mir den Ärger ersparen und den Anruf einfach ignorieren.