Alexa soll sagen wer anruft! Fritzbox binding

  • dann finde ich das für dich. item anlegen (channel anpassen)

    Code
    String    Alexa_Buero_Alarm    "Alexa Büro Alarm"    {channel="amazonechocontrol:echo:account1:echo5:playAlarmSound"}

    das sind die strings, die du diesem item oder zu einer gruppe, in der diese items drin sind senden kannst


    http://192.168.2.X:8080/basicui/CMD?Alexa_Buero_Alarm=ECHO:system_alerts_alarming_03 im browser nutzen um schneller deinen favoriten rauszufinden (openhab ip und itemnamen natürlich anpassen)


    btw...vlt ersetzt du in der großen rule announce durch tts. das dingdong am anfang bei announce brauchst du ja nicht mehr wenn du alarm zusätzlich hast.

  • Ich habe 2 Fehler:

    Code
    org.openhab.core.model.script.engine.ScriptExecutionException: The name 'RINGING' cannot be resolved to an item or type; line 15, column 47, length 7


    Code
    2022-09-16 18:55:20.394 [WARN ] [b.core.model.script.actions.BusEvent] - Cannot convert 'ECHO:system_alerts_atonal_02' to a command type which item 'ueberall_Alarm' accepts: [].

    und weil das mit der Gruppe ueberall_Alarm nicht funktioniert, habe ich es noch einmal mit einem Echo alleine probiert. Dann geht der Alarm.

    Code
    Caused by: org.openhab.core.model.script.engine.ScriptExecutionException: The name 'RINGING' cannot be resolved to an item or type; line 15, column 47, length 7
  • Bitteschön.
    Ich hoffe, dass ich keine items vergessen habe

  • zeile 15 in der rule mal ändern, das löst den ersten fehler aus ...Ringing muss in anführungszeichen ..... (fboxCallState.state == "RINGING") {.....
    dann nochmal auslösen und das [definition='1','0']log[/definition] hier posten.
    aus Group ueberall_Alarm mach mal Group:String ueberall_Alarm in deinen items

  • Ach nein, das ist ja kein Fehler.
    In Kombination mit dem Klingeln ist "Eingehender Anruf von ..... irgendwie unrund. Da muss ich noch etwas finden das mir besser gefällt.
    Wenn die Nummer nicht eingespeichert ist, wird mir ja wohl die Nummer vorgelesen das wird ja unter Umständen sehr lang und kollidiert dann mit dem "Klingeln".
    Dann muss nur noch das Klingeln mit Annehmen / Beenden des Anrufs aufhören.

    Die Gruppe probiere ich dann morgen. Jetzt gäbe es Ärger ;)

  • Die Ansage beendet sich mit dem Auflegen nicht.

    da musst du das item fboxCallState beobachten. das beendet die ansage etc

    In Kombination mit dem Klingeln ist "Eingehender Anruf von ..... irgendwie unrund. Da muss ich noch etwas finden das mir besser gefällt.

    alles eine frage der timer. optional erst announcment, dann klingeln...oder 3sek klingeln, dann ansage.
    unbekannte nummern könntest du mit einem if rausfiltern und da dann bspw "unbekannte nummer" durchsagen lassen.

  • Ich bin -glaube ich- auf einem ganz guten Weg das zum Laufen zu bekommen.
    Musste gestern nachmittag irgendwann aufhören, sonst wäre der Haussegen in Schieflage gekommen ;)

    Was mir jetzt aufgefallen ist: Nach Annehmen / Abbruch des Anrufs kommt häufig noch mal eine Ansage.
    Liegt das daran, dass die while Schleife noch abgearbeitet wird, obwohl ich ein Echo_Living_Room_Announcement.sendCommand("") geschickt habe?

    Allerdings haut das mit der Gruppe immer noch nicht hin. Ist in der Rule vielleicht nicht so schön, aber dann lasse ich die Befehle halt einzeln für jeden Echo drin.

    Der "Schlafzimmer-Echo" will allerdings nicht so richtig mitspielen. Anstatt den Alarmton zu spielen startet er das Radio. Möglicherweise hat das damit zu tun, dass er uns eigentlich als Radiowecker dient. Weiß da jemand Abhilfe?

    Wegen des Filters für nicht eingespeicherte Nummern habe ich mal gesucht, wie ich das lösen könnte.
    Erste Idee war zu vergleichen, ob in caller_name ein Name oder eine Nummer steht.
    Das wird für mich wohl nicht lösbar sein, zu vergleichen ob der Inhalt Zahlen oder Buchstaben sind.

    Jetzt bin ich auf die Idee gekommen einfach (?) caller_name und caller_number zu vergleichen. Denn wenn die Nummer nicht eingespeichert ist, steht in beiden Variablen die Nummer.

    Ob ich das selber hin bekomme?

    ich stelle mir das so vor

    1. var String caller_number = (fboxIncomingCall.state as StringListType).getValue(1)
    2. var String caller_name = tr064Actions.phonebookLookup(caller_number)
    3. logInfo("Anruf", "Anrufer Name: " + caller_name + " Anrufer Nummer: " + caller_number)
    4. if caller_name == caller_number
    5. var String msg2 = nicht gespeicherte nummer
    6. if caller_name !=caller_nummer
    7. var String msg2 = caller_name
    8. var String msg = "Eingehender Anruf von: "+ caller_name

    Aber meine Logik und OH Kenntnisse sind SEHR beschränkt.

    Ich will nur mal zeigen, daß ich mich bemühe ;)

    ruels und items usw liefer ich später von zuhause aus nach.

  • Was mir jetzt aufgefallen ist: Nach Annehmen / Abbruch des Anrufs kommt häufig noch mal eine Ansage.
    Liegt das daran, dass die while Schleife noch abgearbeitet wird, obwohl ich ein Echo_Living_Room_Announcement.sendCommand("") geschickt habe?

    while fragt das item fboxCallState.state ab. du musst also ans telefon rangehen und das [definition='1','0']log[/definition] beobachten wie schnell fboxCallState bemerkt, dass abgenommen wurde.

    Der "Schlafzimmer-Echo" will allerdings nicht so richtig mitspielen. Anstatt den Alarmton zu spielen startet er das Radio. Möglicherweise hat das damit zu tun, dass er uns eigentlich als Radiowecker dient. Weiß da jemand Abhilfe?

    das wird mit dem wecker zu tun haben. du kannst ja beim wecker definieren ob sounds oder radio. das wird wohl den sound überschreiben. finde ich auf die schnelle auch keine infos dazu.

    Wegen des Filters für nicht eingespeicherte Nummern habe ich mal gesucht, wie ich das lösen könnte.
    Erste Idee war zu vergleichen, ob in caller_name ein Name oder eine Nummer steht.
    Das wird für mich wohl nicht lösbar sein, zu vergleichen ob der Inhalt Zahlen oder Buchstaben sind.

    inhaltlich hast du da schonmal nen korrekten weg. ausführung ist aber noch mangelhaft [ad]
    btw...pack deinen code hier im editor auch immer in den korrekten code tag, dann lässt sich das einfacher lesen.
    caller_name und caller_number zu vergleichen (sollten sie die gleichen werte bei nem anruf von einer unbekannten nummer haben) ist auf jeden fall ein guter ansatz.
    beide werte sind in deiner rule schon definiert, du musst deine ansage also nur mit if+else splitten.
    hier mal der erste komplette timer in deiner ursprüngleichen rule abgeändert:

    - zeile 3-7 wird verglichen ob caller number und caller name gleich sind (bitte prüfe im [definition='1','0']log[/definition] vorher ob das auch wirklich bei unbekannten nummern so ist) und falls ja, wird eine "unbekannt ansage" gesendet
    - zeile 8-11 wird nur abgearbeitet, wenn zeile 3-7 nicht eingetreten ist

  • Ich komme zur Zeit nicht an den Code ran.
    Ich habe aber mittels fboxCallState.state den Alarm beim Annehmen des Anrufs beim Beenden des Anrufs durch den Anrufer überwacht.
    Das schaltet den Alarm aus. Das geht auch relativ schnell im [definition='1','0']log[/definition], dass von RINGING auf ACTIVE bzw auf IDLE umgeschaltet wird.
    Nur die Ansage kommt dann noch einmal.
    Was mir aufgefallen ist, das Telefon selber klingelt meistens 2 mal, bevor die Echos sich melden. Auch das: http://192.168.2.X:8080/basicui/CMD?Alexa_Buero_Alarm=ECHO:system_alerts_alarming_03 braucht relativ lange bis die Echos sich melden.
    Das ist aber sicher einfach die Trägheit des Systems, die sich nicht ändern lässt.

    Zitat von horschte

    - zeile 3-7 wird verglichen ob caller number und caller name gleich sind (bitte prüfe im [definition='1','0']log[/definition] vorher ob das auch wirklich bei unbekannten nummern so ist) und falls ja, wird eine "unbekannt ansage" gesendet


    ja, das taucht im [definition='1','0']log[/definition] so auf.
    Bin gespannt was bei einer unterdrückten Nummer da auftaucht. Das könnte man ja ggf auch nutzen wenn da gar keine Nummer steht.
    caller number und caller name gleich => nicht im Telefonbuch eingetragen => Ansage : nicht gespeicherte Nummer
    caller number und caller name ungleich => im Telefonbuch eingetragen=> Ansage : Anrufername

    ggf
    caller number und caller name gleich "" =>unterdrückte Nummer=> Ansage : unterdrückte Nummer.

    Ich hoffe, daß ich heute abend weitertesten kann. Dann liefer ich auch den Code nach.

  • Ich komme zur Zeit nicht an den Code ran.
    Ich habe aber mittels fboxCallState.state den Alarm beim Annehmen des Anrufs beim Beenden des Anrufs durch den Anrufer überwacht.
    Das schaltet den Alarm aus. Das geht auch relativ schnell im [definition='1','0']log[/definition], dass von RINGING auf ACTIVE bzw auf IDLE umgeschaltet wird.
    Nur die Ansage kommt dann noch einmal.

    poste mal ein komplettes [definition='1','0']log[/definition] 1sek vor dem anruf bis 10sek nach dem anruf). wirklich nur einträge entfernen, die damit gar nichts zu tun haben. telefonnummern kannst du natürlich editieren.
    ich möchte da gern mal den genauen zeitlichen ablauf sehen.

    Bin gespannt was bei einer unterdrückten Nummer da auftaucht. Das könnte man ja ggf auch nutzen wenn da gar keine Nummer steht.
    caller number und caller name gleich => nicht im Telefonbuch eingetragen => Ansage : nicht gespeicherte Nummer
    caller number und caller name ungleich => im Telefonbuch eingetragen=> Ansage : Anrufername

    unterdrückte nummer kann man in der rule abfragen und dann einen zusätzlichen if zweig einbauen. das sollte kein problem sein. muss ich nur wissen, was caller_number bei einer unterdrückten nummer anzeigt.

  • So, @horschte Weiter gehts.

    Log nach einem Anruf ohne Eintrag der Nummer ins Fritzbox Telefonbuch. Nicht abgenommen

    Ach übrigens, wie kriege ich das hin, den Nummernspeicher zu persistieren? Im Moment habe ich rrd4j. Das speichert aber nur Zahlen ?

    Bei unterdrückter Nummer steht im Log erwartungsgemäß nichts.

    Code
    2022-09-19 17:44:13.432 [INFO ] [org.openhab.core.model.script.Anruf ] - Anrufer Name:  Anrufer Nummer:
  • also laut [definition='1','0']log[/definition] macht dein system alles richtig nach dem annehmen. ggf ist das wirklich der geschwindigkeit der amazon api geschuldet. du könntest threadsleep mal ein wenig höher setzen zum testen.

    Was mir aufgefallen ist, das Telefon selber klingelt meistens 2 mal, bevor die Echos sich melden. Auch das: http://192.168.2.X:8080/basicui/CMD?Alexa_Buero_Alarm=ECHO:system_alerts_alarming_03 braucht relativ lange bis die Echos sich melden.

    gerade mal gegengetestet. alarm dauert bei mir auch nen kleinen moment bis was passiert. das ist dann wohl von amazon abhängig. kannste nichts machen. die sprachausgabe mit nmummernansage ist verzögert...hast ja auch nen timer da. wenn du lieber sofort eine sprachausgabe möchtest, dann muss der timer weg.

    zum thema unbekannte und unterdrückte nummern:
    wie ich das sehe ist in beiden fällen caller number und caller name gleich. in einem fall befüllt mit der nummer und im anderen fall undef.
    mein o.g. vorschlag if/else zu nutzen sollte also alle 3 möglichkeiten (nummer wird gesendet + name vorhanden, nur nummer vorhanden, keine nummer vorhanden) abdecken.

    das wäre dann deine abgeänderte obere rule:


    ohne verzögerung bei der sprachaussage würde es so aussehen

  • Ach übrigens, wie kriege ich das hin, den Nummernspeicher zu persistieren? Im Moment habe ich rrd4j. Das speichert aber nur Zahlen ?

    numerische werte. einen string wie bspw die anrufliste kann rrd4j in openhab nicht.
    die meisten nutzen influxdb, ich persönlich jdbc (mariadb).
    wenn du mit rrd4j glücklich bist, dann lass das einfach so. die anruferliste verlierst du ja nur beim basteln am system/neustart, sprich wenn du zuhause bist. dann kannste ja eh keinen anruf verpassen.
    wenn du nicht da bist und das system normal läuft speichert openhab die liste ja.

  • Ich habe gestern noch einige Zeit getestet.
    Der dritte Echo läuft jetzt auch. Ich habe ein paar Einstellungen im Echo verändert. Welche es jetzt war kann ich dank wildem Hin und Her gar nicht sagen. Der Hauptverdächtige ist allerdings der "Standard-Alarmton". Der stand auf dem Radio-Sender. Jetzt habe ich das auf einfacher Wecker gestellt. Außerdem habe ich den Eindruck, dass auch diese Einstellungen am Echo recht lange brauchen, bis OH das mitbekommt.

    Code
    createTimer(now.plusSeconds(2), [|
                    while (fboxCallState.state == "RINGING") {
                        if(caller_name == caller_number){
                            Echo_Living_Room_Announcement.sendCommand("Eingehender Anruf von unbekannt!") 
                            Echo_Kitchen_Announcement.sendCommand("Eingehender Anruf von unbekannt!")
                            Thread::sleep(4000)

    Das Thread::sleep in dem Teil der rule bedeutet, dass der Befehl alle 4000 ms wiederholt wird?
    Es bleibt nämlich dabei, dass diese Ansage nicht sofort mit dem Annehmen oder Beenden es Anrufs gestoppt wird. Es kann passieren, dass noch eine ansage kommt, wenn man schon abgenommen hat.
    Das lässt sich wohl nicht ändern?

    Ich habe mir jetzt noch eine Ansagerule gebastelt, die sich meldet wenn der Fernseher angeschaltet wird.
    Ich bin mir aber noch nicht sicher, ob ich das gut finde den Nummernspeicher nach der Ansage sofort zu löschen.
    Aber wahrscheinlich ist es ausreichend die Anrufe einmal angesagt zu bekommen. Im Fritzfon bleiben sie mir ja erhalten.

    Vielen Dank bis hier!

  • Das Thread::sleep in dem Teil der rule bedeutet, dass der Befehl alle 4000 ms wiederholt wird?
    Es bleibt nämlich dabei, dass diese Ansage nicht sofort mit dem Annehmen oder Beenden es Anrufs gestoppt wird. Es kann passieren, dass noch eine ansage kommt, wenn man schon abgenommen hat.
    Das lässt sich wohl nicht ändern?

    genau. solange fboxCallState auf ringing ist kommt ne ansage, 4 sekunden pause und dann nochmal ne ansage. du könntest das testweise höher setzen, evt gibts dann keine überlappungen mehr.

    Außerdem habe ich den Eindruck, dass auch diese Einstellungen am Echo recht lange brauchen, bis OH das mitbekommt.

    welche einstellungen? polling time ist konfigurierbar, also wie oft openhab einstellungen/infos etc von alexa abfragt.

    btw...ich hatte meinen letzten und vorletzten post noch etwas ergänzt

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!